Skip to content

PilotPi with Ubuntu Server

WARNING

Ubuntu Server на RPi 4B споживає багато струму і генерує багато тепла. Розробляйте дизайн для кращого відведення тепла та високого енергоспоживання при використанні цього обладнання. :::

Швидкий старт для розробника

OS Image

Підтримуються і armhf і arm64.

armhf

arm64

Найновіша ОС

Будь ласка, звертайтеся до офіційної сторінки cdimage для отримання будь-яких нових оновлень.

Перший запуск

Під час налаштування Wi-Fi для RaPi вперше ми рекомендуємо використовувати провідне підключення Ethernet між домашнім маршрутизатором та RPi, а також монітор та клавіатуру.

Перед завантаженням

Встановіть SD-карту на ваш комп'ютер та змініть налаштування мережі. Будь ласка, дотримуйтесь офіційної інструкції тут.

Тепер під'єднайте SD-карту до вашого Pi та завантажтеся вперше. Переконайтеся, що у вас є доступ до RPi через командний рядок - або через з'єднання SSH по кабелю Ethernet, або безпосередній доступ за допомогою клавіатури та монітора.

WiFi регіон

Спочатку встановіть необхідний пакет:

sh
sudo apt-get install crda

Відредагуйте файл /etc/default/crda, щоб встановити правильний WiFi регіон. Reference List

sh
sudo nano /etc/default/crda

Потім ваш Pi зможе приєднатися до вашої мережі WiFi після перезавантаження.

Hostname та mDNS

Давайте спочатку налаштуємо ім'я хоста.

sh
sudo nano /etc/hostname

Змініть значення hostname на те, що вам подобається. Потім встановіть пакет, необхідний для mDNS:

sh
sudo apt-get update
sudo apt-get install avahi-daemon

Виконайте перезавантаження.

sh
sudo reboot

Відновіть доступність через підключення WiFi після вищезазначеної операції.

sh
ssh ubuntu@pi_hostname.local

