mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-10-15 04:01:49 +00:00
Update documentation
This commit is contained in:
@@ -113,7 +113,7 @@ information about this open-source, software-defined GNSS receiver.
|
||||
- [Decoding of the navigation message](#decoding-of-the-navigation-message)
|
||||
- [Observables](#observables)
|
||||
- [Computation of Position, Velocity, and Time](#computation-of-position-velocity-and-time)
|
||||
- [Fixed-base GPS L1/L2 RTK through NTRIP](#fixed-base-gps-l1l2-rtk-through-ntrip)
|
||||
- [Dual-band RTK through NTRIP](#dual-band-rtk-through-ntrip)
|
||||
- [About the software license](#about-the-software-license)
|
||||
- [Publications and Credits](#publications-and-credits)
|
||||
- [Ok, now what?](#ok-now-what)
|
||||
@@ -1843,7 +1843,8 @@ More documentation at the
|
||||
### Computation of Position, Velocity, and Time
|
||||
|
||||
GNSS-SDR provides a module that can compute standalone position fixes and an
|
||||
opt-in fixed-base RTK solution for GPS L1 C/A and L2C receivers. Results can be
|
||||
opt-in NTRIP-corrected RTK solution for dual-band GPS (L1 C/A + L2C or L1 C/A +
|
||||
L5), Galileo (E1 + E5a), and combined GPS+Galileo receivers. Results can be
|
||||
stored in GIS-friendly formats such as
|
||||
[GeoJSON](https://tools.ietf.org/html/rfc7946),
|
||||
[GPX](https://www.topografix.com/gpx.asp), and
|
||||
@@ -1874,7 +1875,7 @@ PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea ; NMEA log path and filename
|
||||
PVT.flag_nmea_tty_port=false ; Enables the NMEA log to a serial TTY port
|
||||
PVT.nmea_dump_devname=/dev/pts/4 ; serial device descriptor for NMEA logging
|
||||
PVT.flag_rtcm_server=true ; Enables an outbound raw TCP server dispatching generated RTCM messages
|
||||
PVT.ntrip_client_enabled=false ; Enables inbound fixed-base RTCM corrections from an NTRIP caster
|
||||
PVT.ntrip_client_enabled=false ; Enables inbound RTCM corrections from an NTRIP caster (physical base or VRS)
|
||||
PVT.flag_rtcm_tty_port=false ; Enables the RTCM log to a serial TTY port
|
||||
PVT.rtcm_dump_devname=/dev/pts/1 ; serial device descriptor for RTCM logging
|
||||
PVT.rtcm_tcp_port=2101
|
||||
@@ -1884,17 +1885,24 @@ PVT.rtcm_MT1097_rate_ms=1000
|
||||
PVT.rtcm_MT1077_rate_ms=1000
|
||||
```
|
||||
|
||||
#### Fixed-base GPS L1/L2 RTK through NTRIP
|
||||
#### Dual-band RTK through NTRIP
|
||||
|
||||
The `RTKLIB_PVT` implementation can obtain base-station corrections from an
|
||||
NTRIP caster. This feature is opt-in: `PVT.ntrip_client_enabled` defaults to
|
||||
`false`, and no caster connection is attempted while it is disabled. The first
|
||||
implementation is deliberately limited to exactly GPS L1 C/A (`GPS_1C`) and GPS
|
||||
L2C (`GPS_2S`), with `PVT.num_bands=2` and `PVT.navigation_system=1` (GPS).
|
||||
Select `Static` for a stationary rover or `Kinematic` for a moving rover; other
|
||||
positioning modes are rejected when the NTRIP client is enabled.
|
||||
`false`, and no caster connection is attempted while it is disabled. The
|
||||
receiver must be configured with complete dual-band channel pairs: GPS L1 C/A +
|
||||
L2C (`1C`+`2S`), GPS L1 C/A + L5 (`1C`+`L5`), Galileo E1 + E5a (`1B`+`5X`), or
|
||||
one GPS pair together with the Galileo pair for combined multi-constellation
|
||||
RTK; incomplete pairs and other signals are rejected. `PVT.navigation_system`
|
||||
must match the enabled constellations exactly (`1` GPS, `8` Galileo, `9` both),
|
||||
and the number of frequency slots is set automatically (2 for GPS L1/L2; 3
|
||||
whenever L5 or E5a is involved, since both occupy the third RTKLIB slot). GPS L5
|
||||
and Galileo E5a share the same center frequency, so the combined GPS L1+L5 /
|
||||
Galileo E1+E5a receiver needs only two RF channels. Select `Static` for a
|
||||
stationary rover or `Kinematic` for a moving rover; other positioning modes are
|
||||
rejected when the NTRIP client is enabled.
|
||||
|
||||
A fixed-base rover configuration can include:
|
||||
An NTRIP-corrected rover configuration can include:
|
||||
|
||||
```
|
||||
Channels_1C.count=8
|
||||
@@ -1902,8 +1910,6 @@ Channels_2S.count=8
|
||||
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.positioning_mode=Kinematic
|
||||
PVT.num_bands=2
|
||||
PVT.navigation_system=1
|
||||
|
||||
PVT.ntrip_client_enabled=true
|
||||
PVT.ntrip_caster_address=caster.example.org
|
||||
@@ -1919,6 +1925,8 @@ PVT.ntrip_reconnect_interval_ms=10000
|
||||
PVT.ntrip_max_correction_age_s=5.0
|
||||
PVT.ntrip_station_id=0
|
||||
PVT.ntrip_fallback_to_single=true
|
||||
PVT.ntrip_send_gga=true
|
||||
PVT.ntrip_gga_period_ms=10000
|
||||
```
|
||||
|
||||
The caster address, mountpoint, username, password, and password-environment
|
||||
@@ -1933,8 +1941,11 @@ one immediate v2-to-v1 compatibility retry still runs and is not counted as an
|
||||
automatic reconnect.
|
||||
|
||||
The correction stream must provide an RTCM 3 base position message 1005 or 1006
|
||||
and GPS observation messages carrying both L1 and L2, either as message 1004 or
|
||||
as MSM4 through MSM7 (1074 through 1077). Corrections older than
|
||||
and observation messages carrying the receiver's dual-band pair per satellite:
|
||||
for GPS, L1 together with L2 or L5, either as message 1004 or as MSM4 through
|
||||
MSM7 (1074 through 1077); for Galileo, E1 together with E5a as MSM4 through MSM7
|
||||
(1094 through 1097). Base satellites lacking the second band of the configured
|
||||
pair do not contribute to the relative solution. Corrections older than
|
||||
`PVT.ntrip_max_correction_age_s` are not used. Enabling this client forces a
|
||||
separate internal single-point solver for receiver-clock correction,
|
||||
independently of the RTK solver. With `PVT.ntrip_fallback_to_single=true`, the
|
||||
@@ -1954,7 +1965,14 @@ with TLS 1.2 or newer and validates the caster certificate against the system CA
|
||||
store and its host name. Without TLS, Basic authentication only encodes
|
||||
credentials; it does not encrypt them, so use a trusted network or a suitable
|
||||
secure tunnel. Prefer `PVT.ntrip_password_env` over a password stored in a file.
|
||||
VRS mountpoints requiring rover GGA messages are supported.
|
||||
VRS and nearest-station mountpoints that require rover GGA reports are
|
||||
supported: with `PVT.ntrip_send_gga=true` (the default), the client periodically
|
||||
sends an NMEA GGA sentence derived from the receiver's current position
|
||||
estimate, every `PVT.ntrip_gga_period_ms` (10 s by default). No GGA is sent
|
||||
before the receiver produces its first position solution; the single-point
|
||||
bootstrap fix is enough for the caster to start serving the virtual station. Set
|
||||
`PVT.ntrip_send_gga=false` if the rover position must not be reported to the
|
||||
caster; physical-base mountpoints work either way.
|
||||
|
||||
`PVT.flag_rtcm_server` is unrelated to the NTRIP correction client. It controls
|
||||
an outbound raw TCP server for RTCM messages generated by GNSS-SDR; it neither
|
||||
@@ -2075,7 +2093,7 @@ PVT.rtcm_tcp_port=2102
|
||||
PVT.rtcm_station_id=1111
|
||||
```
|
||||
|
||||
This outbound server is independent of the inbound fixed-base correction client
|
||||
This outbound server is independent of the inbound NTRIP correction client
|
||||
configured with `PVT.ntrip_client_enabled`.
|
||||
|
||||
**Important note:**
|
||||
|
||||
+21
-16
@@ -101,22 +101,27 @@ All notable changes to GNSS-SDR will be documented in this file.
|
||||
|
||||
### Improvements in Interoperability:
|
||||
|
||||
- Added an opt-in fixed-base RTK path for GPS L1 C/A + L2C receivers. The PVT
|
||||
block can now connect to an NTRIP caster, decode RTCM 3 base position and GPS
|
||||
L1/L2 observations, and feed time-aligned reference data to its RTKLIB
|
||||
relative-positioning solver. The client prefers NTRIP v2 and, after a
|
||||
fully-sent v2 exchange closes or times out before receiving response bytes, or
|
||||
returns HTTP 400, 501, or 505, retries on a fresh NTRIP v1 connection
|
||||
(`PVT.ntrip_version=1` forces the legacy protocol). It supports TLS 1.2 or
|
||||
newer with system-CA certificate and hostname verification
|
||||
(`PVT.ntrip_tls_enabled=true`). It reconnects without blocking the GNU Radio
|
||||
work function, filters station changes and stale corrections, redacts
|
||||
credentials from RTKLIB traces, and retains an explicitly labeled single-point
|
||||
fallback when configured. VRS and nearest-station mountpoints are supported:
|
||||
the client periodically reports the rover position upstream as an NMEA GGA
|
||||
sentence (`PVT.ntrip_send_gga`, enabled by default, with the cadence set by
|
||||
`PVT.ntrip_gga_period_ms`, 10 s by default), starting as soon as the receiver
|
||||
produces its first position solution.
|
||||
- Added an opt-in RTK path fed by NTRIP corrections. The PVT block can now
|
||||
connect to an NTRIP caster, decode the RTCM 3 base position and base
|
||||
observations, and feed time-aligned reference data to its RTKLIB
|
||||
relative-positioning solver. Supported receiver configurations are complete
|
||||
dual-band pairs per constellation: GPS L1 C/A + L2C, GPS L1 C/A + L5, Galileo
|
||||
E1 + E5a, or one GPS pair together with the Galileo pair for combined
|
||||
multi-constellation RTK. Since GPS L5 and Galileo E5a share the same center
|
||||
frequency, the combined GPS L1+L5 / Galileo E1+E5a receiver needs only two RF
|
||||
channels. The client prefers NTRIP v2 and, after a fully-sent v2 exchange
|
||||
closes or times out before receiving response bytes, or returns HTTP 400, 501,
|
||||
or 505, retries on a fresh NTRIP v1 connection (`PVT.ntrip_version=1` forces
|
||||
the legacy protocol). It supports TLS 1.2 or newer with system-CA certificate
|
||||
and hostname verification (`PVT.ntrip_tls_enabled=true`). It reconnects
|
||||
without blocking the GNU Radio work function, filters station changes and
|
||||
stale corrections, redacts credentials from RTKLIB traces, and retains an
|
||||
explicitly labeled single-point fallback when configured. VRS and
|
||||
nearest-station mountpoints are supported: the client periodically reports the
|
||||
rover position upstream as an NMEA GGA sentence (`PVT.ntrip_send_gga`, enabled
|
||||
by default, with the cadence set by `PVT.ntrip_gga_period_ms`, 10 s by
|
||||
default), starting as soon as the receiver produces its first position
|
||||
solution.
|
||||
- QZSS ambiguities are now resolved in their own group instead of jointly with
|
||||
GPS, avoiding integer fixes across the GPS-QZSS inter-system bias, and the
|
||||
RTCM 3 decoder accepts the final RTCM 3.3 BeiDou ephemeris message type 1042
|
||||
|
||||
@@ -509,7 +509,7 @@ Observables.dump_filename=./observables.dat
|
||||
\endverbatim
|
||||
|
||||
\subsection pvt Computation of Position, Velocity and Time
|
||||
GNSS-SDR provides a module that can compute standalone position fixes and an opt-in fixed-base RTK solution for GPS L1 C/A and L2C receivers. It can also store observables and navigation data for use with tools such as <a href="https://github.com/SGL-UT/gnsstk" target="_blank">GNSSTk</a> or <a href="https://gage.upc.edu/gLAB/" target="_blank">gLAB</a>.
|
||||
GNSS-SDR provides a module that can compute standalone position fixes and an opt-in NTRIP-corrected RTK solution for dual-band GPS (L1 C/A + L2C or L1 C/A + L5), Galileo (E1 + E5a), and combined GPS+Galileo receivers. It can also store observables and navigation data for use with tools such as <a href="https://github.com/SGL-UT/gnsstk" target="_blank">GNSSTk</a> or <a href="https://gage.upc.edu/gLAB/" target="_blank">gLAB</a>.
|
||||
|
||||
The common interface is PvtInterface. For instance, in order to use the implementation RTKLIB_PVT, add to the configuration file:
|
||||
\verbatim
|
||||
@@ -544,7 +544,7 @@ PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea ; NMEA log path and filename
|
||||
PVT.flag_nmea_tty_port=false ; Enables the NMEA log to a serial TTY port
|
||||
PVT.nmea_dump_devname=/dev/pts/4 ; serial device descriptor for NMEA logging
|
||||
PVT.flag_rtcm_server=true ; Enables an outbound raw TCP server dispatching generated RTCM messages
|
||||
PVT.ntrip_client_enabled=false ; Enables inbound fixed-base RTCM corrections from an NTRIP caster
|
||||
PVT.ntrip_client_enabled=false ; Enables inbound RTCM corrections from an NTRIP caster (physical base or VRS)
|
||||
PVT.flag_rtcm_tty_port=false ; Enables the RTCM log to a serial TTY port
|
||||
PVT.rtcm_dump_devname=/dev/pts/1 ; serial device descriptor for RTCM logging
|
||||
PVT.rtcm_tcp_port=2101
|
||||
@@ -554,11 +554,11 @@ PVT.rtcm_MT1097_rate_ms=1000
|
||||
PVT.rtcm_MT1077_rate_ms=1000
|
||||
\endverbatim
|
||||
|
||||
\subsubsection pvt_ntrip Fixed-base GPS L1/L2 RTK through NTRIP
|
||||
\subsubsection pvt_ntrip Dual-band RTK through NTRIP
|
||||
|
||||
The <code>RTKLIB_PVT</code> implementation can obtain base-station corrections from an NTRIP caster. This feature is opt-in: <code>PVT.ntrip_client_enabled</code> defaults to <code>false</code>, and no caster connection is attempted while it is disabled. The first implementation is limited to exactly GPS L1 C/A (<code>GPS_1C</code>) and GPS L2C (<code>GPS_2S</code>), with <code>PVT.num_bands=2</code> and <code>PVT.navigation_system=1</code> (GPS). Select <code>Static</code> for a stationary rover or <code>Kinematic</code> for a moving rover; other positioning modes are rejected when the NTRIP client is enabled.
|
||||
The <code>RTKLIB_PVT</code> implementation can obtain base-station corrections from an NTRIP caster. This feature is opt-in: <code>PVT.ntrip_client_enabled</code> defaults to <code>false</code>, and no caster connection is attempted while it is disabled. The receiver must be configured with complete dual-band channel pairs: GPS L1 C/A + L2C (<code>1C</code>+<code>2S</code>), GPS L1 C/A + L5 (<code>1C</code>+<code>L5</code>), Galileo E1 + E5a (<code>1B</code>+<code>5X</code>), or one GPS pair together with the Galileo pair for combined multi-constellation RTK; incomplete pairs and other signals are rejected. <code>PVT.navigation_system</code> must match the enabled constellations exactly ($$ 1 $$ GPS, $$ 8 $$ Galileo, $$ 9 $$ both), and the number of frequency slots is set automatically ($$ 2 $$ for GPS L1/L2; $$ 3 $$ whenever L5 or E5a is involved, since both occupy the third RTKLIB slot). GPS L5 and Galileo E5a share the same center frequency, so the combined GPS L1+L5 / Galileo E1+E5a receiver needs only two RF channels. Select <code>Static</code> for a stationary rover or <code>Kinematic</code> for a moving rover; other positioning modes are rejected when the NTRIP client is enabled.
|
||||
|
||||
A fixed-base rover configuration can include:
|
||||
An NTRIP-corrected rover configuration can include:
|
||||
|
||||
\verbatim
|
||||
Channels_1C.count=8
|
||||
@@ -589,7 +589,7 @@ PVT.ntrip_gga_period_ms=10000
|
||||
|
||||
The caster address, mountpoint, username, password, and password-environment variable name default to empty strings; the remaining defaults are those shown above, except that <code>PVT.ntrip_client_enabled</code> defaults to <code>false</code>. Set either <code>PVT.ntrip_password</code> or <code>PVT.ntrip_password_env</code>, never both. The latter names an environment variable from which GNSS-SDR reads the password and avoids placing the password in the configuration file. Station ID <code>0</code> accepts any station; otherwise, set the expected RTCM station ID. Setting <code>PVT.ntrip_reconnect_interval_ms=0</code> disables operational reconnect attempts; the one immediate v2-to-v1 compatibility retry still runs and is not counted as an automatic reconnect.
|
||||
|
||||
The correction stream must provide an RTCM 3 base position message 1005 or 1006 and GPS observation messages carrying both L1 and L2, either as message 1004 or as MSM4 through MSM7 (1074 through 1077). Corrections older than <code>PVT.ntrip_max_correction_age_s</code> are not used. Enabling this client forces a separate internal single-point solver for receiver-clock correction, independently of the RTK solver. With <code>PVT.ntrip_fallback_to_single=true</code>, the receiver reports an explicitly labeled <code>SOLQ_SINGLE</code> solution while corrections are unavailable, incomplete, or stale; it does not label that fallback as an RTK solution.
|
||||
The correction stream must provide an RTCM 3 base position message 1005 or 1006 and observation messages carrying the receiver's dual-band pair per satellite: for GPS, L1 together with L2 or L5, either as message 1004 or as MSM4 through MSM7 (1074 through 1077); for Galileo, E1 together with E5a as MSM4 through MSM7 (1094 through 1097). Base satellites lacking the second band of the configured pair do not contribute to the relative solution. Corrections older than <code>PVT.ntrip_max_correction_age_s</code> are not used. Enabling this client forces a separate internal single-point solver for receiver-clock correction, independently of the RTK solver. With <code>PVT.ntrip_fallback_to_single=true</code>, the receiver reports an explicitly labeled <code>SOLQ_SINGLE</code> solution while corrections are unavailable, incomplete, or stale; it does not label that fallback as an RTK solution.
|
||||
|
||||
This client sends an NTRIP version 2 HTTP/1.1 request by default and accepts a legacy v1 reply on that connection. If the fully-sent v2 exchange closes or times out before receiving any response bytes, or returns HTTP 400, 501, or 505, it opens one fresh connection and retries using the v1 HTTP/1.0 request. Once selected, v1 is retained for operational reconnects until the client is stopped and started again. DNS, TCP, TLS, and partial-write failures before the request is sent do not trigger a downgrade; <code>PVT.ntrip_version=1</code> forces v1 from the first connection. Setting <code>PVT.ntrip_tls_enabled=true</code> encrypts both attempts with TLS 1.2 or newer, validating the caster certificate against the system CA store and its host name. Without TLS, Basic authentication only encodes credentials; it does not encrypt them, so use a trusted network or a suitable secure tunnel, and prefer <code>PVT.ntrip_password_env</code> over a password stored in a file. VRS and nearest-station mountpoints that require rover GGA reports are supported: with <code>PVT.ntrip_send_gga=true</code> (the default), the client periodically sends an NMEA GGA sentence derived from the receiver's current position estimate, every <code>PVT.ntrip_gga_period_ms</code> (10 s by default, accepted range 1 s to 24 hours). No GGA is sent before the receiver produces its first position solution; the single-point bootstrap fix is enough for the caster to start serving the virtual station. Set <code>PVT.ntrip_send_gga=false</code> if the rover position must not be reported to the caster; physical-base mountpoints work either way.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user