1

按照 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 解决方案解决了这两个问题。

4

3 回答 3

6

Fin,看起来 pySerial 3.0 是在过去一周发布的,它改变了它的 API。pymavlink(由 DroneKit-Python 使用)需要 pySerial 2.0。我已经提交了一个问题,并将努力解决它。

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

于 2016-01-05T15:30:53.480 回答
1

在新的 python 中, setBaudrate() 看起来从 class中删除SerialBase。请参考类似的mavlink问题

于 2016-01-07T03:50:40.980 回答
-1

在黑暗中拍摄,如果这不能解决您的问题,请道歉,但我怀疑它会。

您需要安装 FTDI 驱动程序(https://learn.sparkfun.com/tutorials/how-to-install-ftdi-drivers/mac

我在我的 Arduino 和运行 Mavericks 的 Mac 和随后的 El Capitan 之间使用 python 通过 USB 创建串行连接时遇到了类似的问题。(在 Ubuntu 上开箱即用,如果你害怕弄乱你喜欢的 Mac)预计这会在 OSX 升级后中断。(感谢 Apple)它也仅适用于您在此过程中指定的 USB 端口。所以明智地选择;)

希望这可以帮助。我为这个问题浪费了几天时间。

于 2016-01-05T00:39:29.367 回答