LICSDetector2 Class Reference
[GPS solution algorithms and Tropospheric]

#include <LICSDetector2.hpp>

Inheritance diagram for LICSDetector2:

Inheritance graph
[legend]
Collaboration diagram for LICSDetector2:

Collaboration graph
[legend]
List of all members.

Detailed Description

This is a class to detect cycle slips using LI observables and a 2nd order fitting curve.

This class is meant to be used with the GNSS data structures objects found in "DataStructures" class.

A typical way to use this class follows:

   RinexObsStream rin("ebre0300.02o");

   gnssRinex gRin;
   ComputeLI getLI;
   LICSDetector2 markCSLI;

   while(rin >> gRin)
   {
      gRin >> getLI >> markCSLI;
   }

The "LICSDetector2" object will visit every satellite in the GNSS data structure that is "gRin" and will decide if a cycle slip has happened in the given observable.

The algorithm will use LI observables, and the LLI1 and LLI2 indexes. The result (a 1 if a cycle slip is found, 0 otherwise) will be stored in the data structure both as the CSL1 and CSL2 indexes.

This algorithm will take a set of samples (between 5 and 12 by default) and will build a 2nd order fitting curve using a least mean squares adjustment method. Then, the current LI bias with respect to this fitting curve is computed, and the result compared with a time-varying threshold value.

Such threshold value is computed using an exponential function with a given saturation threshold and time constant. The maximum interval of time allowed between two successive epochs is also used as criterion for cycle slip detection.

The default values for threshold computing are carefully tuned, so you must not change them without a very good reason.

On the other hand, it is very important that you adjust the maximum time interval to your sampling rate. This time interval is 61 seconds by default, which is appropriate for 30 seconds per sample RINEX observation files.

When used with the ">>" operator, this class returns the same incoming data structure with the cycle slip indexes inserted along their corresponding satellites. Be warned that if a given satellite does not have the observations required, it will be summarily deleted from the data structure.

Be aware that some combinations of cycle slips in L1 and L2 may result in a false negative when using a cycle slip detector based on LI. Therefore, to be on the safe side you should complement this with another kind of detector, such as one based on the Melbourne-Wubbena combination.

Given that this cycle slip detector needs a given ammount of samples in order to start working, it will declare cycle slips when its buffers don't have enough data. The minimum buffer size is 5 samples by default, so every time this detector starts, or when it finds a cycle slip, there will tipically be at least four successive epochs when cycle slips are declared.

Therefore, and taking into account that this detector is often used in combination with SatArcMarker objects, you must adjust the unstable period in those objects in order to match the feeding buffer time of this type of detectors.

See also:
MWCSDetector.hpp, LICSDetector.hpp and SatArcMarker.hpp.
Warning:
Cycle slip detectors are objets that store their internal state, so you MUST NOT use the SAME object to process DIFFERENT data streams.

Definition at line 127 of file LICSDetector2.hpp.

Public Member Functions

 LICSDetector2 ()
 Default constructor, setting default parameters.
 LICSDetector2 (const double &satThr, const double &tc, const double &dtMax=61.0, const bool &use=true)
 Common constructor.
virtual satTypeValueMapProcess (const DayTime &epoch, satTypeValueMap &gData, const short &epochflag=0) throw (ProcessingException)
 Returns a satTypeValueMap object, adding the new data generated when calling this object.
virtual double getDeltaTMax () const
 Method to get the maximum interval of time allowed between two successive epochs, in seconds.
virtual LICSDetector2setDeltaTMax (const double &maxDelta)
 Method to set the maximum interval of time allowed between two successive epochs.
virtual double getSatThreshold () const
 Method to get the saturation threshold for cycle slip detection, in meters.
virtual LICSDetector2setSatThreshold (const double &satThr)
 Method to set the saturation threshold for cycle slip detection, in meters.
virtual double getTimeConst () const
 Method to get threshold time constant, in seconds.
virtual LICSDetector2setTimeConst (const double &tc)
 Method to set threshold time constant, in seconds.
virtual bool getUseLLI () const
 Method to know if the LLI check is enabled or disabled.
virtual LICSDetector2setUseLLI (const bool &use)
 Method to set whether the LLI indexes will be used as an aid or not.
virtual double getMaxBufferSize () const
 Method to get the maximum buffer size for data, in samples.
virtual LICSDetector2setMaxBufferSize (const int &maxBufSize)
 Method to set the maximum buffer size for data, in samples.
virtual gnssSatTypeValueProcess (gnssSatTypeValue &gData) throw (ProcessingException)
 Returns a gnnsSatTypeValue object, adding the new data generated when calling this object.
virtual gnssRinexProcess (gnssRinex &gData) throw (ProcessingException)
 Returns a gnnsRinex object, adding the new data generated when calling this object.
virtual int getIndex (void) const
 Returns an index identifying this object.
virtual std::string getClassName (void) const
 Returns a string identifying this object.
virtual ~LICSDetector2 ()
 Destructor.


