2017-04-26 227 views
0

我試圖做一個簡單的Takeoff命令。DroneKit簡單起飛不起作用

這裏是下面的代碼:

ControlApi.getApi(this.drone).takeoff(10, new AbstractCommandListener() { 
      @Override 
      public void onSuccess() { 

      } 

      @Override 
      public void onError(int executionError) { 
       alertUser("Error: " + executionError); 
      } 

      @Override 
      public void onTimeout() { 

       alertUser("timeout"); 

      } 
     }); 

雖然我管理的武裝直升機,起飛命令總是返回錯誤,與executionError 3或4 ,我不知道這意味着什麼? 任何一個有executionError的代碼含義? 或者也許知道是什麼問題?

+0

您需要武裝直升機,並且您還需要處於引導模式。你是否遇到過這兩種情況? – squilter

+0

@squilter是的,首先我要武裝,然後用'VehicleApi.getApi(this.drone).setVehicleMode(VehicleMode.COPTER_GUIDED);'切換到引導模式,然後是上面的代碼。 – Seiran

+0

您是否等待確認模式更改成功? – squilter

回答

1

[已解決]。 下面是需要爲了要採取的代碼工作的步驟:

VehicleApi.getApi(this.drone).arm(true, new AbstractCommandListener() { 
      @Override 
      public void onSuccess() { 

      } 

      @Override 
      public void onError(int executionError) { 

      } 

      @Override 
      public void onTimeout() { 

      } 
     }); 

確保你在onSuccess方法適當的反應。

2.

VehicleApi.getApi(drone).setVehicleMode(VehicleMode.COPTER_GUIDED); 

這裏是哪裏是我的問題。我以某種方式設法把直升機放入Guided_NoGps 根據Arducopter文件,這種模式可以放在沒有足夠的GPS衛星數量。 此外,您還需要GPS中的3DFix才能切換到Guided模式。 你需要確保你有超過9個穩定的衛星鎖或這個代碼不會工作。

3.

運行下面

ControlApi.getApi(this.drone).takeoff(10, new AbstractCommandListener() { 
      @Override 
      public void onSuccess() { 

      } 

      @Override 
      public void onError(int executionError) { 
       alertUser("Error: " + executionError); 
      } 

      @Override 
      public void onTimeout() { 

       alertUser("timeout"); 

      } 
     }); 

代碼我已經基於PX4控制器上真正四直升機測試此。 您還需要ArduCopter版本3.4(或以上)