fpvhobby

HD video и телеметрия Mavlink через Raspberry Pi

Оценить эту запись
Данная статья посвящена реализации потокового видео по UDP протоколу посредством Gstreamer, а также MJPEG через http протокол.
Также будет рассказано о подключении Mission Planner (APM planner, QGround Control) через UPD протокол для получения телеметрии и управлении БЛА.

Мы не специалисты в линуксе, а только учимся, поэтому комментарии и возражения по тому или иному способу подключения приветствуются...

Схема подключения следующая: На БЛА установлена Raspberry Pi со стандартной камерой, НС (наземная станция) - ноутбук, с установленной программой Mission Planner.

1. Устанавливаем Rasbian на микрокомпьютер Raspberry. Подробно данный шаг описывать не будем, т.к. в сети много информации на эту тему.

2. После установки ОС, заходим в
sudo raspi-config
включаем камеру, пунктом "Enable Camera", в "Advanced Options" включаем доступ по SSH, а также выключаем Serial port.

3. Для удобного подключения по SSH и дальнейшего использования устанавливаем статический IP адрес:
sudo nano /etc/network/interfaces
Данный файл отвечает за сетевые подключения, в нем прописываем:
auto eth0
iface eth0 inet static
address 192.168.137.50
netmask 255.255.255.0
gateway 192.168.137.1
Строка в данном файле связанная с DHCP
# iface eth0 inet dhcp
должна быть удалена или закомменчена

4. Устанавливаем связь по UDP протоколу между полетным контроллером и наземной станцией.
Полное описание и последовательность действий указана на сайте разработчиков diydrones.

5-1. Передача потокового видео через MJPEG.
Обновляем систему:
sudo apt-get update
sudo apt-get upgrade
Для получения потокового видео устанавливаем на Raspberry Pi mjpg-streamer. Сначала устанавливаем необходимые для mjpg-streamer пакеты:
apt-get install cmake
apt-get install subversion
apt-get install libv4l-dev
apt-get install libjpeg8-dev
apt-get install imagemagick
А затем сам mjpg-streamer:
wget github.com/jacksonliam/mjpg-streamer/archive/master.zip
unzip ./master -d ./ms
cd ./ms/mjpg-streamer-master/mjpg-streamer-experimental
make clean all
Для настройки mjpg-streamer корректируем файл start.sh:
nano start.sh
Все строки в нем комментируем или удаляем, и добавляем следующие строки:
cd /root/ms/mjpg-streamer-master/mjpg-streamer-experimental
./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 1280 -y 720 -fps 20 -ex auto -awb auto -vs -ISO 100"
где:
-x 1280 – размер видео по горизонтали
-y 720 – размер видео по вертикали
-fps 20 – частота кадров
-ex auto – автоматическая экспозиция
-awb auto – автоматический баланс белого
-vs – вертикальная синхронизация
-ISO 100 – параметры ISO
Запускаем mjpg-streamer:
./start.sh
На НС в браузере вводим IP адрес raspberry, порт камеры 8080


5-2. Передача потокового видео через Gstreamer.
Добавляем в файл обновления:
sudo nano /etc/apt/sources.list
следующие строки:
Обновляем систему:
sudo apt-get update
sudo apt-get upgrade
Устанавливаем Gstreamer:
sudo apt-get install gstreamer1.0
Для передачи потокового видео вводим команду:
raspivid -n -w 1280 -h 720 -b 4500000 -fps 25 -vf -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=10.3.99.33 port=9000
На примимающей стороне (НС) устанавливаем Gstreamer c оф. сайта.
По умолчанию он устанавливается в корневой каталог C:\
Создаем исполняемый файл ***.bat в него вводим строки:
@echo off
cd C:\gstreamer\1.0\x86_64\bin
gst-launch-1.0 -e -v udpsrc port=9000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false
здесь можно поиграться разрешением, битрейтом и пр.

Запуск потокового видео на НС:


Познавательное видео, как организовать за 3 мин. передачу потокового видео


6. Автозагрузка команд.
Мы создали отдельные скрипты для запуска потокового видео и телеметрии.
Содержание скрипта для передачи потокового видео:
#!/bin/bash
clear
raspivid -n -w 1280 -h 720 -b 4500000 -fps 25 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=192.168.137.1 port=9000
exit 0
файл обозвали start_stream.sh и положили его в домашнюю папку /home/pi/
Содержание скрипта для запуска телеметрии через UDP в программе Mission Planner, мы его создали и назвали mis_planner.sh и положили также в папку /home/pi/:
#!/bin/bash
mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600 --out 192.168.137.1:14550 --aircraft MyCopter
Добавляем эти два скрипта в файл автозагрузки перед строчкой exit 0:
sudo nano /etc/rc.local
# MJPEG
#sudo nohup /home/pi/start_mjpg.sh start &

# GStreamer
sudo nohup /home/pi/start_stream.sh start &

# UDP MP
sudo /home/pi/mis_planner.sh start
Скрипт передачи видео работает в фоновом режиме.
После перезагрузки "малины" все должно работать!



На скриншоте показана OSD mission planner

Задержка видео составляет около 220 мс. как при передачи через Gstreamer, так и через MJPEG. Через Gstreamer намного качественнее картинка и визуально меньше задержка.
Мы использовали wifi оборудование фирмы ubiquiti networks

Обновлено 14.10.2015 в 12:12 fpvhobby

Метки: mavlink, rasbberry pi Добавить / редактировать метки
Категории
HD Video

Комментарии