Ginan
Loading...
Searching...
No Matches
ppppp.cpp File Reference

Data Structures

struct  Duo
 

Functions

Architecture Main_Filter__ ()
 Primary estimation and filtering.
 
Architecture Combinators__ ()
 
void explainMeasurements (Trace &trace, KFMeas &kfMeas, KFState &kfState)
 
void alternatePostfits (Trace &trace, KFMeas &kfMeas, KFState &kfState)
 
void makeIFLCs (Trace &trace, KFState &kfState, KFMeasEntryList &kfMeasEntryList)
 
KFMeas makeGFLCs (KFMeas &kfMeas, KFState &kfState)
 Replace individual measurements with linear combinations.
 
KFMeas makeRTKLCs1 (KFMeas &kfMeas, KFState &kfState)
 Replace individual measurements with linear combinations.
 
KFMeas makeRTKLCs2 (KFMeas &kfMeas, KFState &kfState)
 Replace individual measurements with linear combinations.
 
void mergeCorrelated (Trace &trace, KFState &kfState, KFMeasEntryList &kfMeasEntryList)
 
void updateRecClocks (Trace &trace, ReceiverMap &receiverMap, KFState &kfState)
 Prepare receiver clocks using SPP values to minimise pre-fit residuals.
 
void updateAvgIonosphere (Trace &trace, GTime time, KFState &kfState)
 Prepare stec values clocks to minimise residuals to klobuchar model.
 
void updateAvgOrbits (Trace &trace, GTime time, KFState &kfState)
 Prepare Satellite clocks to minimise residuals to broadcast orbits Provide a weak tiedown using mu values, which the state will attempt to exponentially decay toward using the configured tau value in stateTransition.
 
void updateAvgClocks (Trace &trace, GTime time, KFState &kfState)
 Prepare satellite clocks to minimise residuals to broadcast clocks.
 
KFState propagateUncertainty (Trace &trace, KFState &kfState)
 
void chunkFilter (Trace &trace, KFState &kfState, KFMeas &kfMeas, ReceiverMap &receiverMap, map< string, FilterChunk > &filterChunkMap, map< string, std::ofstream > &traceList)
 
bool isIntervalReset (double epoch, double prev_epoch, double reset_interval)
 Checks if a reset interval has been reached between two epochs.
 
bool isSpecificTimeReset (double epoch, double prev_epoch, const std::vector< double > &resetTimes)
 Checks if a specific time reset has occurred between two epochs.
 
void updatePseudoPulses (Trace &trace, KFState &kfState)
 
void resetFilterbyConfig (Trace &trace, KFState &kfState)
 
void removeBadAmbiguities (Trace &trace, KFState &kfState, ReceiverMap &receiverMap)
 Remove ambiguity states from filter when they deemed old or bad This effectively reinitialises them on the following epoch as a new state, and can be used for simple resolution of cycle-slips.
 
void removeBadSatellites (Trace &trace, KFState &kfState)
 
void removeBadReceivers (Trace &trace, KFState &kfState, ReceiverMap &receiverMap)
 
void removeBadIonospheres (Trace &trace, KFState &kfState)
 Remove ambiguity states from filter when they deemed old or bad This effectively reinitialises them on the following epoch as a new state, and can be used for simple resolution of cycle-slips.
 
void checkOrbits (Trace &trace, KFState &kfState)
 
void updateFilter (Trace &trace, ReceiverMap &receiverMap, KFState &kfState)
 
void perRecMeasurements (Trace &trace, Receiver &rec, ReceiverMap &receiverMap, KFMeasEntryList &kfMeasEntryList, KFState &kfState, KFState &remoteState)
 
void pppLinearCombinations (KFMeas &kfMeas, KFState &kfState)
 
void pppPseudoObs (Trace &trace, ReceiverMap &receiverMap, KFState &kfState, KFMeasEntryList &kfMeasEntryList)
 
void ppp (Trace &trace, ReceiverMap &receiverMap, KFState &kfState, KFState &remoteState)
 

Function Documentation

