VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
surfaceMovementPSR.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
12 #include "vrfobjcore/simObject.h"
13 #include <readerWriter/rwString.h>
14 #include <readerWriter/rwBoolean.h>
15 #include "readerWriter/rwVector.h"
17 #include <readerWriter/rwInt.h>
18 #include <readerWriter/rwReal.h>
19 #include <vrfutil/rwUUID.h>
21 
24 typedef enum
25 {
30 
31 typedef enum
32 {
36 
37 typedef enum
38 {
43 
44 typedef enum
45 {
50 
55 
57 
60 {
61 public:
62 
65  const DtString& rwName = DtString::nullString(),
66  DtReaderWriterRegistry* parentRegistry = 0);
67 
70  const DtString& rwName = DtString::nullString(),
71  DtReaderWriterRegistry* parentRegistry = 0);
72 
74  virtual ~DtSurfaceMovementPSR() override;
75 
78 
81  const DtString& rwName = DtString::nullString(), DtReaderWriterRegistry* parentRegistry = 0) const override;
82 
85  virtual DtString type() const override;
86 
90  virtual double forwardSpeed(){return myForwardSpeed;}
91  virtual void setForwardSpeed(const double speed){myForwardSpeed = speed;}
92 
93  virtual double forwardAcceleration(){return myForwardAcceleration;}
94  virtual void setForwardAcceleration(const double acceleration)
95  {
96  myForwardAcceleration = acceleration;
97  }
98 
99  virtual double clampSpeed(){return myClampSpeed;}
100  virtual void setClampSpeed(const double speed){myClampSpeed = speed;}
101 
102  virtual double clampHeading(){return myClampHeading;}
103  virtual void setClampHeading(const double clampHeading)
104  {myClampHeading = clampHeading;}
105 
106  virtual double altitudeChangeRate(){return myAltitudeChangeRate;}
107  virtual void setAltitudeChangeRate(const double altitudeRate)
108  {
109  myAltitudeChangeRate = altitudeRate;
110  }
111 
112  virtual double clampAltitude(){return myClampAltitude;}
113  virtual void setClampAltitude(const double altitude)
114  {
115  myClampAltitude = altitude;
116  }
118 
123  virtual bool hasFuel() const {return myHasFuel;}
124  virtual void setHasFuel(const bool hasFuel)
125  {
126  myHasFuel = hasFuel;
127  }
128 
129  virtual bool isAground() const {return myIsAground;}
130  virtual void setIsAground(bool isAground)
131  {
132  myIsAground = isAground;
133  }
135 
139  virtual double goalDepth(){return myGoalDepth;}
140  virtual void setGoalDepth(const double depth)
141  {myGoalDepth = depth;}
142 
143  virtual double desiredDepthRate(){return myDesiredDepthRate;}
144  virtual void setDesiredDepthRate(const double rate)
145  {myDesiredDepthRate = rate;}
146 
147  virtual bool isTurnContinuous(){return myIsTurnContinuous;}
148  virtual void setIsTurnContinuous(const bool isContinous)
149  { myIsTurnContinuous = isContinous;}
150 
151  virtual double goalHeading(){return myGoalHeading;}
152  virtual void setGoalHeading(const double goalHeading);
153 
154  virtual bool isUsingConstantDiameter(){return myIsUsingConstantDiameter;}
155  virtual void setIsUsingConstantDiameter(const bool usingDiameter)
156  { myIsUsingConstantDiameter = usingDiameter;}
157 
158  virtual bool isTurningRight(){return myIsTurningRight;}
159  virtual void setIsTurningRight(const bool isContinous)
160  { myIsTurningRight = isContinous;}
161 
162  virtual double desiredTurnDiameter(){return myDesiredTurnDiameter;}
163  virtual void setDesiredTurnDiameter(const double desiredTurnDiameter);
164 
165  virtual double desiredTurnRate(){return myDesiredTurnRate;}
166  virtual void setDesiredTurnRate(const double desiredTurnRate);
167 
168  virtual bool turnTaskIsControllingSpeed() const;
169  virtual void setTurnTaskIsControllingSpeed(const bool isControlling);
170 
174  virtual void setControlObject(const DtUUID&);
175 
177  virtual DtSimObjectReference controlObject() const;
179 
183  virtual void setRoute(const DtUUID&);
184 
186  virtual DtSimObjectReference route() const;
188 
193  virtual void setRouteVertices(const DtLocalVectorIterator& routeIterator);
194  virtual const DtLocalVertexList& routeVertices() const;
195 
197  virtual void emptyRouteVertices();
198 
202  virtual DtLocalVectorIterator* routeState() const;
204 
207  virtual DtReal startTurnDistance2(){return myStartTurnDistance2;}
208  virtual void setStartTurnDistance2(const DtReal distance)
209  { myStartTurnDistance2 = distance;}
211 
214  virtual int prevRoutePointIndex(){return myPrevVertex;}
215  virtual void setPrevRoutPointIndex(const int index);
216  virtual int nextRoutePointIndex(){return myNextVertex;}
217  virtual void setNextRoutePointIndex(const int index);
218  virtual void setCurrentRoutePointIndex(const int index);
220 
223  virtual DtRwInt& currentVertex();
224  virtual const DtRwInt& currentVertex() const;
225 
226  virtual DtRwInt& nextVertex();
227  virtual const DtRwInt& nextVertex() const;
228 
229  virtual DtRwInt& previousVertex();
230  virtual const DtRwInt& previousVertex() const;
232 
235  virtual void setReverseFlag(bool flag);
236  virtual bool reverseFlag() const;
237 
239  virtual void setFirstWaypoint(const DtUUID&);
240  virtual DtSimObjectReference firstWaypoint() const;
241 
243  virtual void setSecondWaypoint(const DtUUID&);
244  virtual DtSimObjectReference secondWaypoint() const;
245 
247  virtual void setEntityToFollow(const DtUUID&);
248  virtual DtSimObjectReference entityToFollow() const;
249 
252  virtual void setFollowOffsetVector(const DtVector& offset);
253  virtual const DtVector& followOffsetVector() const;
254 
257  virtual void setKeepStationOffsetDistance(DtReal keepStationOffsetDistance);
258  virtual DtReal keepStationOffsetDistance() const;
259 
262  virtual void setKeepStationHeading(DtReal keepStationHeading);
263  virtual DtReal keepStationHeading() const;
264 
266  virtual void setWaitUntilOrderedSpeedMetToStopTask(bool);
267  virtual bool waitUntilOrderedSpeedMetToStopTask();
268 
271  virtual void setGeodeticAimingPoint(const DtVector& pnt);
272  virtual const DtVector geodeticAimingPoint() const;
273 
279  virtual void setGoalVector(const DtVector &goalVector);
280  virtual const DtVector& goalVector() const;
281 
284  virtual void setContinueAtGoal(const bool cont);
285  virtual bool continueAtGoal(void) const;
287 
288  virtual void setIsEmergencyStop(const bool isEmergency);
289  virtual bool isEmergencyStop(void)const;
290 
291  virtual void setIsDriftStop(const bool isDriftStop);
292  virtual bool isDriftStop(void) const;
293 
295  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = false,
296  const DtFilename& path = DtReaderWriter::appPath()) override;
297 
302  virtual DtReal maxYawRate() const;
303  virtual void setMaxYawRate (DtReal maxYawRate);
304 
306  virtual DtReal maxYawAcceleration() const;
307  virtual void setMaxYawAcceleration(DtReal maxYawAcceleration);
308 
310  virtual double stoppingSpeed() const;
311  virtual void setStoppingSpeed(DtReal stoppingSpeed);
312 
314 
315 
316 public:
317 
319  static DtVrfProcessStateRepository* creator (const DtString& rwName,
320  DtLocalObject* vrfObject, DtReaderWriterRegistry* parentRegistry);
321 
322 protected:
323 
344 
349 
361 
362 
363 
370 
374 
401 
418 
426 
447 
454 
460 
469 
486 
492 
500 
503 
507 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual double desiredTurnRate()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:165
DtRwVector myGeodeticAimingPoint
For Surface Entity Move To Location controller.
Definition: surfaceMovementPSR.h:408
DtRwReal myGoalDepth
This is used by subsurface depth controller.
Definition: surfaceMovementPSR.h:369
DtRwBoolean myContinueAtGoal
Indicates that the entity should continue at speed after hitting the destination location. Used in move-to as well.
Definition: surfaceMovementPSR.h:416
DtRwReal myKeepStationOffsetDistance
The distance of the station keeping entity , relative to the entity to follow (in meters)...
Definition: surfaceMovementPSR.h:482
DtRwSimObjectReference mySecondWaypoint
For patrol-between control.
Definition: surfaceMovementPSR.h:467
DtRwReal myForwardAcceleration
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:341
virtual double clampHeading()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:102
DtRwInt myNextVertex
For move-along [route] control.
Definition: surfaceMovementPSR.h:444
DtTurnMoveTypeEnum
These enumerations must match the int values that come back from the GUI in the task message...
Definition: surfaceMovementPSR.h:24
DtLocalVertexList myVertices
my copy of the current route
Definition: surfaceMovementPSR.h:437
Definition: surfaceMovementPSR.h:40
DtRwReal myStartTurnDistance2
The distance (squared) before the next point that the ship has to start heading for the following poi...
Definition: surfaceMovementPSR.h:452
virtual void setStartTurnDistance2(const DtReal distance)
Accessors for start-turn-distance squared (see description below).
Definition: surfaceMovementPSR.h:208
virtual double desiredTurnDiameter()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:162
Definition: surfaceMovementPSR.h:59
File: lclVecIter.h.
Definition: localVectorIterator.h:25
virtual void setIsUsingConstantDiameter(const bool usingDiameter)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:155
DtStopModeTypeEnum
Definition: surfaceMovementPSR.h:44
Definition: surfaceMovementPSR.h:26
DtRwReal myForwardSpeed
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:340
virtual DtReal startTurnDistance2()
Accessors for start-turn-distance squared (see description below).
Definition: surfaceMovementPSR.h:207
Definition: surfaceMovementPSR.h:27
Definition: readerWriterRegistry.h:39
Contains the DtUUID class declaration.
virtual void setIsAground(bool isAground)
Accessors for actuator status info.The accessor is a shortcut for looking up the fuel resource...
Definition: surfaceMovementPSR.h:130
DtRwReal myAltitudeChangeRate
For the subsurface depth actuator:
Definition: surfaceMovementPSR.h:346
DtRwBoolean myWaitUntilOrderedSpeedMetToStopTask
Whether or not to wait until the ordered speed has been met to stop the task. Default is true to allo...
Definition: surfaceMovementPSR.h:399
virtual double goalDepth()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:139
virtual void setHasFuel(const bool hasFuel)
Accessors for actuator status info.The accessor is a shortcut for looking up the fuel resource...
Definition: surfaceMovementPSR.h:124
virtual double clampSpeed()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:99
virtual void setIsTurningRight(const bool isContinous)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:159
Definition: surfaceMovementPSR.h:46
DtRwBoolean myHasFuel
Actuator status information.Set by the actuator when it checks fuel. When the actuator determines t...
Definition: surfaceMovementPSR.h:357
DtRwVector myFollowOffsetVector
Following offset vector (in body coordinates of entity to follow, in meters).
Definition: surfaceMovementPSR.h:480
virtual double forwardAcceleration()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:93
virtual double clampAltitude()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:112
virtual double forwardSpeed()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:90
DtRwSimObjectReference myFirstWaypoint
For patrol-between control.
Definition: surfaceMovementPSR.h:466
DtRwSimObjectReference myRoute
For move-along [route] control.
Definition: surfaceMovementPSR.h:432
Definition: rwVector.h:23
virtual void setDesiredDepthRate(const double rate)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:144
DtRwInt myCurrentVertex
Read/write variables to capture route state. The route following controller may skip closely-spaced r...
Definition: surfaceMovementPSR.h:443
virtual void setClampSpeed(const double speed)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:100
Specialized reader/writer version of the shared object reference that will encapsulate the actual sha...
Definition: rwSimObjectReference.h:21
Definition: surfaceMovementPSR.h:47
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
virtual void setClampHeading(const double clampHeading)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:103
Definition: surfaceMovementPSR.h:48
virtual void setAltitudeChangeRate(const double altitudeRate)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:107
DtRwReal myClampAltitude
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:347
Description: Readable, Writable int.
Definition: rwInt.h:25
DtRwBoolean myReverseFlag
For patrol-route control.
Definition: surfaceMovementPSR.h:459
virtual DtVrfProcessStateRepository * clone(const DtString &rwName=DtString::nullString(), DtReaderWriterRegistry *parentRegistry=0) const =0
DtRwBoolean myIsEmergencyStop
For stop task.
Definition: surfaceMovementPSR.h:489
DtRwBoolean myIsDriftStop
For stop task.
Definition: surfaceMovementPSR.h:490
DtRwSimObjectReference myControlObject
For move-to [waypoint] control.
Definition: surfaceMovementPSR.h:424
DtRwReal myMaxYawAcceleration
Max yaw rate acceleration– used only in DtSurfaceEntityActuator.
Definition: surfaceMovementPSR.h:505
virtual bool isTurnContinuous()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:147
DtRwReal myDesiredTurnDiameter
For turn-move:
Definition: surfaceMovementPSR.h:387
Definition: surfaceMovementPSR.h:41
virtual bool isTurningRight()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:158
DtRwReal myClampSpeed
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:342
DtRwReal myDesiredTurnRate
Positive if turning right, negative if left. Rad/sec.
Definition: surfaceMovementPSR.h:389
virtual void setIsTurnContinuous(const bool isContinous)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:148
virtual double altitudeChangeRate()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:106
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file. If write unspecified is true, will write entries that are uns...
DtRwReal myDesiredDepthRate
The desired depth change rate. This is always positive.
Definition: surfaceMovementPSR.h:372
DtRwReal myClampHeading
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:343
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
DtRwBoolean myIsTurnContinuous
For turn-move:
Definition: surfaceMovementPSR.h:380
Definition: surfaceMovementPSR.h:28
virtual void setGoalDepth(const double depth)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:140
DtLocalVectorIterator * myRouteState
Route state used to get info about the current route we&#39;re trying to follow (e.g. which vertex to mov...
Definition: surfaceMovementPSR.h:435
Class DtVrfProcessStateRepository: Abstract base class for all process state repositories. Process state repositories represent (potentially) shared, savable information for one or more components functioning together to achieve some process or set of processes; such as aiming and firing a weapon; moving an object; or just waiting a specified amount of time.
Definition: vrfProcessStateRepository.h:45
Description: Readable, Writable bool.
Definition: rwBoolean.h:26
virtual int nextRoutePointIndex()
Accessors for next- and prev-route-point index.
Definition: surfaceMovementPSR.h:216
virtual bool isAground() const
Accessors for actuator status info.The accessor is a shortcut for looking up the fuel resource...
Definition: surfaceMovementPSR.h:129
virtual void setForwardAcceleration(const double acceleration)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:94
virtual bool isUsingConstantDiameter()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:154
virtual int prevRoutePointIndex()
Accessors for next- and prev-route-point index.
Definition: surfaceMovementPSR.h:214
DtRwBoolean myTurnTaskControllingSpeed
True when the task is run; stays true until another movement task runs. While true, the task keeps controlling speed to match ordered speed, even if the task is complete.
Definition: surfaceMovementPSR.h:393
virtual void setClampAltitude(const double altitude)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:113
DtRwInt myPrevVertex
For move-along [route] control.
Definition: surfaceMovementPSR.h:445
virtual bool hasFuel() const
Accessors for actuator status info.The accessor is a shortcut for looking up the fuel resource...
Definition: surfaceMovementPSR.h:123
virtual double goalHeading()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:151
Definition: surfaceMovementPSR.h:33
DtRwReal myMaxYawRate
Max yaw rate– used only in DtSurfaceEntityActuator.
Definition: surfaceMovementPSR.h:502
DtRwBoolean myIsUsingConstantDiameter
If turn rate is set with diameter, then each tick the radians/secc turn rate for the output port has ...
Definition: surfaceMovementPSR.h:384
virtual DtString type() const =0
Returns the string type of the repository, as defined in psrTypes.h.
DtRwBoolean myIsTurningRight
If turning on a diameter, this flag indicates which way:
Definition: surfaceMovementPSR.h:386
DtTurnRateTypeEnum
Definition: surfaceMovementPSR.h:31
virtual void setForwardSpeed(const double speed)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:91
DtRwReal myGoalHeading
For turn-move:
Definition: surfaceMovementPSR.h:381
voidpf uLong offset
Definition: ioapi.h:42
class DtLocalVertexList:
Definition: localVertexList.h:20
DtRwReal myKeepStationHeading
The heading of the station keeping entity , relative to the entity to follow (in radians).
Definition: surfaceMovementPSR.h:484
DtRwVector myGoalVector
The vector from the aiming point (goal) to the start point of the move. Used to determine when the en...
Definition: surfaceMovementPSR.h:413
DtTurnDirectionTypeEnum
Definition: surfaceMovementPSR.h:37
virtual double desiredDepthRate()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:143
DtRwReal myStoppingSpeed
Other variables: not used in the above controllers or actuators. Copies of parameters in the actuator...
Definition: surfaceMovementPSR.h:499
DtRwSimObjectReference myEntityToFollow
For follow control tasks.
Definition: surfaceMovementPSR.h:477
DtRwBoolean myIsAground
Set by the actuator when it detects that the entity is aground.
Definition: surfaceMovementPSR.h:359
File: rwVector.h.
static const DtFilename & appPath()
Gets the current working directory. The first time this accessor is called, it determines the current...
Definition: surfaceMovementPSR.h:39
const DtVrfProcessStateRepository & operator=(const DtVrfProcessStateRepository &orig)
A locally simulated VRF object.
Definition: localObject.h:98
Definition: surfaceMovementPSR.h:34

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)