【问题标题】:DroneKit simple takeoff not workingDroneKit 简单起飞不起作用
【发布时间】:2017-09-23 22:35:46
【问题描述】:

我正在尝试制作一个简单的Takeoff 命令。

下面是代码:

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");

            }
        });

虽然我正在设法 ARM 直升机,但起飞命令总是返回错误,executionError 3 或 4 我不知道这是什么意思? 任何人都有executionError 代码的含义? 或者知道问题出在哪里?

【问题讨论】:

  • 您需要武装直升机,并且您还需要处于引导模式。这两个条件你都满足了吗?
  • @squilter 是的,首先我正在布防,然后使用VehicleApi.getApi(this.drone).setVehicleMode(VehicleMode.COPTER_GUIDED); 切换到引导模式,然后使用上面的代码。
  • 您是否等待确认模式更改成功?
  • @squilter 是的,我正在等到AttributeEvent.STATE_VEHICLE_MODE 中的onDroneEvent 更改,然后按下起飞按钮。还有其他想法吗?顺便说一句,你用真正的四轴飞行器起飞了吗?我之所以问,是因为为了进行测试,我使用的是真正的四轴飞行器和 PX4 控制器。
  • 哦,dronekit-android 真的只设计用于 ArduCopter。它绝对可以与 PX4 一起使用,但我不希望它开箱即用。

标签: dronekit dronekit-android 3dr


【解决方案1】:

[已解决]。 以下是代码正常工作需要采取的步骤:

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 版(或更高版本)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2017-01-31
    • 1970-01-01
    • 2021-03-11
    • 2021-05-18
    • 2018-11-14
    • 2017-05-19
    相关资源
    最近更新 更多