首页 > 解决方案 > DJI OSDK 通过串口向 DJI Matrice 100 发送命令时的命令延迟

问题描述

我正在尝试使用 OSDK 控制 Matrice 100。我在 M100 上有一个 RPi3,它假设使用滚动/俯仰/z-vel/yawrate 命令控制位置,同时使用 GPS、相机和激光雷达进行定位。

我的问题是,当我从 RPi3 上的 OSDK 发送命令时,从命令通过串行线发送到 M100 有响应,我有 60-80 毫秒的延迟。我通过从 M100 记录 100Hz 的滚动/俯仰/偏航角来检查响应时间。从记录的数据中我可以看到,从我发送命令到角度发生显着变化(我尝试执行 10 度的步骤),存在延迟。

长达 80 毫秒的延迟对于对无人机进行适当的闭环控制来说是非常大的。

https://developer.dji.com/onboard-sdk/documentation/introduction/onboard-sdk-introduction.html 我了解到,在带有 OSDK 的 M100 上应该可以在 200Hz 上进行低级控制,如果有的话,这没有任何意义是一个 80 毫秒的延迟。

我的代码基于 DJI OSDK 中的示例代码,将闭环控制更改为我自己的控制器。把设置和发送命令的方式是一样的。

感谢您提供任何可以帮助解决此问题或阐明问题所在的意见。

标签: c++delaydji-sdk

解决方案


好的,首先,如果您在 vicon 房间内飞行并使用 RPI 作为来自 wifi 的基于 vicon 的反馈控制器,那么拥有 80 毫秒并不是那么糟糕。80 毫秒是可以接受的。在 PID 回路中,只需给出更高的预测增益。

其次,对于基于视觉/视觉/激光雷达/激光雷达的导航,我不会使用 RPI,因为 RPI 无法实时处理这些数据。例如。要处理 VINSMONO,您至少需要 TX2 级 CPU 才能以 10 hz 和 100 个特征点处理它而无需闭环。我们正在谈论 100 毫秒的处理延迟。尽管如此,它仍然可以通过正确的 PID 量来控制。这个方法可以从https://www.youtube.com/watch?v=1AbfRENy3OQ&t=4s看到

第三,如果您将其用于轨迹控制。伙计,你已经脱离了你的领域。轨迹控制需要100hz的反馈,需要A星、Dstar算法等流行方法的可控处理速度。这不是 RPI 的设计目的。


推荐阅读