GNSS-SDR v0.0.9 released
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
andHybrid_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:
- Now GNSS-SDR can be run in virtual environments through snap packages (see https://github.com/carlesfernandez/snapcraft-sandbox) and docker images (see https://github.com/carlesfernandez/docker-gnsssdr).
- Now GNSS-SDR is adapted to cross-compiling environments for embedded devices (see https://github.com/carlesfernandez/oe-gnss-sdr-manifest).
- BLAS and LAPACK libraries are not longer mandatory on ARM devices.
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 theENABLE_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) andENABLE_SYSTEM_TESTING_EXTRA=ON
(extra system test requiring external tools, automatically downloaded and built at building time) configuration flags. TheEXTRA
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 byENABLE_OWN_GPSTK=ON
building configuration flag. OnlyENABLE_UNIT_TESTING
is set to ON by default. - Unit tests added:
CPU_multicorrelator_test
andGPU_multicorrelator_test
measure computer performance in multicorrelator setups. - Extra unit tests added:
GpsL1CADllPllTracking
andGpsL1CATelemetryDecoderTest
. - 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
toL2C
. - 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