Реализация прокси для двунаправленной передачи данных через 8P8C и COM порт по протоколу MavLink - DRONE520/DRONE520-main GitHub Wiki
Реализация прокси для двунаправленной передачи данных через 8P8C и COM-порт по протоколу MavLink
Реализация программного обеспечения на ARM архитектуре отличается от реализации на других архитектурах, все дело в том, что каждая платформа имеет в своем распоряжении различный набор процессорных команд и т.п. А значит, перед тем как приступить к реализации ПО для микрокомпьютера, рассмотрим устройство одноплатного компьютера NanoPi NEO.
NanoPi NEO - одноплатный компьютер на процессоре Allwinner H3 от компании FriendlyARM, в который входят четыре вычислительных ядра Cortex A7 с тактовой частотой до 1,2 ГГц. Работа производится под управлением Android 4.4, Ubuntu, Debian. Имеет 256 МБ DDR3 оперативной памяти SDRAM, поддерживает карты памяти (microSD) ёмкостью до 64 гигабайт. Мини-компьютер оснащен графическим ускорителем Mali-400MP2, позволяющим декодировать 4К-видео формата H.265/HEVC, частота воспроизведения - до 30 кадров в секунду. NanoPi NEO отлично подходит для построения встраиваемых систем управления и систем контроля.
В верхней части плата оснащена Ethernet, USB хостом и микро USB (питание) портами, а также микро SD слотом и разъемами ввода/вывода. На задней панели расположены две основные микросхемы:
- Четыре вычислительных ядра Cortex A7;
- Чип Samsung RAM.
Данный микрокомпьютер поддерживает множество различных UNIX- подобных операционных систем:
- FriendlyCore (UbuntuCore-16.04);
- Armbian;
- H3Droid;
- DietPi;
- Lakka;
- Kali;
- OpenWrt;
- FriendlyELEC и т.д.
В качестве операционной системы для разработки была выбрана Ubuntu 16.04 LTS, так как она была предварительно установлена на микрокомпьютере и не нуждалась в обновлении.
Схема управления
Выбор библиотеки для решения поставленной задачи
Основная задача работы заключается в реализации передачи данных между наземной станцией и полетным контроллером. Поскольку полетный контроллер оснащен интерфейсом передачи данных COM-портом, а наземная станция разъемом 8P8C (унифицированным разъемом, используемым в коммуникации), то необходимо каким-либо образом осуществить конвертацию данных между каналами связи, которые должны передавать данные по протоколу MavLink.
В качестве решения задачи конвертации данных были рассмотрены следующие варианты библиотек:
- MAVProxy — библиотека разработанная под язык программирования Python, для наземных станций. Недостаток данной библиотеки заключается в низкой производительности, что может вызвать задержки при передаче данных.
- MavLinkCom — кроссплатформенная библиотека C++, которая помогает подключаться к дронам на базе MavLink и взаимодействовать с ними. В частности, эта библиотека предназначена для работы с дронами на базе PX4.
Рассмотрим структуру классов библиотеки MavLinkCom представленную на рисунке ниже:
Как можно заметить, данная библиотека реализует MavLinkConnection по двум протоколам передачи данных: SerialPort и UdpClientPort.
Реализация прокси соединения
Для взаимодействия наземной станции, на которой используется приложение QGroundControl и полетного контроллера, необходимо реализовать прокси соединение: