VR-Forces 4.6.1 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 
92  virtual DtSoilFactors* soilFactors() const;
93 
100  virtual void useFuel(double fuelUsed);
101 
107  virtual double fuelLeft() const;
108 
126  virtual void updateRepository(const DtVector & localPosition,
127  const DtVector & localVelocity, const DtVector & localAcceleration,
128  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
129  double newHeading);
130 
131 
136  virtual double calculateMaxDecelerationFromFriction(
137  const DtVector& oldBodyVelocity);
138 
143  virtual double calculateMaxDecelerationFromBrake(double brake);
144 
149  virtual double calculateAccelerationFromEngine(double throttle,
151 
162  virtual double calculateDecelerationFromSoilType(
163  const DtVector& oldBodyVelocity);
164 
166  //~ (i.e., rise-over-run, or tangent of pitch).
172  virtual double calculateAccelerationFromSlope(double slope);
173 
187  virtual void calculateOrientationAndPosition(
188  const DtVector& newLocalProjectedLocation, double newHeading,
189  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
190 
196  virtual bool useHighFidelityGroundClamping() const;
197 
209  bool groundClamp(double heading, const DtVector& location,
210  DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
211 
216  void groundClampHighFidelity(double heading, const DtVector& location,
217  DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
218 
224  void groundClampLowFidelity(double heading, const DtVector& location,
225  DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
226 
231  virtual double calculateHeading(double oldHeading,
232  const DtVector& oldBodyVelocity, DtAutoTransmissionGear gear,
233  double steering, double throttle, double dT);
234 
242  virtual DtVector calculateBodyAcceleration(double throttle,
243  DtAutoTransmissionGear gear, double brake,
244  const DtVector& oldBodyVelocity, double oldPitch, double dT);
245 
246  virtual DtVector calculateBodyVelocity(
247  const DtVector& oldBodyVelocity, const DtVector& newBodyAcceleration,
248  double dT);
249 
250  virtual DtVector calculateProjectedLocation(
251  const DtVector& oldLocalPosition, const DtVector& newBodyAcceleration,
252  const DtVector& oldBodyVelocity, double newHeading);
253 
262  virtual bool checkForTerrainCollisions() const;
263 
269  virtual bool foundTerrainCollision(double heading,
270  const DtVector& oldLocalPosition,
271  const DtVector& newLocalPosition,
273  &collisionIntersectionRecord) const;
274 
284  virtual bool createMovementChord(DtChord& movementChord,
285  double heading,
286  const DtVector& oldLocalPosition,
287  const DtVector& newLocalPosition) const;
288 
293  virtual bool terrainPassable(double heading,
295  terrainIntersectionRecord) const;
296 
297 
299  virtual double calculateMaxSpeed();
300 
303  virtual double calculateMaxAcceleration();
304 
309  virtual double calculatePitch(const DtVector& localPosition, double heading,
310  const DtAttachedTerrain& terrain);
311 
315  virtual void calculateDirectionOfLinearMotion(
316  const DtDcm& newLocalOrientation, const DtVector& newLocalPosition,
317  DtDcm& newLocalDirectionOfLinearMotion);
318 
322  virtual double getPitchAdjustedMaxSpeed(double maxSpeed, double pitch) const;
323 
325  virtual bool createPortGroups();
326 
328  virtual bool createPorts();
329 
335  virtual bool createPSR();
336 
340  virtual bool rotationalVelocityShouldBeClamped(const DtVector&
341  bodyRotationalVelocity);
342 
344  virtual double steeringControlValue() const;
346  virtual double throttleControlValue() const;
348  virtual double brakeControlValue() const;
350  virtual DtAutoTransmissionGear gearControlValue() const;
352  virtual bool parkingBrakeControlValue() const;
353 
356  virtual bool checkIfMoveOntoEmbarked(const DtVector& localPosition);
357 
358  virtual bool checkAndDisembarkIfEmbarked(const DtVector& localPosition);
359 
360 private:
363 
366 
370 
371 protected:
372 
375 
382 
389 
396 
403 
410 
415 
417 
419 
423 
427 
431 
432  double myLastPitch;
435 };
436 

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)