roboforum.ru

Технический форум по робототехнике.

AVM Navigator для RoboRealm практическое применение

AVM Navigator для RoboRealm практическое применение

Сообщение Scorpio » 31 мар 2011, 19:11

В этой ветке предлагаю делиться опытом применения на практике перспективного, на мой взгляд, метода AVM.
Скажу сразу, что ПО мне было предоставлено автором для тестирования еще в прошлом году, однако, по ряду причин, руки до него дошли только сейчас.
Сам метод активно обсуждается на форуме и продолжает развиваться. Обсуждать – то обсуждается, но практически форумчанами не применяется, если не считать самого автора.
Напомню суть метода, кому лень читать длинные топики:
Метод позволяет запоминать образы выбранных участков изображения, полученного с камеры, в базе данных, для последующего их распознавания. Ноу- хау метода в его производительности. Информация об изображении сохраняется в матрице распознавания, содержащей пространственное распределение участков яркости, представленное в инвариантном виде (т.е. не значения яркостей, а соотношения м-ду ними). Распознавание такой матрицей хорошо масштабируется, должно быть устойчиво к шумам камеры и мало зависить от интенсивности освещения (конечно в разумных пределах). Соответственно, полученный образ изображения занимает небольшой объем памяти и быстро обрабатывается. А используемый оригинальный ассоциативный алгоритм поиска по древовидной структуре дополнительно ускоряет обработку. Автор алгоритма намерено отказался от анализа поворота изображения. Модуль просто запоминает все возможные виды и ракурсы изображения, и привязывает их к одному объекту в базе данных. Это еще больше увеличивает скорость обработки, но требует предварительного обучения «на предмет».
Важно понимать, что ПО запоминает выбранный квадратный участок изображения, никак не выделяя контуры предметов. Т.е., если мы показали роботу банку пива, он запомнит ее образ вместе с фоном. И, когда мы переставим банку на другой стол, робот ее не распознает. Зато, банка не обязательно должна быть контрастна с поверхностью стола. Методы, основаные на выделении контура и получения маски изображения, требуют, чтобы предмет был контрастен к фону, да еще и сам предмет, желательно, чтобы был однотонным.
Что нам дает это ПО на практике? Кроме, собственно, распознавания предметов еще и навигацию по запомненным образам. Подобно человеку. Человек обычно не думает «пройду 150 шагов, потом поверну на право», а думает «дойду до угла того дома, потом поверну направо». Именно этот принцип заложен в модуль AVM Navigator. Теоретически, робот должен запомнить маршрут, однажды по нему проехав. При этом он сам выбирает ориентиры на пути. Именно этот режим я собираюсь проверить на практике, и описать процесс с точки зрения не очень продвинутого пользователя.
Итак, поставлю сам себе задачу:
- Разобраться с модулем AVM Navigator для RoboRealm.
- Написать программку для связи с роботом, она же будет отображать пройденный роботом путь на карте помещения.
- Проложить не слишком сложный маршрут с парой поворотов и парой проходов в двери и запомнить его, как оригинал.
- Прокатиться несколько раз по маршруту, используя только навигатор и запоминая каждый раз пройденный путь, для последующего сравнения с оригиналом.
- Попробовать тоже самое при разном освещении и при внесении небольших, видимых роботу изменений в обстановку помещения.
- Определить оптимальный угол зрения камеры (на потолке меньше ориентиров, зато по нему не ходят люди и не двигают мебель).
- Оценить эффективность работы модуля.
Постепенно буду выкладывать результаты тестирования...
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Scorpio » 08 апр 2011, 02:40

Несколько слов про RoboRealm. В первую очередь это универсальный и динамично развивающийся инструмент для обработки и анализа изображений. Взявший за основу библиотеку Free Image , он оброс оромным количествм функций. С входным изображением можно делать практически все, что можно себе представить, причем с очень приличной скоростью. Т.к. софт предназначен в первую очередь для машинного зрения, он поддерживает всевозможные интерфейсы для сязи с популярными робо-платформами (с той же ардуиной, например). А, в разделе поддерживаемых камер, например, уже появился драйвер для перспективного Microsoft Kinnect.
Пользователь должен создать сценарий работы с изображением. Нечто вроде слоеного пирога. Когда на изображение последовательно накладываются фильтры, аналитические модули и интерфейсы.
Связь между модулями обработки изображения и интерфейсами пользователь должен организовать путем настройки обмена переменными, имеющимися почти в каждом модуле, а также манипуляций над переменными с помощью встроенного языка программирования. Предлагаются интерпретаторы языков Basic, Pyhton и Си-подобного PicoC.
Например, так выглядит треккинг красного кирпичика для LEGO:
RR1.jpg
Картинка еще со старой версии RR завалялась

RGB фильтр выделяет красный цвет, в полученной с камеры картинке;
Blob фильтр оставляет только один цельный объект подходящего размера;
Center of Gravity определяет координаты его центра;
VB Script пересчитывает их в комманды роботу;
И, наконец, LEGO_NXT модуль передает комманды роботу по ВТ.
Далее все повторяется по кругу, пока нажата кнопка RUN.
Как видите, интерфейс пользователя довольно незатейливый. Такие кнопочки кажись пришли еще с Windows 98, если не с 3.1. Это я отношу к недостатком RR, как и убогий редактор сценариев и скудную документацию. Но, зато какая производительность! В нашем примере, центр красного объекта определяется за 46+16+8=70 mS
Т.е. при частоте 15 кад/ сек практически в каждом кадре.
Понятно, что встроенные сценарные языки недостаточно гибкие, чтобы обеспечить потребности продвинутого программиста. Поэтому, RR обеспечивает несколько возможностей связи с пользовательскими программами. Наиболее простая из них – это API- сервер. Для начала надо зарегистрировать в системе библиотеку RR_COM_API.dll (идет в комплекте с RR), затем запустить сервер на RR, как это показано в документации.
Теперь в пользовательской программе мы должны создать API объект и подключиться к серверу. В VB это делается так:
Код: Выделить всёРазвернуть
Set RR = CreateObject("RoboRealm.API.1")
Call RR.Connect("localhost")

Теперь мы можем управлять «риалмом» из своей программы, считывать/устанавливать значения риалмовских переменных, загружать из него картинки и т.п.
Я пока буду пользоваться только функциями чтения/записи значений переменных «Навигатора», про интерфейс которого расскажу в следующий раз.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Eruman » 08 апр 2011, 10:20

Если с самого начала говорить о RR, можно ссылки на дистрибутивы/библиотеки и советы по установке/запуску для новичков, пожалуйста? Особенно интересно, как Ардуино там прикручивается.
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Scorpio » 08 апр 2011, 18:52

Дело в том, что продукт платный, хотя и не очень. Загрузить свежую версию можно здесь и пользоваться бесплатно в течении месяца. Зарегистрированная версия будет работать только на одном компе (single license).
Но, для начала достаточно и старой версии, которую я скачивал еще во времена свободной раздачи RR всем желающим:
RoboRealmFree.zip
(1.83 МиБ) Скачиваний: 0

Установка не требуется, просто распаковать архив в папку и запустить RoboRealm.exe
Запускается под любой версией Windows, что тоже плюс.
Arduino модуля в старой версии еще не было как и много чего еще. Но, есть интерфейс последовательного порта, к которому можно подключить ту же ардуинку.
Вот еще статья с примерами на русском (не помню где качнул):
roborealm_rus_doc.rar
(2.94 МиБ) Скачиваний: 0
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Eruman » 08 апр 2011, 22:16

Еще вопрос: Есть задачка по отслеживанию изменений в картинке (например, в поле зрения появился объект, изменивший статичный фон). Это можно как-то силами RR обработать? Это если, например, кошка дорогу перебегает ;)
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: AVM Navigator для RoboRealm практическое применение

Сообщение avr123.nm.ru » 08 апр 2011, 23:34

Scorpio писал(а): RR обеспечивает несколько возможностей связи с пользовательскими программами.


Пока ты в теме ... Подскажи пожалуйста, желательно с примером кода и что подключить настроить,

Как координаты отслеживаемого объекта (те что на изображении показаны) вывести в COM порт ? Например с некоторой частотой в COM отсылаются некая преамбула и 4 числа: высота кадра, ширина кадра, координата Х обеката, координата Y обеката, затем конец посылки.

Это позволит подключить к COM порту разную электро-механику.

Очень жду помощи и надеюсь на лучшее.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Scorpio » 09 апр 2011, 00:35

Eruman писал(а): Это если, например, кошка дорогу перебегает ;)

Первое, что приходит в голову - применить детектор движения. А затем, в зависимости от цвета ожидаемого объекта и типа фона, применить фильтры для выделения самого объекта.

avr123.nm.ru писал(а):Как координаты отслеживаемого объекта вывести в COM порт ?

Думаю, что это не сложно. Я правда никогда не пробовал управлять напрямую из "риалма". Но поэкспериментирую, когда будет время. И выложу.

Только бы надо все, что не относится к "навигатору" перенести в другую тему...
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Eruman » 09 апр 2011, 12:35

Запустил детектор движения. Вместе с "Gaussian Blur" работает неплохо. Только, видимо, так во время движения ничего не отследишь. Наверно придется двигаться в режиме "старт-стоп". А еще есть варианты?

Добавлено спустя 2 часа 51 минуту 8 секунд:
avr123.nm.ru писал(а):Как координаты отслеживаемого объекта вывести в COM порт ?

В RR есть вкладка "Index", нашел там Serial, запустил, выбрал переменные, вроде отсылает.

Добавлено спустя 58 минут 23 секунды:
Вот нашел монитор СОМ-порта http://www.aggsoft.ru/download/aspmon4.zip
При установке в RR-Serial отсылки переменной [COG_X] шлет в порт, как символьную строку, монитор отлично видит.

Добавлено спустя 2 минуты 52 секунды:
Может на самом деле отдельную тему замутить? И с Ардуиной бесплатный RR подружить? ;)
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: AVM Navigator для RoboRealm практическое применение

Сообщение avr123.nm.ru » 09 апр 2011, 14:44