Constructor & Destructor Documentation

LICSDetector2  )  [inline]
 

Default constructor, setting default parameters.

Definition at line 132 of file LICSDetector2.hpp.

LICSDetector2 const double &  satThr,
const double &  tc,
const double &  dtMax = 61.0,
const bool &  use = true
 

Common constructor.

Parameters:
satThr Saturation threshold to declare cycle slip, in meters.
tc Threshold time constant, in seconds.
dtMax Maximum interval of time allowed between two successive epochs, in seconds.

Definition at line 63 of file LICSDetector2.cpp.

References LICSDetector2::setDeltaTMax(), LICSDetector2::setSatThreshold(), and LICSDetector2::setTimeConst().

virtual ~LICSDetector2  )  [inline, virtual]
 

Destructor.

Definition at line 273 of file LICSDetector2.hpp.


Member Function Documentation

std::string getClassName void   )  const [virtual]
 

Returns a string identifying this object.

Implements ProcessingClass.

Definition at line 48 of file LICSDetector2.cpp.

virtual double getDeltaTMax  )  const [inline, virtual]
 

Method to get the maximum interval of time allowed between two successive epochs, in seconds.

Definition at line 171 of file LICSDetector2.hpp.

int getIndex void   )  const [virtual]
 

Returns an index identifying this object.

Implements ProcessingClass.

Definition at line 43 of file LICSDetector2.cpp.

virtual double getMaxBufferSize  )  const [inline, virtual]
 

Method to get the maximum buffer size for data, in samples.

Definition at line 231 of file LICSDetector2.hpp.

virtual double getSatThreshold  )  const [inline, virtual]
 

Method to get the saturation threshold for cycle slip detection, in meters.

Definition at line 186 of file LICSDetector2.hpp.

virtual double getTimeConst  )  const [inline, virtual]
 

Method to get threshold time constant, in seconds.

Definition at line 202 of file LICSDetector2.hpp.

virtual bool getUseLLI  )  const [inline, virtual]
 

Method to know if the LLI check is enabled or disabled.

Definition at line 216 of file LICSDetector2.hpp.

gnssRinex & Process gnssRinex gData  )  throw (ProcessingException) [virtual]
 

Returns a gnnsRinex object, adding the new data generated when calling this object.

Parameters:
gData Data object holding the data.

Implements ProcessingClass.

Definition at line 287 of file LICSDetector2.cpp.

References GPSTK_THROW.

virtual gnssSatTypeValue& Process gnssSatTypeValue gData  )  throw (ProcessingException) [inline, virtual]
 

Returns a gnnsSatTypeValue object, adding the new data generated when calling this object.

Parameters:
gData Data object holding the data.

Implements ProcessingClass.

Definition at line 250 of file LICSDetector2.hpp.

satTypeValueMap & Process const DayTime epoch,
satTypeValueMap gData,
const short &  epochflag = 0
throw (ProcessingException) [virtual]
 

Returns a satTypeValueMap object, adding the new data generated when calling this object.

Parameters:
epoch Time of observations.
gData Data object holding the data.
epochflag Epoch flag.

Definition at line 85 of file LICSDetector2.cpp.

References GPSTK_THROW, and gpstk::SatIDSet.

LICSDetector2 & setDeltaTMax const double &  maxDelta  )  [virtual]
 

Method to set the maximum interval of time allowed between two successive epochs.

Parameters:
maxDelta Maximum interval of time, in seconds

Definition at line 191 of file LICSDetector2.cpp.

Referenced by LICSDetector2::LICSDetector2().

LICSDetector2 & setMaxBufferSize const int &  maxBufSize  )  [virtual]
 

Method to set the maximum buffer size for data, in samples.

Parameters:
maxBufSize Maximum buffer size for data, in samples.
Warning:
You must not set a value under minBufferSize, which usually is 5.

Definition at line 264 of file LICSDetector2.cpp.

LICSDetector2 & setSatThreshold const double &  satThr  )  [virtual]
 

Method to set the saturation threshold for cycle slip detection, in meters.

Parameters:
satThr Saturation threshold for cycle slip detection, in meters.
Warning:
Be sure you have a very good reason to change this value.

Definition at line 215 of file LICSDetector2.cpp.

Referenced by LICSDetector2::LICSDetector2().

LICSDetector2 & setTimeConst const double &  tc  )  [virtual]
 

Method to set threshold time constant, in seconds.

Parameters:
tc Threshold time constant, in seconds.
Warning:
Be sure you have a very good reason to change this value.

Definition at line 239 of file LICSDetector2.cpp.

Referenced by LICSDetector2::LICSDetector2().

virtual LICSDetector2& setUseLLI const bool &  use  )  [inline, virtual]
 

Method to set whether the LLI indexes will be used as an aid or not.

Parameters:
use Boolean value enabling/disabling LLI check

Definition at line 225 of file LICSDetector2.hpp.


The documentation for this class was generated from the following files:
Generated on Wed Feb 8 03:31:30 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1