在DJI Windows SDK中初始化和执行WayPoint Mission的步骤有哪些?

用户名

我正在使用以下代码尝试初始化Waypoint任务并将其加载到飞机(DJI Mavic Air)上。

我首先检查航路点处理程序的状态,然后初始化一个航路点,将其添加到列表中,然后将该列表包括在已初始化的航路点任务中。然后运行将航点任务加载到飞机的方法,然后检查状态。调试的输出如下所示:

航点状态= READY_TO_UPLOAD;

新航点位置-55.555549621582,0.555555522441864

加载任务返回值-INVALID_REQUEST_IN_CURRENT_STATE

航点状态= READY_TO_UPLOAD

READY_TO_UPLOAD的状态表明,根据Windows SDK文档上载路点任务处于适当的状态,但是显然上载失败并且状态保持不变。

为了使航点任务成功加载,需要进行哪些更改才能由飞机运行?

//Check the initial state of the waypoint handler
var currentState = DJISDKManager.Instance.WaypointMissionManager.GetWaypointMissionHandler(0).GetCurrentState();
Debug.WriteLine("Waypoint state = {0}", currentState);

//Initialise new location coordinate
randomLocation.X = 55.55555;
randomLocation.Y = 0.55555555;
Debug.WriteLine("New waypoint location - {0},{1}", randomLocation.X, randomLocation.Y);
LocationCoordinate2D waypointLocation = new LocationCoordinate2D { latitude = randomLocation.X, longitude = randomLocation.Y };

// Create a waypoint instance and add to waypoint list
Waypoint waypoint = new Waypoint { location = waypointLocation };
waypointList.Add(waypoint);

//Create new waypoint mission instance and load in the waypoint list
WaypointMission waypointMission = new WaypointMission
        {
            waypointCount = 1,
            autoFlightSpeed = 2.5,
            finishedAction = WaypointMissionFinishedAction.NO_ACTION,
            headingMode = WaypointMissionHeadingMode.USING_WAYPOINT_HEADING,
            flightPathMode = WaypointMissionFlightPathMode.CURVED,
            repeatTimes = 0,
            waypoints = waypointList,
            missionID = 1
        };

//load the waypoint mission to the aircraft and check the current state
var load_retval = DJISDKManager.Instance.WaypointMissionManager.GetWaypointMissionHandler(0).LoadMission(waypointMission); ;
Debug.WriteLine("Load mission return value - {0}", load_retval);

currentState = DJISDKManager.Instance.WaypointMissionManager.GetWaypointMissionHandler(0).GetCurrentState();
Debug.WriteLine("Waypoint state = {0}", currentState);
米卡

经过漫长的曲折和错误,我弄清楚了开始航点任务所需的步骤:

将SDK设置为地面站模式

首先,您必须使用以下方法将SDK设置为地面站模式:

DJISDKManager.Instance.ComponentManager.GetFlightControllerHandler(0, 0).SetGroundStationModeEnabledAsync(new BoolMsg() { value = true })

载入任务

其次,您必须使用以下方法将航点任务加载到SDK:

DJISDKManager.Instance.WaypointMissionManager.GetWaypointMissionHandler(0).
LoadMission(waypointMission)

waypointMission您的问题中的路标任务可能在哪里这个Waypoit任务必须遵循一些限制。例如,总距离不能太长(不确定确切的数字是多少)。如果任务有问题,此方法将返回SDKError。

将航路点任务上传到无人机

任务加载到SDK之后,仍然必须将其上传到无人机。这可以通过以下方法完成:

DJISDKManager.Instance.WaypointMissionManager.GetWaypointMissionHandler(0).

UploadMission()

(可选)说明模拟器

此时,如果您不希望无人机真正起飞,则可以启动模拟模式。可以使用以下代码完成此操作:

FlightControllerHandler _flightControllerHandler = DJISDKManager.Instance.ComponentManager.GetFlightControllerHandler(0, 0);

        var simSettings = new SimulatorInitializationSettings()
        {
            latitude = 0,
            longitude = 0,
            satelliteCount = 12
        };


        await _flightControllerHandler.StartSimulatorAsync(simSettings);

重要的satelliteCount是大于10。否则,SDK会给出错误和GPS信号强度不够好的错误。

开始任务Finaly,您可以按照以下步骤开始路点任务

DJISDKManager.Instance.WaypointMissionManager.GetWaypointMissionHandler(0).StartMission()

其他注意事项:

  • 这些呼叫大多数都async已经等待,并且最好等待。
  • 即使您等待呼叫,我也注意到在方法完成时上传任务仍无法完成。因此,如果您StartMission()UploadMission()之后立即致电可能会导致INVALID_REQUEST_IN_CURRENT_STATE

    我通过使用一个单独的按钮来加载和启动任务来解决此问题。这样,我可以等待任务上传后再开始执行任务。

  • 以上所有方法都返回一个SDKError类型。如果一切顺利,那么NO_ERROR检查每个呼叫是否都是重要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DJI Windows SDK:Maport 2 Pro的Suport

启动DJI仿真问题[dji-sdk]

离线使用 DJI SDK

dji.common.mission.waypoint.Builder.calculateTotalTime()返回的时间单位是多少

DJI SDK iOS APP遥测

DJI onProductChange 和 onProductConnect 的区别

DJI SDK:到达点时暂停/恢复Waypoint任务?

在Windows上成功运行Ranch有哪些步骤?

所有的android设备都与dji SDK mobile兼容吗?

带有 DJI Matrice 100 或 600 的 WaypointMissionOperator.checkParameters 中的 NPE

DJI Android-SDK:updateFollowingTarget 超时

DJI SDK群无人机

java.lang.UnsatisfiedLinkError中:没有执行发现的byte [] dji.midware.natives.SDKRelativeJNI.native_getXXXX

当我执行在Windows 10中使用键盘控制DJI Tello无人机的go文件时发生错误

SwiftUI 和 DJI UX SDK 5(测试版)

有关Windows窗体的初始化错误

Firebase Crashlytics无法与DJI iOS SDK一起使用

Catkin Make错误,DJI SDK启动文件错误

快速访问状态信息 - DJI Mobile SDK iOS

DJI API参考没有提到m100?

CAMERA_FOCUS 和 CAMERA_ZOOM 的 DJI WaypointActionType

使用 DJI Android SDK LiveStreamManager 直播无人机相机有很大的延迟。使用 SampleCode 它没有,我错过了什么?

“重新扫描”执行哪些步骤?

有没有办法查看从 Oracle DB 删除行时将执行哪些步骤?

自动执行蓝牙步骤时,“蓝牙无法初始化”

零初始化,静态初始化和值初始化有何不同?

在Windows 7中拥有音频需要哪些服务?

Windows 10 UWP 应用中的 SettingsPane 有哪些替代方案?

在 C++11/17 中的类初始化和直接初始化中。有什么区别?