<p>This release has several improvements in different dimensions, addition of new features and bug fixes:</p> Improvements in Accuracy: <ul> <li>Part of the RTKLIB core library has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes.</li> <li>Fixed CN0 estimation for other correlation times than 1 ms.</li> <li>Improved computation of tracking parameters and GNSS observables.</li> <li>Other minor bug fixes.</li> </ul> Improvements in Availability: <ul> <li>Internal Finite State Machines rewritten for improved continuity in delivering position fixes. This fixes a bug that was stalling the receiver after about six hours of continuous operation.</li> <li>Redesign of the time counter for enhanced continuity.</li> <li>Improved flow graph in multi-system configurations: the receiver does not get stalled anymore if no signal is found from the first system.</li> <li>Improved acquisition and tracking sensitivity.</li> <li>Added mechanisms for Assisted GNSS, thus shortening the Time-To-First-Fix. Provision of data via XML files or via SUPL v1.0. Documented at <a href="https://gnss-sdr.org/docs/sp-blocks/global-parameters/">https://gnss-sdr.org/docs/sp-blocks/global-parameters/</a></li> <li>Other minor bug fixes.</li> </ul> Improvements in Efficiency: <ul> <li>Added the possibility of non-blocking acquisition, which works well when using real-time data from an RF front-end.</li> <li>Improved flow graph in multi-band configurations: satellites acquired in one band are immediately searched in others.</li> <li>Complex local codes have been replaced by real codes, alleviating the computational burden.</li> <li>New volk_gnsssdr kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h</li> <li>Some AVX2 implementations added to the volk_gnsssdr library.</li> <li>Improvement in C++ usage: Use of const container calls when result is immediately converted to a const iterator. Using these members removes an implicit conversion from iterator to const_iterator.</li> <li>Output printers can be shut down, with some savings in memory and storage requirements.</li> <li>A number of code optimizations here and there.</li> </ul> Improvements in Flexibility: <ul> <li>A number of new parameters have been exposed to the configuration system.</li> <li>Possibility to choose Pilot or Data component for tracking of GPS L5 and Galileo E5a signals.</li> <li>Enabled extended coherent integration times for signal tracking.</li> <li>Configurable coherent and/or non-coherent signal acquisition.</li> <li>Some configuration parameters can now be overridden by commandline flags for easier use in scripts.</li> </ul> Improvements in Interoperability: <ul> <li>Added the GPS L5 receiver chain.</li> <li>Added the GLONASS L1 SP receiver chain.</li> <li>Added the GLONASS L2 SP receiver chain.</li> <li>Improvements in the Galileo E5a and GPS L2C receiver chains.</li> <li>Updated list of available GNSS satellites.</li> <li>Added five more signal sources: "Fmcomms2_Signal_Source" (requires gr-iio), "Plutosdr_Signal Source" (requires gr-iio), "Spir_GSS6450_File_Signal_Source", "Labsat_Signal_Source" and "Custom_UDP_Signal_Source" (requires libpcap). Documented in <a href="https://gnss-sdr.org/docs/sp-blocks/signal-source/">https://gnss-sdr.org/docs/sp-blocks/signal-source/</a></li> <li>Improved support for BladeRF, HackRF and RTL-SDR front-ends.</li> <li>Added tools for the interaction with front-ends based on the AD9361 chipset.</li> <li>Intermediate results are now saved in MAT-file format (.mat), readable from Matlab/Octave and from Python via h5py.</li> <li>Added the GPX output format.</li> <li>Improvements in the generation of KML files.</li> <li>Improvements in the NMEA output. The receiver can produce GPGGA, GPRMC, GPGSA, GPGSV, GAGSA and GAGSV sentences.</li> <li>Improvements in the RTCM server stability.</li> <li>Improvements in the correctness of generated RINEX files.</li> <li>The receiver can read and make use of Galileo almanac XML files published by the European GNSS Service Centre at <a href="https://www.gsc-europa.eu/system-status/almanac-data">https://www.gsc-europa.eu/system-status/almanac-data</a></li> <li>Own-defined XML schemas for navigation data published at <a href="https://github.com/gnss-sdr/gnss-sdr/tree/next/docs/xml-schemas">https://github.com/gnss-sdr/gnss-sdr/tree/next/docs/xml-schemas</a></li> <li>Added program rinex2assist to convert RINEX navigation files into XML files usable for Assisted GNSS. Only available building from source. See <a href="https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist">https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist</a></li> </ul> Improvements in Maintainability: <ul> <li>Setup of a Continuous Integration system that checks building and runs QA code in a wide range of GNU/Linux distributions (Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu) and releases. See <a href="https://gitlab.com/gnss-sdr/gnss-sdr">https://gitlab.com/gnss-sdr/gnss-sdr</a></li> <li>Creation of multi-system processing blocks, drastically reducing code duplication and maintainability time.</li> <li>Automated code formatting with clang-format. This tool is widely available and easy to integrate into many code editors, and it also can be used from the command line. It cuts time spent on adhering to the project's code formatting style.</li> <li>Improvement in C++ usage: C-style casts have been replaced by C++ casts. C-style casts are difficult to search for. C++ casts provide compile time checking ability and express programmers' intent better, so they are safer and clearer.</li> <li>Improvement in C++ usage: The override special identifier is now used when overriding a virtual function. This helps the compiler to check for type changes in the base class, making the detection of errors easier.</li> <li>Improvement in C++ usage: A number of unused includes have been removed. Order of includes set to: local (in-source) headers, then library headers, then system headers. This helps to detect missing includes.</li> <li>Improvement in C++ usage: Enhanced const correctness. Misuses of those variables are detected by the compiler.</li> <li>Improved code with clang-tidy and generation of a compile_commands.json file containing the exact compiler calls for all translation units of the project in machine-readable form if clang-tidy is detected.</li> <li>Applied some style rules to CMake scripts.</li> <li>Minimal versions of dependencies identified and detected.</li> </ul> Improvements in Portability: <ul> <li>Several CMake scripts improvements, more verbose outputs in case of errors. Building configuration has been documented in <a href="https://gnss-sdr.org/docs/tutorials/configuration-options-building-time/">https://gnss-sdr.org/docs/tutorials/configuration-options-building-time/</a></li> <li>Improved SDK for cross-compilation in embedded devices. Documented in <a href="https://gnss-sdr.org/docs/tutorials/cross-compiling/">https://gnss-sdr.org/docs/tutorials/cross-compiling/</a></li> <li>Improved control over minimum required versions for core dependencies.</li> <li>The software builds with C++11, C++14 and C++17 standards.</li> <li>The software can now be built using GCC >= 4.7.2 or LLVM/Clang >= 3.4.0 compilers on GNU/Linux, and with Clang/AppleClang on MacOS.</li> <li>The Ninja build system can be used in replacement of make.</li> <li>The volk_gnsssdr library can be built using Python 2.7+ or Python 3.6+.</li> <li>The volk_gnsssdr library is now ready for AArch64 NEON instructions.</li> <li>Improved detection of required and optional dependencies in many GNU/Linux distributions and processor architectures.</li> <li>Improvement in C++ usage: The <ctime> library has been replaced by the more modern and portable <chrono> (except for the interaction with RTKLIB).</li> <li>Improvement in C++ usage: The <stdio.h> library has been replaced by the more modern and portable <fstream> for file handling.</li> <li>Improvement in C++ usage: C++ libraries preferred over C libraries (e.g., <cctype> instead of <ctype.h>, <cmath> instead of <math.h>).</li> <li>Fix compatibility with Boost 1.67 (closes Debian bug #911882 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911882">https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911882</a>)</li> <li>Fixes required by Debian packaging.</li> <li>Fixes required by Macports packaging.</li> <li>A downside in portability: BLAS and LAPACK libraries are now required even in ARM devices.</li> <li>A downside in portability: the matio library >= 1.5.3 is a new required dependency. If not found, it is downloaded and built automatically at building time, but this requires libtool, automake and h
Read more