0

我正在尝试使用dronekit + python 连接 JRC JJ1000 无人机。执行连接命令时:

dronekit.connect('com3', baud=115200, heartbeat_timeout=30)

我收到以下错误:

ERROR:dronekit.mavlink:Exception in MAVLink input loop
Traceback (most recent call last):
  File "C:\Python37\lib\site-packages\dronekit\mavlink.py", line 211, in mavlink_thread_in
    fn(self)
  File "C:\Python37\lib\site-packages\dronekit\__init__.py", line 1371, in listener
    self._heartbeat_error)
dronekit.APIException: No heartbeat in 5 seconds, aborting.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python37\lib\site-packages\dronekit\__init__.py", line 3166, in connect
    vehicle.initialize(rate=rate, heartbeat_timeout=heartbeat_timeout)
  File "C:\Python37\lib\site-packages\dronekit\__init__.py", line 2275, in initialize
    raise APIException('Timeout in initializing connection.')
dronekit.APIException: Timeout in initializing connection.

我不遗余力地离开商店,但没有进展。我还尝试了 Python 2.7 和 3.7,结果相同。

4

1 回答 1

0

我一直遇到同样的错误。我在 docker 容器中使用了一些自定义代码来使用dronekit 和 ArduPilot 运行模拟。错误是间歇性的。到目前为止,似乎让错误停止的唯一方法是:

  • 关闭所有 docker 容器。
  • 打开windows任务管理器,等待vmmem降低内存使用(5-10m)。
  • 再试一次。

也许这些问题以某种方式相关。对我来说,似乎该连接可能已被前一个实例使用,并且没有正确关闭。由于等待 vmmem 释放资源似乎可以修复它。如果有人找到一个更好的解决方案,我会更喜欢!

我们正在使用这样的python代码进行连接:

from dronekit import connect
 ...
# try to connect 5 times
while connected == False and fails < 5:
    try:
        vehicle = connect(connection_string, wait_ready=True)
    except:
        fails += 1 
        time.sleep(3)
        print("Failed to connect to local mavlink sleeping for 3 seconds")
    else: 
        connected = True

其中 connection_string 的形式为:

"tcp:host:port"

此外,文档指出“如果波特率设置不正确,连接可能会因超时错误而失败。最好明确设置波特率。” 你确定你有正确的波特率吗?

于 2020-10-29T19:43:09.363 回答