Robot Localization

Saturday Feb 16th 2019

We procured a couple of antennas and EMLID REACHs from inventory. These will allow us to start setting up our RTK GPS system and conduct preliminary tests outdoors. One of the devices will act as a base station while the other will simulate our mobile robots.

System Diagram

Source:https://docs.emlid.com/reach/ardupilot-integration/

SVD Implementation

In the outdoor environment, the RTK GPS system itself has a localization accuracy within 20cm. We tested it by putting the GPS receiver in the same position and recorded its reported latitude and longitude multiple times. However, only using the RTK GPS signal fails to achieve the desired accuracy since the GPS coordinates alone cannot provide a reliable heading for UGV navigation.

By fusing odometry data with the RTK GPS data using an EKF, we were able to improve on our localization accuracy, but we were still not meeting our performance benchmark. Therefore, we ended up using a combination of sensor data from odometry, RTK GPS and an IMU. One other issue we encountered was that even though the IMU can provide accurate heading information, it has significant noise in the x and y direction, which makes it hard to calibrate. So since we already have accurate linear localization provided by our RTK GPS system, we only used the yaw information provided by IMU.

In the EKF, we fused odometry and IMU information first and then used the RTK GPS data as an observation to refine the actual location. In the SVD, the localization accuracy is around 10 cm, which is within our requirements.   

FVD Implementation

In addition to our SVD implementation of setting up an RTK receiver on the UGV, we setup an RTK receiver on the UAV as well. To test the localization agreement between the UAV and UGV, we sent the GPS coordinates of the UAV to the UGV’s motion controller and measuring what is the offset between the UAV’s position and the position to which the UGV navigates.

The modules used a “fix and hold” correction from the base station, which is more stable than a continuously updating correction. However, if the UAV and UGV were activated at different times they would receive different corrections from the base station, creating a permanent offset between the agents. To avoid this, we simultaneously re-initialize the RTK GPS modules at the beginning of each field test to ensure both have the same correction.