DroneKit: не удалось подключиться к /dev/tty.usbmodem1411: у объекта 'Serial' нет атрибута 'setBaudrate'

Следуя инструкциям 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-кабель, идущий прямо от моего Mac с Yosemite к APM. Я также попробовал с комплектом телеметрии 3DR с теми же результатами. Я также попытался добавить в параметр скорости передачи с тем же результатом.


ОБНОВЛЕНИЕ: использование патча ссылки, которое дало resol, решило мою проблему скорости передачи данных; Тем не менее, у меня все еще была проблема с тем, что я никогда не нашел сердцебиение. Эта проблема была также из-за обновления pyserial. Использование старого решения pyserial, которое предоставил Тим Райан, устранило обе проблемы.

3 ответа

Решение

Фин, похоже, что на прошлой неделе был выпущен pySerial 3.0, который меняет свой API. pymavlink (используется DroneKit-Python) требует pySerial 2.0. Я подал проблему и буду работать над ее решением.

А пока попробуйте pip install "pySerial>=2.0,<=2.9999" и посмотрите, решит ли это вашу проблему.

В новом питоне setBaudrate() выглядит удаленным из класса SerialBase, Пожалуйста, обратитесь к аналогичной проблеме mavlink.

Застрелен в темноте, поэтому извиняюсь, если это не решит вашу проблему, но у меня есть подозрения, что так и будет.

Вам необходимо установить драйверы FTDI ( https://learn.sparkfun.com/tutorials/how-to-install-ftdi-drivers/mac)

У меня были похожие проблемы при создании последовательного соединения через USB с использованием python, между моим Arduino и моим Mac под управлением Mavericks, а затем и El Capitan. (Работает из коробки на Ubuntu, если вы боитесь возиться с вашим модным Mac) Ожидайте, что это сломается после обновления OSX. (Спасибо, Apple). Он также будет работать только с USB-портом, который вы указали во время этого процесса. Так что выбирайте мудро;)

Надеюсь это поможет. Я потерял дни на эту проблему.

Другие вопросы по тегам