|
WSF
|
#include <WsfTrackManager.hpp>


Public Member Functions | |
| WsfTrackManager ()=default | |
| WsfTrackManager (const WsfScenario &aScenario) | |
| Constructor. | |
| WsfTrackManager (const WsfTrackManager &aSrc) | |
| Copy constructor. | |
| ~WsfTrackManager () override | |
| Public Member Functions inherited from WsfSimpleComponentT< WsfPlatformComponent > | |
| WsfSimpleComponentT ()=default | |
| Empty constructor for serialization. | |
| WsfSimpleComponentT (int aRole, WsfStringId aName) | |
| WsfSimpleComponentT (int aRole) | |
| WsfSimpleComponentT (WsfStringId aName) | |
| WsfSimpleComponentT (const WsfSimpleComponentT &aSrc) | |
| WsfSimpleComponentT & | operator= (const WsfSimpleComponentT &aRhs) |
| ~WsfSimpleComponentT () override=default | |
| WsfStringId | GetComponentName () const override |
| const int * | GetComponentRoles () const override |
| Public Member Functions inherited from WsfComponentT< WsfPlatform > | |
| WsfComponentT () | |
| WsfComponentT (const WsfComponentT &) noexcept | |
| WsfComponentT & | operator= (const WsfComponentT &) noexcept |
| ~WsfComponentT () override=default | |
| ParentType * | GetComponentParent () const |
| void | SetComponentParent (ParentType *aParentPtr) |
| Public Member Functions inherited from WsfComponent | |
| virtual | ~WsfComponent ()=default |
| template<typename T> | |
| bool | QueryInterfaceT (T *&aRolePtr) |
| bool | ComponentHasRole (int aRole) |
| Returns true if the component has the specified role. | |
| virtual bool | PreInitialize (double aSimTime) |
| virtual void | PreInput () |
| Public Member Functions inherited from WsfNamed | |
| WsfNamed () | |
| WsfNamed (WsfStringId aName) | |
| WsfNamed (const WsfNamed &)=default | |
| WsfNamed & | operator= (const WsfNamed &)=default |
| virtual | ~WsfNamed ()=default |
| const std::string & | GetName () const |
| WsfStringId | GetNameId () const |
| void | SetName (WsfStringId aName) |
Static Public Member Functions | |
| static std::unique_ptr< UtScriptClass > | CreateScriptClass (const std::string &aClassName, UtScriptTypes *aScriptTypesPtr) |
Callback lists. | |
Other objects may register callbacks that are to be invoked during track state changes. | |
| enum | TrackStatusIndication { cNONE , cCREATED , cUPDATED , cDROPPED , cCANDIDATE_TRACK_PROMOTED , cRAW_TRACK_DROPPED , cRAW_TRACK_RECEIVED , cCURRENT_TARGET_CHANGED , cCORRELATED , cDECORRELATED } |
| enum | AuxDataFusionRule { cADF_PRIVATE , cADF_ONLY_LOCAL , cADF_PREFER_LOCAL } |
| UtCallbackListN< void(double, const WsfLocalTrack *)> | CandidateTrackPromoted |
| UtCallbackListN< void(double, const WsfLocalTrack *)> | CurrentTargetChanged |
| UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrackId &)> | LocalTrackCorrelation |
| UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrackId &)> | LocalTrackDecorrelation |
| UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrack *)> | LocalTrackInitiated |
| UtCallbackListN< void(double, const WsfLocalTrack *)> | LocalTrackDropped |
| UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrack *)> | LocalTrackUpdated |
| UtCallbackListN< void(double, const WsfTrack *)> | RawTrackDropped |
| UtCallbackListN< void(double, const WsfTrack *)> | RawTrackReceived |
| UtCallbackListN< void(double, WsfTrackManager *)> | TrackManagerChanged |
| bool | UpdateAuxData (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack) |
| WsfSimulation * | GetSimulation () const |
| WsfLocalTrack * | InitiateTrackP (double aSimTime, const WsfTrack &aTrack) |
| void | AssessTrackQuality (double aSimTime, WsfTrack *aTrackPtr) |
| WsfLocalTrack * | CorrelateTrack (double aSimTime, const WsfTrack &aNonLocalTrack) |
| void | FuseTrack (double aSimTime, const WsfTrack &aNonLocalTrack, WsfLocalTrack &aLocalTrackPtr) |
| WsfLocalTrack * | AddMeasurement (double aSimTime, const WsfTrack &aMeasurement) |
| For tracks that are raw products of sensors, perform filtering based on the filter strategy. | |
| WsfLocalTrack * | GetPrototypeTrack () const |
| const WsfScenario & | GetScenario () const |
Fusion methods: | |
| static WsfLocalTrack * | FindCorrelatedTrack (const WsfTrackId &aRawTrackId, WsfLocalTrackList &aLocalTrackList) |
| virtual void | StartFrame () |
| virtual void | EndFrame () |
| virtual WsfLocalTrack * | AddTrackReport (double aSimTime, const WsfTrack &aTrackUpdate) |
| virtual WsfTrack * | AddRawTrackReport (double aSimTime, const WsfTrack &aRawTrack) |
| virtual void | DropTrack (double aSimTime, const WsfTrackId &aRawTrackId) |
| std::unique_ptr< WsfLocalTrack > | RemoveTrack (const WsfTrackId &aTrackId) |
| virtual WsfLocalTrack * | FindCorrelatedTrack (const WsfTrackId &aRawTrackId) |
Component infrastructure methods | |
| WsfComponent * | CloneComponent () const override |
| void * | QueryInterface (int aRole) override |
| int | GetComponentInitializationOrder () const override |
| void | ComponentParentChanged (WsfPlatform *aPlatformPtr) override |
| virtual WsfTrackManager * | Clone () const |
| bool | ProcessInput (UtInput &aInput) override |
| bool | Initialize (double aSimTime) override |
| bool | Initialize2 (double aSimTime) override |
| virtual bool | Initialize (double aSimTime, WsfPlatform *aPlatformPtr) |
| WsfPlatform * | GetPlatform () const |
| Return the platform with which this track manager is associated. | |
| WsfCorrelationStrategy & | GetCorrelationStrategy () |
| Return the correlation strategy used by this track manager. | |
| const WsfCorrelationStrategy & | GetCorrelationStrategy () const |
| WsfFusionStrategy & | GetFusionStrategy () |
| Return the fusion strategy used by this track manager. | |
| const WsfFusionStrategy & | GetFusionStrategy () const |
| void | SetCorrelationStrategy (WsfStringId aTypeName) |
| Sets the correlation strategy used by this track manager. | |
| void | SetFusionStrategy (WsfStringId aTypeName) |
| Sets the fusion strategy used by this track manager. | |
| void | SetDropUncorrelatedTracks (bool aDropUncorrelatedTracks) |
| void | SetDebug (bool aDebug) |
| Set whether this instance will print diagnostic message to standard output. | |
| bool | DebugEnabled () const |
| Return whether debug is enabled for this instance. | |
| void | SetInitiateLocalTracks (bool aInitiateLocalTracks) |
| bool | LocalTracksInitiated () const |
| Accessor to determine if local tracks are initiated (true by default). | |
External track purging. | |
| virtual void | PurgeInactiveTracks (double aSimTime, double aInactivityTimeLimit) |
| virtual void | PurgeInactiveRawTracks (double aSimTime, double aInactivityTimeLimit, double aStaticInactivityTimeLimit) |
| virtual void | PurgeLocalTrackHistory (double aSimTime, double aKeepTimeInterval) |
| void | SetWillPurgeInactiveTracks (bool aWillPurgeInactiveTracks) |
| bool | WillPurgeInactiveTracks () const |
| Will some external process perform period purging of inactive tracks. | |
Track interlock methods. | |
These are used by external controllers (e.g.: WsfTaskManager) to prevent a track from being purged at an inopportune time. | |
| virtual void | LockTrack (double aSimTime, const WsfTrackId &aLocalTrackId) |
| virtual void | LockTrack (double aSimTime, WsfLocalTrack *aLocalTrackPtr) |
| virtual void | UnlockTrack (double aSimTime, const WsfTrackId &aLocalTrackId) |
| virtual void | UnlockTrack (double aSimTime, WsfLocalTrack *aLocalTrackPtr) |
'Pre-brief' track methods. | |
| virtual WsfLocalTrack * | AddTrack (double aSimTime, const WsfTrack &aTrack) |
| void | AddInitialTrack (const WsfTrack &aTrack) |
| virtual WsfLocalTrack * | InitiateTrack (double aSimTime, const WsfTrack &aRawTrack) |
| WsfLocalTrack * | InitiateTrackSilent (double aSimTime, const WsfTrack &aRawTrack) |
| WsfLocalTrack * | InitiateAndCorrelateTrack (double aSimTime, const WsfTrack &aRawTrack) |
| Deprecated; use InitiateTrackSilent instead. | |
Methods that access the track lists directly: | |
| unsigned int | GetTrackCount () const |
| WsfLocalTrack * | GetTrackEntry (unsigned int aEntryIndex) |
| unsigned int | GetRawTrackCount () |
| WsfTrack * | GetRawTrackEntry (unsigned int aEntryIndex) |
| WsfLocalTrack * | FindTrack (const WsfTrackId &aLocalTrackId) |
| WsfTrack * | FindRawTrack (const WsfTrackId &aRawTrackId) |
| WsfLocalTrackList & | GetTrackList () |
| WsfTrackList & | GetRawTrackList () |
| WsfLocalTrackList & | GetLocalTrackList () |
| WsfLocalTrackList & | GetFilteredRawTrackList () |
| const WsfLocalTrackList & | GetFilteredRawTrackList () const |
| Return the filtered sensor track list (const version). | |
| WsfTrack * | GetRawTrack (const WsfLocalTrack *aLocalTrackPtr, unsigned int aRawTrackEntry) |
| bool | HasFilter () |
'current target' methods. | |
| const WsfTrack * | GetCurrentTarget () |
| const WsfTrackId | GetCurrentTargetTrackId () const |
| Get the track ID for the current target of interest. | |
| WsfTrackId | SetCurrentTarget (double aSimTime, const WsfTrack &aTrack) |
| void | ClearCurrentTarget () |
Track status notification methods. | |
External processors that implement track management functions (i.e.: directly maintain the local and raw track lists contained in the object) can call these methods to perform the standard notification processes would otherwise occur if this class were performing track maintenance. | |
| void | NotifyOfCandidateTrackPromoted (double aSimTime, const WsfLocalTrack *aLocalTrackPtr) |
| void | NotifyOfCurrentTargetChanged (double aSimTime, const WsfLocalTrack *aRawTrackPtr) |
| void | NotifyOfLocalTrackCorrelation (double aSimTime, const WsfLocalTrack *aTrackPtr, const WsfTrackId &aRawTrackId) |
| void | NotifyOfLocalTrackDecorrelation (double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrackId &aRawTrackId) |
| void | NotifyOfLocalTrackDropped (double aLocalSimTime, const WsfLocalTrack *aTrackPtr) |
| void | NotifyOfLocalTrackInitiated (double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr) |
| void | NotifyOfLocalTrackUpdated (double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr) |
| void | NotifyOfRawTrackDropped (double aSimTime, const WsfTrack *aTrack) |
| void | NotifyOfRawTrackReceived (double aSimTime, const WsfTrack *aRawTrackPtr) |
| void | NotifyOfTrackManagerChanged (double aSimTime, WsfTrackManager *aNewManagerPtr) |
Additional Inherited Members | |
| Public Types inherited from WsfComponentT< WsfPlatform > | |
| typedef WsfPlatform | ParentType |
| This is needed to support the WsfComponentList template. | |
| int | mRoles [2] |
The Track Manager maintains a 'local' track list.
The track manager is used to maintain a list of 'local tracks' (as defined by WsfLocalTrack). The caller provides 'track reports' or 'raw tracks' (as defined by WsfTrack) which are then either fused with existing local tracks or used to start a new local track. This type of object is also known as a "tracker."
The standard implementation of WsfTrackManager provides perfect correlation and a default track fusion. In order to provide an alternate capability, one should define alternate correlation and fusion strategies through sub-classing of WsfCorrelationStrategy and WsfFusionStrategy (see associated class documentation for further details). These strategies are then specified through the user input keywords "correlation_method" and "fusion_method" (see the WSF User Input Guide for details).
The local track contains a list of correlated track ids. Also the non-local or "raw" tracks themselves can be accessed through the raw track list, if desired (see WsfTrackManager::GetRawTrackList).
There are two mechanisms for purging local tracks from the track list
Common track status indications.
|
default |
References WsfTrackManager().
Referenced by Clone(), NotifyOfTrackManagerChanged(), WsfTrackManager(), and WsfTrackManager().
| WsfTrackManager::WsfTrackManager | ( | const WsfScenario & | aScenario | ) |
Constructor.
References CandidateTrackPromoted, CurrentTargetChanged, cWSF_COMPONENT_TRACK_MANAGER, WsfCorrelationStrategyTypes::Get(), WsfFusionStrategyTypes::Get(), LocalTrackCorrelation, LocalTrackDecorrelation, LocalTrackDropped, LocalTrackInitiated, LocalTrackUpdated, RawTrackDropped, RawTrackReceived, and TrackManagerChanged.
| WsfTrackManager::WsfTrackManager | ( | const WsfTrackManager & | aSrc | ) |
Copy constructor.
References CandidateTrackPromoted, Clone(), CurrentTargetChanged, if(), LocalTrackCorrelation, LocalTrackDecorrelation, LocalTrackDropped, LocalTrackInitiated, LocalTrackUpdated, RawTrackDropped, RawTrackReceived, TrackManagerChanged, and WsfTrackManager().
|
override |
| void WsfTrackManager::AddInitialTrack | ( | const WsfTrack & | aTrack | ) |
Add track to the 'initial' track list. An initial track is one that is created prior to actually initializing the platform that contains the track manager. Examples are 'hand-off' tracks and initial tracks defined in input files. The tracks are just put into a 'parking place' until initialization, at which point they will be formally added to the track list.
| aTrack | The track to be added to the initial track list. |
References WsfTrack::Clone().
Referenced by WsfPlatform::ProcessInput(), ProcessInput(), and SetCurrentTarget().
|
protected |
For tracks that are raw products of sensors, perform filtering based on the filter strategy.
References AddTrackReport(), WsfTrack::cFILTERED_SENSOR, WsfTrack::GetOriginatorNameId(), GetSimulation(), WsfTrack::GetTargetName(), WsfTrack::GetTrackId(), WsfTrack::GetUpdateTime(), WsfTrack::IsCandidate(), NotifyOfCandidateTrackPromoted(), WsfTrack::SetIsCandidate(), and trackPtr.
Referenced by AddTrackReport().
|
virtual |
Add a raw track report (default is add or replace).
| aSimTime | The current simulation time. |
| aRawTrack | The raw track to be added or replaced. |
References AssessTrackQuality(), WsfTrack::Clone(), WsfObject::GetName(), GetPlatform(), GetSimulation(), WsfTrack::GetTargetName(), WsfTrack::GetTrackId(), WsfTrack::GetUpdateCount(), WsfTrack::GetUpdateTime(), WsfAuxDataEnabled::HasAuxData(), and trackPtr.
Referenced by AddTrackReport().
|
virtual |
Add a track to the track manager's local track list. The input raw track will not be fused or purged, and it will not be stored in the raw track list.
| aSimTime | The time at which the track is added. |
| aTrack | The input raw track to add to the local track list. |
References GetSimulation(), WsfAuxDataEnabled::HasAuxData(), NotifyOfLocalTrackInitiated(), and trackPtr.
Referenced by AddTrackReport(), and Initialize2().
|
virtual |
Add a track report. This report will be fused with any corresponding local tracks. If the track manager is running unframed, the merged track will be returned immediately; otherwise, 0 will be returned, and a call to FindCorrelatedTrack(...) will be required after EndFrame() is called. The input raw track will be added to the raw track list if not present; otherwise, it will be used to update the existing raw track.
| aSimTime | The current simulation time. |
| aTrackUpdate | The raw track report to fuse into the local track list and add/replace in the raw track list. |
References AddMeasurement(), AddRawTrackReport(), AddTrack(), WsfTrack::Clone(), CorrelateTrack(), WsfTrack::cUNFILTERED_SENSOR, FindCorrelatedTrack(), FuseTrack(), WsfTrack::GetHistory(), WsfObject::GetName(), GetPlatform(), WsfTrack::GetTargetName(), WsfTrack::GetTrackId(), WsfTrack::GetTrackType(), InitiateTrack(), WsfTrack::IsFusible(), WsfLocalTrack::IsMirrorTrack(), NotifyOfLocalTrackUpdated(), NotifyOfRawTrackReceived(), WsfLocalTrack::ReplacementUpdate(), and UpdateAuxData().
Referenced by AddMeasurement(), WsfFusionCenter::AdjustTrackQuantities(), Initialize2(), WsfWeaponTrackProcessor::ProcessTrackUpdate(), SetCurrentTarget(), WsfFusionCenter::UpdateFalseTargetTracks(), WsfFusionCenter::UpdateRealTargetTracks(), and UT_DEFINE_SCRIPT_METHOD().
|
protected |
Assign a track quality to the raw track. This is done on inbound raw tracks as they are moved to the raw track list. Note that this does nothing to measurements. They have whatever quality they have. This is mostly to prevent off-board tracks from preventing local track contributions
References WsfTrack::cFILTERED_SENSOR, WsfTrack::cSTATIC_IMAGE, WsfTrack::cUNFILTERED_SENSOR, WsfTrack::GetQuality(), WsfTrack::GetTrackQuality(), WsfTrack::GetTrackType(), and WsfTrack::SetTrackQuality().
Referenced by AddRawTrackReport().
|
inline |
Indicate the current target is no longer a target.
Referenced by WsfCuedLaserWeapon::CeaseFire(), and WsfWeaponTrackProcessor::ProcessTrackDrop().
|
inlinevirtual |
Create a copy, or clone, of "this" object.
References WsfTrackManager().
Referenced by CloneComponent(), and WsfTrackManager().
|
inlineoverridevirtual |
Clones a component. May return null if component does not support clone.
Implements WsfComponent.
References Clone().
|
inlineoverridevirtual |
The parent to which the component is attached has been updated. This virtual method is called whenever the components parent attachment has been changed. This is provided so derived class receives notification of the change.
| aParentPtr | Pointer to the new parent. The new parent may be null if the attachment was severed. |
Reimplemented from WsfComponentT< WsfPlatform >.
|
protected |
Invoke the correlation strategy to determine if a local track correlation exists for a given non-local or 'raw' track. Perform any housekeeping to ensure a consistent track list.
| aSimTime | The current simulation time. |
| aNonLocalTrack | The non-local or 'raw' track to correlate against. |
References WsfLocalTrack::Correlate(), FindCorrelatedTrack(), and WsfTrack::GetTrackId().
Referenced by AddTrackReport().
|
static |
Create the 'class' object for the script system. This is invoked once by WsfScriptManager to create the 'class' object that defines the interface to instances of this class from the script system.
Referenced by WsfScriptManager::RegisterTypes().
|
inline |
Return whether debug is enabled for this instance.
|
virtual |
Notify the track manager that a raw track has been dropped. This fact will be reflected in the track id list of the corresponding local track.
| aSimTime | The simulation time at which the track was dropped. |
| aRawTrackId | The track id of the raw track that was dropped. |
References FindCorrelatedTrack().
Referenced by WsfFusionCenter::AdjustTrackQuantities(), and PurgeInactiveRawTracks().
|
virtual |
For a framed input, signal end-of-frame.
|
virtual |
Given a non-local (raw) track id, find a local track that has been correlated with it.
| aRawTrackId | The non-local (raw) track id to use in correlating with local tracks. |
References FindTrack(), WsfObject::GetName(), GetPlatform(), WsfTrackId::IsNull(), and trackPtr.
Referenced by AddTrackReport(), WsfMTT_Correlation::CorrelateImpl(), WsfPerfectCorrelation::CorrelateImpl(), WsfTruthCorrelation::CorrelateImpl(), CorrelateTrack(), DropTrack(), WsfBMUtils::FindCorrelatedTrack(), WsfWeaponTrackProcessor::ProcessTrackUpdate(), SetCurrentTarget(), WsfFusionCenter::UpdateFalseTargetTracks(), and WsfFusionCenter::UpdateRealTargetTracks().
|
static |
Given a non-local (raw) track id, find a local track that has been correlated with it.
| aRawTrackId | The non-local (raw) track id to use in correlating with local tracks. |
| aLocalTrackList | A local track list to use in finding the correlated track. |
References WsfTrackListT< T >::GetTrackCount(), WsfTrackListT< T >::GetTrackEntry(), WsfLocalTrack::IsCorrelatedWith(), and trackPtr.
|
inline |
Find the requested track report. This version will return a pointer to the track so it can be modified.
| aRawTrackId | The track ID of the track report to be located. |
Referenced by WsfUplinkProcessor::AddTrackUplink(), WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks(), WsfMTT_Correlation::CorrelateImpl(), WsfBMUtils::GetOriginalTracks(), WsfBMUtils::GetTrackSensorType(), WsfWMAIEngagementMod::Drag::isFinished(), WsfUplinkProcessor::LocalTrackCorrelation(), WsfWeaponTaskManager::UplinkStart(), and UT_DEFINE_SCRIPT_METHOD().
|
inline |
Find the requested track. This version will return a pointer to the track so it can be modified.
| aLocalTrackId | The track ID of the local track to be located. |
Referenced by WsfUplinkProcessor::AddUplink(), WsfFusionCenter::AdjustTrackQuantities(), WsfMTT_Correlation::CorrelateImpl(), WsfBMSensorInfoRecord::Cue(), WsfBMSensorInfoRecord::CueTrackUpdated(), FindCorrelatedTrack(), WsfBrawlerProcessor::GetConsciousnessEventTime(), WsfClusterCorrelation::GetCorrelatedTrack(), WsfClusterCorrelation::GetCorrelatedTrack(), GetCurrentTarget(), WsfBMUtils::GetOriginalTracks(), WsfXIO_TaskService::HandleCommand(), WsfWMAIEngagementMod::Drag::isFinished(), LockTrack(), WsfTrackProcessor::ProcessMessage(), WsfWeaponTaskManager::ProcessTaskStatusMessage(), WsfUplinkProcessor::RemoveUplink(), SetCurrentTarget(), WsfUplinkProcessor::StartUplinking(), UnlockTrack(), WsfFusionCenter::UpdateFalseTargetTracks(), WsfFusionCenter::UpdateRealTargetTracks(), and WsfWeaponTaskManager::UplinkStart().
|
protected |
Attempt to fuse a non-local track with a local track.
| aSimTime | The current simulation time. |
| aNonLocalTrack | The non-local (raw) track to use for fusion with local tracks. |
| aCorrelatedTrack | The local track with which the non-local track was correlated. |
References WsfObject::GetName(), GetPlatform(), WsfTrack::GetTrackId(), WsfTrack::IsCandidate(), WsfTrack::IsStale(), NotifyOfCandidateTrackPromoted(), NotifyOfLocalTrackUpdated(), WsfTrack::SetIsCandidate(), and WsfTrack::SetStale().
Referenced by AddTrackReport().
|
inlineoverridevirtual |
Forces a specific initialization order. Components are initialized in increasing initialization order value.
Reimplemented from WsfComponent.
References cWSF_INITIALIZE_ORDER_TRACK_MANAGER.
|
inline |
Return the correlation strategy used by this track manager.
Referenced by WsfMTT_Correlation::CorrelateImpl(), WsfXIO_PlatformInfoService::SendTrackManagerState(), and WsfMTT_Fusion::UpdateLocalTrackFromNonLocalTrack().
|
inline |
| const WsfTrack * WsfTrackManager::GetCurrentTarget | ( | ) |
Retrieve the current target track.
References FindTrack(), and trackPtr.
Referenced by WsfGuidanceComputer::ComputeInterceptData(), WsfWeapon::CueToTarget(), WsfExplicitWeapon::FireP(), WsfWeaponTrackProcessor::GetInterceptData(), WsfL16::Interface_J11::InFlightTargetUpdate(), WsfGuidanceComputer::Initialize2(), WsfGuidedMoverBase::Initialize2(), WsfTBM_Mover::Initialize2(), WsfWeaponFuse::Initialize2(), WsfWeaponTrackProcessor::Initialize2(), WsfGuidedMover::InitiateMotion(), WsfParabolicMover::InitShot(), WsfWeaponFuse::PrivateDetonate(), WsfL16::Interface_J11::SendBombHitIndicationReport(), WsfRIPRProcessor::StartUplinking(), WsfRIPRProcessor::StartUplinking(), WsfUplinkProcessor::StartUplinking(), WsfUplinkProcessor::StopUplinking(), WsfStraightLineMover::Update(), WsfP6DOF_GuidanceComputer::UpdateGuidance(), WsfWeaponEngagement::UpdateIntendedTarget(), wsf::six_dof::GuidanceComputer::UpdateTargetPerception(), WsfGuidanceComputer::UpdateTargetPerception(), WsfP6DOF_GuidanceComputer::UpdateTargetPerception(), WsfWeaponFuse::UpdateTargetState(), and WsfWeaponTrackProcessor::UpdateTargetTrack().
|
inline |
Get the track ID for the current target of interest.
Referenced by WsfWeaponEngagement::UpdateIntendedTarget().
|
inline |
Return the filtered sensor track list.
Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks().
|
inline |
Return the filtered sensor track list (const version).
|
inline |
Return the fusion strategy used by this track manager.
Referenced by WsfXIO_PlatformInfoService::SendTrackManagerState(), and WsfFusionStrategy::UpdateNonKinematicData().
|
inline |
|
inline |
Return the sensor local track list.
Referenced by WsfSA_Processor::PlatformInTrackListMWS(), and WsfSA_Processor::UpdateTrackData().
|
inline |
Return the platform with which this track manager is associated.
Referenced by AddRawTrackReport(), AddTrackReport(), WsfMTT_Correlation::CorrelateImpl(), WsfMTT_Correlation::DecorrelateNonlocalTrack(), FindCorrelatedTrack(), FuseTrack(), WsfClusterCorrelation::Initialize(), Initialize2(), InitiateTrackP(), NotifyOfLocalTrackCorrelation(), NotifyOfLocalTrackDecorrelation(), NotifyOfLocalTrackDropped(), NotifyOfLocalTrackInitiated(), NotifyOfLocalTrackUpdated(), PurgeInactiveTracks(), RemoveTrack(), and WsfMTT_Fusion::UpdateLocalTrackFromNonLocalTrack().
|
inlineprotected |
| WsfTrack * WsfTrackManager::GetRawTrack | ( | const WsfLocalTrack * | aLocalTrackPtr, |
| unsigned int | aRawTrackEntry ) |
Get the raw track corresponding with the given local track entry.
| aLocalTrackPtr | The local track to use as the basis of the raw track search. |
| aRawTrackEntry | The entry containing the track id to search on. |
References WsfLocalTrack::GetRawTrackIds(), and trackPtr.
Referenced by WsfDefaultFusion::ReviewIFF(), and WsfDefaultFusion::ReviewTrackQuality().
|
inline |
Get the number of tracks in the raw track list. This method, along with GetRawTrackEntry() can be used to iterate through the track list.
|
inline |
Get a raw track from the raw track list by its entry index (offset) into the list. This version returns a pointer to a track so the track can be modified.
| aEntryIndex | Index of the desired entry. The index must be in the range 0 <= aEntryIndex < GetTrackCount() |
|
inline |
Return the sensor raw track list.
Referenced by WsfPlatform::GetMasterRawTrackList(), WsfBatchTrackReporting::ReportRawTracks(), and UT_DEFINE_SCRIPT_METHOD().
|
inlineprotected |
| WsfSimulation * WsfTrackManager::GetSimulation | ( | ) | const |
Referenced by AddMeasurement(), AddRawTrackReport(), AddTrack(), WsfClusterCorrelation::Initialize(), WsfMTT_Correlation::Initialize(), WsfMTT_Fusion::Initialize(), Initialize2(), InitiateTrackP(), NotifyOfLocalTrackCorrelation(), NotifyOfLocalTrackDecorrelation(), NotifyOfLocalTrackDropped(), NotifyOfLocalTrackInitiated(), NotifyOfLocalTrackUpdated(), RemoveTrack(), SetCorrelationStrategy(), SetFusionStrategy(), and MTT::SetTrackManager().
|
inline |
Get the number of tracks in the track list. This method, along with GetTrackEntry() can be used to iterate through the track list.
Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks(), WsfFusionCenter::PrintFuserState(), PurgeInactiveRawTracks(), PurgeInactiveTracks(), PurgeLocalTrackHistory(), WsfBatchTrackReporting::ReportFusedTracks(), and WsfUplinkProcessor::StartUplinking().
|
inline |
Get a track from the track list by its entry index (offset) into the list. This version returns a pointer to a track so the track can be modified.
| aEntryIndex | Index of the desired entry. The index must be in the range 0 <= aEntryIndex < GetTrackCount(). |
Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks(), WsfBatchTrackReporting::ReportFusedTracks(), and WsfUplinkProcessor::StartUplinking().
|
inline |
Return the aggregated local track list.
Referenced by WsfNearestNeighborCorrelation::CorrelateImpl(), WsfPlatform::GetMasterTrackList(), WsfSA_Assess::GetPerceivedTrackedPlatformWithTarget(), WsfXIO_TaskService::HandleCommand(), WsfP6DOF_Mover::Update(), WsfSA_Perceive::UpdatePerceivedItemsCalculation(), and UT_DEFINE_SCRIPT_METHOD().
|
inline |
|
overridevirtual |
Initialize the object.
| aSimTime | The current simulation time. |
Reimplemented from WsfComponent.
References success.
Referenced by Initialize().
|
virtual |
Non-master track manager initialization. Some objects create their own private track managers rather that use the one on the platform. This form is used in those cases.
| aSimTime | The current simulation time. |
| aPlatformPtr | The platform which owns the object creating this track manager. |
References Initialize(), Initialize2(), and WsfComponentT< WsfPlatform >::SetComponentParent().
|
overridevirtual |
Phase 2 Initialization. This is called by WsfPlatform::Initialize() after phase 1 initialization has been performed for all platform components. The functions in this method must be performed in phase 2 because they require knowledge of the platform location, which is not known until after phase 1.
| aSimTime | The current simulation time. |
Reimplemented from WsfComponent.
References AddTrack(), AddTrackReport(), WsfObject::GetName(), GetPlatform(), GetSimulation(), WsfTrack::GetTrackId(), success, and trackPtr.
Referenced by Initialize().
|
inline |
Deprecated; use InitiateTrackSilent instead.
References InitiateTrackSilent().
Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks().
|
virtual |
Create a new local track based on the given non-local, 'raw' track, then inform local and global observers of this new track's creation. Add a track as a correlated entry in the track list.
| aSimTime | The current simulation time. |
| aNonLocalTrack | The input raw track to add to the local track list. |
References WsfTrack::GetTrackId(), InitiateTrackP(), and NotifyOfLocalTrackInitiated().
Referenced by AddTrackReport().
|
protected |
protected Create a new local track based on the given non-local, 'raw' track. Add a track as a correlated entry in the track list.
| aSimTime | The current simulation time. |
| aNonLocalTrack | The input raw track to add to the local track list. |
References WsfTrack::cPROCESSED, WsfObject::GetName(), WsfTrackId::GetOwningPlatformId(), GetPlatform(), GetSimulation(), WsfTrack::GetTrackId(), WsfTrack::GetUpdateTime(), and UpdateAuxData().
Referenced by InitiateTrack(), and InitiateTrackSilent().
| WsfLocalTrack * WsfTrackManager::InitiateTrackSilent | ( | double | aSimTime, |
| const WsfTrack & | aNonLocalTrack ) |
Initiate a track and perform local track correlation, but do not inform any observers.
| aSimTime | The current simulation time. |
| aNonLocalTrack | The track whose data are used to initiate the local track. |
References WsfTrack::GetTrackId(), InitiateTrackP(), and trackPtr.
Referenced by WsfMTT_Correlation::CorrelateImpl(), and InitiateAndCorrelateTrack().
|
inline |
Accessor to determine if local tracks are initiated (true by default).
|
virtual |
Lock a track to prevent it from being purged by the track manager.
| aSimTime | The current simulation time. |
| aLocalTrackId | The track ID of the local track to be locked. |
References FindTrack(), LockTrack(), and trackPtr.
Referenced by LockTrack().
|
virtual |
Lock a track to prevent it from being purged by the track manager. Use this form if you already have a pointer to the local track to be locked. It is faster because it doesn't have to locate the track in the track list.
| aSimTime | The current simulation time. |
| aLocalTrackPtr | The local track to be locked. |
References WsfLocalTrack::GetTrackManager(), and WsfLocalTrack::IncrementUseCount().
| void WsfTrackManager::NotifyOfCandidateTrackPromoted | ( | double | aSimTime, |
| const WsfLocalTrack * | aLocalTrackPtr ) |
References CandidateTrackPromoted.
Referenced by AddMeasurement(), and FuseTrack().
| void WsfTrackManager::NotifyOfCurrentTargetChanged | ( | double | aSimTime, |
| const WsfLocalTrack * | aRawTrackPtr ) |
References CurrentTargetChanged.
Referenced by SetCurrentTarget().
| void WsfTrackManager::NotifyOfLocalTrackCorrelation | ( | double | aSimTime, |
| const WsfLocalTrack * | aTrackPtr, | ||
| const WsfTrackId & | aRawTrackId ) |
| void WsfTrackManager::NotifyOfLocalTrackDecorrelation | ( | double | aSimTime, |
| const WsfLocalTrack * | aLocalTrackPtr, | ||
| const WsfTrackId & | aRawTrackId ) |
| void WsfTrackManager::NotifyOfLocalTrackDropped | ( | double | aLocalSimTime, |
| const WsfLocalTrack * | aTrackPtr ) |
References GetPlatform(), GetSimulation(), WsfObserver::LocalTrackDropped(), and LocalTrackDropped.
Referenced by PurgeInactiveTracks(), RemoveTrack(), and UnlockTrack().
| void WsfTrackManager::NotifyOfLocalTrackInitiated | ( | double | aSimTime, |
| const WsfLocalTrack * | aLocalTrackPtr, | ||
| const WsfTrack * | aRawTrackPtr ) |
| void WsfTrackManager::NotifyOfLocalTrackUpdated | ( | double | aSimTime, |
| const WsfLocalTrack * | aLocalTrackPtr, | ||
| const WsfTrack * | aRawTrackPtr ) |
References GetPlatform(), GetSimulation(), WsfObserver::LocalTrackUpdated(), and LocalTrackUpdated.
Referenced by AddTrackReport(), and FuseTrack().
| void WsfTrackManager::NotifyOfRawTrackDropped | ( | double | aSimTime, |
| const WsfTrack * | aTrack ) |
References RawTrackDropped.
| void WsfTrackManager::NotifyOfRawTrackReceived | ( | double | aSimTime, |
| const WsfTrack * | aRawTrackPtr ) |
References RawTrackReceived.
Referenced by AddTrackReport().
| void WsfTrackManager::NotifyOfTrackManagerChanged | ( | double | aSimTime, |
| WsfTrackManager * | aNewManagerPtr ) |
References TrackManagerChanged, and WsfTrackManager().
|
overridevirtual |
Process input from a generic source. Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.
| aInput | a reference to a UtInput object. |
Reimplemented from WsfComponent.
References AddInitialTrack(), WsfCorrelationStrategyTypes::Create(), WsfFusionStrategyTypes::Create(), WsfCorrelationStrategyTypes::Get(), WsfFilterTypes::Get(), WsfFusionStrategyTypes::Get(), WsfTrack::LoadTrackInstance(), and trackPtr.
|
virtual |
Purge inactive raw tracks. This method purges inactive raw tracks. A raw track is declared inactive after when it hasn't been updated within the time interval prescribed by the parameter 'aInactivityTimeLimit'.
| aSimTime | The current simulation time. |
| aInactivityTimeLimit | The maximum amount of time that a track may go without having a track update before it is declared inactive. |
| aStaticInactivityTimeLimit | The maximum amount of time that a static track will be retained. (i.e.: a track that is initially created, but then will probably never receive an update - e.g.: a spot SAR image). |
References WsfTrack::cSTATIC_IMAGE, DropTrack(), GetTrackCount(), and trackPtr.
|
virtual |
Purge inactive tracks. This method purges inactive local tracks. A track is declared inactive after when it hasn't been updated within the time interval prescribed by the parameter 'aInactivityTimeLimit'.
| aSimTime | The current simulation time. |
| aInactivityTimeLimit | The maximum amount of time that a track may go without having a track update before it is declared inactive. |
References WsfObject::GetName(), GetPlatform(), GetTrackCount(), NotifyOfLocalTrackDropped(), and trackPtr.
|
virtual |
References WsfTrack::GetHistory(), GetTrackCount(), and WsfTrack::HasHistory().
|
inlineoverridevirtual |
Requests a component's role interface. A component can support one or more roles.
| aRole | The role whose interface is to be returned. |
Implements WsfComponent.
References WsfSimpleComponentT< WsfPlatformComponent >::mRoles.
| std::unique_ptr< WsfLocalTrack > WsfTrackManager::RemoveTrack | ( | const WsfTrackId & | aTrackId | ) |
Remove the indicated track from the track list but don't delete the track object itself. Caller assumes ownership of track object.
| aTrackId | The track ID of the local track to be removed. |
References WsfObject::GetName(), GetPlatform(), GetSimulation(), and NotifyOfLocalTrackDropped().
| void WsfTrackManager::SetCorrelationStrategy | ( | WsfStringId | aTypeName | ) |
Sets the correlation strategy used by this track manager.
References WsfObserver::CorrelationStrategyChanged(), WsfCorrelationStrategyTypes::Get(), WsfSimulation::GetSimTime(), and GetSimulation().
| WsfTrackId WsfTrackManager::SetCurrentTarget | ( | double | aSimTime, |
| const WsfTrack & | aTrack ) |
Set the current target to the indicated track.
| aSimTime | The current simulation time. |
| aTrack | The track indicating the current target. |
References AddInitialTrack(), AddTrackReport(), FindCorrelatedTrack(), FindTrack(), WsfTrack::GetTrackId(), NotifyOfCurrentTargetChanged(), and trackPtr.
Referenced by WsfPerfectTracker::EstablishNewTrack(), WsfCuedLaserWeapon::Fire(), WsfExplicitWeapon::FireP(), WsfWeaponServer::ProcessCommand(), WsfWeaponTrackProcessor::SetCurrentTarget(), and WsfPerfectTracker::UpdateExistingTrack().
|
inline |
Set whether this instance will print diagnostic message to standard output.
|
inline |
Indicate if local tracks should be dropped if they become uncorrelated.
| aDropUncorrelatedTracks | If 'true' then local tracks will be dropped if they become uncorrelated. If 'false' then they will not be dropped when they become uncorrelated and must be dropped by some other mechanism (such as periodically calling PurgeInactiveTracks()). |
| void WsfTrackManager::SetFusionStrategy | ( | WsfStringId | aTypeName | ) |
Sets the fusion strategy used by this track manager.
References WsfObserver::FusionStrategyChanged(), WsfFusionStrategyTypes::Get(), WsfSimulation::GetSimTime(), and GetSimulation().
|
inline |
Set whether the tracker should initiate local tracks from a raw track, if no correlation is made by the correlation strategy (default is to initiate local tracks).
Referenced by WsfMTT_Correlation::Initialize().
|
inline |
Indicate that some external process will be performing period purging of inactive tracks. This is simply a hint
|
virtual |
Start a frame for a frame based scan. This method only needs to be called in conjunction with frame-based fusion strategies.
|
virtual |
Unlock a track that was previously locked.
| aSimTime | The current simulation time. |
| aLocalTrackId | The track ID of the local track to be unlocked. |
References FindTrack(), trackPtr, and UnlockTrack().
Referenced by UnlockTrack().
|
virtual |
Unlock a track that was previously locked. Use this form if you already have a pointer to the local track to be unlocked. It is faster because it doesn't have to locate the track in the track list.
| aSimTime | The current simulation time. |
| aLocalTrackPtr | The local track to be unlocked. |
References WsfLocalTrack::DecrementUseCount(), WsfTrack::GetTrackId(), WsfLocalTrack::GetTrackManager(), WsfLocalTrack::GetUseCount(), WsfLocalTrack::IsCorrelated(), WsfTrack::IsFusible(), and NotifyOfLocalTrackDropped().
| bool WsfTrackManager::UpdateAuxData | ( | double | aSimTime, |
| WsfLocalTrack & | aLocalTrack, | ||
| const WsfTrack & | aNonLocalTrack ) |
Update aux_data in the local track with aux_data from the non-local track.
This is called from WsfDefaultFusion::UpdateNonKinematic data to update the aux_data in the local track with aux_data from the non-local track. It is done within the context of the track manager because it has access to the optional input data that is used to guide the process.
| aSimTime | The current simulation time. |
| aLocalTrack | The local track to be updated. |
| aNonLocalTrack | The non-local track that is providing the update. |
References WsfAuxDataEnabled::GetAuxData(), WsfAuxDataEnabled::GetAuxDataConst(), and WsfAuxDataEnabled::HasAuxData().
Referenced by AddTrackReport(), InitiateTrackP(), WsfDefaultFusion::PerformMirrorTrackUpdate(), WsfDefaultFusion::UpdateAuxData(), and WsfOrbitDeterminationFusion::UpdateLocalTrackFromNonLocalTrack().
|
inline |
Will some external process perform period purging of inactive tracks.
| UtCallbackListN<void(double, const WsfLocalTrack*)> WsfTrackManager::CandidateTrackPromoted |
Referenced by NotifyOfCandidateTrackPromoted(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfLocalTrack*)> WsfTrackManager::CurrentTargetChanged |
Referenced by NotifyOfCurrentTargetChanged(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrackId&)> WsfTrackManager::LocalTrackCorrelation |
| UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrackId&)> WsfTrackManager::LocalTrackDecorrelation |
Referenced by WsfMTT_Correlation::Initialize(), NotifyOfLocalTrackDecorrelation(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfLocalTrack*)> WsfTrackManager::LocalTrackDropped |
Referenced by WsfMTT_Correlation::Initialize(), NotifyOfLocalTrackDropped(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrack*)> WsfTrackManager::LocalTrackInitiated |
Referenced by WsfUplinkProcessor::Initialize(), NotifyOfLocalTrackInitiated(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrack*)> WsfTrackManager::LocalTrackUpdated |
Referenced by WsfUplinkProcessor::Initialize(), NotifyOfLocalTrackUpdated(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfTrack*)> WsfTrackManager::RawTrackDropped |
Referenced by WsfMTT_Correlation::Initialize(), NotifyOfRawTrackDropped(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, const WsfTrack*)> WsfTrackManager::RawTrackReceived |
Referenced by WsfUplinkProcessor::Initialize(), NotifyOfRawTrackReceived(), WsfTrackManager(), and WsfTrackManager().
| UtCallbackListN<void(double, WsfTrackManager*)> WsfTrackManager::TrackManagerChanged |
Referenced by NotifyOfTrackManagerChanged(), WsfTrackManager(), and WsfTrackManager().