GNSS-SDR, an open-source software-defined GNSS receiver
CITATION.cff
file.This release provides bug fixes and new features. The most relevant changes with respect to the former release are listed below:
flag_geohash_log_out
) that enables or disables the Position Geohash tag output in INFO log files. Set to false
by default.monitor_pvt.proto
:
utc_time
(a RFC 3339 datetime string),vel_e
, vel_n
, and vel_u
), in m/s,cog
, in degrees,galhas_status
:
geohash
, an encoded geographic location.cpu_features
library to v0.9.0.volk_gnsssdr
: fix syntax for Python 3.12 without breaking backward compatibility with Python 2.7.volk_gnsssdr
arising from incompatibility between complex numbers in C and C++.arm64
processor architecture.PVT.enable_pvt_kf=true
in the configuration file. The user can set values for the measurement and process noise covariances with the following optional parameters (here with their default values): PVT.kf_measures_ecef_pos_sd_m=1.0
, in [m]; PVT.kf_measures_ecef_vel_sd_ms=0.1
, in [m/s]; PVT.kf_system_ecef_pos_sd_m=2.0
, in [m]; and PVT.kf_system_ecef_vel_sd_ms=0.5
, in [m/s].false
by default. You can activate its usage with Galileo_E1B_Telemetry_Decoder=true
in your configuration file.PVT.use_e6_for_pvt=false
, fixing the PVT computation in some multi-band configurations.PVT.enable_monitor=true
) output rate. Before this fix, it was outputting data every 20 ms, instead of observing the PVT.output_rate_ms
setting.PVT.output_rate_ms
(500
ms by default), and can be particularized by PVT.kml_rate_ms
, PVT.gpx_rate_ms
, PVT.geojson_rate_ms
, and PVT.nmea_rate_ms
. Those values should be multiples of PVT.output_rate_ms
, or the least common multiple will be taken.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This release provides bug fixes and new features. The most relevant changes with respect to the former release are listed below:
flag_geohash_log_out
) that enables or disables the Position Geohash tag output in INFO log files. Set to false
by default.monitor_pvt.proto
:
utc_time
(a RFC 3339 datetime string),vel_e
, vel_n
, and vel_u
), in m/s,cog
, in degrees,galhas_status
:
geohash
, an encoded geographic location.cpu_features
library to v0.9.0.volk_gnsssdr
: fix syntax for Python 3.12 without breaking backward compatibility with Python 2.7.volk_gnsssdr
arising from incompatibility between complex numbers in C and C++.arm64
processor architecture.PVT.enable_pvt_kf=true
in the configuration file. The user can set values for the measurement and process noise covariances with the following optional parameters (here with their default values): PVT.kf_measures_ecef_pos_sd_m=1.0
, in [m]; PVT.kf_measures_ecef_vel_sd_ms=0.1
, in [m/s]; PVT.kf_system_ecef_pos_sd_m=2.0
, in [m]; and PVT.kf_system_ecef_vel_sd_ms=0.5
, in [m/s].false
by default. You can activate its usage with Galileo_E1B_Telemetry_Decoder=true
in your configuration file.PVT.use_e6_for_pvt=false
, fixing the PVT computation in some multi-band configurations.PVT.enable_monitor=true
) output rate. Before this fix, it was outputting data every 20 ms, instead of observing the PVT.output_rate_ms
setting.PVT.output_rate_ms
(500
ms by default), and can be particularized by PVT.kml_rate_ms
, PVT.gpx_rate_ms
, PVT.geojson_rate_ms
, and PVT.nmea_rate_ms
. Those values should be multiples of PVT.output_rate_ms
, or the least common multiple will be taken.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This release provides bug fixes and new features. Most relevant changes with respect to the former release are listed below:
PVT.use_has_corrections
, set to true
by default, can be used to deactivate the application of HAS corrections but still retrieve the HAS data if set to false
.Acquisition_XX.blocking=false
.PVT.bancroft_init=false
in your configuration file.ZMQ_Signal_Source
for working with streams of samples published via ZeroMQ.Labsat_Signal_Source
. This fix is only available if gnss-sdr is linked against Boost >= 1.58.0.lapack
port dependency installed with the +openblas
variant does not install blas
but openblas
, which is used as a replacement if blas
is not found).-DENABLE_FPGA=ON
building option).gnss-sdr
binary and/or the GNU Radio libraries were built with the -D_GLIBCXX_ASSERTIONS
compiler option. This is added by default in some GNU/Linux distributions (e.g., ArchLinux and Fedora).-DENABLE_OWN_GLOG
, -DENABLE_OWN_ARMADILLO
, and -DENABLE_OWN_GNSSTK
can now be switched ON
and OFF
without the need to start from an empty buiding folder.volk_gnsssdr
if the corresponding environment variables are defined. This fixes warnings in some packaging systems.very-long-line-length-in-source-file
warnings since those files were not recognized as binaries. The configuration flag -DENABLE_PACKAGING=ON
passed to CMake deactivates file downloading.ENABLE_GENERIC_ARCH
building option was removed, simplifying the process of buiding the software in non-x86 processor architectures.GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking
and GLONASS_L2_CA_DLL_PLL_C_Aid_Tracking
implementations.UHD_Signal_Source
learned a new parameter otw_format
for setting the over-the-wire data format (that is, the format used between the device and the UHD) in some devices, thus allowing to select the sc8
format instead of the default sc16
. This would reduce the dynamic range and increase quantization noise, but also reduces the load on the data link and thus allows for more bandwidth.UHD_Signal_Source
learned another two optional parameters: device_recv_frame_size
and device_num_recv_frames
for overriding transport layer defaults.Osmosdr_Signal_Source
implementation of a SignalSource
.Osmosdr_Signal_Source
implementation learned a new parameter if_bw
to manually set the bandwidth of the bandpass filter on the radio frontend.Channels_XX.RF_channel_ID
allows to specify the signal source per channel group.PVT.use_unhealthy_sats
, set by default to false
, allows processing observables of satellites that report an unhealthy
status in the navigation message if set to true
.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This release provides minor bug fixes, new features, and compatibility with GNU Radio 3.10.2.0. Most relevant changes with respect to the former release are listed below:
cpu_features
library to v0.7.0. The building option ENABLE_OWN_CPUFEATURES
has been replaced by ENABLE_CPUFEATURES
, defaulting to ON
.src/utils/scripts/download-galileo-almanac.sh
that downloads an XML file with the latest Galileo almanac published by the European GNSS Service Centre at https://www.gsc-europa.eu/product-almanacs
See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This release adds new features and fixes some bugs. Most relevant changes with respect to the former release are listed below:
Limesdr_Signal_Source
for interoperability with LimeSDR (requires gr-limesdr and the -DENABLE_LIMESDR=ON
building flag).cppcoreguidelines-prefer-member-initializer
clang-tidy check to enforce this policy.cpplint
job on GitHub: Added the build/include_what_you_use
filter for early detection of missing includes.clang-tidy
job on GitHub: More robust detection of LLVM paths installed by homebrew.cpu_features
library for improved processor detection.NavDataMonitor.enable_monitor=true
, NavDataMonitor.client_addresses=127.0.0.1
and NavDataMonitor.port=1237
in the configuration file. Format described in the nav_message.proto
file. A simple listener application written in C++ is included in src/utils/nav-listener
as an example.TelemetryDecoder_XX.dump_crc_stats=true
and, optionally, TelemetryDecoder_XX.dump_crc_stats_filename=./crc_stats
in the configuration file. At the end of the processing (or exiting with q
+ [Enter]
), the CRC check success rate will be reported in a file.UHD_Signal_Source
learned to dump data in folders that do not exist, e.g., if SignalSource.dump=true
, SignalSource.dump_filename=./non-existing/data.dat
, and the non-existing
folder does not exist, it will be created if the running user has writing permissions. This also works for absolute paths.PVT.rtk_trace_level
that sets the logging verbosity level of the RTKLIB library.Flag_PLL_180_deg_phase_locked
in the monitor output that indicates if the PLL got locked at 180 degrees, so the symbol sign is reversed.Channels.in_acquisition
, cannot be larger than the total number of channels. The program will stop if those requirements are not met in the configuration file.File_Signal_Source
and extended integration times.Fifo_Signal_Source
Signal Source implementation learned to handle the ibyte
type.CITATION.cff
file.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
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:
TelemetryDecoder_1B.enable_reed_solomon=true
.SignalSourceInterface
and 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.cpu_features
library when installing the volk_gnsssdr
library on its own, and VOLK has already installed its version. Added a new building option ENABLE_OWN_CPUFEATURES
, defaulting to ON
when building gnss-sdr
but defaulting to OFF
when 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_features
library, regardless of whether it is already installed or not.<policy_max>
version bumped to 3.21. The minimum CMake version is 2.8.12.<filesystem>
library when using GCC 8.x and GNU Radio >= 3.8.gnss_sim
when cross-compiling.volk_gnsssdr
library are now enabled in aarch64 architectures.Fifo_Signal_Source
implementation 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-sdr
but can dump the signal to a FIFO.-DENABLE_FPGA=ON
to 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.carrier_phase_rads
parameter value.Labsat_Signal_Source
implementation of the SignalSource
block 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_count
configuration parameter name by GNSS-SDR.num_sources
. The former parameter name is still read to ensure backward compatibility with configuration files using that nomenclature.-DENABLE_FMCOMMS2
or -DENABLE_PLUTOSDR
building options.-DENABLE_FMCOMMS2=ON
and/or -DENABLE_PLUTOSDR=ON
when 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.md
renamed to the more usual CHANGELOG.md
uppercase name.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).Monitor.decimation_factor
parameter, which was not working properly for other values than 1.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This is a maintenance and bug fix release. Most relevant changes with respect to the former release are listed below:
Acquisition_XX.threshold
was set but Acquisition_XX.pfa
was not, causing
false locks.Pulse_Blanking_Filter
, Notch_Filter
and
Notch_Filter_Lite
.SignalConditioner
block when its implementation is set to
Pass_Through
.gnss_shared_ptr
, which allows to
handle the boost::shared_ptr
to std::shared_ptr
transition in GNU Radio
3.9 API more nicely.volk_gnsssdr
library
kernels at compile time.bugprone-reserved-identifier
, and
added to the checks list. This check corresponds to CERT C Coding Standard
rule DCL37-C as well as its C++ counterpart, DCL51-CPP.readability-make-member-function-const
and readability-qualified-auto
.-DENABLE_OWN_GLOG=ON
building option when gflags is installed and it
is older than v2.1.2 (e.g., in CentOS 7).google::
by gflags::
namespace when using functions of the gflags
library.git://
by https://
as the used protocol when downloading Gflags,
so it can work through firewalls requiring authentication.volk_gnsssdr
library had its own CPU feature detection methods,
which were not totally reliable and difficult to implement across compilers and OSes.
This is now handled by the cpu_features
library, thus building upon that
expertise. Since that library has higher dependency version requirements than
GNSS-SDR, the old method is still used in old development environments. No
extra dependency is needed. This change is transparent to the user, since
everything is managed by the CMake scripts.volk_gnsssdr
library can be built on Microsoft Windows and can execute
SIMD instructions on that OS._mm256_zeroupper()
in the volk_gnsssdr
library,
since they are not required and lead to miscompilation with GCC 10.2 and
optimization level -O3
.-DENABLE_CUDA=ON
for blocks implemented with CUDA.SignalConditioner.implementation=Pass_Through
, then all the configuration
parameters for the DataTypeAdapter
, InputFilter
and Resampler
blocks are
ignored. This was the default behavior in GNSS-SDR v0.0.12, but it changed in
v0.0.13. This change recovers the old behavior.q
+ [Enter]
keys if
Acquisition_XX.blocking=false
.q
+ [Enter]
keys when using the
Osmosdr_Signal_Source
implementation of the SignalSource
block.Labsat_Signal_Source
implementation of the SignalSource
block now can
be throttled with the new parameters SignalSource.enable_throttle_control
and SignalSource.throttle_frequency_sps
, thus allowing the emulation of
real-time operation.Custom_UDP_Signal_Source
implementation now accepts
SignalSource.sample_type=cfloat
, in addition to the existing 4 and 8-bit
length sample types.obsdiff
and rinex2assist
utilities when installed if they were
built with a locally downloaded version of GPSTk.ENABLE_EXTERNAL_MATHJAX
, set to ON
by default. If set to OFF
, it allows
using a local installation of MathJax 2.TelemetryDecoder_XX.dump=true
, the resulting
.dat
binary file is also delivered in .mat
format, which is readable from
Matlab and Python.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This is a maintenance release which includes bug fixes, compatibility with the most recent compiler versions, some code optimization and the addition of minor new features. Most relevant changes with respect to the former release are listed below:
Gnss_Synchro
objects by reducing the amount of
copying via adding noexcept
move constructor and move assignment operators,
so the move semantics are also used in STL containers.std::endl
have been replaced by the '\n'
character, since there is no
need to always flush the stream.ENABLE_STRIP
to generate stripped binaries (that is,
without debugging symbols), smaller in size and potentially providing better
performance than non-stripped counterparts. Only for GCC in Release build
mode. Set to OFF
by default.std::make_unique
for buildings with C++11, and make use of
it along the source code.GNSSBlockFactory
class public API
and internal implementation.Pvt_Solution
class.-fcommon
to -fno-common
, causing an error due to multiple defined lambda functions).ENABLE_CLANG_TIDY
option; better GFORTRAN module; and broader adoption of
the modern per-target approach.std::span
if the compiler supports it, and use gsl-lite as a
fallback. The latter has been updated to version 0.37.0.None
. This allows packaging in some distributions that pass an arbitrary
name as the build type (e.g., Gentoo) to avoid unexpected compiler flags. The
building option ENABLE_PACKAGING
must be set to ON
when packaging.ENABLE_BENCHMARKS
, which activates the building of
benchmarks for some code snippets, making it easier to developers to benchmark
different implementations for the same purpose. Set to OFF
by default../thirdparty
folder under the building directory. In
case of an out-of-source-tree build, the generated binaries are stored in an
./install
folder, also under the building directory. The old behavior for
generated binaries is maintained if the building is done from any source tree
subfolder (for instance, gnss-sdr/build
): in that case, binaries are stored
in the source tree (under gnss-sdr/install
).GNSS-SDR.GPS_banned_prns
, GNSS-SDR.Galileo_banned_prns
,
GNSS-SDR.Glonass_banned_prns
and GNSS-SDR.Beidou_banned_prns
configuration
parameters. The user can specify lists of satellites that will not be
processed (e.g., GNSS-SDR.Galileo_banned_prns=14,18
since Galileo E14 and
E18 satellites are not usable for PVT). Satellites on those lists will never
be assigned to a processing channel.-DENABLE_LOG=OFF
, which strips internal logging
from the binary and can help to reduce its size and ultimately to speed up the
receiver. In binaries with enabled logging, it still can be disabled by
passing the command line flag --minloglevel=3
to gnss-sdr
. This can be
relevant in embedded devices with scarce storage capabilities.samples
parameter accepts values up to 2^64-1, that is,
18,446,744,073,709,551,615 samples.PVT.nmea_dump_devname
parameter was ignored).See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This release has several improvements in different dimensions, addition of new features and bug fixes:
Acquisition_XX.pfa
configuration parameter, including non-coherent accumulation
(Acquisition_XX.max_dwells
> 1).-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.Tracking_XX.carrier_aiding
, allowing
enabling/disabling of carrier aiding to the code tracking loop.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,
disabled).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.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.-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
.-Wshadow
to the compiler have
been fixed (see https://rules.sonarsource.com/cpp/RSPEC-1117?search=shadow and
MISRA C++:2008, 2-10-2 - Identifiers declared in an inner scope shall not hide
an identifier declared in an outer scope).readability-avoid-const-params-in-decls
,
readability-braces-around-statements
, readability-isolate-declaration
,
readability-redundant-control-flow
, readability-uppercase-literal-suffix
.
Fixed raised warnings.cpplint.py
. Filters applied:
+build/class
, +build/c++14
, +build/deprecated
,
+build/explicit_make_pair
, +build/include_what_you_use
,
+build/printf_format
, +build/storage_class
, +readability/constructors
,
+readability/namespace
, +readability/newline
, +readability/utf8
,
+runtime/casting
, +runtime/explicit
, +runtime/indentation_namespace
,
+runtime/init
, +runtime/invalid_increment
,
+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
compilation..clang-tidy
file.-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
.Debug
mode on macOS.clang-tidy
has been applied in most
of the source code (some optional blocks and tests are left apart).clang-format
has been applied.cpplint
filters have been applied.prettier
(https://prettier.io/) to check
markdown files formatting.cmakelint
(see https://github.com/richq/cmake-lint).-GXcode
to CMake) without
previous manual installation of volk_gnsssdr.-GXcode
to CMake) without
gflags, glog, matio, PugiXML, Protocol Buffers or googletest previously
installed.aligned_alloc
where available.cmake --warn-uninitialized ..
strcpy
, sprintf
).volk_gnsssdr::vector
allows both aligned memory allocation
and automatic deallocation.clang-analyzer-security.*
,
clang-analyzer-optin.portability.UnixAPI
clang-tidy checks. Fixed raised
warnings.cpplint.py
runtime/printf
and runtime/explicit
errors.Observables.enable_carrier_smoothing
.position_test
report.obsdiff
to perform single and double differences
computations from observation RINEX files. Requires GPSTk and Armadillo >=
9.800.GNSS-SDR.pre_2009_file
allows to process raw sample
files containing GPS L1 C/A signals dated before July 14, 2009.Debug
mode).pdfmanual
target works
when using ninja.features.log
in the building directory.See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
This release has several improvements in different dimensions, addition of new features and bug fixes:
See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/