Commit Graph
101 Commits
Author SHA1 Message Date
Carles Fernandez 044aee9bc2 Keep a separate logfile for each run with Abseil logging, as google-glog did 2026-09-27 18:26:57 +02:00
Carles Fernandez fd274fb891 Make acquisition dump readers skip noise-reference columns
With set_doppler_num_bins(), acq_grid holds the Doppler candidate columns
followed by 0, 1 or 2 noise-reference columns placed at doppler_center
+/- the configured doppler_max, outside the linear Doppler axis. Nothing
in the dump said how many columns were candidates, so the readers either
rejected the file (Acquisition_Dump_Reader) or plotted the reference
columns on a wrong Doppler axis (plot_acq_grid.py, plot_acq_grid.m).

Write a new doppler_num_candidates variable to the dump and use it in
the readers to keep only the candidate columns. Dumps without it are
read as before, except that the reference column of older narrowed
dumps is also skipped. The Python and MATLAB scripts plot a
single-candidate (narrowed) grid as a code-delay line instead of an
empty surface.

Add a regression test that reads back a full-grid dump with two
reference columns and a narrowed N = 5 dump.
2026-09-23 12:46:37 +02:00
Carles Fernandez 65cca85178 Fix CUDA acquisition upload ordering and validation
- Order code and carrier uploads on the compute stream and wait before
  returning so callers can safely reuse host buffers.
- Verify CUDA readiness and completed grid counts in adapter tests,
  rejecting unexpected CPU fallback.
- Exercise host-buffer reuse in engine parity tests.
- Correct the Jetson helper's test executable path.
- Use ArgsProduct for compatibility with Google Benchmark 1.9.2–1.9.5.
2026-09-21 17:18:55 +02:00
Phillip Vu 3161b87cec Add utils/scripts/jetson-build.sh helper
Signed-off-by: Phillip Vu <36169227+phillipvu@users.noreply.github.com>
2026-09-21 06:26:39 -07:00
Carles Fernandez 8e512b82fd Make abseil logging sink thread-safe 2026-09-20 09:41:31 +02:00
Carles Fernandez 0af508713a Fix Acquisition dump readers
Update changelog
Add Joel to the CITATION.cff file
2026-09-01 09:22:38 +02:00
joebre a9c12954f3 python: fix signal-type label when overriding the plotted channel range
apply_conf_defaults() picked the plotted signal-type label as
signals[0].signal whenever --first-channel/--channels was passed
explicitly to override the conf-derived channel range. signals[0] is
just the first enabled signal in SIGNAL_ORDER for the given conf, so
it is only correct when the manually requested range happens to start
at channel 0 of that same signal; for any other range it mislabels
every plot with the wrong signal type, even though the correct .dat
files are read (since --file-prefix is typically also given
explicitly in that case).

For example, running
  --conf EVK1029_Galileo_E1_E5a.conf --file-prefix trk_GalileoE5a_ch \
  --first-channel 10 --channels 10
correctly reads the Galileo E5a tracking dumps but titled every plot
"Galileo E1B", the conf's first enabled signal.

Resolve each requested channel's signal type from the conf's own
per-signal channel ranges (SignalConfig.channels) instead, falling
back to the previous behavior only when no conf is available at all.

Signed-off-by: joebre <joel.brenner@saphyrion.ch>
2026-08-27 15:48:11 +02:00
joebre 6d3bdbc3cc python: add missing BeiDou B1C/SBAS L1 entries to plot SIGNAL_ORDER
SIGNAL_ORDER in utils/python/lib/gnss_sdr_conf.py is meant to mirror
signal_mapping in src/core/receiver/gnss_block_factory.cc, which
GetChannels() walks in a fixed order to assign absolute channel IDs
(consuming Channels_<type>.count channels per entry; the per-channel
Channel<N>.signal lines in the conf file are not used for this).

SIGNAL_ORDER was missing "1D" (BeiDou B1C) and "S1" (SBAS L1), both
present in signal_mapping. Any configuration enabling BeiDou B1C or
SBAS alongside other signal types would get every later signal's
inferred channel range shifted, mislabeling tracking dump plots for
those channels. Added both entries, in the same relative position as
signal_mapping, along with their SignalType metadata.

