Есть картинка с самолёта!

…но сперва — краткий экскурс в историю сабжа.

Сколько уже времени я грезил мыслью прикрутить к самолёту камеру и получить картинку с высоты птичьего полёта. И как только не исхищрялись: прикрепляли фотомыльницу на резинки к фюзеляжу, разбирали старую фотомыльницу и размазывали её потроха монтировали электронику на вырезанную из пенопласта кабину. Первый опыт, кстати, был не самым неудачным — но картинка «строго вниз» не особо интересна, а иначе не получалось — аэродинамика… С мыльницей-кабиной было интересней, смотрела она уже вперёд, но была тяжёлой и необтекаемой — самолёт перемещался с динамикой брошенного топора. К тому же запись оборвалась при ударе во время не самой жёсткой посадки. Разумеется, я психанул и оставил идею до лучших времён.

У Богдана залежались ненужные китайские смартфоны, тысячи их — и один из них с его лёгкой руки пошёл в этот же эксперимент. От смартфона, впрочем, там остались только аккумулятор, основная плата, камера и кнопки от подвернувшегося так невовремя… кого-то, уже не помню, что это было. Был написан скрипт на Таскере, включающий запись с камеры при нажатии на кнопку. Выглядела конструкция гораздо жизнеспособней всего предыдущего, но в самый ответственный момент запись не запустилась, и опять уныние.

Вдруг я вспомнил про проект Virt2Real. Несколько лет назад (кажется, ещё школьником) наблюдал за их поделиями на хабре. Тогда такая специфическая железяка мне вообще не сдалась бы, да и денег на неё не было — а тут как раз и деньги найдутся, и ситуация весьма подходящая. Как жаль, что ребята ушли в B2B — впрочем, нашлись те, кто успел отхватить свою виртурилку и готов был отдать её за символическую сумму. UPD: внезапно виртурилки снова появились в Chipster — налетайте!

Из самого города Томска (спасибо, камрад!) мне приехало это сокровище:

IMG_20160721_134738

На борту этой железки стоит ARM-процессор от Texas Instruments тактовой частотой около 300 МГц, 128 МБ оперативки и 256 МБ NAND-флеша. Маловато всего, но самая вкусная часть этого кристалла — DSP, способный аппаратно жать видео в H.264 вплоть до 720p. Ну и Linux, куча GPIO, интерфейс для внешей цифровой камеры — что ещё нужно для счастья?

Проблема таки вылезла — для нормального аппаратного кодирования видео используется GStreamer, однако, примеры конвейеров, лежащие на вики проекта, успели малеха зарасти паутиной. (UPD: на самом деле, там объявилась проблема с форматированием в самой вики, копипасту надо вычистить от лишних пробелов). К тому же я отдаю себе отчёт в том, что транслировать видео по Wi-Fi даже через UDP без мощного передатчика — утопия. В общем, UDP-трансляцию захотелось совместить с параллельной записью на карту памяти. (К трансляции хочется ещё вернуться — это было бы очень удобно в плане пилотирования).

В итоге пришлось пару вечеров повкуривать GStreamer, в результате чего родилось вот такое заклинание:

Это надо запускать на самой Виртурилке. Несложно догадаться, что это заклинание жмёт данные с камеры в h.264 с битрейтом 1.2 Мб/с в 720p и плюёт их в виде «как есть» клиентам по UDP (в моём случае это телефон с приложением Virt2Real Viewer — лежит в Play Market, если не ошибаюсь) и параллельно — в файл на карточку.

В самолёте примерно определил место для виртурилки, наклеил камеру на вырезанную когда-то кабину из пенопласта, сделал внешнюю кнопку для старта записи — и вуаля, биты побежали. Иногда, правда, приходится несколько раз перезагружаться, прежде чем всё нормально заработает — но пока это терпимо, а там видно будет.

Главное — оно пишет, немного передаёт картинку по сети и не отваливается при посадке — это просто замечательно!

План на будущее:

  • Стрим очень нужен! С земли не очень понятно, на что сейчас направлена камера самолёта, поэтому в записи 95% вида — небо. Либо хорошим Wi-Fi, либо 4G, либо разорюсь на аналоговый передачик.
  • On-Screen Display (OSD). Виртурилка умеет делать это аппаратно. Сейчас больше всего интересует вывод напряжения аккумулятора, мощности сигнала Wi-Fi и температуры в фюзеляже — мне кажется, виртурилка может перегреться без хорошего обдува воздухом. А там посмотрим — и всю прочую телеметрию будем выводить.
  • Запись звука (да, будет «ж-ж-ж-ж», но ведь прикольно! Полное погружение!).
  • Купить-таки Bixler и летать по-человечески :)

Итого — это очень любопытная и полезная железка, на мой взгляд. Одна из немногих побывавших в моих лапах, которая очень быстро оказалась полезной и даже незаменимой в своей нише.

Оставить комментарий