Álvaro Cebrián Juan;
Andrés Cecilia Luque;
This release has several improvements in different dimensions, addition of new features and bug fixes:
Improvements in Accuracy:
Improved accuracy of the C/N0 estimator.
Improvements in Availability:
Fixed computation of acquisition threshold when using the Acquisition_XX.pfa
configuration parameter, including non-coherent accumulation
(Acquisition_XX.max_dwells > 1).
Improvements in Efficiency:
Faster implementation of the Viterbi decoder for Galileo navigation messages.
The -O3 flag is now passed to GCC in Release and RelWithDebInfo build
types (instead of -O2), thus enabling tree vectorization. Disabled if
building for Fedora or Gentoo.
Improvements in Flexibility:
New Tracking parameters allow the configuration of the C/N0 and lock detector
smoothers, as well as the activation of the FLL in pull-in and steady state
Added new Tracking parameter Tracking_XX.carrier_aiding, allowing
enabling/disabling of carrier aiding to the code tracking loop.
New PVT parameter PVT.enable_rx_clock_correction allows to enable or disable
the continuous application of the Time solution correction (clock steering) to
the computation of Observables. By default is set to false (that is,
New PVT parameter PVT.max_clock_offset_ms: if
PVT.enable_rx_clock_correction is set to false, this parameter sets the
maximum allowed local clock offset with respect to the Time solution. If the
estimated offset exceeds this parameter, a clock correction is applied to the
computation of Observables.
Fixed L5 and E5a receiver chains when tracking the data component.
Added new PVT configuration parameter PVT.rinex_name to specify a custom
name of the generated RINEX files. A commandline flag --RINEX_name is also
available, and overrides the configuration.
Improvements in Interoperability:
Fixed PVT solution in receivers processing L1 plus L2C and/or L5 signals.
Fixed the initialization of the carrier phase accumulator. Carrier phase
measurements are now usable to compute integer ambiguity resolution.
Added carrier phase observable initialization to match the pseudorange length.
Fixed bugs in the decoding of BeiDou navigation messages.
Fixed bugs in the generation of RTCM messages.
Fixed a bug in feeding Galileo channels' observations to RTKLIB, which was
causing wrong date of PVT fixes in Galileo-only receivers and not considering
Galileo observations in multi-constellation receivers when using signals after
the GPS rollover on April 6, 2019.
Improved management of devices with the AD9361 RF transceiver.
Fixed bugs in FPGA off-loading.
Improvements in Maintainability:
Rewriting of acquisition and tracking adapters, thus avoiding a lot of code
New CMake option -DENABLE_ARMA_NO_DEBUG defines the macro ARMA_NO_DEBUG,
which disables all run-time checks, such as bounds checking, in the Armadillo
library. This will result in faster code. This option is disabled by default
during development, but automatically set to ON if the option
ENABLE_PACKAGING is set to ON.
Apply more clang-tidy checks related to readability:
Fixed raised warnings.
Fixed a number of defects detected by cpplint.py. Filters applied:
+build/class, +build/c++14, +build/deprecated,
+build/printf_format, +build/storage_class, +readability/constructors,
+readability/namespace, +readability/newline, +readability/utf8,
+runtime/casting, +runtime/explicit, +runtime/indentation_namespace,
+runtime/member_string_references, +runtime/memset, +runtime/operator,
+runtime/printf, +runtime/printf_format, +whitespace/blank_line.
clang-format can now be applied to the whole code tree without breaking
Added more check options to .clang-tidy file.
Default Python version is now >= 3.4. Python 2.7 still can be used in systems
where Python 3 is not available (e.g., CentOS 7, Debian 8, Ubuntu 10.04).
CMake now passes the -DCMAKE_BUILD_TYPE (or configuration in
multi-configuration generators like Xcode) to modules built along gnss-sdr
(e.g, the volk_gnsssdr library and googletest). Build types available: None,
Release (by default), Debug, RelWithDebInfo, MinSizeRel, Coverage,
NoOptWithASM, O2WithASM, O3WithASM, ASAN.
Fix runtime errors when compiling in Debug mode on macOS.
Updated links in comments along the source code and in CMake scripts.
Fixed cpplint.pyruntime/printf and runtime/explicit errors.
All constructors callable with one argument are marked with the keyword
explicit. See MISRA C++:2008, 12-1-3 - All constructors that are callable with
a single argument of fundamental type shall be declared explicit.
Improvements in Repeatability:
Added the option to apply carrier smoothing of code pseudoranges with new
Observables parameter Observables.enable_carrier_smoothing.
Fixed normalization of DLL discriminator in BPSK modulations when the spacing
between correlators was not 0.5.
Improvements in Testability:
Add receiver runtime to position_test report.
Improvements in FPGA unit tests.
Add new utility tool obsdiff to perform single and double differences
computations from observation RINEX files. Requires GPSTk and Armadillo >=
Improvements in Usability:
A new global parameter GNSS-SDR.pre_2009_file allows to process raw sample
files containing GPS L1 C/A signals dated before July 14, 2009.
Improved DLL-PLL binary dump MATLAB/Octave plot script. Old versions removed.
Simplified RTKLIB error log.
Added a Python 3 plotting script to show relative performance of generic
volk_gnsssdr kernels wrt SIMD fastest versions.
Added reporting of velocity in the terminal.
Added reporting of user clock drift estimation, in ppm, in the Pvt_Monitor and
in internal logging (Debug mode).
Updated documentation generated by Doxygen, now the pdfmanual target works
when using ninja.
CMake now generates an improved summary of required/optional dependency
packages found and enabled/disabled features, including the building system
and GNSS-SDR, CMake and compiler versions. This info is also stored in a file
called features.log in the building directory.
Markdown files have been wrapped to 80 characters line length to make it
easier to read them from the terminal.