Python 车辆连接超时

Python 车辆连接超时,python,dronekit-python,dronekit,mavlink,Python,Dronekit Python,Dronekit,Mavlink,我们在让无人机套件与我们的直升机一起工作时遇到了一些麻烦。到目前为止,我们已经使用SITL测试了所有的东西,并且一切都很好,但是这种成功并没有很好地转移到真实的东西上 我们的设置是:运行Mavproxy的Windows地面军事系统(主控通过COM9,无人机套件脚本和任务规划器的UDP输出)和基本无人机套件脚本(起飞和着陆)。请看图表以获得更清楚的解释 我们在运行MAVProxy时使用以下命令: mavproxy.exe--master=com957600--out=udp:127.0.0.1:

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

我们的设置是:运行Mavproxy的Windows地面军事系统(主控通过COM9,无人机套件脚本和任务规划器的UDP输出)和基本无人机套件脚本(起飞和着陆)。请看图表以获得更清楚的解释

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

我们遇到的问题是连接到车辆(),我们能够连接到无人机并获取一些板信息。但是,我们在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
APM:Copter V3.5.2(4322ffda) >>>PX4:1d6bf64c螺母TX:1a99ba58 >>>帧:四边形 >>>PX4v3 002002E 30365110 35323931 回溯(最近一次呼叫最后一次): 文件“C:/Users/simon/PycharmProjects/uas_lol/test_mission.py”,第32行,在 车辆=连接(连接字符串,等待就绪=真,波特率=57600,心跳超时=120) 文件“C:\Python27\lib\site packages\dronekit\\uuuuu init\uuuuuuu.py”,第2849行,在connect中 车辆。等待准备就绪(正确) 文件“C:\Python27\lib\site packages\dronekit\\uuuu init\uuuuu.py”,第2199行,处于等待就绪状态 超时) dronekit.APIException:等待准备就绪在30秒后遇到超时。 进程已完成,退出代码为1 我们可以通过设置wait_ready=False绕过超时。使用此功能,我们可以连接到车辆并装备无人机。说到起飞,它只在某些时候起作用。我们发现当我们重置MAVProxy时,它更有可能工作(启动)

我想确认,使用udp 127.0.0.1:14550和任务规划器连接到无人机是完美的


如果您能了解我们可能做得不正确,我们将不胜感激,谢谢

问题在于,由于我们以57600的波特率通过串行遥测连接,下载参数需要约2分钟,无人机套件在30秒后超时

根据文档,您可以使用heartbeat\u timeout=180()设置超时。然而,这并没有真正解决问题,因为它在30秒后仍然超时


看起来30秒可能会被编码到库中,在下一行中更改30到180解决了我的问题

通过wait_ready函数访问超时参数。您可以这样做:
vehicle=connect(connection\u string,wait\u ready=False);车辆。等待准备就绪(正确,超时=300)