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