Servers by jDrones

Non-GPS Navigation using Rover with ROS/Google Cartographer


(rmackay9) #1

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:

The results are OK but not great (yet). Cartographer was certainly better than the earlier test with HectorSLAM (video, wiki) which is expected because Cartographer is 3D while HectorSLAM is only 2D.

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.

(Khancyr) #2

very nice! I hope we can renforce our tutorial with more example from ROS!

(Benjamin Neilson) #3

Hi @rmackay9,
Cheers for a great guide. I have Cartographer running with RPLidarA2. MavRos is working pretty well.
One problem I am having is with time sync. I followed the guide and made the suggested changes but am still receiving the same old errors. Wrong FCU time and RTT too high. The FCU doesn’t seem to have a time set.

Any thoughts? Thanks heaps, Ben