This is a first test of using Google Cartographer with ArduPilot Rover-3.5-dev with the help of ROS/mavros. There’s a GPS on the vehicle but it is disabled for this test as is the object avoidance.
The hardware used is:
- AION Robotics R1 rover
- Cube autopilot running Rover-3.5-dev which has coincidentally just started beta testing
- RPLidar A2 360deg lidar
- Nvidia TX2 running ROS/mavros and Cartographer
For the most part, Cartographer was able to estimate the vehicle’s position within about 1m but there were times where it would suddenly deviate by 3 or 4 meters (look at the video around 1:30 and compare what the rover on the map does compared to the actual rover).
This is a work-in-progress and we’ve got some ideas to improve performance including:
- upgrade the lidar to an RPLidarA3 (with 25m range)
- check the update rate of IMU data flowing from ArduPilot to ROS/Cartographer. We should try and achieve at least 50hz I think
- check the overall lag in the system by moving the rover back and forth and then compare the IMU data (from ArduPilot’s IMUs) to the position estimates received by ArduPilot from Cartographer (these appear in the VISP messages in the dataflash logs)
- improve the clock syncronisation between the Cube and TX2 to better account for the lag in the system
As always this is all fully open source so you can find setup instructions are here on the developer wiki. If you’re interested in getting involved with this or other non-GPS navigation projects, you’ll find a helpful band of skilled developers the ArduPilot/VisionProjects Gitter channel.
Special thanks to Mario Rodriguez from EAMS Lab who has been doing the bulk of the work on this project.