diff --git a/server/src/main/java/algorithm/AbstractAlgorithm.kt b/server/src/main/java/algorithm/AbstractAlgorithm.kt index b8baa19bfec..1defeef11c4 100644 --- a/server/src/main/java/algorithm/AbstractAlgorithm.kt +++ b/server/src/main/java/algorithm/AbstractAlgorithm.kt @@ -113,6 +113,11 @@ abstract class AbstractAlgorithm(val thisCar: Car, val exchanger: Exchanger): CarState? - protected abstract fun getCommand(anglesDistances: Map, state: CarState): RouteMetricRequest + protected abstract fun getCommand(anglesDistances: Map, state: CarState): RouteMetricRequest? protected abstract fun afterGetCommand(route: RouteMetricRequest) diff --git a/server/src/main/java/algorithm/RoomBypassingAlgorithm.kt b/server/src/main/java/algorithm/RoomBypassingAlgorithm.kt index 7c13d444309..b17f1bbf768 100644 --- a/server/src/main/java/algorithm/RoomBypassingAlgorithm.kt +++ b/server/src/main/java/algorithm/RoomBypassingAlgorithm.kt @@ -104,14 +104,18 @@ class RoomBypassingAlgorithm(thisCar: Car, exchanger: Exchanger) : Abs } } - override fun getCommand(anglesDistances: Map, state: CarState): RouteMetricRequest { + override fun getCommand(anglesDistances: Map, state: CarState): RouteMetricRequest? { val dist0 = anglesDistances[Angle(0)]!! - val dist60 = anglesDistances[Angle(60)]!! + val dist60 = anglesDistances[Angle(70)]!! val dist90 = anglesDistances[Angle(90)]!! - val dist120 = anglesDistances[Angle(120)]!! + val dist120 = anglesDistances[Angle(110)]!! val sonarAngle = carAngle - 90 + if (anglesDistances.filter { it.value.angle.degs() >= 60 && it.value.angle.degs() <= 120 && it.value.distance == -1 }.size != 0) { + return null + } + if (calibrateAfterRotate) { if (Math.abs(dist60.distance - dist120.distance) > 4) { println("Flaw in align found, correcting")