GithubHelp home page GithubHelp logo

geoscienceaustralia / ginan Goto Github PK

View Code? Open in Web Editor NEW
203.0 27.0 95.0 75.63 MB

The Australian Government, through Positioning Australia (part of Geoscience Australia), is funding the design, development and operational service of a Global Navigation Satellite System (GNSS) position correction system - the Ginan service and toolkit. The application of the Ginan correction service by a GNSS device has the potential to increase positioning accuracy from meters to centimetres across Australia. The suite of software systems in this repository (the Ginan toolkit) will be used to create the service. It is available now under an open source licence. Ginan will give individuals and organisations no-cost access to the Ginan software and service as a public good.

Home Page: https://geoscienceaustralia.github.io/ginan/

License: Other

Shell 1.69% Dockerfile 0.03% Python 15.46% CMake 0.80% C++ 79.02% C 0.04% HTML 0.53% MATLAB 0.25% JavaScript 0.29% Jinja 1.89%
gnss ppp

ginan's Introduction

gn_logo

Ginan: Software toolkit and service

Ginan v3.0.0

Overview

Ginan is a processing package being developed to process GNSS observations for geodetic applications.

We currently support the processing of:

  • the United States' Global Positioning System (GPS);
  • the European Union's Galileo system (Galileo);
  • the Russian GLONASS system (GLONASS)*;
  • the Chinese Navigation Satellite System (BeiDou)*;
  • the Japanese QZSS develop system (QZSS)*.

We are actively developing Ginan to have the following capabilities and features:

  • Precise Orbit & Clock determination of GNSS satellites (GNSS POD);
  • Precise Point Positioning (PPP) of GNSS stations in network and individual mode;
  • Real-Time corrections for PPP users;
  • Analyse full, single and multi-frequency, multi-GNSS data;
  • Delivering atmospheric products such as ionosphere and troposphere models;
  • Servicing a wide range of users and receiver types;
  • Delivering outputs usable and accessible by non-experts;
  • Providing both a real-time and off-line processing capability;
  • Delivering both position and integrity information;
  • Routinely produce IGS final, rapid, ultra-rapid and real-time (RT) products;
  • Model Ocean Tide Loading (OTL) displacements.

The software consists of three main components:

  • Network Parameter Estimation Algorithm (PEA)
  • Precise Orbit Determination (POD), and
  • Various scripts for combination and analysis of solutions

Using Ginan with an AppImage

You can quickly download a precompiled binary of Ginan's pea from the develop-weekly-appimage branch of github.

git clone -b develop-weekly-appimage --depth 1 --single-branch https://github.com/GeoscienceAustralia/ginan.git

This contains no python scripts or example data, but is possible to run immediately on linux and windows systems as simply as:

ginan/Ginan-x86_64.AppImage

or on windows:

wsl --install -d ubuntu
ginan/Ginan-x86_64.AppImage

Using Ginan with Docker

You can quickly download a ready-to-run Ginan environment using docker by running:

docker run -it -v ${host_data_folder}:/data gnssanalysis/ginan:v3.0.0 bash

This command connects the ${host_data_folder} directory on the host (your pc), with the /data directory in the container, to allow file access between the two systems, and opens a command line (bash) for executing commands.

You will need to have docker installed to use this method.

To verify you have the Ginan executables available once at the Ginan command line, run:

pea --help

Installation from source

Supported Platforms

Ginan is supported and tested on the following platforms

  • Linux: tested on Ubuntu 18.04 and 20.04 and 22.04
  • MacOS: tested on 10.15 (x86)
  • Windows: via docker or WSL on Windows 10 and above

Dependencies

If instead you wish to build Ginan from source, there are several software dependencies:

  • C/C++ and Fortran compiler. We use and recommend gcc, g++, and gfortran
  • BLAS and LAPACK linear algebra libraries. We use and recommend OpenBlas as this contains both libraries required
  • CMAKE > 3.0
  • YAML > 0.6
  • Boost >= 1.73 (tested on 1.73). On Ubuntu 22.04 which uses gcc-11, you need Boost >= 1.74.0
  • MongoDB
  • Mongo_C >= 1.71.1
  • Mongo_cxx >= 3.6.0
  • Eigen3 > 3.4
  • netCDF4
  • Python >= 3.7

If using gcc verion 11 or about, the minimum version of libraries are:

  • Boost >= 1.74.0
  • Mongo_cxx = 3.7.0

Scripts to install dependencies for Ubuntu 18.04/20.04, 22.04, Fedora 38 are available on the scripts/installation directory. Users on other system might need to have a look at the scripts/installation/generic.md file, which contains the major steps.

Python

We use Python for automated process (download), postprocessing and visualisation. To use the developed tools, we recommand to use a virtual-environement (or Anaconda equivalent). A requirements file is available in the scripts/ directory and can be run via

pip3 install -r requirements.txt

Build

Prepare a directory to build in - it's better practice to keep this separated from the source code. From the Ginan git root directory:

mkdir -p src/build

cd src/build
cmake ../

To build every package simply run make or make -jX , where X is a number of parallel threads you want to use for the compilation:

make -j2

Alternatively, to build only a specific package (pea, make_otl_blq, interpolate_loading), run as below:

make pea -j2

This should create executables in the bin directory of Ginan.

Check to see if you can execute the PEA from the exampleConfigs directory

cd ../../exampleConfigs

../bin/pea --help

and you should see something similar to:

PEA starting... (main ginan-v3.0.0 from Mon Feb 05 15:15:22 2024)

Options:
  -h [ --help ]                    Help
  -q [ --quiet ]                   Less output
  -v [ --verbose ]                 More output
  -V [ --very-verbose ]            Much more output
           .
           .
           .
  --dump-config-only               Dump the configuration and exit
  --walkthrough                    Run demonstration code interactively with
                                   commentary

PEA finished

Then download all of the example data using the scripts and filelists provided. From the Ginan git root directory:

cd inputData/data
./getData.sh
cd ../products
./getProducts.sh

Directory Structure

Upon installation, the ginan directory should have the following structure:

ginan/
├── README.md               ! General README information
├── LICENSE.md              ! Software License information
├── ChangeLOG.md            ! Release Change history
├── aws/                    ! Amazon Web Services config
├── bin/                    ! Binary executables directory*
├── Docs/                   ! Documentation directory
├── inputData/              ! Input data for examples
│   ├── data/               ! Example dataset (rinex files)**
│   └── products/           ! Example products and aux files**
├── exampleConfigs          ! Example configuration files
│   ├── ppp_example.yaml    ! Basic user-mode example
│   └── pod_example.yaml    ! Basic network-mode example
├── lib/                    ! Compiled object library directory*
├── scripts/                ! Auxiliary Python and Shell scripts and libraries
└── src/                    ! Source code directory
    ├── cpp/                ! Ginan source code
    ├── cmake/
    ├── doc_templates/
    ├── build/              ! Cmake build directory*
    └── CMakeLists.txt

*created during installation process

** contents retrieved with getData.sh, getProducts.sh scripts

