如何使用DJI Windows SDK将航点列表导入无人机

时间:2019-01-10 04:01:09

标签: dji-sdk

我在GIS应用程序中创建了一个多边形。我可以将“多边形”导出为KML或其他任何所需格式。

我需要根据我拥有的多边形为无人机定义任务的航点。

有没有一种简单的方法可以直接将Polygon任务航路点提供给无MapView的无人机?

我必须使用DJI Windows SDK,但是我看到this sample与用户进行交互以在MapView中定义任务的Waypoint。我的情况是不同的。我已经有了Waypoint,我只需要导入它们即可。

更新1: 请注意,适用于iOS和Android的DJI SDK已非常成熟,功能丰富且经过验证。但是,与DJU Windows SDK不同。 SDK目标平台是模糊的,但是阅读它的示例,我认为它仅在UWP平台上运行。这就是为什么该问题明确提及 DJI Windows SDK 的原因。我知道Android或iOS的SDK提供了更高的质量和功能。

2 个答案:

答案 0 :(得分:1)

您可以简单地使用纬度和经度将它们添加到列表中。您还需要每个点的高度。为您需要的所有点创建一个for循环,或执行一次此代码,使用config对话框,然后上传并开始任务。

// Create a waypoint instance
Waypoint mWaypoint1 = new Waypoint(Latitude, Longitude, altitude);

//check if the mission's builder is null
if (waypointMissionBuilder != null) {
  if (waypointList.size() > 2)
    configWayPointMission();

  waypointList.add(mWaypoint1);
  waypointMissionBuilder.waypointList(waypointList).waypointCount(waypointList.size());
}
else {
  waypointMissionBuilder = new WaypointMission.Builder();
  waypointList.add(mWaypoint1);
  waypointMissionBuilder.waypointList(waypointList).waypointCount(waypointList.size());
}

答案 1 :(得分:0)

因此,我没有使用Windows SDK,但我想它与Mobile SDK类似。对于移动设备,您只需将航路点放在一个数组/数组列表中,然后立即将它们全部加载到任务中。

我不确定您是否需要将KML转换为航点,或者是否已经有航点。在前一种情况下,您需要解析KML。假设您已解析航路点,则需要使用WaypointMissionManager和WaypointMissionHandler加载任务,然后启动任务。

您可以使用加载/上传任务功能。装载任务的参数是WaypointMission,您可以在其中设置航点和其他相关信息的数量。

例如在Android中,我执行以下操作:

    ArrayList<Waypoint> waypoints = new ArrayList<>();
    for(int i = 0; i < wplist.size(); i++) {
        double lat = wplist.get(i).latitude;
        double lon = wplist.get(i).longitude;
        //each dji waypoint corresponds to the predetermined waypoints
        Waypoint djiWaypoint = new Waypoint(lat, lon, altitude);
        //Point Gimbal down for each waypoint
        djiWaypoint.gimbalPitch = gimbalPitchDown;
        //add waypoint to waypoints array
        waypoints.add(djiWaypoint);
    }

    //initiate builder and add waypoints to it- not yet built
    waypointMissionBuilder = new WaypointMission.Builder();
    waypointMissionBuilder.waypointList(waypoints).waypointCount(waypoints.size());
    totalNumberOfWaypointsInMission = waypointMissionBuilder.getWaypointCount();

    //Prepare mission by updating configure and instantiate waypointMissionBuilder
    configWayPointMission();
    //upload Mission
    uploadWaypointMission();