WSF
WsfFusionStrategy Class Referenceabstract

#include <WsfFusionStrategy.hpp>

Inheritance diagram for WsfFusionStrategy:
Collaboration diagram for WsfFusionStrategy:

Public Types

using FusionStrategyTypes = WsfObjectTypeList<WsfFusionStrategy>
Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.

Public Member Functions

 ~WsfFusionStrategy () override=default
WsfFusionStrategyClone () const override=0
 Create a clone of "this" object.
bool ProcessInput (UtInput &aInput) override
 Process input from a common source.
virtual bool Initialize (WsfTrackManager *aTrackManagerPtr)
 Perform any necessary initialization.
virtual bool Initialize (WsfProcessor *aProcessorPtr)
 Perform any necessary initialization.
virtual bool DebugEnabled () const
 Return whether debug is enabled for this instance.
virtual bool UpdateLocalTrackFromNonLocalTrack (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)=0
virtual bool UpdateLocalResultFromNonLocalResult (double aSimTime, WsfLocalSensorResult &aLocalResult, const WsfSensorResult &aNonLocalResult)=0
virtual bool InitializeLocalTrackFromNonLocalTrack (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool InitializeLocalResultFromNonLocalResult (double aSimTime, WsfLocalSensorResult &aLocalResult, const WsfSensorResult &aNonLocalResult)
virtual void ReviewTrack (WsfLocalTrack &aLocalTrack)=0
virtual bool UpdateNonKinematicData (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
WsfSimulationGetSimulation () const
double GetSimTime ()
WsfPlatformGetPlatform () const
WsfTrackManagerGetTrackManager ()
 Return a reference to the track manager being accessed internally by this object.
const WsfTrackManagerGetTrackManager () const
WsfProcessorGetProcessor ()
 Return a reference to the processor being accessed internally by this object.
Public Member Functions inherited from WsfObject
 WsfObject ()
 This is the constructor for the WsfObject class.
 ~WsfObject () override
 This is the destructor for the WsfObject class.
const char * GetScriptClassName () const override
const std::string & GetType () const
WsfStringId GetTypeId () const
 Get the string ID of the 'type' of the object.
void SetType (WsfStringId aType)
const std::string & GetBaseType () const
WsfStringId GetBaseTypeId () const
const TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (const WsfObject &aRhs)
 Assignment operator.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Static Public Member Functions

static bool UpdateNonKinematicData (double aSimTime, WsfTrackManager &aTracManager, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)

Protected Member Functions

 WsfFusionStrategy ()
 WsfFusionStrategy (const WsfFusionStrategy &aSrc)
WsfFusionStrategyoperator= (const WsfFusionStrategy &)=delete
void SetTrackManager (WsfTrackManager &aTrackManager)
 Set the track manager reference.
void SetProcessor (WsfProcessor &aProcessor)
 Set the processor reference.
virtual bool UpdateIFF_Status (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateSide (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateType (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateSpatialDomain (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateTrackQuality (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateSignalToNoise (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateSignalList (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
virtual bool UpdateAuxData (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).

Static Protected Member Functions

static void FuseEstimates (const UtMatrixd &aEstimate1, const UtMatrixd &aEstimate2, const UtMatrixd &aCovar1, const UtMatrixd &aCovar2, UtMatrixd &aEstimateOut, UtMatrixd &aCovarOut)
static void NormalizeAzRangeEstimate (const UtMatrixd &aEstimate, const UtMatrixd &aCovar, const double &aElevation, UtMatrixd &aNormEstimate, UtMatrixd &aNormCovar)
static void NormalizeElRangeEstimate (const UtMatrixd &aEstimate, const UtMatrixd &aCovar, const double &aAzimuth, UtMatrixd &aNormEstimate, UtMatrixd &aNormCovar)

Detailed Description

This class defines the interface for a fusion strategy. It is to be used and configured by the WsfTrackManager or a specialized WsfProcessor. A factory method called WsfFusionStrategy::Create is provided to return new instances of existing correlation object prototypes.

Currently the only implemented concrete instance is WsfDefaultFusion. In order to create new fusion objects, the implementor should do the following:

Note
It is suggested that the developer prefer the use of WsfFusionStrategy::Create over Clone() as the former (factory) method ties in the desired instance of WsfTrackManager.

Member Typedef Documentation

◆ FusionStrategyTypes

Constructor & Destructor Documentation

◆ ~WsfFusionStrategy()

WsfFusionStrategy::~WsfFusionStrategy ( )
overridedefault

◆ WsfFusionStrategy() [1/2]

◆ WsfFusionStrategy() [2/2]

WsfFusionStrategy::WsfFusionStrategy ( const WsfFusionStrategy & aSrc)
protected

References WsfFusionStrategy().

Member Function Documentation

◆ Clone()

WsfFusionStrategy * WsfFusionStrategy::Clone ( ) const
overridepure virtual

Create a clone of "this" object.

Implements WsfObject.

Implemented in WsfDefaultFusion, WsfMTT_Fusion, and WsfOrbitDeterminationFusion.

References WsfFusionStrategy().

Referenced by WsfFusionStrategyTypes::Create().

◆ DebugEnabled()

bool WsfFusionStrategy::DebugEnabled ( ) const
virtual

◆ FuseEstimates()

void WsfFusionStrategy::FuseEstimates ( const UtMatrixd & aEstimate1,
const UtMatrixd & aEstimate2,
const UtMatrixd & aCovar1,
const UtMatrixd & aCovar2,
UtMatrixd & aEstimateOut,
UtMatrixd & aCovarOut )
staticprotected

Fuse estimates from two tracks. The two tracks must contain identical kinds of data in their state estimates and covariance matrices (for instance, don't mix 3-d and 2-d based covariance matrices or two different kinds of 2-d covariances).

Note
The two estimates are fused based on their associated covariances; the larger the covariance, the smaller the weight given to the estimate in the fusion. It is assumed that the two estimates are independent (an assumption that is only approximate due to common process noise, and should be revisited).
The weighted average fusion algorithm is based on the open-source algorithm referenced in Bar Shalom and Li, Multi-target-Multisensor Fusion, equations 8.3.3-12 and 8.3.3-15, p.443.

the check_fuse_estimates flag in the user input).

References WsfFusionStrategyTypes::mCheckFuseEstimates.

◆ GetPlatform()

◆ GetProcessor()

WsfProcessor & WsfFusionStrategy::GetProcessor ( )
inline

Return a reference to the processor being accessed internally by this object.

◆ GetSimTime()

double WsfFusionStrategy::GetSimTime ( )

References simTime.

◆ GetSimulation()

◆ GetTrackManager() [1/2]

◆ GetTrackManager() [2/2]

const WsfTrackManager & WsfFusionStrategy::GetTrackManager ( ) const
inline

◆ Initialize() [1/2]

virtual bool WsfFusionStrategy::Initialize ( WsfProcessor * aProcessorPtr)
inlinevirtual

Perform any necessary initialization.

◆ Initialize() [2/2]

virtual bool WsfFusionStrategy::Initialize ( WsfTrackManager * aTrackManagerPtr)
inlinevirtual

Perform any necessary initialization.

Reimplemented in WsfDefaultFusion, WsfMTT_Fusion, and WsfOrbitDeterminationFusion.

Referenced by WsfDefaultFusion::Initialize(), and WsfOrbitDeterminationFusion::Initialize().

◆ InitializeLocalResultFromNonLocalResult()

virtual bool WsfFusionStrategy::InitializeLocalResultFromNonLocalResult ( double aSimTime,
WsfLocalSensorResult & aLocalResult,
const WsfSensorResult & aNonLocalResult )
inlinevirtual

Allow the fusion strategy to perform initial fusion from an non-local result.

Returns
true if the local result was updated with non-local result data.
Note
This is currently not used but included for completeness.

◆ InitializeLocalTrackFromNonLocalTrack()

virtual bool WsfFusionStrategy::InitializeLocalTrackFromNonLocalTrack ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlinevirtual

Allow the fusion strategy to perform initial fusion from an non-local track.

Returns
true if the local track was updated with non-local track data.

◆ NormalizeAzRangeEstimate()

void WsfFusionStrategy::NormalizeAzRangeEstimate ( const UtMatrixd & aEstimate,
const UtMatrixd & aCovar,
const double & aElevation,
UtMatrixd & aNormEstimate,
UtMatrixd & aNormCovar )
staticprotected

Convert an azimuth-range estimate and covariance into a 3-d equivalent. No covariance contribution from elevation is considered for this method.

◆ NormalizeElRangeEstimate()

void WsfFusionStrategy::NormalizeElRangeEstimate ( const UtMatrixd & aEstimate,
const UtMatrixd & aCovar,
const double & aAzimuth,
UtMatrixd & aNormEstimate,
UtMatrixd & aNormCovar )
staticprotected

Convert an el-range estimate and covariance into a 3-d equivalent. No covariance contribution from azimuth is considered for this method.

◆ operator=()

WsfFusionStrategy & WsfFusionStrategy::operator= ( const WsfFusionStrategy & )
protecteddelete

References WsfFusionStrategy().

◆ ProcessInput()

bool WsfFusionStrategy::ProcessInput ( UtInput & aInput)
inlineoverridevirtual

Process input from a common source.

Reimplemented from WsfObject.

Reimplemented in WsfOrbitDeterminationFusion.

Referenced by WsfFusionStrategyTypes::LoadInstance().

◆ ReviewTrack()

virtual void WsfFusionStrategy::ReviewTrack ( WsfLocalTrack & aLocalTrack)
pure virtual

Review a track, adjusting parameters based on available information. Usually these are IFF and track quality. This review is usually performed after a track de-correlation.

Implemented in WsfDefaultFusion, and WsfOrbitDeterminationFusion.

References UpdateNonKinematicData().

◆ SetProcessor()

void WsfFusionStrategy::SetProcessor ( WsfProcessor & aProcessor)
inlineprotected

Set the processor reference.

◆ SetTrackManager()

void WsfFusionStrategy::SetTrackManager ( WsfTrackManager & aTrackManager)
inlineprotected

Set the track manager reference.

◆ UpdateAuxData()

virtual bool WsfFusionStrategy::UpdateAuxData ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateIFF_Status()

virtual bool WsfFusionStrategy::UpdateIFF_Status ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateLocalResultFromNonLocalResult()

virtual bool WsfFusionStrategy::UpdateLocalResultFromNonLocalResult ( double aSimTime,
WsfLocalSensorResult & aLocalResult,
const WsfSensorResult & aNonLocalResult )
pure virtual

Fuse a non-local result with an existing local result.

Returns
true if the local result was updated with non-local result data or false if the non-local result data was out-of-date.

Implemented in WsfDefaultFusion, and WsfOrbitDeterminationFusion.

◆ UpdateLocalTrackFromNonLocalTrack()

virtual bool WsfFusionStrategy::UpdateLocalTrackFromNonLocalTrack ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
pure virtual

Fuse a non-local track with an existing local track.

Returns
true if the local track was updated with non-local track data or false if the non-local track data was out-of-date.

Implemented in WsfDefaultFusion, WsfMTT_Fusion, and WsfOrbitDeterminationFusion.

◆ UpdateNonKinematicData() [1/2]

bool WsfFusionStrategy::UpdateNonKinematicData ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
virtual

A general-purpose method for updating the "non-kinematic" fields of the track (frequency, side, type, iff, track quality). TODO At some point we may want to break these out as individual, script-able methods, but only for default fusion.

Parameters
aSimTimeThe current simulation time.
aLocalTrackThe track to be updated.
aNonLocalTrackThe track with information to be extracted to the local track.

Reimplemented in WsfDefaultFusion.

References UpdateAuxData(), UpdateIFF_Status(), UpdateSide(), UpdateSignalList(), UpdateSignalToNoise(), UpdateSpatialDomain(), UpdateTrackQuality(), and UpdateType().

Referenced by ReviewTrack(), WsfDefaultFusion::UpdateNonKinematicData(), and UpdateNonKinematicData().

◆ UpdateNonKinematicData() [2/2]

bool WsfFusionStrategy::UpdateNonKinematicData ( double aSimTime,
WsfTrackManager & aTrackManager,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
static

A general-purpose method for updating the "non-kinematic" fields of the track (frequency, side, type, iff, track quality). TODO At some point we may want to break these out as individual, script-able methods, but only for default fusion.

References WsfTrackManager::GetFusionStrategy(), and UpdateNonKinematicData().

◆ UpdateSide()

virtual bool WsfFusionStrategy::UpdateSide ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateSignalList()

virtual bool WsfFusionStrategy::UpdateSignalList ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateSignalToNoise()

virtual bool WsfFusionStrategy::UpdateSignalToNoise ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateSpatialDomain()

virtual bool WsfFusionStrategy::UpdateSpatialDomain ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateTrackQuality()

virtual bool WsfFusionStrategy::UpdateTrackQuality ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().

◆ UpdateType()

virtual bool WsfFusionStrategy::UpdateType ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )
inlineprotectedvirtual

Reimplemented in WsfDefaultFusion.

Referenced by UpdateNonKinematicData().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved