Skip to content

RTK GNSS System

Jeremy Mallette edited this page Jul 13, 2019 · 2 revisions

Overview

This project uses the u-blox ZED-F9P GNSS module mounted on the C099-F9P official development board. The ZED-F9P, with good RTCM corrections, will enter DGNSS mode and can achieve ~1cm accuracy.

Note about Odin Chip

The C099-F9P board also has a built-in Odin chip that is meant to be used for short-range comms; however, this was found to be overcomplicated and unreliable. Instead, the module now interfaces with an external long-range radio module to communicate RTCM correction data.

Setting Up a New Module

This all assumes a basic understanding of u-center. All these configurations are also possible through the command-line but would be much more cumbersome, so just use u-center, even if you simply uninstall it afterwards.

Basic Configurations

u-blox has contributed several example configurations that can be used as starting configurations for various applications. The configuration files can be found here

To apply these configurations:

  1. Download the appropriate configuration text file from the above link (e.x. rover/base)
  2. Open u-center and connect to the GNSS module
  3. Go to View->Generation 9 Configuration View->Advanced Configuration
  4. On the lower right-hand corner, click Load and open the downloaded text file (the params should appear in the nearby table)
  5. Click the Send button above the load section (the parameters in the table should now have green checks beside them)

Additional Configurations

NOTE: Remember to use the save current configuration command from the CFG tab!

Ports

Some things to check:

  • Ensure that ports all have compatible baudrates (all can just be set to 115200 or 460800 for simplicity)
  • Ensure that IO protocols are correct
    • Interfaces that will be communicating with each other
    • Things you'd like to be visible over USB
  • Remove redundant or unnecessary IO protocols where possible to improve data throughput stability

Rates

Set the appropriate measurement rate. 1 Hz in almost certainly too slow and 20 Hz may be unstable. 10 or 5 Hz are reasonable choices, as the data will be put through a Kalman filter anyways.

Messages

The base configurations will be fine for outputting most messages between the base and rover as well as u-center, but there are some additional messages (namely NMEA strings) that may be used.

Timemode3 (Base Station Only)

Timemode3 is what the firmware uses to evaluate RTCM messages. You may choose to set up a survey or input known fixed coordinates. Either will result in RTCM messages being generated; however, accuracy is important. The accuracy of any roving GNSS receivers is completely dependent on the accuracy of the base station (in fact, an inaccurate base station may degrade a rover fix).

Performing a Survey Using the ZED-F9P

Assuming that the base station antenna is fixed in place, you can temporarily switch the mode of the GNSS module to a Survey-In mode. This will provide a very good approximation of the geographic true value. The longer you make the observation time and the tighter the constraint, the more accurate the final measurement will be.

  1. In the Configuration View, under the Timemode3 tab, select Survey-In.
  2. Set the "Minimum Observation Time"
    • 3600 [s] (1 hour) would be the acceptable minimum, but you should probably invest much more time
    • 86400 [s] (1 day) is fairly typical
  3. Set the "Required Position Accuracy"
    • 0.001 [m] (1 cm) is what we generally want
  4. After applying this configuration make sure the weather is clear and the system has a stable power source. Let it run for an extended period of time (likely more than your set minimum observation time).
  5. When the system is done its survey, you can note that its fix mode changes to "TIME" in u-center. Similarly, the latitude, longitude, and altitude will all have stopped changing, indicating it has found acceptable geographic coordinates. Note these down someplace safe because they will not be stored automatically!
  6. Change Timemode3 from "Survey-In" to "Fixed-Position" and provide the coordinates you wrote down. Save this configuration and reboot the module. You should notice that it immediately enters TIME mode.

**After setting this up and feeding the generated RTCM messages to the roving module, if you are still not getting the accuracy you require, you may need to use an external surveying method instead. (Though also note the accuracy section here)

Troubleshooting

Getting a DGNSS Fix, but without great accuracy

Assuming it is not a communications issue, there are two likely causes. The first is that the base station coordinates are not accurate enough. The second is that the rover is too far away from the base station. The distance between the base station and rover is called the baseline and, as the baseline increases, the accuracy decreases. Less than 20 Km is about a rule of thumb, but it is quite system dependent.