code: public boolean manualControlMove(float rotationSpeed, float speed, int runDuration) throws CommandExecutionException {
          if (manualControlSequence < 1) manualControlStart();
          JSONObject payload = new JSONObject();
          if (rotationSpeed > 180.0f) rotationSpeed = 180.0f;
          if (rotationSpeed < -180.0f) rotationSpeed = -180.0f;
          float rotationRadians = Math.round((rotationSpeed / 180.0f) * 272.0d) / 100.0f; //Found out after LOADS of tests.
          payload.put("omega", rotationRadians);
          if (speed >= 0.3f) speed = 0.29f;
          if (speed <= -0.3f) speed = -0.29f;
          payload.put("velocity", speed);
          if (runDuration < 0) runDuration = 1000;
          payload.put("duration", runDuration);
          payload.put("seqnum", manualControlSequence);
          manualControlSequence++;
          JSONArray send = new JSONArray();
          send.put(payload);
          return sendOk("app_rc_move", send);
      }
docs: Manually control the robot
  @param rotationSpeed The speed of rotation in deg/s.
  @param speed The speed of the robot in m/s. Must be greater then -0.3 and less then 0.3.
  @param runDuration The time to run the command in ms. Values less than 0 will be replaced by a default value of 1000ms.
  @return True if the command has been received correctly.
  @throws CommandExecutionException When there has been a error during the communication or the response was invalid.