add stop iteration of algorithm if any measure on 60-120 angles is incorrect

This commit is contained in:
MaximZaitsev
2016-08-31 09:03:43 +03:00
parent 5c3c63a60a
commit 698516309b
2 changed files with 13 additions and 4 deletions
@@ -113,6 +113,11 @@ abstract class AbstractAlgorithm(val thisCar: Car, val exchanger: Exchanger<IntA
return
}
val command = getCommand(anglesDistances, state)
if (command == null) {
return
}
afterGetCommand(command)
println(Arrays.toString(command.directions))
println(Arrays.toString(command.distances))
@@ -137,7 +142,7 @@ abstract class AbstractAlgorithm(val thisCar: Car, val exchanger: Exchanger<IntA
}
protected abstract fun getCarState(anglesDistances: Map<Angle, AngleData>): CarState?
protected abstract fun getCommand(anglesDistances: Map<Angle, AngleData>, state: CarState): RouteMetricRequest
protected abstract fun getCommand(anglesDistances: Map<Angle, AngleData>, state: CarState): RouteMetricRequest?
protected abstract fun afterGetCommand(route: RouteMetricRequest)
@@ -104,14 +104,18 @@ class RoomBypassingAlgorithm(thisCar: Car, exchanger: Exchanger<IntArray>) : Abs
}
}
override fun getCommand(anglesDistances: Map<Angle, AngleData>, state: CarState): RouteMetricRequest {
override fun getCommand(anglesDistances: Map<Angle, AngleData>, 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")