This is a maintenance and bug fix release, with the addition of some minor features. Most relevant changes with respect to the former release are listed below:
Improvements in Availability:
- Added the reading of reduced clock and ephemeris data (CED) in the Galileo E1B INAV message introduced in Galileo OS SIS ICD Issue 2.0. If the reduced CED is available before the full ephemeris set, it is used for PVT computation until the full set has not yet been received. This can contribute to shortening the Time-To-First-Fix. Still experimental.
- Added the exploitation of the FEC2 Erasure Correction in the Galileo E1B INAV
message introduced in Galileo OS SIS ICD Issue 2.0. This can contribute to
shortening the Time-To-First-Fix. Since the added computational cost could
break some real-time configurations, this feature is disabled by default. It
can be activated from the configuration file by adding
- Reduction of the TTFF in GPS L1 and Galileo E1 by improving the frame synchronization mechanism.
Improvements in Maintainability:
- The Contributor License Agreement (CLA) signing for new contributors has been replaced by a Developer’s Certificate of Origin (DCO), which implies that contributed commits in a pull request need to be signed as a manifestation that contributors have the right to submit their work under the open source license indicated in the contributed file(s) (instead of asking them to sign the CLA document).
- Improved handling of changes in GNU Radio 3.9 FFT API.
- Improved handling of the filesystem library.
- Added an abstract class
SignalSourceInterfaceand a common base class
SignalSourceBase, which allow removing a lot of duplicated code in Signal Source blocks, and further abstract file-based interfaces behind them.
- Do not apply clang-tidy fixes to protobuf-generated headers.
- Refactored private implementation of flow graph connection and disconnection for improved source code readability.
- Added a base class for GNSS ephemeris, saving some duplicated code and providing a common nomenclature for ephemeris’ parameters. New generated XML files make use of the new parameters’ names.
- Update GSL implementation to 0.38.1. See https://github.com/gsl-lite/gsl-lite/releases/tag/v0.38.1
- Update references to the latest GPS ICDs (IS-GPS-200M, IS-GPS-800H, IS-GPS-705H) published in May, 2021.
Improvements in Portability:
- Avoid collision of the
cpu_featureslibrary when installing the
volk_gnsssdrlibrary on its own, and VOLK has already installed its version. Added a new building option
ENABLE_OWN_CPUFEATURES, defaulting to
gnss-sdrbut defaulting to
OFFwhen building a stand-alone version of
volk_gnsssdr. When this building option is set to
ON, it forces the building of the local version of the
cpu_featureslibrary, regardless of whether it is already installed or not.
<policy_max>version bumped to 3.21. The minimum CMake version is 2.8.12.
- Fix building when using the Xcode generator, Xcode >= 12 and CMake >= 3.19.
- Fix building of FPGA blocks when linking against GNU Radio >= 3.9 and/or Boost >= 1.74.
- Fix linking of the
<filesystem>library when using GCC 8.x and GNU Radio >= 3.8.
- If the Matio library is not found, now it is configured and built by CMake instead of using autotools.
- Added support for Apple M1 AArch64 architecture processor and for FreeBSD on x86, improved AMD microarchitecture detection.
- CMake now selects the C++23 standard if the environment allows for it.
- Improved detection of Gnuplot and
- NEON kernel implementations of the
volk_gnsssdrlibrary are now enabled in aarch64 architectures.
Improvements in Reliability:
- Bug fix in the Galileo E1/E5 telemetry decoder that produced incorrect timing information if a satellite is lost and then readquired.
- Check satellites’ health status. If a satellite is marked as not healthy in its navigation message, the corresponding observables are not used for navigation.
Improvements in Usability:
- Added a new
Fifo_Signal_Sourceimplementation that allows using a Unix FIFO as a signal source, thus allowing to multiplex signal streams outside of
gnss-sdr, letting another program hold access to the receiver, or allowing signal sources that are not supported by
gnss-sdrbut can dump the signal to a FIFO.
- Avoid segmentation faults in the flow graph connection and/or starting due to some common inconsistencies in the configuration file.
- Provide hints to the user in case of failed flow graph connection due to inconsistencies in the configuration file.
- Fix segmentation fault if the RINEX output was disabled.
- Added a feature that optionally enables the remote monitoring of GPS and Galileo ephemeris using UDP and Protocol Buffers.
- Now building the software passing the
-DENABLE_FPGA=ONto CMake does not make the receiver unusable when running on non-FPGA-enabled platforms. On FPGA-enabled platforms, now it is possible to run non-FPGA-enabled configurations.
- Fix bug that made the Monitor block to always set to 0 the
Labsat_Signal_Sourceimplementation of the
SignalSourceblock now can read files in the LabSat 3 Wideband format (
.LS3W). When using this format, this source block can provide multiple RF chain outputs.
Receiver.sources_countconfiguration parameter name by
GNSS-SDR.num_sources. The former parameter name is still read to ensure backward compatibility with configuration files using that nomenclature.
- Fix bug in searching for gr-iio when CMake was re-run several times with
different settings for the
- Fix building when using UHD >= v188.8.131.52.
- Fix building for
-DENABLE_PLUTOSDR=ONwhen the built-in gr-iio module introduced in GNU Radio 3.10 is found. This in-tree GNU Radio module takes precedence over the gr-iio package provided at https://github.com/analogdevicesinc/gr-iio. If the GNU Radio module is found, the other one is ignored.
changelog.mdrenamed to the more usual
- New global configuration parameter
GNSS-SDR.observable_interval_ms, set by default to 20 [ms], allows to control the internal rate at which computed observables sets are processed (50 observables sets per second by default).
- Fix bug in the
Monitor.decimation_factorparameter, which was not working properly for other values than 1.
In order to make GNSS-SDR more easily referenced, and to promote reproducible research, each software release gets a Digital Object Identifier provided by Zenodo. The DOI for GNSS-SDR v0.0.15 is 10.5281/zenodo.5242839.