Налаштування PX4 Ethernet
Підключення через Ethernet надає швидкий, надійний та гнучкий спосіб зв'язку, який може бути альтернативою використанню USB або інших послідовних з'єднань.
Воно може бути використане для підключення до наземних станцій, супутникових комп'ютерів та інших систем MAVLink. Це особливо рекомендується при підключенні до систем, які «природно» використовують Ethernet, наприклад, IP-радіо.
Ця тема охоплює:
Підтримувані контролери польоту
PX4 підтримує підключення по Ethernet на контролерах польоту Pixhawk 5X-standard (і пізніше), які мають порт Ethernet. Це також може бути підтримано на інших платах.
Підтримувані автопілоти включають:
Налаштування мережі Ethernet
Для підключення систем по Ethernet потрібно налаштувати їх на роботу в одній IP-мережі, щоб кожна система мала унікальну IP-адресу та могла знаходити інші системи. Це можна зробити за допомогою DHCP-сервера для призначення адрес або вручну налаштувавши адреси кожної системи в мережі.
Немає єдиної «готової» конфігурації, яку ми можемо надати, яка обов’язково працюватиме у вашій локальній мережі. Отже, як приклад того, як можна налаштувати системи в IP-мережі зі статичними адресами в діапазоні 192.168.0.Xxx
, де PX4 має статично призначену адресу 192.168.0.4
, а комп'ютер має адресу 192.168.0.1
. Якщо ви хочете підключити компаньйонний комп'ютер або іншу систему до мережі і встановити статичну адресу, ви можете використати подібний підхід.
:::note Немає нічого «особливого» щодо конфігурації мережі (крім можливо інструментів, які використовуються для зміни налаштувань мережі); вона працює майже так само, як будь-яка домашня або корпоративна мережа. Тобто, знання про те, як працюють IP-мережі, є дуже бажаним! :::
Налаштування мережі PX4 Ethernet
PX4 використовує модуль netman для застосування та оновлення налаштувань мережі.
Налаштування мережі визначаються у файлі конфігурації /fs/microsd/net.cfg
на SD-карті. Це текстовий файл, який визначає кожне налаштування на новому рядку у вигляді пари name=value
. Конфігураційний файл може виглядати так:
DEVICE=eth0
BOOTPROTO=fallback
IPADDR=192.168.0.4
NETMASK=255.255.255.0
ROUTER=192.168.0.254
DNS=192.168.0.254
Де є значення:
DEVICE
: Interface name. Default iseth0
.BOOTPROTO
: Protocol for getting PX4 IP address. Valid values for proto are:dhcp
,static
,fallback
(use DHCP but fall back to static address after time, if that fails)IPADDR
: Static IP address (used if BOOTPROTO isstatic
orfallback
)NETMASK
: Network maskROUTER
: The address of the default route.DNS
: The address of the DNS server.
Щоб налаштувати вищезазначену "прикладну" конфігурацію за допомогою QGroundControl:
Підключіть авіоніку до комп'ютера за допомогою USB-кабелю.
Відкрийте QGroundcontrol > Аналіз інструментів > MAVLink
Введіть команди "like" до наведених нижче у Консоль MAVLink (щоб записати значення у файл конфігурації):
shecho DEVICE=eth0 > /fs/microsd/net.cfg echo BOOTPROTO=fallback >> /fs/microsd/net.cfg echo IPADDR=192.168.0.4 >> /fs/microsd/net.cfg echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg echo ROUTER=192.168.0.254 >>/fs/microsd/net.cfg echo DNS=192.168.0.254 >>/fs/microsd/net.cfg
Після встановлення конфігурації мережі можна від’єднати кабель USB.
Перезавантажте контролер польоту, щоб застосувати налаштування.
Зверніть увагу, що вищевказана настройка надає контролеру польоту адресу в мережі Ethernet. Вам також потрібно налаштувати порт Ethernet для використання MAVLink.
Налаштування мережі Ubuntu Ethernet
Якщо ви використовуєте Ubuntu для вашої земної станції (або компаньйон-комп'ютера), то ви можете використовувати netplan для налаштування мережі.
Нижче ми показуємо, як ви можете записати налаштування у файл конфігурації netplan "/etc/netplan/01-network-manager-all.yaml
", яке буде працювати в тій же мережі, що і налаштування PX4, наведене вище. Зверніть увагу, що в документації з netplan є багато інших прикладів та інструкцій.
Для установки Ubuntu комп'ютера:
У терміналі створіть та відкрийте конфігураційний файл
netplan
:/etc/netplan/01-network-manager-all.yaml
. Нижче ми робимо це за допомогою текстового редактора nano.sudo nano /etc/netplan/01-network-manager-all.yaml
Скопіюйте та вставте наступну конфігураційну інформацію у файл (зверніть увагу: відступи мають значення!):
network: version: 2 renderer: NetworkManager ethernets: enp2s0: addresses: - 192.168.0.1/24 nameservers: addresses: [192.168.0.1] routes: - to: 192.168.0.1 via: 192.168.0.1
Збережіть і закрийте файл.
Застосуйте конфігурацію netplan, введіть наступну команду в термінал Ubuntu.
sudo netplan apply
Companion Computer Ethernet Network Setup
Налаштування компаньйонного комп'ютера залежить від операційної системи компаньйонного комп'ютера.
Операційна система Linux може підтримувати netplan
, у такому разі інструкції будуть такі ж, як вище, але з використанням унікальної IP-адреси.
Конфігурація послідовного порту PX4 MAVLink
Конфігурація порту Ethernet встановлює властивості серійного зв'язку (яким чином PX4 бачить з'єднання Ethernet). Це включає набір повідомлень MAVLink, які передаються, швидкість передачі даних, UDP-порти, на які може підключатися віддалена система, тощо.
:::note Ви повинні окремо налаштувати IP-адресу PX4 та інші налаштування мережі (як показано раніше). :::
PX4 налаштовує серійний порт для підключення до GCS через MAVLink, використовуючи параметри, показані нижче:
Параметр | Значення | Опис |
---|---|---|
MAV_2_CONFIG | 1000 | Налаштування Ethernet порту |
MAV_2_BROADCAST | 1 | Трансляція повідомлень HEARTBEAT |
MAV_2_MODE | 0 | Надіслати «звичайний» набір повідомлень MAVLink (тобто набір GCS) |
MAV_2_RADIO_CTL | 0 | Вимкнути програмне регулювання трафіку MAVLink |
MAV_2_RATE | 100000 | Maximum sending rate |
MAV_2_REMOTE_PRT | 14550 | MAVLink Remote Port of 14550 (GCS) |
MAV_2_UDP_PRT | 14550 | MAVLink Network Port of 14550 (GCS) |
Зазвичай співпрацюючий комп'ютер використовуватиме порт 14540
(замість 14550
) та передаватиме набір повідомлень MAVLink, вказаний у профілі Onboard
. You can configure this setup by changing MAV_2_REMOTE_PRT and MAV_2_UDP_PRT to 14540
and MAV_2_MODE to 2
(Onboard). Проте слід зауважити, що це все одно працюватиме, використовуючи профіль GCS.
Для отримання додаткової інформації про налаштування серійного порту MAVLink дивіться Пристрої MAVLink (GCS/OSD/Супутник).
QGroundControl Setup Example
Припускаючи, що ви вже налаштували мережу Ethernet, щоб ваш комп'ютер земної станції та PX4 працювали в одній мережі, і
Для підключення QGroundControl до PX4 по Ethernet:
Налаштуйте мережу Ethernet так, щоб ваш комп'ютер земної станції та PX4 працювали в одній мережі.
Підключіть комп'ютер земної станції та PX4 за допомогою кабелю Ethernet.
Запустіть QGroundControl та визначте комунікаційний канал (Налаштування додатка > Канали зв'язку), вказавши адресу сервера та порт як IP-адресу та порт, призначений в PX4, відповідно.
Припускаючи, що значення встановлені так, як описано в решті цієї теми, налаштування виглядатиме наступним чином:
Після цього QGroundControl має підключитися, якщо ви виберете це посилання.
:::note Конфігурація порту Ethernet PX4 не повинна бути потрібною (за замовчуванням вона відповідна для GCS). :::
Приклад налаштування MAVSDK-Python
Щоб налаштувати роботу MAVSDK-Python на комп’ютері-супутнику:
Щоб налаштувати роботу MAVSDK-Python на комп’ютері-супутнику:
Змініть Конфігурацію порту Ethernet PX4 для підключення до комп’ютера-супутника. Ви можете змінити параметри MAV_2_REMOTE_PRT і MAV_2_UDP_PRT на
14540
, а MAV_2_MODE на2
(На борту).Дотримуйтесь інструкцій у MAVSDK-python, щоб установити та використовувати MAVSDK.
Наприклад, ваш код буде підключатися до PX4 за допомогою:
pythonawait drone.connect(system_address="udp://192.168.0.4:14540")
:::note MAVSDK може підключитися до PX4 за адресою порту 14550
, якщо ви не змінюєте конфігурацію мережевого порту PX4. Проте це не рекомендується, оскільки типова конфігурація оптимізована для зв'язку з наземним контролем (а не компаньйон комп'ютером). :::
ROS 2 Setup Example
:::note Попередні вимоги:
- У вас є підтримуване апаратне забезпечення автопілота з мікропрограмою PX4, яка включає проміжне програмне забезпечення uXRCE-DDS. Зауважте, що PX4 версії 1.14 і пізніших за замовчуванням включає необхідний модуль uxrce_dds_client.
- ROS 2 було правильно налаштовано на компаньйон(комп’ютер-супутник)
- Ви виконали налаштування мережі Ethernet і портів, як описано вгорі цієї сторінки. :::
Налаштувати ROS 2:
Підключіть ваш автопілот і компаньйон комп'ютер за допомогою Ethernet.
Запустіть клієнт uXRCE-DDS на PX4 вручну або налаштувавши сценарій запуску системи. Зверніть увагу, що вам потрібно використовувати IP-адресу компаньйонного комп'ютера та UDP-порт, на якому агент слухає (приклад конфігурації вище встановлює IP-адресу компаньйонного комп'ютера на
192.168.0.1
, а UDP-порт агента встановлюється на8888
у наступному кроці).Запустіть агент мікро XRCE-DDS на компаньйонному комп'ютері. Наприклад, уведіть наступну команду в термінал, щоб запустити агента, який слухає порт UDP
8888
:shMicroXRCEAgent udp4 -p 8888
Виконайте команду listener node в новому терміналі, щоб підтвердити встановлене з'єднання.
shsource ~/ws_sensor_combined/install/setup.bash ros2 launch px4_ros_com sensor_combined_listener.launch.py
Якщо все налаштовано правильно, в терміналі повинен відображатися наступний вивід:
shRECEIVED SENSOR COMBINED DATA ============================= ts: 855801598 gyro_rad[0]: -0.00339938 gyro_rad[1]: 0.00440091 gyro_rad[2]: 0.00513893 gyro_integral_dt: 4997 accelerometer_timestamp_relative: 0 accelerometer_m_s2[0]: -0.0324082 accelerometer_m_s2[1]: 0.0392213 accelerometer_m_s2[2]: -9.77914 accelerometer_integral_dt: 4997
See Also
- Отримати базову плату Pixhawk Raspberry Pi CM4 від Holybro, яка спілкується з PX4 (блог px4.io):
- Урок, який показує, як підключити Pixhawk 6X + Raspberry Pi на базі CM4 через провідний Ethernet.
- Блог дублює багато матеріалу з цієї теми.