G-Nut/Anubis application

G-Nut/Anubis is a command-line tool for a quality check of modern data from all available GNSS constellations providing full quantitative and qualitative control with and without support of GNSS navigation messages:

  • observation statistics (list/counts of observations, signals, bands, satellites of GPS, GLONASS, Galileo, BeiDou, SBAS, QZSS)
  • standard point positioning if supported with navigation messages (GPS, GLONASS, Galileo and BeiDou)
  • clock-jumps, cycle-slip detection and other interruptions (all constellations/frequencies/signals)
  • satellite elevations and azimuths if supported with all constellation navigation messages
  • code multipath (moving average RMS)
  • data gaps and small data pieces
  • other useful lists and statistics

The application is implemented using the G-Nut core library developed at Geodetic Obsevatory Pecny (GOP) and released under GNU GPL.
Anubis configuration and outputs are described under sub-menu (see main menu left).

Multi-GNSS observations codes (RINEX 3.x)


DOWNLOAD - area for the software download.
INSTALLATION - instructions for the software installation.
VISUALISATION - perl scripts for Anubis report plotting.
EXAMPLES - example configuration with input and output files.
RELEASE_NOTES - list of fixes, enhancements and updates.
FORMAT_CHANGES - Anubis extraction format modifications.
MGEX-MONITORING - IGS Multi-GNSS RINEX QC with Anubis.
EURv3-MONITORING - EUREF Multi-GNSS RINEX QC with Anubis.

  • G-Nut/Anubis is a free application aimed for the RINEX file qualitative and quantitative monitoring.
  • G-Nut/AnubisX is an application providing enhanced capabilities, such as real-time QC mode, user-friendly gui etc. The release is under preparation.

SUPPORT - the lite version is provided "AS IS", without warranty of any kind and a support is given on a best-effort basis only. Other related questions could be sent to This email address is being protected from spambots. You need JavaScript enabled to view it. (J.Dousa/P.Vaclavovic).


REFERENCES

  • Vaclavovic P, Dousa J (2014), G-Nut/Anubis - open-source tool for multi-GNSS data monitoring, In: IAG Symposia Series, Springer, Vol. 143, (accepted), PDF.
  • Václavovic P., Douša J..: Development Towards Advanced GNSS Data Quality Monitoring, In: Družicové metody v geodézii a katastru, Sborník referátů. Brno, ECON publishing, s.r.o, pp 76-81, 2015 (in english PDF)
  • Vaclavovic P and Dousa J (2013), Anubis – a tool for quality check of multi-GNSS observation and navigation data In: 4th International Colloquium Scientific and Fundamental Aspects of the Galileo Programme, 4-6 December 2013, Prague, Czech Republic. PDF.

NEWS - in order to keep informed about news you can join the G-Nut mailman list.

  • 2015-03-18 - Released Anubis 1.3.2 - actual official release after minor bug fixing described in:   RELEASE_NOTES
  • 2015-01-28 - Released Anubis 1.3 - all-constellations/-bands/-signal pre-processing, advanced statistics, merged navigation messages etc.
  • 2014-08-13 - Released Anubis 1.2 - navigation messages for all GNSS constellations, GPS, GLONASS, Galileo, BeiDou standard positioning
  • 2014-04-29 - Released Anubis 1.1 - qualitative QC for GPS&GLO, bancroft positioning, boost-independent version, RINEX3.02 support
  • 2013-08-16 - Released Anubis 1.0 - multi-path detection for all constellations, signals and frequencies
  • 2013-03-10 - Released Anubis 0.9 - beta version

G-Nut/Anubis - carrier-phase signal/noise statistics

Carrier-phase signal-to-noise statistics are extracted from GNSS observations and represents as mean and epoch-wise values [dbHz]. The configuration sec_snr="1" sets a low verbosity while sec_snr="2" provides time- or elevation-dependent estimates.


