GPS correction data over wifi.

A project log for Basic Farm Robot 2021

Minimal 'no frills' development platform for farm robots

Tegwyn☠TwmffatTegwyn☠Twmffat 08/31/2021 at 21:030 Comments

The ardusimple board we have been using a very accurate GPS system, essential for accurate localisation (positioning) of the robot.

The correction data is generated by the GPS base station and then this data needs to be fed to the GPS chip on the robot. The Real time correction messages (RTCM) are actually a propitiatory data format, but we don't need to decode it, we just need to be able to forward it over the network and supply it to the ardusimple board at the robot end. This data is time and latency sensitive, so the quicker you get it from your GPS base station to the robot the better....and the better GPS accuracy you will get.

There are many ways to do this, some are easier than others, some are more expensive than others.

Correction data can be sourced from a 4G mobile connection, however we wanted the robot to be able to function without 4G mobile connectivity.  Ardusimple gives other options, such as mountable wireless cards, using either wifi, zigbee and other exotic options. I think we chose the best solutions for out needs, wifi can be very easy to troubleshoot with tcp/ip tools, rather than a mysterious black box wireless card piggy backed on the Ardusimple board.. Again, some of the long range options are eye watering expensive too!...

So we decided to pipe the correction data from the base station to the robot over good old WiFi, for maximum flexibility and to be able troubleshoot easily as well!

The excellent tutorial by TorxTecStuff was amazing. We could not of done it without you.

We used the str2str utility to pipe the RTCM data from out base station to the robot. It worked really well. 

You'll be able to find the configuration for this on our github, so you should be able to recreate this method if you don't want to go for the more black box piggy back cards from Ardusimple.

We did have a few problems at first be found that we had two Serial devices connected to a single ardusimple UART pin on the robot end, a time costly mistake which was compounded by contradictory wiring diagrams from u-blox and ardusimple.. which was very very very bad, a bit like crossing the streams in ghost busters. You can read about why this problem occurred in another log and how worked around it.