经过与DJI的开发人员的长期反复,我现在可以提供部分解决方案。
的 部分解决方案 强>
如果您查看问题的更新#2中提供的代码,您会注意到以下几行:
self.turnTimer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: (#selector(turnDroneCommand)), userInfo: nil, repeats: true)
和
self.turnTime += 1 ... if self.turnTime >= 7 { self.turnTimer?.invalidate() self.turnTime = 0 // Fire custom success callback }
timeInterval参数设置为0.2秒。这意味着命令以5Hz的频率发送不到2秒。根据DJI的开发人员的说法,命令需要以10Hz(或更高,但我还没有验证这一点)的频率发送 的 长 强> 然后2秒。
的 出色的问题 强>
在执行虚拟杆命令之前,Matrice 100(M100)仍然向左后螺旋桨“漂移”。 DJI的开发人员似乎无法访问M100,也无法自行测试。由于它(基于非常非常有限的测试)出现是M100独有的问题,因此它可能不是Mobile SDK本身的问题。
我将此标记为答案,以防万一有人在与另一台DJI无人机的“忽略命令”问题上遇到麻烦。如果找到漂移的解决方案,我会相应更新。
我们在M100上遇到了与虚拟RC类似的问题,这是M100固件而不是sdk的问题。我们没有使用任何SDK,我们使用直接串行命令直接到M100上的com端口。我们放弃了尝试使用虚拟RC,现在发送完美的速度命令。