DJI M300 RTK在IOS的MSDK中,不能使用通用的接口来进行航点规划飞行,需要用专门用于M300 RTK的接口,即:
[DJISDKManager missionControl].waypointV2MissionOperator
这里特别要提示的是,与大疆给的例子不同,我们时间使用时大多数情况下,loadMission、uploadMissionWithCompletion、startMissionWithCompletion 这三部分,是放在一起按顺序执行,而不是想DEMO那样分开执行。因此,特别需要注意的是,在执行startMissionWithCompletion前,一定要有一个时间间隔,不是uploadMissionWithCompletion就可以执行,因为其中的状态可能还没改正过来,如果没有延时,很可能会提示sdk错误!而且最好在主线程执行!
实例代码:
[self.missionOperator uploadMissionWithCompletion:^(NSError * _Nullable error) {
if (error) {
return errorBlock(error.description);
}
else {
return dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[weakSelf startWaypointMissionWithSuccess:successBlock error:errorBlock];
});
}
}];
- action部分
V2 版本的航点规划与通用版本的,最大区别就是航点跟动作分开了,动作(action)更加丰富了,更加丰富就以为着加大了编程的难度,就大疆IOS-MSDK的DEMO也没有相关例子,大多只有网上的枝枝叶叶。这里提供一个例子(调整航向):
#pragma mark create a reach trigger
+ (DJIWaypointV2Trigger*)reachTriger:(NSInteger)startIndex withCount:(NSInteger)count{
DJIWaypointV2Trigger *trigger = [[DJIWaypointV2Trigger alloc]init];
trigger.actionTriggerType = DJIWaypointV2ActionTriggerTypeReachPoint;
DJIWaypointV2ReachPointTriggerParam *param = [[DJIWaypointV2ReachPointTriggerParam alloc