ArduSimple RTK2B+heading - first impressions

ArduSimple RTK2B+heading - first impressions

ArduSimple provided me with their RTK2B+heading module recently. In this blog post I’m describing my experience running the first tests with these modules and my planned further tests. My end goal is to integrate the modules with ROS and get a precise positioning in 2D with extra heading information.

RTK basics

They say that a picture is worth a thousand words, so here is a 5 minute YouTube video that should give you basic information on RTK in case you haven’t heard of it before:

What is special about the module that I’m testing from ArduSimple is the rover board that comes with 2 GPS chips, allowing to plug in two GPS antennas and figuring out the rover heading based on available information.


The setup I’ve received from ArduSimple consists of the following:

ArduSimple base and rover modules
ArduSimple base module (left) and rover module (right)

The ArduSimple boards are based on u-blox ZED-F9P, a professional grade multiband GNSS modules.

The long range radio modules that I’ve received are XBee SX 868 - an 863-870 MHz radio modules boasting a line of sight range of 14km.

u-blox antenna
u-blox ANN-MB-00 antenna

The u-blox antennas are IP67 rated have two mounting holes and an embedded magnet that makes it convenient to attach to metal surfaces.


One advice from my drone days that stuck with me is to always plug in all antennas before powering the system. That’s what I did when working with this system and I recommend that you do that too.

u-center software
running u-center software

At this point I only run some static tests. The first test I performed using u-center software, even when I put the antennas outside of my window in an urban space (conditions far from ideal due to multipath) the software was reporting 0.23m accuracy in 2D - not bad at all!

GPS position being shown in Google Earth
Streaming GPS information to Google Earth

Thanks to the advice from the ArduSimple team I was able to display the position on Google Earth (to do that select Menu Bar > File > Database Export > Google Earth server in u-center).

As another experiment I tested the receivers with ROS-Agriculture ublox_f9p node. Amazingly it worked out of the box streaming out the position data.

After I’ve performed the tests I’ve found out about ublox package that seems to implement RELPOSNED message and hence should allow me to stream heading from my rover setup.

Summary and next steps

I found the ArduSimple units to be a great piece of kit. I still have quite a bit of work to do to implement them on a robotic platform, here is a rough plan how I’m going to pull this off:

  1. Build cases and a base station setup (ideally so that it can be placed on a tripod)
  2. Test out the ublox package
  3. If the package from previous point is not satisfactory: fork ROS-Agriculture ublox_f9p repository and make sure UBX-RELPOSNED message is handled and the driver publishes heading
  4. Capture data by walking around with the module in hand
  5. Integrate the module on my mobile robot development platform and tune the EKF to work with the RTK module
  6. Enable corrections via NTRIP

Mateusz Sadowski

Mateusz Sadowski
Robotics consultant

Thoughts on 2 Years as a Remote Robotics Consultant

Earlier this year I hit a milestone of working 2 years as a remote robotics consultant. This post sums my experience and shows the approach to consulting that I've taken Continue reading

Ouster OS1 - first impressions

Published on June 26, 2020

Enabling PPS on Jetson Nano

Published on April 28, 2020