Управление при помощи 4G связи

Мобильная связь четвертого поколения удобный инструмент для передачи и получения информации на большой скорости. В настоящее время область покрытия мобильных операторов позволяет подключаться к интернету на большой скорости практически из любой точки.

Для передачи каких либо данных с вашего коптера на наземную станцию(QGroundControl) и обратно, вам необходимо настроить собственную VPN сеть.

Подключение 4G модема к Raspberry Pi

Подключите 4G модем с сим-картой в USB порт вашей Raspberry Pi.

Обратите внимание, что при подключении, некоторые модемы распознаются в системе как сетевая карта, без каких либо дополнительных настроек.

Пример 4g модема: USB 4G Huawei E3372H

Однако, некоторые модемы, например, Quectel EP06, автоматически не стартуют соединение. В этом случае необходимо воспользоваться утилитами qmi-network и udhcpc. Установить эти утилиты можно командой:

sudo apt install libqmi-utils udhcpc

Далее запустить соединение с интернетом следующими командами:

sudo ip link set wwan0 down
echo 'Y' | sudo tee /sys/class/net/wwan0/qmi/raw_ip
sudo ip link set wwan0 up
sudo qmi-network /dev/cdc-wdm0 start
sudo udhcpc -q -f -i wwan0

Более подробно прочитать про настройку сетевого подключения вы можете в этой статье.

Проверить наличие соединения с интернетом можно командой:

ping -I wwan0 -c 5 8.8.8.8

Проверить скорость соединения с интернетом можно утилитой speedtest:

sudo apt install speedtest-cli
speedtest

Подключение Raspberry Pi к VPN

Сформируйте необходимые ключи VPN сети, для подключения Raspberry Pi и наземной станции.

Для того, чтобы подключить Raspberry Pi к вашей сети, установите пакет openvpn:

sudo apt-get install openvpn

Перенесите ваши ключи в директорию /etc/openvpn/client. Для удобства используйте графический SFTP интерфейс передачи данных, к примеру: WinSCP, FileZilla и т.д.

Для включения режима клиента, необходимо активировать переданные вами ключи. Ключи могу быть сформированы в различных форматах, к примеру: .ovpn, .conf. Ключ или конфигурация использующийся на вашем коптере, должны быть строго в формате .conf.

Инициализируйте сервис применяющий ваши ключи для подключения в режиме клиента:

sudo systemctl enable openvpn-client@config-name

где config-name - название вашего конфигурационного файла.

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

Перед началом работы не забудьте настроить и включить VPN подключение на вашем ПК.

В качестве удобной альтернативы вы можете воспользоваться VPN-сервисом ZeroTier.

Управление коптером через QGroundControl

Для управления коптером предлагается использовать UDP протокол передачи, обеспечивающий меньшую задержку, ценой отсутствия гарантии получения пакета, что очень важно во время пилотирования коптера.

Убедитесь, что ваш коптер и наземная станция подключены к вашей сети.

Для этого можете воспользоваться командой ip addr. Результатом ее выхода будет пронумерованный список активных сетей включенных на вашем устройстве. Обратить внимание стоит на подключение с префиксом tun и указанным вами IP адресом, если оно присутствует в вашем списке, ваш коптер подключился к сети.

В QGroundControl, аналогично подключению по Wi-Fi, настройте подключение к вашему коптеру по протоколу использующемуся в вашей сети: UDP/TCP. Рекомендуется использовать UDP подключение, за счет большей скорости передачи данных.

Если у вас появилась связь с коптером, подключите какой-либо джойстик к вашему ПК. Роль джойстика может выполнять как радио пульты, такие как, FlySky-i6X, Taranis x7 и т.д., так и джойстики от приставок или любые их эмуляции, которые распознаются системой.

Когда джойстик распознается системой, в колонке Vehicle Setup появится пункт Joystick, в случае, если он подсвечивается красным цветом, это значит, что требуется настройка.

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

После успешной калибровки необходимо настроить полетные режимы. Чтобы это сделать несколько раз переключите необходимые тумблеры. В ходе переключения, вы увидите виртуальные каналы, на которых работают тумблеры. В активном положении будет подсвечиваться один из каналов.

При выборе джойстика, обратите внимание на количество рабочих каналов и на поддержку его, в QGroundControl(SDL2). Встречаются пульты поддерживающие всего 4 канала, что не удобно для такого типа управления.

Если изменения положения стиков отображается в окне QGroundControl, вам остается только применить параметр, определяющий, что управление коптером происходит с помощью джойстика, а не радиоаппаратуры:

COM_RC_IN_MODE - Joystick/No RC Checks

Поскольку мобильная связь не всегда бывает стабильна, рекомендуется увеличить таймаут на потерю сигнала управления до 5 секунд.

Коптер готов к полету!

Если коптер не армится при переведении левого стика в нижний правый угол, установите состояние Arm/Disarm на один из тумблеров.

Передача видео с камеры в QGroundControl

Передача видео возможна практически с любой камеры подключенной к вашей Raspberry Pi. Для этого вам потребуется установить или собрать пакет gst-rtsp-launch:

sudo apt update
sudo apt install gst-rtsp-launch

Чтобы запустить передачу изображений, необходимо ввести соответствующую командную строку:

gst-rtsp-launch "( v4l2src device=/dev/video0 ! video/x-raw,framerate=30/1,width=320,height=240 ! videoconvert ! v4l2h264enc output-io-mode=4 extra-controls=\"encode,frame_level_rate_control_enable=1,h264_profile=4,h264_level=13,video_bitrate=300000,h264_i_frame_period=5;\" ! rtph264pay name=pay0 pt=96 )"

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

Камера Raspberry Pi /dev/video0 может использоваться сервисом clover и тогда gst-rtsp-launch не сможет получить к ней доступ. Чтобы остановить сервис clover выполните команду sudo systemctl stop clover. Также можно пустить трансляцию с USB-камеры, для этого замените устройство передачи на /dev/video1.

В приложении QGroundControl проверьте, что по ссылке rtsp://192.168.11.1:8554/video (IP-адрес вашей Raspberry Pi может отличаться) начался стрим изображения.

Автоматизация запуска передачи видео

Создайте файл и добавьте в него командную строку:

nano script_name.sh

Чтобы корректно запускать файл, необходимо присвоить ему соответствующие флаги доступа.

chmod a+x script_name.sh

Для того, чтобы передача видео запускалась каждый раз при включении системы, необходимо создать стартап-скрипт с помощью менеджера systemd. В директории /etc/systemd/system создайте файл qgc_video.service.

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

В файл запишите соответствующие строки:

[Unit]
Description=VideoStream

[Service]
ExecStart=/bin/bash /home/pi/script_name.sh

[Install]
WantedBy=multi-user.target

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

sudo systemctl enable qgc_video.service

results matching ""

    No results matching ""