WSF
WsfFusionStrategy.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFFUSIONSTRATEGY_HPP
13#define WSFFUSIONSTRATEGY_HPP
14
15#include "wsf_export.h"
16
17#include <string>
18
19class UtInput;
20#include "UtMatrix.hpp"
21#include "WsfException.hpp"
23class WsfLocalTrack;
24#include "WsfObject.hpp"
25#include "WsfObjectTypeList.hpp"
26class WsfProcessor;
27class WsfSensorResult;
28class WsfSimulation;
29#include "WsfStringId.hpp"
30class WsfTrack;
31class WsfTrackManager;
32#include "WsfTypes.hpp"
33
52{
53public:
54 ~WsfFusionStrategy() override = default;
55
57 WsfFusionStrategy* Clone() const override = 0; // pure virtual
58
60 bool ProcessInput(UtInput& aInput) override { return false; }
61
63 virtual bool Initialize(WsfTrackManager* aTrackManagerPtr)
64 {
65 mTrackManagerPtr = aTrackManagerPtr;
66 return true;
67 };
68
70 virtual bool Initialize(WsfProcessor* aProcessorPtr)
71 {
72 mProcessorPtr = aProcessorPtr;
73 return true;
74 };
75
77 virtual bool DebugEnabled() const;
78
82 virtual bool UpdateLocalTrackFromNonLocalTrack(double aSimTime,
83 WsfLocalTrack& aLocalTrack,
84 const WsfTrack& aNonLocalTrack) = 0;
85
89 virtual bool UpdateLocalResultFromNonLocalResult(double aSimTime,
90 WsfLocalSensorResult& aLocalResult,
91 const WsfSensorResult& aNonLocalResult) = 0;
92
95 virtual bool InitializeLocalTrackFromNonLocalTrack(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
96 {
97 return false;
98 };
99
103 virtual bool InitializeLocalResultFromNonLocalResult(double aSimTime,
104 WsfLocalSensorResult& aLocalResult,
105 const WsfSensorResult& aNonLocalResult)
106 {
107 return false;
108 };
109
113 virtual void ReviewTrack(WsfLocalTrack& aLocalTrack) = 0;
114
115 virtual bool UpdateNonKinematicData(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack);
116
117 static bool UpdateNonKinematicData(double aSimTime,
118 WsfTrackManager& aTracManager,
119 WsfLocalTrack& aLocalTrack,
120 const WsfTrack& aNonLocalTrack);
121
123
125 double GetSimTime();
126 WsfPlatform* GetPlatform() const;
127
129 WsfTrackManager& GetTrackManager() { return *mTrackManagerPtr; }
130 const WsfTrackManager& GetTrackManager() const { return *mTrackManagerPtr; }
131
133 WsfProcessor& GetProcessor() { return *mProcessorPtr; }
134
135protected:
139
141 void SetTrackManager(WsfTrackManager& aTrackManager) { mTrackManagerPtr = &aTrackManager; }
142
144 void SetProcessor(WsfProcessor& aProcessor) { mProcessorPtr = &aProcessor; }
145
146 virtual bool UpdateIFF_Status(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
147 {
148 return false;
149 }
150
151 virtual bool UpdateSide(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
152 {
153 return false;
154 }
155
156 virtual bool UpdateType(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
157 {
158 return false;
159 }
160
161 virtual bool UpdateSpatialDomain(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
162 {
163 return false;
164 }
165
166 virtual bool UpdateTrackQuality(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
167 {
168 return false;
169 }
170
171 virtual bool UpdateSignalToNoise(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
172 {
173 return false;
174 }
175
176 virtual bool UpdateSignalList(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
177 {
178 return false;
179 }
180
181 virtual bool UpdateAuxData(double aSimTime, WsfLocalTrack& aLocalTrack, const WsfTrack& aNonLocalTrack)
182 {
183 return false;
184 }
185
186 // Some fusion-specific utilities that derived classes may use:
187 static void FuseEstimates(const UtMatrixd& aEstimate1,
188 const UtMatrixd& aEstimate2,
189 const UtMatrixd& aCovar1,
190 const UtMatrixd& aCovar2,
191 UtMatrixd& aEstimateOut,
192 UtMatrixd& aCovarOut);
193
194 static void NormalizeAzRangeEstimate(const UtMatrixd& aEstimate,
195 const UtMatrixd& aCovar,
196 const double& aElevation,
197 UtMatrixd& aNormEstimate,
198 UtMatrixd& aNormCovar);
199
200 static void NormalizeElRangeEstimate(const UtMatrixd& aEstimate,
201 const UtMatrixd& aCovar,
202 const double& aAzimuth,
203 UtMatrixd& aNormEstimate,
204 UtMatrixd& aNormCovar);
205
206private:
207 static FusionStrategyTypes* mTypesPtr;
208
209 WsfTrackManager* mTrackManagerPtr;
210 WsfProcessor* mProcessorPtr;
211};
212
213#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfFusionStrategy.hpp:52
virtual bool UpdateSignalList(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:176
virtual bool UpdateTrackQuality(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:166
virtual void ReviewTrack(WsfLocalTrack &aLocalTrack)=0
bool ProcessInput(UtInput &aInput) override
Process input from a common source.
Definition WsfFusionStrategy.hpp:60
const WsfTrackManager & GetTrackManager() const
Definition WsfFusionStrategy.hpp:130
void SetTrackManager(WsfTrackManager &aTrackManager)
Set the track manager reference.
Definition WsfFusionStrategy.hpp:141
WsfFusionStrategy & operator=(const WsfFusionStrategy &)=delete
virtual bool InitializeLocalResultFromNonLocalResult(double aSimTime, WsfLocalSensorResult &aLocalResult, const WsfSensorResult &aNonLocalResult)
Definition WsfFusionStrategy.hpp:103
virtual bool UpdateLocalResultFromNonLocalResult(double aSimTime, WsfLocalSensorResult &aLocalResult, const WsfSensorResult &aNonLocalResult)=0
virtual bool UpdateType(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:156
WsfFusionStrategy * Clone() const override=0
Create a clone of "this" object.
WsfSimulation * GetSimulation() const
Definition WsfFusionStrategy.cpp:69
WsfTrackManager & GetTrackManager()
Return a reference to the track manager being accessed internally by this object.
Definition WsfFusionStrategy.hpp:129
WsfFusionStrategy()
Definition WsfFusionStrategy.cpp:111
WsfPlatform * GetPlatform() const
Definition WsfFusionStrategy.cpp:97
virtual bool UpdateLocalTrackFromNonLocalTrack(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)=0
virtual bool UpdateSignalToNoise(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:171
virtual bool Initialize(WsfTrackManager *aTrackManagerPtr)
Perform any necessary initialization.
Definition WsfFusionStrategy.hpp:63
~WsfFusionStrategy() override=default
virtual bool UpdateAuxData(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:181
void SetProcessor(WsfProcessor &aProcessor)
Set the processor reference.
Definition WsfFusionStrategy.hpp:144
virtual bool UpdateSpatialDomain(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:161
double GetSimTime()
Definition WsfFusionStrategy.cpp:83
virtual bool UpdateSide(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:151
virtual bool InitializeLocalTrackFromNonLocalTrack(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:95
WsfObjectTypeList< WsfFusionStrategy > FusionStrategyTypes
Definition WsfFusionStrategy.hpp:122
virtual bool UpdateNonKinematicData(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.cpp:54
virtual bool UpdateIFF_Status(double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
Definition WsfFusionStrategy.hpp:146
WsfProcessor & GetProcessor()
Return a reference to the processor being accessed internally by this object.
Definition WsfFusionStrategy.hpp:133
virtual bool Initialize(WsfProcessor *aProcessorPtr)
Perform any necessary initialization.
Definition WsfFusionStrategy.hpp:70
Definition WsfSensorResult.hpp:129
Definition WsfLocalTrack.hpp:32
Definition WsfObjectTypeList.hpp:42
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Definition WsfProcessor.hpp:39
Definition WsfSensorResult.hpp:27
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfTrackManager.hpp:62
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Copyrights Multiple, All Rights Reserved