mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-10-17 04:52:36 +00:00
Extend visibility-aware search and fix dual-band acquisition scheduling
Visibility-aware acquisition search (GNSS-SDR.enable_visibility_aware_search): - Classify GLONASS and QZSS satellites too. GLONASS positions come from the GNAV almanac (new Glonass_Gnav_Almanac::satellite_position with the standard perturbation model), so the search order benefits before any GLONASS ephemeris is decoded. - PVT publishes a lock-free navigation snapshot (ephemeris, almanac, UTC models per system) that the classifier reads instead of locking the PVT maps on every recompute. - Recompute on new navigation data, on position changes larger than visibility_recompute_position_threshold_m, every visibility_recompute_interval_s, and when the almanac ages out; fix the periodic and position-triggered recomputes that never fired, and the off-by-one that excluded satellites in [mask, mask+1) degrees. - Enter the start-up standby only when the feature is enabled, so the default search order is untouched. Secondary-frequency acquisition assistance: - Do not start an acquisition on the PRN 0 placeholder left on assisted channels at connect time; it threw inside the control thread and left the flowgraph running headless with the secondary band never acquired. - Match GLONASS assistance by FDMA frequency channel: the search pool keeps one slot per channel while tracked L1 channels report the decoded slot, so L2 was never picked. - Assist from locked channels before their telemetry is decoded: the observables status now reports tracking-only channels and the flowgraph keeps a separate tracking map for the assisted search.
This commit is contained in:
@@ -132,6 +132,25 @@ All notable changes to GNSS-SDR will be documented in this file.
|
||||
the generic rule
|
||||
`doppler(col) = -doppler_max + doppler_center + doppler_step * col` decodes
|
||||
both full and narrowed grids. Contributed by @joebre.
|
||||
- Added an optional visibility-aware acquisition search, enabled with
|
||||
`GNSS-SDR.enable_visibility_aware_search=true` (default `false`, which leaves
|
||||
the existing search order untouched). Once a receiver position is available,
|
||||
either from a fix or from `GNSS-SDR.AGNSS_ref_location`, satellites are
|
||||
continuously classified as visible, excluded (elevation at or below
|
||||
`GNSS-SDR.search_elevation_mask`, default 0 degrees, or flagged unhealthy), or
|
||||
not yet known, using the freshest ephemeris or almanac decoded for GPS,
|
||||
Galileo, BeiDou, GLONASS, and QZSS. Idle channels then favor visible
|
||||
satellites over unknown ones, at the ratio given by
|
||||
`GNSS-SDR.visible_vs_mayvisible_search_ratio` (default 3), and skip known
|
||||
excluded ones, so less CPU is spent acquiring satellites that are below the
|
||||
horizon. The classification is refreshed whenever new navigation data arrives,
|
||||
when the receiver moves more than
|
||||
`GNSS-SDR.visibility_recompute_position_threshold_m` (default 1000 m), every
|
||||
`GNSS-SDR.visibility_recompute_interval_s` (default 120 s), and when almanac
|
||||
data becomes older than `GNSS-SDR.visibility_almanac_max_age_s` (default 3
|
||||
days). A satellite that is already being tracked is never released because of
|
||||
this classification, and `PVT.elevation_mask` still decides which observations
|
||||
enter the navigation solution. Contributed by @joebre.
|
||||
|
||||
### Improvements in Interoperability:
|
||||
|
||||
@@ -333,6 +352,14 @@ All notable changes to GNSS-SDR will be documented in this file.
|
||||
metadata in satellite status, and the NMEA printer emits the strongest
|
||||
available C/N0 with the corresponding NMEA signal identifier. Contributed by
|
||||
@vladisslav2011.
|
||||
- The custom output stream defined by `monitor_pvt.proto` now includes a
|
||||
`tracked_satellites` list. Each entry reports one tracked signal (`system`,
|
||||
`prn`, `signal`), its `azimuth_deg` and `elevation_deg`, whether it was
|
||||
`combined` with another signal of the same satellite (e.g., the Galileo E1+E5a
|
||||
ionosphere-free combination), and a `used` flag telling whether it contributed
|
||||
to the reported fix. Satellites that were tracked but left out of the solution
|
||||
(below `PVT.elevation_mask`, or excluded by RAIM) are listed with
|
||||
`used = false`. Contributed by @joebre.
|
||||
|
||||
### Improvements in Maintainability:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user