From 21462d79285a300ad1a7f744cb108375b1b356a6 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 17 May 2016 10:59:44 +0200 Subject: [PATCH] fix: estimating distance before brake: handle case of no positive results can be found for dt --- .../SimulationComponent/Impl/DefaultDriverStrategy.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index b67fecf445..56972493d3 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -477,8 +477,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Driver.DataBus.VehicleSpeed * Driver.DataBus.VehicleSpeed / 2 / Driver.DriverData.LookAheadCoasting.Deceleration - (nextAction.TriggerDistance - Driver.DataBus.Distance)).Value()); dtList.Sort(); + if (!dtList.Any(x => x > 0)) { + return null; + } var dt = dtList.First(x => x > 0).SI<Second>(); - var newds = Driver.DataBus.VehicleSpeed * dt + retVal.Acceleration / 2 * dt * dt; + var newds = Driver.DataBus.VehicleSpeed * dt + (retVal.Acceleration / 2 * dt * dt); return newds; } } @@ -566,7 +569,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Constants.SimulationSettings.DriverActionDistanceTolerance)) { return response; } - newds = EstimateAccelerationDistanceBeforeBrake(response, nextAction); + newds = EstimateAccelerationDistanceBeforeBrake(response, nextAction) ?? ds; break; case DrivingBehavior.Braking: var brakingDistance = Driver.DriverData.AccelerationCurve.ComputeAccelerationDistance(v2, -- GitLab