forked from Archive/PX4-Autopilot
Obstacle Avoidance testing in CI (#10780)
This commit is contained in:
parent
1083af21e8
commit
09b795161e
|
@ -79,6 +79,13 @@ pipeline {
|
||||||
mission: "VTOL_mission_1",
|
mission: "VTOL_mission_1",
|
||||||
vehicle: "tiltrotor"
|
vehicle: "tiltrotor"
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
name: "MC_avoidance",
|
||||||
|
test: "mavros_posix_test_avoidance.test",
|
||||||
|
mission: "avoidance",
|
||||||
|
vehicle: "iris_obs_avoid",
|
||||||
|
run_script: "rostest_avoidance_run.sh"
|
||||||
|
],
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -111,6 +118,7 @@ def createTestNode(Map test_def) {
|
||||||
cleanWs()
|
cleanWs()
|
||||||
docker.image("px4io/px4-dev-ros-kinetic:2019-03-08").inside('-e HOME=${WORKSPACE}') {
|
docker.image("px4io/px4-dev-ros-kinetic:2019-03-08").inside('-e HOME=${WORKSPACE}') {
|
||||||
stage(test_def.name) {
|
stage(test_def.name) {
|
||||||
|
def run_script = test_def.get('run_script', 'rostest_px4_run.sh')
|
||||||
def test_ok = true
|
def test_ok = true
|
||||||
sh('export')
|
sh('export')
|
||||||
|
|
||||||
|
@ -119,7 +127,7 @@ def createTestNode(Map test_def) {
|
||||||
|
|
||||||
// run test
|
// run test
|
||||||
try {
|
try {
|
||||||
sh('px4-px4_sitl_default*/px4/test/rostest_px4_run.sh ' + test_def.test + ' mission:=' + test_def.mission + ' vehicle:=' + test_def.vehicle)
|
sh('px4-px4_sitl_default*/px4/test/' + run_script + ' ' + test_def.test + ' mission:=' + test_def.mission + ' vehicle:=' + test_def.vehicle)
|
||||||
|
|
||||||
} catch (exc) {
|
} catch (exc) {
|
||||||
// save all test artifacts for debugging
|
// save all test artifacts for debugging
|
||||||
|
|
6
Makefile
6
Makefile
|
@ -337,7 +337,7 @@ format:
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
.PHONY: tests tests_coverage tests_mission tests_mission_coverage tests_offboard
|
.PHONY: tests tests_coverage tests_mission tests_mission_coverage tests_offboard tests_avoidance
|
||||||
.PHONY: rostest python_coverage test_mixer_multirotor
|
.PHONY: rostest python_coverage test_mixer_multirotor
|
||||||
|
|
||||||
test_mixer_multirotor:
|
test_mixer_multirotor:
|
||||||
|
@ -374,6 +374,9 @@ tests_offboard: rostest
|
||||||
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test
|
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test
|
||||||
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
|
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
|
||||||
|
|
||||||
|
tests_avoidance:
|
||||||
|
@"$(SRC_DIR)"/test/rostest_avoidance_run.sh mavros_posix_test_avoidance.test
|
||||||
|
|
||||||
python_coverage:
|
python_coverage:
|
||||||
@mkdir -p "$(SRC_DIR)"/build/python_coverage
|
@mkdir -p "$(SRC_DIR)"/build/python_coverage
|
||||||
@cd "$(SRC_DIR)"/build/python_coverage && cmake "$(SRC_DIR)" $(CMAKE_ARGS) -G"$(PX4_CMAKE_GENERATOR)" -DCONFIG=px4_sitl_default -DPYTHON_COVERAGE=ON
|
@cd "$(SRC_DIR)"/build/python_coverage && cmake "$(SRC_DIR)" $(CMAKE_ARGS) -G"$(PX4_CMAKE_GENERATOR)" -DCONFIG=px4_sitl_default -DPYTHON_COVERAGE=ON
|
||||||
|
@ -384,6 +387,7 @@ python_coverage:
|
||||||
@coverage combine `find . -name .coverage\*`
|
@coverage combine `find . -name .coverage\*`
|
||||||
@coverage report -m
|
@coverage report -m
|
||||||
|
|
||||||
|
|
||||||
# static analyzers (scan-build, clang-tidy, cppcheck)
|
# static analyzers (scan-build, clang-tidy, cppcheck)
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
.PHONY: scan-build px4_sitl_default-clang clang-tidy clang-tidy-fix clang-tidy-quiet
|
.PHONY: scan-build px4_sitl_default-clang clang-tidy clang-tidy-fix clang-tidy-quiet
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# @name 3DR Iris Quadrotor SITL (Obstacle Avoidance)
|
||||||
|
#
|
||||||
|
# @type Quadrotor Wide
|
||||||
|
#
|
||||||
|
|
||||||
|
sh /etc/init.d-posix/10016_iris
|
||||||
|
|
||||||
|
if [ $AUTOCNF = yes ]
|
||||||
|
then
|
||||||
|
param set COM_OBS_AVOID 1
|
||||||
|
fi
|
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
"fileType": "Plan",
|
||||||
|
"geoFence": {
|
||||||
|
"circles": [
|
||||||
|
],
|
||||||
|
"polygons": [
|
||||||
|
],
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"groundStation": "QGroundControl",
|
||||||
|
"mission": {
|
||||||
|
"cruiseSpeed": 15,
|
||||||
|
"firmwareType": 12,
|
||||||
|
"hoverSpeed": 5,
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"AMSLAltAboveTerrain": null,
|
||||||
|
"Altitude": 4,
|
||||||
|
"AltitudeMode": 0,
|
||||||
|
"autoContinue": true,
|
||||||
|
"command": 22,
|
||||||
|
"doJumpId": 1,
|
||||||
|
"frame": 3,
|
||||||
|
"params": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
47.3977432,
|
||||||
|
8.5456085,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"type": "SimpleItem"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AMSLAltAboveTerrain": null,
|
||||||
|
"Altitude": 4,
|
||||||
|
"AltitudeMode": 0,
|
||||||
|
"autoContinue": true,
|
||||||
|
"command": 16,
|
||||||
|
"doJumpId": 2,
|
||||||
|
"frame": 3,
|
||||||
|
"params": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
47.3977432,
|
||||||
|
8.5458765,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"type": "SimpleItem"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AMSLAltAboveTerrain": null,
|
||||||
|
"Altitude": -1,
|
||||||
|
"AltitudeMode": 0,
|
||||||
|
"autoContinue": true,
|
||||||
|
"command": 21,
|
||||||
|
"doJumpId": 3,
|
||||||
|
"frame": 3,
|
||||||
|
"params": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
47.3977432,
|
||||||
|
8.5458812,
|
||||||
|
-1
|
||||||
|
],
|
||||||
|
"type": "SimpleItem"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"plannedHomePosition": [
|
||||||
|
47.3977419,
|
||||||
|
8.5458854,
|
||||||
|
487.923
|
||||||
|
],
|
||||||
|
"vehicleType": 2,
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"rallyPoints": {
|
||||||
|
"points": [
|
||||||
|
],
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"version": 1
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<launch>
|
||||||
|
<!-- Posix SITL MAVROS integration tests -->
|
||||||
|
<!-- Test a mission -->
|
||||||
|
<arg name="est" default="ekf2"/>
|
||||||
|
<arg name="gui" default="false"/>
|
||||||
|
<arg name="interactive" default="false"/>
|
||||||
|
<arg name="mission" default="avoidance"/>
|
||||||
|
<arg name="sdf" default="$(find local_planner)/../sim/models/iris_depth_camera_3/iris_depth_camera.sdf"/>
|
||||||
|
<arg name="vehicle" default="iris_obs_avoid"/>
|
||||||
|
<arg name="world" default="$(find local_planner)/../sim/worlds/boxes1.world"/>
|
||||||
|
<!-- PX4 SITL and Gazebo -->
|
||||||
|
<include file="$(find px4)/launch/posix_sitl.launch">
|
||||||
|
<arg name="est" value="$(arg est)"/>
|
||||||
|
<arg name="gui" value="$(arg gui)"/>
|
||||||
|
<arg name="interactive" value="$(arg interactive)"/>
|
||||||
|
<arg name="respawn_gazebo" value="true"/>
|
||||||
|
<arg name="sdf" value="$(arg sdf)"/>
|
||||||
|
<arg name="vehicle" value="$(arg vehicle)"/>
|
||||||
|
<arg name="verbose" value="true"/>
|
||||||
|
<arg name="world" value="$(arg world)"/>
|
||||||
|
</include>
|
||||||
|
<!-- MAVROS -->
|
||||||
|
<include file="$(find mavros)/launch/node.launch">
|
||||||
|
<arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml"/>
|
||||||
|
<arg name="config_yaml" value="$(find local_planner)/resource/px4_config.yaml"/>
|
||||||
|
<arg name="gcs_url" value=""/>
|
||||||
|
<arg name="fcu_url" value="udp://:14540@localhost:14557"/>
|
||||||
|
<arg name="tgt_system" value="1"/>
|
||||||
|
<arg name="tgt_component" value="1"/>
|
||||||
|
<arg name="respawn_mavros" value="true"/>
|
||||||
|
</include>
|
||||||
|
<!-- Transformation Publishers -->
|
||||||
|
<node pkg="tf" type="static_transform_publisher" name="tf_front_camera"
|
||||||
|
args="0 0 0 -1.57 0 -1.57 fcu front_camera_link 10"/>
|
||||||
|
<node pkg="tf" type="static_transform_publisher" name="tf_right_camera"
|
||||||
|
args="0 0 0 -3.14 0 -1.57 fcu right_camera_link 10"/>
|
||||||
|
<node pkg="tf" type="static_transform_publisher" name="tf_left_camera"
|
||||||
|
args="0 0 0 0 0 -1.57 fcu left_camera_link 10"/>
|
||||||
|
<!-- Suppress console outputs -->
|
||||||
|
<env name="ROSCONSOLE_CONFIG_FILE" value="$(find local_planner)/resource/custom_rosconsole.conf"/>
|
||||||
|
<!-- Launch Local Planner -->
|
||||||
|
<arg name="pointcloud_topics" default="[/camera_front/depth/points,/camera_left/depth/points,/camera_right/depth/points]"/>
|
||||||
|
<node name="local_planner_node" pkg="local_planner" type="local_planner_node" output="screen">
|
||||||
|
<param name="goal_x_param" value="17" />
|
||||||
|
<param name="goal_y_param" value="15"/>
|
||||||
|
<param name="goal_z_param" value="3" />
|
||||||
|
<rosparam param="pointcloud_topics" subst_value="True">$(arg pointcloud_topics)</rosparam>
|
||||||
|
</node>
|
||||||
|
<!-- ROStest -->
|
||||||
|
<test test-name="$(arg mission)" pkg="px4" type="mission_test.py" time-limit="300.0" args="$(arg mission).plan"/>
|
||||||
|
</launch>
|
|
@ -0,0 +1,20 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||||
|
PX4_SRC_DIR=${DIR}/..
|
||||||
|
|
||||||
|
source /opt/ros/${ROS_DISTRO:-kinetic}/setup.bash
|
||||||
|
mkdir -p ${PX4_SRC_DIR}/catkin_ws/src
|
||||||
|
cd ${PX4_SRC_DIR}/catkin_ws/
|
||||||
|
git clone -b '0.1.0' --single-branch --depth 1 https://github.com/PX4/avoidance.git src/avoidance
|
||||||
|
|
||||||
|
catkin init
|
||||||
|
catkin build local_planner --cmake-args -DCMAKE_BUILD_TYPE=Release
|
||||||
|
|
||||||
|
source ${PX4_SRC_DIR}/catkin_ws/devel/setup.bash
|
||||||
|
source /usr/share/gazebo/setup.sh
|
||||||
|
|
||||||
|
export CATKIN_SETUP_UTIL_ARGS=--extend
|
||||||
|
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:${PX4_SRC_DIR}/catkin_ws/src/avoidance/sim/models
|
||||||
|
|
||||||
|
source $DIR/rostest_px4_run.sh "$@"
|
Loading…
Reference in New Issue