diff --git a/Gemfile.lock b/Gemfile.lock index 8c7e323e..0890d79f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,22 +1,32 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.0.4.3) + activesupport (7.1.0) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - addressable (2.8.3) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) + base64 (0.1.1) + bigdecimal (3.1.4) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.11.1) colorator (1.1.0) - commonmarker (0.23.8) + commonmarker (0.23.10) concurrent-ruby (1.2.2) - dnsruby (1.61.9) - simpleidn (~> 0.1) + connection_pool (2.4.1) + dnsruby (1.70.0) + simpleidn (~> 0.2.1) + drb (2.1.1) + ruby2_keywords em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) @@ -24,13 +34,14 @@ GEM ffi (>= 1.15.0) eventmachine (1.2.7) eventmachine (1.2.7-x64-mingw32) - execjs (2.8.1) - faraday (2.7.4) + execjs (2.9.1) + faraday (2.7.11) + base64 faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) - ffi (1.15.5) - ffi (1.15.5-x64-mingw32) + ffi (1.16.3) + ffi (1.16.3-x64-mingw32) forwardable-extended (2.6.0) gemoji (3.0.1) github-pages (228) @@ -88,7 +99,7 @@ GEM activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.8.0) - i18n (1.12.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) jekyll (3.9.3) addressable (~> 2.4) @@ -207,14 +218,17 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.8.1) + mini_portile2 (2.8.4) minima (2.5.1) jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.18.0) - nokogiri (1.14.2) - mini_portile2 (~> 2.8.0) + minitest (5.20.0) + mutex_m (0.1.2) + nokogiri (1.15.4) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + nokogiri (1.15.4-x64-mingw32) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) @@ -222,11 +236,11 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.7) - racc (1.6.2) + racc (1.7.1) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.5) + rexml (3.2.6) rouge (3.26.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -252,6 +266,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) + unf_ext (0.0.8.2-x64-mingw32) unicode-display_width (1.8.0) webrick (1.8.1) @@ -274,4 +289,4 @@ DEPENDENCIES webrick (~> 1.7) BUNDLED WITH - 2.3.17 + 2.3.6 diff --git a/_design-forces/08-portability.md b/_design-forces/08-portability.md index 83f3f19d..9f7a82ef 100644 --- a/_design-forces/08-portability.md +++ b/_design-forces/08-portability.md @@ -237,9 +237,9 @@ receiver: - Others. - Support of FPGA offloading (define FPGA's vendor/model). - - [Xilinx](https://www.xilinx.com/) - - [Altera](https://www.altera.com/) - - [Microsemi (formerly Actel)](https://www.microsemi.com/product-directory/1636-fpga-soc) + - [AMD (formerly Xilinx)](https://www.xilinx.com/products/silicon-devices/fpga.html) + - [Intel (formerly Altera)](https://www.intel.com/content/www/us/en/products/programmable.html) + - [Microchip (formerly Actel)](https://www.microchip.com/en-us/products/fpgas-and-plds#) - Others. - Other software dependencies (define required minimal versions). diff --git a/_pages/acknowledgements.md b/_pages/acknowledgements.md index a7141c8d..ee9f986e 100644 --- a/_pages/acknowledgements.md +++ b/_pages/acknowledgements.md @@ -191,40 +191,3 @@ and open-source GNSS software-defined receiver: projects. {: .notice--success} - -## Sponsors - -![NSL logo]({{ "/assets/images/logo-nsl.jpg" | relative_url }}){:height="250px" width="250px"} -{: style="text-align: center;"} - -* [NSL](https://gmvnsl.com/), a leading company specialised in satellite -navigation, actively supported GNSS-SDR. Based in Nottingham, UK, NSL deliver -reliable and robust Global Navigation Satellite System technologies for a -variety of applications, such as those that require highest accuracies, impact -safety, or are critical in terms of business, finance and security. NSL also -produce radiofrequency front-ends and associated products, for example the -dual channel -[Stereo](https://gmvnsl.com/advanced-gnns-hw-sw/2016-04-11-15-01-35) system -that is being used with GNSS-SDR development. - -[**NSL**](https://gmvnsl.com/) kindly provided equipment and technical support -to the development of dual-band software architectures. -{: .notice--success} - ------ - - -![Xilinx logo]({{ "/assets/images/logo-xilinx.png" | relative_url }}){:height="250px" width="250px"} -{: style="text-align: center;"} - -* [Xilinx](https://www.xilinx.com) is a worldwide renowned supplier of -programmable logic devices. It is known for inventing the field-programmable -gate array (FPGA) and as the first semiconductor company with a fabless -manufacturing model. - -Through their [**Xilinx University Program -(XUP)**](https://www.xilinx.com/support/university.html), Xilinx is supporting -GNSS-SDR with the donation of four Zedboard development kits and a full license -of the Vivado Design Suite, a software tool for synthesis and analysis of HDL -designs. -{: .notice--success} diff --git a/_pages/publications.md b/_pages/publications.md index 63a8e53f..9ee3c256 100644 --- a/_pages/publications.md +++ b/_pages/publications.md @@ -16,6 +16,35 @@ List of academic papers in which GNSS-SDR has been referenced, described or used
+ N. Varais, J. Verdun, J. Cali and L. Lestarquit
+
Lake Altimetry Using Long Coherent Integration Carrier Phase Measurements from Airborne GNSS Reflectometry
+ Remote Sensing, Vol. 15, 4192, pp. 1-17, Sept. 2023.
+
+ [BibTeX]
+ [Online ]
+ [ ]
+
@article{ Varais23, +author = {N.~Varais and J.~Verdun and J.~Cali and L.~Lestarquit}, +title = {Lake Altimetry Using Long Coherent Integration Carrier Phase Measurements from Airborne {GNSS} Reflectometry}, +journal = {Remote Sensing}, +year = {2023}, +month = {Sep}, +volume = {15}, +number = {4192}, +pages = {1--17}, +note = { {doi}: 10.3390/rs15174192} +}+
@@ -470,7 +499,7 @@ note = {doi: 10.1007/978-981-15-3715-8}
Cork, Ireland, 31 Aug. / 3 Sept., 2020. pp. 1-4.
[BibTeX]
- [Online ]
+ [Online ]
@inproceedings{ Calvo20, diff --git a/_posts/2013-02-01-google-summer-code-2013-ideas-list.md b/_posts/2013-02-01-google-summer-code-2013-ideas-list.md index 64e94173..de600023 100644 --- a/_posts/2013-02-01-google-summer-code-2013-ideas-list.md +++ b/_posts/2013-02-01-google-summer-code-2013-ideas-list.md @@ -13,7 +13,7 @@ redirect_from: - /node/52 --- -[Global Navigation Satellite System (GNSS)](https://en.wikipedia.org/wiki/Satellite_navigation) is the general concept used to identify those systems that allow user positioning based on a constellation of satellites. Specific GNSS are the well-known American [GPS](https://www.gps.gov/), the Russian [GLONASS](https://www.glonass-iac.ru/en/), or the forthcoming European [Galileo](https://www.gsc-europa.eu/galileo/what-is-galileo) and Chinese [BeiDou](http://www.beidou.gov.cn/). Governments around the World are spending billions of dollars of tax payers' money in building and maintaining an infrastructure with explicitly free civilian usage. However, users only have access to a small fraction of the full capability of GNSS in terms of accuracy, robustness and reliability of the provided service at a reasonable cost. Professional, full-featured receivers are expensive, and even in those cases the users have limited access (if any) to know exactly how position and time information were computed. +[Global Navigation Satellite System (GNSS)](https://en.wikipedia.org/wiki/Satellite_navigation) is the general concept used to identify those systems that allow user positioning based on a constellation of satellites. Specific GNSS are the well-known American [GPS](https://www.gps.gov/), the Russian [GLONASS](https://glonass-iac.ru/en/about_glonass/), or the forthcoming European [Galileo](https://www.gsc-europa.eu/galileo/what-is-galileo) and Chinese [BeiDou](http://www.beidou.gov.cn/). Governments around the World are spending billions of dollars of tax payers' money in building and maintaining an infrastructure with explicitly free civilian usage. However, users only have access to a small fraction of the full capability of GNSS in terms of accuracy, robustness and reliability of the provided service at a reasonable cost. Professional, full-featured receivers are expensive, and even in those cases the users have limited access (if any) to know exactly how position and time information were computed. Some commercial, industrial and scientific applications of GNSS signals and data require non-standard features of the receiver. Access to intermediate signals is not possible in mass-market receivers, and professional equipment is costly and often a ‘black box’ that does not offer exact information about how signals are being processed. Since all the processing is done in [ASICs](https://en.wikipedia.org/wiki/Application-specific_integrated_circuit) or [SoCs](https://en.wikipedia.org/wiki/System_on_a_chip), one cannot change the implementation of a certain functional block and assess the impact of that change on the whole receiver performance. diff --git a/_posts/2016-06-23-using-git.md b/_posts/2016-06-23-using-git.md index 86555b49..c450ec26 100644 --- a/_posts/2016-06-23-using-git.md +++ b/_posts/2016-06-23-using-git.md @@ -54,7 +54,7 @@ learning curve, but it worth it. A good reference is the freely available [Git Pro book](https://git-scm.com/book/en/v2), but there are plenty of good Git tutorials out there. If you have never used it, start from the [Git Basics](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics) or this [free -online course](https://lab.github.com/githubtraining/introduction-to-github). +online course](https://github.com/skills/introduction-to-github). ## Git branches in GNSS-SDR diff --git a/_posts/2016-07-08-gnss-signals.md b/_posts/2016-07-08-gnss-signals.md index 41cf81a9..3906b9aa 100644 --- a/_posts/2016-07-08-gnss-signals.md +++ b/_posts/2016-07-08-gnss-signals.md @@ -12,7 +12,7 @@ sidebar: toc: true toc_sticky: true show_date: false -last_modified_at: 2022-05-13T08:37:02+02:00 +last_modified_at: 2023-08-21T08:37:02+02:00 --- @@ -102,7 +102,7 @@ denying non–U.S. military users) are sequences of $$ 7 $$ days in length. Regarding the modernization plans for GPS, it is worthwhile to mention that there is a new civilian–use signal planned, called L1C and defined in -IS-GPS-800D[^ISGPS800], to be broadcast on the same L1 frequency that currently +IS-GPS-800J[^ISGPS800], to be broadcast on the same L1 frequency that currently contains the C/A signal. The L1C signal will be available with first Block III launch, currently scheduled for May 2018 by SpaceX, and it will feature a Multiplexed Binary Offset Carrier (MBOC) modulation scheme that ensures backward @@ -117,7 +117,7 @@ of the respective ranging codes as needed to protect users from receiving and utilizing anomalous signals. These "incorrect" codes are termed non-standard $$ L1C_P $$ (NSCP) and non-standard $$ L1C_D $$ (NSCD). Non-standard codes are not for utilization by the users and, therefore, -are not defined in IS-GPS-800D. +are not defined in IS-GPS-800J. ![Spectra GPS Signals L1]({{ "/assets/images/Spectra_GPS_Signals_L1.png" | relative_url }}){: .align-center .invert-colors} _GPS signals spectra in L1. Source: [Navipedia](https://gssc.esa.int/navipedia/index.php/GPS_Signal_Plan)_. @@ -218,7 +218,7 @@ ascending node. Eight satellites are equally spaced in each plane with $$ 45^o $ argument of latitude. Moreover, the orbital planes have an argument of latitude displacement of $$ 15^o $$ relative to each other. The current constellation status can be checked at the Russian [Information and Analysis Center for -Positioning, Navigation and Timing website](https://www.glonass-iac.ru/en/). +Positioning, Navigation and Timing website](https://glonass-iac.ru/en/about_glonass/). The ground control segment of GLONASS is almost entirely located within former Soviet Union territory, except for a station in Brasilia, Brazil. The Ground @@ -839,28 +839,28 @@ Details of the $$ e_{B3Q}(t) $$ component have not been disclosed. The following table lists the GNSS signals providing Open Service. |---------- -| **GNSS Signal** | **Center Freq.** | **Modulation** | -|:-:|:-:|:-:| -|-------------- -| [**GPS L5**](https://www.gps.gov/technical/icwg/IS-GPS-705H.pdf)$$ ^{(*)} $$ | $$ 1176.45 $$ MHz | BPSK(10) | -| [**Galileo E5a**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf) | $$ 1176.45 $$ MHz | QPSK(10) | -| [**BeiDou B2a**](http://www.beidou.gov.cn/xt/gfxz/201712/P020171226742357364174.pdf)$$ ^{(**)} $$ | $$ 1176.45 $$ MHz | BPSK(10) | -| [**GLONASS L3OC**](http://russianspacesystems.ru/wp-content/uploads/2016/08/IKD-L3-s-kod.-razd.-Red-1.0-2016.pdf)$$ ^{(*)} $$ | $$ 1202.025 $$ MHz | BPSK(10) | -| [**Galileo E5b**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf) | $$ 1207.14 $$ MHz | QPSK(10) | -| [**BeiDou B2I**](http://www.beidou.gov.cn/xt/gfxz/201710/P020171202693088949056.pdf) | $$ 1207.14 $$ MHz | BPSK(2) | -| [**GPS L2C**](https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf)$$ ^{(*)} $$ | $$ 1227.60 $$ MHz | BPSK(1) | -| [**GLONASS L2OF**](http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD_GLONASS_eng_v5.1.pdf) | $$ 1246.00 $$ MHz | BPSK(0.5) | -| [**GLONASS L2OC**](http://russianspacesystems.ru/wp-content/uploads/2016/08/IKD-L2-s-kod.-razd.-Red-1.0-2016.pdf)$$ ^{(**)} $$ | $$ 1248.06 $$ MHz | BOC(1,1) | -| [**BeiDou B3I**](http://www.beidou.gov.cn/xt/gfxz/201802/P020180209623601401189.pdf)$$ ^{(*)} $$ | $$ 1268.520 $$ MHz | BPSK(10) | -| [**Galileo E6B**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/E6BC_SIS_Technical_Note.pdf)$$ ^{(**)} $$ | $$ 1278.750 $$ MHz | BPSK(5) | -| [**BeiDou B1I**](http://en.beidou.gov.cn/SYSTEMS/Officialdocument/201902/P020190227601370045731.pdf) | $$ 1561.098 $$ MHz | BPSK(2) | -| [**BeiDou B1C**](http://www.beidou.gov.cn/xt/gfxz/201712/P020171226741342013031.pdf)$$ ^{(**)} $$ | $$ 1575.42 $$ MHz | BOC(1,1) | -| [**GPS L1 C/A**](https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf) | $$ 1575.42 $$ MHz | BPSK(1) | -| [**GPS L1C**](https://www.gps.gov/technical/icwg/IS-GPS-800H.pdf)$$ ^{(**)} $$ | $$ 1575.42 $$ MHz | BOC(1,1) | -| [**Galileo E1b/c**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf) | $$ 1575.42 $$ MHz | CBOC(6,1,1/11) | -| [**GLONASS L1OC**](http://russianspacesystems.ru/wp-content/uploads/2016/08/IKD-L1-s-kod.-razd.-Red-1.0-2016.pdf)$$ ^{(**)} $$ | $$ 1600.995 $$ MHz | BOC(1,1) | -| [**GLONASS L1OF**](http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD_GLONASS_eng_v5.1.pdf) | $$ 1602.00 $$ MHz | BPSK(0.5) | -|-------------- +| **GNSS Signal** | **Center Freq.** | **Modulation** | +| :----------------------------------------------------------------------------------------------------------------------------: | :----------------: | :------------: | +| -------------- | +| [**GPS L5**](https://www.gps.gov/technical/icwg/IS-GPS-705J.pdf)$$ ^{(*)} $$ | $$ 1176.45 $$ MHz | BPSK(10) | +| [**Galileo E5a**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf) | $$ 1176.45 $$ MHz | QPSK(10) | +| [**BeiDou B2a**](http://www.beidou.gov.cn/xt/gfxz/201712/P020171226742357364174.pdf)$$ ^{(**)} $$ | $$ 1176.45 $$ MHz | BPSK(10) | +| [**GLONASS L3OC**](http://russianspacesystems.ru/wp-content/uploads/2016/08/IKD-L3-s-kod.-razd.-Red-1.0-2016.pdf)$$ ^{(*)} $$ | $$ 1202.025 $$ MHz | BPSK(10) | +| [**Galileo E5b**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf) | $$ 1207.14 $$ MHz | QPSK(10) | +| [**BeiDou B2I**](http://www.beidou.gov.cn/xt/gfxz/201710/P020171202693088949056.pdf) | $$ 1207.14 $$ MHz | BPSK(2) | +| [**GPS L2C**](https://www.gps.gov/technical/icwg/IS-GPS-200N.pdf)$$ ^{(*)} $$ | $$ 1227.60 $$ MHz | BPSK(1) | +| [**GLONASS L2OF**](http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD_GLONASS_eng_v5.1.pdf) | $$ 1246.00 $$ MHz | BPSK(0.5) | +| [**GLONASS L2OC**](http://russianspacesystems.ru/wp-content/uploads/2016/08/IKD-L2-s-kod.-razd.-Red-1.0-2016.pdf)$$ ^{(**)} $$ | $$ 1248.06 $$ MHz | BOC(1,1) | +| [**BeiDou B3I**](http://www.beidou.gov.cn/xt/gfxz/201802/P020180209623601401189.pdf)$$ ^{(*)} $$ | $$ 1268.520 $$ MHz | BPSK(10) | +| [**Galileo E6B**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/E6BC_SIS_Technical_Note.pdf)$$ ^{(**)} $$ | $$ 1278.750 $$ MHz | BPSK(5) | +| [**BeiDou B1I**](http://en.beidou.gov.cn/SYSTEMS/Officialdocument/201902/P020190227601370045731.pdf) | $$ 1561.098 $$ MHz | BPSK(2) | +| [**BeiDou B1C**](http://www.beidou.gov.cn/xt/gfxz/201712/P020171226741342013031.pdf)$$ ^{(**)} $$ | $$ 1575.42 $$ MHz | BOC(1,1) | +| [**GPS L1 C/A**](https://www.gps.gov/technical/icwg/IS-GPS-200N.pdf) | $$ 1575.42 $$ MHz | BPSK(1) | +| [**GPS L1C**](https://www.gps.gov/technical/icwg/IS-GPS-800J.pdf)$$ ^{(**)} $$ | $$ 1575.42 $$ MHz | BOC(1,1) | +| [**Galileo E1b/c**](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf) | $$ 1575.42 $$ MHz | CBOC(6,1,1/11) | +| [**GLONASS L1OC**](http://russianspacesystems.ru/wp-content/uploads/2016/08/IKD-L1-s-kod.-razd.-Red-1.0-2016.pdf)$$ ^{(**)} $$ | $$ 1600.995 $$ MHz | BOC(1,1) | +| [**GLONASS L1OF**](http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD_GLONASS_eng_v5.1.pdf) | $$ 1602.00 $$ MHz | BPSK(0.5) | +| -------------- | (*): Modernized signal not broadcast by all satellites. @@ -879,11 +879,11 @@ The following table lists the GNSS signals providing Open Service. [^GPS-PPS]: U.S. Government, Department of Defense, Positioning, Navigation, and Timing Executive Committee, [Global Positioning System Precise Positioning Service Performance Standard](https://www.gps.gov/technical/ps/2007-PPS-performance-standard.pdf), 1st edition, Feb. 2007. -[^ISGPS200]: Global Positioning System Directorate, [Interface Specification IS-GPS-200M: Navstar GPS Space Segment/Navigation User Interfaces](https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf), May 2021. +[^ISGPS200]: Global Positioning System Directorate, [Interface Specification IS-GPS-200N: Navstar GPS Space Segment/Navigation User Interfaces](https://www.gps.gov/technical/icwg/IS-GPS-200N.pdf), Aug 2022. -[^ISGPS800]: Global Positioning System Directorate, [Interface Specification IS-GPS-800H: Navstar GPS Space Segment/User Segment L1C Interface](https://www.gps.gov/technical/icwg/IS-GPS-800H.pdf), May 2021. +[^ISGPS800]: Global Positioning System Directorate, [Interface Specification IS-GPS-800J: Navstar GPS Space Segment/User Segment L1C Interface](https://www.gps.gov/technical/icwg/IS-GPS-800J.pdf), Aug 2022. -[^ISGPS705]: Global Positioning System Directorate, [Interface Specification IS-GPS-705H: Navstar GPS Space Segment/User Segment L5 Interfaces](https://www.gps.gov/technical/icwg/IS-GPS-705H.pdf), May 2021. +[^ISGPS705]: Global Positioning System Directorate, [Interface Specification IS-GPS-705J: Navstar GPS Space Segment/User Segment L5 Interfaces](https://www.gps.gov/technical/icwg/IS-GPS-705J.pdf), Aug 2022. [^GLONASS08]: Global Navigation Satellite System GLONASS. [Interface Control Document. Navigational radiosignal in bands L1, L2](http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD_GLONASS_eng_v5.1.pdf). Edition 5.1, Moscow, Russia, 2008. diff --git a/_posts/2017-01-03-cross-compiling-gnss-sdr.md b/_posts/2017-01-03-cross-compiling-gnss-sdr.md index 6ef384e9..4a647ea2 100644 --- a/_posts/2017-01-03-cross-compiling-gnss-sdr.md +++ b/_posts/2017-01-03-cross-compiling-gnss-sdr.md @@ -13,7 +13,7 @@ sidebar: toc: true toc_sticky: true show_date: false -last_modified_at: 2022-03-25T02:11:02+02:00 +last_modified_at: 2023-08-21T02:11:02+02:00 --- An **embedded system** is defined as a computer system with a specific function @@ -24,9 +24,9 @@ at the price of limited processing resources. This page is devoted to the development cycle for building and executing GNSS-SDR in an embedded computer. In this example, we are working with a -[Zedboard](https://www.xilinx.com/products/boards-and-kits/1-elhabt.html) (a -development board that ships a [Xilinx -Zynq-7000](https://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html) +[Zedboard](https://www.xilinx.com/video/soc/zedboard-overview-featuring-zynq.html) +(a development board that ships a [Xilinx +Zynq-7000](https://www.xilinx.com/video/soc/xilinx-arm-zynq-7000-all-programmable-soc.html) all-programmable [SoC](https://en.wikipedia.org/wiki/System_on_a_chip), which houses two ARM and one FPGA processor in a single chip), but this procedure is applicable to other embedded platforms without much modification. @@ -77,19 +77,19 @@ right-click on the SDK link and choose "Save link as ...". -| Yocto version | SDK version | Download | Size | MD5 checksum | Manifest | -|:-|:-:|:-:|:-:|:-|:-:| -| Gatesgarth | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/gatesgarth-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Gatesgarth/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.sh"} | 2.13 GB | b71e8608d246fc2bf1d8e0535e0b0c1d | [Host](https://sites.cttc.es/gnss_files/SDK/Gatesgarth/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Gatesgarth/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.target.manifest) | -| Dunfell | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/dunfell-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Dunfell/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.sh"} | 2.14 GB | 93b54c322c6595c09278216972bfca04 | [Host](https://sites.cttc.es/gnss_files/SDK/Dunfell/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Dunfell/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.target.manifest) | -| Zeus | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/zeus-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Zeus/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.sh"} | 2.04 GB | 8c201b971d541596f3f21a52cc0849e3 | [Host](https://sites.cttc.es/gnss_files/SDK/Zeus/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Zeus/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.target.manifest) | -| Warrior | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/warrior-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Warrior/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.sh"} | 2.10 GB | 931fa513cc26c268b25b6bfd4e12de2e | [Host](https://sites.cttc.es/gnss_files/SDK/Warrior/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Warrior/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.target.manifest) | -| Thud | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/thud-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Thud/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.sh"} | 2.06 GB | 79f00e47ba437fb73afaf4937dbea3d8 | [Host](https://sites.cttc.es/gnss_files/SDK/Thud/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Thud/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.target.manifest) | -| Sumo | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/sumo-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Sumo/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.sh"} | 1.54 GB | 118968d0194718ccdbdff8122eea210d | [Host](https://sites.cttc.es/gnss_files/SDK/Sumo/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Sumo/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.target.manifest) | -| Rocko | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/rocko-21.08) | [SDK](https://sites.cttc.es/gnss_files/SDK/Rocko/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.sh"} | 1.24 GB | 12d1eb7fb3a2446e03325ddb12adf4c4 | [Host](https://sites.cttc.es/gnss_files/SDK/Rocko/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Rocko/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.target.manifest) | -| Pyro | Abandoned | [SDK](https://sites.cttc.es/gnss_files/SDK/Pyro/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh"} | 1.1 GB | 8ce7c2a732884e5487f592ae102780f1 | [Host](https://sites.cttc.es/gnss_files/SDK/Pyro/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Pyro/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.target.manifest) | -| Morty | Abandoned | [SDK](https://sites.cttc.es/gnss_files/SDK/Morty/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh"} | 1.0 GB | b2eb36d4ef2838586afa1bc6b44dc0f4 | [Host](https://sites.cttc.es/gnss_files/SDK/Morty/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Morty/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.target.manifest) | -| Krogoth | Abandoned | [SDK](https://sites.cttc.es/gnss_files/SDK/Krogoth/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh"} | 920 MB | 16af7ab553a0c8f553ba4d6ccc5d6bfe | [Host](https://sites.cttc.es/gnss_files/SDK/Krogoth/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Krogoth/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.target.manifest) | -| Jethro | Abandoned | [SDK](https://sites.cttc.es/gnss_files/SDK/Jethro/oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.sh"} | 1.6 GB | d0419e9c1e0894a327af4d9560cf0294 | [Host](https://sites.cttc.es/gnss_files/SDK/Jethro/oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.es/gnss_files/SDK/Jethro/oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.target.manifest) | +| Yocto version | SDK version | Download | Size | MD5 checksum | Manifest | +| :------------ | :---------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----: | :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| Gatesgarth | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/gatesgarth-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Gatesgarth/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.sh"} | 2.13 GB | b71e8608d246fc2bf1d8e0535e0b0c1d | [Host](https://sites.cttc.cat/gnss_files/SDK/Gatesgarth/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Gatesgarth/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-gatesgarth-21.08.0.target.manifest) | +| Dunfell | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/dunfell-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Dunfell/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.sh"} | 2.14 GB | 93b54c322c6595c09278216972bfca04 | [Host](https://sites.cttc.cat/gnss_files/SDK/Dunfell/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Dunfell/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-dunfell-21.08.0.target.manifest) | +| Zeus | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/zeus-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Zeus/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.sh"} | 2.04 GB | 8c201b971d541596f3f21a52cc0849e3 | [Host](https://sites.cttc.cat/gnss_files/SDK/Zeus/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Zeus/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-zeus-21.08.0.target.manifest) | +| Warrior | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/warrior-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Warrior/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.sh"} | 2.10 GB | 931fa513cc26c268b25b6bfd4e12de2e | [Host](https://sites.cttc.cat/gnss_files/SDK/Warrior/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Warrior/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-warrior-21.08.0.target.manifest) | +| Thud | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/thud-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Thud/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.sh"} | 2.06 GB | 79f00e47ba437fb73afaf4937dbea3d8 | [Host](https://sites.cttc.cat/gnss_files/SDK/Thud/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Thud/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-thud-21.08.0.target.manifest) | +| Sumo | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/sumo-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Sumo/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.sh"} | 1.54 GB | 118968d0194718ccdbdff8122eea210d | [Host](https://sites.cttc.cat/gnss_files/SDK/Sumo/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Sumo/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-sumo-21.08.0.target.manifest) | +| Rocko | [v21.08](https://github.com/carlesfernandez/oe-gnss-sdr-manifest/releases/tag/rocko-21.08) | [SDK](https://sites.cttc.cat/gnss_files/SDK/Rocko/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.sh){:download="geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.sh"} | 1.24 GB | 12d1eb7fb3a2446e03325ddb12adf4c4 | [Host](https://sites.cttc.cat/gnss_files/SDK/Rocko/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Rocko/geniux-x86_64-gnss-sdr-dev-image-zedboard-zynq7-toolchain-rocko-21.08.0.target.manifest) | +| Pyro | Abandoned | [SDK](https://sites.cttc.cat/gnss_files/SDK/Pyro/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh"} | 1.1 GB | 8ce7c2a732884e5487f592ae102780f1 | [Host](https://sites.cttc.cat/gnss_files/SDK/Pyro/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Pyro/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.target.manifest) | +| Morty | Abandoned | [SDK](https://sites.cttc.cat/gnss_files/SDK/Morty/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh"} | 1.0 GB | b2eb36d4ef2838586afa1bc6b44dc0f4 | [Host](https://sites.cttc.cat/gnss_files/SDK/Morty/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Morty/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.target.manifest) | +| Krogoth | Abandoned | [SDK](https://sites.cttc.cat/gnss_files/SDK/Krogoth/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh"} | 920 MB | 16af7ab553a0c8f553ba4d6ccc5d6bfe | [Host](https://sites.cttc.cat/gnss_files/SDK/Krogoth/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Krogoth/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.target.manifest) | +| Jethro | Abandoned | [SDK](https://sites.cttc.cat/gnss_files/SDK/Jethro/oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.sh){:download="oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.sh"} | 1.6 GB | d0419e9c1e0894a327af4d9560cf0294 | [Host](https://sites.cttc.cat/gnss_files/SDK/Jethro/oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.host.manifest), [Target](https://sites.cttc.cat/gnss_files/SDK/Jethro/oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.target.manifest) | Releases are listed from the most recent (top) to the oldest (bottom). All the diff --git a/_posts/2023-04-17-introducing-geniux-v2304.md b/_posts/2023-04-17-introducing-geniux-v2304.md new file mode 100644 index 00000000..81f24a2f --- /dev/null +++ b/_posts/2023-04-17-introducing-geniux-v2304.md @@ -0,0 +1,796 @@ +--- +title: "Introducing Geniux v23.04" +excerpt: "Geniux v23.04: a GNU/Linux custom distribution for running GNSS-SDR on embedded devices." +header: + teaser: /assets/images/geniux-teaser.png +tags: + - news + - embedded +author_profile: false +sidebar: + nav: "news" +toc: true +toc_sticky: true +last_modified_at: 2023-04-17T11:54:02+02:00 +--- + +![Geniux logo]({{ "/assets/images/geniux-logo.png" | relative_url }}){:width="500px"}{: .align-center .invert-colors} + +Geniux (**G**NSS-SDR for **E**mbedded G**N**U/L**i**n**ux**) is a customized GNU/Linux distribution +for developing and running GNSS-SDR on embedded devices, based on the [Yocto +Project](https://www.yoctoproject.org/). This Operating System includes a +specific set of popular tools, libraries, and device drivers tailored for +supporting an extended range of Software Defined Radio applications, helping to +bring them to production-ready deployments with an approach [widely adopted +throughout the embedded/IoT +industry](https://www.yoctoproject.org/is-yocto-project-for-you/). + +The Geniux distribution comes in different version names, following [those of +the Yocto Project](https://wiki.yoctoproject.org/wiki/Releases), being Rocko the +oldest supported version. Each version name is tagged with a timestamp, so +Geniux versions can evolve in time, but tagged versions can be reproduced at any +time in the future. In addition, each version and each time tag can be built for +a particular board or machine. This is expressed in the figure below: + +![Geniux evolution]({{ "/assets/images/geniux-evolution.png" | relative_url }}){:width="800px"}{: .align-center .invert-colors} +_Geniux keeps the pace of the software ecosystem evolution, but older versions +are still reproducible. Virtualization technology allows reproducing images +regardless of the software stack running at the host system building it_. +{: style="text-align: center;"} + +Those names (Rocko, Sumo, Thud, Warrior, Zeus, etc.) represent major Geniux +versions. Then, each named version can have time tags (in the figure above, +`20.09` and `20.10`). All versions have a `latest` tag pointing to the latest +commit. Each named version with a time tag can be built for different +boards or machines (in the figure above, `zedboard-zynq7` and `rasperrypi3`). + + +## Version naming + +The Geniux distribution follows the versioning format +`VERSION_NAME-MANIFEST_DATE.CONF_NUMBER`, where: + +* VERSION_NAME follows those of the [Yocto Project + releases](https://wiki.yoctoproject.org/wiki/Releases). + - `rocko`, `sumo`, `thud`, `warrior`, `zeus`, `dunfell`, `gatesgarth`, + `hardknott`, `honister`, `kirkstone`, `langdale`. +* MANIFEST_DATE follows the tag names at + [https://github.com/carlesfernandez/oe-gnss-sdr-manifest](https://github.com/carlesfernandez/oe-gnss-sdr-manifest). + The time tag `latest` always exists for each version name, and points to the + latest release. + - `20.09`, `21.02`, ..., `21.08`, `22.02`, `22.06`, `23.04`, `latest`. +* CONF_NUMBER: minor version number. + - `0`, `1`, ... + +Example of version name: `rocko-23.04.0`. + + +## Generating Geniux images for a specific version, time tag, and machine + +The generation of images and SDKs for a given Geniux version, time tag, and +machine in a virtualized environment is automated by the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repository. With +[Docker](https://www.docker.com/) already installed and running on your system, +clone the Git repository and go to its base path: + +```console +$ git clone https://github.com/carlesfernandez/yocto-geniux +$ cd yocto-geniux +``` + +Now you are ready to build Geniux images for the release you want with a single +command, by using the `geniux-builder.sh` script. Taking a look at its help +message: + +```console +$ ./geniux-builder.sh --help +``` + +You should get: +``` +This script builds and stores Geniux images. + +Usage: +./geniux-builder.sh [version] [manifest] [machine] (--image-only / -i) + +Options: + version Geniux version (from oldest to most recent): + rocko, sumo, thud, warrior, zeus, dunfell, + gatesgarth, hardknott, honister, kirkstone, langdale. Default: dunfell + Check available branches at https://github.com/carlesfernandez/meta-gnss-sdr + manifest Geniux version manifest: 21.02, 21.08, 22.02, 22.06, 23.04, latest. Default: latest + Dated manifests available at https://github.com/carlesfernandez/oe-gnss-sdr-manifest/tags + machine Specify your (list of) MACHINE here. By default, zedboard-zynq7 and raspberrypi3 are built. + If more than one, surround it with quotes, e.g.: "raspberrypi4-64 intel-corei7-64" + --image-only / -i (optional) Build the image but do not execute the container. + +Environment variables that affect behavior: + GENIUX_MIRROR_PATH Base path to local mirror. Only used if set. + e.g.: 'export GENIUX_MIRROR_PATH=/home/carlesfernandez/mirror' + The mirror is expected to be at '$GENIUX_MIRROR_PATH/sources/$version' + GENIUX_STORE_PATH Path in which products will be stored. Only used if set. + e.g.: 'export GENIUX_STORE_PATH=/home/carlesfernandez/geniux-releases' + GENIUX_STORE_REQUIRES_SUDO If set, the script will ask for super-user privileges to write in the store. + You will be asked only once at the beginning. The password will not be revealed. + e.g.: 'export GENIUX_STORE_REQUIRES_SUDO=1' +``` +{: class="no-copy"} + +You can find specific examples of how to use this script below. For more +advanced usage modes (*e.g.*, an interactive mode that allows you to make +changes and experiment), check the [instructions +here](https://github.com/carlesfernandez/yocto-geniux/blob/main/README.md). + +The building process takes several hours and requires a powerful host system +with at least 120 GB of free space in the hard disk and 32 GB of RAM. When +finished, you will get your products in the `output/` folder (or wherever the +`GENIUX_STORE_PATH` environment variable points to). Among others: + +* gnss-sdr-demo-image: an image containing gnss-sdr, ready to go. It defines the + "root" and "geniux" users, both with default password "geniux". +* gnss-sdr-dev-image: a development image with everything required for gnss-sdr, + **but without gnss-sdr**. You can cross-compile the binary and copy it to the + target filesystem. No password. +* Starting from Zeus v21.08, `wic.xz` and `wic.bmap` image files ready to de + deployed on an SD card. +* gnss-sdr-dev-docker: a Docker development image archive file for the target + architecture. +* A script that installs a software development kit (SDK) for + [cross-compiling]({{ "docs/tutorials/cross-compiling/" | relative_url }}). + +Please note that if the automated building process fails for some reason +(failing network connection, misconfiguration, disappeared source repositories, +shortage of free hard disk space, RAM memory or CPU resources, etc.) before it +finishes, the running container will be deleted and you will lose everything, so +you will need to start over again. For a safer procedure, you can use the +[interactive +mode](https://github.com/carlesfernandez/yocto-geniux/blob/main/README.md#interactive-method) +of the Docker image, which allows you to make changes, retry after a failure, +build other images, and save your products to `/home/geniux/yocto/output/` when +done, so _outside_ the Docker container. The container itself will be deleted at +exit. +{: .notice--info} + + +## Main features + +### Geniux Rocko 23.04.0 + +* Operating System based on the Yocto Project version 2.4.4. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.15.1, CMake v3.8.2, GCC v7.3.0 + (+ libgfortran), make v4.2.1, ninja v1.7.2, Python v2.7.14 and v3.5.3. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.7.13. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.6, Lapack v3.7.0, + VOLK v1.4.0. + - C++ supporting libraries: Boost v1.64.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.4.1, Pugixml + v1.11.4. + - Graphical representation: Gnuplot v5.0.5. + - Additional Python modules (_e.g._, Scipy, Matplotlib) can be installed + with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.10.2.0 (+ gr-uhd), + gr-osmosdr v0.1.4.1 (+ rtl-sdr, airspy, hackrf, and rfspace), gr-iio v0.3, + libiio v2019_R1, libad9361-iio v2019_R1, iio-oscilloscope v2019_R1. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/rocko/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=rocko), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=rocko), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/rocko/meta/conf/machine) + layers. +* The + [`meta-gnss-sdr`](https://github.com/carlesfernandez/meta-gnss-sdr/tree/rocko) + layer is compatible with Xilinx PetaLinux Tools v2018.3. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh rocko 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh rocko 23.04 zcu102-zynqmp +``` + +```console +$ ./geniux-builder.sh rocko 23.04 raspberrypi3 +``` + +```console +$ ./geniux-builder.sh rocko 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh rocko 23.04 qemuarm +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Sumo 23.04.0 + +* Operating System based on the Yocto Project version 2.5.3. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.15.1, CMake v3.10.3, GCC v7.3.0 + (+ libgfortran), make v4.2.1, ninja v1.8.2, Python v2.7.15 and v3.5.5. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.7.13.5. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.7, Lapack v3.7.0, + VOLK v1.5.0. + - C++ supporting libraries: Boost v1.66.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.5.1, Pugixml + v1.11.4. + - Graphical representation: Gnuplot v5.2.2. + - Additional Python modules (_e.g._, Scipy, Matplotlib) can be installed + with `pip3`. + * Software drivers and tools for RF front-ends: gr-osmosdr v0.1.4.1 (+ rtl-sdr + and hackrf), gr-iio v0.3, libiio v2019_R1, libad9361-iio v2019_R1, + iio-oscilloscope v2019_R1. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/sumo/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=sumo), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=sumo), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/sumo/meta/conf/machine) + layers. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh sumo 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh sumo 23.04 raspberrypi3 +``` + +```console +$ ./geniux-builder.sh sumo 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh sumo 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Thud 23.04.0 + +* Operating System based on the Yocto Project version 2.6.4. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.1, CMake v3.12.2, GCC v8.2.0 + (+ libgfortran), make v4.2.1, ninja v1.8.2, Python v2.7.16 and v3.5.6. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.7.14.0. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.8, Lapack v3.7.0, + VOLK v2.2.1. + - C++ supporting libraries: Boost v1.64.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.6.1, Pugixml + v1.11.4. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.2. + - Additional Python modules (_e.g._, Scipy, Matplotlib) can be installed + with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.13.0.1 (+ gr-uhd), + libiio v2019_R2, libad9361-iio v2019_R2, iio-oscilloscope v2019_R2. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/rel-v2019.2/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=thud), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=thud), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/thud/meta/conf/machine) + layers. + * The `meta-xilinx` layer points to the `rel-v2019.2` branch. +* The + [`meta-gnss-sdr`](https://github.com/carlesfernandez/meta-gnss-sdr/tree/thud) + layer is compatible with Xilinx PetaLinux Tools v2019.2. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh thud 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh thud 23.04 zcu102-zynqmp +``` + +```console +$ ./geniux-builder.sh thud 23.04 raspberrypi3 +``` + + +```console +$ ./geniux-builder.sh thud 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh thud 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Warrior 23.04.0 + +* Operating System based on the Yocto Project version 2.7.4. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.1, CMake v3.14.1, GCC v8.3.0 + (+ libgfortran), make v4.2.1, ninja v1.9.0, Python v2.7.18 and v3.7.7. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.8.2.0. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.7.0, + VOLK v2.3.0. + - C++ supporting libraries: Boost v1.69.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.6.1, Pugixml + v1.11.4. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.2. + - Additional Python modules (_e.g._, Scipy, Matplotlib) can be installed + with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), + gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, + libad9361-iio v0.2, iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/warrior/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=warrior), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=warrior), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/warrior/meta/conf/machine) + layers. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh warrior 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh warrior 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh warrior 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh warrior 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Zeus 23.04.0 + +* Operating System based on the Yocto Project version 3.0.4. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.1, CMake v3.15.3, GCC v9.2.0 + (+ libgfortran), make v4.2.1, ninja v1.9.0, Python v2.7.18 and v3.7.8. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.8.2.0. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.7.0, + VOLK v2.3.0. + - C++ supporting libraries: Boost v1.71.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.9.2, Pugixml + v1.11.4. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.2, + Matplotlib v3.1.1. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), + gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, + libad9361-iio v0.2, iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/rel-v2020.3/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=zeus), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=zeus), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/zeus/meta/conf/machine) + layers. + * The `meta-xilinx` layer points to `rel-v2020.3` branch. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh zeus 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh zeus 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh zeus 23.04 intel-skylake-64 +``` + +```console +$ ./geniux-builder.sh zeus 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Dunfell 23.04.0 + +* Operating System based on the Yocto Project version 3.1.24 LTS. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.1, CMake v3.16.5, GCC v9.5.0 + (+ libgfortran), make v4.3, ninja v1.10.0, Python v3.8.12. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.8.5.0. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.7.0, + VOLK v2.4.1. + - C++ supporting libraries: Boost v1.72.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.11.4, Pugixml + v1.11.4. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.8, + Matplotlib v3.2.1. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), + gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, + libad9361-iio v0.2, iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/gatesgarth/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=dunfell), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=dunfell), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/dunfell/meta/conf/machine) + layers. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh dunfell 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh dunfell 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh dunfell 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh dunfell 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Gatesgarth 23.04.0 + +* Operating System based on the Yocto Project version 3.2.4. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.2, CMake v3.18.2, GCC v10.2.0 + (+ libgfortran), make v4.3, ninja v1.10.1, Python v3.8.5. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.9.5.0. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, + VOLK v2.5.0. + - C++ supporting libraries: Boost v1.74.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.13.0, Pugixml + v1.13. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.8, + Matplotlib v3.3.2. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), + gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, + libad9361-iio v0.2, iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/rel-v2021.2/meta-xilinx-bsp/conf/machine/), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=gatesgarth), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=gatesgarth), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/gatesgarth/meta/conf/machine) + layers. + * The `meta-xilinx` layer points to the `rel-v2021.2` branch. + * Use `linux-xlnx` kernel for `zedboard-zynq7` machine, based on Linux kernel + 5.10. + * The + [`meta-gnss-sdr`](https://github.com/carlesfernandez/meta-gnss-sdr/tree/gatesgarth) + layer is compatible with Xilinx PetaLinux Tools v2021.2. + + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh gatesgarth 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh gatesgarth 23.04 zc706-zynq7 +``` + +```console +$ ./geniux-builder.sh gatesgarth 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh gatesgarth 23.04 intel-skylake-64 +``` + +```console +$ ./geniux-builder.sh gatesgarth 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Hardknott 23.04.0 + +* Operating System based on the Yocto Project version 3.3.6. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.3, CMake v3.19.5, GCC v10.3.0 + (+ libgfortran), make v4.3, ninja v1.10.2, Python v3.9.9. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.9.5.0. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, + VOLK v2.5.0. + - C++ supporting libraries: Boost v1.75.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.15.2, Pugixml + v1.13. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.8, + Matplotlib v3.4.1. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), + gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, + libad9361-iio v0.2, iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=hardknott), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=hardknott), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/hardknott/meta/conf/machine) + layers. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh hardknott 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh hardknott 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh hardknott 23.04 qemuarm64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + + +### Geniux Honister 23.04.0 + +* Operating System based on the Yocto Project version 3.4.4. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.3, CMake v3.21.1, GCC v11.2.0 + (+ libgfortran), make v4.3, ninja v1.10.2, Python v3.9.9. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.10.2. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, + VOLK v2.5.0. + - C++ supporting libraries: Boost v1.77.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.18.0, Pugixml + v1.13. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.4.1, + Matplotlib v3.4.1. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD 4.3 (+ gr-uhd), gr-iio, + gr-osmosdr v0.2.0 (+ rtl-sdr and hackrf), libiio v0.24, libad9361-iio v0.2, + iio-oscilloscope v0.14. + +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/rel-v2022.2/meta-xilinx-bsp/conf/machine/), + [`meta-xilinx-vendor`](https://github.com/Xilinx/meta-xilinx/tree/rel-v2022.2/meta-xilinx-vendor/conf/machine), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=honister), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=honister), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/honister/meta/conf/machine) + layers. + * The `meta-xilinx` layer points to the `rel-v2022.2` branch. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh honister 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh honister 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh honister 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh honister 23.04 zc706-zynq7 +``` + +```console +$ ./geniux-builder.sh honister 23.04 zcu102-zynqmp +``` + +```console +$ ./geniux-builder.sh honister 23.04 zcu208-zynqmp +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +### Geniux Kirkstone 23.04.0 + +* Operating System based on the Yocto Project version 4.0.8 LTS. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.5, CMake v3.22.3, GCC v11.2.0 + (+ libgfortran), make v4.3, ninja v1.10.2, Python v3.10.4. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.10.5.0-rc1 + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, + VOLK v2.5.2. + - C++ supporting libraries: Boost v1.77.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.19.4, Pugixml + v1.13. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.4.3, + Matplotlib v3.5.1. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD 4.3 (+ gr-uhd), gr-iio, + gr-osmosdr v0.2.0 (+ rtl-sdr and hackrf), libiio v0.24, libad9361-iio v0.2, + iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=kirkstone), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=kirkstone), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/kirkstone/meta/conf/machine) + layers. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh kirkstone 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh kirkstone 23.04 raspberrypi4-64 +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + + + +### Geniux Langdale 23.04.0 + +* Operating System based on the Yocto Project version 4.1.3. +* It brings, among many others, the following software packages: + * Development tools: Automake v1.16.5, CMake v3.24.0, GCC v12.2.0 + (+ libgfortran), make v4.3, ninja v1.11.1, Python v3.10.6. + * Goodies for signal processing: + - GNSS-SDR v0.0.18. + - SDR framework: GNU Radio v3.10.3. + - Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.10, Lapack v3.10.1, + VOLK v2.5.2. + - C++ supporting libraries: Boost v1.80.0, gflags v2.2.2, glog v0.5.0, + googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.21.5, Pugixml + v1.13. + - Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.4.3, + Matplotlib v3.5.3. + - Additional Python modules (_e.g._, Scipy) can be installed with `pip3`. + * Software drivers and tools for RF front-ends: UHD 4.3 (+ gr-uhd), gr-iio, + gr-osmosdr v0.2.0 (+ rtl-sdr and hackrf), libiio v0.23, libad9361-iio v0.2, + iio-oscilloscope v0.14. +* It can be built for machines defined by the + [`meta-xilinx-bsp`](https://github.com/Xilinx/meta-xilinx/tree/langdale/meta-xilinx-bsp/conf/machine/), + [`meta-xilinx-vendor`](https://github.com/Xilinx/meta-xilinx/tree/langdale/meta-xilinx-vendor/conf/machine), + [`meta-raspberrypi`](https://git.yoctoproject.org/meta-raspberrypi/tree/conf/machine?h=langdale), + [`meta-intel`](https://git.yoctoproject.org/meta-intel/tree/conf/machine?h=langdale), + and + [`openembedded-core/meta`](https://github.com/openembedded/openembedded-core/tree/langdale/meta/conf/machine) + layers. + +Examples on how to generate images and the SDK using the +[yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) repo: + +```console +$ ./geniux-builder.sh langdale 23.04 intel-corei7-64 +``` + +```console +$ ./geniux-builder.sh langdale 23.04 raspberrypi4-64 +``` + +```console +$ ./geniux-builder.sh langdale 23.04 zedboard-zynq7 +``` + +```console +$ ./geniux-builder.sh langdale 23.04 zcu208-zynqmp +``` + +You can replace `23.04` by `latest` in order to get the latest developments. + +## Flashing images on an SD card + +Starting from Geniux Zeus 21.08, the `geniux-builder.sh` script produces `.wic` +images that can be flashed on an SD card and your device will be ready to go. +For image flashing, we recommend using a software tool such as [Balena +Etcher](https://www.balena.io/etcher/). Just pick up the +`gnss-sdr-demo-image-$MACHINE-yyyymmddHHMMSS.rootfs.wic.xz` file, flash your SD +card, insert it in your device, and it will be ready to boot and run `gnss-sdr`. +Other flashing options [here]({{ +"/docs/tutorials/cross-compiling/#copying-an-image-file-to-your-sd-card" | +relative_url }}). + +## Key repositories + +All the required information for building a Geniux release is contained in three +public repositories: + +* **meta-gnss-sdr layer**: Yocto layer defining all the packages in the Geniux + distribution, including the recipes for downloading and building them, their + cryptographic hash, the way to create customized full-system images. + * URL: + [https://github.com/carlesfernandez/meta-gnss-sdr](https://github.com/carlesfernandez/meta-gnss-sdr) + * Each Geniux version is defined in a different branch: `rocko`, `sumo`, + `thud`, `warrior`, `zeus`, `dunfell`, `gatesgarth`, `hardknott`, `honister`, + `kirkstone`, `langdale`. Those branches are updated as we learn more about the Yocto + Project usage, so they evolve in time. +* **oe-gnss-sdr-manifest**: Manifest containing the specific commits of all + the other Yocto layers required to build Geniux (notably, + [openembedded-core](https://github.com/openembedded/openembedded-core), + [meta-openembedded](https://github.com/openembedded/meta-openembedded), + [meta-qt5](https://github.com/meta-qt5/meta-qt5), + [meta-sdr](https://github.com/balister/meta-sdr), + [meta-xilinx](https://github.com/Xilinx/meta-xilinx), + [meta-raspberrypi](https://git.yoctoproject.org/meta-raspberrypi), + [meta-intel](https://git.yoctoproject.org/meta-intel), etc.). + * URL: + [https://github.com/carlesfernandez/oe-gnss-sdr-manifest](https://github.com/carlesfernandez/oe-gnss-sdr-manifest) + * Each Geniux version is defined in a different branch: `rocko`, `sumo`, + `thud`, `warrior`, `zeus`, `dunfell`, `gatesgarth`, `hardknott`, `honister`, + `kirkstone`, `langdale`. + * Tags: each tag corresponds to a version of the manifest in which the + `meta-gnss-sdr` has been pinned to a specific commit. This allows + fully-reproducible buildings in the future since it defines a + fully-specified software system set. Examples: `rocko-20.09`, `sumo-20.09`, + `thud-20.09`, etc. + * In the above instructions, when `MANIFEST_DATE` is set to `latest`, all the + layers are pinned to a specific commit but except the `meta-gnss-sdr` layer, + which points to whatever it is in the corresponding branch of that layer at + that point of time. +* **yocto-geniux**: Tool for the virtualization and automation of the building + process. + * URL: + [https://github.com/carlesfernandez/yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) + +If you miss any feature on Geniux, or have an idea on how to make it better, +pull requests and issues are welcome on those repositories. Their contents are +released under the [MIT License](https://opensource.org/licenses/MIT). + + +## Disclaimer + +Yocto Project and all related marks and logos are trademarks of The Linux +Foundation. This website is not, in any way, endorsed by the Yocto Project or +[The Linux Foundation](https://linuxfoundation.org/). + + + + + +Enjoy Geniux! diff --git a/_quick-start/01-quick-start-guide.md b/_quick-start/01-quick-start-guide.md index 02fe5d26..aab3b4be 100644 --- a/_quick-start/01-quick-start-guide.md +++ b/_quick-start/01-quick-start-guide.md @@ -18,7 +18,7 @@ The name is not a bragging display of creativity: encompasses those systems that allow users to compute their position based on signals transmitted by satellites, world-wide. The obvious example is [GPS](https://www.gps.gov/), but this term also includes other systems such as - [GLONASS](https://www.glonass-iac.ru/en/), + [GLONASS](https://glonass-iac.ru/en/about_glonass/), [Galileo](https://www.gsc-europa.eu/galileo/what-is-galileo), and [BeiDou](http://en.beidou.gov.cn/). diff --git a/_sp-blocks/10-telemetry-decoder.md b/_sp-blocks/10-telemetry-decoder.md index d3104775..c7e50e52 100644 --- a/_sp-blocks/10-telemetry-decoder.md +++ b/_sp-blocks/10-telemetry-decoder.md @@ -6,7 +6,7 @@ sidebar: nav: "sp-block" toc: true toc_sticky: true -last_modified_at: 2022-02-09T10:54:02+02:00 +last_modified_at: 2023-09-13T10:54:02+02:00 --- @@ -72,17 +72,17 @@ satellite. This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `GPS_L1_CA_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `GPS_L1_CA_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`GPS_L1_CA_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -146,18 +146,19 @@ coding are applied to the Galileo message data stream: This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `Galileo_E1B_Telemetry_Decoder` | Mandatory | -| `enable_reed_solomon` | [`true`, `false`]: If set to `true`, it enables the FEC2 Erasure Correction defined for the Galileo E1B INAV message at [OS ICD v2.0](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf). It defaults to `false`. | Optional | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `Galileo_E1B_Telemetry_Decoder` | Mandatory | +| `enable_reed_solomon` | [`true`, `false`]: If set to `true`, it enables the FEC2 Erasure Correction defined for the Galileo E1B INAV message at [OS ICD v2.0](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf). It defaults to `false`. | Optional | +| `use_reduced_ced` | [`true`, `false`]: If set to `true`, it enables the use of the reduced CED parameters transmitted in Galileo E1B INAV message. It defaults to `false`. This configuration parameter is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | Optional | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`Galileo_E1B_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -192,17 +193,17 @@ $$ D_{\text{I/NAV}} \in \{1, -1 \} $$ navigation message in its Inphase componen This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `Galileo_E5b_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `Galileo_E5b_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`Galileo_E5b_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -267,17 +268,17 @@ parameters. This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `GLONASS_L1_CA_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `GLONASS_L1_CA_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`GLONASS_L1_CA_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -296,17 +297,17 @@ TelemetryDecoder_1G.dump=false This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `GLONASS_L2_CA_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `GLONASS_L2_CA_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`GLONASS_L2_CA_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -351,17 +352,17 @@ _GPS L2 CNAV message structure. Source: [Navipedia](https://gssc.esa.int/naviped This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `GPS_L2C_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `GPS_L2C_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`GPS_L2C_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -405,17 +406,17 @@ _GPS L5 CNAV message structure. Source: [Navipedia](https://gssc.esa.int/naviped This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `GPS_L5_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `GPS_L5_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`GPS_L5_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -460,17 +461,17 @@ This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `Galileo_E5a_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `Galileo_E5a_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`Galileo_E5a_Telemetry_Decoder`**. {: style="text-align: center;"} @@ -504,17 +505,17 @@ T_{c,E6B}=\frac{1}{5.115} $$ $$\mu $$s. This implementation accepts the following parameters: |---------- -| **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| -|-------------- -| `implementation` | `Galileo_E6_Telemetry_Decoder` | Mandatory | -| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | -| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | -| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | -| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | -|-------------- +| **Parameter** | **Description** | **Required** | +| :-----------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | +| -------------- | +| `implementation` | `Galileo_E6_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +| -------------- | _Telemetry Decoder implementation:_ **`Galileo_E6_Telemetry_Decoder`**. {: style="text-align: center;"} diff --git a/_sp-blocks/12-pvt.md b/_sp-blocks/12-pvt.md index 43bb01f6..c8efcdf7 100644 --- a/_sp-blocks/12-pvt.md +++ b/_sp-blocks/12-pvt.md @@ -6,7 +6,7 @@ sidebar: nav: "sp-block" toc: true toc_sticky: true -last_modified_at: 2023-02-14T09:54:02+02:00 +last_modified_at: 2023-10-05T07:54:02+02:00 --- The _PVT_ block is the last one in the GNSS-SDR flow graph. Hence, it acts as a @@ -52,7 +52,7 @@ where $$ \mathbf{r}_r $$ is the receiver's antenna position in an earth-centered, earth-fixed (ECEF) coordinate system (in meters), $$ c $$ is the speed of light, and $$ dt_r $$ is the receiver clock bias (in seconds). -The measurement vector is defined as: +The measurement vector is defi $$ \begin{equation} \mathbf{y} = \left(P_r^{(1)}, P_r^{(2)}, P_r^{(3)}, ..., P_r^{(m)} \right)^T~. \end{equation} $$ @@ -165,8 +165,9 @@ where: - $$ El_r^{(s)} $$ is the elevation angle of satellite direction (in rad). - - $$ \sigma_{bclock,s} = 30 $$ is the standard deviation of the broadcast - clock error (in m). + - $$ \sigma_{bclock,s} $$ is the standard deviation of the broadcast ephemeris + and clock error (in m). This parameter is estimated internally from URA (User + Range Accuracy) or or similar indicators. - $$ \sigma_{ion,s} $$ is the standard deviation of ionosphere correction model error (in m). This parameter is set to $$ \sigma_{ion} = 5 $$ m by @@ -814,8 +815,6 @@ function](https://gssc.esa.int/navipedia/index.php/Mapping_of_Niell)[^Niell96]. The zenith total delay $$ Z_{T,r} $$ is estimated as an unknown parameter in the parameter estimation process. - - ## Estimate the tropospheric zenith total delay and gradient If the processing option `trop_model` is set to `Estimate_ZTD_Grad`, a more @@ -826,14 +825,122 @@ $$ \begin{equation} \!\!\!\!\!\!\!\!\!\!\!\!\!\!m\left(El_{r}^{(s)}\right)\! = \!m_{W}\left(El_{r}^{(s)}\right)\!\left[1\!+\!\cot \! \left(El_{r}^{(s)}\right) \! \left( \! G_{N,r} \cos \! \left(Az_{r}^{(s)}\right) \!+\! G_{E,r} \sin \! \left(Az_{r}^{(s)}\right)\!\right) \!\right] \end{equation} $$ -where $$ Az_{r}^{(s)} $$ is the azimuth angle of satellite direction (rad), and -$$ G_{E,r} $$ and $$ G_{N,r} $$ are the east and north components of the +where $$ Az_{r}^{(s)} $$ is the azimuth angle of satellite direction (rad), and $$ G_{E,r} $$ and $$ G_{N,r} $$ are the east and north components of the tropospheric gradient, respectively. The zenith total delay $$ Z_{T,r} $$ and the gradient parameters $$ G_{E,r} $$ and $$ G_{N,r} $$ are estimated as unknown parameters in the parameter estimation process. +## A de-noising Kalman filter for the PVT solution + +The `PVT` block can apply a simple Kalman filter to the computed PVT solutions. +This filter can be enabled by setting `PVT.enable_pvt_kf=true` in the +configuration file. The structure of this filter is as follows: + +- **State model:** + $$ \begin{equation} + \mathbf{x} = \left[ x, y, z, v_x, v_y, v_z \right]^{T} + \end{equation} $$ + + $$ \begin{equation} + \mathbf{x}_k = \mathbf{F} \mathbf{x}_{k-1} + \mathbf{v}_k~, \quad \mathbf{v}_k \sim \mathcal{N}(\mathbf{0},\mathbf{Q}) + \end{equation} $$ + + $$ \begin{equation} + \textbf{F} = \left[ \begin{array}{cccccc} + 1 & 0 & 0 & T & 0 & 0 \\ + 0 & 1 & 0 & 0 & T & 0 \\ + 0 & 0 & 1 & 0 & 0 & T \\ + 0 & 0 & 0 & 1 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 1 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 1 + \end{array} \right] + \end{equation} $$ + + $$ \begin{equation} + \textbf{Q} = \begin{bmatrix} + \sigma_{s\_pos}^{2} & 0 & 0 & 0 & 0 & 0 \\ + 0 & \sigma_{s\_pos}^{2} & 0 & 0 & 0 & 0 \\ + 0 & 0 & \sigma_{s\_pos}^{2} & 0 & 0 & 0 \\ + 0 & 0 & 0 & \sigma_{s\_vel}^{2} & 0 & 0 \\ + 0 & 0 & 0 & 0 & \sigma_{s\_vel}^{2} & 0 \\ + 0 & 0 & 0 & 0 & 0 & \sigma_{s\_vel}^{2} + \end{bmatrix} + \end{equation} $$ + +- **Measurement model:** + $$ \begin{equation} + \mathbf{z} = \left[ x , y , z , v_{x}, v_{y}, v_{z} \right]^{T} + \end{equation} $$ + + $$ \begin{equation} + \mathbf{z}_k = \mathbf{H}\mathbf{x}_k + \mathbf{w}_k , \quad \mathbf{w}_k \sim \mathcal{N}(\mathbf{0},\mathbf{R}) + \end{equation} $$ + + $$ \begin{equation} \textbf{H} = \begin{bmatrix} + 1 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 1 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 1 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 1 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 1 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 1 + \end{bmatrix} \end{equation} $$ + + $$ \begin{equation} \textbf{R} = \begin{bmatrix} + \sigma_{m\_pos}^{2} & 0 & 0 & 0 & 0 & 0 \\ + 0 & \sigma_{m\_pos}^{2} & 0 & 0 & 0 & 0 \\ + 0 & 0 & \sigma_{m\_pos}^{2} & 0 & 0 & 0 \\ + 0 & 0 & 0 & \sigma_{m\_vel}^{2} & 0 & 0 \\ + 0 & 0 & 0 & 0 & \sigma_{m\_vel}^{2} & 0 \\ + 0 & 0 & 0 & 0 & 0 & \sigma_{m\_vel}^{2} + \end{bmatrix} \end{equation} $$ + +- **Initialization:** + $$ \begin{equation} + \mathbf{x}_{0|0} = \left[ \begin{array}{cccc} x_{0} & y_{0} & z_{0} & v_{x_{0}} & v_{y_{0}} & v_{z_{0}} \end{array} \right]^T + \end{equation} $$ + + $$\begin{equation} + \mathbf{P}_{0|0} = \begin{bmatrix} + \sigma_{s\_pos}^{2} & 0 & 0 & 0 & 0 & 0 \\ + 0 & \sigma_{s\_pos}^{2} & 0 & 0 & 0 & 0 \\ + 0 & 0 & \sigma_{s\_pos}^{2} & 0 & 0 & 0 \\ + 0 & 0 & 0 & \sigma_{s\_vel}^{2} & 0 & 0 \\ + 0 & 0 & 0 & 0 & \sigma_{s\_vel}^{2} & 0 \\ + 0 & 0 & 0 & 0 & 0 & \sigma_{s\_vel}^{2} + \end{bmatrix} + \end{equation} $$ + +- **Prediction:** + $$ \begin{equation} + \hat{\mathbf{x}}_{k|k-1} = \mathbf{F} \hat{\mathbf{x}}_{k-1|k-1} + \end{equation} $$ + + $$ \begin{equation} + \mathbf{P}_{k|k-1} = \mathbf{F} \mathbf{P}_{k-1|k-1} \mathbf{F}^T + \mathbf{Q} + \end{equation} $$ + +- **Update:** + $$ \begin{equation} + \mathbf{K}_k = \mathbf{P}_{k|k-1} \mathbf{H}^T \left( \mathbf{H}\mathbf{P}_{k|k-1} \mathbf{H}^T + \mathbf{R} \right)^{-1} + \end{equation} $$ + + $$ \begin{equation} + \hat{\mathbf{x}}_{k|k} = \hat{\mathbf{x}}_{k|k-1} + \mathbf{K}_k \left( \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k|k-1} \right) + \end{equation} $$ + + $$ \begin{equation} + \mathbf{P}_{k|k} = \left( \mathbf{I} - \mathbf{K}_{k} \mathbf{H} \right)\mathbf{P}_{k|k-1} + \end{equation} $$ + +The following parameters are exposed in the configuration, here with their defaut values: + +- $$ \sigma_{m\_pos} = \text{PVT.kf_measures_ecef_pos_sd_m} = 1.0 \text {, in [m].} $$ +- $$ \sigma_{m\_vel} = \text{PVT.kf_measures_ecef_vel_sd_ms} = 0.1 \text {, in [m/s].} $$ +- $$ \sigma_{s\_pos} = \text{PVT.kf_system_ecef_pos_sd_m} = 0.01 \text {, in [m].} $$ +- $$ \sigma_{s\_vel} = \text{PVT.kf_system_ecef_vel_sd_ms} = 0.001 \text {, in [m/s].} $$ + --------- @@ -880,12 +987,12 @@ messages, v3.2. A TCP/IP server of RTCM messages can be enabled by setting the execution of the software receiver. By default, the server will operate on port 2101 (which is the recommended port for RTCM services according to the Internet Assigned Numbers Authority, -[IANA](https://www.iana.org/assignments/service-names-port-numbers "Service Name -and Transport Protocol Port Number Registry")), and will identify the Reference -Station with ID= $$ 1234 $$. These values can be changed with +[IANA](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml +"Service Name and Transport Protocol Port Number Registry")), and will identify +the Reference Station with ID= $$ 1234 $$. These values can be changed with `PVT.rtcm_tcp_port` and `PVT.rtcm_station_id`. The rate of the generated RTCM -messages can be tuned with the options `PVT.rtcm_MT1045_rate_ms` (it defaults to $$ -5000 $$ ms), `PVT.rtcm_MT1019_rate_ms` (it defaults to $$ 5000 $$ ms), +messages can be tuned with the options `PVT.rtcm_MT1045_rate_ms` (it defaults to +$$ 5000 $$ ms), `PVT.rtcm_MT1019_rate_ms` (it defaults to $$ 5000 $$ ms), `PVT.rtcm_MSM_rate_ms` (it defaults to $$ 1000 $$ ms). The RTCM messages can also be forwarded to the serial port `PVT.rtcm_dump_devname` (it defaults to `/dev/pts/1`) by setting `PVT.flag_rtcm_tty_port=true` in the configuration @@ -910,38 +1017,45 @@ Java, Python, C#, Dart, Go, or Ruby, among other languages, hence enhancing The following table shows the complete list of streamed parameters: |---------- -| **Name** | **Type** | **Description** | -| :------------------------: | :--------: | :------------------------------------------------------------------------- | +| **Name** | **Type** | **Description** | +| :------------------------: | :--------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | -------------- | -| `tow_at_current_symbol_ms` | `uint32_t` | Time of week of the current symbol, in [ms]. | -| `week` | `uint32_t` | PVT GPS week. | -| `rx_time` | `double` | PVT GPS time. | -| `user_clk_offset` | `double` | User clock offset, in [s]. | -| `pos_x` | `double` | Position X component in ECEF, expressed in [m]. | -| `pos_y` | `double` | Position Y component in ECEF, expressed in [m]. | -| `pos_z` | `double` | Position Z component in ECEF, expressed in [m]. | -| `vel_x` | `double` | Velocity X component in ECEF, expressed in [m/s]. | -| `vel_y` | `double` | Velocity Y component in ECEF, expressed in [m/s]. | -| `vel_z` | `double` | Velocity Z component in ECEF, expressed in [m/s]. | -| `cov_xx` | `double` | Position variance in the X component, $$ \sigma_{xx}^2 $$, in [$$ m^2 $$]. | -| `cov_yy` | `double` | Position variance in the Y component, $$ \sigma_{yy}^2 $$, in [$$ m^2 $$]. | -| `cov_zz` | `double` | Position variance in the X component, $$ \sigma_{zz}^2 $$, in [$$ m^2 $$]. | -| `cov_xy` | `double` | Position XY covariance $$ \sigma_{xy}^2 $$, in [$$ m^2 $$]. | -| `cov_yz` | `double` | Position YZ covariance $$ \sigma_{yz}^2 $$, in [$$ m^2 $$]. | -| `cov_zx` | `double` | Position ZX covariance $$ \sigma_{zx}^2 $$, in [$$ m^2 $$]. | -| `latitude` | `double` | Latitude, in [deg]. Positive: North. | -| `longitude` | `double` | Longitude, in [deg]. Positive: East. | -| `height` | `double` | Height, in [m]. | -| `valid_sats` | `uint32_t` | Number of valid satellites. | -| `solution_status` | `uint32_t` | RTKLIB solution status. | -| `solution_type` | `uint32_t` | RTKLIB solution type (`0`: xyz-ecef, `1`: enu-baseline). | -| `ar_ratio_factor` | `float` | Ambiguity resolution ratio factor for validation. | -| `ar_ratio_threshold` | `float` | Ambiguity resolution ratio threshold for validation. | -| `gdop` | `double` | Geometric dilution of precision (GDOP). | -| `pdop` | `double` | Position (3D) dilution of precision (PDOP). | -| `hdop` | `double` | Horizontal dilution of precision (HDOP). | -| `vdop` | `double` | Vertical dilution of precision (VDOP). | -| `user_clk_drift_ppm` | `double` | User clock drift, in parts per million. | +| `tow_at_current_symbol_ms` | `uint32_t` | Time of week of the current symbol, in [ms]. | +| `week` | `uint32_t` | PVT GPS week. | +| `rx_time` | `double` | PVT GPS time. | +| `user_clk_offset` | `double` | User clock offset, in [s]. | +| `pos_x` | `double` | Position X component in ECEF, expressed in [m]. | +| `pos_y` | `double` | Position Y component in ECEF, expressed in [m]. | +| `pos_z` | `double` | Position Z component in ECEF, expressed in [m]. | +| `vel_x` | `double` | Velocity X component in ECEF, expressed in [m/s]. | +| `vel_y` | `double` | Velocity Y component in ECEF, expressed in [m/s]. | +| `vel_z` | `double` | Velocity Z component in ECEF, expressed in [m/s]. | +| `cov_xx` | `double` | Position variance in the X component, $$ \sigma_{xx}^2 $$, in [$$ m^2 $$]. | +| `cov_yy` | `double` | Position variance in the Y component, $$ \sigma_{yy}^2 $$, in [$$ m^2 $$]. | +| `cov_zz` | `double` | Position variance in the X component, $$ \sigma_{zz}^2 $$, in [$$ m^2 $$]. | +| `cov_xy` | `double` | Position XY covariance $$ \sigma_{xy}^2 $$, in [$$ m^2 $$]. | +| `cov_yz` | `double` | Position YZ covariance $$ \sigma_{yz}^2 $$, in [$$ m^2 $$]. | +| `cov_zx` | `double` | Position ZX covariance $$ \sigma_{zx}^2 $$, in [$$ m^2 $$]. | +| `latitude` | `double` | Latitude, in [deg]. Positive: North. | +| `longitude` | `double` | Longitude, in [deg]. Positive: East. | +| `height` | `double` | Height, in [m]. | +| `valid_sats` | `uint32_t` | Number of valid satellites. | +| `solution_status` | `uint32_t` | RTKLIB solution status. | +| `solution_type` | `uint32_t` | RTKLIB solution type (`0`: xyz-ecef, `1`: enu-baseline). | +| `ar_ratio_factor` | `float` | Ambiguity resolution ratio factor for validation. | +| `ar_ratio_threshold` | `float` | Ambiguity resolution ratio threshold for validation. | +| `gdop` | `double` | Geometric dilution of precision (GDOP). | +| `pdop` | `double` | Position (3D) dilution of precision (PDOP). | +| `hdop` | `double` | Horizontal dilution of precision (HDOP). | +| `vdop` | `double` | Vertical dilution of precision (VDOP). | +| `user_clk_drift_ppm` | `double` | User clock drift, in parts per million. | +| `utc_time` | `string` | PVT UTC time ([RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) datetime string). This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | +| `vel_e` | `double` | East component of the velocity in the local ENU frame, in m/s. This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | +| `vel_n` | `double` | North component of the velocity in the local ENU frame, in m/s. This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | +| `vel_u` | `double` | Up component of the velocity in the local ENU frame, in m/s. This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | +| `cog` | `double` | Course Over Ground, in degrees. This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | +| `galhas_status` | `uint32_t` | Galileo HAS status (0: not available; 1: HAS corrections applied). This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | +| `geohash` | `string` | [Encoded geographic location](https://en.wikipedia.org/wiki/Geohash). This metric is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | | -------------- | @@ -1058,6 +1172,11 @@ standard and precise positioning. It accepts the following parameters: | `enable_protobuf` | [`true`, `false`]: If set to `true`, the data serialization is done using [Protocol Buffers](https://developers.google.com/protocol-buffers/), with the format defined at [`monitor_pvt.proto`](https://github.com/gnss-sdr/gnss-sdr/blob/next/docs/protobuf/monitor_pvt.proto). An example of usage is the [gnss-sdr-monitor](https://github.com/acebrianjuan/gnss-sdr-monitor). If set to `false`, it uses [Boost Serialization](https://www.boost.org/doc/libs/release/libs/serialization/doc/index.html). For an example of usage of the latter, check the [gnss-sdr-pvt-monitoring-client](https://github.com/acebrianjuan/gnss-sdr-pvt-monitoring-client). This parameter defaults to `true` (Protocol Buffers is used). | Optional | | `use_e6_for_pvt` | [`true`, `false`]: If set to `false`, the PVT engine will ignore observables from Galileo E6B signals. It defaults to `true`, so observables will be used if found. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional | | `use_has_corrections` | [`true`, `false`]: If set to `false`, the PVT engine will ignore corrections from the Galileo High Accuracy Service. It defaults to `true`, so corrections will be applied if available. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional | +| `enable_pvt_kf` | [`true`, `false`]: If set to `true`, it enables the Kalman filter of the PVT solution. It defaults to `false`. This configuration parameter is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | Optional | +| `kf_measures_ecef_pos_sd_m` | Standard deviation of the position estimations, in meters. It defaults to `1.0` [m]. Only used if `PVT.enable_pvt_kf=true`. This configuration parameter is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | Optional | +| `kf_measures_ecef_vel_sd_ms` | Standard deviation of the velocity estimations, in meters per second. It defaults to `0.1` [m/s]. Only used if `PVT.enable_pvt_kf=true`. This configuration parameter is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | Optional | +| `kf_system_ecef_pos_sd_m` | Standard deviation of the dynamic system model for position, in meters. It defaults to `0.01` [m]. Only used if `PVT.enable_pvt_kf=true`. This configuration parameter is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | Optional | +| `kf_system_ecef_vel_sd_ms` | Standard deviation of the dynamic system model for velocity, in meters per second. It defaults to `0.001` [m/s]. Only used if `PVT.enable_pvt_kf=true`. This configuration parameter is only present on the `next` branch of the upstream repository, and it will be included in the next stable release of GNSS-SDR. | Optional | | `use_unhealthy_sats` | [`true`, `false`]: If set to `true`, the PVT engine will use observables from satellites flagged as unhealthy in the navigation message. It defaults to `false`, so those observables will be ignored. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional | | `show_local_time_zone` | [`true`, `false`]: If set to `true`, the time of the PVT solution displayed in the terminal is shown in the local time zone, referred to UTC. It defaults to `false`, so time is shown in UTC. This parameter does not affect time annotations in other output formats, which are always UTC. | Optional | | `rtk_trace_level` | Configure the RTKLIB trace level (`0`: off, up to `5`: max. verbosity). When set to something > `2`, the RTKLIB library become more verbose in the internal logging file. It defaults to `0` (off). | Optional | @@ -1177,7 +1296,7 @@ deactivated with `rtcm_output_file_enabled=false`. [^Niell96]: A. E. Niell, [Global mapping functions for the atmosphere delay at radio wavelengths](https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/95JB03048), Journal of Geophysical Research: Solid Earth, Volume 101, Issue B2 10, Feb. 1996, pp. 3227-3246. -[^ISGPS200]: Global Positioning System Directorate, [Interface Specification IS-GPS-200M: Navstar GPS Space Segment/Navigation User Interfaces](https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf), May 2021. +[^ISGPS200]: Global Positioning System Directorate, [Interface Specification IS-GPS-200N: Navstar GPS Space Segment/Navigation User Interfaces](https://www.gps.gov/technical/icwg/IS-GPS-200N.pdf), August 2022. [^MOPS]: RTCA/DO‐229C, [Minimum operational performance standards for global positioning system/wide area augmentation system airborne equipment](https://standards.globalspec.com/std/1014192/rtca-do-229), RTCA Inc., December 13, 2006. diff --git a/assets/images/logo-nsl.jpg b/assets/images/logo-nsl.jpg deleted file mode 100644 index fd46ea08..00000000 Binary files a/assets/images/logo-nsl.jpg and /dev/null differ diff --git a/assets/images/logo-xilinx.png b/assets/images/logo-xilinx.png deleted file mode 100644 index b1319be3..00000000 Binary files a/assets/images/logo-xilinx.png and /dev/null differ diff --git a/package-lock.json b/package-lock.json index 4e737d02..f45bf1f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,6 +61,39 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -227,18 +260,19 @@ } }, "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "dev": true, "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -246,8 +280,8 @@ "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", @@ -255,16 +289,21 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -382,13 +421,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" }, "funding": { @@ -451,9 +491,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/has": { @@ -639,9 +679,9 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -781,16 +821,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -811,6 +847,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1133,14 +1175,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -1150,12 +1192,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -1166,6 +1208,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -1181,9 +1241,9 @@ } }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1211,9 +1271,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1282,6 +1342,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", @@ -1364,6 +1441,57 @@ "tree-kill": "cli.js" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -1444,17 +1572,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4"