То что вы сделали можножно сохранить как проект роборелм ? Т.е. чтоб я мог запустить роборелм и открыть проект ?
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Eruman » 09 апр 2011, 15:08

Вот содержимое файла проекта:
Код: Выделить всёРазвернуть
<head><version>1.8.6.5</version></head>
<Gaussian Blur>
  <filter_size>5</filter_size>
  <theta>2.0000000000</theta>
</Gaussian Blur>
<Movement>
  <remove_global_movement>FALSE</remove_global_movement>
  <anti_auto_adjustment>FALSE</anti_auto_adjustment>
  <difference>30</difference>
  <set_still_black>1</set_still_black>
  <continuious>TRUE</continuious>
  <set_movement_white>1</set_movement_white>
  <reference_frame>Previous Frame</reference_frame>
</Movement>
<Center_of_Gravity>
  <show_coord>FALSE</show_coord>
  <color_index>2</color_index>
  <connect_line>FALSE</connect_line>
  <size_index>5</size_index>
  <density>-1</density>
  <show_box>FALSE</show_box>
  <box_size>9</box_size>
  <shape_index>5</shape_index>
  <overlay_image>Current</overlay_image>
  <show_cog>TRUE</show_cog>
  <threshold>-1</threshold>
</Center_of_Gravity>
<Display_DateTime>
  <custom_format>Dy, Mon D, YYYY</custom_format>
  <font_size>2</font_size>
  <position>5</position>
  <format>1</format>
</Display_DateTime>
<Display_Variables>
  <font_size_index>2</font_size_index>
  <display_value_only>FALSE</display_value_only>
  <dim_background>TRUE</dim_background>
  <border_color_index>5</border_color_index>
  <northwest>COG_Y
COG_X
</northwest>
</Display_Variables>
<Serial>
  <baud>5</baud>
  <initialize>test</initialize>
  <data_bits>7</data_bits>
  <send>[COG_X]</send>
</Serial>
<VBScript_Program>
  <source_mode>gui</source_mode>
</VBScript_Program>

Можно со стороны в редакторе собирать :)
Писал в текстовый файл с расширением .robo

Подключил камеру, RR настроил на прием потока, махаю руками - в СОМ-порт сыпется Х-координата.
На всяк случай прицепил архивчик.
test1.zip
Вот такой пример
(722 байт) Скачиваний: 0
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Scorpio » 09 апр 2011, 16:34

:good: я же говорил, что все просто :wink:
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: AVM Navigator для RoboRealm практическое применение

Сообщение avr123.nm.ru » 09 апр 2011, 16:48

Да и я был уверен что это проще пареной репы тому кто имел с этим дело, я то ни ухом ни рылом. Уж просил тут и на других форумах давным давно, вот первая удача. Вода камень точит. Ща попробую, надеюсь получится.

Заранее спасибо за помощь и за внимание к просьбе.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVM Navigator для RoboRealm практическое применение

Сообщение landStalker » 09 апр 2011, 17:03

Eruman писал(а):Может на самом деле отдельную тему замутить? И с Ардуиной бесплатный RR подружить? ;)


Да может!Создайте плиз отдельную тему!и по пунктно =) как дружить с Arduino!Я как обладатель Arduino Жду не дождусь!
Аватара пользователя
landStalker
 
Сообщения: 127
Зарегистрирован: 28 мар 2011, 16:47
Откуда: Волгоград
прог. языки: Java на начальном уровне
ФИО: Олег

Re: AVM Navigator для RoboRealm практическое применение

Сообщение avr123.nm.ru » 09 апр 2011, 19:11

Пример запустил, работает. Подскажите:

Возможно ли и как "включить" распознавание человека, лица и т.п. чтоб человек или лицо в кадре отслеживалось - появился чел, его подсвечивает рамка и координаты Ц.Т. этой рамки выводятся в COM.

====================
Судя по этому:

http://www.roborealm.com/forum/index.php?thread_id=3791

The COG module is for entire image only. You should have a look at the Blob_Filter module to isolate and track (using the BLOB array) multiple objects at once. Note that you may need to average the image a little in order to merge the difference blobs otherwise you will end up with many blobs per person.

From there you can also try the Blob_Tracking module which will use blob statistics (and the original color information) to track blobs from one image to the next. That will give you a movement path of people.

Надо использовать Blob Tracking module - http://www.roborealm.com/help/Blob_Tracking.php

====================

RoboRealm 2.37.7 на 30 дней - архив для инсталяции программы. На VirtualPC VirtualBox будет работать вечно. :ROFL:
Вложения
RoboRealm 2.37.7 на 30 дней.rar
(3.87 МиБ) Скачиваний: 0
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVM Navigator для RoboRealm практическое применение

Сообщение Scorpio » 09 апр 2011, 20:16

landStalker писал(а):
Eruman писал(а):Может на самом деле отдельную тему замутить? И с Ардуиной бесплатный RR подружить? ;)

Да может!Создайте плиз отдельную тему!

Что за безобразие и произвол!? Почему Эруману и ЛандСталкеру запретили создавать темы!? Я буду жаловаться в ООН! :P
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

След.

Вернуться в Компьютерное зрение

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

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