0

DJIMissionManager.getInstance() または djiAircraftInstance.getMissionManager() のいずれかによってミッション マネージャーを取得する場合、ミッション マネージャー インスタンスは接続されません。ミッション マネージャーのセットアップまたは取得の手順が不足していませんか?

1 分前に、こちらのフォーラムで同じ質問をしました。

どんな助けでも大歓迎です。私は彼らの例を何千回も見てきましたが、すべての例が古いバージョンの SDK を使用しているようです。

編集:あなたが理解できるより多くの情報ですが、私はそれを追加します.

isConnected() を呼び出すと false が返され、ドローンも接続されているため、ミッション マネージャー インスタンスは null ではありません。

4

1 に答える 1

0

isMissionReadyToExecute と MissionManager.isConnected をテストしたところ、いつ呼び出しても常に true が返されることがわかりました。したがって、SDK 内のバグである必要があると思います。

そして、この問題の回避策を見つけました。

ミッションを初期化します。

    // Step 1: create mission
    DJIWaypointMission waypointMission = new DJIWaypointMission();
    waypointMission.maxFlightSpeed = 14;
    waypointMission.autoFlightSpeed = 4;
    List<DJIWaypoint> waypointsList = new LinkedList<>();

    // Step 2: create waypoints and prepare coordinates
    DJIWaypoint northPoint = new DJIWaypoint(mHomeLatitude + 10 * Utils.ONE_METER_OFFSET, mHomeLongitude, 10f);
    DJIWaypoint eastPoint = new DJIWaypoint(mHomeLatitude, mHomeLongitude + 10 * Utils.calcLongitudeOffset(mHomeLatitude), 20f);
    DJIWaypoint southPoint = new DJIWaypoint(mHomeLatitude - 10 * Utils.ONE_METER_OFFSET, mHomeLongitude, 30f);
    DJIWaypoint westPoint = new DJIWaypoint(mHomeLatitude, mHomeLongitude - 10 * Utils.calcLongitudeOffset(mHomeLatitude), 40f);

    //Step 3: add actions
    northPoint.addAction(new DJIWaypoint.DJIWaypointAction(DJIWaypoint.DJIWaypointActionType.GimbalPitch, -60));
    northPoint.addAction(new DJIWaypoint.DJIWaypointAction(DJIWaypoint.DJIWaypointActionType.StartTakePhoto, 0));
    eastPoint.addAction(new DJIWaypoint.DJIWaypointAction(DJIWaypoint.DJIWaypointActionType.StartTakePhoto, 0));
    southPoint.addAction(new DJIWaypoint.DJIWaypointAction(DJIWaypoint.DJIWaypointActionType.RotateAircraft, 60));
    southPoint.addAction(new DJIWaypoint.DJIWaypointAction(DJIWaypoint.DJIWaypointActionType.StartRecord, 0));
    westPoint.addAction(new DJIWaypoint.DJIWaypointAction(DJIWaypoint.DJIWaypointActionType.StopRecord, 0));

    //Step 4: add waypoints into the mission
    waypointsList.add(northPoint);
    waypointsList.add(eastPoint);
    waypointsList.add(southPoint);
    waypointsList.add(westPoint);
    waypointMission.addWaypoints(waypointsList);

    mDJIMission = waypointMission;

ミッションを準備します。

 mMissionManager.prepareMission(mDJIMission, new DJIMission.DJIMissionProgressHandler() {

        @Override
        public void onProgress(DJIMission.DJIProgressType type, float progress) {
            setProgressBar((int)(progress * 100f));
        }

    }, new DJICompletionCallback() {

        @Override
        public void onResult(DJIError error) {
            if (error == null) {
                Utils.setResultToToast(mContext, "Success!");
            } else {
                Utils.setResultToToast(mContext, "Prepare: " + error.getDescription());
            }
        }
    });
于 2016-01-26T21:55:35.790 に答える