While building a rugged robot, named Big Rob, for outdoor use, Ingmar Stapel wanted to create a system for precise navigation. Disappointed with the accuracy of the standard USB GPS modules used on his previous robots, he decided to build a navigation system based on differential GPS.
Differential GPS uses the RTK (Real Time Kinematic) method for carrier-based ranging between a base station and the robot. Data sent from the base station enables the robot to correct the inaccuracies in its own GPS signal, mainly caused by atmospheric effects, in order to calculate its precise position. This technique produces an accuracy of 20 cm, compared with 4-5 m for standard GPS.
The full article can be found in The MagPi 59 and was written by Phil King.
Both units are equipped with a RasPiGNSS Aldebaran module: “It is the only one I know which is especially built for the Raspberry Pi,” explains Ingmar. They are also fitted with a Tallysman GNSS antenna that can receive not just GPS signals, but also those from the Russian GLONASS system, as well as SBAS systems such as Europe’s EGNOS.
XBee or WiFi?
To minimise GPS inaccuracies, Ingmar is using the RTKLIB Python library to perform the RTK calculations. “The most complex part of this project was to configure the RTKLIB library and to set up the XBee communication between the base station and the robot.” The main advantage to using XBee Pro rather than standard WiFi is its superior range of up to 1.6 km. However, Ingmar has also tested the system using WiFi, which offers a higher bandwidth. Both versions of the RTKRCV program are described on his blog.
Robotic navigation
So, how does it all work in practice? Ingmar admits that it can take a while to obtain a GPS fix, depending on the surroundings and weather. “If I use the setup in open country with no clouds, the calculation of a fix position takes between 10 and 15 minutes. If I use it in the yard with high buildings around the base station and robot, it could take up to an hour to calculate only a floating GPS position.”
Once it obtains a fix, the robot moves continuously from one waypoint to the next, checking its orientation with the Sense HAT magnetometer: “If a deviation of five degrees is detected to the next waypoint, the Python program corrects the speed of the DC motors to face the waypoint. Only if the GPS signal gets lost will the robot stop and wait for the next calculated fix position.” Waypoints can be entered in a Terminal window or imported via a Google Earth KML file.
Ingmar has a few ideas for putting his differential GPS system to practical use. “I will mount the metal detector (as used on his Discoverer robot, featured in The MagPi #48) on the front of Big Rob, and together with the differential GPS setup, the robot will be able to search very precisely for metal in the ground. The next idea is to mount, for example, a lawnmower on the front or to build a fertilizer spreader. The differential GPS setup is a key feature for many ideas and setups.”
Win! One of 10 Raspberry Pi 3 & Official Case signed by Eben Upton. Click here to enter