Установка и настройка Navio 2 и Raspberry Pi 3

Установка и настройка контроллера автопилота Navio 2 с компьютером Raspberry Pi 3 для автономных дронов и Roboflot Aero

Компоненты

  • 4-, 6- или 8-моторный коптер с двигателями, регуляторами оборотов, системой питания на 5 Вольт 2А, аккумулятором

  • Контроллер автопилота Navio 2 с GPS антенной (документация)

  • Микро компьютер Raspberry Pi 3 B+

  • Камера Raspicam V.2 с контактным шлейфом нужной длины

  • SD-карта памяти на 32 Гб (класс 10)

  • Датчик движения PixFlow с интерфейсом I2C

  • Датчик ИК метки IR-Lock с интерфейсом I2C

  • Лазерный дальномер LightWare SF20 с интерфейсом I2C

  • 4G-модем с симкартой и подключенным интернетом

Установка образа ОС на SD карту

Скачайте образ дистрибутива Raspbian Strech и запишите его на SD карту с помощью Etcher или любой другой подходящей для этого программы.

Для дальнейшей установки ПО, Raspberry необходим доступ в интернет. Подключить его к роутеру можно напрямую с помощью Ethernet кабеля или по WiFi. Для выполнения команд на микрокомпьютере необходимо соединиться с ним по SSH в консольном режиме по сети или подключить монитор и клавиатуру. Имя пользователя pi, пароль raspberry. IP-адрес Raspberry можно найти в панели управления вашего роутера (имя хоста navio).

Настройка подключения к WiFi

Для того, чтобы Raspberry соединился с вашей WiFi сетью после включения, откройте на компьютере SD карту с записанным образом и найдите файл wpa_supplicant.conf. Откройте его в текстовом редакторе и введите название и пароль сети.

network={
  ssid="название_wifi_сети"
  psk="пароль_wifi_сети"
}

Сохраните файл, переставьте SD-карту в Raspberry и подключите питание.

Обновление и начальная конфигурация дистрибутива

Подключитесь в консольном режиме к микрокомпьютеру Raspberry.

ssh pi@IP_ADDRESS

Обновляем дистрибутив:

sudo apt-get update && sudo apt-get dist-upgrade -y

Расширяем файловую систему на весь объем SD-карты:

sudo raspi-config --expand-rootfs

и перегружаем

sudo reboot

Конфигурация Ardupilot

Документация Ardupilot по конфигурации дронов.

После перезагрузки заново соединяемся с Raspberry в консольном режиме.

Начальная конфигурация Ardupilot с помощью утилиты emlidtool:

sudo emlidtool ardupilot

Откройте файл конфигурации Arducopter

sudo nano /etc/default/arducopter 

В нем нужно определить локальный UDP порт для ретрансляции телеметрии в скрипт mavproxy (настройки mavproxy ниже).

TELEM1="-A udp:127.0.0.1:14550"
ARDUPILOT_OPTS="$TELEM1"

Сохраняем файл Ctrl+X, y. Обновляем конфигурацию:

sudo systemctl daemon-reload

Включаем автозапуск Arducopter при включении компьютера

sudo systemctl enable arducopter

Запускаем автопилот

sudo systemctl restart arducopter

И проверяем его состояние

sudo systemctl status arducopter

Если все нормально, в статусе должно быть active (running)

Настройка MAVProxy

В дистрибутиве Emlid Raspbian Stretch уже установлен скрипт MAVProxy. Он используется для ретрансляции телеметрии одновременно в несколько портов и подключения к автопилоту стандартными приложениями, например QGroundControl или Mission Planner (или любым другим по протоколу MAVLink через TCP), в локальной сети или через интернет (описание настройки ниже).

Запустим скрипт и проверим его работоспособность:

mavproxy.py --master=udp:127.0.0.1:14550 --out=tcpin:0.0.0.0:5762

Если MAVProxy успешно соединился с автопилотом, то в консоли появится информация об автопилоте и некоторых его параметрах:

