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-портом, который вы указали во время этого процесса. Так что выбирайте мудро;)
Надеюсь это поможет. Я потерял дни на эту проблему.