Hi AP community! I am glad to share my final progress for Google Summer of Code 2022 for the project I am working on.
I’d love to thank my mentors @rmackay9 and @jmachuca for all their support and help without which this project would be incomplete.
This project required testing the instructions for non-GPS navigation and path planning on a multicopter and a rover, updating the base code for the same and integrating the offboard object avoidance with ArduPilot Auto mode. This project also involved development and modiﬁcation of scripts for Ardupilot and cartographer SLAM along with setting up a companion computer to make everything work as a whole for the multicopter and rover.
Integration of offboard object avoidance with ArduPilot Auto mode required modifying and updating mavros package for mavlink protocol.
Let’s discuss the work progress over the course of the GSoC program for this project.
1. Updated parameters for Cartographer SLAM and AP’s configuration
The very first task was to update the mapping and localization parameters for cartographer. Added ceres_scan_matcher and real_time_correlative_scan_matcher tuning parameters for a better control over mapping. These updated parameters helped in achieving a good mapping in simulation as well as real LiDAR. Over the top, we also shifted from EKF2 to EKF3 configuration.
2. Updated instructions and compatibility to implement non-GPS navigation on rover and multicopter
After updating parameters for cartographer, a simulated environment on ROS-Gazebo was set up to test mapping and localization using cartographer and hence use it for navigation and path planning purpose. There was modification in mavros launch file and configuration file to support non-GPS navigation and path planning on both, rover as well as multicopter.
3. Improved ROS navigation parameters
ap_navigation package required some additions in trajectory planner. Addition were just simple escape velocity, bias and related parameters which made precise navigation possible.
4. Compiled everything
To make it simple for users to setup non-GPS navigation and path planning, a separate package, ardupilot_ros, is created containing all the required modifications and dependencies to setup everything in just a few steps. @jmachuca created install_ROS_ubuntu.sh script to setup whole environment for ROS-ardupilot and non-GPS based flights on companion computer in a go.
5. MAVROS: Accept position-target-global-int messages
After the completion of first part of the project, to bind everything, we tried integrating the offboard object avoidance with ArduPilot Auto mode. This involves the feature to allow mavros to accept POSITION_TARGET_GLOBAL_INT message from FCU or GCS.
6. Pull request and contributions
Over the course of the GSoC program, multiple pull requests and repositories were created and almost all got successfully merged.