◆ alternatePostfits()

void alternatePostfits ( Trace & trace,
KFMeas & kfMeas,
KFState & kfState )
Here is the caller graph for this function:

◆ checkOrbits()

void checkOrbits ( Trace & trace,
KFState & kfState )

◆ chunkFilter()

void chunkFilter ( Trace & trace,
KFState & kfState,
KFMeas & kfMeas,
ReceiverMap & receiverMap,
map< string, FilterChunk > & filterChunkMap,
map< string, std::ofstream > & traceList )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Combinators__()

Architecture Combinators__ ( )
Here is the caller graph for this function:

◆ explainMeasurements()

void explainMeasurements ( Trace & trace,
KFMeas & kfMeas,
KFState & kfState )
Here is the caller graph for this function:

◆ isIntervalReset()

bool isIntervalReset ( double epoch,
double prev_epoch,
double reset_interval )

Checks if a reset interval has been reached between two epochs.

Determines whether the current epoch (epoch) or the transition from the previous epoch (prev_epoch) to the current epoch crosses a specified reset interval (reset_interval).

Parameters
epochThe current epoch time.
prev_epochThe previous epoch time.
reset_intervalThe interval at which resets occur.
Returns
True if a reset interval is reached or crossed, false otherwise.
Here is the caller graph for this function:

◆ isSpecificTimeReset()

bool isSpecificTimeReset ( double epoch,
double prev_epoch,
const std::vector< double > & resetTimes )

Checks if a specific time reset has occurred between two epochs.

Determines whether a given epoch or the transition between two epochs corresponds to any of the specified reset times within a day. A reset time can either match the exact time of the epoch or occur between the two epochs.

Parameters
epochThe current epoch time in seconds since the start of the day.
prev_epochThe previous epoch time in seconds since the start of the day.
resetTimesA vector of reset times in seconds within a day (0 to 86400).
Returns
True If a reset time matches the current epoch or occurs between the previous and current epochs, False otherwise.
Here is the caller graph for this function:

◆ Main_Filter__()

Architecture Main_Filter__ ( )

Primary estimation and filtering.

While there are other auxiliary filters and states used within the Pea, all PPP processing flows through a common filtering stage.

The residuals for all observations are first computed in an undifferenced-uncombined state, which leads to the greatest generality and extensibility. As each receiver's observations are then independent of each other, these computations are computed in parallel, using openMP directives, increasing thoughput.

Bookkeeping around the initialisation of state elements and their state transitions is taken care of automatically at the point they are first referenced in the observation equations, using values as configured in the yaml file.

The distinction between "Network" and "User" positioning modes that may be used in other software packages is not required in Ginan. All receivers are always stored in a large single filter. Depending on the configuration, the state and it's covariance matrix may turn out to be block-diagonal (user-mode), which will automatically be treated optimally upon the estimation stage by applying 'chunking'.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ makeGFLCs()

KFMeas makeGFLCs ( KFMeas & kfMeas,
KFState & kfState )

Replace individual measurements with linear combinations.

Here is the caller graph for this function:

◆ makeIFLCs()

void makeIFLCs ( Trace & trace,
KFState & kfState,
KFMeasEntryList & kfMeasEntryList )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ makeRTKLCs1()

KFMeas makeRTKLCs1 ( KFMeas & kfMeas,
KFState & kfState )

Replace individual measurements with linear combinations.

Here is the caller graph for this function:

◆ makeRTKLCs2()

KFMeas makeRTKLCs2 ( KFMeas & kfMeas,
KFState & kfState )

Replace individual measurements with linear combinations.

Here is the caller graph for this function:

◆ mergeCorrelated()

void mergeCorrelated ( Trace & trace,
KFState & kfState,
KFMeasEntryList & kfMeasEntryList )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ perRecMeasurements()

