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