Signed-off-by: joebre <joel.brenner@saphyrion.ch>
2026-08-27 15:48:02 +02:00
Carles Fernandez 1ceb98e4a8 Fix gnss-simulator building against Boost 1.92 2026-08-15 13:00:52 +02:00
Carles Fernandez 48bc8e8239 skyplot: improve RINEX 2/3/4 navigation record parsing 2026-08-10 09:49:52 +02:00
Carles Fernandez 0ea3c54429 Improve printing of BeiDou B1C data 2026-08-07 14:27:22 +02:00
Carles Fernandez 656c1c89da Move BeiDou B1C code generation script to a new folder 2026-08-07 13:24:34 +02:00
Carles Fernandez b596884e9e Merge upstream next into contrib/beidou-b1c-clean
Signed-off-by: Carles Fernandez <carles.fernandez@cttc.es>
2026-08-03 21:09:57 +02:00
Carles Fernandez e4f3437d88 Merge branch 'better-dnav' into next 2026-08-03 17:20:33 +02:00
Carles Fernandez 5c3ad8b825 skyplot: fix RINEX 4 navigation files reading 2026-08-03 12:41:26 +02:00
OuWenhao16 aa1ca2163d Fix SOH framing/sync-loss and other questions raised by the PM.
Keep BeiDou B1C/CNAV1-focused changes; remove B1I OPT_ACQ, outlier PR
gating, DNAV toe/sqrt(A) sanity, and Flag_cycle_slip move-assignment submitted separately.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:19 +08:00
OuWenhao16 97680490e0 Address Project Manager review feedback for BeiDou B1C/CNAV1.
Put B1C on RTKLIB slot 0 with prefer-B1C XOR and lam[0] override,
align QMBOC quadrature and BCH thresholds with the ICD, fix BDGIM
nearest-odd-hour t_p and CNAV1 ephemeris defaults, tighten math/constants
usage, and drop the non-reproducible LDPC generator script. Move replica,
LDPC, and navigation unit tests into the default test set.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:18 +08:00
OuWenhao16 da9eba4af2 Remove redundant BeiDou PVT pre-filters in the src/algorithms/PVT/libs/rtklib_solver.cc.
Update pseudorange outlier rejection
- Gate relative pseudorange rejection behind a new configuration flag
  `Observables.reject_outlier_pseudoranges` (default: true) to prevent
  premature PVT breakage and improve space compatibility.
Align B1C with unified adapters.
- Fold B1C acquisition/tracking/telemetry into PcpsAcquisitionAdapter,
  DllPllTrackingAdapter, and TelemetryDecoderAdapter, and add SPDX author
  headers for the B1C/CNAV1 contribution files.
Fix B1C ICD alignment for eph, TGD, UTC, and PR gating.
Gate CNAV1 publish on IODE/IODC, fix gettgd SYS_BDS selection,
correct LS/LSF and UTC scales, and drop the MEO-biased PR median cut.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:17 +08:00
OuWenhao16 77f2c18f01 Add BeiDou B1C (signal 1D) signal processing and CNAV1 support.
Integrate acquisition, pilot/data tracking, B-CNAV1 telemetry decoding, and
PVT/RINEX hooks on upstream/next with minimal changes to shared blocks.
Includes example configuration, code generators, and unit tests.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-08-01 02:32:08 +08:00
Carles Fernandez 347e6b71da Bump max version of CMake to 4.4 2026-07-31 20:03:06 +02:00
Carles Fernandez cb2c955151 Do not plot CN0 initialization to zero 2026-07-28 10:16:22 +02:00
Carles Fernandez dffad39802 Fix formatting 2026-07-15 01:49:50 +02:00
Carles Fernandez 5e14095728 Improve consistency in binary operation token representation 2026-07-15 01:43:41 +02:00
Carles Fernandez 80d24ee105 Fix vanishing correlation peak in acquisition grid plots of long codes 2026-07-05 13:50:21 +02:00
Carles Fernandez d332fdbb21 Improve Python observables plots 2026-06-26 10:36:12 +02:00
Carles Fernandez 60a1c43f2b Add titles in some Python plots 2026-06-26 08:59:15 +02:00
Carles Fernandez 95ad7d19ec Add possibility to infer Python plot defaults from GNSS-SDR configuration files 2026-06-25 20:49:30 +02:00
minhaj 16cf5e7753 While testing, I found the old version of this script had an old bug.
For some reason, the old script calculated "mean()" of PRN numbers
in a tracking channel. E.g., channel 1 tracked PRN 3 for few seconds,
then tracked PRN 16 for the rest. The script would add legend PRN 9
(3+16)/2 = .... Fixed that and added "PRN-wise tracking indicator" in
addition to the existing "channel-wise tracking indicator"

Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-24 13:01:28 +02:00
minhaj 63e77ef15b got some rinex file from Alabama CORS network, which had capital .26N, .26O,
added those cases to the gitignore.

Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-24 13:01:28 +02:00
minhaj 96a767d353 for debugging, print-out/write csv for investigating the numbers lib/dll_pll_veml_read_tracking_dump.py
if the file is ran by itself. not sure a separate "dump-to-csv" script is needed.

Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-24 13:01:28 +02:00
Carles Fernandez e438d08c6e Parameterize Python plotting utilities in utils/python 2026-06-23 15:49:25 +02:00
minhaj 43bceb52ff Fix and refactor GPS L1 C/A KF tracking dump reader and plotter.
The KF tracking dump reader now follows the parameters dumped by kf_tracking.cc

