2

我们在让 Dronekit 与我们的直升机一起工作时遇到了一些麻烦。到目前为止,我们已经使用 SITL 测试了所有东西,一切正常,但是这种成功并没有很好地转移到真实的东西上。

我们的设置是:运行 Mavproxy 的 Windows GCS(通过 COM9 主控,Dronekit 脚本和 Mission Planner 的 UDP 输出)和一个基本的 Dronekit 脚本(起飞和着陆)。请参阅图表以获得更清晰的解释。

在此处输入图像描述

我们在运行 MAVProxy 时使用以下命令:mavproxy.exe --master=com9,57600 --out=udp:127.0.0.1:14550 --out=udp:127.0.0.1:14551 --console

我们遇到的问题是连接到车辆(http://python.dronekit.io/guide/connecting_vehicle.html),我们能够连接到无人机并获取一些电路板信息。然而,我们在 30 秒内没有收到心跳消息,导致超时。

>>> APM:Copter V3.5.2 (4322ffda)
>>> PX4: 1d6bf64c NuttX: 1a99ba58
>>> Frame: QUAD
>>> PX4v3 0020002E 30365110 35323931

Traceback (most recent call last):
  File "C:/Users/simon/PycharmProjects/uas_lol/test_mission.py", line 32, in <module>
    vehicle = connect(connection_string, wait_ready=True, baud=57600, heartbeat_timeout=120)
  File "C:\Python27\lib\site-packages\dronekit\__init__.py", line 2849, in connect
    vehicle.wait_ready(True)
  File "C:\Python27\lib\site-packages\dronekit\__init__.py", line 2199, in wait_ready
    timeout)
dronekit.APIException: wait_ready experienced a timeout after 30 seconds.

Process finished with exit code 1

我们可以通过设置 wait_ready=False 来绕过超时。使用它,我们可以连接到车辆并武装无人机。在起飞时,它只在某些时候起作用。当我们重置 MAVProxy 时,我们发现它更有可能工作(起飞)。

我想确认使用带有 Mission Planner 的 udp 127.0.0.1:14550 连接到无人机可以正常工作。

任何关于我们可能做错了什么的见解将不胜感激,谢谢!

4

1 回答 1

0

原来问题是因为我们以 57600 的波特率通过串行遥测连接,所以下载参数需要大约 2 分钟,而 Dronekit 会在 30 秒后超时。

根据文档,您可以使用 heartbeat_timeout=180 ( http://python.dronekit.io/automodule.html#dronekit.connect ) 设置超时。然而,这并没有真正解决问题,因为它在 30 秒后仍然超时。

看起来可以将 30 秒编码到库中,在以下行中将 30 更改为 180 解决了我的问题。https://github.com/dronekit/dronekit-python/blob/754ce6223dd26179045eaa394d5df0a5f787ebb2/dronekit/init .py# L2216

于 2017-09-14T07:58:27.977 回答