繁体   English   中英

Android DJI SDK-带MissionControl的动态GoToAction

[英]Android DJI SDK - Dynamic GoToAction with MissionControl

我想通过MissionControl给Phantom 4进行“指向任务”。 我添加了新元素-GoToAction with point。 有一种方法可以动态更改元素中的点,以使Drone不会停止并到达新点,但是会继续飞行到新点吗?

谢谢!

我想你不能。 每个位置都必须有一个新的Mission // Waypoint,所以唯一的方法是:每次从移动物体获得新的GPS位置时,仅用一个Waypoint创建一个新Mission,将其上传并启动Mission。 。

但是您可以使用DJIFollowMeMissionOperator,在那里您可以设置target-Position

编辑:这是我的示例,我测试了几次,重要的是在任务超时之前更新targetPosition。 因此,例如使用计时器或FlightcontrollerStateCallback来更新followMeTargetPosition:

在我的类MissionControlWrapper中:

开始任务:

public void startSimpleFollowMe(){
    if(fmmo == null){
        fmmo = getFollowMeMissionOperator();
    }
    final FollowMeMissionOperator followMeMissionOperator  = fmmo;
    if (followMeMissionOperator.getCurrentState().equals(FollowMeMissionState.READY_TO_EXECUTE)){
        fmm = FollowMeMission.getInstance().initUserData(targetLocation.getLatitude() , targetLocation.getLongitude(),0);
        followMeMissionOperator.startMission(fmm, new CommonCallbacks.CompletionCallback() {
            @Override
            public void onResult(DJIError djiError) {
                if(djiError != null){
                    setLastState(djiError.getDescription());
                } else {
                    setLastState("Mission Start: Successfully");
                }
            }
        });
    }
}

更新目标:

public void updateSimpleFollowMe(){
    if(fmmo == null){
        fmmo = getFollowMeMissionOperator();
    }
    final FollowMeMissionOperator followMeMissionOperator  = fmmo;
    if(followMeMissionOperator.getCurrentState().equals(FollowMeMissionState.EXECUTING)) {
        followMeMissionOperator.updateFollowingTarget(new LocationCoordinate2D(targetLocation.getLatitude(),
                        targetLocation.getLongitude()),
                new CommonCallbacks.CompletionCallback() {
                    @Override
                    public void onResult(DJIError error) {
                        if (error != null) {
                            setLastState(followMeMissionOperator.getCurrentState().getName().toString() + " " + error.getDescription());
                        } else {
                            setLastState("Mission Update Successfully");
                        }
                    }
                });
    }
}

我更新

目标位置

从班级外面然后打电话

startSimpleFollowMe()

并使用更新目标位置

updateSimpleFollowMe()

开始任务后:等待“任务开始:成功”。

然后以一定间隔更新targetLocation(似乎它从每秒一次到每3秒工作一次)

我使用FollowMe代替WaypointMission随时更改targetLocation,而无需启动新任务。 如果实际目标距离超过2米,我将以1米为步长更新目标,因为如果无人机与targetPosition之间的距离过长,则会出现错误。

我必须再尝试几件事,但这似乎是一种解决方案:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM