VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
groundAutoControllerComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 #pragma once
12 
15 
16 class DtString;
19 class DtTaskMessage;
20 class DtSoilFactors;
21 class DtAutomotivePSR;
25 
35 {
36 public:
37 
41  DtLocalObject* owner,
42  DtSimulationServices* simManager,
43  DtComponentDescriptor* desc = 0,
44  DtReaderWriterRegistry* parentRegistry = 0);
45 
47  virtual ~DtGroundAutoControllerComponent() override;
48 
50  virtual bool init() override;
51 
54  virtual const char* type() const override;
55 
58  virtual void clearTask() override;
59 
68  virtual double mildAccelerationConstant() const;
70  virtual double standardAccelerationConstant() const;
72  virtual double hardAccelerationConstant() const;
74  virtual double maxAccelerationConstant() const;
75 
80  virtual double currentAccelerationToUse() const;
82 
103  virtual double computeSpeedForFastestTurn(
104  const double latAccelLimit = 0.0) const;
105 
110  virtual double speedForFastestTurn() const;
111  virtual void setSpeedForFastestTurn(double speed);
112 
134  virtual double approximateThrottle(double desiredSpeed, double headingError = 0.0);
135 
147  double speedConstraintForHeadingError(
148  const double headingError, const double maxAccel = 0.0) const;
149  virtual double headingErrorRequiringMinTurnRadius() const { return 0.5; }
150 
159  virtual double calculateSteering(double currentHeading, double
160  desiredHeading) const;
161 
162 
163  virtual double calculateCurrentBrakingDistance() const;
164 
167 
170  virtual bool createAutomotiveControlPortGroup();
171  virtual bool createThrottlePort();
172  virtual bool createSteeringPort();
173  virtual bool createBrakePort();
174  virtual bool createGearPort();
175  virtual bool createParkingBrakePort();
176 
177  virtual DtConstrainedAnalogOutputPort * throttlePort();
178  virtual DtConstrainedAnalogOutputPort * steeringPort();
179  virtual DtConstrainedAnalogOutputPort * brakePort();
180  virtual DtConstrainedIntegerOutputPort * gearPort();
181  virtual DtBooleanOutputPort * parkingBrakePort();
182 
186  virtual void setThrottleFromAcceleration(const double signedAccel);
187 
189 
190  virtual double decelerationSoilFactor() const;
191 
199  virtual double tractionFactorFromSoilAndWeather() const;
200 
206  virtual double calcSteeringForTurnInPlace();
207 
211  virtual double calcThrottleForTurnInPlace();
212 
215  virtual double calcBrakeForTurnInPlace();
216 
224  virtual int calcGearForTurnInPlace();
225 
229  virtual double calcSteeringForPivot();
230 
234  virtual double calcThrottleForPivot();
235 
239  virtual double calcSteeringForKTurn();
240 
244  virtual double calcThrottleForKTurn();
245 
249  virtual double calcBrakeForKTurn();
250 
256  virtual double findSpeedForKTurn();
257 
261  virtual double findHeadingForKTurn();
262 
264  virtual void setHeadingToTurnTo(double headingToTurnTo);
265  virtual double headingToTurnTo() const;
266 
268  virtual double calculateHeadingToTurnTo();
269 
271  virtual void setTurnToMode(int headingToTurnTo);
272  virtual int turnToMode() const;
273 
277  virtual void setKTurnReverseGoalHeading(double kTurnReverseGoalHeading);
278  virtual double kTurnReverseGoalHeading() const;
279 
283  virtual void setKTurnReverseComplete(bool kTurnReverseComplete);
284  virtual bool kTurnReverseComplete() const;
285 
289  static void setSpeedCallback(DtSimMessage * msg, void * usrData);
290  virtual void processSetSpeed(DtSimMessage * msg);
292 
293  virtual DtAutomotivePSR* processState() const;
294 
295 protected:
297  virtual bool createPorts() override;
298 
300  virtual bool createPortGroups() override;
301 
309  virtual void lookupAndCacheProcessSR();
310 
313  virtual bool postAddComponentsInit() override;
314 
315  virtual const DtSoilFactors * currentSoilFactors() const;
316 
319  virtual bool decideToGiveUpTask() const override;
320 
321 private:
322 
325 
328  orig);
329 
333 
334 
335 protected:
336 
338 
341 
348 
355 
362 
369 
375 
380 
382 
389 
394 
397 
400 
402 
406 };
DtConstrainedIntegerOutputPort is a version of DtIntegerOutputPort which will constrain any outgoing ...
Definition: constrainedIntegerIOPort.h:53
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtConstrainedIntegerOutputPort * myGearPort
Output Port Name: gear Output Port Description: Output Port Range: Output Port Default Value: Outp...
Definition: groundAutoControllerComponent.h:368
Description: This repository holds all information that is common to all the forms of local ground en...
Definition: groundVehicleStateRepository.h:30
bool myHaveWarnedAboutNoPivotSpeed
Flag to make sure a warning is printed only the first time. Mutable so it can be modified in otherwis...
Definition: groundAutoControllerComponent.h:405
DtAutomotivePSR * myProcessState
Pointer to a process state repository used to store state data associated with this component...
Definition: groundAutoControllerComponent.h:388
virtual bool postAddComponentsInit() override
Calls enableTaskTypes()
DtConstrainedAnalogOutputPort * mySteeringPort
Output Port Name: steering Output Port Description: Output Port Range: -1.0 to 1.0 Output Port Default Value: Output Group Parent: automotive-control.
Definition: groundAutoControllerComponent.h:354
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Instances of DtBooleanOutputPort are output ports through which data producers can send boolean data...
Definition: boolIOPort.h:45
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:22
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Definition: readerWriterRegistry.h:39
DtOutputPortGroup is a data port group of a data provider. It may contain any number of DtOutputPorts...
Definition: outputPortGroup.h:34
DtConstrainedAnalogOutputPort is a version of DtAnalogOutputPort which will constrain any outgoing va...
Definition: constrainedAnalogIOPort.h:57
virtual double headingErrorRequiringMinTurnRadius() const
Definition: groundAutoControllerComponent.h:149
virtual bool init() override
Calls setRadio()
double mySpeedLastTick
For derivative control in approximateThrottle. Note–not added to process state; on scenario reload...
Definition: groundAutoControllerComponent.h:393
Instances of DtAutomotivePSR are used to hold the shared/checkpointable data for an automotive system...
Definition: automotivePSR.h:45
double mySpeedForFastestTurn
Caches the value computed in init() with computeSpeedForFastestTurn.
Definition: groundAutoControllerComponent.h:399
File: simMsg.h.
Definition: simMessage.h:35
virtual bool createPorts()
Called by init. Derived classes should override this method to create all their input/output ports an...
virtual bool decideToGiveUpTask() const
This function is used to determine if the controller should give up trying to execute the current tas...
class DtSoilFactors:
Definition: soilFactors.h:31
virtual bool createPortGroups()
Called by init. Derived classes should override this method to create all their input/output port gro...
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
virtual void clearTask() override
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtConstrainedAnalogOutputPort * myBrakePort
Output Port Name: brake Output Port Description: Output Port Range: 0. to 1. Output Port Default Val...
Definition: groundAutoControllerComponent.h:361
DtConstrainedAnalogOutputPort * myThrottlePort
Output Port Name: throttle Output Port Description: Output Port Range: 0. to 1. Output Port Default ...
Definition: groundAutoControllerComponent.h:347
double myAccumulatedSpeedError
For integral speed control.
Definition: groundAutoControllerComponent.h:396
DtOutputPortGroup * myAutomotiveControlPortGroup
Output Port Group Name: automotive-control Output Port Group Description: Collection of control outpu...
Definition: groundAutoControllerComponent.h:379
DtBooleanOutputPort * myParkingBrakePort
Output Port Name: parking-brake Output Port Description: Output Port Default Value: True Output Grou...
Definition: groundAutoControllerComponent.h:374
A DtTaskMsg is a DtRadioMsg with a pointer to a task. The type of the taskMsg is just the type of the...
Definition: taskMessage.h:21
DtPlatformLocalObjectFacade myPlatformLocalObjectFacade
Definition: groundAutoControllerComponent.h:401
DtGroundVehicleStateRepository * myGroundVehicleState
Definition: groundAutoControllerComponent.h:337
DtGroundAutoControllerComponent is a base controller that holds capabilitites common to all automotiv...
Definition: groundAutoControllerComponent.h:34
A locally simulated VRF object.
Definition: localObject.h:98

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)