mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-10-08 00:31:50 +00:00
rescode() (rtklib_pntpos.cc) computes each satellite's azimuth/elevation via satazel() before checking it against PVT.elevation_mask, and pntpos() copies that azel into ssat[] unconditionally -- only ssat[].vs is gated by the mask (the same applies to a satellite dropped by RAIM FDE). The used_satellites loop in rtklib_solver.cc was keying its entire per-satellite entry on vs, so a tracked satellite excluded from the fix (below the elevation mask, or by RAIM) disappeared from MonitorPvt entirely -- indistinguishable from a genuine tracking problem. Key entries on whether azel was actually computed this epoch instead, and add a separate `used` flag (default true) reflecting vs. A satellite that is tracked but excluded from the fix now still reports its real az/el, with used = false.
75 lines
3.6 KiB
Protocol Buffer
75 lines
3.6 KiB
Protocol Buffer
// SPDX-License-Identifier: BSD-3-Clause
|
|
// SPDX-FileCopyrightText: 2018-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es>
|
|
syntax = "proto3";
|
|
|
|
package gnss_sdr;
|
|
|
|
/* MonitorPvt represents a search query, with pagination options to
|
|
* indicate which results to include in the response. */
|
|
message MonitorPvt {
|
|
uint32 tow_at_current_symbol_ms = 1; // Time of week of the current symbol, in ms
|
|
uint32 week = 2; // PVT GPS week
|
|
double rx_time = 3; // PVT GPS time
|
|
double user_clk_offset = 4; // User clock offset, in s
|
|
|
|
double pos_x = 5; // Position X component in ECEF, expressed in m
|
|
double pos_y = 6; // Position Y component in ECEF, expressed in m
|
|
double pos_z = 7; // Position Z component in ECEF, expressed in m
|
|
double vel_x = 8; // Velocity X component in ECEF, in m/s
|
|
double vel_y = 9; // Velocity Y component in ECEF, in m/s
|
|
double vel_z = 10; // Velocity Z component in ECEF, in m/s
|
|
|
|
double cov_xx = 11; // Position variance in the Y component, in m2
|
|
double cov_yy = 12; // Position variance in the Y component, in m2
|
|
double cov_zz = 13; // Position variance in the Z component, in m2
|
|
double cov_xy = 14; // Position XY covariance, in m2
|
|
double cov_yz = 15; // Position YZ covariance, in m2
|
|
double cov_zx = 16; // Position ZX covariance, in m2
|
|
|
|
double latitude = 17; // Latitude, in deg. Positive: North
|
|
double longitude = 18; // Longitude, in deg. Positive: East
|
|
double height = 19; // Height, in m
|
|
|
|
uint32 valid_sats = 20; // Number of valid satellites
|
|
uint32 solution_status = 21; // RTKLIB solution status
|
|
uint32 solution_type = 22; // RTKLIB solution type (0: xyz-ecef, 1: enu-baseline)
|
|
float ar_ratio_factor = 23; // Ambiguity resolution ratio factor for validation
|
|
float ar_ratio_threshold = 24; // Ambiguity resolution ratio threshold for validation
|
|
|
|
double gdop = 25; // Geometric Dilution of Precision
|
|
double pdop = 26; // Position (3D) Dilution of Precision
|
|
double hdop = 27; // Horizontal Dilution of Precision
|
|
double vdop = 28; // Vertical Dilution of Precision
|
|
|
|
double user_clk_drift_ppm = 29; // User clock drift [ppm]
|
|
string utc_time = 30; // PVT UTC time (rfc 3339 datetime string)
|
|
|
|
double vel_e = 31; // Velocity East component in the local frame, in m/s
|
|
double vel_n = 32; // Velocity North component in the local frame, in m/s
|
|
double vel_u = 33; // Velocity Up component in the local frame, in m/s
|
|
|
|
double cog = 34; // Course Over Ground, in deg
|
|
|
|
uint32 galhas_status = 35; // Galileo HAS status: 1- HAS messages decoded and applied, 0 - HAS not available
|
|
string geohash = 36; // Encoded geographic location. See https://en.wikipedia.org/wiki/Geohash
|
|
|
|
// One tracked satellite/signal with its azimuth/elevation, whether it was
|
|
// combined with another signal of the same satellite (e.g. Galileo E1+E5a
|
|
// iono-free combination), and whether it was actually used in this fix.
|
|
// Signals are listed individually, not merged: a combined satellite
|
|
// appears as two entries, both with combined = true. A satellite can have
|
|
// azimuth_deg/elevation_deg populated with used = false when it was
|
|
// tracked and had az/el computed but excluded from the fix itself (e.g.
|
|
// below PVT.elevation_mask, or by RAIM FDE).
|
|
message UsedSatellite {
|
|
uint32 prn = 1;
|
|
string system = 2; // "G" GPS, "E" Galileo, "R" GLONASS, "C" BeiDou, "S" SBAS, "J" QZSS
|
|
string signal = 3;
|
|
double azimuth_deg = 4;
|
|
double elevation_deg = 5;
|
|
bool combined = 6;
|
|
bool used = 7;
|
|
}
|
|
repeated UsedSatellite used_satellites = 37;
|
|
}
|