124 virtual double combinedAcceleration(
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,
137 bool & pathContinues,
138 double & distanceToLaneEnd,
139 double & freeFlowAccel,
140 double &orderedSpeedAccel,
191 virtual int selectedLane(
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,
212 virtual double oldLaneObstacleConstraint(
214 const double currentPosition,
const double currentOffset,
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);
225 virtual double distanceNeededToChangeLanes(
226 const double minTurnRadius,
227 const double distanceBetweenLanes,
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);
248 virtual double orderedSpeedAcceleration(
const double currentSpeed,
249 const double orderedSpeed,
265 virtual double extraAccelLimit(
const double currentSpeed,
266 const double dt,
bool debug =
false)
289 virtual double downstreamCurveAccelConstraint(
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);
306 virtual double downstreamSpeedLimitAccelConstraint(
DtRoadSegment* currentSegment,
307 const double desiredDecelToUse,
308 const double dt,
const double currentSpeed,
bool debug =
false);
341 virtual double laneEndAccelConstraint(
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);
367 virtual double obstacleAccelConstraint(
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);
402 virtual double completeLaneChangeMnvrAccelConstraint(
406 const double accelForNoObstacle,
const double currentSpeed,
407 const double completionFraction,
408 const double completionDistance,
bool debug =
false);
415 virtual bool laneConstrainedBelowFreeFlow(
const double currentLaneAcceleration,
416 const double otherLaneAcceleration,
417 const double tickPeriod,
418 const double currentSpeed);
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);