VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
roadDrivingLogic.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2017 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
12 #include "vrfmodel/roadSegment.h"
13 
17 
19 {
20 public:
21  DtRoadDrivingLogic(DtRoadMovementController * parentController);
23 
29 
33  virtual double maxDesignDriverLateralAcceleration_G(){ return 0.15; }
34 
38  virtual double desiredDecelerationFractionOfMax(){ return 0.3; }
42  virtual double desiredAccelerationFractionOfMax(){ return 0.5; }
46  virtual double desiredLateralAccelerationFractionOfMax(){ return 0.4; }
47 
52  virtual double desiredFixedHeadway(){ return 1.0; }
53 
60  virtual double minimumCurveSpeed(){ return 1.0; }
61 
66  virtual double maximumLaneChangeTurnAngle(){ return 0.8; }
67 
72  virtual double laneChangeFractionToClearLane(){ return 0.4; }
73 
79  virtual double laneEndCheckLookaheadTime(){ return 15.0; }
80 
85  virtual double laneSwitchDecisionAccelThreshold(){ return 4.0; }
86 
93  virtual double maxForcedDecelForGapAcceptance(){ return -4.0; }
94 
96 
103 
124  virtual double combinedAcceleration(
125  DtRoadSegment* currentRoadSegment,
126  const double desiredDecelToUse,
127  const double tickPeriod,
128  const double currentSpeed,
129  const double orderedSpeed,
130  const int laneNumber,
131  const double positionInLane,
132  const double laneSpaceRequired,
133  const double laneChangeWidth,
134  const double maxAcceleration,
135  const double maxLateralAccel,
136  bool &laneContinues,
137  bool & pathContinues,
138  double & distanceToLaneEnd,
139  double & freeFlowAccel,
140  double &orderedSpeedAccel,
141  bool debug = false);
142 
191  virtual int selectedLane(
192  DtRoadSegment* currentRoadSegment,
193  const int roadLaneN,
194  const bool currentLaneContinues,
195  const double distanceToLaneEnd,
196  const double positionInLane,
197  const double currentSpeed,
198  const double currentLaneAcceleration,
199  const double freeFlowAcceleration,
200  const double tickPeriod,
201  const double desiredDecelToUse,
202  const double maxLateralAccel,
203  const DtVrfObject* convoyTgt,
204  bool debug = false
205  );
206 
212  virtual double oldLaneObstacleConstraint(
213  DtRoadSegment* currentSegment, const DtMovingObjectParameters* params,
214  const double currentPosition, const double currentOffset,
215  const DtRoadObstructionFinder* obstructionFinder,
216  const double desiredDecelToUse, const double dt,
217  const double accelForNoObstacle, const double currentSpeed,
218  const int currentLaneN, std::vector<DtVector>& obstacleLocations,
219  std::vector<std::vector<DtVector> >& debugBoxes, bool debug = false);
220 
225  virtual double distanceNeededToChangeLanes(
226  const double minTurnRadius,
227  const double distanceBetweenLanes,
228  const double speed,
229  bool debug = false);
231 
232 protected:
233 
238 
239  double followConvoyAcceleration(
240  const double currentSpeed, const double tickPeriod,
241  const double deceleration,
242  const double convoyGap,
243  const DtVrfObject* leadVehicle, bool debug = false);
244 
248  virtual double orderedSpeedAcceleration(const double currentSpeed,
249  const double orderedSpeed,
250  const double dt,
251  bool debug = false);
252 
265  virtual double extraAccelLimit(const double currentSpeed,
266  const double dt, bool debug = false)
267  { return 1e8; }
268 
289  virtual double downstreamCurveAccelConstraint(
290  DtRoadSegment* startSegment,
291  const double desiredDecelToUse,
292  const double dt, const double currentSpeed, const int roadLaneN,
293  const double positionAlongLane,
294  const double maxAccel, const double maxLateralAccel, bool debug = false);
295 
306  virtual double downstreamSpeedLimitAccelConstraint(DtRoadSegment* currentSegment,
307  const double desiredDecelToUse,
308  const double dt, const double currentSpeed, bool debug = false);
309 
341  virtual double laneEndAccelConstraint(
342  DtRoadSegment* currentSegment, const double orderedSpeed,
343  const double desiredDecelToUse,
344  const double dt, const double currentSpeed, const int roadLaneN,
345  const double positionAlongLane,
346  const double extraSpaceRequired,
347  const double maxAccel,
348  bool & laneContinues,
349  double & distanceToLaneEnd, bool & pathContinues, bool debug = false);
350 
367  virtual double obstacleAccelConstraint(
368  DtRoadSegment* currentSegment, const DtMovingObjectParameters* params,
369  const DtRoadObstructionFinder* obstructionFinder,
370  const double desiredDecelToUse, const double dt, const double currentSpeed,
371  const int roadLaneN, const double positionAlongLane,
372  const double spaceNeeded,
373  double& obstacleDistanceAhead,
374  double& obstacleSpeed, std::vector<std::vector<DtVector> > & debugBoxes, std::vector<DtVector>& obstacleLocations, bool debug = false);
375 
402  virtual double completeLaneChangeMnvrAccelConstraint(
403  DtRoadSegment* currentSegment, const double currentOffset,
404  const double desiredDecelToUse, const DtMovingObjectParameters* params,
405  const double dt,
406  const double accelForNoObstacle, const double currentSpeed,
407  const double completionFraction,
408  const double completionDistance, bool debug = false);
409 
415  virtual bool laneConstrainedBelowFreeFlow(const double currentLaneAcceleration,
416  const double otherLaneAcceleration,
417  const double tickPeriod,
418  const double currentSpeed);
419 
428  virtual bool mergeGapAvailableBehind(const DtRoadSegment* currentRoadSegment,
429  const int roadLaneNum, const double positionInLane,
430  const double nominalDecel, const double tickPeriod,
431  const double ownSpeed, bool debug = false);
432 
434 
435 protected:
437 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)