Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introducing GNSS position solver #169

Merged
merged 101 commits into from
Sep 18, 2023
Merged

Introducing GNSS position solver #169

merged 101 commits into from
Sep 18, 2023

Conversation

gwbres
Copy link
Collaborator

@gwbres gwbres commented Sep 18, 2023

Precise positioning is the ultimate geodesics application of RINEX data post processing.

Such a position solver resolves the radio receiver location on Earth with high precision, based on the analysis of raw GNSS signals, as depicted in RINEX.

This branch introduces preliminary work with already all the basis of a so called "SPP" position solver, which is basically a position solver with 5-10m accuracy that can work on old and limited RINEX context. I choose to submit the basis now, because it keeps growing and it's silly I think to wait for the SPP topic to be fully solved.

The solver is implemented in the form of a library "gnss-rtk" so we have dedicated space to this topic for proper documentation. Most important being the documentation of the tuning parameters, that advanced users need to master.
NB that "gnss-rtk" is a library, that currently works from a RINEX blob, but is not particularly tied to RINEX, it's just one possible input data. It is closely tied to nyx/space and nyx/hifitime.

This topic is complex at least in terms of parameters that need to be taken into account and will certainly not be concluded in just one contribution.

The only solution I know to this is the "rtklib" software, which is also available on github and widely used (only open source solution ?).

Working on this very exciting topic is the perfect use case all the RINEX library and already showed some imperfections or lack of features we had. Here is the list of modifications that were made to the existing library :

  • improved env logger that becomes vital in this opmode
  • add the -p opmode to the command line
  • sanitize the SP3/NAV API so they are identical.
    Basically NAV and SP3 provide the same things but with different precision.
    In particular the position interpolation, which we already had on SP3 but need on NAV in case the user does not provide SP3
  • a couple of new methods for Observation RINEX :
    • epoch complete filter which is the best thing to do prior position solving
    • new methods / improvements to the Carrier object for Pseudo Range based calculations, very important to Observation Data processing
    • we will have to sanitize the Time Scale used for each SV to fully achieve SPP/PPP but that depends on Decoded Epoch type often has wrong timescale #81
    • New TOE/Week basically timing related stuff in the Broadcast Ephemeris classes: typical for position solving

Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
* improve Version parssing errors

Signed-off-by: Guillaume W. Bres <[email protected]>
* RINEX type parsing errors

Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
improve parsing and manage Merging operation

Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
improve error reporting

Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
@gwbres gwbres added documentation Improvements or additions to documentation enhancement New feature provided feature Request new feature labels Sep 18, 2023
@gwbres gwbres added this to the v1.0.0 milestone Sep 18, 2023
@gwbres gwbres self-assigned this Sep 18, 2023
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
Signed-off-by: Guillaume W. Bres <[email protected]>
@gwbres gwbres merged commit c8a5c96 into main Sep 18, 2023
1 check passed
@gwbres gwbres deleted the solver branch September 18, 2023 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature provided feature Request new feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants