With the recent upgrades to the SwiftNav firmware and the upcoming release of the u-blox F9 receiver the last couple months have been an exciting time in the world of low-cost precision GNSS.! It has kept me very busy, both making necessary updates to the demo5 version of the RTKLIB code and with consulting work related to the new receivers. Unfortunately, this has meant I haven’t got a blog post out in over two months.
I have, however, just recently released a new version (b29e) of the demo5 RTKLIB code with some fairly significant changes from the previous version. These changes have been much more of a group effort than my previous releases, so I first want to thank everyone who helped with the new features.
Here’s a list of the most important changes:
1) U-blox F9 support: Support for the new dual-frequency u-blox raw binary messages. The updated code will now run real-time and post-processed solutions for the F9 receiver using all available raw binary observations and navigation messages.
2) Swiftnav F/W 2.0 support: Support for the new Galileo and Bediou Swiftnav binary messages. The updated code will now run real-time and post-processed solutions for the Piksi Multi receiver using all available raw binary observations and navigation messages.
3) Galileo E5b frequency support: Both the u-blox F9 and the Swiftnav receiver are using the E5b frequency for the second Galileo frequency. It was difficult to set the option for this frequency in the RTKLIB solutions and including it caused the solutions to run quite slowly. Since the demo5 code is focused on low-cost receivers, and both SwiftNav and u-blox, the two most popular low-cost dual frequency receivers, are both using E5b, I have re-ordered the frequency tables in RTKLIB so that a three frequency solution now includes L1, L2, and E5b. Previously, you would need to run what was effectively a five frequency solution to include E5b which caused RTKLIB to run noticeably slower.
4) Event logging and event position logging: This is a nice feature that has been available in the Emlid version of RTKLIB for a long time. I have ported the code over from their open-source code base and have extended support to the Swiftnav receivers as well as the u-blox receivers. Any events recorded by the receivers (e.g. camera triggers) are decoded from the binary messages and added to the rinex files. Post-processing the rinex files will now generate two position logs. The first is unchanged from before, with a solution position for every rover time stamp. The second, only includes positions for the logged events which are interpolated from the time stamp positions.
5) Fix for using time-tag files to emulate real-time RTKNAVI solutions with file inputs: This is a really useful feature that was broken by changes ported from the official 2.4.3 code quite a while ago, so it is really nice to have it working again. Thanks to Christophe for figuring this one out and giving me the necessary code fixes!
6) Reduce unnecessary NTRIP connection requests: RTKLIB was behaving quite badly on both server and client side whenever a receiver was disconnected without shutting down an NTRIP caster connection and was hammering the caster with nearly continuous connection requests. This was causing bandwidth issues for the NTRIP casters, and was causing some users (including me) to get temporarily banned for misuse. Thanks to David from SNIP for helping resolve this one and also for helping me to test the code.
7) Improve cycle-slip handling for non-u-blox receivers: RTKLIB was ignoring cycle-slips in cases where the carrier-phase was not set or set to zero. This was causing it in some cases to ignore valid cycle-slips which can significantly degrade the solution. The u-blox receiver code already had a fix for this so this change primarily affects non-ublox receivers
Several of these changes were written specifically for clients that needed the features or fixes for their own use but were willing to share them with the larger community. I appreciate their willingness to share and hope I can continue to bring more changes this way into the open-source code in the future.
I’ve had a chance to run real-time and post-processed solutions with this code with raw observations from both the u-blox F9 receivers and with the SwiftNav receivers with F/W 2.0 and am getting great results with both of them. I hope to share more results in the near future, but just wanted to say that the quality and number of raw observations I am seeing from both receivers is excellent.