Не останавливая скрипт, подключитесь к автопилоту через приложение QGroundContol, используя локальный IP-адрес Raspberry и порт 5762 (протокол TCP):

После подключения необходимо провести калибровку датчиков и радиоуправления.

Автозапуск MAVProxy при включении компьютера

Чтобы скрипт MAVProxy запускался автоматически при включении компьютера, создадим файл автозапуска:

sudo nano /etc/systemd/system/mavproxy.service

с таким содержимым:

[Unit]
Description=MAVProxy Service
After=arducopter.service

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi
ExecStart=/usr/local/bin/mavproxy.py --master=udp:127.0.0.1:14550 --out=udpout:127.0.0.1:14551 --out=tcpin:0.0.0.0:5761  --out=tcpin:0.0.0.0:5762  --daemon
Restart=on-abort

[Install]
WantedBy=default.target

Включим автозапуск и обновим конифгурацию ОС

sudo systemctl enable mavproxy
sudo systemctl daemon-reload

Запуск сервиса MAVProxy

sudo systemctl start mavproxy

Проверка состояния

sudo systemctl status mavproxy

После запуска MAVProxy слушает порты 5761 и 5762 на входящие TCP соединения. 5761 используется для соединения с приложениями управления в локальной сети, 5762 для удаленного соединения через интернет с помощью сервиса remot3.it.

Установка и настройка remot3.it

Web-сервис remot3.it дает возможность получить временный статический адрес для устройств с динамическим IP-адресом. Это дает возможность подключиться удаленно через интернет к микрокомпьютеру с 4G модемом. Перед установкой и настройкой, необходимо зарегистрироваться на сайте.

Установка стандартного пакета из репозитория:

sudo apt-get install weavedconnectd

После установки, запускаем настройку сервиса:

sudo weavedinstaller

Настраиваем TCP порт 5762 для телеметрии и, при необходимости, SSH на 22й порт.

Теперь можно получить временный адрес микрокомпьютера и подключиться к автопилоту через интернет.

Установка пакетов для видеотрансляции с камеры Raspicam

Установка пакетов

sudo apt-get update
sudo apt-get install autoconf automake libtool pkg-config libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libraspberrypi-dev gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad

Для исправления возможных ошибок в зависимостях пакетов, используйте команды:

sudo apt-get install --fix-broken --assume-yes
sudo apt-get autoremove
sudo apt-get install -f && sudo dpkg --configure -a

Сборка и компиляция пакета rpicamsrc

git clone https://github.com/roboflot-ru/gst-rpicamsrc.git rpicamsrc
cd rpicamsrc
chmod +x autogen.sh
./autogen.sh --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf/
make
sudo make install

Проверка камеры (создается видеофайл test.h264):

gst-launch-1.0 rpicamsrc bitrate=1000000 ! filesink location=test.h264

NodeJS и PM2

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
sudo npm install pm2 -g

Установка и настройка скрипта Roboflot Copter

Скрипт отправляет сообщения между Ardupilot на бортовом компьютере и сервером Roboflot Aero (в обоих направлениях), а также запускает видеотрансляцию с бортовой камеры. Для настройки скрипта необходимы API-ключи для серверов телеметрии и видеотрансляции. Их можно скопировать в панели управления Roboflot Pilot в разделе управления БПЛА.

Копирование скрипта из репозитория на бортовой компьютер

git clone https://github.com/roboflot-ru/roboflot-copter.git copter
cd copter

Установка зависимостей

npm install

Откроем файл copter.js и пропишем API-ключи

nano copter.js

Впишите ключи из панели управления (вместо abcd1234)

const MAVPROXY_KEY = 'abcd1234';
const VIDEO_KEY = 'abcd1234';

Пробный запуск

node copter

После запуска скрипта в панели управления должна появится телеметрия и видеотрансляция.

Настройка автозапуска скрипта при включении

Last updated