Я работаю над приложением AR.Drone 2.0. Я использую javadrone API и библиотеку в своем проекте. Вот моя проблема с кодом: всякий раз, когда я нажимаю кнопку TakeOff в своем приложении, он будет продолжать отправлять команды взлета на беспилотный. И он игнорирует выпуск следующей команды AT, которую я хотел отправить. Например, я подключаюсь к drone, нажимаю кнопку TakeOff (он должен отправить AT TakeOffCommand, он отлично работает), но следующая команда (например, Flying Up) не выдаст & отправку на drone. Почему это происходит? Любая идея, что вызывает эту ошибку?Отправка команды AT TakeOffCommand [ID = REF, param =, 290718208] нон-стоп
My Java Code:
**Connect Button in my apps**
private void jButtonConnectActionPerformed(java.awt.event.ActionEvent evt) {
try {
// Create ARDrone object,
// connect to drone and initialize it.
drone = new ARDrone();
drone.playLED(10,10,10);
drone.connect();
drone.clearEmergencySignal();
// Wait until drone is ready
drone.waitForReady(CONNECT_TIMEOUT);
System.err.println("Drone State: " + drone.getState());
// do TRIM operation
drone.trim();
} catch (UnknownHostException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
**Take Off Button in my apps**
private void jButtonTakeOffActionPerformed(java.awt.event.ActionEvent evt){
try
{
// Take off
System.err.println("Taking off");
drone.takeOff();
Thread.sleep(5000);
}catch (IOException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
**Flying Up Button in java apps:**
private void jButtonUpActionPerformed(java.awt.event.ActionEvent evt) {
try
{
// Flying Up
drone.playAnimation(1,10);
drone.move(0,0,5,0);
// Fly a little :)
Thread.sleep(5000);
} catch (UnknownHostException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(arDroneFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
**Output here:**
Current Drone State : CONNECTING
Taking off
6819 [AWT-EventQueue-0] DEBUG ardrone.ARDrone - State changed from CONNECTING to TAKING_OFF
6819 [Thread-6] DEBUG ardrone.CommandSender - Q[1]Sending AT command TakeOffCommand [ID=REF, param=,290718208]
Take off command!
7028 [Thread-6] DEBUG ardrone.CommandSender - Q[1]Sending AT command TakeOffCommand [ID=REF, param=,290718208]
7129 [Thread-6] DEBUG ardrone.CommandSender - Q[1]Sending AT command TakeOffCommand [ID=REF, param=,290718208]
7230 [Thread-6] DEBUG ardrone.CommandSender - Q[1]Sending AT command TakeOffCommand [ID=REF, param=,290718208] [These TakeOff AT commands will continuously send to drone]
Flying Up!
TakeOffCommand [ID=REF, param=,290718208]
Movement Command Sending!
0.0
0.0
5.0
0.0
9847 [Thread-6] DEBUG ardrone.CommandSender - Q[2]Sending AT command TakeOffCommand [ID=REF, param=,290718208] <--Why it still sending TakeOffCommand instead of MoveCommand ?
Movement Command Sent Done!
9947 [Thread-6] DEBUG ardrone.CommandSender - Q[3]Sending AT command TakeOffCommand [ID=REF, param=,290718208]
10047 [Thread-6] DEBUG ardrone.CommandSender - Q[3]Sending AT command TakeOffCommand [ID=REF, param=,290718208]
Я работаю над этим кодом в течение нескольких недель и не может идентифицировать проблему. Пожалуйста, помогите мне решить эту проблему. Большое спасибо.
Thanks John за то, что указал на это важное сообщение. Да, я тоже это заметил. Тем не менее, эта проблема влияет на мою следующую летную инструкцию для беспилотных летательных аппаратов. Как только я подключился к дрону с помощью команды drone.takeOff(), он просто игнорирует другие команды AT, которые я отправил. На самом деле, похоже, он застрял в команде Sending AT TakeOffCommand [ID = REF, param =, 290718208]. Например, я пролетаю вверх/вниз (шаг вверх/вниз) или поворачиваю влево/вправо. Приложения просто продолжают отправлять TakeOffCommand вместо правильной команды. Любая идея, что произойдет и как это решить? Ваш ответ очень ценится! –
Что должно произойти, когда вы укажете дрону двигаться вверх/вниз/влево/вправо/и т. Д. следует также начать отправку PCMD. Команды REF не являются проблемой, но если она не отправляет PCMD, это проблема. Можете ли вы опубликовать остальную часть своего кода, которая не работает? –
После подключения к беспилотнику предположим, что я могу выпустить любые простые команды полета, такие как движение вверх/вниз/влево/вправо/и т. Д. Беспилотник должен реагировать соответствующим образом. Однако он не отправляет соответствующие команды REF и/или PCMD после нажатия кнопки TakeOff, как я упоминал выше. Он продолжает посылать команды взлета бесконтрольно. Если я нажму кнопку «Вверх», предположим, что вы отправляете команду MoveCommand-PCMD. Но он не выдаёт MoveCommand, тогда как команда takeoff просто продолжает отправлять. –