Середовище розробки Windows (засноване на WSL2)
Наступні інструкції пояснюють як налаштувати середовище розробки PX4 на Windows 10 або 11, запущене на Ubuntu Linux у WSL2.
Це середовище може бути використане для збірки PX4 для:
TIP
Ця установка підтримується командою розробників PX4. Середовище в теорії має бути здатне збирати будь-яку ціль збірки, яку можна зібрати на Ubuntu. The list above are those targets that are regularly tested.
Загальний огляд
Windows Subsystem для Linux (WSL2) дозволяє користувачам встановлювати й запускати середовище розробки Ubuntu на Windows, майже так само як би його запустили на комп'ютері Linux.
В цьому середовищі розробники можуть:
- Зібрати в оболонці WSL будь-який симулятор або цільову апаратну платформу, яка підтримується середовищем розробки Ubuntu. (Ubuntu є платформою розробки PX4, яка підтримується та протестована найкраще).
- Налагоджувати код в Visual Studio Code запущений на Windows.
- Спостерігати за симуляцією, яка запущена в WSL використовуючи QGroundControl для Linux. QGC для Linux автоматично під'єднується до симуляції.
QGroundControl для Windows необхідна додатково, якщо потрібно:
- Поновлення прошивки на реальному рухомому засобі.
- Спостерігати за справжнім засобом. Зауважте, що також можна спостерігати за симуляцією, але потрібно вручну під'єднатися до симуляції, що запущена у WSL.
:::note Підключення до USB пристрою з WSL не підтримується, тому неможливо поновити прошивку за допомогою параметру upload
під час збірки у командній оболонці, або з QGroundControl для Linux. :::
:::note Цей підхід схожий на встановлення PX4 на власну віртуальну машину, як описано в інструментарії на VM Windows. Перевага WSL2 полягає в тому, що її віртуальна машина глибоко інтегрована в Windows, керується системою та оптимізована для ефективності. :::
Встановлення
Встановлення WSL2
Щоб встановити WSL2 з Ubuntu на новій установці Windows 10 або 11:
Переконайтеся, що функція віртуалізації увімкнена в BIOS вашого комп'ютера. Зазвичай її називають "Virtualization Technology", "Intel VT-x" чи "AMD-V" відповідно.
Відкрийте cmd.exe від імені адміністратора. Це можна зробити натиснувши кнопку "Пуск", надрукувати
cmd
, натиснути правою кнопкою миші на пункті Command prompt та обрати Run as administrator.Виконайте наступні команди для встановлення WSL2 та певної версії Ubuntu:
Версія за замовчуванням (Ubuntu 22.04):
shwsl --install
Ubuntu 20.04 (Симуляція Gazebo-Classic)
shwsl --install -d Ubuntu-20.04
Ubuntu 22.04 (Симуляція Gazebo)
shwsl --install -d Ubuntu-22.04
:::note Ви також можете встановитиUbuntu 20.04 та Ubuntu 22.04 з магазину застосунків, який дозволяє видалити програму за допомогою звичайної функції Windows Додати/Видалити: :::
- WSL запитає про ім'я користувача та пароль для встановлення Ubuntu. Запишіть ці облікові дані, оскільки вони знадобляться пізніше!
Тепер командний рядок є терміналом в нововстановленому середовищі Ubuntu.
Відкриття оболонки WSL
Всі операції для встановлення та збірки PX4 повинні бути виконані в оболонці WSL (можна використати ту саму оболонку в якій встановлювалася WSL2 або відкрити нову).
Якщо ви використовуєте Windows Terminal ви можете відкрити консоль у встановленому WSL середовищі, як показано, та вийти з нього, закривши вкладку.
Щоб відкрити оболонку WSL за допомогою командного рядка:
Відкрийте командний рядок:
- Натисніть кнопку Windows Пуск.
- Введіть
cmd
і натисніть Enter, щоб відкрити консоль.
Щоб запустити WSL і отримати доступ до WSL оболонки, виконайте команду:
shwsl -d <distribution_name>
Наприклад:
shwsl -d Ubuntu
shwsl -d Ubuntu-20.04
Якщо у вас тільки одна версія Ubuntu, ви можете просто використати
wsl
.
Введіть наступні команди, щоб спочатку закрити WSL оболонку, а потім завершити WSL:
sh
exit
wsl -d <distribution_name> --shutdown
Як варіант, після введення exit
можна просто закрити консоль.
Встановлення інструментарію PX4
Далі ми завантажуємо вихідний код PX4 у середовищі WSL2 і використовуємо звичайний скрипт встановлювання для Ubuntu для налаштування середовища розробника. This will install the toolchain for Gazebo Classic simulation and Pixhawk/NuttX hardware.
Щоб встановити інструментарій розробки:
Відкрийте оболонку WSL2 (якщо вона ще відкрита, ви можете використати ту саму що для встановлення WSL2).
Виконайте команду
cd ~
для переходу в домашню директорію WSL для подальших кроків.WARNING
Це важливо! Якщо ви працюєте за межами файлової системи WSL, то ви стикнетесь з такими проблемами, як дуже повільне виконання та помилки прав доступу/дозволів. :::
Завантажте вихідний код PX4 за допомогою
git
(вже встановлений у WSL2):shgit clone https://github.com/PX4/PX4-Autopilot.git --recursive
:::note Скрипти налаштування середовища у вихідному коді зазвичай працюють для останніх релізів PX4. Якщо ви працюєте зі старішою версією PX4, то може знадобитися отримати вихідний код для конкретного релізу. :::
Запустіть скрипт встановлення ubuntu.sh і зробіть вибір у будь-яких підказках по ходу виконання скрипту:
shbash ./PX4-Autopilot/Tools/setup/ubuntu.sh
This installs tools to build PX4 for Pixhawk and either Gazebo or Gazebo Classic targets:
- Також можна використовувати опції
--no-nuttx
та--no-sim-tools
, щоб пропустити встановлення інструментів для NuttX та/або симуляції. - Інші цілі збірки Linux не перевірені (ви можете спробувати їх, ввівши відповідні команди у середовищі розробки Ubuntu в оболонці WSL).
- Також можна використовувати опції
:::
Перезапустіть "комп'ютер WSL" після завершення скрипту (вийти з оболонки, вимкнути WSL та перезапустити WSL):
shexit wsl --shutdown wsl
Перейдіть в репозиторій PX4 в домашній директорії WSL:
shcd ~/PX4-Autopilot
Зберіть ціль PX4 SITL та перевірте середовище:
shmake px4_sitl
Для додаткових варіантів збірки дивіться Збірка програмного забезпечення PX4.
Інтеграція з Visual Studio Code
VS Code на Windows добре інтегрований з WSL.
Для налаштування інтеграції:
Завантажте і встановіть Visual Studio Code (VS Code) на Windows.
Відкрийте VS Code.
Встановіть розширення під назвою Remote - WSL (з магазину)
У WSL оболонці перейдіть у директорію PX4:
shcd ~/PX4-Autopilot
В оболонці WSL запустіть VS Code:
shcode .
Це відкриє IDE повністю інтегроване в WSL оболонку.
Переконайтеся, що ви завжди відкриваєте PX4 репозиторій у режимі Remote WSL.
Наступного разу, коли ви захочете розробляти у WSL2, ви легко зможете відкрити його знову в режимі Remote WSL, обравши Open Recent (як показано нижче). Це запустить WSL.
Зверніть увагу, що IP-адреса віртуальної машини WSL буде змінена, так що ви не зможете контролювати симуляцію з QGC для Windows (ви все ще можете використовувати QGC для Linux)
QGroundControl
Для підключення до запущеної симуляції, ви можете запустити QGroundControl або в WSL або у Windows. Якщо вам потрібно записати у плату керування польотом нову прошивку, ви можете зробити це лише у QGroundControl для Windows.
QGroundControl у WSL
Найпростіший спосіб налаштувати та використовувати QGroundControl - це завантажити версію для Linux у WSL.
Це можна зробити з оболонки WSL.
У браузері перейдіть в QGC Ubuntu download section
Клацніть правою кнопкою миші на посилання QGroundControl.AppImage та виберіть "Копіювати адресу посилання". Це буде щось на зразок _https://d176td9ibe4jno.cloudfront.net/builds/master/QGroundControl.AppImage_
Відкрийте оболонку WSL і введіть наступні команди щоб завантажити AppImage та зробити його виконуваним (замінить URL до AppImage, де зазначено):
shcd ~ wget <the_copied_AppImage_URL> chmod +x QGroundControl.AppImage
Запустіть QGroundControl:
sh./QGroundControl.AppImage
QGroundControl запуститься та автоматично приєднається до запущеної симуляції, що дозволить вам спостерігати та контролювати ваші рухомі засоби.
Ви не зможете використовувати його для встановлення прошивки PX4, оскільки WSL не надає доступу до послідовних пристроїв.
QGroundcontrol на Windows
Встановіть QGroundControl on Windows якщо ви хочете мати змогу оновити апаратне забезпечення за допомогою прошивки, створеної у PX4.
Ці кроки описують, як ви можете під'єднатися до симуляції, яке працює в WSL:
Перевірте IP-адресу віртуальної машини WSL запустивши команду
ip addr | grep eth0
:sh$ ip addr | grep eth0 6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 inet 172.18.46.131/20 brd 172.18.47.255 scope global eth0
Скопіюйте першу
inet
частину адреси інтерфейсуeth0
у буфер обміну. В цьому випадку:172.18.46.131
.У QGC перейдіть у Q > Налаштування додатку > Канали зв'язку
Додайте UDP канал з назвою "WSL" до порту
18570
з IP-адресою скопійованою вище.Збережіть і під'єднайтеся до нього.
:::note Вам доведеться оновляти канал зв'язку з WSL у QGC щоразу, коли WSL буде перезапущено (тому що вона отримує динамічну IP-адресу). :::
Прошивка плати керування польотом
Запис нестандартного двійкового файлу PX4 повинно бути зроблено за допомогою QGroundControl для Windows, оскільки WSL2 не надає прямий доступ до послідовних пристроїв, таких як плати Pixhawk.
Зробіть наступні кроки для прошивки вашого бінарного файлу, зібраного у WSL:
Зберіть, якщо ще це не зробили, бінарний файл у WSL, тобто за допомогою WSL shell та виконавши:
shcd ~/PX4-Autopilot make px4_fmu-v5
Примітка: використовуйте правильну ціль збірки для вашої плати. Для плати Pixhawk 4 можна використати "px4_fmu-v5".
Від'єднайте USB-кабель плати Pixhawk від комп'ютера, якщо він був підключений.
Відкрийте QGC.
У QGC перейдіть у Q > Налаштування рухомого засобу > Прошивка
Під'єднайте Pixhawk плату через USB
Після підключення оберіть "Польотний набір PX4", відмітьте "Просунуті налаштування" і оберіть "Користувацький файл прошивки ..." зі списку що розкрився нижче.
Оберіть бінарний файл прошивки, який ви щойно зібрали. У відкритому діалозі знайдіть розташування "Linux" з іконкою пінгвіна на лівій панелі. Зазвичай, вона в самому низу. Оберіть файл за шляхом:
Ubuntu\home\{ваш користувач у WSL}\PX4-Autopilot\build\{ціль збірки}\{ціль збірки}.px4
:::note Ви можете додати директорію до обраного, щоб швидко отримати доступ до неї. :::
Почніть прошивку.
Усунення проблем
Якщо маєте будь-які проблеми з установкою, перевірте наявну документацію із встановлення Microsoft WSL.
Ми також рекомендуємо мати останню версію Windows-драйвера GPU, а також встановити останню версію kisak mesa в середовищі Ubuntu для того, щоб більшість емулювалась більшість функцій OpenGL:
sh
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade