rt-navi
is our real-time navigation application. It proposes interfaces to our
GNSS-RTK solver and supports one U-Blox receiver,
since Rust language offers great support for these devices.
If support for other devices appear, it should be easy to propose other interfaces.
rt-navi
expects a single serial interface and currently does not manage several receivers.
This application is part of the RTK-rs framework which is delivered under the Mozilla V2 Public license.
rt-navi
offers direct/absolute navigation by default (also referred to as PPP
).
An RTK
option will be developped in near future.
The U-Blox library (one of our dependency) is not compatible with --all-features
, as we use
compilation features to select the U-Blox protocol (read down below). So rt-navi
is not compatible
with this compilation mode, you have to select the features you are interested one by one.
rt-navi
is compatible with cross-compilation, but it currently requires support of the std
library.
Activate $RUST_LOG
to have more information. Use trace
to unlock all traces.
Use -p
to specify the serial interface to the U-Blox.
RUST_LOG=debug rt-navi -p /dev/ttyACM0
[2025-05-11T09:31:21Z INFO anise::almanac] Loading bytes as DAF/SPK
[2025-05-11T09:31:21Z DEBUG rt_navi] deployed with User {
profile: Some(
Pedestrian,
),
clock_sigma_s: 0.001,
}
[...]
[2025-05-11T09:31:21Z DEBUG rt_navi] deployed with Config {
timescale: GPST,
method: SPP,
user: User {
profile: None,
clock_sigma_s: 0.001,
},
[...]
[2025-05-11T09:31:21Z INFO rt_navi] solver deployed
[2025-05-11T09:31:21Z DEBUG rt_navi] deploying ublox..
[2025-05-11T09:31:21Z DEBUG rt_navi::ublox] UBX-RXM-RAWX
[2025-05-11T09:31:21Z DEBUG rt_navi::ublox] UBX-NAV-PVT
[2025-05-11T09:31:21Z DEBUG rt_navi::ublox] UBX-RXM-SFRBX
[2025-05-11T09:31:21Z DEBUG rt_navi::ublox] UBX-RXM-RATE
[2025-05-11T09:31:21Z DEBUG rt_navi::ublox] UBX-MON-VER
[2025-05-11T09:31:21Z DEBUG rt_navi::ublox] ublox: hw-version: 00080000, sw-version: EXT CORE 3.01 (111141) , extensions: ["ROM BASE 2.01 (75331)", "FWVER=TIM 1.10", "PROTVER=22.00", "MOD=NEO-M8T-0", "FIS=0xEF4015 (100111)", "GPS;GLO;GAL;BDS", "SBAS;IMES;QZSS"]
Soon the navigation messages gathering starts, and so does the measurement collection.
When both align and everything becomes feasible, the solver naturally consumes all of this data and we obtain a P.V.T:
rt-navi
currently requires a U-Blox receiver to operate. We offer several compilation options
to select the U-Blox protocol ("protocol"
version being very important, because it actually
defines which receiver you can operate!):
ubx_proto23
v23 (Default, for M8 series)ubx_proto14
v14ubx_proto27
v27 (for F9 series)ubx_proto31
v31 (for newer series)
TODO
We offer a few options to specify initial x
, y
and z
coordiates. This reduces the constraint
to initial fix and make it easier to obtain. We recommend using this only if you have a rather good idea.
rt-navi -p /dev/ttyACM0 --coords-ecef-km=1000.0,2000.0,3000.0
rt-navi
uses the combination of several major crates to achieve its objectives