- PVSM.RU - https://www.pvsm.ru -
Привет! А вот и снова мы! На перекор множествам скептиков, которые нередко встречались на нашем пути, мы продолжаем развивать проект «Робот Tod Bot». Данный пост является продолжением знакомства с модулем MoveIt [1] как инструментом управления манипулятором.
Прежде всего хочется сказать, что нам удалось достигнуть значительных результатов в задаче захвата и перемещение предметов посредством манипулятора, а также в распознавании объектов, но обо всем по порядку.
Захват предмета можно представить в виде конвейера, состоящего из нескольких этапов, в котором рассчитывается готовая к исполнению полная траектория: начиная от первоначального положения манипулятора и до непосредственного поднятия объекта. Эти расчеты производятся на основе следующих данных:
Последняя в свою очередь содержит следующие данные:
Прежде чем система запустит конвейер, необходимо сгенерировать возможные варианты позиции кисти для захвата нашего объекта. В нашем случае мы делаем предположение, что все захватываемые объекты имеют прямоугольную форму. Соответственно, при захвате в виде двух пальцев, у нас есть только две парных плоскости для надежного захвата предмета, не считая верхней и нижней, на которой стоит предмет. Согласно этому, позиции захвата генерируются в виде полусфер для одной пары плоскостей и другой.
Среди полученного множества возможных поз мы должны отсеять те позы, которые не удовлетворяют форме нашего захвата/кисти, после чего передать оставшиеся в конвейер для дальнейшего планирования траектории достижения этих поз.
В конвейере поднятия предмета, можно выделить три основных момента:
1- Начальное положение; 2- Позиция предзахвата; 3 – Позиция захвата;
Во время выполнения конвейера отдельные траектории будут добавлены в окончательный план поднятия предмета. Если захват успешно прошел все этапы, то только тогда план может быть выполнен. Алгоритм конвейера в общем виде выглядит так:
Построенный план, содержащий все необходимые траектории, теперь может быть выполнен.
Входе наших экспериментов мы решили добавить нашей руке к первоначальным четырем степеням свободы еще две. На видео и фото они изображены красным цветом. Связано это с тем, что в случае использования захвата в виде вилки или антропоморфной кисти необходима хорошая гибкость манипулятора. Кстати, если использовать в качестве захвата вакуумную присоску, то все несколько упрощается и может быть достаточно 4 степеней свободы, т.к. для захвата используется только одна плоскость.
На самом деле, возможность выполнения захвата во многом упирается в генерирование позиций захвата: чем больше и разнообразней будут генерироваться позиции, тем проще будет подобрать оптимальную. Хотя у всего этого есть и обратная сторона медали: чем больше позиций, тем больше времени потребуется на их обработку. В нашем случае мы генерировали сперва 10, 34 позиции, потом 68, а потом 136. Лучшим вариантом, который устроил нас — 34 позиции. При минимальном количестве позиций манипулятору достаточно сложно стать в сгенерированную позу, как правило манипулятор просто физически не может ее достигнуть: не в состоянии именно так вывернуться, слишком короткий, слишком длинный и т.д. При 34 присутствуют от 2 до 5 позиций удовлетворяющих всем условиям.
Для этих целей мы решили использовать узел ROS tabletop_object_detector. Он был реализован учеными Университета Британской Колумбии и уже успел себя зарекомендовать. Хотя, на мой взгляд, выбор системы должен зависеть непосредственно от тех условий, в которых вы собираетесь применять распознавание и тех объектов, которые нужно идентифицировать. В нашем случае распознавание осуществляется по форме объектов, и если вам нужно различить банку огурцов от банки помидоров, то этот метод не подойдет. Для идентификации объектов используются данные камеры глубины, получаемые с Kinect.
Прежде чем распознавать, сперва необходимо обучить систему — создать 3D модель искомого объекта.
3D модель пачки Pringles
После чего система сравнивает получаемые данные с имеющимися в базе моделями.
Результат распознавания выглядит так:
Как и следовало ожидать, скорость поиска объектов на прямую зависит от мощности машины, на которой осуществляется обработка данных. Мы использовали ноутбук с intel core 2 duo 1.8ghz и 3Gb RAM. При этом на идентификацию объектов уходило порядка 1,5 – 2 секунд.
Ну и естественно, умея выделять и идентифицировать объекты из окружающей среды, теперь хочется брать и перемещать их. Следующим шагом будет объединение задач распознавания и управления манипулятором на реальном роботе.
Автор: Seredin
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/blog-kompanii-tod/61149
Ссылки в тексте:
[1] модулем MoveIt: http://habrahabr.ru/company/tod/blog/216681/
[2] Источник: http://habrahabr.ru/post/224765/
Нажмите здесь для печати.