Середовище розробки Windows (засноване на WSL2)
The following instructions explain how to set up a PX4 development environment on Windows 10 or 11, running on Ubuntu Linux within WSL2.
Це середовище може бути використане для збірки PX4 для:
TIP
This setup is supported by the PX4 dev team. Середовище в теорії має бути здатне збирати будь-яку ціль збірки, яку можна зібрати на Ubuntu. The list above are those targets that are regularly tested.
Загальний огляд
The Windows Subsystem for Linux (WSL2) allows users to install and run the Ubuntu Development Environment on Windows, almost as though we were running it on a Linux computer.
В цьому середовищі розробники можуть:
- Build any simulator or hardware target supported by Ubuntu Development Environment in the WSL Shell. (Ubuntu є платформою розробки PX4, яка підтримується та протестована найкраще).
- Debug code in Visual Studio Code running on Windows.
- Monitor a simulation using QGroundControl for Linux running in WSL. QGC для Linux автоматично під'єднується до симуляції.
QGroundControl for Windows is additionally required if you need to:
- Update firmware on a real vehicle.
- Спостерігати за справжнім засобом. Note that you can also use it to monitor a simulation, but you must manually connect to the simulation running in WSL.
INFO
Connecting to a USB device from within WSL is not supported, so you can't update firmware using the upload
option when building on the command line, or from QGroundControl for Linux.
INFO
The approach is similar to installing PX4 in your own virtual machine, as described in Windows VM-Hosted Toolchain. Перевага WSL2 полягає в тому, що її віртуальна машина глибоко інтегрована в Windows, керується системою та оптимізована для ефективності.
Встановлення
Встановлення WSL2
Щоб встановити WSL2 з Ubuntu на новій установці Windows 10 або 11:
Переконайтеся, що функція віртуалізації увімкнена в BIOS вашого комп'ютера. Зазвичай її називають "Virtualization Technology", "Intel VT-x" чи "AMD-V" відповідно.
Open cmd.exe as administrator. This can be done by pressing the start key, typing
cmd
, right-clicking on the Command prompt entry and selecting Run as administrator.Виконайте наступні команди для встановлення WSL2 та певної версії Ubuntu:
Версія за замовчуванням (Ubuntu 22.04):
shwsl --install
Ubuntu 20.04 (Gazebo-Classic Simulation)
shwsl --install -d Ubuntu-20.04
Ubuntu 22.04 (Gazebo Simulation)
shwsl --install -d Ubuntu-22.04
INFO
You can also installUbuntu 20.04 and Ubuntu 22.04 from the store, which allows you to delete the application using the normal Windows Add/Remove settings:
:::
- WSL запитає про ім'я користувача та пароль для встановлення Ubuntu. Запишіть ці облікові дані, оскільки вони знадобляться пізніше!
Тепер командний рядок є терміналом в нововстановленому середовищі Ubuntu.
Відкриття оболонки WSL
Всі операції для встановлення та збірки PX4 повинні бути виконані в оболонці WSL (можна використати ту саму оболонку в якій встановлювалася WSL2 або відкрити нову).
If you're using Windows Terminal you can open a shell into an installed WSL environment as shown, and exit it by closing the tab.
Щоб відкрити оболонку WSL за допомогою командного рядка:
Відкрийте командний рядок:
- Press the Windows Start key.
- Type
cmd
and press Enter to open the prompt.
Щоб запустити WSL і отримати доступ до WSL оболонки, виконайте команду:
shwsl -d <distribution_name>
Наприклад:
shwsl -d Ubuntu
shwsl -d Ubuntu-20.04
If you only have one version of Ubuntu, you can just use
wsl
.
Введіть наступні команди, щоб спочатку закрити WSL оболонку, а потім завершити WSL:
sh
exit
wsl -d <distribution_name> --shutdown
Alternatively, after entering exit
you can just close the prompt.
Встановлення інструментарію PX4
Next we download the PX4 source code within the WSL2 environment, and use the normal Ubuntu installer script to set up the developer environment. This will install the toolchain for Gazebo Classic simulation and Pixhawk/NuttX hardware.
Щоб встановити інструментарій розробки:
Open a WSL2 Shell (if it is still open you can use the same one that was used to install WSL2).
Execute the command
cd ~
to switch to the home folder of WSL for the next steps.WARNING
This is important! Якщо ви працюєте за межами файлової системи WSL, то ви стикнетесь з такими проблемами, як дуже повільне виконання та помилки прав доступу/дозволів.
:::
Download the PX4 source code using
git
(which is already installed in WSL2):shgit clone https://github.com/PX4/PX4-Autopilot.git --recursive
INFO
The environment setup scripts in the source usually work for recent PX4 releases. If working with an older version of PX4 you may need to get the source code specific to your release.
:::
Run the ubuntu.sh installer script and acknowledge any prompts as the script progresses:
shbash ./PX4-Autopilot/Tools/setup/ubuntu.sh
INFO
This installs tools to build PX4 for Pixhawk and either Gazebo or Gazebo Classic targets:
- You can use the
--no-nuttx
and--no-sim-tools
options to omit the NuttX and/or simulation tools. - Other Linux build targets are untested (you can try these by entering the appropriate commands in Ubuntu Development Environment into the WSL shell).
- You can use the
:::
Перезапустіть "комп'ютер WSL" після завершення скрипту (вийти з оболонки, вимкнути WSL та перезапустити WSL):
shexit wsl --shutdown wsl
Перейдіть в репозиторій PX4 в домашній директорії WSL:
shcd ~/PX4-Autopilot
Зберіть ціль PX4 SITL та перевірте середовище:
shmake px4_sitl
For more build options see Building PX4 Software.
Інтеграція з Visual Studio Code
VS Code на Windows добре інтегрований з WSL.
Для налаштування інтеграції:
Download and install Visual Studio Code (VS Code) on Windows,
Open VS Code.
Install the extension called Remote - WSL (marketplace)
У WSL оболонці перейдіть у директорію PX4:
shcd ~/PX4-Autopilot
В оболонці WSL запустіть VS Code:
shcode .
Це відкриє IDE повністю інтегроване в WSL оболонку.
Переконайтеся, що ви завжди відкриваєте PX4 репозиторій у режимі Remote WSL.
Next time you want to develop WSL2 you can very easily open it again in Remote WSL mode by selecting Open Recent (as shown below). Це запустить WSL.
Зверніть увагу, що IP-адреса віртуальної машини WSL буде змінена, так що ви не зможете контролювати симуляцію з QGC для Windows (ви все ще можете використовувати QGC для Linux)
QGroundControl
Для підключення до запущеної симуляції, ви можете запустити QGroundControl або в WSL або у Windows. If you need to flash a flight control board with new firmware you can only do this from the QGroundControl for Windows.
QGroundControl у WSL
Найпростіший спосіб налаштувати та використовувати QGroundControl - це завантажити версію для Linux у WSL.
Це можна зробити з оболонки WSL.
In a web browser, navigate to the QGC Ubuntu download section
Right-click on the QGroundControl.AppImage link, and select "Copy link address". This will be something like _https://d176td9ibe4jno.cloudfront.net/builds/master/QGroundControl.AppImage_
Open a WSL shell and enter the following commands to download the appimage and make it executable (replace the AppImage URL where indicated):
shcd ~ wget <the_copied_AppImage_URL> chmod +x QGroundControl.AppImage
Запустіть QGroundControl:
sh./QGroundControl.AppImage
QGroundControl запуститься та автоматично приєднається до запущеної симуляції, що дозволить вам спостерігати та контролювати ваші рухомі засоби.
Ви не зможете використовувати його для встановлення прошивки PX4, оскільки WSL не надає доступу до послідовних пристроїв.
QGroundControl on Windows
Install QGroundControl on Windows if you want to be able to update hardware with firmware created within PX4.
Ці кроки описують, як ви можете під'єднатися до симуляції, яке працює в WSL:
Check the IP address of the WSL virtual machine by running the command
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
Copy the first part of the
eth0
interfaceinet
address to the clipboard. In this case:172.18.46.131
.In QGC go to Q > Application Settings > Comm Links
Add a UDP Link called "WSL" to port
18570
of the IP address copied above.Збережіть і під'єднайтеся до нього.
INFO
You will have to update the WSL comm link in QGC every time WSL restarts (because it gets a dynamic IP address).
Прошивка плати керування польотом
Flashing a custom built PX4 binary has to be done using QGroundControl for Windows.
INFO
WSL2 does not natively offer direct access to serial/USB devices like Pixhawk flight controllers connected to your computer. That means you can't connect QGC running inside WSL2 to a flight controller to install firmware, or use the upload
command to upload firmware as it is built. Instead you connect QGroundControl for Windows to PX4 running in WSL2 and to the Flight controller in order to upload the firmware.
Зробіть наступні кроки для прошивки вашого бінарного файлу, зібраного у WSL:
If you haven't already built the binary in WSL e.g. with a WSL shell and by running:
shcd ~/PX4-Autopilot make px4_fmu-v5
TIP
Use the correct
make
target for your board.px4_fmu-v5
can be used for a Pixhawk 4 board.
:::
Detach the USB cable of your Pixhawk board from the computer if it was connected.
Open QGC and navigate to Q > Vehicle Setup > Firmware.
Plug your Pixhawk board via USB
Once connected select "PX4 Flight Stack", check Advanced settings and choose Custom firmware file ... from the drop down below.
Continue and select the firmware binary you just built in WSL.
У відкритому діалозі знайдіть розташування "Linux" з іконкою пінгвіна на лівій панелі. Зазвичай, вона в самому низу. Choose the file in the path:
Ubuntu\home\{your WSL user name}\PX4-Autopilot\build\{your build target}\{your build target}.px4
INFO
You can add the folder to the favourites to access it quickly next time.
:::
- Почніть прошивку.
For more information see Installing PX4 Main, Beta or Custom Firmware (Loading Firmware).
Усунення проблем
If you have any problems with your setup, check the current Microsoft WSL installation documentation.
We also recommend that you have the latest Windows GPU drivers installed and also install a recent version of kisak mesa in your Ubuntu environment so that most OpenGL features get emulated:
sh
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade