From a3359ece9854f8717c9da6fa59b589460e8b9006 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 8 Feb 2017 13:03:09 +0100 Subject: [PATCH] reset braking power before next search, fix gearbox: add inertia --- .../Impl/DefaultDriverStrategy.cs | 1 + .../SimulationComponent/Impl/Gearbox.cs | 22 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index 34a04c78e5..e63f0466d1 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -691,6 +691,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Case<ResponseGearShift>(r => { Log.Info("Brake -> Got GearShift response, performing roll action + brakes"); //response = Driver.DrivingActionRoll(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); + DataBus.BrakePower = 0.SI<Watt>(); response = Driver.DrivingActionBrake(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient, targetDistance: targetDistance); }); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index 25f4aacb60..c02b652086 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -74,7 +74,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl return _engageTime.IsSmallerOrEqual(absTime); } - public Gearbox(IVehicleContainer container, GearboxData gearboxModelData, IShiftStrategy strategy, KilogramSquareMeter engineInertia) + public Gearbox(IVehicleContainer container, GearboxData gearboxModelData, IShiftStrategy strategy, + KilogramSquareMeter engineInertia) : base(container, gearboxModelData, engineInertia) { _strategy = strategy; @@ -309,14 +310,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var inTorque = outTorque / ModelData.Gears[Gear].Ratio + inTorqueLossResult.Value; var inAngularVelocity = outAngularVelocity * ModelData.Gears[Gear].Ratio; + var inertiaTorqueLossOut = !inAngularVelocity.IsEqual(0) + ? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / + avgOutAngularVelocity + : 0.SI<NewtonMeter>(); + inTorque += inertiaTorqueLossOut / ModelData.Gears[Gear].Ratio; if (dryRun) { - CurrentState.InertiaTorqueLossOut = !inAngularVelocity.IsEqual(0) - ? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / - avgOutAngularVelocity - : 0.SI<NewtonMeter>(); - inTorque += CurrentState.InertiaTorqueLossOut / ModelData.Gears[Gear].Ratio; - var inertiaTorqueLossIn = avgOutAngularVelocity.IsEqual(0, 1e-9) ? 0.SI<NewtonMeter>() : Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / @@ -357,11 +357,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl // begin critical section CurrentState.TransmissionTorqueLoss = inTorque - outTorque / ModelData.Gears[Gear].Ratio; // MQ 19.2.2016: check! inertia is related to output side, torque loss accounts to input side - CurrentState.InertiaTorqueLossOut = !inAngularVelocity.IsEqual(0) - ? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / - avgOutAngularVelocity - : 0.SI<NewtonMeter>(); - inTorque += CurrentState.InertiaTorqueLossOut / ModelData.Gears[Gear].Ratio; + CurrentState.InertiaTorqueLossOut = inertiaTorqueLossOut; CurrentState.TransmissionTorqueLoss = inTorque - outTorque / ModelData.Gears[Gear].Ratio; CurrentState.TorqueLossResult = inTorqueLossResult; @@ -378,7 +374,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected override void DoWriteModalResults(IModalDataContainer container) { var avgInAngularSpeed = (PreviousState.InAngularVelocity + CurrentState.InAngularVelocity) / 2.0; - // (PreviousState.OutAngularVelocity + + // (PreviousState.OutAngularVelocity + //CurrentState.OutAngularVelocity) / 2.0 * ModelData.Gears[Gear].Ratio; container[ModalResultField.Gear] = Disengaged || DataBus.VehicleStopped ? 0 : Gear; -- GitLab