LRAUV  revA
Tracking Class Reference

Contains the Tracking component. More...

#include <Tracking.h>

Inheritance diagram for Tracking:
Collaboration diagram for Tracking:

Public Member Functions

 Tracking (const Str &prefix, const Module *module)
 
virtual ~Tracking ()
 
void initialize (void)
 Initialize function. More...
 
void run (void)
 The actual "payload" of the component. More...
 
void uninitialize (void)
 Uninit function. More...
 
- Public Member Functions inherited from Behavior
virtual ~Behavior ()
 
bool executeIfUnsatisfied ()
 Combined run and test with metrics generation. More...
 
virtual bool runIfUnsatisfied ()
 Combined run and test Called by mission element: behaviorDone_. More...
 
virtual void preempted ()
 
virtual bool isSatisfied ()
 
virtual bool isRunnable ()
 
virtual bool isSatisfiable ()
 
virtual bool isCommand ()
 
BehaviorState getBehaviorState () const
 
void setBehaviorState (BehaviorState behaviorState)
 
virtual bool isCompleted (void)
 Query if this component is completed. More...
 
SettingReaderfindSettingReader (const Str &settingURI)
 
SettingReaderaddValueClause (const Str &uriPart, ValueClause *valueClause)
 
void addArgWriter (const Str &uriPart, DataWriter *argWriter)
 
const TimespangetTimeout ()
 
void setTimeout (const Timespan &timeout)
 
- Public Member Functions inherited from Component
virtual ~Component ()
 Destructor cleans up readers_ and writers_. More...
 
void registerReader (DataReader *reader)
 
void unregisterReader (DataReader *reader)
 
void registerWriter (DataWriter *writer)
 
void unregisterWriter (DataWriter *writer)
 
void disableMetering (void)
 
FlexArray< DataReader * > & getReaderList (void)
 
FlexArray< DataWriter * > & getWriterList (void)
 
const ModulegetModule ()
 
virtual void configure ()
 Read (or re-read!) configuration settings. More...
 
virtual void execute (void)
 
bool isActive () const
 Indicates if the component is active. More...
 
const CodedStrgetName (void) const
 Returns the name. More...
 
const TimestampgetTimeOfLastRun (void) const
 
ComponentState getState (void)
 Return the component's current state. More...
 
void setState (ComponentState state)
 
RunState getRunState (void)
 Return the component's run state. More...
 
bool isUsingRunState ()
 Return true if using runState. More...
 
void requestData (bool requestingData)
 Tell the component to start (or stop) sending data. More...
 
void requestStart ()
 Tell the component to start runnning. More...
 
void requestPause (const Timespan expectedPauseTime)
 Tell the component to pause runnning. More...
 
void requestResume ()
 Tell the component resume from pause. More...
 
void requestStop ()
 Tell the component to stop runnning. More...
 
virtual RunState start ()
 Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence. More...
 
virtual RunState starting ()
 Might follow a STOP...START sequence Subseqent. More...
 
virtual RunState runnable ()
 Should eventually follow a START request or RESETTING. More...
 
virtual RunState satisfied ()
 Possible return value of a Behavior. More...
 
virtual RunState pause ()
 Pause for a short period (indicated by pauseTime) More...
 
virtual RunState pausing ()
 Might follow a PAUSE request. More...
 
virtual RunState paused ()
 Should eventually follow a PAUSE request: should set continueTime. More...
 
virtual RunState resume ()
 Resume from PAUSE. More...
 
virtual RunState resuming ()
 Might follow a PAUSE...RESUME sequence. More...
 
virtual RunState resetting ()
 Might occur in case of Error. More...
 
virtual RunState stop ()
 Initial state – can be later followed by START. More...
 
virtual RunState stopping ()
 Might follow a STOP request. More...
 
virtual RunState stopped ()
 Should eventually follow a STOP request. More...
 
void setCriticalFailureReported (bool boolVal)
 
void setRecoveringFromCritical (bool boolVal)
 
void setFailureReported (bool boolVal)
 
bool isFailureUninitialized ()
 
void setFailureUninitialized (bool boolVal)
 
void setRetryTimeout (const Timespan &timeout)
 
