Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DJI幻影3自定义任务应用程序,任务步骤之间的延迟:_Java_Android_Dji Sdk - Fatal编程技术网

Java DJI幻影3自定义任务应用程序,任务步骤之间的延迟:

Java DJI幻影3自定义任务应用程序,任务步骤之间的延迟:,java,android,dji-sdk,Java,Android,Dji Sdk,我正在使用Android Studio开发一个应用程序,它以特定的模式驾驶DJI幻影3无人机,在特定的方向点拍照。我将DJI示例代码上传到Android Studio,在Android Manifest.xml文件中输入一个应用程序密钥,并修改“MissionManager”目录中的“CustomMissionView”代码,以便对无人机进行编程,使其以指定模式飞行。然而,当我在DJI模拟器上运行这个项目时,自定义任务的每个“步骤”之间都会有延迟,有时无人机处于空闲状态,悬停几秒钟而什么也不做。

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

下面是“CustomMissionView”Java文件中受保护的方法DJI任务中的一些代码

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()));
        }
    }));
LinkedList步骤=新建LinkedList();
//第一步:从地面起飞
添加(新的DJITakeoffStep(新的DJICommonCallbacks.DJICompletionCallback()){
公共void onResult(DJIError错误){
Utils.setResultToast(mContext,“起飞步骤:”+(error==null?“Success”:error.getDescription());
}
}));
//步骤2:将万向节复位到所需角度
步骤。添加(新的DjigimBattitudestep(
DJIGimbalRotateAngleMode.AbsoluteAngle,
新的DJIGimbalAngleRotation(正确,-30f,DjigimbalRotatedDirection.顺时针),
无效的
无效的
新的DJICommonCallbacks.DJICompletionCallback(){
公共void onResult(DJIError错误){
Utils.setResultToast(mContext,“设置万向节姿态步骤:”+(error==null?“Success”:error.getDescription());
}
}));
//第三步:从起点出发3米
添加(新的DJIGoToStep(mHomeLatitude,mHomeLatitude,3,新的DJICommonCallbacks.DJICompletionCallback()){
公共void onResult(DJIError错误){
Utils.setResultToast(mContext,“转到步骤:”+(error==null?“Success”:error.getDescription());
}
}));

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


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

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

航路点任务没有此暂停,因为整个任务在准备就绪时已加载到飞机上