3

有时我一直在安静地挣扎,以便能够理解为什么我在尝试创建航路点任务时收到任务管理器的错误“无法执行”。我附上了我正在使用的工作流程,如果您能看一下,我将不胜感激。

1.Initialize FlightController : 
mFlightController = ((Aircraft) product).getFlightController();
    getProductInstance().getGimbal()
                    .rotate(new Rotation.Builder().pitch(-180)
                            .mode(RotationMode.SPEED)
                            .yaw(Rotation.NO_ROTATION)
                            .roll(Rotation.NO_ROTATION)
                            .time(0)
                            .build(), new CommonCallbacks.CompletionCallback() {
                                @Override
                                public void onResult(DJIError error) {
                                }
                    });
mFlightController.setControlMode(ControlMode.SMART, ... );
mFlightController.setMaxFlightHeight(499.0f , ... );
mFlightController.setMaxFlightRadiusLimitationEnabled(false, ...);
mFlightController.setLandImmediatelyBatteryThreshold(15, ...);
mFlightController.setStateCallback(new FlightControllerState.Callback() {
            @Override
            public void onUpdate(@NonNull FlightControllerState flightControllerState) {
        //Check GPS level
    }
}
mFlightController.setHomeLocationUsingAircraftCurrentLocation( ... );



  2. Check Batter status :
getProductInstance().getBattery()
            setStateCallback(new BatteryState.Callback() {
                    @Override
                    public void onUpdate(BatteryState djiBatteryState) { ... } ;
    });

    3. initialize Mission Manager : 
mMissionManager = new WapointMissionOperator();
mMissionManager.addListener( listener );
    //LIstener does a couple calculations when reaching a waypoint. 

 4. Camera :
mCamera = getProductInstance().getCamera();
mCamera.setMode(SettingsDefinitions.CameraMode.RECORD_VIDEO, ... );
mCamera.setSystemStateCallback(new SystemState.Callback() { ... });


 5. Creating waypoint mission Builder : 
WaypointMission.Builder builder = new WaypointMission.Builder();
builder.autoFlightSpeed( value );
builder.maxFlightSpeed( value );
builder.setExitMissionOnRCSignalLostEnabled(false);
    builder.finishedAction(WaypointMissionFinishedAction.AUTO_LAND);
    builder.flightPathMode(WaypointMissionFlightPathMode.NORMAL);
    builder.gotoFirstWaypointMode(WaypointMissionGotoWaypointMode.SAFELY);
    builder.headingMode(WaypointMissionHeadingMode.USING_WAYPOINT_HEADING);
    builder.setGimbalPitchRotationEnabled(true);

 6. Creating waypoints : 
    for (int i = 0; i < waypointCount; i++) {
        dji.common.mission.waypoint.Waypoint djiwp = new dji.common.mission.waypoint.Waypoint(lat, lon, alt);
        djiwp.heading = 0; //facing true north
        djiwp.addAction(new WaypointAction(WaypointActionType.STAY, 0)); //just passby 
        builder.addWaypoint(djiwp);
    }

  7. finishing up with builder:
WaypointMission mission = builder.build();

 8. starting mission :
mMissionManager.loadMission(mission);
if (WaypointMissionState.READY_TO_RETRY_UPLOAD.equals(mMissionManager.getCurrentState())
                              ||   WaypointMissionState.READY_TO_UPLOAD.equals(mMissionManager.getCurrentState())) {

    mMissionManager.uploadMission(new CommonCallbacks.CompletionCallback() { ... } );
}
mFlightController.setHomeLocationUsingAircraftCurrentLocation( ... ); //redo just to check.
mFlightController.setConnectionFailSafeBehavior(ConnectionFailSafeBehavior.GO_HOME, ...);
mMissionManager.startMission(new CommonCallbacks.CompletionCallback() { ... });
4

2 回答 2

1

从您使用 MissionManager 开始,我假设您使用的是 3.x 版本的 DJI SDK。您应该尝试 4.x 版本。最新的是 4.3.2。与任务相关的功能已经过改进,现在更加稳定。现在的联系点是 MissionControl 而不是 MissionManager。查看 API 参考页面。它也进行了改进:http: //developer.dji.com/api-reference/android-api/Components/Missions/DJIMissionControl.html

于 2017-10-18T17:50:46.417 回答
1

确保在尝试执行之前准备好执行。在我这样做之前,我遇到了很多失败。

于 2017-09-19T06:20:10.517 回答