Манипуляторы и 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, сцену планирования и исполняет движение через контроллеры.
Проверьте себя
1. Что делает MoveIt?
AСтроит карту помещения
BПланирует движение манипулятора к цели в обход препятствий
CЗаписывает топики
DСобирает пакеты
2. Чем обратная кинематика (IK) сложнее прямой (FK)?
AIK работает только на C++
BПо положению схвата найти углы суставов — решений может быть несколько, одно или ни одного
CIK не нужна роботам
DРазницы нет
3. Что произойдёт, если оставить planning scene пустой?
AMoveIt откажется работать
BMoveIt может спланировать путь сквозь препятствия, о которых не знает
CРука будет двигаться быстрее
DНичего