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

2016-07-04 14:08:43 Комментариев: 0 Просмотров: 1044

Данная статья посвящена реализации потокового видео по 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

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

Оставить комментарий

Ваше Имя:


Ваш комментарий: Внимание: HTML не поддерживается! Используйте обычный текст.

Оценка: Плохо            Хорошо

Введите код, указанный на картинке:



 
Google Translate

      Принимаем к оплате:
Acceptance Mark Яндекс.Метрика
Интернет портал FPVhobby.ru. Полеты по камере www.fpvhobby.ru / All rights received © 2012-2016