WSF
WsfGuidanceProgram.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 WSFGUIDANCEPROGRAM_HPP
13#define WSFGUIDANCEPROGRAM_HPP
14
15#include "wsf_mil_export.h"
16
17#include <string>
18
19class UtEntity;
20class UtInput;
24#include "WsfObject.hpp"
26
28{
29public:
31
32 static WSF_MIL_EXPORT WsfGuidanceProgramTypes& Get(WsfScenario& aScenario);
33 static WSF_MIL_EXPORT const WsfGuidanceProgramTypes& Get(const WsfScenario& aScenario);
35
36 using FactoryPtr = WsfGuidanceProgram* (*)(const std::string&);
37 using ObjectFactoryList = std::list<FactoryPtr>;
39 WSF_MIL_EXPORT void AddObjectFactory(FactoryPtr aFactoryPtr);
40 WSF_MIL_EXPORT WsfGuidanceProgram* CreateInstance(const std::string& aTypeName) const;
41
42protected:
43 static WsfGuidanceProgram* PredefinedObjectFactory(const std::string& aTypeName);
44
47};
48
50class WSF_MIL_EXPORT WsfGuidanceProgram : public WsfObject
51{
52public:
53 // Create typedef's in our scope that parallel the same name in WsfGuidanceComputer.
57
60 static const char* cGC_ORBIT_DECLARED;
61 static const char* cGC_DELTA_V_REMAINING;
62 static const char* cGC_BURN_TIME_REMAINING;
63 static const char* cGC_FUEL_REMAINING;
64
71
72 enum Axis
73 {
77 };
78
80 WsfGuidanceProgram(const WsfGuidanceProgram& aSrc) = default;
81 ~WsfGuidanceProgram() override = default;
83
85 WsfGuidanceProgram* Clone() const override = 0;
86
87 virtual bool Initialize(double aSimTime, WsfGuidanceComputer* aComputerPtr);
88
89 bool ProcessInput(UtInput& aInput) override;
90
91 virtual void Start(double aSimTime, double aCurTime);
92
93 virtual void Terminate(double aSimTime);
94
100 virtual Status Execute(State& aState, Commands& aCommands) = 0;
101
103 WsfPlatform* GetPlatform() { return mComputerPtr->GetPlatform(); }
104
106
107protected:
108 void AltitudeGuidance(State& aState, Phase& aPhase, double& aZ_Accel);
109
110 void AngleOffsetGuidance(State& aState, Phase& aPhase, double& aY_Accel, double& aZ_Accel);
111
112 static void ApplyGravityBias(UtEntity& aEntity, double aGravityBiasFactor, double& aY_Accel, double& aZ_Accel);
113
114 static void ApplyLateralBias(UtEntity& aEntity, double aLateralBiasFactor, double& aY_Accel, double& aZ_Accel);
115
116 static void ComputeGravitationalAcceleration(const double aLocWCS[3], double aGravAclWCS[3]);
117
118 bool FlightPathAngleAchieved(const State& aState, double aCommandedFlightPathAngle) const;
119
120 void FlightPathAngleGuidance(State& aState, Phase& aPhase, double aCommandedFlightPathAngle, double& aY_Accel, double& aZ_Accel);
121
122 void ProNavGuidance(State& aState, double aProNavGain, bool aAugmented, double& aY_Accel, double& aZ_Accel);
123
124 void PursuitGuidance(State& aState, double aPursuitGain, double& aY_Accel, double& aZ_Accel);
125
127 double mStartTime;
129};
130
131#endif
Definition WsfGuidanceComputer.hpp:412
A class that defines the guidance parameters for a phase of flight.
Definition WsfGuidanceComputer.hpp:284
Definition WsfGuidanceComputer.hpp:366
Definition WsfGuidanceComputer.hpp:52
std::list< FactoryPtr > ObjectFactoryList
Definition WsfGuidanceProgram.hpp:37
WsfGuidanceProgramTypes()
Definition WsfGuidanceProgram.hpp:38
WSF_MIL_EXPORT WsfGuidanceProgram * CreateInstance(const std::string &aTypeName) const
Definition WsfGuidanceProgram.cpp:2157
WSF_MIL_EXPORT void AddObjectFactory(FactoryPtr aFactoryPtr)
Definition WsfGuidanceProgram.cpp:2151
static WsfGuidanceProgram * PredefinedObjectFactory(const std::string &aTypeName)
The object factory for predefined guidance program types.
Definition WsfGuidanceProgram.cpp:2178
WsfGuidanceProgram *(*)(const std::string &) FactoryPtr
Definition WsfGuidanceProgram.hpp:36
static WSF_MIL_EXPORT WsfGuidanceProgramTypes & Get(WsfScenario &aScenario)
Return a modifiable reference to the type list associated with the specified scenario.
Definition WsfGuidanceProgram.cpp:2136
ObjectFactoryList mObjectFactoryList
The list of object factories.
Definition WsfGuidanceProgram.hpp:46
Base class for the guidance programs (maneuvers) used by WsfGuidanceComputer.
Definition WsfGuidanceProgram.hpp:51
Axis
Definition WsfGuidanceProgram.hpp:73
@ cZ_AXIS
Definition WsfGuidanceProgram.hpp:76
@ cX_AXIS
Definition WsfGuidanceProgram.hpp:74
@ cY_AXIS
Definition WsfGuidanceProgram.hpp:75
WsfGuidanceComputer * mComputerPtr
Definition WsfGuidanceProgram.hpp:126
virtual void Terminate(double aSimTime)
Terminate the program.
Definition WsfGuidanceProgram.cpp:110
Status
The return status for the Execute method.
Definition WsfGuidanceProgram.hpp:67
@ cCONTINUE
The program should be continued to be called (remains in the active program list).
Definition WsfGuidanceProgram.hpp:68
@ cCOMPLETE
The program is complete and no longer needs to be called (removed from the active program list).
Definition WsfGuidanceProgram.hpp:69
bool mDebugEnabled
True if debug output is enabled.
Definition WsfGuidanceProgram.hpp:128
static const char * cGC_BURN_TIME_REMAINING
Definition WsfGuidanceProgram.hpp:62
WsfGuidanceProgram()
Constructor.
Definition WsfGuidanceProgram.cpp:63
double mStartTime
Simulation time when this program was started.
Definition WsfGuidanceProgram.hpp:127
virtual bool Initialize(double aSimTime, WsfGuidanceComputer *aComputerPtr)
Definition WsfGuidanceProgram.cpp:75
WsfGuidanceComputer * GetComputer()
Definition WsfGuidanceProgram.hpp:105
WsfGuidanceProgram * Clone() const override=0
Virtual copy constructor.
virtual void Start(double aSimTime, double aCurTime)
Start using the program.
Definition WsfGuidanceProgram.cpp:103
~WsfGuidanceProgram() override=default
static const char * cGC_ORBIT_DECLARED
Definition WsfGuidanceProgram.hpp:60
virtual Status Execute(State &aState, Commands &aCommands)=0
WsfGuidanceComputer::Phase Phase
Definition WsfGuidanceProgram.hpp:56
WsfGuidanceComputer::State State
Definition WsfGuidanceProgram.hpp:54
WsfGuidanceComputer::Commands Commands
Definition WsfGuidanceProgram.hpp:55
WsfGuidanceProgram(const WsfGuidanceProgram &aSrc)=default
static const char * cGC_FUEL_REMAINING
Definition WsfGuidanceProgram.hpp:63
WsfGuidanceProgram & operator=(const WsfGuidanceProgram &)=delete
WsfPlatform * GetPlatform()
A convenience method for getting the pointer to the platform.
Definition WsfGuidanceProgram.hpp:103
static const char * cGC_DELTA_V_REMAINING
Definition WsfGuidanceProgram.hpp:61
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual bool ProcessInput(UtInput &aInput)
Definition WsfObject.cpp:140
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 WsfScriptContext.hpp:71
Copyrights Multiple, All Rights Reserved