void setPeriod (const Timespan &period)
 Set the period of this component... used if it is periodic. More...
 
const TimespangetPeriod (void)
 Returns the component's period (regardless of whether it is periodic) More...
 
ComponentType getComponentType ()
 Getter function for ComponentType. More...
 
virtual bool isFailed (void) const
 
virtual FailureMode::FailType getFailureType (void) const
 
virtual bool getCriticalFailureReported (void) const
 
virtual bool getFailureReported (void) const
 
virtual Timespan getRetryTimeout (void) const
 
virtual FailureMode::FailType setFailure (FailureMode::FailType failureType)
 
virtual int getFailCount (void) const
 
virtual bool isFailureMissionCritical ()
 
virtual int getAllowableFailures (void) const
 
virtual void setAllowableFailures (int fails)
 
LoggergetLogger (void)
 
virtual int incrementFailCount (void)
 
virtual void resetFailCount (void)
 
virtual int getSkippedRunsSinceFail (void) const
 
virtual int incrementSkippedRunsSinceFail (void)
 
virtual void logVoltage (float voltage, float averageVoltage)
 
virtual void logCurrent (float current, float averageCurrent)
 
const TimestampgetWriteTimestamp (void)
 
void setWriteTimestamp (const Timestamp &writeTimestamp)
 
BlobReadernewBlobReader (const BlobURI &blobURI)
 
BlobReadernewBlobReaderFromUniversal (const Str &componentName, const UniversalBlobURI &blobURI)
 
BlobWriternewBlobWriter (const BlobURI &blobURI, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 
ConfigReadernewConfigReader (const ConfigURI &configURI)
 
DataReadernewDataReader (const DataURI &dataURI)
 
DataReadernewDataReaderFromUniversal (const Str &componentName, const UniversalURI &universalURI)
 
DataWriternewDataWriter (const DataURI &dataURI, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 
UniversalBlobReadernewUniversalBlobReader (const UniversalBlobURI &universalURI)
 
UniversalBlobWriternewUniversalBlobWriter (const UniversalBlobURI &universalURI, const Unit &accuracyUnit=Units::NONE, const float accuracy=DataElement::NO_ACCURACY, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 
UniversalDataReadernewUniversalReader (const UniversalURI &universalURI)
 
UniversalDataWriternewUniversalWriter (const UniversalURI &universalURI, const Unit &accuracyUnit=Units::NONE, const float accuracy=DataElement::NO_ACCURACY, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 

Static Public Member Functions

static BehaviorCreateBehavior (const Str &prefix, const Module *module)
 Mission Component factory interface. More...
 

Protected Attributes

SettingReadercontactLabelReader_
 
SettingReadernumSamplesReader_
 
SettingReaderupdatePeriodReader_
 
- Protected Attributes inherited from Behavior
bool runnable_
 
bool satisfiable_
 
BehaviorState behaviorState_
 
Timespan timeout_
 Time before this behavior must end – defaults no timeout. More...
 
FastMap< const Str, SettingReader * > * settingReaderMap_
 
FastMap< const Str, DataWriter * > * argWriterMap_
 
- Protected Attributes inherited from Component
Logger logger_
 
Syslog::Severity debugLevel_
 
ComponentState state_
 Keep track of whether the component has "completed" or should be run again. More...
 
Timespan desiredPeriod_
 
CodedStrname_
 Store the component's name (used for logging purposes) More...
 
Timestamp timeOfRun_
 
Timestamp timeOfLastRun_
 
Timespan durationOfLastRun_
 
Timespan dt_
 
Timespan retryTimeout_
 
bool enabled_
 
bool failureReported_
 Indicates if the failure has been reported – cuts down on syslog. More...
 
bool criticalFailureReported_
 Indicates if a "Critical" failure has been reported – cuts down on syslog. More...
 
bool recoveringFromCritical_
 Indicates that a component had a previous critical failure that has been cleared temporarily awaiting final word from the component itself. More...
 
bool failureUninitialized_
 Indicates if the failure has resulted in an uninitialize call. More...
 
int failCount_
 Number of failures logged by PCaller. More...
 
bool failureMissionCritical_
 If true (default), complete failure ends mission. More...
 
int allowableFailures_
 Number of failures allowed to occur. More...
 
int skippedRunsSinceFail_
 Number of skipped runs since failureMode_ set by failCount_. More...
 
FailureMode::FailType failureType_
 Failed status. If failCount_ > 0, then this may be reset. More...
 
Timestamp timeOfFailure_
 Time of last failure. Relevant only if failed=true. More...
 
Timestamp writeTimestamp_
 Time of last write. More...
 
FlexArray< DataReader * > readers_
 
FlexArray< DataWriter * > writers_
 
const Modulemodule_
 
Timespan pauseTime_
 
bool meteringEnabled_
 If true, metering is enabled. More...
 
DataWriterdurationOfLastRunWriter_
 Writer for durationOfLastRun. More...
 
DataWritervoltageWriter_
 
DataWriteravgVoltageWriter_
 
DataWritercurrentWriter_
 
DataWriteravgCurrentWriter_
 
bool persistentPause_
 True if data is persistent while component is paused. More...
 

Private Member Functions

 Tracking (const Tracking &old)
 
bool isDataRequested ()
 
void requestVehiclePose (bool req)
 
void requestAcousticData (bool req)
 
void readSettings ()
 
void queryDAT ()
 
bool readFromDAT ()
 
bool processFromDAT ()
 Transform observations into North-East-Down coordinate frame, and (optionally) average several observations. More...
 
void writeData ()
 
void unitVectorToAzimuthAndElevation (Point3D &uhat, float &azimuth, float &elevation)
 Convert a direction represented as a unit vector to angles of azimuth and elevation. More...
 

Private Attributes

DataReaderlatitudeReader_
 
DataReaderlongitudeReader_
 
DataReaderdepthReader_
 
UniversalBlobReadervehicleOrientationReader_
 
DataReaderbenthosAddressReader_
 
DataReaderrangeToContactReader_
 
BlobReaderdirectionToContactReader_
 
DataWritercontactLabelWriter_
 
DataWritercontactLatitudeWriter_
 
DataWritercontactLongitudeWriter_
 
DataWritercontactDepthWriter_
 
DataWriterrangeToContactWriter_
 
DataWriterazimuthToContactWriter_
 
DataWriterelevationToContactWriter_
 
DataWriterheadingToContactWriter_
 
DataWritereastingsToContactWriter_
 
DataWriternorthingsToContactWriter_
 
BlobWritervDirectionWriter_
 
BlobWriternDirectionWriter_
 
BlobWritervRelPosWriter_
 
BlobWriternRelPosWriter_
 
DataWriterbenthosAddressWriter_
 
DataWriteronewayModeRequestedWriter_
 
DataWriternumPingsWriter_
 
int verbosity_
 
Matrix3x3 rotationFromVehicleToNavigationFrame_
 
int contactLabel_
 
int contactLabelSetting_
 
int numberOfSamplesSetting_
 
int queryModeSetting_
 
double rangeToContact_
 
double contactLatitude_
 
double contactLongitude_
 
double contactDepth_
 
float azimuthInFSK_
 
float elevationInFSK_
 
float azimuthInNED_
 
float elevationInNED_
 
Point3D directionInFSK_
 
Point3D relPosInFSK_
 
Point3D directionInNED_
 
Point3D relPosInNED_
 
Timestamp dataStartTime_
 
Timespan updatePeriod_
 

Additional Inherited Members

- Public Types inherited from Behavior
enum  BehaviorState {
  BEHAVIOR_INACTIVE, BEHAVIOR_CALLED, BEHAVIOR_ACTIVE, BEHAVIOR_TIMEOUT,
  BEHAVIOR_COMPLETED
}
 
- Public Types inherited from Component
enum  ComponentState {
  BLOCK_CONTINUOUS, BLOCK_PERIODIC, BLOCK_NORMAL, BLOCK_COMPLETED,
  BLOCK_UNKNOWN
}
 In this model, the component has basically two states: wanting to run, and completed (no longer needing to run). More...
 
enum  ComponentType { COMPONENT_ASYNC, COMPONENT_CONFIG, COMPONENT_BEHAVIOR, COMPONENT_SYNC }
 Components can indicate how they want to be handled by their type. More...
 
enum  RunState {
  NO_RUN_STATE = 0, START, STARTING, RUNNABLE,
  SATISFIED, PAUSE, PAUSING, PAUSED,
  RESUME, RESUMING, RESETTING, STOP,
  STOPPING, STOPPED
}
 
- Protected Types inherited from Component
enum  ConfigOption { CONFIG_SIMULATE_HARDWARE, CONFIG_POWER, CONFIG_FREQUENCY, CONFIG_LATENCY }
 
- Protected Member Functions inherited from Behavior
 Behavior (const Str &name, const Module *module, const bool runnable, const bool satisfiable)
 Protected constructor for abstract base class. More...
 
 Behavior (const Behavior &old)
 
SettingReadernewSettingReader (const Str &uriPart, const DataValue *defaultValue, bool deleteDefaultValue=true)
 
SettingReadernewSettingReader (const SettingURI &uriPart)
 
DataWriterfindArgWriter (const OutputURI &uriPart)
 
- Protected Member Functions inherited from Component
virtual ConfigURI getConfigURI (ConfigOption configOption) const
 Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc. More...
 
virtual ConfigURI getConfigURI (ConfigOption configOption, ElementURI forElement) const
 Should return [myNamespace]::POWER_[forElement], [myNamespace]::LATENCY_[forElement], etc. More...
 
virtual void setDurationOfLastRun (const Timespan &span)
 
virtual void setTimeOfRun (const Timestamp &time)
 
virtual void setTimeOfLastRun (const Timestamp &time)
 
virtual void setDt (const Timespan &dt)
 
virtual bool setEnabled (bool enabled=true)
 
void setRunState (const RunState runState)
 
const Timespan getPauseTime () const
 
virtual void setFailureMissionCritical (bool failureMissionCritical)
 
bool simulateHardware ()
 

Detailed Description

Contains the Tracking component.

Initially, this component just transforms DAT measurements from the vehicle frame to the geographic frame. This component outputs the position of each contact to the slate, in both absolute and relative coordinates. Those outputs can then be used by other components of the guidance module. For example, the Homing behavior would drive the LRAUV toward the contact, and the Circle behavior would make the LRAUV circle the contact. Escape or Intercept behaviors might also be useful in the future, but would probably warrant more complete estimation of the contact state to enable reasonable predictions of future contact state.

/todo Add tracking quality metric to output (e.g., mean and variance for a series of multiple measurements from a single contact). /todo Implement tracking of contact with specified label (e.g., DAT address 1). /todo Implement simultaneous tracking of multiple contacts. /todo Implement range-only tracking (e.g., for configurations with acoustic modem installed but without DAT.).

Tracking.h should only be included by Tracking.cpp Other classes should include TrackingIF.h

Constructor & Destructor Documentation

Tracking::~Tracking ( )
virtual
Tracking::Tracking ( const Tracking old)
private

Member Function Documentation

Behavior * Tracking::CreateBehavior ( const Str prefix,
const Module module 
)
static

Mission Component factory interface.

References Tracking().

Referenced by EstimationModule::loadComponents().

void Tracking::initialize ( void  )
virtual
bool Tracking::isDataRequested ( )
private
void Tracking::requestAcousticData ( bool  req)
private
void Tracking::requestVehiclePose ( bool  req)
private
void Tracking::uninitialize ( void  )
virtual
void Tracking::unitVectorToAzimuthAndElevation ( Point3D uhat,
float &  azimuth,
float &  elevation 
)
private

Convert a direction represented as a unit vector to angles of azimuth and elevation.

(replicated functionality and method from current DAT driver)

Todo:
This is a generally useful conversion and should be made available at a higher level (maybe in AuvMath.cpp?) to avoid having multiple versions of the same method.

(replicated functionality and method from current DAT driver)

Todo:
This is a generally useful conversion and should be made available at a higher level (maybe in AuvMath.cpp?) to avoid having multiple versions of the same method.

Referenced by processFromDAT().

Member Data Documentation

float Tracking::azimuthInFSK_
private

Referenced by processFromDAT(), and writeData().

float Tracking::azimuthInNED_
private

Referenced by processFromDAT(), and writeData().

DataWriter* Tracking::azimuthToContactWriter_
private

Referenced by Tracking(), and writeData().

DataReader* Tracking::benthosAddressReader_
private
DataWriter* Tracking::benthosAddressWriter_
private

Referenced by queryDAT(), and Tracking().

double Tracking::contactDepth_
private

Referenced by processFromDAT(), and writeData().

DataWriter* Tracking::contactDepthWriter_
private

Referenced by Tracking(), and writeData().

int Tracking::contactLabel_
private

Referenced by readFromDAT(), and writeData().

SettingReader* Tracking::contactLabelReader_
protected

Referenced by readSettings(), and Tracking().

int Tracking::contactLabelSetting_
private

Referenced by queryDAT(), readFromDAT(), and readSettings().

DataWriter* Tracking::contactLabelWriter_
private

Referenced by Tracking(), and writeData().

double Tracking::contactLatitude_
private

Referenced by processFromDAT(), and writeData().

DataWriter* Tracking::contactLatitudeWriter_
private

Referenced by Tracking(), and writeData().

double Tracking::contactLongitude_
private

Referenced by processFromDAT(), and writeData().

DataWriter* Tracking::contactLongitudeWriter_
private

Referenced by Tracking(), and writeData().

Timestamp Tracking::dataStartTime_
private

Referenced by initialize(), queryDAT(), run(), and writeData().

DataReader* Tracking::depthReader_
private
Point3D Tracking::directionInFSK_
private
Point3D Tracking::directionInNED_
private

Referenced by processFromDAT(), Tracking(), and writeData().

BlobReader* Tracking::directionToContactReader_
private
DataWriter* Tracking::eastingsToContactWriter_
private

Referenced by Tracking(), and writeData().

float Tracking::elevationInFSK_
private

Referenced by processFromDAT(), and writeData().

float Tracking::elevationInNED_
private

Referenced by processFromDAT().

DataWriter* Tracking::elevationToContactWriter_
private

Referenced by Tracking(), and writeData().

DataWriter* Tracking::headingToContactWriter_
private

Referenced by Tracking(), and writeData().

DataReader* Tracking::latitudeReader_
private
DataReader* Tracking::longitudeReader_
private
BlobWriter* Tracking::nDirectionWriter_
private

Referenced by Tracking(), and writeData().

DataWriter* Tracking::northingsToContactWriter_
private

Referenced by Tracking(), and writeData().

BlobWriter* Tracking::nRelPosWriter_
private

Referenced by Tracking(), and writeData().

int Tracking::numberOfSamplesSetting_
private
DataWriter* Tracking::numPingsWriter_
private

Referenced by queryDAT(), and Tracking().

SettingReader* Tracking::numSamplesReader_
protected

Referenced by readSettings(), and Tracking().

DataWriter* Tracking::onewayModeRequestedWriter_
private
int Tracking::queryModeSetting_
private
double Tracking::rangeToContact_
private
DataReader* Tracking::rangeToContactReader_
private
DataWriter* Tracking::rangeToContactWriter_
private

Referenced by Tracking(), and writeData().

Point3D Tracking::relPosInFSK_
private

Referenced by processFromDAT(), Tracking(), and writeData().

Point3D Tracking::relPosInNED_
private

Referenced by processFromDAT(), Tracking(), and writeData().

Matrix3x3 Tracking::rotationFromVehicleToNavigationFrame_
private

Referenced by processFromDAT(), and Tracking().

Timespan Tracking::updatePeriod_
private

Referenced by readSettings(), and run().

SettingReader* Tracking::updatePeriodReader_
protected

Referenced by readSettings(), and Tracking().

BlobWriter* Tracking::vDirectionWriter_
private

Referenced by Tracking(), and writeData().

UniversalBlobReader* Tracking::vehicleOrientationReader_
private
int Tracking::verbosity_
private

Referenced by processFromDAT(), readFromDAT(), and run().

BlobWriter* Tracking::vRelPosWriter_
private

Referenced by Tracking(), and writeData().


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