lib/gps_l1_ca_kf_read_tracking_dump.py:
- Rewrite using the same _RECORD_FORMAT / _FIELD_NAMES architecture as
  dll_pll_veml_read_tracking_dump.py: one struct.unpack per record and
  EOF handling, dropping the v1..v22 / bytes_shift / seek.

gps_l1_ca_kf_plot_sample.py:
- map innovation -> carr_error; drop r_noise_cov

lib/plotKalman.py, lib/plotTracking.py:
- Skip the "Estimated Noise Variance" panel when r_noise_cov is absent.
- Replace fig.canvas.set_window_title() with
  fig.canvas.manager.set_window_title(). The canvas method was deprecated
  in matplotlib 3.4 and is gone in current matplotlib (3.6.3 here), where
  it raised AttributeError. Ref: https://github.com/raysect/source/issues/383

Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-19 23:10:01 -05:00
minhaj ec718c6e64 The dll_pll_veml_read_tracking_dump.py file was failing as it didn't read last
two fields (TOW_ms and WN). Probably because this file was written at a time when
these fields were not present in the tracking dump.
This commit fixes that, and plot_tracking_quality_indicator.py is operational now.
This script now also lays out a _RECORD_FORMAT such that it is easily maintainable
if the structure changes again in future in the dll_pll_veml_tracking.cc
Thanks!

Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-19 17:29:08 -05:00
minhaj 2693aa48f9 drop import sys; no longer used
Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-19 16:35:52 -05:00
minhaj 06fb7f0d11 Improved plot_acq_grid.py utility.
- Added a plot_positive_acq filter option, to enable plotting only the positive
  acquisitions.
- Improved the file path processing. Previous version used hardcoded character
  offset that will not work if someone sets custom dump prefix. Now we use
  python's built-in pathlib and split-parse using the "_" separator.
- The scripts used to use two different ways of encoding system,channel,chips,
  one with python dict another with massive if-else nest. This has been uniformed.
- The script used to assume all files in the dump folder would be acquisition dump
  but now we filter for acq dumps using pathlib's glob()

Signed-off-by: minhaj <minhaj.sixbyte@gmail.com>
2026-06-19 16:35:47 -05:00
Carles Fernandez 154f8d0f8c CMake: improve consistency in variable usage 2026-06-17 12:57:15 +02:00
Carles Fernandez 011aed587d Merge branch 'fix-e6-obs' into next 2026-06-14 08:44:23 +02:00
Carles Fernandez 4e2d0d4b30 CMake: Fix incorrect find_program result checks 2026-06-13 12:34:04 +02:00
Carles Fernandez 0e6253596d CMake: Use GNUInstallDirs variables for all install destinations
This fixes packaging on distributions that do not use a plain share/bin layout
2026-06-10 08:12:25 +02:00
Carles Fernandez 931d5a7951 Fix formatting 2026-05-25 17:41:06 +02:00
Carles Fernandez ae0fd9cf51 Merge branch 'next' into has-fixes 2026-05-25 17:23:40 +02:00
Carles Fernandez 67b7bd27e9 Avoid throwing exceptions in main() 2026-05-25 10:49:29 +02:00
Carles Fernandez 4c07ea70eb Fix formatting 2026-05-24 23:34:19 +02:00
Carles Fernandez 8fdc751b90 Fix formatting 2026-05-24 23:27:49 +02:00
Carles Fernandez 2f010f0161 Do not throw an exception when we should not 2026-05-24 22:48:49 +02:00
Mathieu Favreau 8f29c4f88e Cleanup custom acquisition adapters 2026-05-19 20:04:16 +00:00
Mathieu Favreau 6ca540ff6f Cleanup gnss factory to remove class 2026-05-12 21:25:27 +00:00
Carles Fernandez e82624d981 CMake: improve portability and robustness
Refactor Python detection
Improve imported target handling
Improve version detection
Improve naming consistency
2026-04-19 15:28:57 +02:00
Carles Fernandez af769eff56 Bump max version of CMake to 4.3 2026-03-28 07:24:05 +01:00
Carles Fernandez f47eef5a44 Fix synch parameters in L2C example 2026-02-17 17:00:19 +01:00