Главная‎ > ‎

Даунлинк телеметрии для бедных или умных

В общем случае данные телеметрии с борта на землю можно передавать кучей различных способов:
  1. выделенный канал с выделенным радиомодемом на борту,
  2. испотзовать аудиоканал видолинка и аудио модем
  3. встроить данные телеметрии в обратный ход луча видеосигнала
  4. испоьзовать приемопередатчик аппаратуры управления с поддержкой даунлинка телеметрии
В первом случае плюс - возможно организовать двусторонний линк, узкая полоса сигнала при невысоких скоростях что возможно даст большую дальность линка при низкой мощьноси передатчика модема
В четвертом случае нужна аппаратура управления поддерживающая данную фичу, например, FrSky
Второй и третий - необходим либо аудиомодем либо OSD с поддержкой даунлинка, либо дополнительный модуль который встроит в видео сигнал данные телеметрии.

Но что же делать если всего этого нет? в моем случае у меня не было денег чтобы купить и времени чтобы сделать самому, и мне пришлось придумать что-то другое.
Следуя поговорке умный в гору не пойдёт умный в горе тунель пророет я решил организовать даунлинк через картинку которую я вижу на OSD - и правда там написаны обычно все необходимые параметры полёта скорость высота и прочее:

теперь осталось превратить эту картинку на земле в данные телеметрии.

Для работы с видео-потоком я решил использовать библиотеку OpenCV (Open Computer Vision). В принципе это не критично так как в ней я использовал только функции чтения изображений и извлечения кадров из видеопотока(видеопоток может идти в реальном времени с тюнера или как в моем случае из предварительно записаного видео файла - постобработка). Ещё один плюс OpenCV - кросплатформеннось - одна и таже програмка может быть одинаково успешно компилироваться как под виндоус, так и под мак и линукс(в моем случае линукс)
Исходники программки на С можно посмотреть в репозитарии svn:

svn checkout http://iheli.googlecode.com/svn/trunk/minimods/opencv_font/main.c iheli-read-only

На входе програмки имеем файл со шрифтом:

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

На выходе имеем тектовый файл , в каждой строчке которого распознанные символы с каждого кадра - пример выходного файла result.txt смотрим тут

как можно заметить картинка распозналась достаточноо хорошо, но есть некоторые косяки кторые достаточно просто исправить учитывая тот факт что показания на OSD обновляютс язначительно реже чем кадры(одно и тоже значение присутствует сразу на нескольки кадрах).
В моем случае я написал програмку на Java (в репозитарии svn checkout http://iheli.googlecode.com/svn/trunk/minimods/opencv_font/osd_telemetry_restorer/ iheli-read-only) котора брала файл с распознанным текстом, анализировала ео , пыталась исправлять ошибки и на основе скорректированных даных делала KML файл для программы Goole Earth для дальнейшего просмотра трека и данных телеметрии и их анализа. Вот как выглядят данные телеметрии после полного цикла постобаботки в программе гуглэрс:

на графиках высота по жпс и барометру

воздушная и горизонтальная скорость

курс на базу и растояние до базы

Ну и в основе трехмерный трек полёта относительно рельефа земли. оригинальный файл kmz полёта со скриншота смотрим тут


Comments