From 2fc7ad47863cc201b4a3792d768a32aecc7681a8 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Thu, 21 Jul 2022 11:32:37 +0200
Subject: [PATCH] VECTO-1615 and VECTO-1616: Braking ended in vehiclespeed
 being slightly below TargetSpeed. Added Tolerance of 0.1 km/h

(cherry picked from commit 61157f8470367e3f120f757ee01d15965a44f18a)
---
 VectoCore/VectoCore/Configuration/Constants.cs               | 5 +++++
 .../Models/SimulationComponent/Impl/DefaultDriverStrategy.cs | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/VectoCore/VectoCore/Configuration/Constants.cs b/VectoCore/VectoCore/Configuration/Constants.cs
index cd55cf98a9..f4df273aa7 100644
--- a/VectoCore/VectoCore/Configuration/Constants.cs
+++ b/VectoCore/VectoCore/Configuration/Constants.cs
@@ -282,6 +282,11 @@ namespace TUGraz.VectoCore.Configuration
 
 			public static readonly Meter BrakeNextTargetDistance = 2.5.SI<Meter>();
 
+			/// <summary>
+			/// used in DriverModeBrake to detect if a vehicle is already below the speed of the brake trigger.
+			/// </summary>
+			public static readonly MeterPerSecond BrakeTriggerSpeedTolerance = 0.1.KMPHtoMeterPerSecond();
+			
 			public static readonly MeterPerSecond MinVelocityForCoast = 5.KMPHtoMeterPerSecond();
 
 			/// <summary>
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
index 5a40c85b10..a45144c5ca 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
@@ -1178,7 +1178,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			Second absTime, Meter ds, MeterPerSecond targetVelocity, Radian gradient,
 			bool prohibitOverspeed = false)
 		{
-			if (DataBus.VehicleInfo.VehicleSpeed.IsSmallerOrEqual(DriverStrategy.BrakeTrigger.NextTargetSpeed) && !DataBus.VehicleInfo.VehicleStopped) {
+			if (DataBus.VehicleInfo.VehicleSpeed.IsSmaller(DriverStrategy.BrakeTrigger.NextTargetSpeed, Constants.SimulationSettings.BrakeTriggerSpeedTolerance)
+				&& !DataBus.VehicleInfo.VehicleStopped) {
 				var retVal = HandleTargetspeedReached(absTime, ds, targetVelocity, gradient);
 				for (var i = 0; i < 3 && retVal == null; i++) {
 					retVal = HandleTargetspeedReached(absTime, ds, targetVelocity, gradient);
-- 
GitLab