1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-16 10:09:58 +00:00

Wrap README text into 80 character-length lines, so they are easier to read from the terminal.

Formatted by https://prettier.io/, options: --parser markdown --print-width 80 --prose-wrap always
This commit is contained in:
Carles Fernandez 2020-02-27 18:42:43 +01:00
parent f275091ba4
commit 17a7044add
7 changed files with 1347 additions and 676 deletions

1593
README.md

File diff suppressed because it is too large Load Diff

View File

@ -8,36 +8,45 @@ SPDX-License-Identifier: GPL-3.0-or-later
SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es> SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es>
) )
GNSS-SDR can read assistance data from [Extensible Markup Language (XML)](https://www.w3.org/XML/) files for faster [Time-To-First-Fix](https://gnss-sdr.org/design-forces/availability/#time-to-first-fix-ttff), and can store navigation data decoded from GNSS signals in the same format. This folder provides XML Schemas which describe those XML files structure. GNSS-SDR can read assistance data from
[Extensible Markup Language (XML)](https://www.w3.org/XML/) files for faster
[Time-To-First-Fix](https://gnss-sdr.org/design-forces/availability/#time-to-first-fix-ttff),
and can store navigation data decoded from GNSS signals in the same format. This
folder provides XML Schemas which describe those XML files structure.
[XSD (XML Schema Definition)](https://www.w3.org/XML/Schema) is a World Wide Web Consortium (W3C) recommendation that specifies how to formally describe the elements in an XML document. [XSD (XML Schema Definition)](https://www.w3.org/XML/Schema) is a World Wide Web
Consortium (W3C) recommendation that specifies how to formally describe the
elements in an XML document.
## GPS L1 C/A
GPS L1 C/A - [ephemeris_map.xsd](./ephemeris_map.xsd) - GPS NAV message ephemeris
---------- parameters.
- [iono_model.xsd](./iono_model.xsd) - GPS NAV message ionospheric model
- [ephemeris_map.xsd](./ephemeris_map.xsd) - GPS NAV message ephemeris parameters. parameters.
- [iono_model.xsd](./iono_model.xsd) - GPS NAV message ionospheric model parameters.
- [utc_model.xsd](./utc_model.xsd) - GPS NAV message UTC model parameters. - [utc_model.xsd](./utc_model.xsd) - GPS NAV message UTC model parameters.
- [gps_almanac_map.xsd](./gps_almanac_map.xsd) - GPS NAV message almanac. - [gps_almanac_map.xsd](./gps_almanac_map.xsd) - GPS NAV message almanac.
## GPS L2C and L5
GPS L2C and L5 - [cnav_ephemeris_map.xsd](./cnav_ephemeris_map.xsd) - GPS CNAV message
-------------- ephemeris parameters.
- [cnav_ephemeris_map.xsd](./cnav_ephemeris_map.xsd) - GPS CNAV message ephemeris parameters. ## Galileo
- [gal_ephemeris_map.xsd](./gal_ephemeris_map.xsd) - Galileo ephemeris
Galileo parameters.
------- - [gal_iono_model.xsd](./gal_iono_model.xsd) - Galileo ionospheric model
parameters.
- [gal_ephemeris_map.xsd](./gal_ephemeris_map.xsd) - Galileo ephemeris parameters.
- [gal_iono_model.xsd](./gal_iono_model.xsd) - Galileo ionospheric model parameters.
- [gal_utc_model.xsd](./gal_utc_model.xsd) - Galileo UTC model parameters. - [gal_utc_model.xsd](./gal_utc_model.xsd) - Galileo UTC model parameters.
- [gal_almanac_map.xsd](./gal_almanac_map.xsd) - Galileo almanac. - [gal_almanac_map.xsd](./gal_almanac_map.xsd) - Galileo almanac.
------- ---
Please check https://gnss-sdr.org/docs/sp-blocks/global-parameters/ for more information about the usage of XML files in GNSS-SDR. Please check https://gnss-sdr.org/docs/sp-blocks/global-parameters/ for more
information about the usage of XML files in GNSS-SDR.
You could find useful the utility program [rinex2assist](https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist) for the generation of compatible XML files from recent, publicly available RINEX navigation data files. You could find useful the utility program
[rinex2assist](https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist)
for the generation of compatible XML files from recent, publicly available RINEX
navigation data files.

View File

@ -10,41 +10,39 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
# Welcome to VOLK_GNSSSDR, the Vector-Optimized Library of Kernels for GNSS-SDR # Welcome to VOLK_GNSSSDR, the Vector-Optimized Library of Kernels for GNSS-SDR
VOLK_GNSSSDR is a sub-project of GNSS-SDR. This library provides a set VOLK_GNSSSDR is a sub-project of GNSS-SDR. This library provides a set of extra
of extra kernels that can be used stand-alone or in combination with kernels that can be used stand-alone or in combination with VOLK's. Please see
VOLK's. Please see https://www.libvolk.org for documentation, source code, https://www.libvolk.org for documentation, source code, and contact information
and contact information about the original VOLK library. about the original VOLK library.
The boilerplate of this code was initially generated with The boilerplate of this code was initially generated with `volk_modtool`, an
`volk_modtool`, an application provided by VOLK that creates the application provided by VOLK that creates the skeleton that can then be filled
skeleton that can then be filled with custom kernels. Some modifications with custom kernels. Some modifications were added to accommodate the
were added to accommodate the specificities of Global Navigation specificities of Global Navigation Satellite Systems (GNSS) signal processing.
Satellite Systems (GNSS) signal processing. Those changes are clearly Those changes are clearly indicated in the source code, and do not break
indicated in the source code, and do not break compatibility. compatibility.
This library contains kernels of hand-written SIMD code for different This library contains kernels of hand-written SIMD code for different
mathematical operations, mainly with 8-bit and 16-bit real and complex mathematical operations, mainly with 8-bit and 16-bit real and complex data
data types, offering a platform/architecture agnostic version that will types, offering a platform/architecture agnostic version that will run in all
run in all machines, plus other versions for different SIMD instruction machines, plus other versions for different SIMD instruction sets. Then, the
sets. Then, the application `volk_gnsssdr_profile` runs some application `volk_gnsssdr_profile` runs some iterations of all versions that
iterations of all versions that your machine can execute and annotates your machine can execute and annotates which is the fastest, which will then be
which is the fastest, which will then be selected at runtime when selected at runtime when executing GNSS-SDR. In this way, we can address at the
executing GNSS-SDR. In this way, we can address at the same time same time [portability](https://gnss-sdr.org/design-forces/portability/) (by
[portability](https://gnss-sdr.org/design-forces/portability/) (by creating executables that will run in nearly all processor architectures) and
creating executables that will run in nearly all processor [efficiency](https://gnss-sdr.org/design-forces/efficiency/) (by providing
architectures) and custom implementations specially designed to take advantage of the specific
[efficiency](https://gnss-sdr.org/design-forces/efficiency/) (by processor that is running the code).
providing custom implementations specially designed to take advantage of
the specific processor that is running the code).
These kernels have some specific features (*e.g.*, saturation arithmetics) These kernels have some specific features (_e.g._, saturation arithmetics) that
that are aimed to GNSS signal processing, but could make them not are aimed to GNSS signal processing, but could make them not suitable for its
suitable for its general use in other applications. Check out the general use in other applications. Check out the documentation generated by
documentation generated by Doxygen and the *generic* (that is, plain C) Doxygen and the _generic_ (that is, plain C) implementation to see what each
implementation to see what each kernel is actually doing. kernel is actually doing.
This figure shows the role of some VOLK_GNSSSDR kernels in the context This figure shows the role of some VOLK_GNSSSDR kernels in the context of a GNSS
of a GNSS baseband processor: baseband processor:
![Example of VOLK_GNSSSDR ![Example of VOLK_GNSSSDR
usage.](./docs/images/VOLK_GNSSSDR_Usage_Example.png) usage.](./docs/images/VOLK_GNSSSDR_Usage_Example.png)
@ -52,22 +50,21 @@ usage.](./docs/images/VOLK_GNSSSDR_Usage_Example.png)
## How to build VOLK_GNSSSDR: ## How to build VOLK_GNSSSDR:
This library is automatically built and installed along with GNSS-SDR if This library is automatically built and installed along with GNSS-SDR if it is
it is not found by CMake on your system at configure time. not found by CMake on your system at configure time.
However, you can install and use VOLK_GNSSSDR kernels as you use VOLK's, However, you can install and use VOLK_GNSSSDR kernels as you use VOLK's,
independently of GNSS-SDR. independently of GNSS-SDR.
First, make sure that the required dependencies are installed in your First, make sure that the required dependencies are installed in your machine:
machine:
~~~~~~ ```
$ sudo apt-get install cmake python3-mako python3-six libboost-dev \ $ sudo apt-get install cmake python3-mako python3-six libboost-dev \
libboost-filesystem-dev libboost-system-dev libboost-filesystem-dev libboost-system-dev
~~~~~~ ```
Please note that if you are using a compiler supporting the C++17 standard Please note that if you are using a compiler supporting the C++17 standard (for
(for instance, gcc >= 8.0), specifically the std::filesystem library, packages instance, gcc >= 8.0), specifically the std::filesystem library, packages
`libboost-dev`, `libboost-filesystem-dev` and `libboost-system-dev` are no `libboost-dev`, `libboost-filesystem-dev` and `libboost-system-dev` are no
longer required dependencies. The CMake script will detect that availability for longer required dependencies. The CMake script will detect that availability for
you. you.
@ -75,71 +72,70 @@ you.
### Building on most x86 (32-bit and 64-bit) platforms ### Building on most x86 (32-bit and 64-bit) platforms
In order to build and install the library, go to the base folder of the In order to build and install the library, go to the base folder of the source
source code and do: code and do:
~~~~~~ ```
$ mkdir build $ mkdir build
$ cd build $ cd build
$ cmake .. $ cmake ..
$ make $ make
$ sudo make install $ sudo make install
~~~~~~ ```
That's it! That's it!
Before its first use, please execute `volk_gnsssdr_profile` to let Before its first use, please execute `volk_gnsssdr_profile` to let your system
your system know which is the fastest available implementation. This know which is the fastest available implementation. This only has to be done
only has to be done once: once:
~~~~~~ ```
$ volk_gnsssdr_profile $ volk_gnsssdr_profile
~~~~~~ ```
From now on, GNSS-SDR (and any other program of your own that makes use From now on, GNSS-SDR (and any other program of your own that makes use of
of VOLK_GNSSSDR) will benefit from the acceleration provided by SIMD VOLK_GNSSSDR) will benefit from the acceleration provided by SIMD instructions
instructions available in your processor. available in your processor.
The execution of `volk_gnsssdr_profile` can be set automatically The execution of `volk_gnsssdr_profile` can be set automatically after building,
after building, leaving your system ready to use: leaving your system ready to use:
~~~~~~ ```
$ cmake -DENABLE_PROFILING=ON ../ $ cmake -DENABLE_PROFILING=ON ../
$ make $ make
$ sudo make install $ sudo make install
~~~~~~ ```
### Building on Raspberry Pi and other ARM boards ### Building on Raspberry Pi and other ARM boards
To build for these boards you need specify the correct CMake toolchain file for To build for these boards you need specify the correct CMake toolchain file for
best performance. best performance.
* Raspberry Pi 4: `arm_cortex_a72_hardfp_native.cmake` - Raspberry Pi 4: `arm_cortex_a72_hardfp_native.cmake`
* Raspberry Pi 3: `arm_cortex_a53_hardfp_native.cmake` - Raspberry Pi 3: `arm_cortex_a53_hardfp_native.cmake`
Example for Raspberry Pi 4: Example for Raspberry Pi 4:
~~~~~~ ```
$ mkdir build && cd build $ mkdir build && cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake .. $ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake ..
$ make $ make
$ make test $ make test
$ sudo make install $ sudo make install
$ volk_gnsssdr_profile $ volk_gnsssdr_profile
~~~~~~ ```
## References ## References
If you use VOLK_GNSSSDR in your research and/or software, please cite If you use VOLK_GNSSSDR in your research and/or software, please cite the
the following paper: following paper:
* C. Fern&aacute;ndez-Prades, J. Arribas, P. Closas, [*Accelerating - C. Fern&aacute;ndez-Prades, J. Arribas, P. Closas,
GNSS Software Receivers*](https://zenodo.org/record/266493), in Proc. of the [_Accelerating GNSS Software Receivers_](https://zenodo.org/record/266493), in
29th International Technical Meeting of the Satellite Division of The Institute Proc. of the 29th International Technical Meeting of the Satellite Division of
of Navigation (ION GNSS+ 2016), pp. 44-61, Portland, Oregon, September 12-16, 2016. The Institute of Navigation (ION GNSS+ 2016), pp. 44-61, Portland, Oregon,
doi: [10.33012/2016.14576](https://doi.org/10.33012/2016.14576) September 12-16, 2016. doi:
[10.33012/2016.14576](https://doi.org/10.33012/2016.14576)
BibTeX entry: BibTeX entry:
@ -156,20 +152,18 @@ note = {{doi}: 10.33012/2016.14576}
} }
``` ```
Citations are useful for the continued development and maintenance of Citations are useful for the continued development and maintenance of the
the library. library.
---
VOLK_GNSSSDR was originally created by Andres Cecilia Luque in the framework of
the
[Summer Of Code In Space (SOCIS 2014)](https://socis.esa.int/about/ "SOCIS
webpage")
program organized by the European Space Agency, and then evolved and maintained
by Carles Fern&aacute;ndez-Prades and Javier Arribas. This software is released
under the GNU General Public License version 3, see the file COPYING.
___ This project is managed by
[Centre Tecnol&ograve;gic de Telecomunicacions de Catalunya](http://www.cttc.es "CTTC webpage").
VOLK_GNSSSDR was originally created by Andres Cecilia Luque in the
framework of the [Summer Of Code In Space (SOCIS
2014)](https://socis.esa.int/about/ "SOCIS
webpage") program organized by the European Space Agency, and then
evolved and maintained by Carles Fern&aacute;ndez-Prades and Javier
Arribas. This software is released under the GNU General Public License
version 3, see the file COPYING.
This project is managed by [Centre Tecnol&ograve;gic de Telecomunicacions de
Catalunya](http://www.cttc.es "CTTC webpage").

View File

@ -18,8 +18,9 @@ modules. If you need to design or work with VOLK kernels away from
the canonical VOLK library, this is the tool. If you need to tailor the canonical VOLK library, this is the tool. If you need to tailor
your own VOLK library for whatever reason, this is the tool. your own VOLK library for whatever reason, this is the tool.
The canonical VOLK library installs a volk_gnsssdr.h and a libvolk_gnsssdr.so. Your The canonical VOLK library installs a volk.h and a libvolk.so. Your own library
own library will install volk_gnsssdr_$name.h and libvolk_gnsssdr_$name.so. Ya Gronk? will install volk_$name.h and libvolk_$name.so.
Ya Gronk?
Good. Good.
There isn't a substantial difference between the canonical VOLK There isn't a substantial difference between the canonical VOLK

View File

@ -1,5 +1,4 @@
Continuous Reproducibility in GNSS Signal Processing ## Continuous Reproducibility in GNSS Signal Processing
----------------------------------------------------
[comment]: # ( [comment]: # (
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
@ -9,25 +8,40 @@ SPDX-License-Identifier: GPL-3.0-or-later
SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es> SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es>
) )
This folder contains files required for the reproduction of the experiment proposed in: This folder contains files required for the reproduction of the experiment
proposed in:
C. Fern&aacute;ndez-Prades, J. Vil&agrave;-Valls, J. Arribas and A. Ramos, [*Continuous Reproducibility in GNSS Signal Processing*](https://ieeexplore.ieee.org/document/8331069/), IEEE Access, Vol. 6, No. 1, pp. 20451-20463, April 2018. DOI: [10.1109/ACCESS.2018.2822835](https://doi.org/10.1109/ACCESS.2018.2822835) C. Fern&aacute;ndez-Prades, J. Vil&agrave;-Valls, J. Arribas and A. Ramos,
[_Continuous Reproducibility in GNSS Signal Processing_](https://ieeexplore.ieee.org/document/8331069/),
IEEE Access, Vol. 6, No. 1, pp. 20451-20463, April 2018. DOI:
[10.1109/ACCESS.2018.2822835](https://doi.org/10.1109/ACCESS.2018.2822835)
The data set used in this paper is available at https://zenodo.org/record/1184601 The data set used in this paper is available at
https://zenodo.org/record/1184601
The sample format is `ibyte`: Interleaved (I&Q) stream of samples of type signed integer, 8-bit twos complement number ranging from -128 to 127. The sampling rate is 3 MSps. The sample format is `ibyte`: Interleaved (I&Q) stream of samples of type signed
integer, 8-bit twos complement number ranging from -128 to 127. The sampling
rate is 3 MSps.
The figure appearing in that paper can be automatically generated with the pipeline available at https://gitlab.com/gnss-sdr/gnss-sdr/pipelines The figure appearing in that paper can be automatically generated with the
pipeline available at https://gitlab.com/gnss-sdr/gnss-sdr/pipelines
After the **Build** stage, which compiles the source code in several versions of the most popular GNU/Linux distributions, and the **Test** stage, which executes GNSS-SDRs QA code, the **Deploy** stage creates and publishes an image of a software container ready to execute the experiment. This container is available by doing: After the **Build** stage, which compiles the source code in several versions of
the most popular GNU/Linux distributions, and the **Test** stage, which executes
GNSS-SDRs QA code, the **Deploy** stage creates and publishes an image of a
software container ready to execute the experiment. This container is available
by doing:
``` ```
$ docker pull carlesfernandez/docker-gnsssdr:access18 $ docker pull carlesfernandez/docker-gnsssdr:access18
``` ```
Then, in the **Experiment** stage, a job installs the image created in the previous step, grabs the data file, executes the experiment and produces a figure with the obtained results. Then, in the **Experiment** stage, a job installs the image created in the
previous step, grabs the data file, executes the experiment and produces a
figure with the obtained results.
The steps to reproduce the experiment in your own machine (with [Docker](https://www.docker.com) already installed and running) are: The steps to reproduce the experiment in your own machine (with
[Docker](https://www.docker.com) already installed and running) are:
``` ```
$ docker pull carlesfernandez/docker-gnsssdr:access18 $ docker pull carlesfernandez/docker-gnsssdr:access18
@ -52,4 +66,5 @@ $ cp Figure2.pdf /home/access18/
$ exit $ exit
``` ```
You will find the file `Figure2.pdf` in a newly created folder called `access18`. You will find the file `Figure2.pdf` in a newly created folder called
`access18`.

View File

@ -1,5 +1,4 @@
obsdiff ## obsdiff
-------
[comment]: # ( [comment]: # (
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
@ -9,20 +8,34 @@ SPDX-License-Identifier: GPL-3.0-or-later
SPDX-FileCopyrightText: Javier Arribas, 2020. <jarribas@cttc.es> SPDX-FileCopyrightText: Javier Arribas, 2020. <jarribas@cttc.es>
) )
This program computes single-differences and double-differences from RINEX observation files. This program computes single-differences and double-differences from RINEX
observation files.
### Building ### Building
Requirements: Requirements:
* [Armadillo](http://arma.sourceforge.net/): A C++ library for linear algebra and scientific computing. This program requires version 9.800 or higher. If your installed Armadillo version is older, see below.
* [Gflags](https://github.com/gflags/gflags): A C++ library that implements command-line flags processing. If not found in your system, the latest version will be downloaded, built and linked for you at building time. - [Armadillo](http://arma.sourceforge.net/): A C++ library for linear algebra
* [GPSTK](https://github.com/SGL-UT/GPSTk): The GPS Toolkit, used for RINEX files reading. If not found in your system, the latest version will be downloaded, built and linked for you at building time. and scientific computing. This program requires version 9.800 or higher. If
* [Matio](https://github.com/tbeu/matio): A MATLAB MAT File I/O Library, version >= 1.5.3. If it is not found, or an older version is found, CMake will download, build and link a recent version for you at building time. your installed Armadillo version is older, see below.
- [Gflags](https://github.com/gflags/gflags): A C++ library that implements
command-line flags processing. If not found in your system, the latest version
will be downloaded, built and linked for you at building time.
- [GPSTK](https://github.com/SGL-UT/GPSTk): The GPS Toolkit, used for RINEX
files reading. If not found in your system, the latest version will be
downloaded, built and linked for you at building time.
- [Matio](https://github.com/tbeu/matio): A MATLAB MAT File I/O Library,
version >= 1.5.3. If it is not found, or an older version is found, CMake will
download, build and link a recent version for you at building time.
Optional: Optional:
* [Gnuplot](http://www.gnuplot.info/): a portable command-line driven graphing utility.
This program is built along with GNSS-SDR if the options `ENABLE_UNIT_TESTING_EXTRA` or `ENABLE_SYSTEM_TESTING_EXTRA` are set to `ON` when calling CMake: - [Gnuplot](http://www.gnuplot.info/): a portable command-line driven graphing
utility.
This program is built along with GNSS-SDR if the options
`ENABLE_UNIT_TESTING_EXTRA` or `ENABLE_SYSTEM_TESTING_EXTRA` are set to `ON`
when calling CMake:
``` ```
$ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. $ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON ..
@ -30,9 +43,13 @@ $ make obsdiff
$ sudo make install $ sudo make install
``` ```
The last step is optional. Without it, you still will get the executable at `../install/obsdiff`. The last step is optional. Without it, you still will get the executable at
`../install/obsdiff`.
This program requires Armadillo 9.800 or higher. If the available Armadillo version is older, this program will not be built. If your local Armadillo installed version is older than 9.800, you can force CMake to download, build and link a recent one: This program requires Armadillo 9.800 or higher. If the available Armadillo
version is older, this program will not be built. If your local Armadillo
installed version is older than 9.800, you can force CMake to download, build
and link a recent one:
``` ```
$ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_OWN_ARMADILLO=ON .. $ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_OWN_ARMADILLO=ON ..
@ -40,7 +57,9 @@ $ make obsdiff
$ sudo make install $ sudo make install
``` ```
This later option requires [BLAS](http://www.netlib.org/blas/), [LAPACK](http://www.netlib.org/lapack/) and [GFortran](https://gcc.gnu.org/fortran/) already installed in your system. This later option requires [BLAS](http://www.netlib.org/blas/),
[LAPACK](http://www.netlib.org/lapack/) and
[GFortran](https://gcc.gnu.org/fortran/) already installed in your system.
### Usage ### Usage
@ -48,7 +67,8 @@ This later option requires [BLAS](http://www.netlib.org/blas/), [LAPACK](http://
$ obsdiff --ref_rinex_obs=reference.20o --test_rinex_obs=rover.20o $ obsdiff --ref_rinex_obs=reference.20o --test_rinex_obs=rover.20o
``` ```
There is some flexibility in how command-line flags may be specified. The following examples are equivalent: There is some flexibility in how command-line flags may be specified. The
following examples are equivalent:
``` ```
$ obsdiff -ref_rinex_obs=reference.20o $ obsdiff -ref_rinex_obs=reference.20o
@ -58,6 +78,7 @@ $ obsdiff --ref_rinex_obs reference.20o
``` ```
For boolean flags, the possibilities are slightly different: For boolean flags, the possibilities are slightly different:
``` ```
$ obsdiff --single_diffs $ obsdiff --single_diffs
$ obsdiff --nosingle_diffs $ obsdiff --nosingle_diffs
@ -67,7 +88,9 @@ $ obsdiff --single_diffs=false
(as well as the single-dash variant on all of these). (as well as the single-dash variant on all of these).
Despite this flexibility, we recommend using only a single form: `--variable=value` for non-boolean flags, and `--variable/--novariable` for boolean flags. Despite this flexibility, we recommend using only a single form:
`--variable=value` for non-boolean flags, and `--variable/--novariable` for
boolean flags.
Available command-line flags: Available command-line flags:

View File

@ -1,5 +1,4 @@
Rinex2assist ## Rinex2assist
------------
[comment]: # ( [comment]: # (
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
@ -9,11 +8,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es> SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc.es>
) )
This program reads data from RINEX navigation files and generates XML files that can be read by GNSS-SDR as Assisted GNSS data. This program reads data from RINEX navigation files and generates XML files that
can be read by GNSS-SDR as Assisted GNSS data.
### Building ### Building
This program is built along with GNSS-SDR if the options `ENABLE_UNIT_TESTING_EXTRA` or `ENABLE_SYSTEM_TESTING_EXTRA` are set to `ON` when calling CMake: This program is built along with GNSS-SDR if the options
`ENABLE_UNIT_TESTING_EXTRA` or `ENABLE_SYSTEM_TESTING_EXTRA` are set to `ON`
when calling CMake:
``` ```
$ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. $ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON ..
@ -21,17 +23,20 @@ $ make
$ sudo make install $ sudo make install
``` ```
The last step is optional. Without it, you will get the executable at `../install/rinex2assist`. The last step is optional. Without it, you will get the executable at
`../install/rinex2assist`.
The building requires two extra dependencies: the Boost Iostreams library and the program `uncompress`: The building requires two extra dependencies: the Boost Iostreams library and
the program `uncompress`:
* The Boost Iostreams library can be installed through a package: - The Boost Iostreams library can be installed through a package:
- In Debian / Ubuntu: `sudo apt-get install libboost-iostreams-dev` - In Debian / Ubuntu: `sudo apt-get install libboost-iostreams-dev`
- In Fedora / CentOS: `sudo yum install boost-iostreams` - In Fedora / CentOS: `sudo yum install boost-iostreams`
- In OpenSUSE: `sudo zypper install libboost_iostreams-devel` - In OpenSUSE: `sudo zypper install libboost_iostreams-devel`
- In Arch Linux: included in `boost-libs` package. - In Arch Linux: included in `boost-libs` package.
- In macOS: included in Macports / Homebrew `boost` package. - In macOS: included in Macports / Homebrew `boost` package.
* The program `uncompress` is available by default in most UNIX and GNU/Linux systems. - The program `uncompress` is available by default in most UNIX and GNU/Linux
systems.
- In Fedora / CentOS: `sudo yum install ncompress` - In Fedora / CentOS: `sudo yum install ncompress`
- In OpenSUSE: `sudo zypper install ncompress` - In OpenSUSE: `sudo zypper install ncompress`
@ -43,16 +48,28 @@ The usage is as follows:
$ rinex2assist /path/to/RINEX_nav_file $ rinex2assist /path/to/RINEX_nav_file
``` ```
The argument is mandatory (the name of the RINEX navigation file). The name `gps_ephemeris.xml` is given to the output if GPS NAV data is fould. If the RINEX file contains Galileo data, the corresponding `gal_ephemeris.xml` file will be generated. The program is also able to extract parameters of the UTC and the Ionospheric models from the RINEX header, if available. They will be called `gps_utc_model.xml`, `gps_iono.xml`, `gal_utc_model.xml` and `gal_iono.xml`. The argument is mandatory (the name of the RINEX navigation file). The name
`gps_ephemeris.xml` is given to the output if GPS NAV data is fould. If the
RINEX file contains Galileo data, the corresponding `gal_ephemeris.xml` file
will be generated. The program is also able to extract parameters of the UTC and
the Ionospheric models from the RINEX header, if available. They will be called
`gps_utc_model.xml`, `gps_iono.xml`, `gal_utc_model.xml` and `gal_iono.xml`.
There are some servers available for downloading recent RINEX navigation files. For instance: There are some servers available for downloading recent RINEX navigation files.
* NASA: [ftp://cddis.gsfc.nasa.gov/pub/gnss/data/hourly/](ftp://gssc.esa.int/gnss/data/hourly/) For instance:
* ESA: [ftp://gssc.esa.int/gnss/data/hourly/](ftp://gssc.esa.int/gnss/data/hourly/)
* UNAVCO: [ftp://data-out.unavco.org/pub/hourly/rinex/](ftp://data-out.unavco.org/pub/hourly/rinex/)
Just make sure to pick up a recent file from a [station near you](http://www.igs.org/network). - NASA:
[ftp://cddis.gsfc.nasa.gov/pub/gnss/data/hourly/](ftp://gssc.esa.int/gnss/data/hourly/)
- ESA:
[ftp://gssc.esa.int/gnss/data/hourly/](ftp://gssc.esa.int/gnss/data/hourly/)
- UNAVCO:
[ftp://data-out.unavco.org/pub/hourly/rinex/](ftp://data-out.unavco.org/pub/hourly/rinex/)
The program accepts either versions 2.xx or 3.xx for the RINEX navigation data file, as well as compressed files (ending in `.gz` or `.Z`). Just make sure to pick up a recent file from a
[station near you](http://www.igs.org/network).
The program accepts either versions 2.xx or 3.xx for the RINEX navigation data
file, as well as compressed files (ending in `.gz` or `.Z`).
Examples: Examples:
@ -72,8 +89,8 @@ Generated file: gal_utc_model.xml
Generated file: gal_iono.xml Generated file: gal_iono.xml
``` ```
An example of GNSS-SDR configuration using ephemeris, UTC and ionospheric model
An example of GNSS-SDR configuration using ephemeris, UTC and ionospheric model parameters for GPS L1 and Galileo signals is shown below: parameters for GPS L1 and Galileo signals is shown below:
``` ```
GNSS-SDR.AGNSS_XML_enabled=true GNSS-SDR.AGNSS_XML_enabled=true
@ -86,4 +103,5 @@ GNSS-SDR.AGNSS_gal_iono_xml=gal_iono.xml
GNSS-SDR.AGNSS_gal_utc_model_xml=gal_utc_model.xml GNSS-SDR.AGNSS_gal_utc_model_xml=gal_utc_model.xml
``` ```
More info about the usage of AGNSS data [here](https://gnss-sdr.org/docs/sp-blocks/global-parameters/#assisted-gnss-with-xml-files). More info about the usage of AGNSS data
[here](https://gnss-sdr.org/docs/sp-blocks/global-parameters/#assisted-gnss-with-xml-files).