Управляем чем угодно откуда угодно

Аппаратная обработка видео для системы технического зрения

Кто что сделал и кто что собирается делать

Аппаратная обработка видео для системы технического зрения

Сообщение Fiamma » 28 апр 2015, 02:59

Доброго времени суток)

После долгих мытарств мне удалось наконец удалось научиться общаться с модулями аппаратной обработки видео процессора DM365. Вот этот документ, в частности, схема на 84 странице, вполне доступно объясняет, что можно сделать с изображением перед тем, как оно выйдет из видеовыхода. Конкретно для моей задачи мне необходим детектор границ. Одним из самых популярных программных решений является использование оператора Кэнни. Однако виртурилка, даже с помощью хорошо оптимизированной библиотеки OpenCV, просчитывала один кадр разрешением 320х180 за 2,5 секунды, что, естественно, для системы технического зрения чудовищно медленно. Поэтому для решения этой задачи был выбран модуль 2D Edge Enhancer (блок-схема его работы есть в том же документе на стр. 92), который вполне успешно с ней справился. Для моей работы трансляция видео на какой-либо хост не требуется, отладочные скриншоты снимаются на самой виртурилке и сохраняются на sd карточку в рабочем разрешении 320x180 и выглядят весьма неказисто, поэтому выкладывать их тут не буду) Однако после прекращения выполнения моей программы значения, записанные в регистры проца, сохраняются, поэтому в админке при включении, например, RTMP трансляции можно увидеть вот такую картинку.
Как все это работает я сейчас рассказывать не буду - много буков, но если данная тема найдет достаточно заинтересованных слушателей, могу ответить на вопросы или даже попытаться написать отдельную подробную статью. Что делать с границами дальше - воля ваша. Я же собираюсь использовать эти данные для нахождения взлетно-посадочной полосы, на которую буду сажать свой беспилотник с помощью APM. Собственно, сам алгоритм обнаружения ВПП уже написан и работает, выдавая, правда, всего 1 FPS, осталось его оптимизировать и научиться общаться с APM. Дружбу с APM, кажется, здесь кто-то уже налаживал, поэтому, я надеюсь, мне кто-нибудь поможет)

Всем успехов и спасибо за внимание)
Fiamma
 
Сообщения: 10
Зарегистрирован: 23 дек 2014, 09:11

Re: Аппаратная обработка видео для системы технического зрен

Сообщение realizator » 28 апр 2015, 10:14

Fiamma писал(а):Доброго времени суток)

После долгих мытарств мне удалось наконец удалось научиться общаться с модулями аппаратной обработки видео процессора DM365. Вот этот документ, в частности, схема на 84 странице, вполне доступно объясняет, что можно сделать с изображением перед тем, как оно выйдет из видеовыхода. Конкретно для моей задачи мне необходим детектор границ. Одним из самых популярных программных решений является использование оператора Кэнни. Однако виртурилка, даже с помощью хорошо оптимизированной библиотеки OpenCV, просчитывала один кадр разрешением 320х180 за 2,5 секунды, что, естественно, для системы технического зрения чудовищно медленно. Поэтому для решения этой задачи был выбран модуль 2D Edge Enhancer (блок-схема его работы есть в том же документе на стр. 92), который вполне успешно с ней справился. Для моей работы трансляция видео на какой-либо хост не требуется, отладочные скриншоты снимаются на самой виртурилке и сохраняются на sd карточку в рабочем разрешении 320x180 и выглядят весьма неказисто, поэтому выкладывать их тут не буду) Однако после прекращения выполнения моей программы значения, записанные в регистры проца, сохраняются, поэтому в админке при включении, например, RTMP трансляции можно увидеть вот такую картинку.
Как все это работает я сейчас рассказывать не буду - много буков, но если данная тема найдет достаточно заинтересованных слушателей, могу ответить на вопросы или даже попытаться написать отдельную подробную статью. Что делать с границами дальше - воля ваша. Я же собираюсь использовать эти данные для нахождения взлетно-посадочной полосы, на которую буду сажать свой беспилотник с помощью APM. Собственно, сам алгоритм обнаружения ВПП уже написан и работает, выдавая, правда, всего 1 FPS, осталось его оптимизировать и научиться общаться с APM. Дружбу с APM, кажется, здесь кто-то уже налаживал, поэтому, я надеюсь, мне кто-нибудь поможет)

Всем успехов и спасибо за внимание)

Дружба с АПМ у нас налажена, готовое решение есть ChiefPilot.ru, и поддержка АПМ есть в базовой прошивке Виртурилки и в наземном софте (телеметрия и полное управление, интеграция с MissionPlanner или другим софтом для апм).
Пишите, какие именно задачи по АПМ, обязательно подскажем и расскажем!
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: Аппаратная обработка видео для системы технического зрен

Сообщение Gol » 28 апр 2015, 14:49

Fiamma писал(а):После долгих мытарств мне удалось наконец удалось научиться общаться с модулями аппаратной обработки видео процессора DM365.

Класс! Но есть вопрос - пробовали ли вы проц разогнать? Для упрощения процесса в админке, в разделе Настройка->Оверклокинг есть кнопочка "432 МГц", которая меняет загрузчик, в результате чего после ребута DM365 начинает работать как DM368. Тестил во всяких режимах, реально шустрее всё становится, фулхд начинает работать, т.е. результат чувствуется. Не хотите ли попробовать свою штуку погонять на разогнанном проце?