The first verbosity (list below right & figure below left) show mean SNR values for available signals and all satellites and elevations. Anubis GNSS carrier-phase signal-to-noise ratio


The second verbosity (list below left & figure below right) shows time-/elevation SNR dependency. Anubis GNSS carrier-phase signal-to-noise ratio


Goals

The development of the G-Nut library and specific user applications is primarily based on a scientific work with focus on the stimulating an inter-disciplinary exploitation of GNSS observations. The Precise Point Positioning, developed by Zumberge et al. (1997), provides a highly efficient and autonomous technique for various applications if relevant precise products are available (such as provided by the International GNSS Service). By developing in-house software packages, we would like to contribute to a deep expertize in multi-GNSS data use by updating/enhancing various GOP scientific products (contributing to EUREF, IGS, E-GVAP, etc.).


Status

The current status of the G-Nut project can be identified as a "testing stage". The core library data members and functions has been implemented together with first applications. Stable functionality has been demonstrated for off-line and real-time processing (follow GOP web-pages). Providing public applications is a time-consuming task (for which we have not yet sufficient man-power), the release of end-user applications is done in step-by-step process. So in case of interest for further developments, track our web-pages occasionally or join the G-Nut mailing list.


Disclaimer

The user applications and relevant parts of the G-Nut core library are provided 'AS IS'. There is no warranty of any kind and we do not take responsibility for any errors or omissions found in the implementation, documentation or distribution of application packages. Please understand that there may be bugs and errors and use packages at your own risk only.


License

The source code of user applications and relevant parts of the G-Nut core library is released under the GNU General Public License (GPL) and thus available for any further modifications and redistribution under given conditions. Only user applications are, however, available for download together with relevant parts of the G-Nut core library. The complete library code is not intended for the distribution under normal circumstances, but to a limited agreed partners or significant co-developers only.


Acknowledgments

Following third-party libraries were included in the G-Nut core library developments:

Developers
  • Core developers: J. Douša and P. Václavovic
  • Contributors: G. Gyori, M. Eliaš


References
  • Dousa J, Vaclavovic P (2014) Real-time zenith tropospheric delays in support of numerical weather prediction applications. Advances in Space Research (2014), Vol 53, No 9, pp 1347-1358,  doi:10.1016/j.asr.2014.02.021, PDF.

  • Vaclavovic P, Dousa J, Gyori G (2013), G-Nut software library - state of development and first results, Acta Geodynamica at Geomaterialia, pp 431-436, Vol. 10, No. 4 (172), doi:10.13168/AGG.2013.0042. PDF (or, alternatively, here).

  • Dousa J and Vaclavovic P (2013), Real-time ZTD estimates base on Precise Point Positioning and IGS real-time orbit and clock products, In: 4th International Colloquium Scientific and Fundamental Aspects of the Galileo Programme, 4-6 December 2013, Prague, Czech Republic. PDF.

  • Vaclavovic P and Dousa J (2013), Anubis – a tool for quality check of multi-GNSS observation and navigation data In: 4th International Colloquium Scientific and Fundamental Aspects of the Galileo Programme, 4-6 December 2013, Prague, Czech Republic. PDF.



The G-Nut project was initiated in 2011 at Geodetic Observatory Pecny, RIGTC for implementing core software library in order to support developments of various end-user applications. The motivations for the project could be summarized as follows:

  • to stimulate exploitation of highly efficient and autonomous PPP technique in various domains,
  • to stimulate up-to-date and deep expertise and development in GOP towards a multi-GNSS constellation and real-time analyzes,
  • to update GOP analysis center products contributing to various service (EUREF, IGS, E-GVAP etc.) with new or advanced solutions,
  • to support an easy development of end-user applications targeted for geodesy, seismology, meteorology, climatology and other scientific areas either for GNSS experts or for other GNSS users,
  • to contribute to a robust production of precise products for supporting PPP (in near future).

