Понадобилось проверить гипотезу о том что камера малины влияет на приём сигнала GPS. Говорят что конкретно так влияет, но интересно посмотреть что и где конкретно шумит. Под рукой из подходящего оборудования только SDR свисток, вот им и послушал. Камера малины в режиме 720p@30.
Понадобилось научиться делать ботов для Telegram. На чём потренироваться - конечно на моём многострадальном градуснике. Так что встречаем - http://telegram.me/GradusnikMSKbot
Телеграм оказался клёвой штукой, за штатную возможность создавать ботов - отдельный респект и уважуха.
Бот сам не спамит, только отвечает на входящие сообщения. Чтоб узнать текущую температуру надо отправить любой текст.
Итак, в прошлой части эпопеи выяснили что DJI наконец-то научились стримить H264 силами амбарелы. В связи с чем давинчевый модуль, который раньше отвечал за стрим, оказался не нужен и в новых прошивках его отключили. На 192.168.1.3 теперь сидит амбарела, а давинча вообще не видна ни на одном хосте, возможно, аппаратно отключено (мож питание управляемое). Тогда понятно почему увеличилось время работы.
Тот мой способ с подменой библиотеки теперь не прокатывает, так что пришлось видео забирать по UDT. Это, в принципе, даже удобнее чем по UDP, как раньше было, но есть ограничения - DJI не сделали поддержку одновременного коннекта с нескольких устройств. Так что либо стрим на комп/малину, либо на мобильник/планшет. Одновременно - никак не пашет. Да и с двух мобильников тоже не подключиться.
Ещё ограничение - разрешение стримящегося видео. При разрешении записи 2k и выше разрешение видео стрима будет 640x400. Не тянет амбарела два потока больших, не тянет. Так что если стрим нужен 720p - разрешение записи придётся понизить хотя бы до 1080p. Так что странно что избавились от давинчи, ведь он независимо от амбы энкодил и было пофиг на разрешение записи.
Итак, трансляция с Осмы пашет, всё работает отлично. Но сегодня, запустив осмовское родное приложение на мобиле, увидел я сообщение о том что доступна новая прошивка. А в описании новой прошивки указано - время работы увеличено до 90 минут. Так как до этого осма на одном аккуме жила максимум минут 30-40 и я уж затр... замучался аккум заряжать, данное обновление показалось мне очень уж неплохим, так что палец сам нажал кнопочку "обновить".
Обновилось без проблем, да. Но вот при последующем коннекте к осме оказалось что внутренности радикально поменялись. На хосте 192.168.1.3 линух, но линух какой-то незнакомый, не давинчевый. Оказалось что это амбарела, т.е. узел который за камеру отвечает. Видимо, DJI отрубили модуль с DM368 и весь его функционал реализовали на одном узле с камерой (т.е. на Ambarella). Собссно, отсюда и увеличенное время работы от аккума.
Но весь функционал для трансляции который я забацал был привязан именно к давинчи, а на амбареле кирдык, не пашет. Версия прошивки 01.06.02.10 Откатиться на прошлую версию получилось, но только на 01.05.02.00, а там то же самое. А вот на 01.04.01.80 откатиться не даёт, пишет что данная фирмваря принципиально несовместима с текущей.
Стал разбираться, как снова извратиться чтоб на амбареле это сделать. Но после очередной команды перемонтирования фс в режим rw (что-то типа mount -n -o remount,rw /dev/ubi0_0 /) осма кирдыкнулась. В смысле, брикнулась. Сразу после перемонтирования всё норм, фс реально rw, можно писать куда угодно. Но после рубута осмы на 192.168.1.3 снова висит давинчевый узел, а вот амбарельного нету вообще. Приложение на мобиле подключается, но нет видео. Запись при нажатии на кнопку на ручке тоже не работает. Автоматическое обновление прошивки с флешки не пашет. Короче, полноценный такой кирпичик получился.
Собрался уж вскрытие тушки сделать чтоб к хардварному UART подцепиться, но на всякий случай полазил по менюшкам приложения, мож где чего полезного найдётся для принудительного обновления прошивки. Не помню чего конкретно нажимал и в какой последовательности, помню только что точно нажимал кнопку "очистить SD карту", но приложение ругнулась на то что флешка недоступна. И тут бац - на экране мобилы само собой появилась картинка с осмы, а сама осма начала моргать светодиодиками, сигнализируя о том что пошёл процесс обновления прошивки (флешка с образом прошивки была вставлена заранее). В итоге всё успешно перепрошилось и осма снова пашет. Правда, на старую прошивку откатиться всё равно не удалось.
В общем, ковыряю дальше, будем биться до победного.
UPD> Осма пережила второй брик. Снова восстановлена. UPD> Осма пережила третий брик. Пока не восстановилась :-( UPD> Восстановилась. Причём сама. Оказалось что где-то сидит watchdog, который после некоторого кол-ва неудачных попыток старта амбы перезаливает прошивку. В итоге само всё восстанавливается, надо лишь осму ребутнуть через некоторое время.
Из-за ограниченной пропускной способности канала на трассе пришлось битрейты ограничить, а из-за хренового угла обзора нашей родной камеры пришлось откатиться на аналоговые. Картинка хуже, но обзор лучше, так что меньшее из бед, как говорится.
Тестим видео с бортов для просмотра гостями (т.е. не рулящими юзерами). Машинки не на трассе, а у меня дома, на техобслуживании. В эфире прямщас.
Видео с осмы через малину рестримится на сервак, откуда воспроизводится уже другой малиной на телике. Связь двусторонняя получилась, так что прям телеконференции устраивать можно.
В связи с накрывшися вторым винтом на сервере объявляется технический перерыв. Перестанут работать голру, форум и вики виртурилы. А главное - градусник тоже перестанет работать!
Всё-таки шесть лет уж аптайм сервера, можно и почистить.
Надеюсь, к утру всё починю... Вот такая вот пятничная развлекуха.
UPD> а пока молимся всем богам бэкапа UPD> хотя хрен ли молиться, надо бутылочку белого нефильтрованного в жертву принести
UPD> голру завёлся, градусник завёлся, форум виртурильный завёлся. Вики пока не завелась. UPD> вики завелась
Ездил сегодня по делам. Дела вылились в совещание, в процессе которого была употреблена пара бокалов светлого лёгкого белого нефильтрованного пива. Кстати, Кроненбург белое, отличная замена Хугардену.
На обратном пути, по мере приближения к моей станции метрополитена, начало ощутимо так... ммм... давить на клапан. По прибытию на станцию клапан уже трещал от предельной нагрузки, так что требовалось срочно скинуть давление. Поссать приспичило, короче.
Всё бы ничего, на выходе из станции метро есть довольно большой пересадочный пункт где куча всяких торговых центов средних габаритов (т.е. не снесённых при недавних московских событиях с экскаваторами), в некоторых из которых вроде как был макдональдс или аналогичная туалетная забегаловка. Однако ситуацию осложняет тот факт что на дворе уж час ночи и всё закрыто нафиг.
Вдалеке, у самого большого из имеющихся в зоне пешей досягаемости торговых центов, заприметил охранника, и вприпрыжку пошёл к нему, дабы спросить маршрут до ближайшего сортиру. По дороге заметил какой-то мавзолей чуть ли не по центру площади. Мавзолей оказался заведением под названием "Городской туалет".
Трасса понемногу начинает функционировать. Четыре машинки через инет, остальные по старинке, локально с RC аппы. Белой бэхой на видео бОльшую часть времени чел из Германии рулил, но иногда пересаживался на жёлтую камару :-)
What do i need? I need to get a live view video stream from DJI Osmo and restream it into video server (any RTMP service, or my own low latency live video streaming service). For my service i want not only video, but also the Osmo's telemetry too.
Native DJI's software not allowed to do this, so i have to do it by myself. And i want to get stream not from mobile Android or IOS device, but from any linux-based device like Virt2real board or Raspberry Pi.
DJI Osmo has two hosts - 192.168.1.2 and 192.168.1.3 Just make a Wi-Fi connection to Osmo, and you can ping this hosts.
FPV-передатчик Vision+ построен на чипсете от Texas Instruments. Кстати, на таком же чипсете построен и русский проект платы управления с видеокодеком «Виртурилка», который уже выпускается и успешно используется для дистанционного управления много чем, в т.ч. настоящим большим автомобилем.
Штудирую инфу по начинке фантомов. Phantom2 Vision+ . Открываем инфу о процессоре камеры и что видим???
“
root@Dji-Pro:~# uname -a Linux Dji-Pro 2.6.32.17-davinci1 #6 PREEMPT Wed Apr 9 05:21:55 PDT 2014 armv5tejl GNU/Linux
root@Dji-Pro:~# cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 215.44 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5
Тадам - там стоит наш любимый давинчи, DM36x (368-й, ибо для 365-го на штатных 300 МГц обычно показывает 144 богомипса ) :-)
А нас ругали, чего, мол, мы юзаем старый проц аж 2009-го года выпуска. Получается что не только мы, а и другие довольно современные девайсы его используют. Ибо реально клёвый проц для потокового видео, был бы сенсор хороший. А на фантиках соньки стоят, к ним никаких претензий. А мы вот соньку так и не нашли, а жаль, малина бы нервно курила в сторонке со своей OV5647.
UPD> залез в кишочки к DJI Osmo. В консоль пока не попал, только фтп. Но и тут увидел знакомые до боли строчки инициализации давинчевых мулек. Короче, в Osmo тоже DM368 стоит. Собссно, блок камеры тут тот же что и на фантомах, так что не удивительно. Но для Osmo заявлена съмка 4K, так что, похоже, давинча тут в роли енкодера для передачи рилтайм видео на мобилу. Получается что на фантомах видеопоток для Lightbridge тоже DM368 используется. Короче, весело. Ковыряю дальше.
UPD> новый прикол. В линухе Осмы обнаружился ADV7611. Тот же HDMI ресивер, который используется у нас на HDMI-входе для Виртурилки. Получается что на Осме как минимум два независимых компонента. Первый - собссно камера, на каком-то проце, возможно Ambarella. Она делает захват видео в полном качестве и пишет на флешку. В то же время она подключена ко второму компоненту, который на DM368. Сеть подключена по USB (интерфейс usb0), а видео - по HDMI. DM368 захватывает видео с HDMI, кодирует его в H264 с битрейтом 3 Мегабита/сек (это видно в параметрах процесса кодирования) и выдаёт на тот же usb0. А там уж видимо бриджем по вайфаю отдаётся клиенту на мобилу. Т.е. вайфай не на хосте DM368 а отдельно (может на том же компоненте где камера, хотя сомневаюсь).
В общем, все ковыряния Осмы буду конспектировать в отдельной заметке, вот тут - Hacking DJI Osmo
Про Sphero я когда-то уже писал, но недавно где-то интересную статейку прочёл, про то как к ребятам из Sphero пришли ребята из Disney и сказали - "у вас есть круглый ездящий робот. Сможете к нему пришпилить бошку, чтоб он стал похож на робота BB-8 из наших новых Звёздных Войн?". Ребята из Sphero почесали репу и ответили "дык, не вопрос, мы знаем как это сделать". И таки сделали.
Ну а дальше, после выхода новой части киношки, продажи этого BB-8 зашкалили.
Собссно, это клёвый пример того что в одной из серий первого сезона "Кремниевой долины" называли "разворот". Всем разработчикам это должно быть знакомо. Пилишь-пилишь что-то, думаешь что оно будет супер-клёвое и востребованное. А оказывается что нафиг оно кому нужно. Но неожиданно появляется мысля что-то добавить или слегка переделать - и твоя штука сразу становится хитом.
У нас вот такой мысли пока нет. Так, мыслишки... Так что продолжаем пилить.
Короче, среди ардуинщиков (да и не только) есть класс поделок "что-то, ездящее по линии". Простейшая хреновинка с моторчиками и колёсиками, которая может ехать, придерживась нарисованной на полу полосы. Засекание полосы обычно производится с помощью фотодатчика. Вроде бы хрень полная, но недавно один знакомый скинул ссылочку и я чуток офигел.
Собссно, ребята сделали обычного ездящего по линии робота, но довели эту идею практически до совершенства.
Выглядит примерно вот так (дизайн рулит)
На крыше есть светодиодик, который может светиться разным цветом. Всё управление через разноцветные линии, нарисованные на бумаге. Едет робото по синей линии - на башке светится синий светодиодик. Едет по красной - светится красный. Но главное в том что последовательностью цветных точек и линий робота можно программировать, т.е. задавать ему различное поведение (скорость езды, выкрутасы всякие и т.д.).
А ещё для них есть мобильное приложение, которое с помощью всё того же цветового кодирования позволяет залить (эдакий IrDa) в робота новое поведение, так что он сможет и без линий функционировать по заданной программе. Короче, маркетологи развернулись по полной.
Ну короче в итоге этот Озябот стал чуть ли не хитом продаж среди детских игрушек в штатах :-)
Ну а дальше уж пошли всяческие аксессуары (а на них основные деньги и делаются).
А всё это вылилось из всего лишь ездящей по линии хреновинки :-)