Обнаружение и распознавание объектов с камеры в ROS с помощью пакета find_object_2d |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-06-26 20:43 Одним из преимуществ Robot Operating System (ROS) является то, что у него есть множество пакетов, которые можно использовать повторно в наших приложениях. В нашем случае мы хотим внедрить систему распознавания и обнаружения объектов. Пакет find_object_2d реализует SURF, SIFT, ORB, FAST и BRIEF детекторы функций и дескрипторы для обнаружения объектов. Используя графический интерфейс, предоставляемый этим пакетом, мы можем отметить объекты, которые мы хотим обнаружить, и сохранить их для будущего обнаружения. Узел детектора будет обнаруживать объекты в изображениях камеры и публиковать детали объекта через тему. Используя 3D-датчик, он может оценить глубину и ориентацию объекта. В конце статьи, видео тестирования на примере алгоритмов ORB и SIFT.
Установка find_object_2d Установка этого пакета довольно проста. Вот команда, чтобы установить его на Ubuntu 16.04 и ROS Kinetic:
Установка из исходного кода Переключитесь в рабочее пространство ROS:
Скопируйте исходный код в папку src:
Создайте рабочее пространство:
Запуск узлов find_object_2d с помощью веб-камер Ниже приведена процедура запуска узлов детектора для веб-камеры. Если мы хотим обнаружить объект с помощью веб-камеры, сначала необходимо установить пакет usb_cam(см предыдущую статью).
2.1 Подключите USB-камеру к компьютеру и запустите драйвер ROS usb_cam:
Это запустит драйвер ROS для USB веб-камер, и вы сможете посмотреть темы в этом драйвере, используя команду rostopic list. Список тем в драйвере показан здесь: Темы, публикуемые из драйвера камеры 2.2 Альтернативный вариант трансляции видео с камеры через uvc_camera:
3. Из списка тем мы собираемся использовать тему необработанного изображения с камеры, которая публикуется в теме /usb_cam/image_raw. Если вы получаете эту тему, то следующим шагом будет запуск узла обнаружения объекта. Следующая команда запустит узел обнаружения объекта:
Эта команда откроет окно детектирования объекта, в котором мы видим канал камеры и особенности объектов. 4. Итак, как мы можем использовать его для обнаружения объекта? Ниже приведены процедуры, позволяющие выполнить базовое обнаружение с помощью этого инструмента: Окно обнаружения Find-Object 5. Вы можете щелкнуть правой кнопкой мыши на левой боковой панели (Objects) этого окна, и вы получите возможность добавлять объекты из сцены. Если вы выберете эту опцию, вам будет предложено, пометить объект из текущей сцены, и после завершения маркировки отмеченный объект начнет отслеживаться со сцены. На предыдущем снимке экрана показан первый шаг, на котором происходит съемка сцены, имеющей объект. 6. После выравнивания объекта по направлению к камере нажмите кнопку “Take Picture”, чтобы сделать щелчок объекта: Мастер добавления объектов для захвата объекта 7. Следующее окно предназначено для маркировки объекта из текущей привязки. На следующем рисунке показано это. Мы можем использовать указатель мыши для того чтобы отметить объект. Нажмите кнопку «Next», чтобы обрезать объект, и вы можете перейти к следующему шагу: Мастер добавления объектов для маркировки объекта 8. После обрезки объекта он покажет вам общее количество дескрипторов функций объекта, и вы можете нажать кнопку «End», чтобы добавить шаблон объекта для обнаружения. На следующем рисунке показан последний этап добавления шаблона объекта в это приложение-детектор: Последний шаг мастера добавления объектов 9. Поздравляем! Вы добавили объект для обнаружения. Теперь вы сможете увидеть обнаружение, показанное в следующем снимке. Вы можете увидеть ограничивающий прямоугольник вокруг обнаруженного объекта: Мастер Find-Object, запускающий обнаружение 10. Достаточно ли этого? Как насчет положения объекта? Мы можем получить позиции объекта, используя следующую команду:
Детали объекта 11. Вы также можете получить полную информацию об обнаруженном объекте из /object темы. В этой теме публикуется многоадресный массив, состоящий из ширины и высоты объекта и матрицы гомографии для вычисления положения и ориентации объекта и его значений масштаба и сдвига. Вы можете echo the /objects topic получить так: Значения темы /object 12. Мы можем вычислить новую позицию и ориентацию из следующих уравнений: Уравнение для вычисления позиции объекта Здесь H является гомографией 3 ? 3 матрицы, (x1, y1) является позицией объекта в сохраненном изображении, а (x2, y2) является вычисленной позицией объекта в текущем кадре. Вы можете проверить исходный код узла print_objected_src, чтобы получить onversion, используя матрицу гомографии. Вот исходный код этого узла. Видео тестирования пакета find_object_2d на примере алгоритмов ORB и SIFT
Если есть такие же энтузиасты робототехники как я, готовые включиться в проект, то пишите в личку, по вышеописанным вопросам нужна помощь. Источник: habr.com Комментарии: |
|