Skip to content

Commit

Permalink
Github pages documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
ginan-release-bot committed Sep 2, 2024
0 parents commit 9eae50a
Show file tree
Hide file tree
Showing 183 changed files with 205,434 additions and 0 deletions.
9 changes: 9 additions & 0 deletions GinanFAQv03.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url='page.html?p=ginanFAQ.html'" />
</head>
<body>
<p>You will be redirected soon!</p>
</body>
</html>
122,932 changes: 122,932 additions & 0 deletions GinanYamlInspector.html

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions aboutGinan.html
53 changes: 53 additions & 0 deletions aboutGinan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

# Ginan: software toolkit and service

![The Southern Cross in the night sky](images/SouthernCross.png)

The Australian Government, through Geoscience Australia's Positioning Australia program, is funding the design, development and operational service of a Global Navigation Satellite System (GNSS) position correction system (the Ginan service and toolkit).

This system will give individuals and organisations no-cost access to software and products that have the potential to greatly enhance the accuracy of positioning – to within a few centimetres – across Australia.

The aims of the initiative are to:

* Develop a software based GNSS analysis toolkit and make it available to the public through an open source licence.
* Use that toolkit to produce position correction messages that allow users with compatible GNSS receivers and an internet connection to get to a position accuracy of a few centimetres. This is the Ginan toolkit operating in its Network Platform mode.
* Provide the toolkit in its User Platform mode which can take GNSS observations and correction messages to calculate precise positions with an accuracy of a few centimetres.
* Encourage the development of innovative position dependent technology and services that will be of economic benefit to Australia – to grow the market for original equipment manufacturers (OEMs), technology integrators, service providers, the science community and end users, and realise the full benefits of GNSS.
* Enhance Geoscience Australia’s internal expertise in multi-GNSS so that Geoscience Australia can continue to provide expert advice on GNSS system performance to domestic and international GNSS users.
* Help Geoscience Australia generate the next generation of geodetic datums, keep track of multi-GNSS performance over Australia, and produce positioning products so that Geoscience Australia can realize the full benefit of the navigation systems that operate in our region.
* Provide a state-of-art GNSS analysis toolkit to our universities and research organisations to enable Australia to lead the development of geospatial technology.

Geoscience Australia will support Ginan with ongoing maintenance and enhancements and will publish service level guarantees.

## Product offering

Ginan is being rolled out in a phased approach and will offer products in four distinct categories:

