PilotPi with Ubuntu Server
WARNING
Ubuntu Server на RPi 4B споживає багато струму і генерує багато тепла. Розробляйте дизайн для кращого відведення тепла та високого енергоспоживання при використанні цього обладнання. :::
Швидкий старт для розробника
OS Image
Підтримуються і armhf і arm64.
armhf
- Ubuntu Server 18.04.5 для RPi2
- Ubuntu Server 18.04.5 для RPi3
- Ubuntu Server 18.04.5 для RPi4
- Ubuntu Server 20.04.1 для RPi 2/3/4
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-btcmdline.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.localINFO
Не забудьте вимкнути перемикач, коли він не потрібен!
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 --recursiveINFO
Це все, що вам необхідно для збірки найновішого коду.
Встановити точку призначення завантаження 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 налаштування
Будь ласка, зверніться до інструкцій тут