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();
75 
78 
81  const DtString& rwName = DtString::nullString(),
82  DtReaderWriterRegistry* parentRegistry = 0) const;
83 
86  virtual DtString type() const;
87 
91  virtual double forwardSpeed(){return myForwardSpeed;}
92  virtual void setForwardSpeed(const double speed){myForwardSpeed = speed;}
93 
94  virtual double forwardAcceleration(){return myForwardAcceleration;}
95  virtual void setForwardAcceleration(const double acceleration)
96  {
97  myForwardAcceleration = acceleration;
98  }
99 
100  virtual double clampSpeed(){return myClampSpeed;}
101  virtual void setClampSpeed(const double speed){myClampSpeed = speed;}
102 
103  virtual double clampHeading(){return myClampHeading;}
104  virtual void setClampHeading(const double clampHeading)
105  {myClampHeading = clampHeading;}
106 
107  virtual double altitudeChangeRate(){return myAltitudeChangeRate;}
108  virtual void setAltitudeChangeRate(const double altitudeRate)
109  {
110  myAltitudeChangeRate = altitudeRate;
111  }
112 
113  virtual double clampAltitude(){return myClampAltitude;}
114  virtual void setClampAltitude(const double altitude)
115  {
116  myClampAltitude = altitude;
117  }
119 
124  virtual bool hasFuel() const {return myHasFuel;}
125  virtual void setHasFuel(const bool hasFuel)
126  {
127  myHasFuel = hasFuel;
128  }
129 
130  virtual bool isAground() const {return myIsAground;}
131  virtual void setIsAground(bool isAground)
132  {
133  myIsAground = isAground;
134  }
136 
140  virtual double goalDepth(){return myGoalDepth;}
141  virtual void setGoalDepth(const double depth)
142  {myGoalDepth = depth;}
143 
144  virtual double desiredDepthRate(){return myDesiredDepthRate;}
145  virtual void setDesiredDepthRate(const double rate)
146  {myDesiredDepthRate = rate;}
147 
148  virtual bool isTurnContinuous(){return myIsTurnContinuous;}
149  virtual void setIsTurnContinuous(const bool isContinous)
150  { myIsTurnContinuous = isContinous;}
151 
152  virtual double goalHeading(){return myGoalHeading;}
153  virtual void setGoalHeading(const double goalHeading);
154 
155  virtual bool isUsingConstantDiameter(){return myIsUsingConstantDiameter;}
156  virtual void setIsUsingConstantDiameter(const bool usingDiameter)
157  { myIsUsingConstantDiameter = usingDiameter;}
158 
159  virtual bool isTurningRight(){return myIsTurningRight;}
160  virtual void setIsTurningRight(const bool isContinous)
161  { myIsTurningRight = isContinous;}
162 
163  virtual double desiredTurnDiameter(){return myDesiredTurnDiameter;}
164  virtual void setDesiredTurnDiameter(const double desiredTurnDiameter);
165 
166  virtual double desiredTurnRate(){return myDesiredTurnRate;}
167  virtual void setDesiredTurnRate(const double desiredTurnRate);
168 
169  virtual bool turnTaskIsControllingSpeed() const;
170  virtual void setTurnTaskIsControllingSpeed(const bool isControlling);
171 
175  virtual void setControlObject(const DtUUID&);
176 
178  virtual DtSimObjectReference controlObject() const;
180 
184  virtual void setRoute(const DtUUID&);
185 
187  virtual DtSimObjectReference route() const;
189 
194  virtual void setRouteVertices(const DtLocalVectorIterator& routeIterator);
195  virtual const DtLocalVertexList& routeVertices() const;
196 
198  virtual void emptyRouteVertices();
199 
203  virtual DtLocalVectorIterator* routeState() const;
205 
208  virtual DtReal startTurnDistance2(){return myStartTurnDistance2;}
209  virtual void setStartTurnDistance2(const DtReal distance)
210  { myStartTurnDistance2 = distance;}
212 
215  virtual int prevRoutePointIndex(){return myPrevVertex;}
216  virtual void setPrevRoutPointIndex(const int index);
217  virtual int nextRoutePointIndex(){return myNextVertex;}
218  virtual void setNextRoutePointIndex(const int index);
219  virtual void setCurrentRoutePointIndex(const int index);
221 
224  virtual DtRwInt& currentVertex();
225  virtual const DtRwInt& currentVertex() const;
226 
227  virtual DtRwInt& nextVertex();
228  virtual const DtRwInt& nextVertex() const;
229 
230  virtual DtRwInt& previousVertex();
231  virtual const DtRwInt& previousVertex() const;
233 
236  virtual void setReverseFlag(bool flag);
237  virtual bool reverseFlag() const;
238 
240  virtual void setFirstWaypoint(const DtUUID&);
241  virtual DtSimObjectReference firstWaypoint() const;
242 
244  virtual void setSecondWaypoint(const DtUUID&);
245  virtual DtSimObjectReference secondWaypoint() const;
246 
248  virtual void setEntityToFollow(const DtUUID&);
249  virtual DtSimObjectReference entityToFollow() const;
250 
253  virtual void setFollowOffsetVector(const DtVector& offset);
254  virtual const DtVector& followOffsetVector() const;
255 
258  virtual void setKeepStationOffsetDistance(DtReal keepStationOffsetDistance);
259  virtual DtReal keepStationOffsetDistance() const;
260 
263  virtual void setKeepStationHeading(DtReal keepStationHeading);
264  virtual DtReal keepStationHeading() const;
265 
267  virtual void setWaitUntilOrderedSpeedMetToStopTask(bool);
268  virtual bool waitUntilOrderedSpeedMetToStopTask();
269 
272  virtual void setGeodeticAimingPoint(const DtVector& pnt);
273  virtual const DtVector geodeticAimingPoint() const;
274 
280  virtual void setGoalVector(const DtVector &goalVector);
281  virtual const DtVector& goalVector() const;
282 
285  virtual void setContinueAtGoal(const bool cont);
286  virtual bool continueAtGoal(void) const;
288 
289  virtual void setIsEmergencyStop(const bool isEmergency);
290  virtual bool isEmergencyStop(void)const;
291 
292  virtual void setIsDriftStop(const bool isDriftStop);
293  virtual bool isDriftStop(void) const;
294 
296  virtual void putSelf(std::string& fp, int indentLevel = 0,
297  bool writeUnspecified = false, const DtFilename& path = DtReaderWriter::appPath());
298 
303  virtual DtReal maxYawRate() const;
304  virtual void setMaxYawRate (DtReal maxYawRate);
305 
307  virtual DtReal maxYawAcceleration() const;
308  virtual void setMaxYawAcceleration(DtReal maxYawAcceleration);
309 
311  virtual double stoppingSpeed() const;
312  virtual void setStoppingSpeed(DtReal stoppingSpeed);
313 
315 
316 
317 public:
318 
320  static DtVrfProcessStateRepository* creator (const DtString& rwName,
321  DtLocalObject* vrfObject, DtReaderWriterRegistry* parentRegistry);
322 
323 protected:
324 
345 
350 
362 
363 
364 
371 
375 
402 
419 
427 
448 
455 
461 
470 
487 
493 
501 
504 
508 };
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:166
DtRwVector myGeodeticAimingPoint
For Surface Entity Move To Location controller.
Definition: surfaceMovementPSR.h:409
DtRwReal myGoalDepth
This is used by subsurface depth controller.
Definition: surfaceMovementPSR.h:370
DtRwBoolean myContinueAtGoal
Indicates that the entity should continue at speed after hitting the destination location. Used in move-to as well.
Definition: surfaceMovementPSR.h:417
DtRwReal myKeepStationOffsetDistance
The distance of the station keeping entity , relative to the entity to follow (in meters)...
Definition: surfaceMovementPSR.h:483
DtRwSimObjectReference mySecondWaypoint
For patrol-between control.
Definition: surfaceMovementPSR.h:468
DtRwReal myForwardAcceleration
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:342
virtual double clampHeading()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:103
DtRwInt myNextVertex
For move-along [route] control.
Definition: surfaceMovementPSR.h:445
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:438
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:453
virtual void setStartTurnDistance2(const DtReal distance)
Accessors for start-turn-distance squared (see description below).
Definition: surfaceMovementPSR.h:209
virtual double desiredTurnDiameter()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:163
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:156
DtStopModeTypeEnum
Definition: surfaceMovementPSR.h:44
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
Definition: surfaceMovementPSR.h:26
DtRwReal myForwardSpeed
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:341
virtual DtReal startTurnDistance2()
Accessors for start-turn-distance squared (see description below).
Definition: surfaceMovementPSR.h:208
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:131
DtRwReal myAltitudeChangeRate
For the subsurface depth actuator:
Definition: surfaceMovementPSR.h:347
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:400
virtual double goalDepth()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:140
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:125
virtual double clampSpeed()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:100
virtual void setIsTurningRight(const bool isContinous)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:160
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:358
DtRwVector myFollowOffsetVector
Following offset vector (in body coordinates of entity to follow, in meters).
Definition: surfaceMovementPSR.h:481
virtual double forwardAcceleration()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:94
virtual double clampAltitude()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:113
virtual double forwardSpeed()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:91
DtRwSimObjectReference myFirstWaypoint
For patrol-between control.
Definition: surfaceMovementPSR.h:467
DtRwSimObjectReference myRoute
For move-along [route] control.
Definition: surfaceMovementPSR.h:433
Definition: rwVector.h:23
virtual void setDesiredDepthRate(const double rate)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:145
DtRwInt myCurrentVertex
Read/write variables to capture route state. The route following controller may skip closely-spaced r...
Definition: surfaceMovementPSR.h:444
virtual void setClampSpeed(const double speed)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:101
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:104
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:108
DtRwReal myClampAltitude
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:348
Description: Readable, Writable int.
Definition: rwInt.h:25
DtRwBoolean myReverseFlag
For patrol-route control.
Definition: surfaceMovementPSR.h:460
virtual DtVrfProcessStateRepository * clone(const DtString &rwName=DtString::nullString(), DtReaderWriterRegistry *parentRegistry=0) const =0
DtRwBoolean myIsEmergencyStop
For stop task.
Definition: surfaceMovementPSR.h:490
DtRwBoolean myIsDriftStop
For stop task.
Definition: surfaceMovementPSR.h:491
DtRwSimObjectReference myControlObject
For move-to [waypoint] control.
Definition: surfaceMovementPSR.h:425
DtRwReal myMaxYawAcceleration
Max yaw rate acceleration– used only in DtSurfaceEntityActuator.
Definition: surfaceMovementPSR.h:506
virtual bool isTurnContinuous()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:148
DtRwReal myDesiredTurnDiameter
For turn-move:
Definition: surfaceMovementPSR.h:388
Definition: surfaceMovementPSR.h:41
virtual bool isTurningRight()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:159
DtRwReal myClampSpeed
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:343
DtRwReal myDesiredTurnRate
Positive if turning right, negative if left. Rad/sec.
Definition: surfaceMovementPSR.h:390
virtual void setIsTurnContinuous(const bool isContinous)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:149
virtual double altitudeChangeRate()
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:107
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:373
DtRwReal myClampHeading
Used in the actuator DtSufaceEntitySimpleActuator.
Definition: surfaceMovementPSR.h:344
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
DtRwBoolean myIsTurnContinuous
For turn-move:
Definition: surfaceMovementPSR.h:381
Definition: surfaceMovementPSR.h:28
virtual void setGoalDepth(const double depth)
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:141
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:436
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:217
virtual bool isAground() const
Accessors for actuator status info.The accessor is a shortcut for looking up the fuel resource...
Definition: surfaceMovementPSR.h:130
virtual void setForwardAcceleration(const double acceleration)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:95
virtual bool isUsingConstantDiameter()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:155
virtual int prevRoutePointIndex()
Accessors for next- and prev-route-point index.
Definition: surfaceMovementPSR.h:215
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:394
virtual void setClampAltitude(const double altitude)
These accessors return the values that the actuator caches between ticks for kinematic values...
Definition: surfaceMovementPSR.h:114
DtRwInt myPrevVertex
For move-along [route] control.
Definition: surfaceMovementPSR.h:446
virtual bool hasFuel() const
Accessors for actuator status info.The accessor is a shortcut for looking up the fuel resource...
Definition: surfaceMovementPSR.h:124
virtual double goalHeading()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:152
Definition: surfaceMovementPSR.h:33
DtRwReal myMaxYawRate
Max yaw rate– used only in DtSurfaceEntityActuator.
Definition: surfaceMovementPSR.h:503
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:385
virtual DtString type() const =0
Returns the string type of the repository, as defined in procSRTypes.h.
DtRwBoolean myIsTurningRight
If turning on a diameter, this flag indicates which way:
Definition: surfaceMovementPSR.h:387
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:92
DtRwReal myGoalHeading
For turn-move:
Definition: surfaceMovementPSR.h:382
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:485
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:414
DtTurnDirectionTypeEnum
Definition: surfaceMovementPSR.h:37
virtual double desiredDepthRate()
Access functions for state variables describing the various movement tasks.
Definition: surfaceMovementPSR.h:144
DtRwReal myStoppingSpeed
Other variables: not used in the above controllers or actuators. Copies of parameters in the actuator...
Definition: surfaceMovementPSR.h:500
DtRwSimObjectReference myEntityToFollow
For follow control tasks.
Definition: surfaceMovementPSR.h:478
DtRwBoolean myIsAground
Set by the actuator when it detects that the entity is aground.
Definition: surfaceMovementPSR.h:360
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. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86
Definition: surfaceMovementPSR.h:34

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)