2017-04-26 158 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(或以上)