Files
clover/docs/ru/4g.md
2020-01-27 13:20:08 +03:00

140 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Управление мультикоптером при помощи 4G связи
Мобильная связь четвертого поколения удобный инструмент для передачи и получения информации на большой скорости. В настоящее время область покрытия мобильных операторов позволяет подключаться к интернету на большой скорости практически из любой точки.
> **Hint** Для передачи каких либо данных с вашего коптера на наземную станцию(QGroundControl) и обратно, вам необходимо настроить собственную VPN сеть.
## Подключение Raspberry Pi к VPN
Подключите 4G модем с сим-картой в USB порт вашей Raspberry Pi.
Обратите внимание, что при подключении, модем должен распознаваться в системе как сетевая карта, без каких либо дополнительных настроек.
Пример 4g модема: *USB 4G Huawei E3372H*
<img src="../assets/4g/huawei.jpg" width=300 class="zoom center border">
> **Hint** Для управления коптером предлагается использовать UDP протокол передачи, обеспечивающий меньшую задержку, ценой отсутствия гарантии получения пакета, что очень важно во время пилотирования коптера.
Сформируйте необходимые ключи VPN сети, для подключения Raspberry Pi и наземной станции.
Для того, чтобы подключить Raspberry Pi к вашей сети, установите пакет *openvpn*:
```bash
sudo apt-get install openvpn
```
Перенесите ваши ключи в директорию */etc/openvpn/client*. Для удобства используйте графический SFTP интерфейс передачи данных, к примеру: WinSCP, FileZilla и т.д.
Для включения режима клиента, необходимо активировать переданные вами ключи. Ключи могу быть сформированы в различных форматах, к примеру: *.ovpn*, *.conf*. Ключ или конфигурация использующийся на вашем коптере, должны быть строго в формате *.conf*.
Инициализируйте сервис применяющий ваши ключи для подключения в режиме клиента:
```bash
sudo systemctl enable openvpn-client@config-name
```
где *config-name* - название вашего конфигурационного файла.
Если все сделано правильно, при каждом перезапуске системы, сервис-клиент будет автоматически подключаться к вашей сети.
> **Hint** Перед началом работы не забудьте настроить и включить VPN подключение на вашем ПК.
## Управление коптером через QGroundControl
Убедитесь, что ваш коптер и наземная станция подключены к вашей сети.
Для этого можете воспользоваться командой `ip addr`. Результатом ее выхода будет пронумерованный список активных сетей включенных на вашем устройстве. Обратить внимание стоит на подключение с префиксом *tun* и указанным вами IP адресом, если оно присутствует в вашем списке, ваш коптер подключился к сети.
В QGroundControl, аналогично [подключению по Wi-Fi](gcs_bridge.md), настройте подключение к вашему коптеру по протоколу использующемуся в вашей сети: *UDP/TCP*. Рекомендуется использовать *UDP* подключение, за счет большей скорости передачи данных.
Если у вас появилась связь с коптером, подключите какой-либо джойстик к вашему ПК. Роль джойстика может выполнять как радио пульты, такие как, FlySky-i6X, Taranis x7 и т.д., так и джойстики от приставок или любые их эмуляции, которые распознаются системой.
Когда джойстик распознается системой, в колонке *Vehicle Setup* появится пункт *Joystick*, в случае, если он подсвечивается красным цветом, это значит, что требуется настройка.
Для калибровки джойстика, во вкладке *Joystick* нажмите кнопку *Calibrate* и следуйте инструкциям положения стиков пульта, указанных с левой стороны окна.
<div class="image-group">
<img src="../assets/4g/calibrate.png" width=300 class="zoom border">
<img src="../assets/4g/calibration_instruction.png" width=300 class="zoom border">
</div>
После успешной калибровки необходимо настроить полетные режимы. Чтобы это сделать несколько раз переключите необходимые тумблеры. В ходе переключения, вы увидите виртуальные каналы, на которых работают тумблеры. В активном положении будет подсвечиваться один из каналов.
<img src="../assets/4g/fly_modes.png" width=300 class="zoom center border">
> **Info** При выборе джойстика, обратите внимание на количество рабочих каналов и на поддержку его, в QGroundControl(SDL2). Встречаются пульты поддерживающие всего 4 канала, что не удобно для такого типа управления.
Если изменения положения стиков отображается в окне QGgroundControl, вам остается только применить параметр, определяющий, что управление коптером происходит с помощью джойстика, а не радиоаппаратуры:
`COM_RC_IN_MODE` - Joystick/No RC Checks
Поскольку мобильная связь не всегда бывает стабильна, рекомендуется увеличить таймаут на потерю сигнала управления до 5 секунд.
<img src="../assets/4g/failsafe.png" width=300 class="zoom center border">
Коптер готов к полету!
> **Hint** Если коптер не армится при переведении левого стика в нижний правый угол, установите состояние Arm/Disarm на один из тумблеров.
## Передача видео с камеры в QGroundControl
Передача видео возможна практически с любой камеры подключенной к вашей Raspberry Pi. Для этого вам потребуется установить или [собрать](https://github.com/sfalexrog/gst-rtsp-launch) пакет *gst-rtsp-launch*:
```bash
sudo apt-get install gst-rtsp-launch
```
Чтобы запустить передачу изображений, необходимо ввести соответствующую командную строку:
<a id="command_line"></a>
```bash
gst-rtsp-launch "( v4l2src device=/dev/video0 ! video/x-raw,framerate=30/1,width=320,height=240 ! 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 )"
```
Данная командная строка содержит параметры передачи видео, такие как: устройство передачи, частота кадров, высота/ширина изображения, метод кодирования и т.д. Подробнее о настройках [можно узнать тут](https://github.com/sfalexrog/gst-rtsp-launch/blob/master/README.md).
В приложении QGroundControl проверьте, что начался стрим изображения.
<img src="../assets/4g/video_stream.png" width=300 class="zoom center border">
## Автоматизация запуска передачи видео
Создайте файл и добавьте в него [командную строку](#command_line):
```bash
nano script_name.sh
```
Чтобы корректно запускать файл, необходимо присвоить ему соответствующие флаги доступа.
```bash
chmod a+x script_name.sh
```
Для того, чтобы передача видео запускалась каждый раз при включении системы, необходимо создать стартап-скрипт с помощью менеджера systemd. В директории */etc/systemd/system* создайте файл *qgc_video.service*.
```bash
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
```
Осталось только инициализировать ваш скрипт в системе и он будет запускаться при каждом ее включении.
```bash
sudo systemctl enable qgc_video.service
```