GNSS::GNSS_Estimator Class Reference

#include <GNSS_Estimator.h>


Detailed Description

A class for estimating navigation information provided GNSS measurements.

Author:
Glenn D. MacGougan (GDM)
Date:
2006-11-16

Definition at line 63 of file GNSS_Estimator.h.


Public Member Functions

 GNSS_Estimator ()
 The default constructor (no data allocated yet).
virtual ~GNSS_Estimator ()
 The destructor.
bool DetermineSatellitePVT_GPSL1 (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, unsigned &nrValidEph)
 Determine the satellite clock corrections, positions, and velocities for the rover receiver and the reference receiver if aviailable (!NULL). Also determine if the ephemeris is valid (not too old). If differential, rxBaseData != NULL, the reference station receiver ephemeris data is used.
bool DetermineAtmosphericCorrections_GPSL1 (GNSS_RxData &rxData)
 Determine the tropospheric and ionospheric delay for each GPS L1 channel in rxData.
bool DetermineUsablePseudorangeMeasurementsForThePositionSolution_GPSL1 (GNSS_RxData &rxData, unsigned &nrUsablePseudoranges)
 Determine the usable GPS L1 pseudroange measurements.
bool DetermineUsableAdrMeasurements_GPSL1 (GNSS_RxData &rxData, unsigned &nrUsableAdr)
 Determine the usable GPS L1 ADR measurements.
bool DetermineBetweenReceiverDifferentialIndex (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, const bool setToUseOnlyDifferential)
 Determine the corresponding indices for between receiver differencing.
bool DetermineDesignMatrixForThePositionSolution_GPSL1 (GNSS_RxData &rxData, const unsigned nrRowsInH, Matrix &H)
 Determine the design matrix for the GPS L1 position solution based on pseudroange measurements.
bool DetermineMeasurementWeightMatrixForThePositionSolution_GPSL1 (GNSS_RxData &rxData, const unsigned nrUsablePseudoranges, Matrix &W)
 Determine the measurement weight matrix for the GPS L1 position solution based on pseudroange measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_psr.
bool DetermineMeasurementVarianceCovarianceMatrixForThePositionSolution_GPSL1 (GNSS_RxData &rxData, const unsigned n, Matrix &R)
 Determine the measurement variance-coariance matrix for the GPS L1 position solution based on pseudroange measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_psr.
bool DeterminePseudorangeMisclosures_GPSL1 (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, const unsigned nrPsr, Matrix &w)
 Compute the GPS L1 pseudroange misclosures.
bool DetermineSingleDifferenceADR_Misclosures_GPSL1 (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, const unsigned n, Matrix &w)
 Compute the differntial GPS L1 ADR misclosures.
bool GNSS_Estimator::DetermineDoubleDifferenceADR_Misclosures_GPSL1 (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, Matrix &subB, const unsigned n, Matrix &w)
 Compute the double differntial GPS L1 ADR misclosures.
bool DetermineUsableDopplerMeasurementsForTheVelocitySolution_GPSL1 (GNSS_RxData &rxData, unsigned &nrUsableDopplers)
 Determine the usable GPS L1 Doppler measurements.
bool DetermineDopplerMisclosures_GPSL1 (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, const unsigned n, Matrix &w)
 Compute the GPS L1 Doppler misclosures.
bool DetermineDesignMatrixForTheVelocitySolution_GPSL1 (GNSS_RxData &rxData, const unsigned nrUsableDopplers, Matrix &H)
 Determine the design matrix for the GPS L1 velocity solution based on Doppler measurements.
bool DetermineMeasurementWeightMatrixForTheVelocitySolution_GPSL1 (GNSS_RxData &rxData, const unsigned n, Matrix &W)
 Determine the measurement weight matrix for the GPS L1 velocity solution based on Doppler measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_doppler.
bool DetermineMeasurementVarianceCovarianceMatrixForTheVelocitySolution_GPSL1 (GNSS_RxData &rxData, const unsigned n, Matrix &R)
 Determine the measurement variance-covariance matrix for the GPS L1 velocity solution based on Doppler measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_doppler.
bool PerformGlobalTestAndTestForMeasurementFaults (GNSS_RxData &rxData, bool testPsrOrDoppler, Matrix &H, Matrix &Ht, Matrix &W, Matrix &R, Matrix &r, Matrix &P, const unsigned char n, const unsigned char u, double &avf, bool &isGlobalTestPassed, bool &hasRejectionOccurred, unsigned char &indexOfRejected)
 Perform the Global Internal Reliability Test, followed by a search using local testing for a single measurement fault if the global test fails.
