diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index 503426de7d635ca4d112e04995a75fe9e3dd5930..06e2dbb2d800d8f467e654a48c9eb295a5528120 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -626,23 +626,30 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl gradient, targetDistance: targetDistance); response.Switch(). Case<ResponseOverload>(r => { - Log.Info("Got OverloadResponse during brake action - desired deceleration could not be reached! response: {0}", r); + Log.Info( + "Brake -> Got OverloadResponse during brake action - desired deceleration could not be reached! response: {0}", + r); if (!DataBus.ClutchClosed(absTime)) { - Log.Info("Clutch is open - trying RollAction"); + Log.Info("Brake -> Overload -> Clutch is open - Trying roll action"); response = Driver.DrivingActionRoll(absTime, ds, targetVelocity, gradient); } else { - Log.Info("Clutch is closed - trying AccelerateAction"); - response = Driver.DrivingActionAccelerate(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); - response.Switch().Case<ResponseGearShift>( - rs => { - Log.Info("Got GearShift response, performing roll action..."); - response = Driver.DrivingActionRoll(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); - } - ); + Log.Info("Brake -> Overload -> Clutch is closed - Trying brake action again"); + response = Driver.DrivingActionBrake(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient, + targetDistance: targetDistance); + response.Switch(). + Case<ResponseOverload>(r1 => { + Log.Info("Brake -> Overload -> 2nd Brake -> Overload -> Trying accelerate action"); + response = Driver.DrivingActionAccelerate(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); + response.Switch().Case<ResponseGearShift>( + rs => { + Log.Info("Brake -> Overload -> 2nd Brake -> Accelerate -> Got GearShift response, performing roll action"); + response = Driver.DrivingActionRoll(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); + }); + }); } }). Case<ResponseGearShift>(r => { - Log.Info("Got GearShift response, performing roll action..."); + Log.Info("Brake -> Got GearShift response, performing roll action"); response = Driver.DrivingActionRoll(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); }); break;