【问题标题】:Command delay when sending commands from DJI OSDK to DJI Matrice 100 via the serialDJI OSDK 通过串口向 DJI Matrice 100 发送命令时的命令延迟
【发布时间】:2019-12-09 21:02:17
【问题描述】:

我正在尝试使用 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++ delay dji-sdk


    【解决方案1】:

    好的,首先,如果您在 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 的设计目的。

    【讨论】:

    • 感谢您的意见。如果我有 10 赫兹的定位,如果仍然有 80 毫秒的延迟,你会推荐使用哪种控制?这会类似于模型预测控制吗?
    • 您可以尝试使用 MPC。但据我所知。来自 ETH 组的 MPC 使用更高的频率进行输入。我不建议你尝试。上次我带着那个 MPC 包飞行时,我的崩溃非常严重。使用 10 HZ,我建议您只尝试简单的基于 PID 的航路点导航。这几乎是你可以做到的。甚至要在基于 PID 的轨迹控制上工作,您需要将 10hz 反馈与 IMU 融合,以获得更高的反馈率。对于 PID 控制,您可以仅使用 PD。以 80 ms 的延迟相应地设置 D。你应该让它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多