bool ComputeTransitionMatrix_8StatePVGM (const double dT, Matrix &T)
bool ComputeTransitionMatrix_8StatePVGM_Float (const double dT, Matrix &T)
bool ComputeTransitionMatrix_6StatePVGM_Float (const double dT, Matrix &T)
bool ComputeProcessNoiseMatrix_8StatePVGM (const double dT, Matrix &Q)
bool ComputeProcessNoiseMatrix_8StatePVGM_Float (const double dT, Matrix &Q)
bool ComputeProcessNoiseMatrix_6StatePVGM_Float (const double dT, Matrix &Q)
bool InitializeStateVarianceCovariance_8StatePVGM (const double std_lat, const double std_lon, const double std_hgt, const double std_vn, const double std_ve, const double std_vup, const double std_clk, const double std_clkdrift, Matrix &P)
 Initialize the state variance-covariance matrix for the 8 state PV Gauss Markov model.
bool InitializeStateVarianceCovariance_6StatePVGM (const double std_lat, const double std_lon, const double std_hgt, const double std_vn, const double std_ve, const double std_vup, Matrix &P)
 Initialize the state variance-covariance matrix for the 6 state PV Gauss Markov model.
bool PredictAhead_8StatePVGM (GNSS_RxData &rxData, const double dT, Matrix &T, Matrix &Q, Matrix &P)
bool PredictAhead_8StatePVGM_Float (GNSS_RxData &rxData, const double dT, Matrix &T, Matrix &Q, Matrix &P)
bool PredictAhead_6StatePVGM_Float (GNSS_RxData &rxData, const double dT, Matrix &T, Matrix &Q, Matrix &P)
bool Kalman_Update_8StatePVGM (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, Matrix &P)
bool Kalman_Update_8StatePVGM_SequentialMode (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, Matrix &P)
bool Kalman_Update_8StatePVGM_SequentialMode_FloatSolution (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, Matrix &P)
bool Kalman_Update_6StatePVGM_FloatSolution (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, Matrix &P)
bool FixAmbiguities ()
 Fix ambiguities, right now does nothing.
bool UpdateTime (GNSS_RxData &rxData)
 Update the rest of m_pvt.time struct based on the gps week and time of week only.
bool PerformLeastSquares_8StatePVT (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, bool &wasPositionComputed, bool &wasVelocityComputed)
 Perform least squares using pseudoranges and Doppler measurments to determine the eight states: (lat,lon,hgt,vn,ve,vup,clk,clkdrift).
bool PrintMatToDebug (const char *name, Matrix &M)
 A static function for outputting a matrix to the console.
bool DetermineAmbiguitiesChanges (GNSS_RxData *rxData, GNSS_RxData *rxBaseData, Matrix &P, bool &changeOccured)
 Deal with changes in ambiguities. Remove the rows and columns from P of the ambiguities that are no longer active. Add rows and columns to P for new ambiguities.

Data Fields

stLSQ m_posLSQ
 The Least Sqaures estimation matrix information for the position and clock offset solution.
stLSQ m_velLSQ
 The Least Sqaures estimation matrix information for the velocity and clock drift solution.
stRTK m_RTK
 The RTK estimation matrix information.
stRTKDD m_RTKDD
 The double difference RTK estimation matrix information.
stKalmanModel m_KF
std::list< stAmbiguityInfo > m_ActiveAmbiguitiesList
 GDM store in RxData?

Protected Attributes

Matrix HtW
 The design matrix, H, transposed times W u x n.
Matrix Ninv
 The inverse of the normal matrix, N = (H^T*W*H)^-1, u x u.

Constructor & Destructor Documentation

GNSS::GNSS_Estimator::GNSS_Estimator (  ) 

The default constructor (no data allocated yet).

Definition at line 71 of file GNSS_Estimator.cpp.

GNSS::GNSS_Estimator::~GNSS_Estimator (  )  [virtual]

The destructor.

Definition at line 77 of file GNSS_Estimator.cpp.


Member Function Documentation

bool GNSS::GNSS_Estimator::DetermineSatellitePVT_GPSL1 ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
unsigned &  nrValidEph 
)