Documentation

Ginan documentation consists of two parts: these documents, and separate Doxygen-generated documentation that shows the actual code infrastructure. It can be found here, or generated manually as below.

Doxygen

The Doxygen documentation for Ginan requires doxygen and graphviz. If not already installed, type as follows:

sudo apt -y install doxygen graphviz

On success, proceed to the build directory and call make with docs target:

cd ../src/build

cmake ../

make docs

The documentation can then be found at Docs/codeDocs/index.html.

Note that documentation is also generated automatically if make is called without arguments and doxygen and graphviz dependencies are satisfied.

Ready!

Congratulations! You are now ready to trial the examples from the exampleConfigs directory. See Ginan's manual for detailed explanation of each example. Note that examples have relative paths to files in them and rely on the presence of products and data directories inside the inputData directory. Make sure you've run s3_filehandler.py from the Build step of these instructions.

The paths are relative to the exampleConfigs directory and hence all the examples must be run from the exampleConfigs directory.

NB: Examples may be configured to use mongoDB. If you have not installed it, please set mongo: enable to false in the pea config files.

To run the first example of the PEA:

cd ../exampleConfigs

../bin/pea --config ppp_example.yaml

This should create outputs/ppp_example directory with various *.trace files, which contain details about stations processing, a Network*.trace file, which contains the results of Kalman filtering, and other auxiliary output files as configured in the yamls.

You can remove the need for path specification to the executable by using the symlink within exampleConfigs, or by adding Ginan's bin directory to ~/.bashrc file:

PATH="path_to_ginan_bin:$PATH"

Scripts

In addition to the Ginan binaries, scripts are available to assist with downloading input files, and viewing and comparing generated outputs.

Acknowledgements:

We have used routines obtained from RTKLIB, released under a BSD-2 license, these routines have been preserved with modifications in the folder cpp/src/rtklib. The original source code from RTKLib can be obtained from https://github.com/tomojitakasu/RTKLIB.

We have used routines obtained from Better Enums, released under the BSD-2 license, these routines have been preserved in the folder cpp/src/3rdparty The original source code from Better Enums can be obtained from http://github.com/aantron/better-enums.

We have used routines obtained from EGM96, released under the zlib license, these routines have been preserved in the folder cpp/src/3rdparty/egm96 The original source code from EGM96 can be obtained from https://github.com/emericg/EGM96.

We have used routines obtained from SOFA, released under the SOFA license, these routines have been preserved in the folder cpp/src/3rdparty/egm96 The original source code from SOFA can be obtained from https://www.iausofa.org/.

We have used routines obtained from project Pluto, released under the GPL-3 license, these routines have been preserved in the folder cpp/src/3rdparty/jplephem The original source code from jpl ephem can be obtained from https://github.com/Bill-Gray/jpl_eph.

ginan's People

Contributors

cmorgan2019 avatar javadtaghia avatar johndonovanga avatar polytopes-design avatar ronaldmaj avatar rupertbrown avatar seballgeyer avatar umma-zannat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ginan's Issues

SSR correction multiple message flag also set

Tried using the https://ntrip.data.gnss.ga.gov.au/SSRA00GAA0 service as described https://geoscienceaustralia.github.io/ginan/resources/GA-STREAMdatasheet20220615v01.pdf and using RTKLIB as the client, and tried to track down why the RTCM3 SSR messages are not processed beyond decoding, and it appears that the MMI bit in the SSR headers is always set, that there is never a messages sent with the MMI bit clear to indicate the last message which RTKLIB uses to trigger further processing.

This service claims to run Ginan, and at a guess might the relevant code be NtripUploader::messageTimeout_handler() ssrMeta.multipleMessage = 1; // We assume there will be more messages. and might the logic to clear this flag when sending the last message have an issue.

Btw the datasheet above does not mention the 'Global/regional CRS indicator' bit in the header for the 1060 message, yet Ginan appears to encode and decode that, so might that datasheet be in error.

How can NMEA be fed as the realtime stream in satellite_data?

Thanks for the great product.
I have a question regarding live corrections that can be done using Ginan.

Can Ginan be used to use the live NTRIP published at ntrip.data.gnss.ga.gov.au as gnss_observation and improve the input from a GNSS receiver that sends NMEA?

If yes, how can it be configured to accept real time data from a GNSS receiver?
If the receiver sends in NMEA, is it acceptable to Ginan?

I found an example r_ppp_example.yaml
(https://github.com/GeoscienceAustralia/ginan/blob/main/exampleConfigs/rt_ppp_example.yaml)

satellite data still is coming from ntrip.data.gnss.ga.gov.au and have offset APC.

How can I change the satellite_data to look into a GNSS receiver locally connected to a USB sending NMEA?

What's the use of MongoDB and what is GinanEDA?

According to the documentation MongoDB is optional: https://github.com/GeoscienceAustralia/ginan#mongodb-pea-optional, but needed for use of the realtime plotting and statistics available through the GinanEDA.

I'd like to know what's GinanEDA. I did not find an explanation in the README.

Is there a specific example that actually plots some results as stated in the sentence above? (see also #24)

For example, ex11 has mongodb True'' by default, but it runs well with False'', too. P.S. Since MongoDB is optional, it would be helpful to have a sentence in the README about it when ex11 is introduced: https://github.com/GeoscienceAustralia/ginan#ready

/data cannot be built

I did not find a helpdesk contact, so I'm trying here. Sorry if this is not the best way.

I tried installing Ginan with Docker. My issue is that I cannot create the folder /data because I have a corporate machine and would need to ask for permissions and explain why, etc. Is there an alternative to /data? For instance, can /data be anywhere else? If so, how should I run docker? Thanks

Supported Platforms v. Build/Installation Scripts

Not really a bug, nor necessarily wrong, but maybe an inconsistency on the main page & build/installation Scripts:

There are scripts to install dependencies for Fedora 38, but it is not noted as an Installation from source / Supported Platforms. Is this missed cross reference or Fedora 38 isn't strictly supported?

Linking against boost fails

After building to 100 % (gcc 13.2, boost 1.83) the linking fails due to undefined references:

/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o): in function `boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::auto_release::~auto_release()':
/usr/include/boost/log/sources/record_ostream.hpp:493:(.text.unlikely+0xe9d): undefined reference to `boost::log::v2s_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2s_mt_posix::aux::stream_provider<char>::stream_compound*)'
/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o): in function `boost::log::v2s_mt_posix::record::reset()':
/usr/include/boost/log/core/record.hpp:157:(.text.unlikely+0xeb0): undefined reference to `boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)'

[..]

/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o):(.data.rel.ro._ZTVN5boost15program_options11typed_valueISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEcEE[_ZTVN5boost15program_options11typed_valueISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEcEE]+0x38): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) const'
/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o):(.data.rel.local.DW.ref._ZTIN5boost10filesystem16filesystem_errorE[DW.ref._ZTIN5boost10filesystem16filesystem_errorE]+0x0): undefined reference to `typeinfo for boost::filesystem::filesystem_error'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE

Are there special requirements regarding C++ mode or maximum Boost version?

OS: ArchLinux

ionmodel part

Hi, ginan team, recently we tried to adopt the coefficient generated function configure_iono_model_sphcap provided in ionosphericalcaps.cpp for ionosphere model, but something went wrong when i called configure_iono_model_sphcap and we got a nan output after legendre_function . The while loop can not be broken. The latc lonc latw and lonw are set as (23,113,40,40). Is this caused by the code or the inputs? We sincerely look forward to your replys. Further we are confused by the condition code if((p1 * p1) < 0) at line 367 and 399, since it will be never fulfilled.

Has anyone successfully compiled this version 3.0 in ubuntu18?

The 3.0 version of the software seems to need higher requirements for C++ compilers, and I couldn't successfully compile this software in ubuntu18. Error shows that no matching function for call to 'std::allocator::allocate(std::size_t&,char*)'. Has anyone else had this problem?

Can Ginan do LEO POD?

Dear Ginan Team,

Is it possible for Ginan to do the reduced-dynamic low-Earth-orbit satellite orbit determination? I'm thinking that I can do PPP to get a rough estimate of LEO positions using PEA and then do LEO orbit fitting using POD, and then use the LEO orbit fitting result as the input for a second run of PPP, so on and so forth until the residuals become small. However, there seems no way to provide pre-known positions of a kinematic receiver (for my situation, that is the LEO orbit fitting coordinates) as the input of PPP? If this is the case, each run of PPP would give the same LEO POD result and thus I cannot achieve the reduced-dynamic LEO orbit determination using Ginan, am I right?
Thanks very much and waiting for your reply :)

Jian Yao from UCAR

Real-time stream connect problem: wrong version number

Dear Ginan Team,

I am writing to report some errors that I encountered while attempting to record streams using Ginan. Initially, I suspected that my stream configuration might be incorrect, but it works well with rtklib and BNC.

Furthermore, I tried to use curl to test the streams, as outlined in your documentation. While the command line in your example (as shown in Figure 2) worked well, my own stream configuration did not. I would greatly appreciate it if you could provide me with more information regarding the stream format. Specifically, I am unsure whether the port (such as: 2101) should be included in input stream format or not.

Thank you in advance for your assistance.
1690462402739
image
image

Some problem of download the example data

Hi Ginan Team. Recently, I try to use ginan to some researchs. But, I can't download the example data. The "download_examples.py" returns error of "urllib.error.URLError: <urlopen error [Errno 101] Network is unreachable>", and the link you provided also returns "ERR_CONNECTION_TIMED_OUT" . Is there any other way to download the data? Thanks.

A memory leak occurs during real-time precise point positioning

Describe the bug
Running multi-station real-time precision point positioning has the problem of memory leak.

To Reproduce
Steps to reproduce the behavior:

  1. ./../bin --config ex15_pea_rt_user_gnss_ar.yaml
  2. Enter the 'top' command on the terminal, and you can see that the VIRT value continues to increase.

Expected behavior
The amount of memory used during program execution does not always increase over time.

Configuration files
ex15_pea_rt_user_gnss_ar.yaml, and the ambiguity_resolution is off, delete_old_ephemerides is true.

Desktop (please complete the following information):

  • OS: Linux 20.04
  • Version of Ginan:1.5.4
  • Library used (Boost, Eigen, ...)

Can not download the example data

Hi,
" python3 ./scripts/download_examples.py "
returns error(network problem I supposed)
Is there any other method to get the example data?
Thanks!

Examples with visualization

Hello. I installed Ginan with Docker, downloaded the sample data and run the two examples, PEA and POD, successfully. How can I visualize the results? It would be great to have an example that includes some use of the python scripts. Is there an example with some visualization? Thanks.

Undifferenced, uncombined, real time integer AR?

Is Ginan able to fix integer ambiguities with undifferenced data in real time? Uncombined? Looking at the examples, the documentation, and src, it looks that the current version always deals with combined iono-free data. Not sure about un-differenced.

GINAN estimation the ionosphere

Dear Ginan team
I would like to do some ionospheric solving and estimation using the GINAN software. In the latest version of the software I did not find a configuration file on how to solve the ionosphere using the GINAN executable program. What should I do please? I would appreciate it if you could explain this issue to me. Thank you very much, and I look forward to your reply.

Build fail

hi team
Just pulled teh git hub repository and installed (I think) all the dependencies on Ubuntu 20.

On make

[ 74%] Built target timesystem
[ 74%] Building CXX object CMakeFiles/pea.dir/cpp/common/ntripBroadcast.cpp.o
/opt/apps/ginan/src/cpp/common/ntripBroadcast.cpp:4:10: fatal error: bsoncxx/builder/basic/document.hpp: No such file or directory
4 | #include <bsoncxx/builder/basic/document.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/pea.dir/build.make:115: CMakeFiles/pea.dir/cpp/common/ntripBroadcast.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:874: CMakeFiles/pea.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

thoughts?
matt

No glonass satellite clock estimation?

Dear Geoscience Australia,

I'm Dr. Jian Yao from the U.S. National Center for Atmospheric Research (NCAR/UCAR). We use GNSS softwares to estimate GNSS satellite clocks in the near real time mode, to facilitate the radio occultation.
We do appreciate very much that Geoscience Australia shares the precious Ginan software. It is pretty easy to use and provides high-quality results, as far as I've tested. One application of Ginan software is to estimate the GPS/GNSS satellite clocks using the global receiver network (i.e., ex17). I've run Ginan for GPS & Galileo satellite clocks and the clock estimation is satisfying. However, I cannot get Ginan to work for Glonass... Please see the attached yaml file for my settings. When I run Ginan, the screen says that all Glonass satellites "failed broadcast predictions"... I've checked the broadcast navigation file brdm1990.19p and it looks like standard. I do notice that the number of fields for Glonass in brdm1990.19p is fewer than that for GPS/Galileo. Is this causing a file-reading issue in Ginan? I know that your team must be busy with many things. If you can point out which part of the source code that I need to revise, that would be very helpful.

Thank you very much again for sharing Ginan and helping me!

Sincerely,

Jian
ex17_pea_pp_netw_gnss_ar.yaml.txt

AArch64/Arm64

Is there any reason why AArch64/Arm64 docker containers aren't available (or at least don't seem to obvious on docker)?

Thinking for recent Apple silicon Macs or Raspberry Pi etc. thanks

GINAN Software Processing Time Help Request

I have been using GINAN version 1.5 and the latest version 2.1 for my research. I encountered a significant difference in processing time with GINAN version 2.1 when compared to GINAN version 1.5, and I have some questions regarding this.

I initially ran the ex204.yaml example with GINAN version 2.1, where I made some modifications to obtain the output of GLONASS clock products. However, I observed that the processing time for this task was around 3 days. To validate this, I downloaded GINAN version 1.5 and performed a similar test using the ex17_pea_pp_netw_gnss_ar.yaml example. I ensured that the settings, such as epoch control, GLONASS clock computation, and data frequency (30 sec RINEX), were aligned with those in the ex204.yaml for GINAN version 2.1. Surprisingly, the processing time for the ex17.yaml test in version 1.5 was significantly faster, taking only about 57 minutes.

I conducted both tests on the same computer, eliminating any hardware variations. Additionally, the setting of the subfiles used in the ex204.yaml of GINAN version 2.1 are similar to those in ex17.yaml. My goal is to understand the factors contributing to the longer processing time in version 2.1 and whether there are any settings or optimizations that can be applied to speed up the processing in GINAN version 2.1.

Estimation of ionosphere and DCB

Dear Ginan term
I am recently working on the estimation of ionosphere and DCB. While separating the receiver DCB and satellite DCB, I didn't find any information in the Ginan program about how the reference constraint is handled. I would appreciate it if you could explain this issue to me. Thank you very much, and I look forward to your reply.

Does Ginan support triple-frequency uncombined PPP and PPP-AR?

Dear Ginan team,

I am wondering if Ginan software could execute triple-frequency uncombined PPP. The parameters are huge and sophisticated. I have tried to use the Ginan software to produce a result of triple-frequency uncombined PPP with ambiguity fixed under the guide of Config Parameters but I failed according to the result. So my question concerning Ginan is as follows.
(1) Does Ginan support PPP in triple-frequency uncombined mode? If yes, how could I configure the parameters in the YAML file that controls the number of frequency being used in the PPP processing?
(2) Does Ginan support PPP-AR for triple-frequency uncombined PPP? If yes, how could I configure the parameters in the YAML file that enable PPP-AR for triple-frequency uncombined PPP?
In addition, I am wondering if you provide a tutorial on debugging Ginan code?

Can Ginan support Ntrip 1.0?

NTRIP Version 1.0 is used for Hong Kong GNSS Raw Data Streams, So I want to ask whether Ginan real-time mode can support process ntrip 1.0 data.

Installation Challenge — MongocxxConfig

Greetings Developers,

I am very impressed with the level of detail and thought that has gone into its Ginan Software.

However, I am writing to report an issue that we have encountered during the installation process. I have followed the installation instructions provided, but I am unable to complete the installation successfully. Here is the error message as shown in the screenshot.

image

  1. System: Linux
  2. Issue: CMake Error at CMakeLists.txt:154 (find_package)

I have tried to troubleshoot the issue on my own (by following similar in this repository), but I have been unable to find a solution.

I would appreciate your assistance in resolving this matter as soon as possible, as I am eager to continue with the installation.

Regards,

Waley.

Real time PPP example does not work well

Dear Ginan team

I run single-GPS real-time PPP by Ginan using the template of ex202.yaml, and the positioning results perform not well, is about dm level. Considering some table files seem unnecessary, I make some changes for ex202.yaml. I cannot solve this problem, could you provide me some advice? Thank you in advance!

image

Here are my configs for your information.

my_ex202.yaml

inputs:
    include_yamls:
        - input_metadata.yaml
        - input_streams_rover.yaml
        - processing_rover.yaml
        - mongo_outputs.yaml
        - debug_trace.yaml
    
outputs:
    metadata:
        config_description:     "my_ex202"

input_metadata.yaml

inputs:

    root_directory: /home/dyf/.vs/src/data/tmp-dwn/
    snx_files:  [ IGS0OPSSNX_20231830000_01D_01D_CRD.SNX ]
    atx_files:  [ igs20.atx                           ]  
    blq_files:  [ OLOAD_GO.BLQ                      ]  
    erp_files:  [ finals.data.iau2000.txt    ]

input_streams_rover.yaml

station_options:    # metadata from May 2023
    ALIC:
        receiver_type:  "SEPT POLARX5"                 # (string)
        antenna_type:   "LEIAR25.R3      NONE"       # (string)
        eccentricity:   [0.0000,   0.0000,   0.0015] # [floats]
        apriori_position:   [-4052052.8799, 4212835.96745,-2545104.4015] # [floats]
inputs:

    gnss_observations:
        inputs_root:    "https://<>:<>@ntrip.data.gnss.ga.gov.au/"

        rtcm_inputs:       
            -   "ALIC00AUS0"
        
    satellite_data:
        inputs_root:   "https://<>:<>@ntrip.data.gnss.ga.gov.au/"
        rtcm_inputs:
            - "BCEP00BKG0"
            - "SSRA00CNE0"
            
processing_options:
    ssr_inputs:
        ssr_antenna_offset: APC
    epoch_control:
        epoch_interval:         1
        wait_all_stations:      1
    gnss_general:   
        error_model:        elevation_dependent
        code_measurements:
            sigmas:         [0.3]
        phase_measurements:
            sigmas:         [0.003]


processing_rover.yaml

outputs:

    root_directory:                 outputs/<CONFIG>/
    ppp_sol:                              
        output:                     true         
        filename:                   <STATION><YYYY><DDD><HH>_<CONFIG>.POS
    gpx:
        output:                     true
        filename:                   <STATION><YYYY><DDD><HH>_<CONFIG>.GPX

estimation_parameters:
    stations:
        global:
            pos:
                estimated:          [true]
                sigma:              [100]
                proc_noise:         [100] 
            clk:
                estimated:          [true]
                sigma:              [1000]
                proc_noise:         [100]
            amb:
                estimated:          [true]
                sigma:              [1000]
                proc_noise:         [0]
            trop:
                estimated:          [true]
                sigma:              [0.3]
                proc_noise:         [0.0001]
            trop_grads:
                estimated:          [true]
                sigma:              [0.03]
                proc_noise:         [1.0E-6]
            ion_stec:
                estimated:          [true]
                sigma:              [200]
                proc_noise:         [10]
            code_bias:
                estimated:          [true]
                sigma:              [20]
                proc_noise:         [0]
            phase_bias:
                estimated:          [true]
                sigma:              [10]
                proc_noise:         [0]

processing_options:
    process_modes:
        ppp:                 true
    gnss_general:
        elevation_mask:                 10  #degrees
        rec_reference_system:           GPS
        sys_options:
            gps:
                process:                true
                reject_eclipse:         false
                zero_receiver_dcb:      true
                code_priorities:        [ L1C, L2W ]
            gal:
                process:                false
                reject_eclipse:         false
                zero_receiver_dcb:      true
                code_priorities:        [ L1C, L5Q, L1X, L5X ]
    gnss_models:
        troposphere:
            model:              gpt2
        ionospheric_component2:
            enable:             true
        ionospheric_component3:
            enable:             true
    filter_options:
        outlier_screening:
            max_filter_iterations:      5 
            max_prefit_removals:        3 
        station_chunking:
            enable:                     true
    model_error_checking:
        deweighting:
            deweight_factor:            1000
        ambiguities:
            outage_reset_limit:         5
            phase_reject_limit:         2
            reinit_on_all_slips:        true

station_options:
    global:
        phase_bias:
            enable:         true
            
satellite_options:
    global:
        phase_bias:
            enable:         true

Clock error, orbit determination accuracy is relatively low

Dear ginan team:
I used sample data to run the pod. Below is my pod.yaml file.

inputs:

include_yamls: [ /home/jddai/ginan/inputData/products/boxwing.yaml ] # required if using boxwing model

inputs_root: /home/jddai/ginan/inputData/products/

atx_files:  [ igs20.atx                             ] # required
egm_files:  [ tables/EGM2008.gfc                    ] # Earth gravity model coefficients file
igrf_files: [ tables/igrf13coeffs.txt               ]
erp_files:  [ finals.data.iau2000.txt        ]
planetary_ephemeris_files: [ tables/DE436.1950.2050 ]

troposphere:
    gpt2grid_files: [ tables/gpt_25.grd ]

tides:
    ocean_tide_loading_blq_files:   [ tables/OLOAD_GO.BLQ                  ] # required if ocean loading is applied
    atmos_tide_loading_blq_files:   [ tables/ALOAD_GO.BLQ                  ] # required if atmospheric tide loading is applied
    ocean_pole_tide_loading_files:  [ tables/opoleloadcoefcmcor.txt ] # required if ocean pole tide loading is applied
    ocean_tide_potential_files:     [ tables/fes2014b_Cnm-Snm.dat   ]

snx_files:
# - "*.SNX" # use a wild card to include all files matching the description in the directory
- tables/igs_satellite_metadata_2203_plus.snx
- tables/sat_yaw_bias_rate.snx
- tables/qzss_yaw_modes.snx
- tables/bds_yaw_modes.snx
- IGS1R03SNX_20191950000_07D_07D_CRD.SNX

satellite_data:
    nav_files: [ brdm1990.19p ]

gnss_observations:
    gnss_observations_root: /home/jddai/ginan/inputData/data
    rnx_inputs:
    - AREG00PER_R_20191990000_01D_30S_MO.rnx
    - ASCG00SHN_R_20191990000_01D_30S_MO.rnx
    - CEDU00AUS_R_20191990000_01D_30S_MO.rnx
    - COCO00AUS_R_20191990000_01D_30S_MO.rnx
    - CPVG00CPV_R_20191990000_01D_30S_MO.rnx
    - DARW00AUS_R_20191990000_01D_30S_MO.rnx
    - DGAR00GBR_R_20191990000_01D_30S_MO.rnx
    - DJIG00DJI_R_20191990000_01D_30S_MO.rnx
    - FAIR00USA_R_20191990000_01D_30S_MO.rnx
    - HERS00GBR_R_20191990000_01D_30S_MO.rnx
    - HOB200AUS_R_20191990000_01D_30S_MO.rnx
    - IISC00IND_R_20191990000_01D_30S_MO.rnx
    - JFNG00CHN_R_20191990000_01D_30S_MO.rnx
    - KARR00AUS_R_20191990000_01D_30S_MO.rnx
    - KIRI00KIR_R_20191990000_01D_30S_MO.rnx
    - KOKV00USA_R_20191990000_01D_30S_MO.rnx
    - LHAZ00CHN_R_20191990000_01D_30S_MO.rnx
    - LMMF00MTQ_R_20191990000_01D_30S_MO.rnx
    - MAW100ATA_R_20191990000_01D_30S_MO.rnx
    - MBAR00UGA_R_20191990000_01D_30S_MO.rnx
    - METG00FIN_R_20191990000_01D_30S_MO.rnx
    - MGUE00ARG_R_20191990000_01D_30S_MO.rnx
    - NICO00CYP_R_20191990000_01D_30S_MO.rnx
    - NKLG00GAB_R_20191990000_01D_30S_MO.rnx
    - OHI300ATA_R_20191990000_01D_30S_MO.rnx
    - POAL00BRA_R_20191990000_01D_30S_MO.rnx
    - QUIN00USA_R_20191990000_01D_30S_MO.rnx
    - REYK00ISL_R_20191990000_01D_30S_MO.rnx
    - RGDG00ARG_R_20191990000_01D_30S_MO.rnx
    - SAMO00WSM_R_20191990000_01D_30S_MO.rnx
    - SEY200SYC_R_20191990000_01D_30S_MO.rnx
    - SOLO00SLB_R_20191990000_01D_30S_MO.rnx
    - TONG00TON_R_20191990000_01D_30S_MO.rnx
    - TOPL00BRA_R_20191990000_01D_30S_MO.rnx
    - TOW200AUS_R_20191990000_01D_30S_MO.rnx
    - USN700USA_R_20191990000_01D_30S_MO.rnx
    - VACS00MUS_R_20191990000_01D_30S_MO.rnx
    - ZIM200CHE_R_20191990000_01D_30S_MO.rnx
    - CUSV00THA_R_20191990000_01D_30S_MO.rnx

outputs:

outputs_root:                   /home/jddai/ginan/out/output_pod_example_300/

metadata:
    config_description:         pod_example
    analysis_agency:            GAA
    analysis_centre:            Geoscience Australia -----FILE NOT FOR OPERATIONAL USE-----
    analysis_software:          Ginan v3.0
    rinex_comment:              AUSNETWORK1
    gradient_mapping_function:  Chen & Herring, 1992        # (string) Name of mapping function used for mapping horizontal troposphere gradients
    ocean_tide_loading_model:   FES2014                     # (string) Ocean tide loading model applied
    reference_system:           igs20                       # (string) Terrestrial Reference System Code
    time_system:                G                           # (string) Time system - e.g. "G", "UTC"

trace:
    level:                      3
    output_receivers:           true
    output_network:             true
    receiver_filename:          <RECEIVER>_<CONFIG>_<YYYY><DDD><HH>.TRACE
    network_filename:           <RECEIVER>_<CONFIG>_<YYYY><DDD><HH>.TRACE
    output_residuals:           true
    output_residual_chain:      true
    output_config:              true

network_statistics:
    output:                     true                             # (bool) Enable exporting network statistics data to file
    directory:                  ./pod_network                          # (string) Directory to export network statistics data
    filename:                   <CONFIG>_network_statistics.json # (string) Network statistics data filename

gpx:
    output: true

sinex:
    output:                     true
    directory:                  ./pod_snx
    filename:                   <CONFIG>_<YYYY><DDD><HH>.SNX

sp3:
    output:                     true
    directory:                  ./pod_sp3
    filename:                   <CONFIG>_<YYYY><DDD><HH>.SP3
    output_interval:            30 # (int) Update interval for sp3 records

clocks:
    output:                     true
    directory:                  ./pod_clk
    filename:                   <CONFIG>_<YYYY><DDD><HH>.CLK

erp:
     output:                     true
     directory:                  ./pod_erp
     filename:                   <CONFIG>_<YYYY><DDD><HH>.ERP

orbex:
    output:                     true
    filename:                   <CONFIG>_<YYYY><DDD><HH>.OBX
    directory:                  ./pod_orbex
    attitude_sources:           [MODEL, NOMINAL]

satellite_options:

global:

    #clock_codes:                       [AUTO, AUTO]

    models:
        clock:
            enable:                    true
            sources:                   [KALMAN, PRECISE, BROADCAST]
        pos:
            enable:                    true
            sources:                   [KALMAN, PRECISE, BROADCAST]
        attitude:
            enable:                    true
            sources:                   [MODEL, PRECISE, NOMINAL]
        pco:
            enable:                    true
        pcv:
            enable:                    true
        code_bias:
            enable:                    true
            default_bias:              0
            undefined_sigma:           0
        phase_bias:
            enable:                    false
            default_bias:              0
            undefined_sigma:           0

    orbit_propagation:
        albedo:                   cannonball
        antenna_thrust:           true
        empirical:                true
        empirical_dyb_eclipse:    [true,false,false]
        planetary_perturbations:  [moon,sun,mercury,venus,mars,jupiter,saturn,uranus,neptune,pluto]
        pseudo_pulses:
            enable:               false
        solar_radiation_pressure: boxwing
        mass:                     1000
        area:                     15
        srp_cr:                   1.75
        power:                    20

GPS:
    clock_codes: [ L1W,L2W ]

# G04:
#     exclude:                           true
G15:
    exclude:                           true

E05: { exclude: true }
E06: { exclude: true }
E10: { exclude: true }
E16: { exclude: true }
E17: { exclude: true }
E23: { exclude: true }
E28: { exclude: true }
E29: { exclude: true }
E32: { exclude: true }
E34: { exclude: true }
E35: { exclude: true }

receiver_options: # Options to configure individual stations or global configs

USN7:
    aliases: [PIVOT]

global:

    error_model:                elevation_dependent         # uniform, elevation_dependent
    elevation_mask:             10
    code_sigma:                 0.4
    phase_sigma:                0.002
    clock_codes:                [AUTO, AUTO]
    zero_dcb_codes:             [NONE, NONE]
    models:
        eccentricity:
            enable:             true                            # (bool) Enable modelling of antenna eccentricities
        attitude:
            enable:             true                            # (bool) Enables non-nominal attitude types
            sources:            [MODEL, NOMINAL]       # List of sourecs to use for attitudes
        clock:
            enable:             true                            # (bool) Enable modelling of clocks
        pco:
            enable:             true                            # (bool) Enable modelling of phase center offsets
        pcv:
            enable:             true                            # (bool) Enable modelling of phase center variations
        code_bias:
            enable:             true                            # (bool) Enable modelling of code biases
            default_bias:       0                               # (float) Bias to use when no code bias is found
            undefined_sigma:    0                               # (float) Uncertainty sigma to apply to default code biases
        phase_bias:
            enable:             false                           # (bool) Enable modelling of phase biases
            default_bias:       0                               # (float) Bias to use when no phase bias is found
            undefined_sigma:    0                               # (float) Uncertainty sigma to apply to default phase biases
        pos:
            enable:             true                            # (bool) Enable modelling of position
        ionospheric_components:                                 # Ionospheric models produce frequency-dependent effects
            enable: true                                        # Enable ionospheric modelling
            use_2nd_order:  true
            use_3rd_order:  true
        troposphere:
            enable: true
            models: [gpt2]
        eop:
            enable: true

    apriori_sigma_enu:      [0.003, 0.003, 0.009]                 # Use these fixed igma'sfor sites listed below
    mincon_scale_apriori_sigma:  1                                # Use ALL fixed and/or SINEX file sigma's (!! first preference to the fixed sigma's !!)
    mincon_scale_filter_sigma:   0
#ABMF: {mincon_scale_apriori_sigma: 3 }
#ALBH: {mincon_scale_apriori_sigma: 3 }
#ALGO: {mincon_scale_apriori_sigma: 3 }

processing_options:

process_modes:
    preprocessor:                 true
    spp:                          true
    ppp:                          true
    ionosphere:                   false

epoch_control:
    epoch_interval:               30
    wait_next_epoch:              3600     # Wait up to an hour for next data point - When processing RINEX causes PEA to wait a long as need for last epoch to be processed.
    wait_all_receivers:           1

gnss_general:
    rec_reference_system:         gps
    minimise_sat_clock_offsets:   true
    sys_options:
        gps:
            process:              true
            ambiguity_resolution: false
            reject_eclipse:       false
            code_priorities:      [ L1W, L1C, L2W ]
        # gal:
        #     process:                true
        #     ambiguity_resolution:   false
        #     reject_eclipse:         false
        #     code_priorities:        [ L1C, L5Q, L1X, L5X ]
        # glo:
        #     process:                true
        #     ambiguity_resolution:   false
        #     reject_eclipse:         true
        #     code_priorities:        [ L1P, L1C, L2P, L2C ]
        # qzs:
        #     process:                true
        #     ambiguity_resolution:   false
        #     reject_eclipse:         true
        #     code_priorities:        [ L1C, L2L, L2X ]

spp:
    always_reinitialise: false
    max_lsq_iterations: 12
    outlier_screening:
        max_gdop: 30
        postfit:
            sigma_check: true

ppp_filter:
    ionospheric_components:
        common_ionosphere:        true
        use_if_combo:             false
    outlier_screening:
        prefit:
            max_iterations: 2
            sigma_check: true
            sigma_threshold: 5
            omega_test: false
        postfit:
            max_iterations: 10
            sigma_check: true
            sigma_threshold: 3

    rts:
        enable:                   true

model_error_handling:
    meas_deweighting:
        deweight_factor:          10000
    state_deweighting:
        deweight_factor:          10000
    ambiguities:
        outage_reset_limit:       3

        phase_reject_limit:       2
        reset_on:
            gf:    true
            lli:   true
            mw:    true
            scdia: true
    exclusions:
        gf:      true
        lli:     true
        mw:      true
        scdia:   true
        eclipse: false
    ionospheric_components:
        outage_reset_limit: 3
    orbit_errors:
        enable:                      false
        pos_process_noise:           10
        vel_process_noise:           1
        vel_process_noise_trail:     0
        vel_process_noise_trail_tau: 0

minimum_constraints:
    enable:                       true
    rotation:
        estimated:                [true]
    scale:
        estimated:                [true]
    translation:
        estimated:                [true]
    application_mode:             weight_matrix
    constrain_orbits:             false
    outlier_screening:                             # Statistical checks allow for detection of outliers that exceed their confidence intervals
        postfit:
            max_iterations:       10               # Maximum number of measurements to exclude using postfit checks while iterating filter
            sigma_check:          true             # Enable sigma check
            sigma_threshold:      3                # Sigma threshold
        prefit:
            max_iterations:       2                # Maximum number of measurements to exclude using prefit checks before attempting to filter
            omega_test:           false            # Enable omega-test
            sigma_check:          true             # Enable sigma check
            sigma_threshold:      5                # Sigma threshold

orbit_propagation:
    integrator_time_step:         60    # Timestep for the integrator, must be smaller than the processing time step, might be adjusted if the processing time step isn't a integer number of time steps
    central_force:                true
    egm_field:                    true  # Acceleration due to the high degree model of the Earth gravity model (exclude degree 0, made by central_force)
    egm_degree:                   15    # J2 acceleration perturbation due to the Sun and Moon
    solid_earth_tide:             true  # Model accelerations due to solid earth tides
    ocean_tide:                   true  # Model accelerations due to ocean tides model
    pole_tide_solid:              true  # Model accelerations due to solid pole tide (degree 2 only)
    pole_tide_ocean:              true
    general_relativity:           true
    indirect_J2:                  true

estimation_parameters:

global_models:
    eop:
        estimated:              [true]
        sigma:                  [10,10,1e-9]
    eop_rates:
        estimated:              [true]
        sigma:                  [10]

receivers:

    PIVOT:
        #clock:
        #    estimated:     [true]
        #    process_noise: [0]
        #    sigma:         [1e-9]
        code_bias:
            estimated: [false]

    global:
        pos:
            estimated:          [true]
            sigma:              [1]
            process_noise:      [0.0]
            # process_noise_dt:   second
        clock:
            estimated:          [true]
            sigma:              [1000]
            process_noise:      [10] # [100]
        ambiguities:
            estimated:          [true]
            sigma:              [1000]
            process_noise:      [0]
            # process_noise_dt:   day
        trop:
            estimated:          [true]
            sigma:              [0.3]
            process_noise:      [0.0001]
            # process_noise_dt:   second
        trop_grads:
            estimated:          [true]
            sigma:              [0.03]
            process_noise:      [1.0E-6]
            # process_noise_dt:   second
        ion_stec:
            estimated:          [true]
            sigma:              [500]
            process_noise:      [10]
        code_bias:
            estimated:          [true]
            sigma:              [20]
            process_noise:      [0]
    # USN7:
    #     clk:
    #         estimated:          [false]    # Set reference (pivot) station clock
    #     code_bias:
    #         estimated:          [false]

satellites:
    global:
        clock:
            estimated:          [true]
            sigma:              [1000]
            process_noise:      [1]
            tau:                [100]
            #mu:                 [10000]
        code_bias:
            estimated:          [true]
            sigma:              [10]
            process_noise:      [0]
        orbit:                                            # Orbital state
            estimated:          [true]                    # [bools] Estimate state in kalman filter
            sigma:              [10, 10, 10, 0.01]   # [floats] Apriori sigma values - if zero, will be initialised using least squares
            process_noise:      [0]

        emp_d_0: { estimated: [true], sigma: [10]}
        emp_y_0: { estimated: [true], sigma: [1]}
        emp_b_0: { estimated: [true], sigma: [1]}

        # emp_d_1: { estimated: [true], sigma: [1]}
        # emp_y_1: { estimated: [true], sigma: [1]}
        emp_b_1: { estimated: [true], sigma: [1]}

        emp_d_2: { estimated: [true], sigma: [1]}
        # emp_y_2: { estimated: [true], sigma: [1]}
        # emp_b_2: { estimated: [true], sigma: [1]}

        # emp_d_3: { estimated: [true], sigma: [1]}
        # emp_y_3: { estimated: [true], sigma: [1]}
        # emp_b_3: { estimated: [true], sigma: [1]}

        # emp_d_4: { estimated: [true], sigma: [1]}
        # emp_y_4: { estimated: [true], sigma: [1]}
        # emp_b_4: { estimated: [true], sigma: [1]}

mongo:
#enable: primary
enable: none
output_components: primary
output_states: primary
output_measurements: primary
output_test_stats: none
output_trace: none
delete_history: primary

debug:
# instrument: true
#output_mincon: true
#mincon_filename: preMinconState.bin
#mincon_only: true
# mincon_only: true

It was found that there was a large error in the orbit accuracy assessment. Are there any corrective measures?
Among them I use https://github.com/GeoscienceAustralia/gnssanalysis for accuracy comparison

1711867462334
1711867391133

I found that the program performs backward Kalman data processing. How can I modify the pod.yaml file to improve the accuracy of orbit determination(do post-processing)?

Incorrect number of seconds in a week

Hi there, I used a code search and found an incorrect number of seconds in a week (608400 instead of 604800) listed in one of your files. I recommend fixing it to avoid incorrect timings that could potentially lead to unexpected behavior.

kfState.stateTransition(std::cout, kfState.time + dt * 608400);

Error sending SSR to NtripCaster

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. start pea
  2. generate PPP, MIN_CON
  3. See error

Expected behavior
As soon as Output will be generated, PEA throws an Error:

Uploader connected.

Synced 20 stations...
Warning: No JPL ephemeris file found.
 ------- PREPROCESSING STATIONS       --------

 ------- CALCULATING PPP MEASUREMENTS --------
RtcmMessageType::GPS_SSR_CODE_BIAS was not written
RtcmMessageType::GPS_SSR_CODE_BIAS was not written

Error: End of file in read_handler_chunked for http://<host>:<port>/SSR00GAA0
Message met fatal_message_level condition for exit.
Exiting...

Segmentation fault (core dumped)

Configuration files

  • metadata.yaml (Edidted to receiv RTCM-Broadcast-Ephemeris
  • input_streams.yaml (Edited to receive RTCM-MSM5)
  • ambiguity_resoltion.yaml
  • debug_trace.yaml
  • output_ssr.yaml.txt

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Rocky Linux 8 (Also happens under Ubuntu 22.04)
  • Version of Ginan: "develop-weekly" and "2.1.0"
  • Library used (Boost 1.74, Eigen 3.4)

failed to link boost library

Hello, Sir

I tried to install GINAN on my laptop (MacOS 11.6 with gcc11), but it failed to find boost library.  I installed boost 1.76 library with macports. 

The error message as following:

CMake Error at /opt/local/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Boost (missing: Boost_INCLUDE_DIR log log_setup date_time
filesystem system thread program_options serialization timer) (Required is
at least version "1.69.0")
Call Stack (most recent call first):
/opt/local/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/opt/local/share/cmake-3.21/Modules/FindBoost.cmake:2360 (find_package_handle_standard_args)
CMakeLists.txt:84 (find_package)

Would anyone provide some advice? Thanks for help.

PPP example does not work well

Hi Ginan Team,

Recently, I have tried ginan with the provided example data. However, it seems the PPP results are not very good. Here are the results:

388777f558251a30b35b106a963a943

Should it be like this?

Best,
Shizhuang Wang

Various compilation problems...

This is on MacOS 12, but the problems seem more general:

  • MongoDB and OpenMP are supposed to be optional, but they are not really. Even if ENABLE_MONGODB and ENABLE_PARALLELISATION are false, various source files contain code that requires them to be installed, and CMakeLists.txt still adds the corresponding libraries, so compilation fails.
  • add_executable(peaUploader) seems to lack many sources files, resulting in linking errors. Adding ephemeris.cpp (which seems needed) results in a duplicate definition of ecef2rac.
  • ${OPENSSL_INCLUDE_DIR} is needed in target_include_directories(...)
  • On recent compilers, common/orbits.cpp needs to include and use std::isnan (or perhaps include <math.h>, I'm not sure); common/rinexObsWrite.cpp needs to have "unsigned int" instead of "uint".

I may be able to PRs for the last two, but the first two seem beyond the scope of external review.

PEA crashes on editing main yaml config - "inputs:root_directory" issue

Describe the bug
Editing and Saving results in Reloading the yaml config. I think that's how it should be. While loading the ATX the reload fails. It seems that with the reloading the inputs:root_directory parameter will be attended. When I set inputs:root_directory to "." and set all the files to "./products/..." one can see that with every reload the "./" will be attended to loading the ATX file. I edited one parameter in the main yaml (the one that loads all the other ones) and I could see after 4 time editing that the path to ATX is now: "././././igs20.atx"
This occurs at least on Real-Time Network processing.

To Reproduce
Steps to reproduce the behavior:

  1. Define inputs:root_directory: products/
  2. Start pea -y config.yaml
  3. Edit and save something in config.yaml
  4. PEA will reload and failing on ATX
Checking configuration file asbru.yaml
Loading configuration from file input_metadata.yaml
Loading configuration from file input_streams_rover.yaml
Loading configuration from file processing_network.yaml
Loading configuration from file debug_trace.yaml
Loading configuration from file config.yaml
Error: Invalid  file products/products/igs20.atx
Message met fatal_message_level condition for exit.
Exiting...

Segmentation fault (core dumped)

Expected behavior
PEA stops

Configuration files
Yaml files assist with with confirming the exact processing options of the software. Default yaml from exampleConfigs

Desktop (please complete the following information):

  • OS: Ubuntu 22.04
  • Version of Ginan: v2.1.0
  • Library used (Boost 1.74, Eigen 3.4)

Additional context
Add any other context about the problem here.

-DENABLE_MONGODB=TRUE is default?

hi team

in cmake I found I needed to explicitly set -DENABLE_MONGODB=FALSE to avoid this dependency.

Doc suggests that " If you wish to enable the optional MONGO DB utilities you will need to add the -DENABLE_MONGODB=TRUE flag" which seems the opposite to my experience.

Also, on the github build page, could do with a better formatting on teh below:

Since Ginan v1.2-alpha both gcc and g++ of version 9 are required, so make sure to update the gcc/g++ alternatives prior to compilation: sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 51 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 51

matt

>>Question about Yaw calculation formula in nominalYawGps()

Dear Ginan term
First of all, thank you for providing such a marvelous and comprehensive source code!
I am recently reading on the part of yaw attitude model. When using sun elevation angle namely beta and orbital angle namely mu to calculate yaw angle, you implemented the formula by adding an extra PI in function nominalYawGps(). However, It does't correspond to the methods in most references, and is also inconsistent with the implementation of common open source codes such as groops/rtklib. Do you have any considerations for doing this operation? If PI is not added to the equation, is the subsequent code also correct? I would appreciate it if you could explain this issue to me. Thank you very much, and I look forward to your reply.
yaw

fit_sp3_pseudoobs

Hi Team!

I'm using the release-v3.0-alpha branch, so I understand if it's a work in progress.

The reason I'm looking at that branch is the fit_sp3_pseudoobs.yaml example, which I think generates data very similar to what I'm after. I would like to take an existing (set of) sp3 files, fit orbits and precisely predict those orbits a day into the future.

I can run the example (using the docker image) and generate sp3 files, but I don't understand the output. The ephemeris that is generated (3 sp3 files) is over the same time-period as the input files and doesn't match the input at all? I've used the compare_orbits.yaml example to compare them and the distances are in the 1000s of km.

The only modification to the fit_sp3_pseudoobs.yaml file was to comment out the "mongo" section, as I'm not using the visualisation.

I'm sure it's a misunderstanding, since I'm very new to ginan. Could you please explain the output?

./README does not install any dependencies

I have cloned Ginan in a machine. It's already executable (so the step in the installation that says to make it executable seems outdated):

-rwxr-xr-x 1 srhildeb gipsy 20977 Jan 10 01:38 README.md

When I type in the terminal: ./README.md, nothing at all happens:

[srhildeb@pp1oc ~/ginan]$ ./README.md
[srhildeb@pp1oc ~/ginan]$
[srhildeb@pp1oc ~/ginan]$ ls
archived docker examples LICENSE.md scripts
CHANGELOG.md Docs ISSUES.md README.md src

The OS in my machine is:

NAME="Scientific Linux"
VERSION="7.9 (Nitrogen)"
ID="scientific"
ID_LIKE="rhel centos fedora"

Does the installation from the README.md file only work with Ubuntu?

Can not install MongDB

CMake Error: cmake_symlink_library: System Error: Operation not supported
CMake Error: cmake_symlink_library: System Error: Operation not supported
src/libbson/CMakeFiles/bson_shared.dir/build.make:445: recipe for target 'src/libbson/libbson-1.0.so.0.0.0' failed
make[2]: *** [src/libbson/libbson-1.0.so.0.0.0] Error 1
make[2]: *** delecting “src/libbson/libbson-1.0.so.0.0.0”
CMakeFiles/Makefile2:405: recipe for target 'src/libbson/CMakeFiles/bson_shared.dir/all' failed
make[1]: *** [src/libbson/CMakeFiles/bson_shared.dir/all] Error 2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2

wrong system char code for SBAS

in src/cpp/common/satSys.hpp line50 and line 64
system code for SBAS is set to lowercase 's'
however, other functions (e.g. sysFromChar) use uppercase 'S'
This can lead to misrecognition

Code:

#define SBAS_CHAR 's'
/** Returns the character used as a prefix for this system.
*/
char sysChar() const
{
switch (sys)
{
case E_Sys::GPS: return 'G';
case E_Sys::GLO: return 'R';
case E_Sys::GAL: return 'E';
case E_Sys::QZS: return 'J';
case E_Sys::BDS: return 'C';
case E_Sys::LEO: return 'L';
case E_Sys::IRN: return 'I';
case E_Sys::SBS: return SBAS_CHAR;
default: return '-';
}
}

SOLUTION/EPOCHS missing from SINEX output

Describe the bug
SOLUTION/EPOCHS is a mandatory block in a SINEX file. The output SINEX does not contain this block.

To Reproduce
Steps to reproduce the behavior:

  1. Run any example with sinex output set to true
  2. Open SNX file in the outputs

Expected behavior
SOLUTION/EPOCHS block should be present, as per spec: https://ivscc.gsfc.nasa.gov/products-data/sinex_v202.pdf

Configuration files
Any example file with sinex output set to true:

outputs:
    sinex:
        output:                     true
        filename:                   SINEX.SNX

Desktop (please complete the following information):

  • OS: Linux (Docker)
  • Version of Ginan: HEAD release-v2.1.0-3e8e41e-dirty

Additional context
I tried to use an output SINEX file in DynAdjust as an experiment, but it failed due to the missing EPOCHS block.

SOLUTION/EPOCHS block has 0 sites
SOLUTION/ESTIMATE block contains additional sites not listed in SOLUTION/EPOCHS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.