-
- Recommended: Install Google Cartographer with rosdep
Clone this repository into your ros2 workspace alongside ardupilot_gz:
cd ~/ros2_ws/src
git clone git@github.com:ardupilot/ardupilot_ros.git
Install dependencies using rosdep:
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r --skip-keys gazebo-ros-pkgs
Build it with colcon build:
cd ~/ros2_ws
source /opt/ros/humble/setup.bash
colcon build --packages-up-to ardupilot_ros ardupilot_gz_bringup
This simulation has an Iris copter equipped with a 360 degrees 2D LiDAR in a maze world. To launch rviz and gazebo, run:
cd ~/ros2_ws
source install/setup.bash
ros2 launch ardupilot_gz_bringup iris_maze.launch.py
In another terminal, with the world and copter in place, launch cartographer to generate SLAM:
cd ~/ros2_ws
source install/setup.bash
ros2 launch ardupilot_ros cartographer.launch.py
If you'd like to get the information from Cartographer to go into Ardupilot's extended kalman filter, you will need to change some parameters. You can do that through any GCS, including mavproxy:
- AHRS_EKF_TYPE = 3 to use EKF3
- EK2_ENABLE = 0 to disable EKF2
- EK3_ENABLE = 1 to enable EKF3
- EK3_SRC1_POSXY = 6 to set position horizontal source to ExternalNAV
- EK3_SRC1_POSZ = 1 to set position vertical source to Baro
- EK3_SRC1_VELXY = 6 to set velocity horizontal source to ExternalNAV
- EK3_SRC1_VELZ = 6 to set vertical velocity source to ExternalNAV
- EK3_SRC1_YAW = 6 to set yaw source to ExternalNAV
- VISO_TYPE = 1 to enable visual odometry
- ARMING_CHECK = 388598 (optional, to disable GPS checks)
The parameters above are recommended for SITL. If you plan on using this on a real copter, it is a good idea to setup a second source of EKF. This way the robot doesn't crash if the external odometry you are providing stops publishing or gets lost.
Please refer to this link for more information on Common EKF Sources as well as this guide on GPS / Non-GPS Transitions.
The joystick controller allows you to control ArduPilot through a ROS joy topic.
cd ~/ros2_ws
source install/setup.bash
ros2 run ardupilot_ros joy_controller
Then run the controller using,
ros2 run ardupilot_ros joy_controller
Now, using the keyboard keys you can control the drone.
Using the same simulation as before, the nav2 node can be launched to control the copter once it is in the air.
Launch the simulation:
cd ~/ros2_ws
source install/setup.sh
ros2 launch ardupilot_gz_bringup iris_maze.launch.py rviz:=false
Launch cartographer:
cd ~/ros2_ws
source install/setup.sh
ros2 launch ardupilot_ros cartographer.launch.py rviz:=false
Launch nav2:
cd ~/ros2_ws
source install/setup.sh
ros2 launch ardupilot_ros navigation.launch.py
Takeoff the Copter using mavproxy
to an altitude of 2.5m:
mavproxy.py --console --map --aircraft test --master=:14550
mode guided
arm throttle
takeoff 2.5
You may now navigate while mapping using the Nav2 Goal
tool in RVIZ!
- Ensure the pre-commit hooks pass locally before creating your pull request by installing the hooks before committing.
pre-commit install git commit
- See the ArduPilot Contributing Guide