1

我正在使用 Android Studio 开发一个应用程序,该应用程序以特定模式驾驶 DJI Phantom 3 无人机,在特定航路点拍照。我将 DJI 示例代码上传到 Android Studio,在 Android Manifest.xml 文件中输入了一个应用程序密钥,并修改了“MissionManager”目录中的“CustomMissionView”代码,以便对无人机进行编程,使其以指定的模式飞行。但是,当我在 DJI 模拟器上运行这个项目时,自定义任务的每个“步骤”之间都有延迟,有时无人机会闲置并悬停几秒钟而没有做任何事情。我想知道是否有任何方法可以在不设置飞行速度的情况下最大限度地减少自定义任务步骤之间的延迟。我怀疑这与DJICommonCallbacks.DJICompletionCallback(),但我不确定。我是 Android Studio 的新手,所以任何建议都会有所帮助。

这是“CustomMissionView”Java 文件中受保护方法 DJI Mission 中的一些代码

LinkedList<DJIMissionStep> steps = new LinkedList<DJIMissionStep>();


    //Step 1: takeoff from the ground
    steps.add(new DJITakeoffStep(new DJICommonCallbacks.DJICompletionCallback() {

        public void onResult(DJIError error) {
            Utils.setResultToToast(mContext, "Takeoff step: " + (error == null ? "Success" : error.getDescription()));
        }
    }));

    //Step 2: reset the gimbal to desired angle
    steps.add(new DJIGimbalAttitudeStep(
            DJIGimbalRotateAngleMode.AbsoluteAngle,
            new DJIGimbalAngleRotation(true, -30f, DJIGimbalRotateDirection.Clockwise),
            null,
            null,
            new DJICommonCallbacks.DJICompletionCallback() {

                public void onResult(DJIError error) {
                    Utils.setResultToToast(mContext, "Set gimbal attitude step: " + (error == null ? "Success" : error.getDescription()));

                }
            }));

    //Step 3: Go 3 meters from home point
    steps.add(new DJIGoToStep(mHomeLatitude, mHomeLongitude, 3, new DJICommonCallbacks.DJICompletionCallback() {


        public void onResult(DJIError error) {
            Utils.setResultToToast(mContext, "Goto step: " + (error == null ? "Success" : error.getDescription()));
        }
    }));
4

1 回答 1

0

每个步骤之间的停顿是由于 DJI 如何设置自定义任务。当您准备自定义任务时,它不会向飞机本身发送任何任务信息。它确实在运行应用程序的设备上构建了自定义任务。在执行任务期间,向飞行器发送一个步骤。当该步骤成功完成后,下一步将发送到飞机。这会导致每个步骤之间的暂停。如果从遥控器到飞行器的信号变弱,任务可能会因超时而失败。

航点任务没有这种暂停,因为整个任务在准备就绪时被加载到飞机上。

于 2017-03-07T22:52:21.313 回答