void perRecMeasurements ( Trace & trace,
Receiver & rec,
ReceiverMap & receiverMap,
KFMeasEntryList & kfMeasEntryList,
KFState & kfState,
KFState & remoteState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ppp()

void ppp ( Trace & trace,
ReceiverMap & receiverMap,
KFState & kfState,
KFState & remoteState )
Parameters
traceTrace to output to
receiverMapList of receivers containing observations for this epoch
kfStateKalman filter object containing the network state parameters
remoteStateOptional pointer to remote kalman filter
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pppLinearCombinations()

void pppLinearCombinations ( KFMeas & kfMeas,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pppPseudoObs()

void pppPseudoObs ( Trace & trace,
ReceiverMap & receiverMap,
KFState & kfState,
KFMeasEntryList & kfMeasEntryList )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ propagateUncertainty()

KFState propagateUncertainty ( Trace & trace,
KFState & kfState )
Here is the caller graph for this function:

◆ removeBadAmbiguities()

void removeBadAmbiguities ( Trace & trace,
KFState & kfState,
ReceiverMap & receiverMap )

Remove ambiguity states from filter when they deemed old or bad This effectively reinitialises them on the following epoch as a new state, and can be used for simple resolution of cycle-slips.

Parameters
traceTrace to output to
kfStateFilter to remove states from
receiverMapList of receivers containing observations for this epoch
Here is the call graph for this function:
Here is the caller graph for this function:

◆ removeBadIonospheres()

void removeBadIonospheres ( Trace & trace,
KFState & kfState )

Remove ambiguity states from filter when they deemed old or bad This effectively reinitialises them on the following epoch as a new state, and can be used for simple resolution of cycle-slips.

Parameters
traceTrace to output to
kfStateFilter to remove states from
Here is the call graph for this function:
Here is the caller graph for this function:

◆ removeBadReceivers()

void removeBadReceivers ( Trace & trace,
KFState & kfState,
ReceiverMap & receiverMap )
Parameters
traceTrace to output to
kfStateFilter to remove states from
receiverMapList of receivers containing observations for this epoch
Here is the call graph for this function:
Here is the caller graph for this function:

◆ removeBadSatellites()

void removeBadSatellites ( Trace & trace,
KFState & kfState )
Parameters
traceTrace to output to
kfStateFilter to remove states from
Here is the call graph for this function:
Here is the caller graph for this function:

◆ resetFilterbyConfig()

void resetFilterbyConfig ( Trace & trace,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateAvgClocks()

void updateAvgClocks ( Trace & trace,
GTime time,
KFState & kfState )

Prepare satellite clocks to minimise residuals to broadcast clocks.

Provide a weak tiedown using mu values, which the state will attempt to exponentially decay toward using the configured tau value in stateTransition

Parameters
traceTrace to output to
timeTime
kfStateKalman filter object containing the network state parameters
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateAvgIonosphere()

void updateAvgIonosphere ( Trace & trace,
GTime time,
KFState & kfState )

Prepare stec values clocks to minimise residuals to klobuchar model.

Parameters
traceTrace to output to
timeTime
kfStateKalman filter object containing the network state parameters
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateAvgOrbits()

void updateAvgOrbits ( Trace & trace,
GTime time,
KFState & kfState )

Prepare Satellite clocks to minimise residuals to broadcast orbits Provide a weak tiedown using mu values, which the state will attempt to exponentially decay toward using the configured tau value in stateTransition.

Parameters
traceTrace to output to
timeTime
kfStateKalman filter object containing the network state parameters
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateFilter()

void updateFilter ( Trace & trace,
ReceiverMap & receiverMap,
KFState & kfState )
Parameters
traceTrace to output to
receiverMapList of receivers containing observations for this epoch
kfStateKalman filter object containing the network state parameters
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updatePseudoPulses()

void updatePseudoPulses ( Trace & trace,
KFState & kfState )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateRecClocks()

void updateRecClocks ( Trace & trace,
ReceiverMap & receiverMap,
KFState & kfState )

Prepare receiver clocks using SPP values to minimise pre-fit residuals.

Parameters
traceTrace to output to
receiverMapList of receivers containing observations for this epoch
kfStateKalman filter object containing the network state parameters
Here is the call graph for this function:
Here is the caller graph for this function: