我创建了一个时间轴任务来执行一系列操作,因此无人机会以直线飞行,每隔2秒拍摄一次照片,而相机则指向正下方。我希望任务在万向节动作完成后暂停。以下是预定的操作:
任务运行正常,但我想在DJIGimbalAttitudeAction完成后以编程方式暂停时间轴,因此我可以在运行最后两个操作之前调整摄像机设置。
这可能吗?如果indexOfScheduledElement
与DJIMissionControl的addListener:(id)listener toTimelineProgressWithBlock
中DJIGimbalAttitudeAction时间轴元素的索引匹配,我尝试执行此操作,但是我收到了DJISDKMissionErrorDomain错误10007
关于这一点,如果时间轴位于DJIGoToAction之类的中间位置,则以编程方式暂停似乎可以正常工作,但其他任何原因似乎都会导致错误。有没有更好的方法来干净地执行pauseTimeline?
[经过大量测试,我发现如果当当前运行的时间轴元素在时间线侦听器中的DJIMissionControlTimelineEventStarted事件上触发时,如果操作/元素不是DJIShootPhotoAction,则它将暂停就好了-任何暂停DJIShootPhotoAction会导致相机繁忙错误。
如果相同的动作(例如DJIGoToAction,DJIAircraftYawAction,DJIGimbalAttitudeAction)处于DJIMissionControlTimelineEventProgressed阶段,则它们将失败,并出现DJISDKMissionErrorDomain错误10007
[DJISDKManager.missionControl addListener:self toTimelineProgressWithBlock:^(DJIMissionControlTimelineEvent event, id<DJIMissionControlTimelineElement> _Nullable element, NSError * _Nullable error, id _Nullable info) {
if (event == DJIMissionControlTimelineEventStarted) {
[DJISDKManager.missionControl pauseTimeline];
}
}];