The G-Nut library is written in C++ taking advantages of object-oriented design and multi-thread processing. It is designed primarily for Linux operating systems and providing command-line applications since it is usually well suitable for scientific purposes. Some other platforms including Windows will be supported in near future. The library implementation is independent of any large software framework needed for the developing Graphical User Interface (GUI). However, the G-Nut initially exploited the Boost library Boost for a platform independent multi-thread implementation, which dependence has been removed for specific applications. Matrix representation and factorization methods are handled using New-Mat 09 matrix library developed by Davis (2009) within the G-Nut library. The pugixml light-weight C++ XML processing library by Kapoulkine (2012) is used for parsing XML configurations. The XML mark-up language was selected for the library classes as well as for end-user application settings due to its high flexibility, ease extension and support by various other editing and viewing user-tools.

Main characteristics are summarized as follows:

  • object-oriented C++ design,
  • support for multi-thread applications,
  • flexible design supporting various end-user applications,
  • adaptable internal structures for easy extensions in future,
  • flexible data and product containers of self-contained elements,
  • multi-GNSS data and processing support,
  • integrated IO for various protocols (files, streams),
  • integrated IO for various data/product formats (decoders and encoders),
  • different adjustment models (LSQ, Kalman, Kalman/srcf, back-smoothing),
  • dual-layer (library/application) configuration in XML format,
  • GUI to be developed independently for prominent applications only.


Applications

First applications derived from the G-Nut library are based on the Precise Point Positioning technique. The post-processing as well as real-time processing has been implemented supporting static or kinematic positioning solutions. A real-time example is shown in the figure. The BKG Ntrip Client (BNC) is currently used as feeding engine for the raw real-time GNSS data and corrections streams (to be revised in future). In the offline mode, the RINEX data are processed with support of precise orbits in SP3 format, satellite clocks in RINEXC format, PCO+PCV models in ATX format and ocean tide loading in BLQ format.


PPP kinematic coordinate solution (real-time, Apr 9, 2013)
PPP kinematic coordinate solution (real-time, Apr 9, 2013)
PPP tropospheric path delay monitoring (real-time & neal real-time, Apr 4-9, 2013)
PPP tropospheric path delay monitoring (real-time, Apr 5-9, 2013)



The following applications were finished for a beta (lite-version) releases:

  • G-Nut/Anubis - quality monitoring tool for GNSS observation data and navigation messages
  • G-Nut/Apep - time-series data analysis tool
  • G-Nut/Geb - precise positioning in real-time/post-processing using kinematic or static solution
  • G-Nut/Tefnut - troposphere monitoring in (near) real-time/post-processing
  • G-Nut/Shu - numerical weather data processing for troposphere corrections for GNSS

Other tools:

  • G-Nut/ntrip-client - collects stream from NTRIP caster to a file
  • G-Nut/ntrip-server - rotates file content to NTRIP caster as a stream
  • G-Nut/ntrip-pipe - NTRIP pipe including threads of client and server forwarding any stream from one NTRIP caster to the other

The development has been focused on a core library and the first PPP solution. In future, a network solution based on undifferenced observation processing for serving regional/global products are foreseen based on the G-Nut library as well as support of real-time/offline processing and supporting multi-GNSS constellations. The application currently available for download are available via left menu.




Input/output structure, decoders and encoders

Input/output and encoder/decoder classes
Input/output and encoder/decoder classes
IO implementations and data/product representation
G-Nut library input/output implementation and data/product representations


