Супутник Raspberry Pi з Pixhawk
This topic describes how to setup a Raspberry Pi ("RPi") companion companion running ROS 2 on Linux Ubuntu OS, connecting to a Pixhawk flight controller using a serial connection between the Pixhawk TELEM2
port and the RPi's TX/RX pins.
Ці інструкції мають бути легко розширювані для інших конфігурацій контролерів RPi та польотів.
INFO
Інші загальні способи підключення RaPi та Pixhawk це:
- Ethernet-з'єднання між RPi та Pixhawk. Контролери Pixhawk на основі FMUv5x, FMUv6x та пізніших можуть мати вбудований порт Ethernet. Див. PX4 Ethernet > Підтримувані контролери.
- Серійне підключення до USB-порту RPi. Це просто і надійно, але потребує додаткової плати адаптера USB-серійного інтерфейсу від FTDI Chip. Ця опція описана в Pixhawk Companion > Налаштування послідовного порту. :::
Підключення
Послідовне з'єднання
Спочатку підключіть послідовне з'єднання між RPi та PX4, яке буде використовуватися для управління ззовні.
Це налаштування з'єднує Pixhawk TELEM2
, що загалом рекомендується для офлайн керування. Спочатку вона налаштована в PX4 для використання з MAVLink, що ми змінимо пізніше при налаштуванні ROS 2. Порти Pixhawk можуть бути розташовані де завгодно на контролері польоту, але майже завжди добре позначені, і повинні бути очевидними на вашому конкретному контролері польоту.
Підключіть контакти Pixhawk TELEM2
TX
/RX
/GND
до відповідних контактів RXD
/TXD
/Ground
на платі GPIO RPi:
PX4 TELEM2 Pin | RPi GPIO Pin |
---|---|
UART5_TX (2) | RXD (GPIO 15 - pin 10) |
UART5_RX (3) | TXD (GPIO 14 - pin 8) |
GND (6) | Ground (pin 6) |
Діаграма показує контакти порту Pixhawk TELEM2
зліва та контакти плати GPIO RPi справа. Контакти на порті TELEM2
зазвичай нумеруються справа наліво, як показано.
TELEM2 | RPi GPIO |
---|---|
INFO
Майже всі останні плати Pixhawk, такі як Pixhawk-6C, використовують ті ж самі роз'єми та номери контактів для відповідних портів, як визначено в Стандарті роз'ємів Pixhawk. Ви можете перевірити конкретну документацію дошки, щоб підтвердити розташування контактів.
Стандартні призначення контактів TELEM2
показані нижче.
Піни | Сигнал | Напруга |
---|---|---|
1 (Red) | VCC | +5V |
2 (Black) | UART5_TX (out) | +3.3V |
3 (Black) | UART5_RX (in) | +3.3V |
4 (Black) | UART5_CTS (in) | +3.3V |
5 (Black) | UART5_RTS (out) | +3.3V |
6 (Black) | GND | GND |
TELEM1/Телеметрійне радіо
Порт Pixhawk TELEM1
попередньо налаштований для підключення до GCS через MAVLink через радіоканал телеметрії.
Ви можете підключити відповідне радіо до порту Pixhawk TELEM1
і у більшості випадків воно повинно працювати. Зазвичай інший радіоприймач повинен бути підключений до USB-порту наземної станції. Якщо у вас виникли проблеми, перевірте документацію радіо.
Джерело живлення
Плати Pixhawk зазвичай потребують надійного джерела живлення 5 В постійного струму, яке зазвичай постачається від акумуляторів LiPO через Модуль живлення та/або розподільник живлення до порту, позначеного як POWER
(або схоже).
Інструкції для вашого керування польотом зазвичай пояснюють рекомендовану настройку. Наприклад:
Контролери Pixhawk можуть постачати живлення для невеликої кількості низькопотужних периферійних пристроїв, таких як модулі GPS та радіо телеметрії низького діапазону. The RPi companion computer, servos, high power radios, and other peripherals require a separate power supply, which is usually from a battery elimination circuit (BEC) wired to the same or another battery. Деякі модулі живлення мають окремий BEC включений.
WARNING
Перевантаження вашого Pixhawk - це хороший спосіб його знищення.
INFO
Під час налаштування та конфігурації PX4 USB-підключення до ноутбука вашої наземної станції є достатнім для живлення плати Pixhawk, а ваш компаньйон може бути живлений від настільного зарядного пристрою.
Налаштування PX4
Ці інструкції працюють на PX4 v1.14 та пізніших версіях.
Якщо вам потрібно оновити прошивку, підключіть Pixhawk до вашого ноутбука / настільного комп'ютера через порт USB
та використовуйте QGroundControl для оновлення прошивки, як описано Прошивка > Встановлення стабільної PX4. Якщо ви хочете отримати останню розробницьку версію, оновіть прошивку на "main", як описано в Прошивка > Встановлення PX4 Master, Beta або власної прошивки.
INFO
Ви також можете налаштувати середовище розробки, зібрати та завантажити прошивку вручну.
Налаштування Ubuntu на RPi
Наступні кроки показують, як встановити та налаштувати Ubuntu 22.04 на RPi. Зверніть увагу, що версії ROS 2 спрямовані на конкретні версії Ubuntu. Ми використовуємо Ubuntu 22.04 для відповідності ROS 2 "Humble", тому якщо ви працюєте з ROS 2 "Foxy", ви замість цього могли б встановити Ubuntu 20.04.
Спочатку встановіть Ubuntu на RPi:
- Підготуйте завантажувальну карту Ubuntu 22.04 Ubuntu Desktop SD слідуючи офіційному посібнику: Як встановити Ubuntu Desktop на Raspberry Pi 4
- Під'єднайте мишу, клавіатуру, монітор і підключіть RPi до джерела живлення 5 В (зовнішнє джерело/зарядний пристрій).
- Вставте SD-карту в RPi і увімкніть RPi для завантаження з карти SD.
- Дотримуйтесь інструкцій на екрані для встановлення Ubuntu.
Введіть наступні команди (у послідовності) у термінал для налаштування Ubuntu на RPi:
Встановіть
raspi-config
:shsudo apt update sudo apt upgrade sudo apt-get install raspi-config
Відкрийте
raspi-config
:shsudo raspi-config
Перейдіть до Варіанти інтерфейсу, а потім клацніть Серійний порт.
- Виберіть No, щоб вимкнути послідовний вхід у оболонку.
- Виберіть Так, щоб увімкнути послідовний інтерфейс.
- Клацніть Завершити та перезапустіть RPi.
Відкрийте файл конфігурації завантаження прошивки в редакторі
nano
на RaPi:shsudo nano /boot/firmware/config.txt
Додайте наступний текст в кінець файлу (після останнього рядка):
shenable_uart=1 dtoverlay=disable-bt
Далі збережіть файл і перезапустіть RPi.
- У
nano
ви можете зберегти файл за допомогою такої послідовності комбінацій клавіш: ctrl+x, ctrl+y, Enter.
- У
Перевірте, чи доступний послідовний порт. В даному випадку ми використовуємо наступні команди для перегляду серійних пристроїв:
shcd / ls /dev/ttyAMA0
Результат команди повинен містити підключення RX/TX
/dev/ttyAMA0
(зверніть увагу, що цей послідовний порт також доступний як/dev/serial0
).
RPi наразі налаштований для роботи з RPi та зв'язку за допомогою послідовного порту /dev/ttyAMA0
. Зверніть увагу, що ми встановимо додаткове програмне забезпечення в наступних розділах для роботи з MAVLink та ROS 2.
Зв'язок MAVLink
MAVLink є стандартним і стабільним інтерфейсом зв'язку для роботи з PX4. Додатки MAVLink, які працюють на супутниковому комп'ютері, можуть підключатися до послідовного порту /dev/ttyAMA0
, який ви щойно налаштували на RPi, і за замовчуванням повинні автоматично підключатися до TELEM 2
на Pixhawk.
PX4 рекомендує використовувати MAVSDK для написання додатків супутникового комп'ютера, що використовують MAVLink, оскільки він надає прості API для використання багатьох загальних сервісів MAVLink на багатьох різних мов програмування. Ви також можете писати додатки, використовуючи бібліотеки, надані MAVLink, такі як Pymavlink, але в такому випадку вам, ймовірно, доведеться надати власні реалізації деяких мікрослужб.
У цьому підручнику ми не будемо вдаватися в докладності щодо управління MAVLink (воно добре описане в відповідних SDK). Однак ми встановимо та використаємо простий розробницький GCS MAVLink, званий mavproxy
. Це дозволить нам перевірити підключення MAVLink, а отже, правильність налаштування нашого фізичного з'єднання. Дуже схожий шаблон підключення використовуватиметься для MAVSDK та інших додатків MAVLink.
Спочатку перевірте конфігурацію Pixhawk TELEM 2
:
Підключіть Pixhawk до ноутбука за допомогою USB-кабеля.
Відкрийте QGroundControl (повинно з'єднатися з транспортним засобом).
Перевірте/змініть наступні параметри в QGroundControl:
iniMAV_1_CONFIG = TELEM2 UXRCE_DDS_CFG = 0 (Disabled) SER_TEL2_BAUD = 57600
Зверніть увагу, що параметри можуть вже бути налаштовані належним чином. Для отримання інформації про те, як працюють послідовні порти та конфігурація MAVLink, див. Конфігурація послідовного порту та Периферійні пристрої MAVLink.
Потім встановіть налаштування MAVProxy на RPi за допомогою наступних термінальних команд:
Встановіть MAVProxy:
shsudo apt install python3-pip sudo pip3 install mavproxy sudo apt remove modemmanager
Запустіть MAVProxy, встановивши порт для підключення до
/dev/ttyAMA0
та швидкість передачі даних, щоб відповідати PX4:shsudo mavproxy.py --master=/dev/serial0 --baudrate 57600
Зверніть увагу, що вище ми використовували
/dev/serial0
, але ми могли б так само добре використовувати/dev/ttyAMA0
. Якщо ми підключалися через USB, тоді ми замість цього встановили порт як/dev/ttyACM0
:shsudo chmod a+rw /dev/ttyACM0 sudo mavproxy.py --master=/dev/ttyACM0 --baudrate 57600
:::
MAVProxy на RPi тепер повинен підключатися до Pixhawk через контакти RX/TX. Ви повинні бачити це в терміналі RPi.
Тепер ми підтвердили, що наше підключення пов'язано належним чином. У наступному розділі ми налаштуємо як Pixhawk, так і RPi для використання uXRCE-DDS та ROS2 замість MAVLink.
ROS 2 та uXRCE-DDS
The ROS 2 Guide and uXRCE-DDS pages cover the options for setting up the uXRCE-DDS and ROS, focussing on ROS 2 "Foxy". Цей посібник використовує ROS 2 "Humble" та охоплює конкретну настройку для роботи з RPi. Варто прочитати обидва!
Налаштування Pixhawk/PX4
Наступним кроком ми налаштовуємо ROS 2 замість MAVLink на TELEM2
. Ми робимо це, змінюючи параметри в QGroundControl, яке може бути підключене через USB або використовуючи телеметричне радіо, підключене до TELEM1
.
Етапи конфігурації:
Підключіть Pixhawk до ноутбука за допомогою USB-кабелю та відкрийте QGroundControl (якщо він не підключений в даний момент).
Перевірте/змініть наступні параметри в QGroundControl:
iniMAV_1_CONFIG = 0 (Disabled) UXRCE_DDS_CFG = 102 (TELEM2) SER_TEL2_BAUD = 921600
MAV_1_CONFIG=0 та UXRCE_DDS_CFG=102 вимикають MAVLink на TELEM2 та увімкнюють клієнт uXRCE-DDS на TELEM2, відповідно. Швидкість
SER_TEL2_BAUD
встановлює швидкість передачі даних зв'язку.
Ви так само можете налаштувати підключення доTELEM1
, використовуючи абоMAV_1_CONFIG
, абоMAV_0_CONFIG
.INFO
Вам потрібно перезавантажити керування польотом, щоб застосувати будь-які зміни до цих параметрів. :::
Перевірте, що модуль uxrce_dds_client зараз працює. Ви можете це зробити, запустивши наступну команду в QGroundControl MAVLink Console:
shuxrce_dds_client status
INFO
Якщо модуль клієнта не працює, ви можете запустити його вручну в консолі MAVLink:
sh
uxrce_dds_client start -t serial -d /dev/ttyS3 -b 921600
Зверніть увагу, що /dev/ttyS3
є портом PX4 для TELEM2
на Holybro Pixhawk 6c. Для інших контролерів польоту перевірте розділ відображення послідовного порту на їх сторінці огляду.
ROS Setup on RPi
Кроки для налаштування ROS 2 та агента Micro XRCE-DDS на RPi такі:
Встановіть ROS 2 Humble, слідуючи за офіційним посібником.
Встановіть git за допомогою терміналу RPi:
shsudo apt install git
Встановіть агент uXRCE_DDS:
shgit clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git cd Micro-XRCE-DDS-Agent mkdir build cd build cmake .. make sudo make install sudo ldconfig /usr/local/lib/
Див. uXRCE-DDS > Встановлення агента Micro XRCE-DDS для альтернативних способів встановлення агента.
Запустіть агента в терміналі RPi:
shsudo MicroXRCEAgent serial --dev /dev/serial0 -b 921600
Зверніть увагу, як ми використовуємо раніше налаштований послідовний порт і ту саму швидкість передачі даних, що й для PX4.
Тепер, коли обидва агент та клієнт працюють, ви повинні бачити активність як на консолі MAVLink, так і на терміналі RPi. Ви можете переглянути доступні теми за допомогою наступної команди на RPi:
sh
source /opt/ros/humble/setup.bash
ros2 topic list
Ось і все. Once you have the connection working, see the ROS 2 Guide for more information about working with PX4 and ROS 2.