我们在让Dronekit与我们的直升机一起工作时遇到了一些麻烦。到目前为止,我们已经使用SITL对所有内容进行了测试,但一切正常,但是这种成功并没有很好地转移到真实的东西上。
我们的设置是:Windows GCS运行Mavproxy(Master通过COM9,UDP输出用于Dronekit脚本和Mission Planner)和基本的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时它更有可能工作(起飞)。
我想确认使用udp 127.0.0.1:14550与Mission Planner连接无人机非常有效。
我们非常感谢您对我们可能做错的任何见解,谢谢!
答案 0 :(得分:0)
原来问题是因为我们通过串行遥测以57600的波特率连接,下载参数需要大约2分钟,30秒后Dronekit会超时。
根据文档,您可以使用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