File and stream IO operations are represented using a virtual gio class which can be replaced in run time by an appropriate inherited class. In real-time this is represented by gtcp (TCP) implementation and gntrip (NTRIP) implementation (which is derived from the gtcp by re-implementing the initialization procedure for an authentication. Such implementation supports both real-time and post-processing approaches in a unique way for all user applications. The internal buffer of gio class supports the handling ASCII as well as BINARY data.
Additional special file classes - giof, glog and gxtr were implemented for additional IO operations providing time-specific file-masks, generic logging, summary extractions etc. The giof is also used internally in gio class for store/provide data between data streams and raw file. These are applied e.g. for logging stream content in ntrip-client or feeding data input in ntrip-client. The basic scheme of all IO classes is plotted in the figure (grey backgrounds).



If input data decoding (or output data encoding) is required, the gio object (or correctly its inherited object) is linked with any object derived from the generic gcoder class in order to provide specific decoder or encoder. All gcoders supports both stream and file IO operations while the main difference typically consists in handling of header and data parts. This is done separately in each decoder/encoder classes. The header operations are usually active only in the gfile class.
All encoders/decoders are derived from a single virtual gcoder representing various data, models or products formats and are plot in figure with a blue background. When gio instance is called with the decoder (encoder) capability, it needs an access to the relevant data structure which are plotted with a green background the figure left (bottom) and on the next page (figure 'data structure').



Figure left (bottom) shows the strategy to implement access to input data and products as well as output results. While post-processing solutions are based on files, real-time processing requires continuous data/products streams. In the first approach files could be read at once before the processing start up, but the second approach requires buffered input/output operations maintained during the whole run of the processing without disruptions of streams. Any operation on continuous streams could be handled using either with blocking or non-blocking access. The former is easier to implement, but requires a multi-thread application where each continuous stream is handled by an individual thread. The latter can be used also in a single thread application. By designing relevant classes as thread-safe objects within the G-Nut, both approaches are generally supported.




Data, models, products self-contained classes and their containers

The main virtual base gdata class (dark grey background) represents any data, model or product classes either as self-contained data/product elements or their containers. This class provides a common mutex, glog pointer for common and multi-thread logging and data type or group identification, which is later defined in each derived class.

Self-contained data/products elements (pink backgrounds) provides independent data such as e.g. all observation for a single station, satellite navigation message, RTCM position corrections, polynomials of precise ephemeris valid over a specific time, etc.

The containers (green backgrounds) are usually apply maps defined in a way to easy find the relevant self-contained element (pink backgrounds). In some classes (e.g. gallnav, gallprec) the cache is implemented to speed up the searching procedure, which is always done through an internal (find) function returning a pointer to specific data/product element.

Data, products and container classes
Data, products and container classes


References

  • Dousa J, Vaclavovic P (2014) Real-time zenith tropospheric delays in support of numerical weather prediction applications. Advances in Space Research (2014), Vol 53, No 9, pp 1347-1358,  doi:10.1016/j.asr.2014.02.021, PDF.

  • Vaclavovic P, Dousa J (2014), G-Nut/Anubis - open-source tool for multi-GNSS data monitoring, In: IAG Symposia Series, Springer, Vol. 143, (accepted), PDF.

  • Vaclavovic P, Dousa J, Gyori G (2013), G-Nut software library - state of development and first results, Acta Geodynamica at Geomaterialia, pp 431-436, Vol. 10, No. 4 (172), doi:10.13168/AGG.2013.0042. PDF (or, alternatively, here).

  • Dousa J and Vaclavovic P (2013), Real-time ZTD estimates base on Precise Point Positioning and IGS real-time orbit and clock products, In: 4th International Colloquium Scientific and Fundamental Aspects of the Galileo Programme, 4-6 December 2013, Prague, Czech Republic. PDF.

  • Vaclavovic P and Dousa J (2013), Anubis – a tool for quality check of multi-GNSS observation and navigation data In: 4th International Colloquium Scientific and Fundamental Aspects of the Galileo Programme, 4-6 December 2013, Prague, Czech Republic. PDF.

  • Dousa J, Vaclavovic P and Gyori G (2013), G-Nut software library and its applications within context of EPOS (European Plate Observing System), EGU 2013 General Assembly, 7-12 April 2013, Vienna, Austira. PDF.