Determine the satellite clock corrections, positions, and velocities for the rover receiver and the reference receiver if aviailable (!NULL). Also determine if the ephemeris is valid (not too old). If differential, rxBaseData != NULL, the reference station receiver ephemeris data is used.

Precondition:
The following must be valid:
rxData.m_pvt must be a valid estimate.
rxData.m_maxAgeEphemeris must be set.
rxData.m_time must be a valid time.
if differential
rxBaseData.m_pvt must be a valid estimate.
rxBaseData.m_maxAgeEphemeris must be set.
rxBaseData.m_time must be a valid time.
Postcondition:
The following are set:
rxData.m_ObsArray[i].flags.isEphemerisValid
rxData.m_ObsArray[i].satellite
rxData.m_ObsArray[i].corrections.prcSatClk
rxData.m_ObsArray[i].corrections.rrcSatClkDrift
if differntial
rxBaseData.m_ObsArray[i].flags.isEphemerisValid
rxBaseData.m_ObsArray[i].satellite
rxBaseData.m_ObsArray[i].corrections.prcSatClk
rxBaseData.m_ObsArray[i].corrections.rrcSatClkDrift
Returns:
true if successful, false if error.
Parameters:
rxData  The pointer to the receiver data.
rxBaseData  The pointer to the reference receiver data. NULL if not available.
nrValidEph  The number of GPS L1 channels with valid ephemeris for the rover.

Definition at line 646 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineAtmosphericCorrections_GPSL1 ( GNSS_RxData rxData  ) 

Determine the tropospheric and ionospheric delay for each GPS L1 channel in rxData.

Precondition:
The following values must be valid:
rxData.m_time (all values)
rxData.m_pvt must be a valid estimate
rxData.m_ObsArray[i].satellite.elevation
rxData.m_ObsArray[i].satellite.azimuth
rxData.m_klobuchar
Postcondition:
The following values are set:
rxData.m_ObsArray[i].corrections.prcTropoDry
rxData.m_ObsArray[i].corrections.prcTropoWet
rxData.m_ObsArray[i].corrections.prcIono
Parameters:
rxData  The receiver data.

Definition at line 962 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineUsablePseudorangeMeasurementsForThePositionSolution_GPSL1 ( GNSS_RxData rxData,
unsigned &  nrUsablePseudoranges 
)

Determine the usable GPS L1 pseudroange measurements.

Precondition:
The rxData.m_ObsArray[i].flags values must be set properly including:
rxData.m_ObsArray[i].flags.isCodeLocked
rxData.m_ObsArray[i].flags.isPsrValid
rxData.m_ObsArray[i].flags.isEphemerisValid
rxData.m_ObsArray[i].flags.isNotPsrRejected
rxData.m_ObsArray[i].flags.isNotUserRejected
Postcondition:
The following flags are set: rxData.m_ObsArray[i].flags.isAboveElevationMask
rxData.m_ObsArray[i].flags.isAboveCNoMask
rxData.m_ObsArray[i].flags.isAboveLockTimeMask
rxData.m_ObsArray[i].flags.isPsrUsedInSolution.
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
nrUsablePseudoranges  the number of usable GPS L1 pseudorange measurements.

Definition at line 1033 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineUsableAdrMeasurements_GPSL1 ( GNSS_RxData rxData,
unsigned &  nrUsableAdr 
)

Determine the usable GPS L1 ADR measurements.

Precondition:
The rxData.m_ObsArray[i].flags values must be set properly including:
rxData.m_ObsArray[i].flags.isCodeLocked & rxData.m_ObsArray[i].flags.isPhaseLocked & rxData.m_ObsArray[i].flags.isParityValid & // if not, there is a half cycle amibiguity. rxData.m_ObsArray[i].flags.isAdrValid & rxData.m_ObsArray[i].flags.isAboveElevationMask & rxData.m_ObsArray[i].flags.isAboveCNoMask & rxData.m_ObsArray[i].flags.isAboveLockTimeMask & rxData.m_ObsArray[i].flags.isNotUserRejected & rxData.m_ObsArray[i].flags.isNotAdrRejected & rxData.m_ObsArray[i].flags.isEphemerisValid
Postcondition:
The following flags are set: rxData.m_ObsArray[i].flags.isAboveElevationMask
rxData.m_ObsArray[i].flags.isAboveCNoMask
rxData.m_ObsArray[i].flags.isAboveLockTimeMask
rxData.m_ObsArray[i].flags.isAdrUsedSolution.
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
nrUsableAdr  The number of usable GPS L1 adr measurements.

Definition at line 1150 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineBetweenReceiverDifferentialIndex ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
const bool  setToUseOnlyDifferential 
)

Determine the corresponding indices for between receiver differencing.

Author:
Glenn D. MacGougan
Date:
2007-12-13
Precondition:
The following must be valid: for rxData and rxBaseData obsservations
flags.isPsrUsedInSolution
flags.isDopplerUsedInSolution
flags.isAdrUsedInSolution
Postcondition:
The following are set: for rxData and rxBaseData obsservations
flags.isDifferentialPsrAvailable
flags.isDifferentialDopplerAvailable
flags.isDifferentialAdrAvailable
index_differential
Returns:
true if successful, false if error.
Parameters:
rxData  (input) The pointer to the receiver data.
rxBaseData  (input) The pointer to the reference receiver data. NULL if not available.
setToUseOnlyDifferential  (input) This indicates that only differential measurements should be used.

Definition at line 1593 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineDesignMatrixForThePositionSolution_GPSL1 ( GNSS_RxData rxData,
const unsigned  nrRowsInH,
Matrix H 
)

Determine the design matrix for the GPS L1 position solution based on pseudroange measurements.

Precondition:
The following must be valid: rxData.m_pvt rxData.m_ObsArray[i].satellite rxData.m_ObsArray[i].flags.isPsrUsedInSolution
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
nrRowsInH  The number of valid rows in H.
H  The position & rx clock design matrix [n x 4].

Definition at line 1215 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineMeasurementWeightMatrixForThePositionSolution_GPSL1 ( GNSS_RxData rxData,
const unsigned  nrUsablePseudoranges,
Matrix W 
)

Determine the measurement weight matrix for the GPS L1 position solution based on pseudroange measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_psr.

Precondition:
The following must be valid:
rxData.m_ObsArray[i].flags.isPsrUsedInSolution
rxData.m_ObsArray[i].stdev_psr (not zero)
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
nrUsablePseudoranges  The number of usable GPS L1 pseudorange measurements.
W  The inverse of the pseudorange measurement variance-coraiance matrix [nP x nP].

Definition at line 1306 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineMeasurementVarianceCovarianceMatrixForThePositionSolution_GPSL1 ( GNSS_RxData rxData,
const unsigned  n,
Matrix R 
)

Determine the measurement variance-coariance matrix for the GPS L1 position solution based on pseudroange measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_psr.

Precondition:
The following must be valid:
rxData.m_ObsArray[i].flags.isPsrUsedInSolution
rxData.m_ObsArray[i].stdev_psr (not zero)
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
n  The number of measurements and pseudo-measurements (constraints).
R  The pseudorange measurement variance-covariance matrix [n x n].

Definition at line 1371 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DeterminePseudorangeMisclosures_GPSL1 ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
const unsigned  nrPsr,
Matrix w 
)

Compute the GPS L1 pseudroange misclosures.

Precondition:
The following must be valid:
rxData->m_ObsArray[i].flags.isPsrUsedInSolution
rxData->m_ObsArray[i].satellite.clkdrift
rxData->m_ObsArray[i].corrections.prcTropoDry
rxData->m_ObsArray[i].corrections.prcTropoWet
rxData->m_ObsArray[i].corrections.prcIono
rxData->m_ObsArray[i].range
rxData->m_pvt.clockOffset
if diffential, the same above for rxBaseData.
Postcondition:
The following is set:
rxData.m_ObsArray[i].psr_misclosure
Returns:
true if successful, false if error.
Parameters:
rxData  The pointer to the receiver data.
rxBaseData  The pointer to the reference receiver data. NULL if not available.
nrPsr  The number of GPS L1 pseudorange measurements.
w  The pseudorange misclosure vector [nP x 1].

Definition at line 1437 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineSingleDifferenceADR_Misclosures_GPSL1 ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
const unsigned  n,
Matrix w 
)

Compute the differntial GPS L1 ADR misclosures.

