Skip to main content
 首页 » 编程设计

python之DroneKit:无法连接到/dev/tty.usbmodem1411: 'Serial' 对象没有属性 'setBaudrate'

2025年05月04日16lvdongjie

按照 DroneKit 说明,我能够运行他们的快速入门指南中的 hello.py 代码:http://python.dronekit.io/guide/quick_start.html .

但是,当我尝试运行他们的基本任务示例时,我在标题中收到了 setBaudrate 错误:

$ python mission_basic.py --connect=/dev/tty.usbmodem1411 
 
Connecting to vehicle on: /dev/tty.usbmodem1411 
Traceback (most recent call last): 
  File "mission_basic.py", line 23, in <module> 
    vehicle = connect(args.connect, wait_ready=True) 
  File "/Library/Python/2.7/site-packages/dronekit/__init__.py", line 2344, in connect 
    handler = MAVConnection(ip, baud=baud, source_system=source_system) 
  File "/Library/Python/2.7/site-packages/dronekit/mavlink.py", line 37, in __init__ 
    self.master = mavutil.mavlink_connection(ip, baud=baud, source_system=source_system) 
  File "/Library/Python/2.7/site-packages/pymavlink/mavutil.py", line 1106, in mavlink_connection 
    return mavserial(device, baud=baud, source_system=source_system, autoreconnect=autoreconnect, use_native=use_native)   
  File "/Library/Python/2.7/site-packages/pymavlink/mavutil.py", line 735, in __init__ 
    self.set_baudrate(self.baud) 
  File "/Library/Python/2.7/site-packages/pymavlink/mavutil.py", line 746, in set_baudrate 
    self.port.setBaudrate(baudrate) 
AttributeError: 'Serial' object has no attribute 'setBaudrate' 

注意:tty.usbmodem1411 是我的 USB 电缆,直接从运行 Yosemite 的 Mac 连接到 APM。我也尝试过使用 3DR 遥测套件获得相同的结果。我也尝试添加波特率选项,结果相同。


更新:使用陈昭宇提供的链接补丁解决了我的波特率问题;但是,我仍然无法找到心跳。这个问题也是因为 pyserial 更新。使用 Tim Ryan 提供的较旧的 pyserial 解决方案解决了这两个问题。

请您参考如下方法:

Fin,看起来 pySerial 3.0 是在过去一周发布的,它改变了它的 API。 pymavlink(由 DroneKit-Python 使用)需要 pySerial 2.0。我有 filed an issue并将努力解决它。

与此同时,尝试 pip install "pySerial>=2.0,<=2.9999"看看这是否能解决您的问题。