1

下午好。

目前我正在尝试在“主要活动”中编写代码以向我的 IRIS 无人机发送一些航点,但它仅在点数为 5 时才有效。您能否检查我的代码并就正在发生的事情给我一些建议,以及如何向我的无人机发送更多航点?我非常感谢您的帮助,因为我是 Android 的新开发者:

代码:

public void onBtnConnectTap3(View view) {

        if (this.drone.isConnected()) {
        this.drone.disconnect();
         } else {
        Spinner connectionSelector = (Spinner) findViewById(R.id.selectConnectionType);
        int selectedConnectionType = connectionSelector.getSelectedItemPosition();

        Bundle extraParams = new Bundle();
        if (selectedConnectionType == ConnectionType.TYPE_USB) {
            extraParams.putInt(ConnectionType.EXTRA_USB_BAUD_RATE, DEFAULT_USB_BAUD_RATE); // Set default baud rate to 57600
        } else {
            extraParams.putInt(ConnectionType.EXTRA_UDP_SERVER_PORT, DEFAULT_UDP_PORT); // Set default baud rate to 14550
        }
        ConnectionParameter connectionParams = new ConnectionParameter(selectedConnectionType, extraParams, null);
        this.drone.connect(connectionParams);
        }

        currentMission = new Mission();
        currentMission.clear();

        for (int i = 1; i < 20; i++) {

        waypoint2=new Waypoint();
        yaw=new YawCondition();
        waypoint2.setCoordinate(new LatLongAlt( i, i, i));
        yaw.setAngle(i);
        missionI3 = waypoint2;
        currentMission.addMissionItem(missionI3);
        missionI2=yaw;
        currentMission.addMissionItem(missionI2);
        }

         this.drone.generateDronie();
         this.drone.setMission(currentMission, true);
         this.drone.arm(true);

        }

Dependencies in Build.gradle:
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.o3dr.android:dronekit-android:2.3.11'
    }

考虑到我的主要来源是:http ://android.dronekit.io/first_app.html和http:/ /android.dronekit.io/javadoc/

提前感谢您的回答。

4

1 回答 1

4

我不完全确定您要完成什么,但我在您的代码中看到了一些可能的错误。

  1. 使用最新的dronekit-android。当前版本是 2.7.0。您可以在此处了解最新版本https://bintray.com/3drobotics/maven/dronekit-android/view

  2. 您正在生成一个包含 38 个项目(19 个航点和 19 个偏航角)的任务。通过将航路点坐标设置为 1,1,1 ... 19,19,19,您正在做一件非常不安全的事情。你的车会飞到我认为你不打算的地方。

  3. 我不确定你为什么有generateDronie(). 根据文档

    生成动作以创建无人机任务,并将其上传到连接的无人机。

无人驾驶飞机是一种特定类型的任务,它将在自拍路径上飞行。

  1. setMission()是正确的。但是,代码中的最后一步是武装车辆。您需要告诉无人机实际执行任务。您可以使用类startMission()中的方法执行此操作MissionApi

  2. 小心设置和启动任务与相同的用户交互。总是有可能setMission()无法上传到车辆。如果是这种情况,startMission()将运行成功上传到车辆的最后一个任务。

    您可以通过收听广播来验证上传是否成功AttributeEvent.MISSION_SENT

您始终可以通过将 javadocs 添加到您认为缺少或需要澄清的 API 来为文档做出贡献。

于 2015-12-03T05:45:41.287 回答