WSF
WsfGuidanceComputer.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// Updated by Infoscitex, a DCS Company
13// ****************************************************************************
14
15#ifndef WSFGUIDANCECOMPUTER_HPP
16#define WSFGUIDANCECOMPUTER_HPP
17
18#include "wsf_mil_export.h"
19
20#include <list>
21#include <vector>
22
23#include "UtAtmosphere.hpp"
24#include "UtCallbackHolder.hpp"
25#include "UtEntity.hpp"
26#include "UtInput.hpp"
27#include "UtLog.hpp"
28class UtScriptClass;
29class UtScriptTypes;
30
31#include "WsfDraw.hpp"
34#include "WsfMoverGuidance.hpp"
35class WsfSensor;
37class WsfTrack;
38
39namespace wsf
40{
41class Terrain;
42}
43
50
51class WSF_MIL_EXPORT WsfGuidanceComputer : public WsfScriptProcessor, public WsfMoverGuidance
52{
53public:
54 friend class WsfGuidanceProgram;
56
57 static const double cUNDEFINED_DOUBLE;
58 static const double cFROM_LAUNCH_COMPUTER;
59 static const double cFLIGHT_PATH_ANGLE_TOLERANCE;
60 static const double cLARGE_POSITIVE_DOUBLE;
61
62 WsfGuidanceComputer(WsfScenario& aScenarioPtr);
63 ~WsfGuidanceComputer() override;
65
67
68 WsfProcessor* Clone() const override;
69 bool Initialize(double aSimTime) override;
70 bool Initialize2(double aSimTime) override;
71 bool ProcessInput(UtInput& aInput) override;
72 void TurnOff(double aSimTime) override;
73 void TurnOn(double aSimTime) override;
74 const char* GetScriptClassName() const override;
76
78
79 void UpdateGuidance(double aSimTime, double aCurTime, double aEndTime) override;
81
83
84 bool SelectPhase(WsfStringId aPhaseName);
85
86 bool ClearCommandedAltitude(WsfStringId aPhaseName);
88 bool ClearCommandedSpeed(WsfStringId aPhaseName);
89 bool ClearCommandedThrottle(WsfStringId aPhaseName);
90 bool SetAllowRouteFollowing(WsfStringId aPhaseName, bool aValue);
91 bool SetAimpointAltitudeOffset(WsfStringId aPhaseName, double aValue);
92 bool SetAimpointAzimuthOffset(WsfStringId aPhaseName, double aValue, const std::string& aDirection);
93 bool SetAimpointRangeOffset(WsfStringId aPhaseName, double aValue);
94 bool SetAimpointEvaluationInterval(WsfStringId aPhaseName, double aValue);
95 bool SetCommandedAltitude(WsfStringId aPhaseName, double aValue, bool aAltIsAGL);
96 bool SetCommandedAzimuthOffset(WsfStringId aPhaseName, double aValue);
97 bool SetCommandedFlightPathAngle(WsfStringId aPhaseName, double aValue);
98 bool SetCommandedMach(WsfStringId aPhaseName, double aValue);
99 bool SetCommandedSpeed(WsfStringId aPhaseName, double aValue);
100 bool SetCommandedThrottle(WsfStringId aPhaseName, double aValue);
101 bool SetGuidanceDelay(WsfStringId aPhaseName, double aValue);
102 bool SetGuidanceTarget(WsfStringId aPhaseName, const std::string& aValue);
103 bool SetProportionalNavigationGain(WsfStringId aPhaseName, double aValue);
104 bool SetProportionalNavigationLimitAngle(WsfStringId aPhaseName, double aValue);
105 bool SetProportionalNavigationMethod(WsfStringId aPhaseName, const std::string& aValue);
106 bool SetVelocityPursuitGain(WsfStringId aPhaseName, double aValue);
107 bool SetGeeBias(WsfStringId aPhaseName, double aValue);
108 virtual bool SetLateralGeeBias(WsfStringId aPhaseName, double aValue);
109 bool SetMaximumCommandedGees(WsfStringId aPhaseName, double aValue);
110 bool SetMaximumPitchAngle(WsfStringId aPhaseName, double aValue);
111 bool SetMaximumAscentRate(WsfStringId aPhaseName, double aValue);
112 bool SetMaximumDescentRate(WsfStringId aPhaseName, double aValue);
113 bool SetPitchChangeGain(WsfStringId aPhaseName, double aValue);
114 virtual bool EjectStage(double aPreSeparationCoastTime, double aPreIgnitionCoastTime);
115 virtual bool StopEngines();
116 bool StartProgram(WsfStringId aProgramName);
117 bool StopProgram(WsfStringId aProgramName);
119
121
122 virtual void RouteChanged(double aSimTime);
123 virtual void StageIgnition(double aSimTime, double aEventTime);
124 virtual void StageBurnout(double aSimTime, double aEventTime);
125 virtual void StageSeparation(double aSimTime, double aEventTime);
127
129
130 virtual void SensorTrackInitiated(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
132
141 class WSF_MIL_EXPORT Variable
142 {
143 public:
144 Variable(double aValue = 0.0)
145 : mValue(aValue)
146 , mScale(1.0)
147 , mVarNameId()
148 {
149 }
150
154 // programmer must be sure to use the 'Update' method prior to accessing any of these method.
156 operator double() const { return mValue; }
157
158 double operator+(double aRhs) const { return mValue + aRhs; }
159
160 double operator-(double aRhs) const { return mValue - aRhs; }
161
162 double operator=(double aRhs)
163 {
164 mValue = aRhs;
165 mScale = 1.0;
166 mVarNameId.Clear();
167 return mValue;
168 }
169
170
171 double Get() const { return mValue; }
172
173 bool HasDefaultValue() const { return false; }
174
176 bool IsReference() const { return !mVarNameId.IsNull(); }
177
178 void ReadValue(UtInput& aInput, WsfScriptContext& aContext);
179
180 void ReadValueOfType(UtInput& aInput, UtInput::ValueType aValueType, WsfScriptContext& aContext);
181
182 void Update(WsfScriptContext& aContext);
183
184 void ValueInClosedRange(UtInput& aInput, double aMinValue, double aMaxValue);
185
186 void ValueGreater(UtInput& aInput, double aMinValue);
187
188 void ValueGreaterOrEqual(UtInput& aInput, double aMinValue);
189
190 void ValueLess(UtInput& aInput, double aMaxValue);
191
192 void ValueLessOrEqual(UtInput& aInput, double aMaxValue);
193
197 double mValue;
198
200 double mScale;
201
205 };
206
214
221
281
283 class WSF_MIL_EXPORT Phase
284 {
285 public:
287 {
288 cPN_PHASE_DEFAULT, // Used only by WsfGuidanceProgram::InterceptProgram
291 };
292
293 Phase();
294
295 void ExecuteOnEntry(double aSimTime, WsfScriptContext& aContext);
296
297 void ExecuteOnExit(double aSimTime, WsfScriptContext& aContext);
298
299 void ExecuteOnUpdate(double aSimTime, WsfScriptContext& aContext);
300
301 bool Initialize(double aSimTime, WsfScriptContext& aContext);
302
303 bool ProcessInput(UtInput& aInput, WsfGuidanceComputer& aComputer, WsfScriptContext& aContext);
304
305 void ProcessNextPhase(UtInput& aInput, WsfScriptContext& aContext);
306
309
310 // =====================================================================================
311 // NOTE: If you add an variables that use 'Variable', make sure you update the Initialize
312 // method to ensure they are added to the dynamic variable list if they contain a
313 // script reference.
314 // =====================================================================================
315
321 // A positive value is commanded speed. A negative value is commanded Mach number.
324
329
334 double mLateralGeeBiasValue; // non-dim, in Gees
340
344
347
348 std::vector<WsfStringId> mPrograms;
349
350 using ProgramAndPhase = std::pair<WsfStringId, WsfStringId>;
351
358 std::vector<ProgramAndPhase> mProgramCompletePhaseName; // for 'next_phase <phase_name> when program <program_name> complete'
359 std::vector<PhaseChange> mPhaseChangeList;
360 };
361
364
365 class WSF_MIL_EXPORT State
366 {
367 public:
369 : mSimTime(0.0)
370 , mCurTime(0.0)
371 , mEndTime(0.0)
372 , mWpnState()
373 , mFlightPathAngle(0.0)
374 , mWpnHeading(0.0)
375 , mTgtState()
376 , mAimpointIsValid(false)
377 , mAimpointIsTarget(false)
378 {
379 UtVec3d::Set(mAimRelLocWCS, 0.0);
380 UtVec3d::Set(mAimUnitVecECS, 0.0);
381 }
382
385 double mSimTime;
387 double mCurTime;
389 double mEndTime;
390
392
393 UtEntity mWpnState;
395 double mWpnHeading;
397
399
400 UtEntity mTgtState;
402
403 double mAimRelLocWCS[3];
404 double mAimUnitVecECS[3];
407 };
408
412 {
413 public:
414 double mAccelCmd[3];
415 double mAngleRateCmd[3];
416 };
417
420 bool ShowStatus() const { return mShowStatus; }
421 bool ShowDiagnostics() const { return mShowDiagnostics; }
422 bool ShowGraphics() const { return mShowGraphics; }
427 double GetTimeConstant(const Phase& aPhase) const;
428 double GetTimeSinceLaunch(double aSimTime) { return aSimTime - mLaunchTime; }
429 double GetTimeSincePhaseStart(double aSimTime) { return aSimTime - mPhaseStartTime; }
430 double GetLastUpdateTime() const { return mLastUpdateTime; }
431
432 void DrawPoint(double aRedValue, double aGreenValue, double aBlueValue, int aPointSize);
433
434 void PrintStatusHeader(double aSimTime, double aCurTime, ut::log::MessageStream& aStream);
436
437protected:
439
440 bool BeginExternalCommand(WsfStringId aPhaseName, unsigned int& aPhaseIndex);
441
442 void BeginExternalCommandEcho(unsigned int aPhaseIndex, const char* aCommandPtr, ut::log::MessageStream& aStream);
443
444 virtual void CheckForPhaseChange(double aSimTime, double aEndTime);
445
446 virtual void CheckForWaypointChange(double aSimTime, double aEndTime);
447
448 double ComputeAzimuth(const double aRelLoc[3]) const;
449
450 double ComputeElevation(const double aRelLoc[3]) const;
451
452 void ComputeInterceptData(double aCurTime, double& aTimeToGo, double& aRangeToGo);
453
454 unsigned int FindPhase(WsfStringId aPhaseName) const;
455
456 WsfGuidanceProgram* FindProgram(WsfStringId aProgramName) const;
457
458 double GetSimTime() const;
459
460 virtual void SelectPhase(double aSimTime, double aChangeTime, WsfStringId aPhaseName);
461
462 virtual void SelectWaypoint(double aSimTime, double aChangeTime, unsigned int aNewIndex);
463
464 void StartProgram(double aSimTime, double aChangeTime, WsfStringId aProgramName);
465
466 void StopProgram(double aSimTime, double aChangeTime, WsfStringId aProgramName);
467
468 virtual bool UpdateAimpoint(double aCurTime, const Phase& aPhase);
469
470 void UpdateRouteFollowing(const Phase& aPhase);
471
472 virtual void UpdateTargetPerception(double aCurTime);
473
474 void UpdateTerrainFollowing(const Phase& aPhase);
475
476 virtual void UpdateWeaponPerception(double aCurTime);
477
478 bool ValidateNextPhaseName(const Phase& aPhase, WsfStringId aNextPhaseName);
479
480 std::vector<Phase> mPhaseList;
485 unsigned int mPhaseIndex;
486
488
490 using ProgramList = std::list<WsfGuidanceProgram*>;
498
501
508
510 UtAtmosphere mAtmosphere;
511 UtCallbackHolder mCallbacks;
513
514 double mLaunchTime; //<! SimTime when the weapon was launched
515 double mLaunchLocWCS[3]; //<! Location of weapon at time of launch
516 double mLastUpdateTime; //<! SimTime when last update was performed
517 double mPhaseStartTime; //<! SimTime when the current phase started
518 double mGuidanceStartTime; //<! SimTime when guidance is to start
519 double mCommandedFlightPathAngle; //<! The commanded flight path angle
520
523
525
526 double mLastFlightPathAngle; //<! The last flight path angle of the weapon
528 double mLastTgtLocWCS[3]; //<! The last location of the target
529 double mLastTgtVelWCS[3]; //<! The last velocity of the target
530
535
537
541
543
544 unsigned int mRouteIndex;
548
551
554 unsigned int mAimpointDrawId;
556
558
561};
562
563#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Provides the capability to draw shapes into the WSF replay file.
Definition WsfDraw.hpp:35
Definition WsfGuidanceComputer.hpp:412
double mAngleRateCmd[3]
The desired rotation rates.
Definition WsfGuidanceComputer.hpp:415
double mAccelCmd[3]
The desired lateral accelerations.
Definition WsfGuidanceComputer.hpp:414
WsfStringId mNextPhaseName
Definition WsfGuidanceComputer.hpp:276
VariableName mName
Definition WsfGuidanceComputer.hpp:277
Condition
Definition WsfGuidanceComputer.hpp:253
@ cGREATER
Definition WsfGuidanceComputer.hpp:259
@ cGREATER_OR_EQUAL
Definition WsfGuidanceComputer.hpp:258
@ cLESS_OR_EQUAL
Definition WsfGuidanceComputer.hpp:255
@ cNOT_EQUAL
Definition WsfGuidanceComputer.hpp:257
@ cLESS
Definition WsfGuidanceComputer.hpp:254
@ cEQUAL
Definition WsfGuidanceComputer.hpp:256
VariableName
Name of the condition variable to be tested.
Definition WsfGuidanceComputer.hpp:228
@ cTARGET_FLIGHT_PATH_ANGLE
Definition WsfGuidanceComputer.hpp:239
@ cTIME_TO_INTERCEPT
Definition WsfGuidanceComputer.hpp:241
@ cLOS_TARGET_ANGLE
Definition WsfGuidanceComputer.hpp:249
@ cFLIGHT_PATH_ANGLE
Definition WsfGuidanceComputer.hpp:234
@ cTARGET_SLANT_RANGE
Definition WsfGuidanceComputer.hpp:243
@ cFLIGHT_TIME
Definition WsfGuidanceComputer.hpp:230
@ cPHASE_TIME
Definition WsfGuidanceComputer.hpp:229
@ cRANGE_TO_INTERCEPT
Definition WsfGuidanceComputer.hpp:242
@ cLOS_TARGET_AZIMUTH
Definition WsfGuidanceComputer.hpp:248
@ cVERTICAL_SPEED
Definition WsfGuidanceComputer.hpp:233
@ cCLOSING_SPEED
Definition WsfGuidanceComputer.hpp:240
@ cTARGET_SPEED
Definition WsfGuidanceComputer.hpp:238
@ cALTITUDE
Definition WsfGuidanceComputer.hpp:231
@ cON_COMMANDED_FLIGHT_PATH_ANGLE
Definition WsfGuidanceComputer.hpp:235
@ cTARGET_GROUND_RANGE
Definition WsfGuidanceComputer.hpp:244
@ cLOS_TARGET_ELEVATION
Definition WsfGuidanceComputer.hpp:247
@ cTARGET_ELEVATION
Definition WsfGuidanceComputer.hpp:245
@ cDYNAMIC_PRESSURE
Definition WsfGuidanceComputer.hpp:236
@ cSPEED
Definition WsfGuidanceComputer.hpp:232
@ cTARGET_AZIMUTH
Definition WsfGuidanceComputer.hpp:246
@ cTARGET_ALTITUDE
Definition WsfGuidanceComputer.hpp:237
Condition mCondition
Definition WsfGuidanceComputer.hpp:278
PhaseChange(WsfStringId aNextPhaseName)
Definition WsfGuidanceComputer.hpp:262
Variable mValue
Definition WsfGuidanceComputer.hpp:279
A class that defines the guidance parameters for a phase of flight.
Definition WsfGuidanceComputer.hpp:284
std::vector< WsfStringId > mPrograms
Definition WsfGuidanceComputer.hpp:348
WsfStringId mStageBurnoutPhaseName
Definition WsfGuidanceComputer.hpp:355
double mLateralGeeBiasValue
Definition WsfGuidanceComputer.hpp:334
bool mAllowRouteFollowing
Definition WsfGuidanceComputer.hpp:346
double mVP_GainValue
Definition WsfGuidanceComputer.hpp:332
double mCommandedAzimuthOffset
Definition WsfGuidanceComputer.hpp:319
double mMaxGeeCmd
Definition WsfGuidanceComputer.hpp:335
WsfStringId mPhaseName
Definition WsfGuidanceComputer.hpp:308
std::vector< ProgramAndPhase > mProgramCompletePhaseName
Definition WsfGuidanceComputer.hpp:358
double mMaxAscentRate
Definition WsfGuidanceComputer.hpp:337
double mCommandedFlightPathAngle
Definition WsfGuidanceComputer.hpp:320
WsfStringId mEndOfRoutePhaseName
Definition WsfGuidanceComputer.hpp:352
UtScript * mOnUpdateScriptPtr
Definition WsfGuidanceComputer.hpp:307
double mGuidanceDelay
Definition WsfGuidanceComputer.hpp:316
OffsetDirection mOffsetDirection
Definition WsfGuidanceComputer.hpp:342
double mCosLOS_Offset
Definition WsfGuidanceComputer.hpp:330
double mCommandedAlt
Definition WsfGuidanceComputer.hpp:318
double mGeeBiasValue
Definition WsfGuidanceComputer.hpp:333
std::vector< PhaseChange > mPhaseChangeList
Definition WsfGuidanceComputer.hpp:359
double mPitchChangeGain
Definition WsfGuidanceComputer.hpp:339
double mAimpointAzimuthOffset
Definition WsfGuidanceComputer.hpp:326
Phase()
Definition WsfGuidanceComputer.cpp:3234
WsfStringId mStageIgnitionPhaseName
Definition WsfGuidanceComputer.hpp:354
double mMaxDescentRate
Definition WsfGuidanceComputer.hpp:338
double mAimpointAltitudeOffset
Definition WsfGuidanceComputer.hpp:325
PN_Method
Definition WsfGuidanceComputer.hpp:287
@ cPN_PURE
Definition WsfGuidanceComputer.hpp:289
@ cPN_PHASE_DEFAULT
Definition WsfGuidanceComputer.hpp:288
@ cPN_AUGMENTED
Definition WsfGuidanceComputer.hpp:290
double mTimeConstant
Definition WsfGuidanceComputer.hpp:317
double mMaxPitchAngle
Definition WsfGuidanceComputer.hpp:336
WsfStringId mBoostCompletePhaseName
Definition WsfGuidanceComputer.hpp:353
WsfStringId mSensorTrackInitiatedPhaseName
Definition WsfGuidanceComputer.hpp:357
PN_Method mPN_Method
Definition WsfGuidanceComputer.hpp:343
WsfStringId mStageSeparationPhaseName
Definition WsfGuidanceComputer.hpp:356
std::pair< WsfStringId, WsfStringId > ProgramAndPhase
Definition WsfGuidanceComputer.hpp:350
double mCommandedThrottle
Definition WsfGuidanceComputer.hpp:323
GuidanceTarget mGuidanceTarget
Definition WsfGuidanceComputer.hpp:341
double mAimpointEvaluationInterval
Definition WsfGuidanceComputer.hpp:328
bool mCommandedAltIsAGL
Definition WsfGuidanceComputer.hpp:345
double mCommandedSpeed
Definition WsfGuidanceComputer.hpp:322
double mPN_GainValue
Definition WsfGuidanceComputer.hpp:331
double mAimpointRangeOffset
Definition WsfGuidanceComputer.hpp:327
Definition WsfGuidanceComputer.hpp:366
double mFlightPathAngle
Based on velocity vector, not orientation.
Definition WsfGuidanceComputer.hpp:394
UtEntity mWpnState
Definition WsfGuidanceComputer.hpp:393
double mSimTime
Definition WsfGuidanceComputer.hpp:385
bool mAimpointIsTarget
Definition WsfGuidanceComputer.hpp:406
double mAimUnitVecECS[3]
Definition WsfGuidanceComputer.hpp:404
double mEndTime
The simulation time of the end of the current integration interval.
Definition WsfGuidanceComputer.hpp:389
double mWpnHeading
Based on velocity vector, not orientation.
Definition WsfGuidanceComputer.hpp:395
State()
Definition WsfGuidanceComputer.hpp:368
UtEntity mTgtState
Definition WsfGuidanceComputer.hpp:400
double mCurTime
The simulation time of the start of the current integration interval.
Definition WsfGuidanceComputer.hpp:387
double mAimRelLocWCS[3]
Definition WsfGuidanceComputer.hpp:403
bool mAimpointIsValid
Definition WsfGuidanceComputer.hpp:405
Definition WsfGuidanceComputer.hpp:142
double operator+(double aRhs) const
Definition WsfGuidanceComputer.hpp:158
double operator=(double aRhs)
Definition WsfGuidanceComputer.hpp:162
WsfStringId mVarNameId
Definition WsfGuidanceComputer.hpp:204
double mValue
Definition WsfGuidanceComputer.hpp:197
Variable(double aValue=0.0)
Definition WsfGuidanceComputer.hpp:144
bool IsReference() const
Returns true if the variable is a script reference.
Definition WsfGuidanceComputer.hpp:176
double mScale
The scale factor used to convert from user supplied units to internal units.
Definition WsfGuidanceComputer.hpp:200
double Get() const
Definition WsfGuidanceComputer.hpp:171
bool HasDefaultValue() const
Definition WsfGuidanceComputer.hpp:173
double operator-(double aRhs) const
Definition WsfGuidanceComputer.hpp:160
Definition WsfGuidanceComputer.hpp:52
bool SetCommandedThrottle(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1251
bool SetCommandedAzimuthOffset(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1159
bool ShowGraphics() const
Definition WsfGuidanceComputer.hpp:422
bool ClearCommandedSpeed(WsfStringId aPhaseName)
Definition WsfGuidanceComputer.cpp:935
bool mShowEvaluations
'true' if 'show_evaluations' specified.
Definition WsfGuidanceComputer.hpp:506
double mAimpointLocWCS[3]
Definition WsfGuidanceComputer.hpp:553
bool SetProportionalNavigationLimitAngle(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1518
OffsetDirection
Definition WsfGuidanceComputer.hpp:216
@ cOD_RIGHT
Offset so target is on the right side of the weapon.
Definition WsfGuidanceComputer.hpp:218
@ cOD_EITHER
Offset so target on the side that causes least heading change of the weapon.
Definition WsfGuidanceComputer.hpp:219
@ cOD_LEFT
Offset so target is on the left side of the weapon.
Definition WsfGuidanceComputer.hpp:217
bool SetMaximumAscentRate(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1386
double mTimeConstant
The guidance time constant for intercept navigation by the legacy program.
Definition WsfGuidanceComputer.hpp:500
ProgramList mDefinedPrograms
The list of defined programs.
Definition WsfGuidanceComputer.hpp:491
bool SetCommandedMach(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1207
bool ClearCommandedFlightPathAngle(WsfStringId aPhaseName)
Definition WsfGuidanceComputer.cpp:911
bool ShowStatus() const
Definition WsfGuidanceComputer.hpp:420
bool SetAllowRouteFollowing(WsfStringId aPhaseName, bool aValue)
Definition WsfGuidanceComputer.cpp:984
double mPhaseStartTime
Definition WsfGuidanceComputer.hpp:517
bool SetProportionalNavigationMethod(WsfStringId aPhaseName, const std::string &aValue)
Definition WsfGuidanceComputer.cpp:1540
unsigned int mRouteIndex
Definition WsfGuidanceComputer.hpp:544
bool mFollowingRoute
Definition WsfGuidanceComputer.hpp:545
bool SetMaximumCommandedGees(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1408
double mLastFlightPathAngle
Definition WsfGuidanceComputer.hpp:526
double mLaunchTime
Definition WsfGuidanceComputer.hpp:514
static const double cFLIGHT_PATH_ANGLE_TOLERANCE
The tolerance for performing a flight path angle phase change.
Definition WsfGuidanceComputer.hpp:59
bool SetAimpointEvaluationInterval(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1108
WsfStringId mInitialPhaseName
The name (ID) of the starting phase.
Definition WsfGuidanceComputer.hpp:484
bool ClearCommandedThrottle(WsfStringId aPhaseName)
Definition WsfGuidanceComputer.cpp:959
bool mShowGraphics
'true' if 'show_graphics' is specified
Definition WsfGuidanceComputer.hpp:507
bool StartProgram(WsfStringId aProgramName)
Definition WsfGuidanceComputer.cpp:1632
bool SetGuidanceDelay(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1295
double mLastTgtLocWCS[3]
Definition WsfGuidanceComputer.hpp:528
UtAtmosphere mAtmosphere
Definition WsfGuidanceComputer.hpp:510
static const double cLARGE_POSITIVE_DOUBLE
Definition WsfGuidanceComputer.hpp:60
double GetLastUpdateTime() const
Definition WsfGuidanceComputer.hpp:430
virtual bool SetLateralGeeBias(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1364
static const double cUNDEFINED_DOUBLE
A value that indicates a double precision value has not been defined.
Definition WsfGuidanceComputer.hpp:57
double mAimpointExpireTime
Definition WsfGuidanceComputer.hpp:552
double GetCommandedFlightPathAngle() const
Definition WsfGuidanceComputer.hpp:424
Phase & GetCurrentPhase()
Definition WsfGuidanceComputer.hpp:423
double GetLastFlightPathAngle() const
Definition WsfGuidanceComputer.hpp:425
double mLastTgtVelWCS[3]
Definition WsfGuidanceComputer.hpp:529
bool SetCommandedAltitude(WsfStringId aPhaseName, double aValue, bool aAltIsAGL)
Definition WsfGuidanceComputer.cpp:1131
WsfGuidedMoverBase * mMoverPtr
Definition WsfGuidanceComputer.hpp:509
size_t mProgramCompleteIndex
Definition WsfGuidanceComputer.hpp:496
bool ShowDiagnostics() const
Definition WsfGuidanceComputer.hpp:421
bool SetProportionalNavigationGain(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1496
WsfGuidanceProgram * mLegacyProgramPtr
Definition WsfGuidanceComputer.hpp:489
std::list< WsfGuidanceProgram * > ProgramList
Definition WsfGuidanceComputer.hpp:490
bool SetGeeBias(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1273
bool SetCommandedFlightPathAngle(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1181
std::vector< Phase > mPhaseList
The list of phases.
Definition WsfGuidanceComputer.hpp:480
bool SetVelocityPursuitGain(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1575
bool mImplicitPhaseUsed
'true' if a phase was defined without using 'phase'
Definition WsfGuidanceComputer.hpp:483
bool mExplicitPhaseUsed
'true' if a 'phase' command was used
Definition WsfGuidanceComputer.hpp:482
bool SelectPhase(WsfStringId aPhaseName)
Definition WsfGuidanceComputer.cpp:857
bool SetCommandedSpeed(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1229
bool SetMaximumPitchAngle(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1452
double GetLaunchComputerFlightPathAngle() const
Definition WsfGuidanceComputer.hpp:426
WsfGuidanceComputer & operator=(const WsfGuidanceComputer &)=delete
wsf::Terrain * mTerrainPtr
Definition WsfGuidanceComputer.hpp:512
bool mGuideToTruth
'true' if should guide to target truth.
Definition WsfGuidanceComputer.hpp:502
bool mTgtStateDefined
Definition WsfGuidanceComputer.hpp:533
friend class WsfScriptGuidanceComputer
Definition WsfGuidanceComputer.hpp:55
bool SetPitchChangeGain(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1474
WsfDraw * mDrawPtr
For drawing graphics.
Definition WsfGuidanceComputer.hpp:557
virtual void StageBurnout(double aSimTime, double aEventTime)
Definition WsfGuidanceComputer.cpp:1694
GuidanceTarget
Definition WsfGuidanceComputer.hpp:208
@ cGT_TRUTH
Definition WsfGuidanceComputer.hpp:210
@ cGT_DEFAULT
Definition WsfGuidanceComputer.hpp:209
@ cGT_PERCEPTION
Definition WsfGuidanceComputer.hpp:211
@ cGT_PREDICTED_INTERCEPT
Definition WsfGuidanceComputer.hpp:212
bool SetAimpointAzimuthOffset(WsfStringId aPhaseName, double aValue, const std::string &aDirection)
Definition WsfGuidanceComputer.cpp:1037
ProgramList mActivePrograms
Definition WsfGuidanceComputer.hpp:492
double mCommandedFlightPathAngle
Definition WsfGuidanceComputer.hpp:519
unsigned int mPhaseIndex
The index of the current phase.
Definition WsfGuidanceComputer.hpp:485
unsigned int mAimpointDrawId
Definition WsfGuidanceComputer.hpp:554
State mState
The state of the weapon and target.
Definition WsfGuidanceComputer.hpp:522
static const double cFROM_LAUNCH_COMPUTER
Indicates 'flight_path_angle from_launch_computer'.
Definition WsfGuidanceComputer.hpp:58
virtual void StageIgnition(double aSimTime, double aEventTime)
Definition WsfGuidanceComputer.cpp:1674
double GetTimeSinceLaunch(double aSimTime)
Definition WsfGuidanceComputer.hpp:428
double mLaunchComputerFlightPathAngle
Definition WsfGuidanceComputer.hpp:539
bool SetGuidanceTarget(WsfStringId aPhaseName, const std::string &aValue)
Definition WsfGuidanceComputer.cpp:1321
double mGuidanceStartTime
Definition WsfGuidanceComputer.hpp:518
virtual bool EjectStage(double aPreSeparationCoastTime, double aPreIgnitionCoastTime)
Definition WsfGuidanceComputer.cpp:1599
bool ClearCommandedAltitude(WsfStringId aPhaseName)
Definition WsfGuidanceComputer.cpp:887
UtCallbackHolder mCallbacks
Definition WsfGuidanceComputer.hpp:511
double mLastTgtUpdateTime
Definition WsfGuidanceComputer.hpp:527
bool mOnExitScriptActive
The following is used to prevent recursion if a SelectPhase occurs in the user 'on_exit' block.
Definition WsfGuidanceComputer.hpp:560
bool mShowDiagnostics
'true' if 'show_diagnostics' specified
Definition WsfGuidanceComputer.hpp:504
bool SetMaximumDescentRate(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1430
friend class WsfGuidanceProgram
Definition WsfGuidanceComputer.hpp:54
bool mShowCommands
'true' if 'show_commands' specified
Definition WsfGuidanceComputer.hpp:505
bool mShowStatus
'true' if 'show_status' specified
Definition WsfGuidanceComputer.hpp:503
virtual void SensorTrackInitiated(double aSimTime, WsfSensor *aSensorPtr, const WsfTrack *aTrackPtr)
Definition WsfGuidanceComputer.cpp:3898
WsfGuidanceComputer(WsfScenario &aScenarioPtr)
Definition WsfGuidanceComputer.cpp:80
virtual bool StopEngines()
Definition WsfGuidanceComputer.cpp:1615
double mLaunchLocWCS[3]
Definition WsfGuidanceComputer.hpp:515
bool SetAimpointAltitudeOffset(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1010
Phase mPhaseTemplate
The template used to construct a phase.
Definition WsfGuidanceComputer.hpp:481
bool StopProgram(WsfStringId aProgramName)
Definition WsfGuidanceComputer.cpp:1653
virtual void RouteChanged(double aSimTime)
Definition WsfGuidanceComputer.cpp:832
double GetTimeSincePhaseStart(double aSimTime)
Definition WsfGuidanceComputer.hpp:429
bool SetAimpointRangeOffset(WsfStringId aPhaseName, double aValue)
Definition WsfGuidanceComputer.cpp:1082
double mLastUpdateTime
Definition WsfGuidanceComputer.hpp:516
bool mWasClosing
Definition WsfGuidanceComputer.hpp:546
double mInterceptLocWCS[3]
Definition WsfGuidanceComputer.hpp:538
virtual void StageSeparation(double aSimTime, double aEventTime)
Definition WsfGuidanceComputer.cpp:1724
Base class for the guidance programs (maneuvers) used by WsfGuidanceComputer.
Definition WsfGuidanceProgram.hpp:51
An abstract base class that defines an interface for guided movers.
Definition WsfGuidedMoverBase.hpp:36
virtual void UpdateGuidance(double aSimTime, double aCurTime, double aEndTime)=0
WsfMoverGuidance()
Definition WsfMoverGuidance.cpp:17
void TurnOn(double aSimTime) override
Definition WsfProcessor.cpp:183
WsfProcessor(const WsfScenario &aScenario)
Definition WsfProcessor.cpp:25
void TurnOff(double aSimTime) override
Definition WsfProcessor.cpp:169
const char * GetScriptClassName() const override
Definition WsfProcessor.cpp:63
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfScriptContext.hpp:71
bool Initialize2(double aSimTime) override
Definition WsfScriptProcessor.cpp:142
void Update(double aSimTime) override
Definition WsfScriptProcessor.cpp:281
WsfProcessor * Clone() const override
Definition WsfScriptProcessor.cpp:97
WsfScriptProcessor(const WsfScenario &aScenario)
Definition WsfScriptProcessor.cpp:30
bool Initialize(double aSimTime) override
Definition WsfScriptProcessor.cpp:104
bool ProcessInput(UtInput &aInput) override
Definition WsfScriptProcessor.cpp:186
Definition WsfSensor.hpp:92
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfTerrain.hpp:336
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved