DJI Phantom 4 Pro 降落在错误的位置

DJI Phantom 4 Pro lands at incorrect location

上下文

我正在构建一个任务规划器,它将通过用户点击地图获得 waypoints。完成一个区域后,他将加载并开始任务。

Expected/current 行为

当我开始任务时,它会经历所有waypoints,到达最后一个后,它会返回返航点并着陆。

问题是:它没有return回家,而是降落在最后一个航路点。

详情

下面的代码只是一个POJO对象的一部分

public WaypointMission toDjiMission() {
  final WaypointMission.Builder waypointMissionBuilder = new WaypointMission.Builder();
  
  final int waypointsSize = waypoints.size();
  for (int i = 0; i < waypointsSize; i++) {
    waypointMissionBuilder.addWaypoint(Waypoint.toDjiWaypoint(waypoints.get(i)));
  }
  
  return waypointMissionBuilder
    .setMissionID(id)
    .maxFlightSpeed(maxSpeedInMetersPerSecond.floatValue()) // 15
    .autoFlightSpeed(autoFlightSpeedInMetersPerSecond.floatValue()) // 8.5
    .flightPathMode(flightPathTurnMode.toDjiEnum()) // curved
    .headingMode(uavHeadingMode.toDjiEnum()) // auto
    .finishedAction(missionFinishedAction.toDjiEnum()) // Go home
    .build();
}

环境

有几件事和一些问题可以帮助您弄清所看到的内容:

第一个问题,到达最后一个航点时,飞机离家有多远?

出于某种原因,DJI 设计了固件,如果飞机离家很近(我认为在 15 米以内),那么飞机会原地降落。这意味着,如果最后一个航路点靠近返航点,它可能已经认为它是返航点并就地着陆。

对于我编写的所有软件,我总是在我希望任务结束的地方添加一个特定的航路点并使用 AUTO_LAND 作为 finishedAction,它消除了上述问题并始终保证正确的结果(又名, 没有 'iffyness' 因为固件逻辑)。

我的建议是在返航点上方加一个航路点,这是最好的方案!