Precondition:
The following must be valid:
rxData->m_ObsArray[i].flags.isAdrUsedInSolution
rxData->m_ObsArray[i].satellite.clkdrift
rxData->m_ObsArray[i].corrections.prcTropoDry
rxData->m_ObsArray[i].corrections.prcTropoWet
rxData->m_ObsArray[i].corrections.prcIono
rxData->m_ObsArray[i].range
rxData->m_pvt.clockOffset
if diffential, the same above for rxBaseData.
Postcondition:
The following is set:
rxData.m_ObsArray[i].adr_misclosure
Returns:
true if successful, false if error.
Parameters:
rxData  The pointer to the receiver data.
rxBaseData  The pointer to the reference receiver data. NULL if not available.
n  The number of misclosures.
w  The adr misclosure vector [n x 1].

Definition at line 1707 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::GNSS_Estimator::DetermineDoubleDifferenceADR_Misclosures_GPSL1 ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
Matrix subB,
const unsigned  n,
Matrix w 
)

Compute the double differntial GPS L1 ADR misclosures.

Precondition:
The following must be valid:
rxData->m_ObsArray[i].flags.isAdrUsedInSolution
rxData->m_ObsArray[i].satellite.clkdrift
rxData->m_ObsArray[i].corrections.prcTropoDry
rxData->m_ObsArray[i].corrections.prcTropoWet
rxData->m_ObsArray[i].corrections.prcIono
rxData->m_ObsArray[i].range
rxData->m_pvt.clockOffset
if diffential, the same above for rxBaseData.
Postcondition:
The following is set:
rxData.m_ObsArray[i].adr_misclosure
Returns:
true if successful, false if error.
Parameters:
rxData  The pointer to the receiver data.
rxBaseData  The pointer to the reference receiver data. NULL if not available.
subB  The matrix that describes the differencing from SD to DD adr measurements
n  The number of DD misclosures required.
w  The adr misclosure vector [n x 1].

bool GNSS::GNSS_Estimator::DetermineUsableDopplerMeasurementsForTheVelocitySolution_GPSL1 ( GNSS_RxData rxData,
unsigned &  nrUsableDopplers 
)

Determine the usable GPS L1 Doppler measurements.

Precondition:
The rxData.m_ObsArray[i].flags values must be set properly including:
rxData.m_ObsArray[i].flags.isCodeLocked
rxData.m_ObsArray[i].flags.isDopplerValid
rxData.m_ObsArray[i].flags.isAboveElevationMask
rxData.m_ObsArray[i].flags.isAboveCNoMask
rxData.m_ObsArray[i].flags.isAboveLockTimeMask
rxData.m_ObsArray[i].flags.isNotUserRejected
rxData.m_ObsArray[i].flags.isNotDopplerRejected
rxData.m_ObsArray[i].flags.isEphemerisValid
Postcondition:
The rxData.m_ObsArray[i].flags.isDopplerUsedInSolution will be set to 1(used) or 0(not used).
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
nrUsableDopplers  the number of usable GPS L1 Doppler measurements.

Definition at line 1105 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineDopplerMisclosures_GPSL1 ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
const unsigned  n,
Matrix w 
)

Compute the GPS L1 Doppler misclosures.

Precondition:
The folloing must be valid:
rxData.m_ObsArray[i].flags.isDopplerUsedInSolution
rxData.m_ObsArray[i].satellite.clkdrift
rxData.m_ObsArray[i].rangerate
rxData.m_pvt.clockDrift
Postcondition:
The following is set:
rxData.m_ObsArray[i].doppler_misclosure
Returns:
true if successful, false if error.
Parameters:
rxData  The pointer to the receiver data.
rxBaseData  The pointer to the reference receiver data. NULL if not available.
n  The number of misclosures.
w  The pseudorange misclosure vector [n x 1].

Definition at line 1946 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineDesignMatrixForTheVelocitySolution_GPSL1 ( GNSS_RxData rxData,
const unsigned  nrUsableDopplers,
Matrix H 
)

Determine the design matrix for the GPS L1 velocity solution based on Doppler measurements.

Precondition:
The following must be valid: rxData.m_pvt rxData.m_ObsArray[i].satellite rxData.m_ObsArray[i].flags.isDopplerUsedInSolution
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
nrUsableDopplers  The number of usable GPS L1 Doppler measurements.
H  The velocity & rx clock drift design matrix [nD x 4].

Definition at line 2045 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineMeasurementWeightMatrixForTheVelocitySolution_GPSL1 ( GNSS_RxData rxData,
const unsigned  n,
Matrix W 
)

Determine the measurement weight matrix for the GPS L1 velocity solution based on Doppler measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_doppler.