Fiamma писал(а):Дружбу с APM, кажется, здесь кто-то уже налаживал, поэтому, я надеюсь, мне кто-нибудь поможет)

Общение с APM я налаживал только со сторонним (т.е. с внешней железкой автопилота), подключённым к Виртурилке по уарт. А вот именно портированием APM на Виртурилку Eagafonov занимался вот в этой ветке.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Аппаратная обработка видео для системы технического зрен

Сообщение Gol » 28 апр 2015, 22:55

Fiamma писал(а):После долгих мытарств мне удалось наконец удалось научиться общаться с модулями аппаратной обработки видео процессора DM365.

И ещё вопрос - для выделения границ и и т.д. есть ли необходимость в преобразовании цветового пространства в HSV? И используется ли у вас такое преобразование? А то я давненько хочу проверить смогёт ли DSP конвертить цвет в HSV если регистры преобразования настроить правильно.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Аппаратная обработка видео для системы технического зрен

Сообщение Fiamma » 29 апр 2015, 17:14

realizator писал(а):Дружба с АПМ у нас налажена, готовое решение есть ChiefPilot.ru

Да, Шеф-Пилот крутой) Но боюсь, ваше готовое решение вряд ли прокатит за мой дипломный проект))
Gol писал(а):пробовали ли вы проц разогнать?

Да, конечно, как только я узнала об этой возможности) Мой алгоритм распознавания стал работать быстрее, правда, не намного)
Gol писал(а):Общение с APM я налаживал только со сторонним (т.е. с внешней железкой автопилота), подключённым к Виртурилке по уарт

Мне как раз и нужно наладить общение с внешней железкой. В идеале мне бы хотелось получать от APM текущее значение углов тангажа, крена и рыскания, а в ответ отправлять некоторые сигналы управления (например, в виде ШИМ, соединив ШИМ выходы виртурилки с ШИМ входами APM, но, честно говоря, это не лучшая идея).
Gol писал(а):И ещё вопрос - для выделения границ и и т.д. есть ли необходимость в преобразовании цветового пространства в HSV? И используется ли у вас такое преобразование?

Нет, для выделения границ достаточно только Y канала, потому как процесс детектирования границ базируется на вычислении градиента яркости в каждой точке изображения. Собственно, именно этим 2DEdge Enhancer и занимается, я просто усилила эффект его работы. Поэтому на данный момент преобразование в HSV я не использую, однако, это представление цвета мне может очень пригодиться в процессе выделения ВПП по цвету. Спасибо за идею, попробую)
Fiamma
 
Сообщения: 10
Зарегистрирован: 23 дек 2014, 09:11

Re: Аппаратная обработка видео для системы технического зрен

Сообщение eagafonov » 29 апр 2015, 22:20

Мне как раз и нужно наладить общение с внешней железкой. В идеале мне бы хотелось получать от APM текущее значение углов тангажа, крена и рыскания, а в ответ отправлять некоторые сигналы управления


APM выдаёт телеметрию на UART по протоколу MAVLink.

В в протоколе МAVLink также есть сообщение RC Override, но не помню точно, реализовано в APM или нет.
ШИМ (PPM-SUM) гарантированно будет работать.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Аппаратная обработка видео для системы технического зрен

Сообщение Gol » 30 апр 2015, 22:20

eagafonov писал(а): В в протоколе МAVLink также есть сообщение RC Override, но не помню точно, реализовано в APM или нет.
ШИМ (PPM-SUM) гарантированно будет работать.

В APM реализовано, да. Уже щас из плеера можно каналами APMа управлять как раз по мавлинку через уарт, тут никаких проблем, всё отлично пашет. На прошлых испытаниях я краулером в Питере из Мск именно так и рулил.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Аппаратная обработка видео для системы технического зрен

Сообщение anenkov_a » 21 май 2015, 01:47

У меня тут беспилотник с АПМ и виртурилкой+ модуль ШДМА. Могу на полеты пригласить ;)
anenkov_a
 
Сообщения: 40
Зарегистрирован: 14 янв 2014, 21:09

Re: Аппаратная обработка видео для системы технического зрен

Сообщение Fiamma » 10 июн 2015, 20:57

В процессе наладки общения виртурилки и APM возникла проблема. APM выход телеметрии (UART2) подключен к UART0 виртурилки. При попытке загрузки демон последовательного порта не справляется с нагрузкой (APM, я извиняюсь, срет в канал так, что обработчик не успевает переваривать) и ядро не стартует. А если и стартует, то в админке в окне вывода системных сообщений красуется ошибка прерывания irq40. Как-нибудь можно это победить? В моей программе есть свой обработчик входящих сообщений. Я бы убила этого демона, только вот не знаю, где он живет.
Fiamma
 
Сообщения: 10
Зарегистрирован: 23 дек 2014, 09:11

Re: Аппаратная обработка видео для системы технического зрен

Сообщение eagafonov » 10 июн 2015, 21:59

Что это за демон такой, который не даёт загрузиться ядру?

UART0 по умолчанию это вывод ядра и дефалтовая консоль. Вы его оторвали от потока вывода ядра? Если нет, то весь выхлоп APM скармливается в терминал.

UART1 пробовали использовать? Что будет, если APM подключить после того, как ядро виртурилка загрузится полностью?
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

След.

Вернуться в Проекты на базе Виртурилки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1