Автентифікація без пароля (необов'язково)

Ви також можете налаштувати безпарольну автентифікацію.

Налаштування ОС

config.txt

Відповідний файл в Ubuntu - /boot/firmware/usercfg.txt.

sh
sudo nano /boot/firmware/usercfg.txt

Замініть контент файлу на:

sh
# enable sc16is752 overlay
dtoverlay=sc16is752-spi1
# enable I2C-1 and set the frequency to 400KHz
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
# enable spidev0.0
dtparam=spi=on
# enable RC input
enable_uart=1
# enable I2C-0
dtparam=i2c_vc=on
# switch Bluetooth to miniuart
dtoverlay=miniuart-bt

cmdline.txt

В Ubuntu Server 20.04:

sh
sudo nano /boot/firmware/cmdline.txt

Для Ubuntu Server 18.04 або ранішої версії, слід змінити nobtcmd.txt та btcmd.txt.

sh
sudo nano /boot/firmware/nobtcmd.txt

Знайдіть console=/dev/ttyAMA0,115200 та видаліть цю частину, щоб вимкнути командний рядок логіну на послідовному інтерфейсі.

Додайте isolcpus=2 після останнього слова. Весь файл буде виглядати так:

sh
net.ifnames=0 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc isolcpus=2

Вищезазначений рядок вказує ядру Linux не планувати жодного процесу на ядрі CPU 2. Ми пізніше вручну запустимо PX4 на цьому ядрі.

Перезавантажте та увійдіть за допомогою SSH на ваш Pi.

Перевірте інтерфейс UART:

sh
ls /dev/tty*

Має бути /dev/ttyAMA0, /dev/ttySC0 та /dev/ttySC1.

Перевірте інтерфейс I2C:

sh
ls /dev/i2c*

Повинно бути /dev/i2c-0 та /dev/i2c-1

Перевірте інтерфейс SPI:

sh
ls /dev/spidev*

Має бути /dev/spidev0.0.

rc.local

У цьому розділі ми налаштуємо скрипт автозапуску в rc.local. Зверніть увагу, що нам потрібно створити цей файл, оскільки він відсутній у свіжій операційній системі Ubuntu.

sh
sudo nano /etc/rc.local

Додати вміст нижче до файлу:

sh
#!/bin/sh

echo "25" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio25/direction
if [ $(cat /sys/class/gpio/gpio25/value) -eq 1 ] ; then
        echo "Launching PX4"
        cd /home/ubuntu/px4 ; nohup taskset -c 2 ./bin/px4 -d -s pilotpi_mc.config 2 &> 1 > /home/ubuntu/px4/px4.log &
fi
echo "25" > /sys/class/gpio/unexport

exit 0

Збережіть та вийдіть. Потім встановіть правильні права:

sh
sudo chmod +x /etc/rc.local

INFO

Не забудьте вимкнути перемикач, коли він не потрібен!

CSI камера

WARNING

Увімкнення камери CSI призведе до зупинки роботи будь-чого на I2C-0.

sh
sudo nano /boot/firmware/usercfg.txt

Додайте наступний рядок в кінці файлу:

sh
start_x=1

Збірка коду

Для завантаження найостаннішої версії на свій комп'ютер, введіть у терміналі наступну команду:

sh
git clone https://github.com/PX4/PX4-Autopilot.git --recursive

INFO

Це все, що вам необхідно для збірки найновішого коду.

Встановити точку призначення завантаження RPi

Встановіть IP-адресу (або ім'я хоста) вашого RPi за допомогою:

sh
export AUTOPILOT_HOST=192.168.X.X

або

sh
export AUTOPILOT_HOST=pi_hostname.local

Додатково, нам потрібно встановити ім'я користувача:

sh
export AUTOPILOT_USER=ubuntu

Збірка для архітектури armhf

Зберіть виконуваний файл:

sh
cd Firmware
make scumaker_pilotpi_default

Потім завантажте його за допомогою:

sh
make scumaker_pilotpi_default upload

Альтернативний метод збірки для armhf (з використанням Docker)

Якщо ви вперше компілюєте з докером, будь ласка, зверніться до офіційної документації.

Виконайте команду в директорії firmware:

sh
./Tools/docker_run.sh "export AUTOPILOT_HOST=192.168.X.X; export AUTOPILOT_USER=ubuntu; export NO_NINJA_BUILD=1; make scumaker_pilotpi_default upload"

INFO

mDNS не підтримується з Docker. Ви повинні вказати правильну IP-адресу кожного разу при завантаженні.

Якщо ваша IDE не підтримує збірку ninja, опція NO_NINJA_BUILD=1 допоможе. Ви можете компілювати без завантаження також. Просто видаліть upload.

Також можливо просто скомпілювати код за допомогою команди:

sh
./Tools/docker_run.sh "make scumaker_pilotpi_default"

Збірка для архітектури arm64

Цей крок потребує встановлення утиліти aarch64-linux-gnu.

Зберіть виконуваний файл:

sh
cd PX4-Autopilot
make scumaker_pilotpi_arm64

Потім завантажте його за допомогою:

sh
make scumaker_pilotpi_arm64 upload

Альтернативний метод збірки для arm64 (з використанням Docker)

Якщо ви вперше компілюєте з докером, будь ласка, зверніться до офіційної документації.

Виконайте команду в директорії PX4-Autopilot:

sh
./Tools/docker_run.sh "export AUTOPILOT_HOST=192.168.X.X; export AUTOPILOT_USER=ubuntu; export NO_NINJA_BUILD=1; make scumaker_pilotpi_arm64 upload"

INFO

mDNS не підтримується з Docker. Ви повинні вказати правильну IP-адресу кожного разу при завантаженні.

Якщо ваша IDE не підтримує збірку ninja, опція NO_NINJA_BUILD=1 допоможе. Ви можете компілювати без завантаження - просто видаліть upload.

Також можливо просто скомпілювати код за допомогою команди:

sh
./Tools/docker_run.sh "make scumaker_pilotpi_arm64"

Ручний запуск PX4

Під'єднайтесь через ssh та запустіть за допомогою:

sh
cd px4
sudo taskset -c 2 ./bin/px4 -s pilotpi_mc.config

Тепер PX4 запустився з конфігурацією мультиротора.

Якщо ви стикалися з аналогічною проблемою під час виконання bin/px4 на вашому Pi, як показано нижче:

bin/px4: /lib/xxxx/xxxx: version `GLIBC_2.29' not found (required by bin/px4)

Тоді ви повинні скомпілювати з Docker.

Перш ніж перейти до наступного кроку, спочатку видаліть наявну збірку:

sh
rm -rf build/scumaker_pilotpi_*

Потім поверніться до відповідного розділу вище.

Post налаштування

Будь ласка, зверніться до інструкцій тут