3 minute read

This release has several improvements, addition of new features and bug fixes in many dimensions.

Improvements in Accuracy:

  • Major rewriting in the generation of pseudoranges.
  • Fixed bug in Galileo E5a/I codes.
  • Fixed bug in Galileo E1 correlator spacing.
  • Fixed bug that was causing errors in receivers above the troposphere.
  • Fixed 16-bit complex resampler.
  • Improved time tracking algorithm.
  • Added Bancroft’s algorithm implementation for PVT initialization.

Improvements in Availability:

  • Improved numerical stability of the PVT solution. The infamous bug that was causing apparently random error peaks has finally been fixed.

Improvements in Efficiency:

  • VOLK_GNSSSDR: Added NEON, AVX and unaligned protokernels for volk_gnsssdr_32f_index_max_32 kernel.
  • VOLK_GNSSSDR: Added volk_gnsssdr-config-info to the list of generated executables.

Improvements in Flexibility:

  • Added maximum number of dwells in the Tong algorithm.

Improvements in Interoperability:

  • Added six new Galileo satellites: FM7, FM10, FM11, FM12, FM13, FM14.
  • The Hybrid_Observables and Hybrid_PVT implementations can now handle more types of GNSS signals.
  • The RINEX printer can now print L2C and E5a observables and navigation files, including multiband configurations.
  • Added RTCM 3.2 output to more receiver configurations.

Improvements in Maintainability:

  • The VOLK_GNSSSDR library can now be built with Python 3. Switched dependencies for VOLK_GNSSDR: from (old, python2.7-only) python-cheetah templates to Python3 friendly python-mako and python-six. So, Python-cheetah dependency has been dropped, and python-mako and python-six have been added.
  • If suitable versions of gflags, glog, armadillo or googletest are not found in the system, they will be downloaded and built at compile time (versions 2.2.0, 0.3.4, 7.600.2 and 1.8.0, respectively).
  • Fixed more than 30 defects detected by Coverity Scan.
  • Added CMake Python finder and module checker.
  • Deleted files related to CPack.
  • Fixes, updates and improvements in the documentation.
  • Improvements in CMake scripts: General code cleaning and addition of comments. Improved user information in case of failure. Improved detection of dependencies in more processor architectures (e.g., aarch64).

Improvements in Marketability:

  • Reduced time from a commit to deployment (see virtualization mechanisms in Portability).

Improvements in Portability:

Improvements in Scalability:

  • Fixed bug in acquisition with data rates higher than 16 Msps in 4ms code periods.

Improvements in Testability:

  • Major QA source code refactoring: they have been split into src/tests/unit-tests and src/tests/system-tests folders. They are optionally built with the ENABLE_UNIT_TESTING=ON (unit testing QA code), ENABLE_UNIT_TESTING_EXTRA=ON (unit tests that require extra files downloaded at configure time), ENABLE_SYSTEM_TESTING=ON (system tests, such as measurement of Time-To-First-Fix) and ENABLE_SYSTEM_TESTING_EXTRA=ON (extra system test requiring external tools, automatically downloaded and built at building time) configuration flags. The EXTRA options also download and build a custom software-defined signal generator and version 2.9 of GPSTk, if not already found on the system. Download and local link of version 2.9 can be forced by ENABLE_OWN_GPSTK=ON building configuration flag. Only ENABLE_UNIT_TESTING is set to ON by default.
  • Unit tests added: CPU_multicorrelator_test and GPU_multicorrelator_test measure computer performance in multicorrelator setups.
  • Extra unit tests added: GpsL1CADllPllTracking and GpsL1CATelemetryDecoderTest.
  • System test added: ttff_gps_l1 performs a set of cold / assisted runs of the software receiver and computes statistics about the obtained Time To First Fix.
  • Extra system test added: obs_gps_l1_system_test uses an external software-defined signal generator to produce raw digital GNSS signal from a RINEX navigation file and a position (static or dynamic), processes it with GNSS-SDR, and then compares the RINEX observation file produced by the software receiver to that produced by the signal generator.
  • Software Development Kit provided for embedded devices (see https://gnss-sdr.org/docs/tutorials/cross-compiling/).

Improvements in Usability:

  • Now the block factory automatically detects Channel input data type, so it is no longer required to specify Channel.input_type in the configuration. An error raises if Acquisition and Tracking Blocks are not configured with the same input data type.
  • Block names changed from L2_M to L2C.
  • Documentation available at https://gnss-sdr.org/docs/
  • Improved tools for compilation, execution and testing in embedded devices.

As usual, compressed tarballs are available from GitHub and Sourceforge.

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.9 is 10.5281/zenodo.291371.



Leave a comment