From 084a5b027e94d27756e58975d1d20c0381d01f5f Mon Sep 17 00:00:00 2001 From: Erashin Date: Fri, 13 Dec 2024 10:13:32 +0100 Subject: [PATCH] core: unfinished: if target speed is not null, ebi should maintain that speed as soon as it is reached Signed-off-by: Erashin --- .../osrd/envelope_sim/etcs/ETCSBrakingCurves.kt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/envelope-sim/src/main/kotlin/fr/sncf/osrd/envelope_sim/etcs/ETCSBrakingCurves.kt b/core/envelope-sim/src/main/kotlin/fr/sncf/osrd/envelope_sim/etcs/ETCSBrakingCurves.kt index 6d199739f60..3f5c9cbda74 100644 --- a/core/envelope-sim/src/main/kotlin/fr/sncf/osrd/envelope_sim/etcs/ETCSBrakingCurves.kt +++ b/core/envelope-sim/src/main/kotlin/fr/sncf/osrd/envelope_sim/etcs/ETCSBrakingCurves.kt @@ -70,7 +70,7 @@ private fun computeBrakingCurvesAtEOAs( targetSpeed, BrakingType.ETCS_EBD ) - val ebiCurve = computeEbiBrakingCurveFromEbd(context, ebdCurve) + val ebiCurve = computeEbiBrakingCurveFromEbd(context, ebdCurve, targetSpeed) val indicationCurveSvl = computeIndicationBrakingCurveFromRef( context, @@ -100,7 +100,7 @@ private fun computeBrakingCurvesAtLOAs( computeBrakingCurve(context, mrsp, targetPosition, targetSpeed, BrakingType.ETCS_EBD) val guiCurve = computeBrakingCurve(context, mrsp, targetPosition, targetSpeed, BrakingType.ETCS_GUI) - val ebiCurve = computeEbiBrakingCurveFromEbd(context, ebdCurve) + val ebiCurve = computeEbiBrakingCurveFromEbd(context, ebdCurve, targetSpeed) val indicationCurve = computeIndicationBrakingCurveFromRef(context, ebiCurve, BrakingCurveType.EBI, guiCurve) builder.addPart(indicationCurve) @@ -162,18 +162,17 @@ private fun computeBrakingCurve( /** Compute braking curves at every slowdown, with a given reference curve. */ private fun computeEbiBrakingCurveFromEbd( context: EnvelopeSimContext, - ebdCurve: EnvelopePart + ebdCurve: EnvelopePart, + targetSpeed: Double ): EnvelopePart { val pos = ebdCurve.clonePositions() val speeds = ebdCurve.cloneSpeeds() val newPos = ArrayList() val newSpeeds = ArrayList() + val intersection = ebdCurve.interpolateSpeed(targetSpeed) for (i in 0 until ebdCurve.pointCount()) { - // TODO : give a proper target speed, depending on the case (slowdown vs marker board), - // using ceiling -> not - // sure about this, comment by alex val deltaPosAndDeltaSpeed = - computeBecDeltaPosAndSpeed(context, ebdCurve, speeds[i], ebdCurve.beginSpeed) + computeBecDeltaPosAndSpeed(context, ebdCurve, speeds[i], targetSpeed) val deltaPos = deltaPosAndDeltaSpeed.component1() val deltaSpeed = deltaPosAndDeltaSpeed.component2() // TODO: when targetSpeed !=0 and newSpeed == targetSpeed -> maintain speed = target speed