【问题标题】:dronekit set_position_target_local_ned_encode无人机套件 set_position_target_local_ned_encode
【发布时间】:2015-09-04 15:20:41
【问题描述】:

使用 ArduCopter 作为 SITL 运行dronekit-python。在 set_position_local_ned_encode 中指定速度(仅)时,无人机会移动几秒钟并停止。

示例代码 (guided_set_speed_yaw.py) 和一个非常小的测试程序都会发生这种情况,该程序仅在适当的初始化后执行 set_position。所有示例的所有其他部分似乎都可以正常工作。

全部在 Fedora 上运行。我不认为这被列为错误,或与此相关的任何问题。任何想法或指针表示赞赏。

【问题讨论】:

  • 运行 Fedora 4.1.6-200, APM:Copter V3.4-dev

标签: dronekit-python dronekit


【解决方案1】:

ArduCopter 3.3-rc9 添加了 3 秒的速度超时。这是为了防止丢失的连接导致飞走。要继续向同一个方向飞行,只需重复发送同一个数据包即可。

【讨论】:

  • 太棒了,谢谢。事实证明,我们将以 1 或 2 秒的间隔更新速度,所以这对我们有用。
【解决方案2】:

对于未来的读者,Ardupilot 的确切定义:

从 Copter 3.3 开始,速度命令应该每秒重新发送一次(如果没有收到命令,车辆将在几秒钟后停止)。在 Copter 3.3 之前,命令是持久的,只有在收到下一个移动命令时才会中断。

Dronekit:

从 Copter 3.3 开始,如果在大约 3 秒内没有收到新消息,车辆将停止移动。在 Copter 3.3 之前,消息只需要发送一次,并且速度保持有效,直到收到下一个运动命令。示例代码适用于这两种情况!

【讨论】: