From adb7aeb085c35c5764fd04dd2a560d5616460e96 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 14 Sep 2022 12:48:33 +0200 Subject: [PATCH] DriverStrategy: additional criteria for switching from coasting to braking. in case the braking phase is very short (smaller than half of the lower-bound simulation time interval), immediately switch to braking --- .../SimulationComponent/Impl/DefaultDriverStrategy.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index c2c71ef3ce..a4e3d8fe2b 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -1381,6 +1381,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Log.Debug("Switching to BRAKE Phase. currentDistance: {0}", currentDistance); } else { if ((currentDistance + ds).IsGreater(DriverStrategy.BrakeTrigger.BrakingStartDistance)) { + var remainingDistance = DriverStrategy.BrakeTrigger.TriggerDistance - + DriverStrategy.BrakeTrigger.BrakingStartDistance; + var remainingTime = remainingDistance / DataBus.VehicleInfo.VehicleSpeed; + var brakingIntervalTooShort = remainingTime.IsSmaller( + Constants.SimulationSettings.LowerBoundTimeInterval / 2); + if (brakingIntervalTooShort) { + Phase = BrakingPhase.Brake; + return null; + } return new ResponseDrivingCycleDistanceExceeded(this) { MaxDistance = DriverStrategy.BrakeTrigger.BrakingStartDistance - currentDistance }; -- GitLab