VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
DtSurfaceEntityPilotController Class Reference

The DtSurfaceEntityPilotController provides basic movement capabilities for surface entities and creates the ports needed to control surface entity actuators.

End User Description: DtSurfaceEntityPilotController (surfEntPltCtl.h) provides elements that are common to all controllers which perform movement tasks for surface entities.

DtSurfaceEntityPilotController creates the throttle and rudder output ports used by all the surface entity movement controllers and provides accessors for them.

The most important control functions offered by the DtSurfaceEntityPilotController are sailTo() and driftTo(), both of which provide actuator inputs to move a ship to a given location at a given speed. The difference between the two is that driftTo() attempts to judge when to cut the throttle in order to drift to a stop at the given location, whereas sailTo() will accelerate to and maintain the given speed at all times.

DtSurfaceEntityPilotController also offers a function called emergencyStop() which will use reverse thrust in an attempt to stop the ship as quickly as possible. Some of the movement controllers will call this function when they overshoot a target.

The control functions listed in the previous paragraphs use three functions to determine the port input values they need to use. For rudder control, calculateControlForTurn() determines how much rudder to apply to turn to a given angle based on the current speed. For throttle control, there are two versions of calculateControlForThrottle(). Both use a speed parameter to determine how much throttle to apply, however one also takes a distance parameter which prevents the controller from using too much throttle when trying to drift to a stop at the given distance.

Uses Descriptor Type: DtSurfaceEntityPilotControllerDescriptor

Inheritance diagram for DtSurfaceEntityPilotController:
Inheritance graph
[legend]

