VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
308  virtual DtVector calculateRotationalVelocity(
309  const DtDcm& newOrientation,
310  const DtDcm& oldOrientation, double dT);
311 
316  virtual double calculatePitch(const DtVector& localPosition, double heading,
317  const DtAttachedTerrain& terrain);
318 
322  virtual void calculateDirectionOfLinearMotion(
323  const DtDcm& newLocalOrientation, const DtVector& newLocalPosition,
324  DtDcm& newLocalDirectionOfLinearMotion);
325 
329  virtual double getPitchAdjustedMaxSpeed(double maxSpeed, double pitch) const;
330 
332  virtual bool createPortGroups();
333 
335  virtual bool createPorts();
336 
342  virtual bool createPSR();
343 
347  virtual bool rotationalVelocityShouldBeClamped(const DtVector&
348  bodyRotationalVelocity);
349 
351  virtual double steeringControlValue() const;
353  virtual double throttleControlValue() const;
355  virtual double brakeControlValue() const;
357  virtual DtAutoTransmissionGear gearControlValue() const;
359  virtual bool parkingBrakeControlValue() const;
360 
361 private:
364 
367 
371 
372 protected:
373 
376 
383 
390 
397 
404 
411 
416 
418 
420 
424 
428 
431 };
432 

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)