DJIGimbalAttitudeAction之后以程序方式暂停时间轴任务

问题描述 投票:0回答:1

我创建了一个时间轴任务来执行一系列操作,因此无人机会以直线飞行,每隔2秒拍摄一次照片,而相机则指向正下方。我希望任务在万向节动作完成后暂停。以下是预定的操作:

  • DJITakeOffAction
  • DJIGoToAction(与高度坐标)
  • DJIGimbalAttitudeAction(pitch -90)
  • DJIShootPhotoAction(initWithPhotoCount 20,间隔2秒,等待否)
  • DJIGoToAction(与海拔高度协调)

任务运行正常,但我想在DJIGimbalAttitudeAction完成后以编程方式暂停时间轴,因此我可以在运行最后两个操作之前调整摄像机设置。

这可能吗?如果indexOfScheduledElement与DJIMissionControl的addListener:(id)listener toTimelineProgressWithBlock中DJIGimbalAttitudeAction时间轴元素的索引匹配,我尝试执行此操作,但是我收到了DJISDKMissionErrorDomain错误10007

关于这一点,如果时间轴位于DJIGoToAction之类的中间位置,则以编程方式暂停似乎可以正常工作,但其他任何原因似乎都会导致错误。有没有更好的方法来干净地执行pauseTimeline?

dji-sdk
1个回答
0
投票

[经过大量测试,我发现如果当当前运行的时间轴元素在时间线侦听器中的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];
    }
  }];
© www.soinside.com 2019 - 2024. All rights reserved.