diff --git a/car_fmw/src/Control.kt b/car_fmw/src/Control.kt index 57c4ecd3610..584240a61b5 100644 --- a/car_fmw/src/Control.kt +++ b/car_fmw/src/Control.kt @@ -73,7 +73,6 @@ object Control { val attempts = request.attempts val distances = IntArray(size) - var i = 0 while (i < size) { distances[i] = sonarMeasure(request.smoothing, attempts[i], angles[i], request.windowSize) @@ -89,11 +88,9 @@ object Control { var i = 0 while (i < attempts) { data[i] = Sonar.getSmoothDistance(angle, windowSize) - if (smoothing.id == SonarRequest.Smoothing.NONE.id && data[i] != -1) { return data[i] } - i++ } diff --git a/server/.idea/compiler.xml b/server/.idea/compiler.xml index 96cc43efa6a..4dfdaaf6193 100644 --- a/server/.idea/compiler.xml +++ b/server/.idea/compiler.xml @@ -18,5 +18,9 @@ + + + + \ No newline at end of file diff --git a/server/.idea/gradle.xml b/server/.idea/gradle.xml index 2d5721d43e3..05e52194ddf 100644 --- a/server/.idea/gradle.xml +++ b/server/.idea/gradle.xml @@ -11,7 +11,7 @@ - diff --git a/server/.idea/misc.xml b/server/.idea/misc.xml index ee2a58cb493..20cd4f70c34 100644 --- a/server/.idea/misc.xml +++ b/server/.idea/misc.xml @@ -13,8 +13,8 @@ - - + + diff --git a/server/.idea/modules.xml b/server/.idea/modules.xml index 5f7ca56962f..7737f17b242 100644 --- a/server/.idea/modules.xml +++ b/server/.idea/modules.xml @@ -3,6 +3,8 @@ + + \ No newline at end of file diff --git a/server/.idea/modules/server.iml b/server/.idea/modules/server.iml index 94a5e3f4ba6..ae202140953 100644 --- a/server/.idea/modules/server.iml +++ b/server/.idea/modules/server.iml @@ -1,35 +1,12 @@ - - - + - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/src/main/java/RoomScanner/CarController.kt b/server/src/main/java/RoomScanner/CarController.kt index b075b0e6a94..a9528065b85 100644 --- a/server/src/main/java/RoomScanner/CarController.kt +++ b/server/src/main/java/RoomScanner/CarController.kt @@ -24,12 +24,12 @@ class CarController(var car: Car) { private var angle = 0.0 fun moveTo(to: Pair) { - val oldAngle = angle - rotateOn(estimateAngle(position, to)) + var driveAngle = (Math.toDegrees(Math.atan2(to.first, to.second)) + 360) % 360 + rotateOn(angleDistance(angle, driveAngle)) drive(Direction.FORWARD, Math.max(0.0, distance(position, to)).toInt() - WALL_DISTANCE) - rotateOn(oldAngle) - } + position = to + } fun rotateOn(target: Double) { val rotateAngle = angleDistance(angle, target) @@ -46,7 +46,7 @@ class CarController(var car: Car) { } fun scan(angles: IntArray): List> { - val request = SonarRequest.BuilderSonarRequest(angles, IntArray(angles.size, { 5 }), 0, SonarRequest.Smoothing.MEDIAN).build() + val request = SonarRequest.BuilderSonarRequest(angles, IntArray(angles.size, { 1 }), 10, SonarRequest.Smoothing.MEDIAN).build() val data = serialize(request.getSizeNoTag(), { i -> request.writeTo(i) }) val response = CarClient.sendRequest(car, CarClient.Request.SONAR, data).get().responseBodyAsBytes diff --git a/server/src/main/java/RoomScanner/RoomScanner.kt b/server/src/main/java/RoomScanner/RoomScanner.kt index c0e9abcaa91..7d958564fab 100644 --- a/server/src/main/java/RoomScanner/RoomScanner.kt +++ b/server/src/main/java/RoomScanner/RoomScanner.kt @@ -1,16 +1,17 @@ package RoomScanner -class RoomScanner(val controller: CarController): Thread() { +class RoomScanner(val controller: CarController) : Thread() { private val points = mutableListOf>() override fun run() { + println("Car connected ${controller.car.host}") while (true) { scan() - println("[${points.joinToString { "[${it.first}, ${it.second}]" }}}]") + println(plot(points)) } } - fun scan() { + private fun scan() { val horizon = IntArray(180 / 5, { it * 5 }) val iterationPoints = mutableListOf>() @@ -27,4 +28,6 @@ class RoomScanner(val controller: CarController): Thread() { controller.moveTo(target) } + private fun plot(points: MutableList>) = + "x <- c(${points.joinToString { it.first.toInt().toString() }}) \n y <- c(${points.joinToString { it.second.toInt().toString() }})" } diff --git a/server/src/main/java/car/client/Client.kt b/server/src/main/java/car/client/Client.kt index 430c6d75c17..bfa76837453 100644 --- a/server/src/main/java/car/client/Client.kt +++ b/server/src/main/java/car/client/Client.kt @@ -13,9 +13,10 @@ import java.net.ConnectException import java.rmi.UnexpectedException object Client { - val group = NioEventLoopGroup() - val bootstrap = makeBootstrap() - val client = DefaultAsyncHttpClient() + private val group = NioEventLoopGroup() + private val bootstrap = makeBootstrap() + private val client = DefaultAsyncHttpClient() + private val timeout = 5 * 60 * 60 * 1000 fun shutDownClient() { group.shutdownGracefully() @@ -38,7 +39,7 @@ object Client { } fun makeRequest(request: String, data: ByteArray): ListenableFuture = - client.preparePost(request).setBody(data).execute() ?: throw UnexpectedException(request) + client.preparePost(request).setBody(data).setRequestTimeout(timeout).execute() ?: throw UnexpectedException(request) private fun makeBootstrap(): Bootstrap { val b = Bootstrap()