-
Notifications
You must be signed in to change notification settings - Fork 3
RTK GNSS System
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.
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.
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.
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:
- Download the appropriate configuration text file from the above link (e.x. rover/base)
- Open u-center and connect to the GNSS module
- Go to
View->Generation 9 Configuration View->Advanced Configuration
- On the lower right-hand corner, click
Load
and open the downloaded text file (the params should appear in the nearby table) - Click the
Send
button above the load section (the parameters in the table should now have green checks beside them)
NOTE: Remember to use the save current configuration command from the CFG tab!
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
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.
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 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).
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.
- In the Configuration View, under the Timemode3 tab, select Survey-In.
- 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
- Set the "Required Position Accuracy"
- 0.001 [m] (1 cm) is what we generally want
- 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).
- 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!
- 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)
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.