VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
automotiveActuatorComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vlpi/disEnums.h>
16 #include <matrix/vlVector.h>
17 
18 class DtChord;
19 class DtString;
20 class DtSimManager;
22 class boolPort;
23 class DtTaitBryan;
24 class DtSoilFactors;
25 class DtAutomotivePSR;
29 class DtBooleanInputPort;
31 class DtAttachedTerrain;
33 
45 {
46 
47 public:
48 
52  DtSimManager* simManager,
53  DtComponentDescriptor* desc = 0,
54  DtReaderWriterRegistry* parentRegistry = 0);
55 
56 
59 
61  virtual bool init();
62 
65  virtual const char* type() const;
66 
68  virtual void tick();
69 
73  static DtSimComponent * creator(const DtString& name,
74  DtVrfObject* owner,
75  DtSimManager* simManager,
76  DtComponentDescriptor* desc = 0,
77  DtReaderWriterRegistry* parentRegistry = 0);
78 
79 protected:
80 
82  virtual double maxSpeedSoilFactor() const;
83 
85  virtual double accelSoilFactor() const;
86 
88  virtual double decelSoilFactor() const;
89 
91  virtual DtString soilTypeString() const;
92 
95  virtual DtSoilFactors* soilFactors(const DtString& soilType) const;
96 
103  virtual void useFuel(double fuelUsed);
104 
110  virtual double fuelLeft() const;
111 
129  virtual void updateRepository(const DtVector & localPosition,
130  const DtVector & localVelocity, const DtVector & localAcceleration,
131  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
132  double newHeading);
133 
138  virtual double calculateMaxDecelerationFromBrake(double brake);
139 
147  virtual double calculateAccelerationFromEngine(double throttle,
148  double speed,
150  double pitch);
151 
158  virtual void calculateFactorsFromSoilAndWeather(const DtVector& location,
159  double& tractionFactor, double& dragFactor);
160 
166  virtual double calculateMaximumTractionAcceleration(const double tractionFactor);
167 
174  virtual double calculateSoilDragDeceleration(const double dragFactor,
175  const double speed);
176 
180  virtual double calculateAccelerationFromSlope(double pitch);
181 
195  virtual void calculateOrientationAndPosition(
196  const DtVector& newLocalProjectedLocation, double newHeading,
197  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
198 
204  virtual bool useHighFidelityGroundClamping() const;
205 
208  virtual bool useNavDataGroundClamping() const;
209 
221  bool groundClamp(double heading, const DtVector& location,
222  DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
223 
228  void groundClampHighFidelity(double heading, const DtVector& location,
229  DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
230 
236  void groundClampLowFidelity(double heading, const DtVector& location,
237  DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
238 
241  void groundClampWithNavData(double heading, const DtVector& location,
242  DtAttachedTerrain& terrain, DtVector& newNormal);
243 
256  virtual double calculateHeading(const double oldHeading,
257  const DtVector& oldBodyVelocity, const DtAutoTransmissionGear gear,
258  const double steering, const double throttle, const double speed,
259  const double maxTractionAcceleration, const double soilDragFactor,
260  const double dT);
261 
268  virtual DtVector calculateBodyAcceleration(double throttle,
269  DtAutoTransmissionGear gear, double brake,
270  const DtVector& oldBodyVelocity, double oldPitch,
271  double maxTractionAcceleration, double dragFactor, double dT);
272 
273  virtual DtVector calculateBodyVelocity(
274  const DtVector& oldBodyVelocity, const DtVector& newBodyAcceleration,
275  double dT);
276 
277  virtual DtVector calculateProjectedLocation(
278  const DtVector& oldLocalPosition, const DtVector& newBodyAcceleration,
279  const DtVector& oldBodyVelocity, double newHeading);
280 
289  virtual bool checkForTerrainCollisions() const;
290 
296  virtual bool foundTerrainCollision(double heading,
297  const DtVector& oldLocalPosition,
298  const DtVector& newLocalPosition,
300  &collisionIntersectionRecord) const;
301 
311  virtual bool createMovementChord(DtChord& movementChord,
312  double heading,
313  const DtVector& oldLocalPosition,
314  const DtVector& newLocalPosition) const;
315 
320  virtual bool terrainPassable(double heading,
322  terrainIntersectionRecord) const;
323 
324 
326  virtual double calculateMaxSpeed();
327 
330  virtual double calculateMaxAcceleration();
331 
335  virtual void calculateDirectionOfLinearMotion(
336  const DtDcm& newLocalOrientation, const DtVector& newLocalPosition,
337  DtDcm& newLocalDirectionOfLinearMotion);
338 
345  virtual double slopeBoostRate() const;
346  virtual void setSlopeBoostRate(const double boost);
347 
360  virtual double calculateSlopeBoostRate();
361 
363  virtual bool createPortGroups();
364 
366  virtual bool createPorts();
367 
373  virtual bool createPSR();
374 
378  virtual bool rotationalVelocityShouldBeClamped(const DtVector&
379  bodyRotationalVelocity);
380 
382  virtual double steeringControlValue() const;
384  virtual double throttleControlValue() const;
386  virtual double brakeControlValue() const;
388  virtual DtAutoTransmissionGear gearControlValue() const;
390  virtual bool parkingBrakeControlValue() const;
391 
394  virtual bool checkIfMoveOntoEmbarked(const DtVector& localPosition);
395 
396  virtual bool checkAndDisembarkIfEmbarked(const DtVector& localPosition);
397 
401  static void terainChangeNotification(const DtExtent& spatExtent, void* usr);
402 
407  void processTerrainChangeNotification(const DtExtent& spatExtent);
408 private:
411 
414 
418 
419 protected:
420 
423 
430 
437 
444 
451 
458 
463 
470 
472 
474 
478 
482 
488 
489  double myLastPitch;
492 
494 
497 
502 };
503 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVector myLastPitchLocation
Definition: automotiveActuatorComponent.h:491
Description: This repository holds all information that is common to all the forms of local ground en...
Definition: groundVehicleStateRepository.h:32
Definition: attachedTerrain.h:42
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
const DtActuatorComponent & operator=(const DtActuatorComponent &orig)
assignment operator
DtAutomotivePSR * myProcessState
Container for state data associated with this component.
Definition: automotiveActuatorComponent.h:477
virtual bool init()
Overridden to cache a pointer to the entity&#39;s radio in this class.
Contains class declarations for DtConstrainedAnalogInputPort and DtConstrainedAnalogOutputPort.
Definition: constrainedAnalogIOPort.h:27
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
DtBooleanInputPort * myClampToNavDataPort
Input Port Name: clamp-to-nav-data Input Port Description: Tells the actuator that it should temporar...
Definition: automotiveActuatorComponent.h:469
Definition: readerWriterRegistry.h:39
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
End User Description: DtActuator is the base class for all actuator model components.
Definition: actuatorComponent.h:48
DtUpdateRepositoryOutputPortGroup * myUpdateRepositoryOutputPortGroup
Port group used to set what values should be set into the VRF state repository.
Definition: automotiveActuatorComponent.h:481
DtConstrainedAnalogInputPort * myBrakePort
Input Port Name: brake Input Port Description: Input Port Range: 0.0 to 1.0 Input Port Default Valu...
Definition: automotiveActuatorComponent.h:443
DtConstrainedIntegerInputPort * myGearPort
Input Port Name: gear Input Port Description: Input Port Default Value: 0 Input Port Range: Reverse...
Definition: automotiveActuatorComponent.h:450
DtConstrainedAnalogInputPort * myThrottlePort
Input Port Name: throttle Input Port Description: Input Port Range: Input Port Default Value: 0 Inp...
Definition: automotiveActuatorComponent.h:429
bool myKeepParentPosition
Definition: automotiveActuatorComponent.h:486
Instances of DtAutomotivePSR are used to hold the shared/checkpointable data for an automotive system...
Definition: automotivePSR.h:36
DtAutomotiveActuatorDescriptor; descriptor for the DtAutomotiveActuatorComponent component.
Definition: automotiveActuatorDescriptor.h:24
bool myDataUnavailableOnTerrainUpdate
A flag to indicate that data was not available when querying terrain during a terrain update so that ...
Definition: automotiveActuatorComponent.h:501
virtual void tick()
This gives the thread of control to the component.
double mySlopeBoostRate
Definition: automotiveActuatorComponent.h:493
Contains class declarations for DtBooleanInputPort, DtBooleanOutputPort, and DtBooleanPortData.
Definition: boolIOPort.h:25
DtConstrainedAnalogInputPort * mySteeringPort
Input Port Name: steering Input Port Description: Input Port Range: -1.0 to 1.0 Input Port Default V...
Definition: automotiveActuatorComponent.h:436
virtual bool createPorts()
Called by init.
DtBooleanInputPort * myParkingBrakePort
Input Port Name: parking-brake Input Port Description: Input Port Range: Input Port Default Value: ...
Definition: automotiveActuatorComponent.h:457
DtGroundVehicleStateRepository * myGroundVehicleState
Definition: automotiveActuatorComponent.h:473
class DtSoilFactors:
Definition: soilFactors.h:31
virtual bool createPortGroups()
Called by init.
bool myTerrainUpdateTriggeredFlag
A flag that is set if the terrain has been altered.
Definition: automotiveActuatorComponent.h:496
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
Definition: vrfChordIntersectionRecord.h:19
DtAutoTransmissionGearEnum
Definition: automotivePSR.h:24
const DtAutomotiveActuatorDescriptor * myAutomotiveDescriptor
Definition: automotiveActuatorComponent.h:485
DtInputPortGroup is a data port group of a data consumer.
Definition: inputPortGroup.h:32
DtUUID myWasJustEmbarkedOn
Definition: automotiveActuatorComponent.h:487
double myLastPitch
Definition: automotiveActuatorComponent.h:489
DtInputPortGroup * myAutomotiveControlPortGroup
Input Port Group Name: automotive-control Input Port Group Description: Provides input to the automot...
Definition: automotiveActuatorComponent.h:462
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
DtAutomotiveActuatorComponent provides a kinematics-based model of an automotive system.
Definition: automotiveActuatorComponent.h:44
double myLastPitchHeading
Definition: automotiveActuatorComponent.h:490
DtUpdateRepositoryOutputPortGroup is a data port group of a data consumer that contains methods and p...
Definition: updateRepositoryOutputPortGroup.h:28
virtual const char * type() const =0
Returns a string identifies the class type of component.
Contains class declarations for DtConstrainedIntegerInputPort and DtConstrainedIntegerOutputPort.
Definition: constrainedIntegerIOPort.h:26

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)