Public Member Functions

 DtSurfaceEntityPilotController (const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 
virtual ~DtSurfaceEntityPilotController ()
 
virtual const chartype () const
 
virtual bool init ()
 
virtual void tick ()
 
virtual void clearTask ()
 
virtual bool createSurfaceControlPortGroup ()
 
virtual
DtVrfMovingObjectStateRepository
getSR ()
 
- Public Member Functions inherited from DtSingleTaskControllerComponent
 DtSingleTaskControllerComponent (const DtString &name, DtLocalObject *owner, DtSimulationServices *simServices, DtComponentDescriptor *compDesc=0, DtReaderWriterRegistry *parentRegistry=0)
 
virtual ~DtSingleTaskControllerComponent ()
 
virtual void postTick ()
 
virtual bool beginProcessingTask (const DtTaskMessage &task, DtSimTaskStatePtr taskState)
 
virtual void taskNotify (const DtSimTask &task)
 
virtual void taskComplete (bool success=true)
 
virtual void suspendTask ()
 
virtual int sendSubtask (DtSimTask &task)
 
virtual void clearSubtask (int subtaskId)
 
virtual void addPendingSubtaskId (int subtaskId)
 
virtual bool findPendingSubtaskId (int subtaskId)
 
virtual bool isSubtasked () const
 
virtual void removePendingSubtaskId (int subtaskId)
 
virtual void removeAllPendingSubtaskIds ()
 
virtual std::vector< intcurrentPendingSubstaskIds () const
 
virtual void clearCurrentTaskMessage ()
 
virtual DtTaskMessagecurrentTaskMessage () const
 
virtual DtSimTaskStatePtr currentTaskState () const
 
virtual void giveUpTask ()
 
virtual bool taskActive (int taskId) const
 
virtual bool clearTopLevelTasks ()
 
virtual void clearConflictingTopLevelTasks (const DtSimTaskMessageType &conflictType)
 
virtual void clearTasksByType (const DtSimTaskMessageType &taskType)
 
virtual void clearTaskById (int taskId)
 
virtual DtSuspendedTaskInfosuspendTaskById (int taskId)
 
virtual DtSuspendedTaskInfosuspendSubtaskById (int taskId, int subtaskId)
 
virtual std::list
< DtTaskMessage * > 
currentTaskMessages () const
 
virtual DtTaskWithTaskStateListPtr topLevelTasks () const
 
virtual void disable ()
 
- Public Member Functions inherited from DtTaskControllerComponent
 DtTaskControllerComponent (const DtString &name, DtLocalObject *owner, DtSimulationServices *simServices, DtComponentDescriptor *compDesc=0, DtReaderWriterRegistry *parentRegistry=0)
 
virtual ~DtTaskControllerComponent ()
 
virtual bool showCurrentTaskInGui () const
 
virtual void setRadio (DtSimRadio *radio)
 
virtual void registerTaskMsgCallbacks ()
 
virtual void addTaskProcessorCallback (const DtSimTaskMessageType &taskType, DtTaskMessageCallbackFcn fcn, void *usr)
 
virtual void addTaskProcessorCallback (const DtSimTaskMessageType &taskType, DtMessageCallbackFcn fcn, void *usr)
 
virtual void removeTaskProcessorCallback (const DtSimTaskMessageType &taskType, DtMessageCallbackFcn fcn, void *usr)
 
virtual void removeTaskProcessorCallback (const DtSimTaskMessageType &taskType, DtTaskMessageCallbackFcn fcn, void *usr)
 
virtual void enable ()
 
virtual void sendTaskCanceled (DtTaskMessage *taskMsg)
 
virtual bool taskVisualizationsActive () const
 
virtual void setTasked (bool tasked)
 
virtual bool tasked () const
 
- Public Member Functions inherited from DtControllerComponent
 DtControllerComponent (const DtString &name, DtLocalObject *owner, DtSimulationServices *simServices, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 
virtual ~DtControllerComponent ()
 
virtual DtSimRadioradio ()
 
virtual void enableTaskTypes ()
 
virtual void disableTaskTypes ()
 
- Public Member Functions inherited from DtSimComponent
 DtSimComponent (const DtString &name, DtLocalObject *owner, DtSimulationServices *simServices, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 
virtual ~DtSimComponent ()
 
virtual void setParentSystem (DtComponentSystem *system)
 
DtComponentSystemparentSystem () const
 
virtual void registerAttributeFunctions ()
 
virtual void preFirstTickInit ()
 
virtual void timedTick ()
 
virtual void setMinTickPeriod (double minTickPeriod)
 
virtual double minTickPeriod () const
 
virtual void setMinTickPeriodVariance (double minTickPeriodVariance)
 
virtual double minTickPeriodVariance () const
 
virtual void setNextTickTime (double nextTickTime)
 
virtual double nextTickTime () const
 
virtual double calculateNextTickTime () const
 
virtual double calculateFirstTickTime () const
 
virtual void setEntity (DtLocalObject *entity)
 
virtual DtSimComponentnextComponent ()
 
virtual DtSimComponentprevComponent ()
 
virtual void setListItem (DtListItem *item)
 
virtual DtListItem * listItem ()
 
virtual void putData (std::string &fp, int indentLevel=0)
 
virtual DtlObjPtr getData (DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)
 
virtual void addInputPort (DtInputPort *port)
 
virtual void removeInputPort (DtInputPort *port)
 
virtual DtInputPortlookupInputPort (const DtString &portName)
 
virtual DtList inputPortList () const
 
virtual void addOutputPort (DtOutputPort *port)
 
virtual void removeOutputPort (DtOutputPort *port)
 
virtual DtOutputPortlookupOutputPort (const DtString &portName)
 
virtual DtList outputPortList () const
 
virtual void addInputPortGroup (DtInputPortGroup *group)
 
virtual void removeInputPortGroup (DtInputPortGroup *group)
 
virtual DtInputPortGrouplookupInputPortGroup (const DtString &groupName)
 
virtual DtList inputPortGroupList () const
 
virtual void addOutputPortGroup (DtOutputPortGroup *group)
 
virtual void removeOutputPortGroup (DtOutputPortGroup *group)
 
virtual DtOutputPortGrouplookupOutputPortGroup (const DtString &groupName)
 
virtual DtList outputPortGroupList () const
 
virtual int priority () const
 
virtual void setPriority (int priority)
 
double dT () const
 
virtual void setDT (double deltaT)
 
virtual void setComponentDescriptor (DtComponentDescriptor *componentDescriptor)
 
virtual const
DtComponentDescriptor
componentDescriptor () const
 
virtual bool tickWhileDestroyed () const
 
DtVrfProcessStateRepositoryManagerpsrManager ()
 
virtual const DtSymbolStringcomponentFullName () const
 
DtPhysicalWorldphysicalWorld ()
 
const DtPhysicalWorldphysicalWorld () const
 
const DtAttachedTerrainterrainAttachedTo () const
 
DtLocalObjectentity ()
 
const DtLocalObjectentity () const
 
DtSimulationServicessimulationServices ()
 
const DtSimulationServicessimulationServices () const
 
const Coordinate_SystemcoordinateSystem () const
 
virtual bool taskVisualizationsEnabled () const
 
makVrf::DtTaskVisualizationMaptaskVisualizations ()
 
virtual bool isEnabled ()
 
virtual void setIsEnabled (bool yesNo)
 
virtual DtOutputStream & objectConsoleDebug (const DtString &channel="") const
 
virtual DtOutputStream & objectConsoleVerbose (const DtString &channel="") const
 
virtual DtOutputStream & objectConsoleInfo (const DtString &channel="") const
 
virtual DtOutputStream & objectConsoleWarn (const DtString &channel="") const
 
virtual DtOutputStream & objectConsoleError (const DtString &channel="") const
 
virtual int notifyLevel () const
 
virtual DtSimResourceManagerresourceManager ()
 
virtual const
DtSimResourceManager
resourceManager () const
 
VRF4API_METHOD const
DtSimulationServices
simManager () const
 
- Public Member Functions inherited from DtReaderWriter
 DtReaderWriter ()
 
 DtReaderWriter (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL, bool readonly=false)
 
 DtReaderWriter (const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL, bool readonly=false)
 
 DtReaderWriter (const DtString &name, const DtReaderWriter &orig, DtReaderWriterRegistry *parentRegistry=NULL)
 
 DtReaderWriter (const DtSymbolString &name, const DtReaderWriter &orig, DtReaderWriterRegistry *parentRegistry=NULL)
 
 DtReaderWriter (const DtReaderWriter &, DtReaderWriterRegistry *parentRegistry=NULL)
 
const DtReaderWriteroperator= (const DtReaderWriter &orig)
 
bool operator== (const DtReaderWriter &) const
 
bool operator!= (const DtReaderWriter &rhs)
 
virtual ~DtReaderWriter ()
 
virtual void putSelf (std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
 
virtual void postPutSelf ()
 
virtual void prePutSelf ()
 
virtual void getSelf (DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
 
virtual void postGetSelf ()
 
virtual void preGetSelf ()
 
virtual void writeSelf (std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
 
virtual DtSymbolString name () const
 
virtual void addAlias (const DtSymbolString &alias)
 
virtual void addAlias (const DtString &alias)
 
virtual bool hasAlias (const DtSymbolString &alias)
 
virtual const aliasContaineraliases () const
 
virtual void setReadonly (bool flag)
 
bool isReadonly () const
 
virtual void reset ()
 
virtual int alignment () const
 
virtual bool variableIsBound () const
 
virtual void unbindVariable ()
 
virtual void setName (const DtString &)
 
virtual const charreaderWriterType () const
 
virtual const charxmlType () const
 
virtual DtString prettyPrint () const
 
std::string debugText () const
 
virtual void bindVariables (DtVariableBindingsList variableBindings)
 
virtual std::list
< DtVariableNameType
unboundVariables () const
 
bool invalid () const
 
virtual bool hasChild (const DtReaderWriter *p) const
 
virtual bool hasVariableReference () const
 
virtual void bindLocalVariables (const DtVariableBindingsList &variableBindings)
 
virtual void recordUpdateTime () const
 
virtual bool wasUpdatedSince (DtTime t) const
 
virtual bool changedSinceLastChecked ()
 
virtual bool peekChangedSinceLastChecked () const
 
virtual void setValueSpecified (bool specified, bool recurse=false)
 
virtual bool valueSpecified () const
 
virtual bool isVariableReference () const
 
virtual void setIsVariableReference (bool value)
 
virtual void clearAllVariableReferenceFlags ()
 
virtual DtSymbolString variableName () const
 
virtual void setVariableName (const DtSymbolString variableName)
 
virtual const DtReaderWriterdefaultRWValue () const
 
virtual DtReaderWriterdefaultRWValue ()
 
virtual void setDefaultRWValue (DtReaderWriter *)
 
virtual bool checkAndSetDefaultRWValue (DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
 
const DtReaderWriterRegistryregistry () const
 
DtReaderWriterRegistryregistry ()
 
virtual DtPropertyInterfaceproperty ()
 
virtual const DtPropertyInterfaceproperty () const
 
virtual DtString toXml () const
 
virtual DtRwVariableBindingsgenerateVariableBindings () const
 
virtual bool toXml (const DtFilename &) const
 
virtual bool fromXml (const DtString &)
 
virtual bool fromXmlFile (const DtFilename &)
 
virtual void putSelf (DtEnvironmentSP, DtEnvValueSP parent) const
 
virtual void putData (DtEnvironmentSP, DtEnvValueSP value) const
 
virtual void putVariableReference (DtEnvironmentSP, DtEnvValueSP value) const
 
virtual void getSelf (const DtEnvironmentSP, const DtEnvValueSP root, const SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &bindings=DtVariableBindingsList())
 
virtual void getData (const DtEnvironmentSP, const DtEnvValueSP, const SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &bindings=DtVariableBindingsList())
 
virtual void unrecognizedItem (const DtEnvironmentSP env, const DtEnvValueSP root, const SearchPaths &searchPaths, const DtVariableBindingsList &varBindings)
 
virtual void getVariableReference (DtEnvironmentSP, DtEnvValueSP value)
 

Static Public Member Functions

static DtSimComponentcreator (const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 
static DtReaderWriterprovideOrderedSpeed (void *controller)
 
- Static Public Member Functions inherited from DtTaskControllerComponent
static void deprecatedTaskProcessorCallbackAdapter (DtSimMessage *msg, void *usr, DtSimTaskStatePtr taskState)
 
- Static Public Member Functions inherited from DtSimComponent
static DtSimComponentFactoryfactory ()
 
static void setFactory (DtSimComponentFactory *factory)
 
static DtSimComponentcreateComponent (const DtString &name, const DtString &type, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentSystem *parentSystem, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 
static void addSimComponentCreatorFcn (const DtString &type, DtSimComponentCreatorFcn fcn)
 
static VRF4API_METHOD
DtSimComponent
MarkThreadSafe (DtSimComponent *comp)
 
- Static Public Member Functions inherited from DtReaderWriter
static void putIndent (std::string &fp, int indentLevel)
 
static const
DtVariableBindingsList
nullVariableReference ()
 
static void setPostGetSelfCallback (DtGetSelfCallbackFcn fcn, void *usrData)
 
static void setPrePutSelfCallback (DtPutSelfCallbackFcn fcn, void *usrData)
 
static void setPutIndent (bool)
 
static bool putIndent ()
 
static const chartheXmlType ()
 
static const DtFilename & appPath ()
 
static void setFactoryCreatorFunction (DtReaderWriterFactoryCreatorFcn fcn)
 
static void createReaderWriterFactory ()
 
static void cleanupFactory ()
 
static DtReaderWriterFactoryfactory ()
 
static void setOutputStream (DtOutputStream *stream)
 
static DtOutputStream & outputStream ()
 
static DtReaderWritercreateFromXmlFile (const DtFilename &, bool createAsProperty=false)
 
static DtReaderWritercreateFromXml (const DtString &, bool createAsProperty=false)
 
static DtReaderWritercreateFromEnvironment (DtEnvironmentSP, bool createAsProperty=false)
 
static DtString getAttribute (DtEnvironmentSP env, const DtString &name, DtEnvValueSP root)
 

Protected Member Functions

virtual void moveToWithFinalSpeed (const DtVector &localDestination, const double cruiseSpeed, const double finalSpeed)
 
virtual void moveToWithFinalSpeed (const double goalHeading, const double cruiseSpeed, const double finalSpeed)
 
virtual void turn (double desiredRate)
 
virtual void turn (double desiredRate, double desiredHeading)
 
virtual void immediateNormalStop ()
 
virtual double calculateControlForTurn (double yawAngle, double desiredRate)
 
virtual double calculateNormalAcceleration (double cruiseSpeed, double distance, double turnAngle, double finalSpeed)
 
virtual double calculateNormalAcceleration (double desiredSpeed)
 
virtual double limitedAcceleration (double desiredAcceleration, double desiredSpeed)
 
virtual double followerAcceleration (double dT, double distance, double maxDeceleration, double followerSpeed, double leaderSpeed)
 
virtual bool createPortGroups ()
 
virtual bool createPorts ()
 
virtual void lookupAndCacheProcessSR ()
 
virtual bool postAddComponentsInit ()
 
virtual bool decideToGiveUpTask () const
 
DtPlatformLocalObjectFacadeplatformLocalObjectFacade ()
 
 DtSurfaceEntityPilotController ()
 
 DtSurfaceEntityPilotController (const DtSurfaceEntityPilotController &orig)
 
const
DtSurfaceEntityPilotController
operator= (const DtSurfaceEntityPilotController &orig)
 
- Protected Member Functions inherited from DtSingleTaskControllerComponent
virtual void clearPendingSubtasks ()
 
virtual void clearSubtasksByType (const DtSimTaskMessageType &taskType)
 
virtual void cleanupInactiveSubtaskStatus ()
 
- Protected Member Functions inherited from DtTaskControllerComponent
virtual void suspendSubtasksOfTask (int taskId, DtSuspendedTaskInfo *suspendInfo)
 
virtual void suspendSubtaskOfTask (int taskId, int subtaskId, DtSuspendedTaskInfo *suspendInfo)
 
virtual DtSimTaskMessageType remapScriptId (const DtSimTaskMessageType &) const
 
- Protected Member Functions inherited from DtControllerComponent
 DtControllerComponent ()
 
 DtControllerComponent (const DtControllerComponent &orig)
 
const DtControllerComponentoperator= (const DtControllerComponent &orig)
 
virtual void onRestore ()
 
virtual void initializeTargetingControlTableFromDescriptor (const DtReaderWriter *)
 
virtual void sendCapableSetsAndTasks ()
 
- Protected Member Functions inherited from DtSimComponent
virtual double computeCurrentTime ()
 
bool testInvariant () const
 
DtVrfProcessStateRepositorycreateComponentPsr (const DtString &defaultPsrType, const DtString &defaultPsrName, bool useDescriptorParams=true)
 
virtual void updateTaskVisualizations ()
 
virtual void destroyTaskVisualizations ()
 
virtual void destroyTaskVisualization (const DtString &name)
 
virtual
makVrf::DtPointTaskVisualizationPtr 
pointTaskVisualization (const DtString &name)
 
virtual
makVrf::DtLineTaskVisualizationPtr 
lineTaskVisualization (const DtString &name)
 
virtual
makVrf::DtAreaTaskVisualizationPtr 
areaTaskVisualization (const DtString &name)
 
virtual
makVrf::DtTextTaskVisualizationPtr 
textTaskVisualization (const DtString &name)
 
double calculateNextTaskVisTickTime () const
 
DtVrfObjectStateRepositorylocalStateRepository ()
 
const DtVrfObjectStateRepositorylocalStateRepository () const
 
void addSimObjectPredicateCallback (DtSimObjectReference, DtVrfObjectPredicateCallbackFunction function, const DtVrfObjectPredicate &predicate, DtTime evaluationPeriod=0, void *userData=0)
 
void removeSimObjectPredicateCallback (const DtSimObject *, DtVrfObjectPredicateCallbackFunction function, const DtVrfObjectPredicate &predicate, DtTime evaluationPeriod=0, void *userData=0)
 
void invokeSimObjectPredicateCallbacks ()
 
virtual void clearPredicateCallbacks ()
 
- Protected Member Functions inherited from DtReaderWriter
virtual void bindToRwAsVariable (const DtReaderWriter *rw)
 

Protected Attributes

DtVrfMovingObjectStateRepositorymyEntityState
 
DtSurfaceEntityPilotControllerDescriptormyDescriptor
 
const DtSurfaceEntityParametersmyParameters
 
DtSurfaceMovementPSRmyProcessState
 
double myDistanceSquared
 
DtPlatformLocalObjectFacade myPlatformLocalObjectFacade
 
Ports and Port Groups

Acceleration can be positive or negative.

DtAnalogOutputPortmyAccelerationPort
 
DtAnalogOutputPortmyClampSpeedPort
 
DtAnalogOutputPortmyTurnRatePort
 
DtAnalogOutputPortmyFinalHeadingPort
 
DtOutputPortGroupmySurfaceControlPortGroup
 
- Protected Attributes inherited from DtTaskControllerComponent
DtTaskCallbackMap myTaskCallbackMap
 
std::list
< DtTaskProcessorCallbackInfo * > 
myTaskProcessorCallbackInfoList
 
bool myTaskIsRunning
 
- Protected Attributes inherited from DtControllerComponent
DtSimRadiomyRadio
 
bool myTaskTypesEnabled
 
bool myInitialized
 
- Protected Attributes inherited from DtSimComponent
DtLocalObjectmyEntity
 
DtComponentSystemmySystem
 
DtListItem * myListItem
 
DtInputPortMap myInputPortList
 
DtOutputPortMap myOutputPortList
 
DtInputPortGroupMap myInputPortGroupList
 
DtOutputPortGroupMap myOutputPortGroupList
 
int myPriority
 
double myMinTickPeriod
 
double myMinTickPeriodVariance
 
double myNextTickTime
 
double myLastTickSimTime
 
double myDT
 
bool myIsEnabled
 
bool myFirstTick
 
const DtComponentDescriptormyComponentDescriptor
 
std::list
< DtVrfProcessStateRepository * > 
myComponentPsrs
 
bool myTickEveryFrame
 
makVrf::DtTaskVisualizationMap myTaskVisualizations
 
double myNextTaskVisTickTime
 
DtSymbolString myFullComponentName
 
DtSimulationServicesmySimServices
 
DtPredicateCallbackManager myPredicateCallbackManager
 
- Protected Attributes inherited from DtReaderWriter
const DtSymbolString myName
 
DtReaderWriterRegistry myRegistry
 
DtReaderWriterRegistrymyParentRegistry
 
bool myValueSpecified
 
bool myReadOnlyFlag
 
bool myIsVariableReference
 
DtSymbolString myVariableName
 
bool myVariableIsBound
 
DtReaderWritermyDefaultValue
 
aliasContainer myAliases
 
bool myInvalid
 
bool myChangedFlag
 

Additional Inherited Members

- Public Types inherited from DtReaderWriter
typedef std::vector
< DtSymbolString
aliasContainer
 
typedef std::vector
< DtSymbolString >::iterator 
aliasIter
 
typedef std::vector
< DtSymbolString >
::const_iterator 
aliasConstIter
 
typedef std::vector< DtFilename > SearchPaths
 
typedef std::pair
< DtSymbolString, DtString
DtVariableNameType
 
typedef DtReaderWriterFactory *(* DtReaderWriterFactoryCreatorFcn )()
 
- Protected Types inherited from DtTaskControllerComponent
typedef std::pair
< DtTaskMessageCallbackFcn,
void * > 
DtTaskCallbackMapPair
 
typedef std::map
< DtSimTaskMessageType,
DtTaskCallbackMapPair
DtTaskCallbackMap
 
- Protected Types inherited from DtSimComponent
typedef std::map< DtString,
DtInputPort * > 
DtInputPortMap
 
typedef std::map< DtString,
DtOutputPort * > 
DtOutputPortMap
 
typedef std::map< DtString,
DtInputPortGroup * > 
DtInputPortGroupMap
 
typedef std::map< DtString,
DtOutputPortGroup * > 
DtOutputPortGroupMap
 
- Static Protected Attributes inherited from DtSimComponent
static DtSimComponentFactorymyFactory
 
- Static Protected Attributes inherited from DtReaderWriter
static DtString theUnspecifiedValue
 
static DtGetSelfCallbackInfo thePostGetSelfCallback
 
static DtPutSelfCallbackInfo thePrePutSelfCallback
 
static const DtVariableBindingsList theEmptyVariableBindingsList
 
static bool theCreatorFcnSet
 
static DtReaderWriterFactorytheFactory
 
static
DtReaderWriterFactoryCreatorFcn 
theFactoryCreatorFcn
 
static bool thePutIndent
 
static DtOutputStream * theOutputStream
 

Constructor & Destructor Documentation

DtSurfaceEntityPilotController::DtSurfaceEntityPilotController ( const DtString name,
DtLocalObject owner,
DtSimulationServices simManager,
DtComponentDescriptor desc = 0,
DtReaderWriterRegistry parentRegistry = 0 
)

Parameters
nameReader writer name of this component.
ownerThe DtLocalObject that owns this component
simManagerThe simulation manager (provides access to terrain, message interface, simulation clock).
descThe component descriptor used to initialize this component.
parentRegistryPointer to the parent reader writer registry (the containing object that reads/writes this object). Attempts to cast the given DtComponentDescriptor to a DtSurfaceEntityPilotControllerDescriptor and cache it in myDescriptor. If this fails a warning is printed to the object console.
virtual DtSurfaceEntityPilotController::~DtSurfaceEntityPilotController ( )
virtual

Destructor.

Deletes all ports and port groups

DtSurfaceEntityPilotController::DtSurfaceEntityPilotController ( )
protected

default constructor; not implemented

DtSurfaceEntityPilotController::DtSurfaceEntityPilotController ( const DtSurfaceEntityPilotController orig)
protected

copy constructor; not implemented

Member Function Documentation

virtual const char* DtSurfaceEntityPilotController::type ( ) const
virtual

Returns a string identifies the class type of component. Type values are defined in compTypes.h. DtSimComponent creation functions are registered with the DtSimComponentFactory using the type values as the key. Warning: this function should always return the same pointer and it should be valid forever. This means the data should be static.

Returns
DtSurfaceEntityPilotControllerType

Implements DtTaskControllerComponent.

Reimplemented in DtSurfaceEntityPatrolRouteController, DtSurfaceEntityPatrolBetweenController, DtSurfaceEntityMoveAlongController, DtSurfaceEntityMoveToLocationController, DtSurfaceEntityTurnMoveController, DtSurfaceEntityStopController, and DtSurfaceEntityMoveToController.

virtual bool DtSurfaceEntityPilotController::init ( )
virtual

Calls down to the base class and then caches a pointer to the state repository in mySurfaceEntityState.

Reimplemented from DtControllerComponent.

Reimplemented in DtSurfaceEntityStopController, and DtSurfaceEntityMoveAlongController.

virtual void DtSurfaceEntityPilotController::tick ( )
virtual

Overridden to check for valid myProcessState pointer. If it is null a warning is printed to the object console.

Reimplemented from DtSimComponent.

Reimplemented in DtSurfaceEntityMoveAlongController, DtSurfaceEntityMoveToLocationController, DtSurfaceEntityPatrolBetweenController, DtSurfaceEntityStopController, DtSurfaceEntityMoveToController, and DtSurfaceEntityTurnMoveController.

virtual void DtSurfaceEntityPilotController::clearTask ( )
virtual

Calls down to the base class and then calls allowDeactivation() on mySurfaceControlPortGroup.

Reimplemented from DtSingleTaskControllerComponent.

Reimplemented in DtSurfaceEntityMoveAlongController, and DtSurfaceEntityMoveToController.

virtual bool DtSurfaceEntityPilotController::createSurfaceControlPortGroup ( )
virtual

Creates the surface control output port group.

virtual DtVrfMovingObjectStateRepository* DtSurfaceEntityPilotController::getSR ( )
inlinevirtual

Gets the entity state repository for purposes of providing attributes.

Reimplemented in DtSurfaceEntityMoveAlongController.

static DtReaderWriter* DtSurfaceEntityPilotController::provideOrderedSpeed ( void *  controller)
static

Attribute access functions. These functions are registered with the parent system in init().Provides the current-min-turn-radius attribute for the surface entity movement system.

virtual void DtSurfaceEntityPilotController::moveToWithFinalSpeed ( const DtVector localDestination,
const double  cruiseSpeed,
const double  finalSpeed 
)
protectedvirtual

Sets the controls needed to sail towards the given destination at the given cruiseSpeed for as long as possible until the entity decelerates to finalSpeed at the destination. Destination is given in local coordinates.

virtual void DtSurfaceEntityPilotController::moveToWithFinalSpeed ( const double  goalHeading,
const double  cruiseSpeed,
const double  finalSpeed 
)
protectedvirtual

This version is the same but takes a heading and uses it directly, instead of computing it from the destination.

virtual void DtSurfaceEntityPilotController::turn ( double  desiredRate)
protectedvirtual

Sets the controls to turn at the given rate.

Set control outputs to make a continuous turn at the desired rate. DesiredRate can be negative or positive. It is in radians/sec.

virtual void DtSurfaceEntityPilotController::turn ( double  desiredRate,
double  desiredHeading 
)
protectedvirtual

Set control outputs to make a turn to the given heading. The desiredRate will be used (although limited by lateral acceleration and thus min turn radius and current speed). DesiredRate can be negative or positive. It can force the vessel to turn the long way to the desired heading.

virtual void DtSurfaceEntityPilotController::immediateNormalStop ( )
protectedvirtual

Decelerates the entity to a stop immediately.

virtual double DtSurfaceEntityPilotController::calculateControlForTurn ( double  yawAngle,
double  desiredRate 
)
protectedvirtual

Calculates the turn rate control for a given turn angle.

Calculates the turn rate to zero out the given yaw angle. YawAngle should be between -pi and pi; positive to the right. Uses proportional control, and limits the rate to keep a reasonable lateral acceleration. The turn rate is limited to the desiredRate (positive or negative). The turn rate is limited by the maximum lateral acceleration for the entity, and also by the entity's given minimum turn radius and speed (i.e. rate-max = current-speed/radius-min).

virtual double DtSurfaceEntityPilotController::calculateNormalAcceleration ( double  cruiseSpeed,
double  distance,
double  turnAngle,
double  finalSpeed 
)
protectedvirtual

Calculates the acceleration needed to reach the desired speed, but constrained to be able to decelerate to the finalSpeed when the distance reaches zero.

Calculates the acceleration needed to servo to the cruiseSpeed, but constrained such that with the deceleration capability of the entity, it can decelerate to the finalSpeed when the distance reaches zero. Turn angle is the angle from the entity's heading (direction of motion) to the goal point. The entity's current speed is reduced by cos(turnAngle) so that if distance is small but the entity is turned away from the goal, it will have a less constrained acceleration. CruiseSpeed can be negative, in which case entity max acceleration (vs. max deceleration) is used in the computation. The value returned for acceleration will be positive to slow down an entity moving in reverse. FinalSpeed should be the same sign as cruiseSpeed, and smaller in magnitude. The acceleration is limited by the max acceleration and stopping deceleration for the entity, and also the normal-acceleration fraction.

virtual double DtSurfaceEntityPilotController::calculateNormalAcceleration ( double  desiredSpeed)
protectedvirtual

Calculates the acceleration needed to reach the desired speed.

Calculates the acceleration needed to servo the entity's speed to the given set speed.

virtual double DtSurfaceEntityPilotController::limitedAcceleration ( double  desiredAcceleration,
double  desiredSpeed 
)
protectedvirtual

Returns the desired acceleration modified as necessary by the constraints of maximum vehicle acceleration (positive and negative, or braking) and normal desired fraction of max to employ. This implementation reduces the vehicle's max acceleration when speed is > 1/2 max speed, just to add some realism because the simple actuator doesn't model that. Finally, acceleration is limited to (goal speed - current speed)/dT.

virtual double DtSurfaceEntityPilotController::followerAcceleration ( double  dT,
double  distance,
double  maxDeceleration,
double  followerSpeed,
double  leaderSpeed 
)
protectedvirtual

Compute the acceleration limit of an entity following another entity so as to permit the follower to safely stop if the leader decelerates to a stop starting next tick (a "car-following" control). The entity (traveling at followerSpeed) can use the computed acceleration for one tick (dT), then decelerate at maxDeceleration, and come to rest behind a leader who is distance ahead traveling at leaderSpeed.

static DtSimComponent* DtSurfaceEntityPilotController::creator ( const DtString name,
DtLocalObject owner,
DtSimulationServices simManager,
DtComponentDescriptor desc = 0,
DtReaderWriterRegistry parentRegistry = 0 
)
static

Parameters
nameReader writer name of this component.
ownerThe DtLocalObject that owns this component
simManagerThe simulation manager (provides access to terrain, message interface, simulation clock).
descThe component descriptor used to initialize this component.
parentRegistryPointer to the parent reader writer registry (the containing object that reads/writes this object).
Returns
New instance of this class.
virtual bool DtSurfaceEntityPilotController::createPortGroups ( )
protectedvirtual

Overridden to call createSurfaceControlPortGroup().

Reimplemented from DtSimComponent.

virtual bool DtSurfaceEntityPilotController::createPorts ( )
protectedvirtual

Overridden to call createThrottlePort() and createRudderPort().

Reimplemented from DtSimComponent.

Reimplemented in DtSurfaceEntityMoveAlongController.

virtual void DtSurfaceEntityPilotController::lookupAndCacheProcessSR ( )
protectedvirtual

This function looks up a process state repository in the process state repository manager by name, and caches a pointer to it in myProcessState. The name (if it exists) is given in the component descriptor (DtComponentDescriptor::processStateRepositoryName). If the name does not exist, it uses the appropriate default name defined in procSRTypes.h. Another component is responsible for creating and destroying the process state repository.

virtual bool DtSurfaceEntityPilotController::postAddComponentsInit ( )
protectedvirtual

Calls lookupAndCacheProcessSR(), to look up our process state repository after all of the components have been created and loaded.

Returns
true if myProcessState is not null

Reimplemented from DtControllerComponent.

virtual bool DtSurfaceEntityPilotController::decideToGiveUpTask ( ) const
protectedvirtual

If the entity is embarked and the target of the current movement task is not embarked on the same object return true, and otherwise return a call to the base class.

Reimplemented from DtSingleTaskControllerComponent.

DtPlatformLocalObjectFacade& DtSurfaceEntityPilotController::platformLocalObjectFacade ( )
inlineprotected
const DtSurfaceEntityPilotController& DtSurfaceEntityPilotController::operator= ( const DtSurfaceEntityPilotController orig)
protected

assignment operator; not implemented

Member Data Documentation

DtVrfMovingObjectStateRepository* DtSurfaceEntityPilotController::myEntityState
protected
DtSurfaceEntityPilotControllerDescriptor* DtSurfaceEntityPilotController::myDescriptor
protected
const DtSurfaceEntityParameters* DtSurfaceEntityPilotController::myParameters
protected

Cache a pointer to the entity parameters.

Referenced by DtSurfaceEntityMoveAlongController::getParams().

DtSurfaceMovementPSR* DtSurfaceEntityPilotController::myProcessState
protected

Pointer to a process state repository used to store state data associated with this component. This process state repository is shared with other components. Another component is responsible for creating and destroying the process state repository. This state is saved and restored as part of a scenario (or checkpoint).

Referenced by DtSurfaceEntityMoveAlongController::getPSR().

DtAnalogOutputPort* DtSurfaceEntityPilotController::myAccelerationPort
protected

The goal speed; used by the actuator to prevent accelerating past the desired speed if dT is much longer than expected.

DtAnalogOutputPort* DtSurfaceEntityPilotController::myClampSpeedPort
protected

The goal speed; used by the actuator to prevent accelerating past the desired speed if dT is much longer than expected.

DtAnalogOutputPort* DtSurfaceEntityPilotController::myTurnRatePort
protected

Rotation rate in radians/sec. Positive is to the right.

DtAnalogOutputPort* DtSurfaceEntityPilotController::myFinalHeadingPort
protected

A clamp heading, similar to clamp speed.

DtOutputPortGroup* DtSurfaceEntityPilotController::mySurfaceControlPortGroup
protected

Output Port Group Name: surface-control
Output Port Group Description: acceleration, clamp speed, turn rate, and final heading ports.

double DtSurfaceEntityPilotController::myDistanceSquared
protected

A controller-global value that several functions test. Not needed between ticks.

DtPlatformLocalObjectFacade DtSurfaceEntityPilotController::myPlatformLocalObjectFacade
protected

Member to allow for access to platform specific data.


The documentation for this class was generated from the following file:

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)