Precondition:
The following must be valid:
rxData.m_ObsArray[i].flags.isDopplerUsedInSolution
rxData.m_ObsArray[i].stdev_doppler (not zero)
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
n  The number of rows in W.
W  The inverse of the Doppler measurement variance-coraiance matrix [n x n].

Definition at line 2141 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineMeasurementVarianceCovarianceMatrixForTheVelocitySolution_GPSL1 ( GNSS_RxData rxData,
const unsigned  n,
Matrix R 
)

Determine the measurement variance-covariance matrix for the GPS L1 velocity solution based on Doppler measurement standard deviation values specified in rxData.m_ObsArray[i].stdev_doppler.

Precondition:
The following must be valid:
rxData.m_ObsArray[i].flags.isDopplerUsedInSolution
rxData.m_ObsArray[i].stdev_doppler (not zero)
Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data.
n  The number of rows in R.
R  The inverse of the Doppler measurement variance-coraiance matrix [n x n].

Definition at line 2207 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::PerformGlobalTestAndTestForMeasurementFaults ( GNSS_RxData rxData,
bool  testPsrOrDoppler,
Matrix H,
Matrix Ht,
Matrix W,
Matrix R,
Matrix r,
Matrix P,
const unsigned char  n,
const unsigned char  u,
double &  avf,
bool &  isGlobalTestPassed,
bool &  hasRejectionOccurred,
unsigned char &  indexOfRejected 
)

Perform the Global Internal Reliability Test, followed by a search using local testing for a single measurement fault if the global test fails.

Perform the Global Internal Reliability Test, followed by a search using local testing for a single measurement fault if the global test fails.

The Global Internal Reliability Test:
The aposteriori variance factor is computed and compared to the value generated using Chi^2 lookup table. The aposerteriori variance factor indicates the following:
if( apv ~= 1 )
solution and observations are well modelled.
if( apv < 1 )
observation variance matrix is pessimistic.
(observations are better than what you said).
if( apv > 1 )
(1) The math model incorrect, (not likely) (2) The weight matrix/observation variance matrix is optimistic (observations are worse than what you said).
(3) Their is a blunder in the observations that is skewing the normality of the solution, and a local test for blunder my be needed.

Returns:
true if successful, false if error.
The Global Internal Reliability Test:
The aposteriori variance factor is computed and compared to the value generated using Chi^2 lookup table. The aposerteriori variance factor indicates the following:
if( apv ~= 1 )
solution and observations are well modelled.
if( apv < 1 )
observation variance matrix is pessimistic.
(observations are better than what you said).
if( apv > 1 )
(1) The math model incorrect, (not likely)
(2) The weight matrix/observation variance matrix is optimistic (observations are worse than what you said).
(3) Their is a blunder in the observations that is skewing the normality of the solution, and a local test for blunder my be needed.
Parameters:
rxData  The receiver data object.
testPsrOrDoppler  This indicates if the psr misclosures are checked, otherwise the Doppler misclosures are checked.
H  The design matrix, H, [n x u].
Ht  The design matrix transposed, H, [n x u].
W  The observation weight matrix, W, [n x n].
R  The observation variance-covariance matrix, R, [n x n].
r  The observation residual vector, [n x 1].
P  The state variance-covariance matrix, [u x u].
n  The number of observations, n.
u  The number of unknowns, u.
avf  The computed a-posteriori variance factor is returned.
isGlobalTestPassed  This indicates if the global test passed.
hasRejectionOccurred  This indicates if a rejection occurred. Only one measurement is flagged.
indexOfRejected  This is the index of the rejected observation.

Definition at line 2296 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::ComputeTransitionMatrix_8StatePVGM ( const double  dT,
Matrix T 
)

Parameters:
dT  The change in time since the last update [s].
T  The transition matrix [8 x 8].

Definition at line 2470 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::ComputeTransitionMatrix_8StatePVGM_Float ( const double  dT,
Matrix T 
)

Parameters:
dT  The change in time since the last update [s].
T  The transition matrix [(8 + nrAmb) x (8 + nrAmb)].

Definition at line 2521 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::ComputeTransitionMatrix_6StatePVGM_Float ( const double  dT,
Matrix T 
)

Parameters:
dT  The change in time since the last update [s].
T  The transition matrix [(8 + nrAmb) x (8 + nrAmb)].

Definition at line 2566 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::ComputeProcessNoiseMatrix_8StatePVGM ( const double  dT,
Matrix Q 
)

Parameters:
dT  The change in time since the last update [s].
Q  The process noise matrix [8 x 8].

