# ardupilot_ros **Repository Path**: ardupilot/ardupilot_ros ## Basic Information - **Project Name**: ardupilot_ros - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: humble - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-26 - **Last Updated**: 2024-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ardupilot_ros: ROS 2 use cases with Ardupilot [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) ## Requirements ### System Requirements * [ROS Humble](https://docs.ros.org/en/humble/Installation.html) * [Gazebo Garden](https://gazebosim.org/docs/garden/install) * [Cartographer ROS](https://google-cartographer-ros.readthedocs.io/en/latest/) * Recommended: Install Google Cartographer with rosdep ### Workspace Requirements * [ardupilot_gz](https://github.com/ArduPilot/ardupilot_gz) * [cartographer_ros]() ## Installation Clone this repository into your ros2 workspace alongside ardupilot_gz: ```bash cd ~/ros2_ws/src git clone git@github.com:ardupilot/ardupilot_ros.git ``` Install dependencies using rosdep: ```bash cd ~/ros2_ws rosdep install --from-paths src --ignore-src -r --skip-keys gazebo-ros-pkgs ``` ## Build Build it with colcon build: ```bash cd ~/ros2_ws source /opt/ros/humble/setup.bash colcon build --packages-up-to ardupilot_ros ardupilot_gz_bringup ``` ## Usage ### 1. Cartographer running with LiDAR on copter This simulation has an Iris copter equipped with a 360 degrees 2D LiDAR in a maze world. To launch rviz and gazebo, run: ```bash 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: ```bash 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](https://ardupilot.org/copter/docs/common-ekf-sources.html>) as well as this guide on [GPS / Non-GPS Transitions](https://ardupilot.org/copter/docs/common-non-gps-to-gps.html). ### 2. Joystick Controller The joystick controller allows you to control ArduPilot through a ROS joy topic. ```bash 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. ### 2. Obstacle avoidance using Cartographer and Nav2 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: ```bash cd ~/ros2_ws source install/setup.sh ros2 launch ardupilot_gz_bringup iris_maze.launch.py rviz:=false ``` Launch cartographer: ```bash cd ~/ros2_ws source install/setup.sh ros2 launch ardupilot_ros cartographer.launch.py rviz:=false ``` Launch nav2: ```bash 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: ```bash 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! ## Contribution Guideline * Ensure the [pre-commit](https://github.com/pre-commit/pre-commit) hooks pass locally before creating your pull request by installing the hooks before committing. ```bash pre-commit install git commit ``` * See the [ArduPilot Contributing Guide](https://github.com/ArduPilot/ardupilot/blob/master/.github/CONTRIBUTING.md)