WSF
WsfEOIR_Sensor.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 WSFEOIR_SENSOR_HPP
13#define WSFEOIR_SENSOR_HPP
14
15#include "wsf_mil_export.h"
16
18#include "WsfSensor.hpp"
21
28class WSF_MIL_EXPORT WsfEOIR_Sensor : public WsfSensor
29{
30public:
31 explicit WsfEOIR_Sensor(WsfScenario& aScenario);
32 WsfEOIR_Sensor(const WsfEOIR_Sensor& aSrc);
33 ~WsfEOIR_Sensor() override;
35
36 WsfSensor* Clone() const override;
37 bool Initialize(double aSimTime) override;
38 void PlatformAdded(double aSimTime, WsfPlatform* aPlatformPtr) override;
39 void PlatformDeleted(WsfPlatform* aPlatformPtr) override;
40 bool ProcessInput(UtInput& aInput) override;
41 void TurnOff(double aSimTime) override;
42 void TurnOn(double aSimTime) override;
43 void Update(double aSimTime) override;
44
45 size_t GetEM_RcvrCount() const override;
46 WsfEM_Rcvr& GetEM_Rcvr(size_t aIndex) const override;
47
49 class WSF_MIL_EXPORT EOIR_ErrorModel : public wsf::StandardSensorErrorModel
50 {
51 public:
52 EOIR_ErrorModel* Clone() const { return new EOIR_ErrorModel(*this); }
53
54 void ApplyMeasurementErrors(const wsf::SphericalMeasurementErrors& aErrors, WsfSensorResult& aResult) override;
55 };
56
57protected:
60 {
61 public:
62 explicit EOIR_Chance(WsfPlatform* aTargetPtr);
63 EOIR_Chance() = default;
66
68 size_t mModeIndex{0};
69 double mLocationWCS[3]{0.0, 0.0, 0.0};
70 size_t mTargetIndex{0};
71 bool mVisibleInImage{true};
72 bool mNowDetecting{false};
73 };
74
77 {
78 public:
79 explicit EOIR_Mode(WsfScenario& aScenario);
80 EOIR_Mode(const EOIR_Mode& aSrc) = default;
81 EOIR_Mode& operator=(const EOIR_Mode&) = delete;
82 ~EOIR_Mode() override = default;
83
84 WsfMode* Clone() const override;
85 bool Initialize(double aSimTime) override;
86 bool ProcessInput(UtInput& aInput) override;
87
88 bool AttemptToDetect(double aSimTime, WsfPlatform* aTargetPtr, Settings& aSettings, Result& aResult) override;
89
90 void Deselect(double aSimTime) override;
91 void Select(double aSimTime) override;
92
97 };
98
100
102 {
103 public:
105 ~EOIR_SensorScheduler() override = default;
106
107 bool SelectTarget(double aSimTime,
108 double& aNextSimTime,
109 size_t& aTargetIndex,
110 WsfTrackId& aRequestId,
111 WsfSensor::Settings& aSettings) override;
112
113 WsfSensorScheduler* Clone() const override;
114
115 private:
116 size_t mTargetNumber;
117 };
118
119 void NotifyObservers(double aSimTime, EOIR_Mode* aModePtr, EOIR_Chance* aChancePtr, WsfSensorResult& aResult);
120
121 void ProcessSensorDetectionChanged(double aSimTime, const EOIR_Chance& aChance, unsigned int aStatus);
122
124 std::vector<EOIR_Mode*> mEOIR_ModeList;
125
127 using Chances = std::unordered_map<size_t, EOIR_Chance>;
129
131 unsigned int mStreamNumber;
132
135 unsigned int mFrameNumber;
136
139};
140
141#endif
Definition WsfEM_Rcvr.hpp:68
WsfSensorResult Result
Definition WsfEOIR_IRST_SensorMode.hpp:37
WsfEOIR_IRST_SensorMode(WsfScenario &aScenario)
Definition WsfEOIR_IRST_SensorMode.cpp:36
WsfSensor::Settings Settings
Definition WsfEOIR_IRST_SensorMode.hpp:38
A detection opportunity for a specific platform.
Definition WsfEOIR_Sensor.hpp:60
double mLocationWCS[3]
Definition WsfEOIR_Sensor.hpp:69
size_t mTargetIndex
Definition WsfEOIR_Sensor.hpp:70
EOIR_Chance(WsfPlatform *aTargetPtr)
Definition WsfEOIR_Sensor.cpp:498
EOIR_Chance & operator=(const EOIR_Chance &)=delete
WsfTrack * mTrackPtr
Definition WsfEOIR_Sensor.hpp:67
bool mNowDetecting
Used in NotifyObservers.
Definition WsfEOIR_Sensor.hpp:72
size_t mModeIndex
Definition WsfEOIR_Sensor.hpp:68
bool mVisibleInImage
Definition WsfEOIR_Sensor.hpp:71
EOIR sensor Error model.
Definition WsfEOIR_Sensor.hpp:50
EOIR_ErrorModel * Clone() const
Create a clone of "this" object.
Definition WsfEOIR_Sensor.hpp:52
A 'mode' of the sensor.
Definition WsfEOIR_Sensor.hpp:77
bool ProcessInput(UtInput &aInput) override
Definition WsfEOIR_Sensor.cpp:563
EOIR_Mode & operator=(const EOIR_Mode &)=delete
void Select(double aSimTime) override
Definition WsfEOIR_Sensor.cpp:660
double mAngularResolution
Definition WsfEOIR_Sensor.hpp:95
int mPixelCountWidth
Definition WsfEOIR_Sensor.hpp:93
double mOmegaResolution
radians
Definition WsfEOIR_Sensor.hpp:96
bool Initialize(double aSimTime) override
Definition WsfEOIR_Sensor.cpp:539
void Deselect(double aSimTime) override
Definition WsfEOIR_Sensor.cpp:653
int mPixelCountHeight
Definition WsfEOIR_Sensor.hpp:94
WsfMode * Clone() const override
Create an exact duplicate of this mode.
Definition WsfEOIR_Sensor.cpp:532
bool AttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, Result &aResult) override
Definition WsfEOIR_Sensor.cpp:592
EOIR_Mode(const EOIR_Mode &aSrc)=default
EOIR_Mode(WsfScenario &aScenario)
Definition WsfEOIR_Sensor.cpp:519
~EOIR_Mode() override=default
WsfSensorScheduler * Clone() const override
Definition WsfEOIR_Sensor.cpp:707
~EOIR_SensorScheduler() override=default
bool SelectTarget(double aSimTime, double &aNextSimTime, size_t &aTargetIndex, WsfTrackId &aRequestId, WsfSensor::Settings &aSettings) override
Definition WsfEOIR_Sensor.cpp:674
EOIR_SensorScheduler()
Definition WsfEOIR_Sensor.cpp:667
void NotifyObservers(double aSimTime, EOIR_Mode *aModePtr, EOIR_Chance *aChancePtr, WsfSensorResult &aResult)
Definition WsfEOIR_Sensor.cpp:422
std::vector< EOIR_Mode * > mEOIR_ModeList
The sensor-specific list of modes (not valid until Initialize is called).
Definition WsfEOIR_Sensor.hpp:124
Chances mChances
Definition WsfEOIR_Sensor.hpp:128
unsigned int mFrameNumber
Definition WsfEOIR_Sensor.hpp:135
unsigned int mStreamNumber
The stream number is incremented each time the sensor is turned on.
Definition WsfEOIR_Sensor.hpp:131
void ProcessSensorDetectionChanged(double aSimTime, const EOIR_Chance &aChance, unsigned int aStatus)
Definition WsfEOIR_Sensor.cpp:482
std::unordered_map< size_t, EOIR_Chance > Chances
The list of platforms that are eligible for detection attempts.
Definition WsfEOIR_Sensor.hpp:127
WsfEOIR_Sensor(WsfScenario &aScenario)
Definition WsfEOIR_Sensor.cpp:36
WsfEOIR_Sensor & operator=(const WsfEOIR_Sensor &)=delete
void ClearSensingChances()
Clear the sensing chance list.
Definition WsfEOIR_Sensor.cpp:410
bool mCallSensorTrackObservers
true if SensorTrack<XXX> observers should be called
Definition WsfEOIR_Sensor.hpp:138
WsfMode()
Definition WsfMode.cpp:15
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfSensorResult.hpp:27
WsfSensorScheduler()
Definition WsfSensorScheduler.cpp:26
Definition WsfSensor.hpp:133
bool ProcessInput(UtInput &aInput) override
Definition WsfSensor.cpp:380
void Update(double aSimTime) override
Definition WsfSensor.cpp:497
virtual WsfEM_Rcvr & GetEM_Rcvr(size_t aIndex) const
Definition WsfSensor.cpp:660
WsfSensor(const WsfScenario &aScenario)
Definition WsfSensor.cpp:52
virtual size_t GetEM_RcvrCount() const
Definition WsfSensor.cpp:646
void PlatformDeleted(WsfPlatform *aPlatformPtr) override
Definition WsfSensor.cpp:355
WsfSensor * Clone() const override=0
bool Initialize(double aSimTime) override
Definition WsfSensor.cpp:255
void TurnOff(double aSimTime) override
Definition WsfSensor.cpp:523
void PlatformAdded(double aSimTime, WsfPlatform *aPlatformPtr) override
Definition WsfSensor.cpp:334
void TurnOn(double aSimTime) override
Definition WsfSensor.cpp:563
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfStandardSensorErrorModel.hpp:47
A standard set of errors associated with single sensor mono-static detections.
Definition WsfStandardSensorErrorModel.hpp:26
Copyrights Multiple, All Rights Reserved