add stop iteration of algorithm if any measure on 60-120 angles is incorrect
This commit is contained in:
@@ -113,6 +113,11 @@ abstract class AbstractAlgorithm(val thisCar: Car, val exchanger: Exchanger<IntA
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
val command = getCommand(anglesDistances, state)
|
val command = getCommand(anglesDistances, state)
|
||||||
|
|
||||||
|
if (command == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
afterGetCommand(command)
|
afterGetCommand(command)
|
||||||
println(Arrays.toString(command.directions))
|
println(Arrays.toString(command.directions))
|
||||||
println(Arrays.toString(command.distances))
|
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 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)
|
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 dist0 = anglesDistances[Angle(0)]!!
|
||||||
val dist60 = anglesDistances[Angle(60)]!!
|
val dist60 = anglesDistances[Angle(70)]!!
|
||||||
val dist90 = anglesDistances[Angle(90)]!!
|
val dist90 = anglesDistances[Angle(90)]!!
|
||||||
val dist120 = anglesDistances[Angle(120)]!!
|
val dist120 = anglesDistances[Angle(110)]!!
|
||||||
val sonarAngle = carAngle - 90
|
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 (calibrateAfterRotate) {
|
||||||
if (Math.abs(dist60.distance - dist120.distance) > 4) {
|
if (Math.abs(dist60.distance - dist120.distance) > 4) {
|
||||||
println("Flaw in align found, correcting")
|
println("Flaw in align found, correcting")
|
||||||
|
|||||||
Reference in New Issue
Block a user