1. **The software itself.** Ginan is open-source software that Geoscience Australia has hosted on this GitHub repository. Anybody who has access to GitHub will be able to download and use the software. Selected parts of the software or the whole application may be downloaded. This is the concept behind Ginan as a toolkit. If a person is only interested in precise orbit determination, they need only take that software. By making the software open-source Geoscience Australia is:
1. Supporting GNSS education by allowing students and researchers to examine how the Ginan algorithms work to solve complex problems,
1. Enabling researchers and commercial organisations to use the software to solve research or commercial problems,
1. Allowing the software to become more robust over time by giving users the ability to report bugs and make suggestions to improve the software.
1. **Standard precise point positioning (PPP) product files.** An operational version of Ginan, maintained by Geoscience Australia, will produce a range of standard PPP product files including, for example, a precise orbits and clocks file in sp3 format. Users with a Geoscience Australia account will be able to log into the Geoscience repository and download the files they require. In time these files will also be submitted to the International GNSS Service (IGS) to become part of their data set.
1. **Precise point positioning correction messages.** An operational version of Ginan, maintained by Geoscience Australia, will stream over the internet on a 24 X 7 basis, a range of PPP correction messages in the [RTCM3](https://rtcm.myshopify.com/collections/differential-global-navigation-satellite-dgnss-standards) message format (and later possibly [SPARTN](https://www.spartnformat.org/) and [IGS-SSR](https://www.igs.org/formats-and-standards)) . Users with a Geoscience Australia account will be able to select and connect to the streams they require. The data will enable corrections to be applied in real-time to achieve position accuracies of under 5 cm in equipment capable of consuming the data.
1. **New PPP products and applications yet to be defined.** The Ginan toolkit gives Geoscience Australia the ability to offer new PPP products, yet to be defined but which, in collaboration with users, may spawn new applications and commercial opportunities. Within the PPP world there are well established conventions, but these do not need to constrain innovative thought.


## Users and Use Cases

Ginan's users and use cases are summarised in the figure below:

![Ginan's users and use cases](images/UseCasesv04.jpg)

## Collaborate

Geoscience Australia believes that Ginan is a compelling application to use for precise point positioning. Geoscience Australia is keen to hear from the positioning community regarding requirements around:

* Types of application that need to be supported,
* Novel data formats or combinations for specific applications,
* Any other aspects related to PPP technology and operations.

Contact Geoscience Australia via e-mail: [email protected] - Include "Ginan" in the title.

## Resources

[![](images/GinanProjectOverviewFrontSlide20210902v01.png) The Ginan project overview presentation from March 2022](resources/GinanProjectOverview20220316v01.pdf)
41 changes: 41 additions & 0 deletions aboutGnss.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@

# Global Navigation Satellite Systems (GNSS)

> Global Navigation Satellite Systems `GNSS` have revolutionised the way we think about and use position information. But there is a lot more to GNSS than the phone in your hand. They are complex systems of systems. This section describes the major components that make up a GNSS.
![Global Navigation Satellite System components](images/GNSSComponents1-75pc.png)
*Global Navigation Satellite System components*

A global navigation satellite system consists of:

1. A constellation of nominally 24 satellites moving around the Earth twice a day in three distinct orbits that are inclined to each other and at approximately 20,000 km above the Earth's surface (medium Earth orbit or MEO - the space segment),
1. A number of monitoring stations on the ground that listen to the satellite broadcasts and assess their quality,
1. A couple of control stations on the ground that can make adjustments to satellite orbits and configurations,
1. The receivers on the ground - in your phone or your car - that can pick up the satellite signals and decode them to give you a position.

The clever part is that the satellites know where they are - their position in their orbit around the Earth - because the control segment uploads new computed orbits every time they pass over. The satellites continuously broadcast their orbital position along with a special timing or ranging signal.

The speed at which the radio signal travels from the satellite to Earth is known - that is the speed of light. A receiver on the ground can pick up the ranging signal and calculate how far away the satellite is from the receiver. This is called ranging. Note: the speed of light is a known constant but unfortunately other effects become the source of some position uncertainties as we'll see later.

Given that the satellite is also broadcasting its position, the receiver now has a distance and a position. If the receiver can see four satellites at one time it has enough information to use sophisticated trigonometry (trilateration) to calculate the position of the receiver.

![The basic GNSS position calculation](images/GNSSPositions-75pc.png)
*The basic GNSS position calculation*

## Active GNSS Constellations

There are currently four full GNSS constellations in operation:

1. Navstar Global Positioning System (GPS) - the original American system started in 1978 and achieved full operational capability in 1995. GPS orbits at 20,200 km above the Earth,
1. GLONASS from Russia - Global'naya Navigatsionnaya Sputnikovaya Sistema - since 1995. GLONASS orbits at 19,100 km above the Earth,
1. BeiDou from China since 2018. BeiDou orbits at 21,528 km above the Earth,
1. Galileo from the European Union since 2021. Galileo orbits at 23,222 km above the Earth,

![GNSS Constellations](images/GNSSConstellations-75pc.png)
*GNSS Constellations*

All of the constellations broadcast an open signal service (as opposed to an encrypted service for armed forces). It is the case that if you have a receiver that can pick up signals of different frequencies from more than one constellation, so the more confident and accurate will be your position.

## Resources

[![](images/GNSSFrontSlide20210618v01.png) Global Navigation Satellite Systems](resources/GNSS20211209v01.pdf)
158 changes: 158 additions & 0 deletions ambiguities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@

# Ambiguity Resolution

Estimation and/or resolution of carrier phase ambiguities is central to precise point positioning.
Whereas standard precision positioning is performed using the unambiguous pseudorange measurement, these measurements are known to have an accuracy ranging from metres to decimetres.
Precise positioning thus rely on the use of carrier phase measurements which have an accuracy of millimetres to a few centimetres, but are ambiguous by an integer number of wavelengths.
Estimating these ambiguities to centimetre or millimetre level of accuracy is a requirement of precise positioning.
Integer ambiguity resolution offers the following advantages, over just real-valued ambiguity estimation.

* Ambiguities resolved to integer ambiguities have no errors, which improves the accuracy of the solution, it also make the measurement model more robust to changes in environmental conditions.
* Ambiguity resolution can be attempted when estimates are of around 5cm of accuracy (one 4th of wavelength) reducing their errors to 0. This results in an acceleration of convergence of PPP solutions.
* Ambiguities are constant unless there are cycle slips eliminating the need to estimate then once resolved, this in turn will simplify/accelerate the estimation of other parameters in real time applications.


As with any integer estimation process the ambiguity resolution for GNSS signals in Ginan will follow the steps below

* The ambiguities are estimated as real numbers (with the other parameters).
* Integer values of the ambiguities are resolved using the results of step 1 (the real-value ambiguities and the VCV matrix).
* The validity of integer ambiguities is tested using statistical tests.
* Ambiguity states are constrained to the resolved ambiguity

Ginan can be set to solve ambiguities in GPS, Galileo, Beidou and QZSS measurements. Ambiguity resolution is not supported for the GLONASS FDMA signals.


## Real-valued ambiguity estimation

Carrier phase ambiguities and phase biases are estimated as real numbers using carrier phase measurements
\begin{equation}
E(L_{r,c}^s)
= \rho_{r}^s
+ c_{light}(dt_{r}^q - dt^s)
+ \tau_r^s
- I^s_r
+ b_{r,c}^q
- b_{c}^s
+ \lambda_{f} z_{r,c}^s
+ \phi^s_{r,f}
\end{equation}
and pseudorange measurements $P_{r,c}^s$.

The range $\rho_{r}^s$, clock offsets $dt_{r}^q$ and $dt^s$, atmospheric delays $\tau_r^s $ and $I^s_r$, can be estimated to adequate accuracy using the pseudoranges, and $\phi^s_{r,f}$ can be corrected using deterministic models.
However this still leaves the rank deficiency produced by correlations between ambiguities $z_{r,c}^s$ and phase biases $b_{r,c}^q$ and $b_{c}^s$.
Thus, without using extra pseudo-observations, the real valued ambiguities are expected to be contaminated by these phase biases $A_{r,c}^s = \lambda_{f} z_{r,c}^s + b_{r,c}^q - b_{c}^s$

This make it difficult to solve the ambiguities directly.
Ginan chooses instead to make and solve combinations of ambiguities, e.g.:
\begin{equation}
A_{r1,r2, c}^{s1,s2} = A_{r1,c}^{s1} - A_{r1,c}^{s2} - A_{r2,c}^{s1} - A_{r2,c}^{s2} = \lambda_{f} (z_{r1,c}^{s1} - z_{r1,c}^{s2} - z_{r2,c}^{s1} - z_{r2,c}^{s2}).
\end{equation}
Ginan forms these combinations by using the LAMBDA Z-transform/decorrelation, thus only algorithms using the Z-transform are effective in ambiguity resolution without using pivots.

For end user processing, where the satellite phase bias $b_{c}^{s1}$ is known, a **receiver ambiguity pivot** can be applied to separate the receiver phase bias from the ambiguities.
By setting the ambiguity for one satellite $s1$ to an arbitrary value $\tilde{z_{r,c}^{s1}}$ the receiver phase bias will be se to
$\tilde{b_{r,c}^q}=b_{r,c}^q+\lambda_{f} (\tilde{z_{r,c}^{s1}}-z_{r,c}^{s1})$.
This in turn will make other ambiguity estimate into solvable integers:
\begin{equation}
A_{r,c}^{s1} + b_{c}^{s1} - \tilde{b_{r,c}^q}= \lambda_{f} \tilde{z_{r,c}^{s1}}
\end{equation}
\begin{equation}
A_{r,c}^{s2} + b_{c}^{s2} - \tilde{b_{r,c}^q} = \lambda_{f} (z_{r,c}^{s2}-\tilde{z_{r,c}^{s1}}+z_{r,c}^{s1})
\end{equation}
\begin{equation}
A_{r,c}^{s3} + b_{c}^{s3} - \tilde{b_{r,c}^q} = \lambda_{f} (z_{r,c}^{s3}-\tilde{z_{r,c}^{s1}}+z_{r,c}^{s1})
\end{equation}

The **network ambiguity pivot** performs a similar function for network processing, where both receiver and satellite biases are defined using a small set of arbitrarily set ambiguities:
1. Assign a station as anchor, and define the receiver bias $b_{r0,c}^q=0$
1. At each epoch, scan all ambiguity estimates $z_{r,c}^{s}$
1. If the phase bias for receiver $b_{r,c}^q$ is defined but the satellite phase bias $b_{c}^{s}$ is not, define $b_{c}^{s}$ by setting $z_{r,c}^{s}$ to an arbitrary value
1. If the phase bias for satellite $b_{c}^{s}$ is defined but the receiver phase bias $b_{r,c}^q$ is not, define $b_{r,c}^q$ by setting $z_{r,c}^{s}$ to an arbitrary value
1. Repeat until all phase biases are defined

Using the ambiguity pivots allows real-value ambiguity estimates to become close to integer values and thus use ambiguity resolution techniques without Z-transform/decorrelation.

## Integer ambiguity estimation and validation
Once the real-valued ambiguity estimates have been calculated, they can be solved into integers. Ginan implements various methods for to perform ambiguity resolution, namely:

* Integer rounding (round)
* Iterative rounding (iter_rnd)
* Integer Bootstrap (bootst)
* Lambda Integer Least Squares (lambda)
* Lambda ILS with ratio test (lambda_alt)
* Lambda ILS with common ambiguity selection (lambda_al2)
* Lambda best integer Equivariant (lambda_bie)

At its simplest, the `round` method, just rounds selected ambiguities $z(i)$ to their nearest integer $\hat{z}(i)$. Ambiguities are selected based on two criteria, the ratio test:
\begin{equation}
|z(i)-\hat{z}(i)|<\frac{1}{R_{thres}+1}
\end{equation}
and the success rate test:
\begin{equation}
\frac{1}{2}erfc(-\frac{1-|z(i)-\hat{z}(i)|}{\sqrt{2{\bf Q_{zz}}(i,i)}})>S_{thres}
\end{equation}
where $R_{thres}$ and $S_{thres}$ are user defined thresholds, $erfc$ is the complementary error function and $Q_{zz}$ is the covariance matrix of ambiguities.

The `round` method consider the ambiguities to be independent of each other.
In reality the ambiguities are highly correlated with each other, even after eliminating rank deficiencies using ambiguity pivots.
The `iter_rnd` method attempts to mitigate the effect of these correlations by iterating the integer rounding process.
After solving the subset ${\bf j}\subset {\bf i}$ of ambiguities, the estimated ambiguities and its covariance are updated as:
\begin{equation}
{\bf K}={\bf Q_{zz}}({\bf i},{\bf j}) {\bf Q_{zz}}({\bf j},{\bf j})
\end{equation}
\begin{equation}
{\bf z'}={\bf z} - {\bf K}({\bf z}({\bf j}) - {\bf \hat{z}}({\bf j}))
\end{equation}
\begin{equation}
{\bf Q_{z'z'}}={\bf Q_{zz}} - {\bf K} {\bf Q_{zz}}({\bf j},{\bf i})
\end{equation}
and the process repeated with new set of ambiguities ${\bf z'}$.
This eliminates the influence of errors and uncertainty of ${\bf z}({\bf j})$ from ambiguities outside the ${\bf j}$ set, hopefully facilitating the resolution of the later ones.

Alternatively, the `bootst` and lambda methods handle ambiguity correlations by performing a Z-transform based reduction process.
The substitutes the ambiguities ${\bf z}$ with a less correlated linear combination ${\bf z''}$.
The linear combination matrix is obtained by applying a series of unimodular transformations
\begin{equation}
{\bf z''}=(\coprod {\bf Z_{ij}}) {\bf z}
\end{equation}
where
\begin{equation}
{\bf Z_{ij}} = {\bf I} - n_{ij}{\bf e_i}{\bf e_j^{T}}
\end{equation}
with $n_{ij} \in \Bbb Z$ and ${\bf e_i}$ a column vector with 1 in position $i$ and 0 elsewhere.
The ${\bf Z_{ij}}$ transformation is equivalent to substituting $z(i)$ with $z(i)-n_{ij}z(j)$, and has the effect of changing the covariance matrix as:
\begin{equation}
{\bf L''} = {\bf L} - n_{ij}{\bf L}{\bf e_i}{\bf e_j^{T}}
\end{equation}
where ${\bf L}$ is lower triangular matrix product of the $L^TDL$ decomposition of $Q_{zz}$.
${\bf L''}$ s preserved by the transformation with the exception of:
\begin{equation}
l''_{kj} = l_{kj} - n_{ij}l_{ki} \forall k \ge i
\end{equation}
by choosing $n_{ij}$ such that $|l''_{kj}|<0.5$, the correlation between transformed ambiguities $z''$ are minimized
The `bootst` method applies the same process as `iter_rnd` on the transformed ambiguities $z''$.

The lambda methods on the other hand use an iterative fix and adjust process to select a set of ambiguities with minimum distance to the real-valued estimates.
The $R_{thres}$ and $S_{thres}$ thresholds are used in different ways. First the success rate threshold $S_{thres}$ is used to discard ambiguities that has too high an uncertainty to resolve.
The reduction process used for lambda algorithms use a reordering process alongside the de-correlation which tends to order the $z''$ ambiguity in descending order of variance.
Relying on this, the last $J$ ambiguities are selected for resolutions, with $J$ selected in such a way as to fulfill
\begin{equation}
\coprod_{n-J}^n erf(sqrt{\frac{1}{8{\bf D''}(j)}}) \ge S_{thres}
\end{equation}
where ${\bf D''}$ is obtained from the $L^TDL$ decomposition of $Q_{z''z''}$.
The potential integer set candidates ${\bf \hat{z''}_k}$ candidates are selected among those that fulfill the criteria:
\begin{equation}
\|{\bf z''}-{\bf \hat{z''}_k}\|<R_{thres}\|{\bf z''}-{\bf \hat{z''}_0}\|
\end{equation}
where ${\bf \hat{z''}_0}$ is the integer set at minimum (weighted) distance from the real-valued estimate ${\bf z''}$.
There is also a maximum number of candidate sets set by the user.

The difference between lambda methods implemented in Ginan is the ambiguity validation/selection process.
- The `lambda` method does not make further selection (beyond the application of $S_{thres}$), it returns the full ${\bf \hat{z''}_0}$ set as resolved ambiguities.
- The `lambda_alt` method performs full ambiguity validation, it returns ${\bf \hat{z''}_0}$ if and only if there is no alternative set that passes the $R_{thres}$ test.
- The `lambda_al2` method performs partial ambiguity validation, it returns only integer ambiguities that have common values among all candidates ${\bf \hat{z''}_k}$
- The `lambda_bie` method returns a weighted sum of all candidate sets candidates ${\bf \hat{z''}_k}$:
\begin{equation}
{\bf z''_{bie}}=\sum_k (\frac {exp^{-0.5{\|{\bf z''}-{\bf \hat{z''}_k}\|}^2}}{\sum_k exp^{-0.5{\|{\bf z''}-{\bf \hat{z''}_k}\|}^2}}{\bf \hat{z''}_k})
\end{equation}

Loading

0 comments on commit 9eae50a

Please sign in to comment.