From b064d6a1b77d4097b32e1a6ec1aa5d1570544c12 Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Mon, 31 Jan 2022 00:57:23 +0100 Subject: [PATCH 1/7] rescale commands --- .../openbot/autopilot/AutopilotFragment.java | 4 +- .../org/openbot/logging/LogDataUtils.java | 8 +- .../org/openbot/logging/LoggerFragment.java | 4 +- .../org/openbot/logging/SensorService.java | 7 +- .../openbot/objectNav/ObjectNavFragment.java | 4 +- .../org/openbot/original/CameraActivity.java | 11 +-- .../org/openbot/original/DefaultActivity.java | 2 +- .../org/openbot/robot/FreeRoamFragment.java | 2 +- .../main/java/org/openbot/utils/Enums.java | 4 +- .../java/org/openbot/vehicle/Vehicle.java | 82 ++++++++++++++----- .../java/org/openbot/env/VehicleTest.java | 22 ++--- 11 files changed, 97 insertions(+), 53 deletions(-) diff --git a/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java b/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java index 624af3819..b5f691a2e 100644 --- a/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java +++ b/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java @@ -297,7 +297,7 @@ protected void processControllerKeyData(String commandType) { switch (commandType) { case Constants.CMD_DRIVE: binding.controllerContainer.controlInfo.setText( - String.format(Locale.US, "%.0f,%.0f", vehicle.getLeftSpeed(), vehicle.getRightSpeed())); + String.format(Locale.US, "%.2f,%.2f", vehicle.getLeftSpeed(), vehicle.getRightSpeed())); break; case Constants.CMD_DRIVE_MODE: @@ -472,7 +472,7 @@ private void setSpeedMode(Enums.SpeedMode speedMode) { Timber.d("Updating controlSpeed: %s", speedMode); preferencesManager.setSpeedMode(speedMode.getValue()); - vehicle.setSpeedMultiplier(speedMode.getValue()); + vehicle.setSpeedFactor(speedMode.getValue()); } } diff --git a/android/app/src/main/java/org/openbot/logging/LogDataUtils.java b/android/app/src/main/java/org/openbot/logging/LogDataUtils.java index 3e727da96..683a9c283 100644 --- a/android/app/src/main/java/org/openbot/logging/LogDataUtils.java +++ b/android/app/src/main/java/org/openbot/logging/LogDataUtils.java @@ -13,10 +13,12 @@ public static Message generateIndicatorMessage(int indicator) { return msg; } - public static Message generateControlDataMessage(int left, int right) { + public static Message generateControlDataMessage(float left, float right) { Message msg = Message.obtain(); - msg.arg1 = left; - msg.arg2 = right; + Bundle bundle = new Bundle(); + bundle.putFloat("left", left); + bundle.putFloat("right", right); + msg.setData(bundle); msg.what = SensorService.MSG_CONTROL; return msg; } diff --git a/android/app/src/main/java/org/openbot/logging/LoggerFragment.java b/android/app/src/main/java/org/openbot/logging/LoggerFragment.java index 2e25e3ed9..3a7b106bf 100644 --- a/android/app/src/main/java/org/openbot/logging/LoggerFragment.java +++ b/android/app/src/main/java/org/openbot/logging/LoggerFragment.java @@ -234,7 +234,7 @@ protected void sendControlToSensorService() { try { sensorMessenger.send( LogDataUtils.generateControlDataMessage( - (int) vehicle.getLeftSpeed(), (int) vehicle.getRightSpeed())); + vehicle.getControl().getLeft(), vehicle.getControl().getRight())); } catch (RemoteException e) { e.printStackTrace(); } @@ -446,7 +446,7 @@ private void setSpeedMode(Enums.SpeedMode speedMode) { Timber.d("Updating controlSpeed: %s", speedMode); preferencesManager.setSpeedMode(speedMode.getValue()); - vehicle.setSpeedMultiplier(speedMode.getValue()); + vehicle.setSpeedFactor(speedMode.getValue()); } } diff --git a/android/app/src/main/java/org/openbot/logging/SensorService.java b/android/app/src/main/java/org/openbot/logging/SensorService.java index 2a8e56f61..a3d1fa3d6 100644 --- a/android/app/src/main/java/org/openbot/logging/SensorService.java +++ b/android/app/src/main/java/org/openbot/logging/SensorService.java @@ -410,9 +410,12 @@ public void handleMessage(Message msg) { if (inferenceLog != null) appendLog(inferenceLog, frameNumber + "," + inferenceTime); } else if (msg.what == MSG_CONTROL) { // msg.arg1 and msg.arg2 contain left and right control signals respectively - if (ctrlLog != null) + if (ctrlLog != null) { + float left = msg.getData().getFloat("left"); + float right = msg.getData().getFloat("right"); appendLog( - ctrlLog, SystemClock.elapsedRealtimeNanos() + "," + msg.arg1 + "," + msg.arg2); + ctrlLog, SystemClock.elapsedRealtimeNanos() + "," + left + "," + right); + } } else if (msg.what == MSG_INDICATOR) { // msg.arg1 contains indicator signal if (indicatorLog != null) diff --git a/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java b/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java index 1a2e648b2..f65a4aec1 100644 --- a/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java +++ b/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java @@ -346,7 +346,7 @@ protected void processControllerKeyData(String commandType) { switch (commandType) { case Constants.CMD_DRIVE: binding.controllerContainer.controlInfo.setText( - String.format(Locale.US, "%.0f,%.0f", vehicle.getLeftSpeed(), vehicle.getRightSpeed())); + String.format(Locale.US, "%.2f,%.2f", vehicle.getLeftSpeed(), vehicle.getRightSpeed())); break; case Constants.CMD_NETWORK: @@ -538,7 +538,7 @@ private void setSpeedMode(Enums.SpeedMode speedMode) { Timber.d("Updating controlSpeed: %s", speedMode); preferencesManager.setSpeedMode(speedMode.getValue()); - vehicle.setSpeedMultiplier(speedMode.getValue()); + vehicle.setSpeedFactor(speedMode.getValue()); } } diff --git a/android/app/src/main/java/org/openbot/original/CameraActivity.java b/android/app/src/main/java/org/openbot/original/CameraActivity.java index 45a7d61ad..65a4afe35 100755 --- a/android/app/src/main/java/org/openbot/original/CameraActivity.java +++ b/android/app/src/main/java/org/openbot/original/CameraActivity.java @@ -903,7 +903,7 @@ private void setSpeedMode(SpeedMode speedMode) { this.speedMode = speedMode; preferencesManager.setSpeedMode(speedMode.getValue()); speedModeSpinner.setSelection(speedMode.ordinal()); - vehicle.setSpeedMultiplier(speedMode.getValue()); + vehicle.setSpeedFactor(speedMode.getValue()); } } @@ -1055,10 +1055,7 @@ protected void sendInferenceTimeToSensorService(long frameNumber, long inference protected void sendControlToSensorService() { if (sensorMessenger != null) { - Message msg = Message.obtain(); - msg.arg1 = (int) (vehicle.getLeftSpeed()); - msg.arg2 = (int) (vehicle.getRightSpeed()); - msg.what = SensorService.MSG_CONTROL; + Message msg = LogDataUtils.generateControlDataMessage(vehicle.getControl().getLeft(), vehicle.getControl().getRight()); try { sensorMessenger.send(msg); } catch (RemoteException e) { @@ -1069,9 +1066,7 @@ protected void sendControlToSensorService() { protected void sendIndicatorToSensorService() { if (sensorMessenger != null) { - Message msg = Message.obtain(); - msg.arg1 = vehicle.getIndicator(); - msg.what = SensorService.MSG_INDICATOR; + Message msg = LogDataUtils.generateIndicatorMessage(vehicle.getIndicator()); try { sensorMessenger.send(msg); } catch (RemoteException e) { diff --git a/android/app/src/main/java/org/openbot/original/DefaultActivity.java b/android/app/src/main/java/org/openbot/original/DefaultActivity.java index ab68ae342..e66055624 100755 --- a/android/app/src/main/java/org/openbot/original/DefaultActivity.java +++ b/android/app/src/main/java/org/openbot/original/DefaultActivity.java @@ -274,7 +274,7 @@ protected void updateVehicleControl() { if (controlValueTextView != null) controlValueTextView.setText( String.format( - Locale.US, "%.0f,%.0f", vehicle.getLeftSpeed(), vehicle.getRightSpeed())); + Locale.US, "%.2f,%.2f", vehicle.getLeftSpeed(), vehicle.getRightSpeed())); }); } diff --git a/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java b/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java index 91e6c1515..05ee01a8b 100644 --- a/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java +++ b/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java @@ -185,7 +185,7 @@ private void setSpeedMode(SpeedMode speedMode) { Timber.d("Updating controlSpeed: %s", speedMode); preferencesManager.setSpeedMode(speedMode.getValue()); - vehicle.setSpeedMultiplier(speedMode.getValue()); + vehicle.setSpeedFactor(speedMode.getValue()); } } diff --git a/android/app/src/main/java/org/openbot/utils/Enums.java b/android/app/src/main/java/org/openbot/utils/Enums.java index ed9f5db95..1d1a714f8 100644 --- a/android/app/src/main/java/org/openbot/utils/Enums.java +++ b/android/app/src/main/java/org/openbot/utils/Enums.java @@ -82,8 +82,8 @@ public static ControlMode switchControlMode(ControlMode mode) { } public enum SpeedMode { - SLOW(128), - NORMAL(192), + SLOW(64), + NORMAL(128), FAST(255); private final int value; diff --git a/android/app/src/main/java/org/openbot/vehicle/Vehicle.java b/android/app/src/main/java/org/openbot/vehicle/Vehicle.java index 47ca683ed..f22c9a920 100644 --- a/android/app/src/main/java/org/openbot/vehicle/Vehicle.java +++ b/android/app/src/main/java/org/openbot/vehicle/Vehicle.java @@ -14,7 +14,7 @@ public class Vehicle { private boolean noiseEnabled = false; private int indicator = 0; - private int speedMultiplier = 192; // 128,192,255 + private float speedFactor = 0.5f; private Control control = new Control(0, 0); private final SensorReading batteryVoltage = new SensorReading(); @@ -236,7 +236,7 @@ public float getRotation() { public int getSpeedPercent() { float throttle = (getLeftSpeed() + getRightSpeed()) / 2; - return Math.abs((int) (throttle * 100 / 255)); // 255 is the max speed + return Math.abs((int) (throttle * 100)); } public String getDriveGear() { @@ -313,12 +313,16 @@ public void stopNoise() { sendControl(); } - public int getSpeedMultiplier() { - return speedMultiplier; + public float getSpeedFactor() { + return speedFactor; } - public void setSpeedMultiplier(int speedMultiplier) { - this.speedMultiplier = speedMultiplier; + public void setSpeedFactor(float speedFactor) { + this.speedFactor = speedFactor; + } + + public void setSpeedFactor(int speedFactor) { + this.speedFactor = (float) speedFactor / 255.f; } public int getIndicator() { @@ -373,25 +377,65 @@ private void sendStringToUsb(String message) { } public float getLeftSpeed() { - return control.getLeft() * speedMultiplier; + return control.getLeft() * speedFactor; } public float getRightSpeed() { - return control.getRight() * speedMultiplier; + return control.getRight() * speedFactor; + } + + // Remap an action from [-1, -eps] .. [-eps, eps] .. [eps, 1] to [-speedFactor * + // maxBatteryVoltage, + // -minMotorVoltage] .. 0 .. [minMotorVoltage, factor * speedFactor * maxBatteryVoltage]. + // The purpose of this remapping is to avoid the dead band of the robot. + private float actionToVoltage(float action, float eps, float speedFactor) { + assert (speedFactor * maxBatteryVoltage > minMotorVoltage); + + if (Math.abs(action) < eps) { + return 0.f; + } else { + float voltage = + minMotorVoltage + (speedFactor * maxBatteryVoltage - minMotorVoltage) * Math.abs(action); + + if (action < 0) { + voltage *= -1.f; + } + + return voltage; + } + } + + private int voltageToCommand(float voltage) { + float cmd = voltage / maxBatteryVoltage * 255.f; + + cmd = Math.max(-255.f, Math.min(cmd, 255.f)); + + return (int) (cmd); + } + + private int voltageToCommand(float voltage, float currentVoltage) { + float cmd = voltage / maxBatteryVoltage * 255.f; + + if (currentVoltage != 0) { + cmd *= maxBatteryVoltage / currentVoltage; + } + + cmd = Math.max(-255.f, Math.min(cmd, 255.f)); + + return (int) (cmd); } public void sendControl() { - int left = (int) (getLeftSpeed()); - int right = (int) (getRightSpeed()); - if (noiseEnabled && noise.getDirection() < 0) - left = - (int) - ((control.getLeft() - noise.getValue()) - * speedMultiplier); // since noise value does not have speedMultiplier component, - // raw control value is used - if (noiseEnabled && noise.getDirection() > 0) - right = (int) ((control.getRight() - noise.getValue()) * speedMultiplier); - sendStringToUsb(String.format(Locale.US, "c%d,%d\n", left, right)); + float left = control.getLeft(); + float right = control.getRight(); + if (noiseEnabled && noise.getDirection() < 0) left -= noise.getValue(); + if (noiseEnabled && noise.getDirection() > 0) right -= noise.getValue(); + float leftVoltage = actionToVoltage(left, 0.01f, speedFactor); + float rightVoltage = actionToVoltage(right, 0.01f, speedFactor); + int leftCmd = voltageToCommand(leftVoltage); + int rightCmd = voltageToCommand(rightVoltage); + + sendStringToUsb(String.format(Locale.US, "c%d,%d\n", leftCmd, rightCmd)); } protected void sendHeartbeat(int timeout_ms) { diff --git a/android/app/src/test/java/org/openbot/env/VehicleTest.java b/android/app/src/test/java/org/openbot/env/VehicleTest.java index c153cbea2..46fdea42b 100644 --- a/android/app/src/test/java/org/openbot/env/VehicleTest.java +++ b/android/app/src/test/java/org/openbot/env/VehicleTest.java @@ -34,22 +34,22 @@ public void getRotation() { @Test public void getSpeed() { - vehicle.setSpeedMultiplier(Enums.SpeedMode.SLOW.getValue()); - vehicle.setControl(new Control(-1, -1)); + vehicle.setSpeedFactor(Enums.SpeedMode.SLOW.getValue()); + vehicle.setControl(new Control(-1, 1)); - assertEquals(-128, vehicle.getLeftSpeed(), 0.0); - assertEquals(-128, vehicle.getRightSpeed(), 0.0); + assertEquals(-0.25f, vehicle.getLeftSpeed(), 0.001f); + assertEquals(0.25f, vehicle.getRightSpeed(), 0.001f); - vehicle.setSpeedMultiplier(Enums.SpeedMode.NORMAL.getValue()); - vehicle.setControl(new Control(-1, -1)); + vehicle.setSpeedFactor(Enums.SpeedMode.NORMAL.getValue()); + vehicle.setControl(new Control(1, -1)); - assertEquals(-192, vehicle.getLeftSpeed(), 0.0); - assertEquals(-192, vehicle.getRightSpeed(), 0.0); + assertEquals(0.5f, vehicle.getLeftSpeed(), 0.001f); + assertEquals(-0.5f, vehicle.getRightSpeed(), 0.001f); - vehicle.setSpeedMultiplier(Enums.SpeedMode.FAST.getValue()); + vehicle.setSpeedFactor(Enums.SpeedMode.FAST.getValue()); vehicle.setControl(new Control(1, 1)); - assertEquals(255, vehicle.getLeftSpeed(), 0.0); - assertEquals(255, vehicle.getRightSpeed(), 0.0); + assertEquals(1.0f, vehicle.getLeftSpeed(), 0.001f); + assertEquals(1.0f, vehicle.getRightSpeed(), 0.001f); } } From ae78932aed588d518c113c4a59efa85f50463cfb Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Mon, 31 Jan 2022 01:06:51 +0100 Subject: [PATCH 2/7] rescale with voltage measurement --- .../src/main/java/org/openbot/vehicle/Vehicle.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/android/app/src/main/java/org/openbot/vehicle/Vehicle.java b/android/app/src/main/java/org/openbot/vehicle/Vehicle.java index f22c9a920..f20b72c5f 100644 --- a/android/app/src/main/java/org/openbot/vehicle/Vehicle.java +++ b/android/app/src/main/java/org/openbot/vehicle/Vehicle.java @@ -408,16 +408,8 @@ private float actionToVoltage(float action, float eps, float speedFactor) { private int voltageToCommand(float voltage) { float cmd = voltage / maxBatteryVoltage * 255.f; - cmd = Math.max(-255.f, Math.min(cmd, 255.f)); - - return (int) (cmd); - } - - private int voltageToCommand(float voltage, float currentVoltage) { - float cmd = voltage / maxBatteryVoltage * 255.f; - - if (currentVoltage != 0) { - cmd *= maxBatteryVoltage / currentVoltage; + if (hasVoltageDivider && batteryVoltage.getReading() != 0) { + cmd *= maxBatteryVoltage / batteryVoltage.getReading(); } cmd = Math.max(-255.f, Math.min(cmd, 255.f)); From c9fa44a71e5211eabf3fd8dbe5a30d7f8f7fa414 Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Sat, 5 Feb 2022 16:25:40 +0100 Subject: [PATCH 3/7] fix style --- .../app/src/main/java/org/openbot/logging/SensorService.java | 3 +-- .../src/main/java/org/openbot/original/CameraActivity.java | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/org/openbot/logging/SensorService.java b/android/app/src/main/java/org/openbot/logging/SensorService.java index a3d1fa3d6..cd1565ada 100644 --- a/android/app/src/main/java/org/openbot/logging/SensorService.java +++ b/android/app/src/main/java/org/openbot/logging/SensorService.java @@ -413,8 +413,7 @@ public void handleMessage(Message msg) { if (ctrlLog != null) { float left = msg.getData().getFloat("left"); float right = msg.getData().getFloat("right"); - appendLog( - ctrlLog, SystemClock.elapsedRealtimeNanos() + "," + left + "," + right); + appendLog(ctrlLog, SystemClock.elapsedRealtimeNanos() + "," + left + "," + right); } } else if (msg.what == MSG_INDICATOR) { // msg.arg1 contains indicator signal diff --git a/android/app/src/main/java/org/openbot/original/CameraActivity.java b/android/app/src/main/java/org/openbot/original/CameraActivity.java index 65a4afe35..81bfe9c00 100755 --- a/android/app/src/main/java/org/openbot/original/CameraActivity.java +++ b/android/app/src/main/java/org/openbot/original/CameraActivity.java @@ -1055,7 +1055,9 @@ protected void sendInferenceTimeToSensorService(long frameNumber, long inference protected void sendControlToSensorService() { if (sensorMessenger != null) { - Message msg = LogDataUtils.generateControlDataMessage(vehicle.getControl().getLeft(), vehicle.getControl().getRight()); + Message msg = + LogDataUtils.generateControlDataMessage( + vehicle.getControl().getLeft(), vehicle.getControl().getRight()); try { sensorMessenger.send(msg); } catch (RemoteException e) { From 6f39bcbc2b1d1facab0c9aeaf1403136667dd6e7 Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Sat, 5 Feb 2022 17:01:49 +0100 Subject: [PATCH 4/7] fix test --- .../java/org/openbot/env/VehicleTest.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/android/app/src/test/java/org/openbot/env/VehicleTest.java b/android/app/src/test/java/org/openbot/env/VehicleTest.java index 46fdea42b..05f8eb9b6 100644 --- a/android/app/src/test/java/org/openbot/env/VehicleTest.java +++ b/android/app/src/test/java/org/openbot/env/VehicleTest.java @@ -23,33 +23,33 @@ public void setupVehicle() { @Test public void getRotation() { - assertEquals(0, vehicle.getRotation(), 0.0); + assertEquals(0, vehicle.getRotation(), 0.01f); - vehicle.setControl(new Control(0.5f, 1)); - assertEquals(-60, vehicle.getRotation(), 0.0); + vehicle.setControl(new Control(0.5f, 1.0f)); + assertEquals(-60, vehicle.getRotation(), 0.01f); - vehicle.setControl(new Control(0f, 1)); - assertEquals(-180, vehicle.getRotation(), 0.0); + vehicle.setControl(new Control(0.0f, 1.0f)); + assertEquals(-180, vehicle.getRotation(), 0.01f); } @Test public void getSpeed() { vehicle.setSpeedFactor(Enums.SpeedMode.SLOW.getValue()); - vehicle.setControl(new Control(-1, 1)); + vehicle.setControl(new Control(-1.0f, 1.0f)); - assertEquals(-0.25f, vehicle.getLeftSpeed(), 0.001f); - assertEquals(0.25f, vehicle.getRightSpeed(), 0.001f); + assertEquals(-0.25f, vehicle.getLeftSpeed(), 0.01f); + assertEquals(0.25f, vehicle.getRightSpeed(), 0.01f); vehicle.setSpeedFactor(Enums.SpeedMode.NORMAL.getValue()); - vehicle.setControl(new Control(1, -1)); + vehicle.setControl(new Control(1.0f, -1.0f)); - assertEquals(0.5f, vehicle.getLeftSpeed(), 0.001f); - assertEquals(-0.5f, vehicle.getRightSpeed(), 0.001f); + assertEquals(0.5f, vehicle.getLeftSpeed(), 0.01f); + assertEquals(-0.5f, vehicle.getRightSpeed(), 0.01f); vehicle.setSpeedFactor(Enums.SpeedMode.FAST.getValue()); - vehicle.setControl(new Control(1, 1)); + vehicle.setControl(new Control(1.0f, 1.0f)); - assertEquals(1.0f, vehicle.getLeftSpeed(), 0.001f); - assertEquals(1.0f, vehicle.getRightSpeed(), 0.001f); + assertEquals(1.0f, vehicle.getLeftSpeed(), 0.01f); + assertEquals(1.0f, vehicle.getRightSpeed(), 0.01f); } } From 11be1d97217606b9f44ccfdc15f9ac90e5459524 Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Sat, 5 Feb 2022 19:39:13 +0100 Subject: [PATCH 5/7] fix control display --- .../main/java/org/openbot/autopilot/AutopilotFragment.java | 4 ++-- .../app/src/main/java/org/openbot/logging/LoggerFragment.java | 2 +- .../main/java/org/openbot/objectNav/ObjectNavFragment.java | 2 +- .../app/src/main/java/org/openbot/robot/FreeRoamFragment.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java b/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java index b5f691a2e..caf6a3fdf 100644 --- a/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java +++ b/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java @@ -403,9 +403,9 @@ protected void handleDriveCommand(Control control) { .runOnUiThread( () -> binding.controllerContainer.controlInfo.setText( - String.format(Locale.US, "%.0f,%.0f", left, right))); + String.format(Locale.US, "%.2f,%.2f", left, right))); } - + @Override public void onConnectionEstablished(String ipAddress) { requireActivity().runOnUiThread(() -> binding.ipAddress.setText(ipAddress)); diff --git a/android/app/src/main/java/org/openbot/logging/LoggerFragment.java b/android/app/src/main/java/org/openbot/logging/LoggerFragment.java index 3a7b106bf..c6daa0862 100644 --- a/android/app/src/main/java/org/openbot/logging/LoggerFragment.java +++ b/android/app/src/main/java/org/openbot/logging/LoggerFragment.java @@ -426,7 +426,7 @@ protected void handleDriveCommand() { float left = vehicle.getLeftSpeed(); float right = vehicle.getRightSpeed(); binding.controllerContainer.controlInfo.setText( - String.format(Locale.US, "%.0f,%.0f", left, right)); + String.format(Locale.US, "%.2f,%.2f", left, right)); runInBackground(this::sendControlToSensorService); } diff --git a/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java b/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java index f65a4aec1..950f62f7c 100644 --- a/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java +++ b/android/app/src/main/java/org/openbot/objectNav/ObjectNavFragment.java @@ -469,7 +469,7 @@ protected void handleDriveCommand(Control control) { .runOnUiThread( () -> binding.controllerContainer.controlInfo.setText( - String.format(Locale.US, "%.0f,%.0f", left, right))); + String.format(Locale.US, "%.2f,%.2f", left, right))); } protected Model getModel() { diff --git a/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java b/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java index 05ee01a8b..8e2663d25 100644 --- a/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java +++ b/android/app/src/main/java/org/openbot/robot/FreeRoamFragment.java @@ -160,7 +160,7 @@ protected void handleDriveCommand() { float left = vehicle.getLeftSpeed(); float right = vehicle.getRightSpeed(); binding.controllerContainer.controlInfo.setText( - String.format(Locale.US, "%.0f,%.0f", left, right)); + String.format(Locale.US, "%.2f,%.2f", left, right)); binding.speed.speedPercentTo(vehicle.getSpeedPercent()); From 992fdf7473709ace326cf8df6941059e53bea263 Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Sat, 5 Feb 2022 19:40:37 +0100 Subject: [PATCH 6/7] increase slow speed --- android/app/src/main/java/org/openbot/utils/Enums.java | 2 +- android/app/src/test/java/org/openbot/env/VehicleTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/org/openbot/utils/Enums.java b/android/app/src/main/java/org/openbot/utils/Enums.java index 1d1a714f8..d84145ab1 100644 --- a/android/app/src/main/java/org/openbot/utils/Enums.java +++ b/android/app/src/main/java/org/openbot/utils/Enums.java @@ -82,7 +82,7 @@ public static ControlMode switchControlMode(ControlMode mode) { } public enum SpeedMode { - SLOW(64), + SLOW(85), NORMAL(128), FAST(255); diff --git a/android/app/src/test/java/org/openbot/env/VehicleTest.java b/android/app/src/test/java/org/openbot/env/VehicleTest.java index 05f8eb9b6..ac55d1dc6 100644 --- a/android/app/src/test/java/org/openbot/env/VehicleTest.java +++ b/android/app/src/test/java/org/openbot/env/VehicleTest.java @@ -37,8 +37,8 @@ public void getSpeed() { vehicle.setSpeedFactor(Enums.SpeedMode.SLOW.getValue()); vehicle.setControl(new Control(-1.0f, 1.0f)); - assertEquals(-0.25f, vehicle.getLeftSpeed(), 0.01f); - assertEquals(0.25f, vehicle.getRightSpeed(), 0.01f); + assertEquals(-0.33f, vehicle.getLeftSpeed(), 0.01f); + assertEquals(0.33f, vehicle.getRightSpeed(), 0.01f); vehicle.setSpeedFactor(Enums.SpeedMode.NORMAL.getValue()); vehicle.setControl(new Control(1.0f, -1.0f)); From b088f87d7784d063e71148df77a9ec9c44186299 Mon Sep 17 00:00:00 2001 From: Matthias Mueller Date: Sat, 19 Feb 2022 00:01:42 +0100 Subject: [PATCH 7/7] fix style --- .../src/main/java/org/openbot/autopilot/AutopilotFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java b/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java index caf6a3fdf..61c96cf01 100644 --- a/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java +++ b/android/app/src/main/java/org/openbot/autopilot/AutopilotFragment.java @@ -405,7 +405,7 @@ protected void handleDriveCommand(Control control) { binding.controllerContainer.controlInfo.setText( String.format(Locale.US, "%.2f,%.2f", left, right))); } - + @Override public void onConnectionEstablished(String ipAddress) { requireActivity().runOnUiThread(() -> binding.ipAddress.setText(ipAddress));