Реализация прокси для двунаправленной передачи данных через 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 слотом и разъемами ввода/вывода. На задней панели расположены две основные микросхемы:

  1. Четыре вычислительных ядра Cortex A7;
  2. Чип Samsung RAM.

Данный микрокомпьютер поддерживает множество различных UNIX- подобных операционных систем:

  • FriendlyCore (UbuntuCore-16.04);
  • Armbian;
  • H3Droid;
  • DietPi;
  • Lakka;
  • Kali;
  • OpenWrt;
  • FriendlyELEC и т.д.

В качестве операционной системы для разработки была выбрана Ubuntu 16.04 LTS, так как она была предварительно установлена на микрокомпьютере и не нуждалась в обновлении.

Схема управления

image

Выбор библиотеки для решения поставленной задачи

Основная задача работы заключается в реализации передачи данных между наземной станцией и полетным контроллером. Поскольку полетный контроллер оснащен интерфейсом передачи данных COM-портом, а наземная станция разъемом 8P8C (унифицированным разъемом, используемым в коммуникации), то необходимо каким-либо образом осуществить конвертацию данных между каналами связи, которые должны передавать данные по протоколу MavLink.

В качестве решения задачи конвертации данных были рассмотрены следующие варианты библиотек:

  1. MAVProxy — библиотека разработанная под язык программирования Python, для наземных станций. Недостаток данной библиотеки заключается в низкой производительности, что может вызвать задержки при передаче данных.
  2. MavLinkCom — кроссплатформенная библиотека C++, которая помогает подключаться к дронам на базе MavLink и взаимодействовать с ними. В частности, эта библиотека предназначена для работы с дронами на базе PX4.

Рассмотрим структуру классов библиотеки MavLinkCom представленную на рисунке ниже:

image

Как можно заметить, данная библиотека реализует MavLinkConnection по двум протоколам передачи данных: SerialPort и UdpClientPort.

Реализация прокси соединения

Для взаимодействия наземной станции, на которой используется приложение QGroundControl и полетного контроллера, необходимо реализовать прокси соединение:

image