08 May 2023

Precision positioning for autonomous service robots

Precision positioning solutions have had a reputation of being challenging to implement. Our step-by-step implementation guide makes it efficient and easy, taking you through every step of the process.

precision positioning setup with ZED-F9R

In a recent blog, we presented the OpenMower platform as a quick and easy way to test the performance of high precision positioning using the u-blox ZED-F9R module. But what if you want to create a centimeter-level positioning solution that meets application-specific design constraints from scratch? Getting the GNSS receiver, the correction service receiver, the correction service, and the inertial sensing unit set up right can feel intimidating at first, even for companies experience with developing standard GNSS solutions.

But here's the good news: We’ve got your back. Our getting started guide walks you through every step of the process, from the initial shopping list all the way up to (but not including) the little jig you’ll do once your solution is up and running.

Service robots, electric scooters, and more…

But first, a few words on the ZED-F9R module: The ZED-F9R is one of many u-blox high precision positioning solutions released over the past years to bring positioning performance – once reserved to high-value applications – to the mass market. Designed specifically to deliver high-precision GNSS positioning in the most challenging applications, the module is optimized for slow-moving applications such as service robots and electric scooters.

Combining multi-band GNSS capable of concurrently tracking up to four GNSS constellations with inertial sensing to bridge temporary signal outages, the ZED-F9R considerably cuts the time required to develop reliable centimeter-level positioning solutions. Here are some tips to help you get out of the starting blocks.

Start with all the necessary components

We have all been spoiled by GNSS technology, which only requires two components to spit out a position output anywhere on the planet: a GNSS receiver and an antenna. Everything else is provided – for free – by state-funded infrastructure, most of which is orbiting in space.

The shopping list to develop high precision position solutions is slightly longer. But as you’ll see here, the high degree of technological integration our provided by the ZED-F9R removes much of the complexity. 

Of course, you’ll need an operational ZED-F9R module. Our C102-F9R evaluation kit is a great starting point for first-time users, providing a tested, ready-to-use device for most purposes. If, instead, you go for a custom PCB, make sure it includes a UART connection to the receiver and, ideally, USB support.


Next be sure to get the right antenna. You’ll need a multi-band L1 and L2 antenna with at least 17 dB of gain to provide the right signals to the GNSS receiver module. It should be designed for real-time kinematic applications and might require a ground plane for optimal performance. Our ANN-MB is a great place to start.


Then, you’ll need a communication channel to feed your vehicle’s odometry data to the GNSS receiver – a requirement for high precision positioning. This can take the shape of dedicated hardware pins for wheel ticks and direction or a serial interface.

To achieve centimeter-level positioning, you’ll need GNSS correction data. Correction data can come from several sources, including a local GNSS base station or a subscription-based GNSS correction service.

Finally, for development and testing, you’ll want a host, for example, a PC running u-center and serial communication link to the receiver. Don’t forget to preserve monitoring and debugging functions in your final design when you replace the PC with an embedded host.

Setting up the solution for optimal precise positioning performance

Once you’ve learned how to connect the receiver with u-center for monitoring and configuration (as outlined in our getting started guide), you’ll have to mount the GNSS receiver and the antenna for optimal performance.

Receiver placement is only important for the most demanding applications. More important is the receiver’s orientation, which needs to be measured to within a few degrees for the inertial sensor data to be used correctly.

For reliable performance over the solution’s lifetime, ensure that the receiver is firmly attached to the vehicle’s frame and protected from excessive vibration.

Antenna placement is particularly critical for reliable performance. The antenna should be placed so that it has a clear view of the sky. Placing the antenna as close as possible to the receiver further improves performance.

how to to mount the GNSS receiver and the antenna for optimal performance

Testing GNSS signal reception

With the hardware installed, the connection to the augmentation service established, and the communication interface configured, it’s time to test the GNSS signal reception using u-center. With the receiver connected to u-center, go to a location with an open sky view, wait for the receiver to establish a 3D fix, and check the available satellite signals.

u-center displaying GNSS signals in open sky

If you receive at least 20 signals from the constellations that you were expecting on multiple bands and the average carrier-to-noise ratio, C/N0, is at least 40, your GNSS signal reception is good. If, however, the signal quality is bad, improve it before continuing. Keep in mind that bad GNSS signals will result in poor navigation performance in all conditions. Likely reasons for poor quality of received GPS signals are a poorly selected antenna, a missing ground plane, and poor antenna placement.

Setting up the correction data feed

The receiver requires a continuous stream of GNSS correction data to deliver proper RTK performance. Here, we’ll look at key pointers to leverage correction data sent using the NTRIP (networked transport of RTCM via internet protocol) protocol. An upcoming article will focus more specifically on the receiving correction data via the MQTT protocol, e.g., with the u-blox PointPerfect GNSS augmentation service.

If you are using NTRIP, you’ll need access to an NTRIP caster (address, port, username, and password). The caster could be implemented using a nearby GNSS base station and an RTK broadcasting service such as RTK2go or, alternatively, a commercial GNSS correction service.

u-center allows you to monitor the RTK status in real-time. Under open sky conditions, a well set up system should take less than two minutes to establish an RTK fix.

u-center showing RTK status in real time

Nailing the sensor fusion setup 

The final and most important step to achieve reliable centimeter-level positioning performance involves setting up the receiver for sensor fusion. First, you’ll need to provide odometry data to the receiver, either via a dedicated pin on the receiver (only available for automotive use cases), or via the serial interface. In the latter case, make sure that the data stream is of sufficiently good quality, provided at regular intervals with minimal sampling delay and data loss.

u-center showing external sensor fusion measurement data

Next, configure the sensor fusion solution by selecting the most appropriate dynamic model (automotive, robotic lawnmower, or e-scooter) and determine the orientation of the receiver relative to the vehicle. In the automotive use case, consider using the automatic alignment to save time and effort.

All that’s left to do before calibrating and testing your solution (as outlined in the getting started guide) is to set the navigation output rate.

Whoop whoop, you’re done!

We hope that this article and the more detailed getting started guide it draws on have convinced you that setting up a high precision positioning solution isn’t rocket science. Explore our website to learn more about why u-blox is the right partner for unmanned ground robotics, e-micromobility, and guidance systems for precision agricultural applications. And head over to our distributors – Digikey, Future Electronics, and Mouser – to find all the components you need to get started!

You might also be interested in