Definition at line 2616 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::ComputeProcessNoiseMatrix_8StatePVGM_Float ( const double  dT,
Matrix Q 
)

Parameters:
dT  The change in time since the last update [s].
Q  The process noise matrix [(8 + nrAmb) x (8 + nrAmb)].

Definition at line 2701 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::ComputeProcessNoiseMatrix_6StatePVGM_Float ( const double  dT,
Matrix Q 
)

Parameters:
dT  The change in time since the last update [s].
Q  The process noise matrix [(8 + nrAmb) x (8 + nrAmb)].

Definition at line 2784 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::InitializeStateVarianceCovariance_8StatePVGM ( const double  std_lat,
const double  std_lon,
const double  std_hgt,
const double  std_vn,
const double  std_ve,
const double  std_vup,
const double  std_clk,
const double  std_clkdrift,
Matrix P 
)

Initialize the state variance-covariance matrix for the 8 state PV Gauss Markov model.

Returns:
true if successful, false if error.
Parameters:
std_lat  The standard deviation uncertainty in the latitude [m].
std_lon  The standard deviation uncertainty in the longitude [m].
std_hgt  The standard deviation uncertainty in the height [m].
std_vn  The standard deviation uncertainty in the northing velocity [m/s].
std_ve  The standard deviation uncertainty in the easting velocity [m/s].
std_vup  The standard deviation uncertainty in the up velocity [m/s].
std_clk  The standard deviation uncertainty in the clock offset [m].
std_clkdrift  The standard deviation uncertainty in the clock drift [m/s].
P  The variance covariance of the states [8x8].

Definition at line 3177 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::InitializeStateVarianceCovariance_6StatePVGM ( const double  std_lat,
const double  std_lon,
const double  std_hgt,
const double  std_vn,
const double  std_ve,
const double  std_vup,
Matrix P 
)

Initialize the state variance-covariance matrix for the 6 state PV Gauss Markov model.

Returns:
true if successful, false if error.
Parameters:
std_lat  The standard deviation uncertainty in the latitude [m].
std_lon  The standard deviation uncertainty in the longitude [m].
std_hgt  The standard deviation uncertainty in the height [m].
std_vn  The standard deviation uncertainty in the northing velocity [m/s].
std_ve  The standard deviation uncertainty in the easting velocity [m/s].
std_vup  The standard deviation uncertainty in the up velocity [m/s].
P  The variance covariance of the states [6x6].

Definition at line 3211 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::PredictAhead_8StatePVGM ( GNSS_RxData rxData,
const double  dT,
Matrix T,
Matrix Q,
Matrix P 
)

Parameters:
rxData  The receiver data.
dT  The change in time since the last update [s].
T  The transition matrix [8 x 8] (output).
Q  The process noise matrix [8 x 8] (output).
P  The state variance covariance matrix [8 x 8] (input/output).

Definition at line 2873 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::PredictAhead_8StatePVGM_Float ( GNSS_RxData rxData,
const double  dT,
Matrix T,
Matrix Q,
Matrix P 
)

Parameters:
rxData  The receiver data.
dT  The change in time since the last update [s].
T  The transition matrix [(8 + nrAmb) x (8 + nrAmb)] (output).
Q  The process noise matrix [(8 + nrAmb) x (8 + nrAmb)] (output).
P  The state variance covariance matrix [(8 + nrAmb) x (8 + nrAmb)] (input/output).

Definition at line 2956 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::PredictAhead_6StatePVGM_Float ( GNSS_RxData rxData,
const double  dT,
Matrix T,
Matrix Q,
Matrix P 
)

Parameters:
rxData  The receiver data.
dT  The change in time since the last update [s].
T  The transition matrix [(8 + nrAmb) x (8 + nrAmb)] (output).
Q  The process noise matrix [(8 + nrAmb) x (8 + nrAmb)] (output).
P  The state variance covariance matrix [(8 + nrAmb) x (8 + nrAmb)] (input/output).

Definition at line 3071 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::Kalman_Update_8StatePVGM ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
Matrix P 
)

Parameters:
rxData  A pointer to the rover receiver data. This must be a valid pointer.
rxBaseData  A pointer to the reference receiver data if available. NULL if not available.
P  The variance-covariance of the states.

Definition at line 3242 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::Kalman_Update_8StatePVGM_SequentialMode ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
Matrix P 
)

