Манипуляторы и MoveIt
Помимо колёсных роботов, ROS управляет манипуляторами — роботизированными руками; для них есть MoveIt.
MoveIt — фреймворк ROS для манипуляторов: он планирует движение руки из множества сочленений так, чтобы схват попал в нужную точку, не задев препятствия и не вывернув суставы.
Чем рука сложнее тележки
У мобильной платформы две степени свободы — ехать и поворачивать. У манипулятора их шесть и больше: каждый сустав вращается, и вместе они выводят схват в любую точку и ориентацию. Задача «возьми кубик» оборачивается вопросом: какие углы выставить шести суставам, чтобы кончик руки оказался ровно над кубиком? Это нетривиальная геометрия, и решает её MoveIt.
Прямая и обратная кинематика
- Прямая кинематика (FK): по углам суставов вычислить, где окажется схват. Решается однозначно и просто.
- Обратная кинематика (IK): по желаемому положению схвата найти углы суставов. Намного сложнее: решений может быть несколько, одно или ни одного. Именно IK — сердце MoveIt.
FK: углы суставов ----> положение схвата (легко, однозначно) IK: положение схвата ----> углы суставов (сложно, неоднозначно)
Планирование движения
Мало найти конечные углы — надо проложить траекторию от текущей позы к целевой, по пути не задев ни препятствия в сцене, ни саму руку (самостолкновение), и не выходя за пределы суставов. MoveIt использует алгоритмы планирования в пространстве конфигураций: он ищет последовательность поз, плавно ведущую руку к цели в обход всех запретных зон.
Как MoveIt вписан в ROS
MoveIt берёт описание руки из URDF (звенья и сочленения), знает о препятствиях из сцены планирования (planning scene), которую можно наполнять данными датчиков. Цель — «привести схват в эту позу» — задают через действие. MoveIt планирует траекторию и отдаёт её контроллерам суставов, которые исполняют движение. Визуализируют процесс в RViz через специальный плагин MoveIt: можно мышкой перетащить виртуальный схват и нажать «спланировать».
Применения
Манипуляторы на MoveIt — это промышленная сборка и сварка, паллетирование на складах, лабораторная автоматизация, медицинские и сервисные роботы. Связка «мобильная платформа + манипулятор» даёт мобильного манипулятора, который и доедет, и возьмёт — основа складской робототехники.
Как работает под капотом
Решение IK обычно численное: алгоритм итеративно подбирает углы, на каждом шаге уменьшая расхождение между текущим и желаемым положением схвата (по сути, градиентный спуск по ошибке). Планировщик движения часто использует случайные методы вроде RRT: он бросает случайные конфигурации руки, проверяет их на столкновения и строит дерево достижимых поз, пока не дотянется до цели. Проверка столкновений — самая дорогая операция, поэтому геометрию руки и препятствий упрощают.
Частые ошибки
- Считать, что IK всегда имеет решение. Цель может быть вне досягаемости или достижима лишь в неудобной позе.
- Забыть про самостолкновения. Рука способна сложиться сама на себя; планировщик обязан их учитывать.
- Пустая planning scene. Если не сообщить MoveIt о препятствиях, он спланирует путь сквозь них.
Итоги
- MoveIt — фреймворк ROS для планирования движения манипуляторов.
- FK по углам даёт положение схвата; IK по положению ищет углы — это сложнее.
- MoveIt планирует траекторию в обход препятствий и самостолкновений.
- Он берёт URDF, сцену планирования и исполняет движение через контроллеры.