Parameters:
rxData  A pointer to the rover receiver data. This must be a valid pointer.
rxBaseData  A pointer to the reference receiver data if available. NULL if not available.
P  The variance-covariance of the states.

Definition at line 4186 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::Kalman_Update_8StatePVGM_SequentialMode_FloatSolution ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
Matrix P 
)

Parameters:
rxData  A pointer to the rover receiver data. This must be a valid pointer.
rxBaseData  A pointer to the reference receiver data if available. NULL if not available.
P  The variance-covariance of the states.

Definition at line 4643 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::Kalman_Update_6StatePVGM_FloatSolution ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
Matrix P 
)

Parameters:
rxData  A pointer to the rover receiver data. This must be a valid pointer.
rxBaseData  A pointer to the reference receiver data if available. NULL if not available.
P  The variance-covariance of the states.

Definition at line 3637 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::FixAmbiguities (  ) 

Fix ambiguities, right now does nothing.

Returns:
true if successful, false if error.

Definition at line 4179 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::UpdateTime ( GNSS_RxData rxData  ) 

Update the rest of m_pvt.time struct based on the gps week and time of week only.

Returns:
true if successful, false if error.
Parameters:
rxData  The receiver data. The m_pvt.time struct is updated.

Definition at line 621 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::PerformLeastSquares_8StatePVT ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
bool &  wasPositionComputed,
bool &  wasVelocityComputed 
)

Perform least squares using pseudoranges and Doppler measurments to determine the eight states: (lat,lon,hgt,vn,ve,vup,clk,clkdrift).

Returns:
true if successful, false if error.
Parameters:
rxData  A pointer to the rover receiver data. This must be a valid pointer.
rxBaseData  A pointer to the reference receiver data if available. NULL if not available.
wasPositionComputed  A boolean to indicate if a position solution was computed.
wasVelocityComputed  A boolean to indicate if a velocity solution was computed.

Definition at line 86 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::PrintMatToDebug ( const char *  name,
Matrix M 
)

A static function for outputting a matrix to the console.

Definition at line 5199 of file GNSS_Estimator.cpp.

bool GNSS::GNSS_Estimator::DetermineAmbiguitiesChanges ( GNSS_RxData rxData,
GNSS_RxData rxBaseData,
Matrix P,
bool &  changeOccured 
)

Deal with changes in ambiguities. Remove the rows and columns from P of the ambiguities that are no longer active. Add rows and columns to P for new ambiguities.

Returns:
true if successful, false if error.
Parameters:
rxData  Pointer to the receiver data.
rxBaseData  Pointer to the reference receiver data if any (NULL if not available).
P  The state variance-covariance matrix.

Definition at line 5229 of file GNSS_Estimator.cpp.


Field Documentation

stLSQ GNSS::GNSS_Estimator::m_posLSQ

The Least Sqaures estimation matrix information for the position and clock offset solution.

Definition at line 727 of file GNSS_Estimator.h.

stLSQ GNSS::GNSS_Estimator::m_velLSQ

The Least Sqaures estimation matrix information for the velocity and clock drift solution.

Definition at line 728 of file GNSS_Estimator.h.

stRTK GNSS::GNSS_Estimator::m_RTK

The RTK estimation matrix information.

Definition at line 730 of file GNSS_Estimator.h.

stRTKDD GNSS::GNSS_Estimator::m_RTKDD

The double difference RTK estimation matrix information.

Definition at line 731 of file GNSS_Estimator.h.

stKalmanModel GNSS::GNSS_Estimator::m_KF

Kalman filter model settings for 1st order Gauss Markov Velocity/ClkDrift states. 8 state PVGM model.

Definition at line 736 of file GNSS_Estimator.h.

std::list<stAmbiguityInfo> GNSS::GNSS_Estimator::m_ActiveAmbiguitiesList

GDM store in RxData?

This list keeps track of which amibiguities are active. i.e. already included in the state vector and state variance-covariance matrix.

Definition at line 759 of file GNSS_Estimator.h.

Matrix GNSS::GNSS_Estimator::HtW [protected]

The design matrix, H, transposed times W u x n.

Definition at line 763 of file GNSS_Estimator.h.

Matrix GNSS::GNSS_Estimator::Ninv [protected]

The inverse of the normal matrix, N = (H^T*W*H)^-1, u x u.

Definition at line 764 of file GNSS_Estimator.h.


The documentation for this class was generated from the following files: