Планируйте движение для древовидного твердого тела с помощью двунаправленного RRT
The manipulatorRRT
объект является планировщиком с одним запросом для рук манипулятора, который использует двунаправленный быстро исследуемый алгоритм случайных деревьев (RRT) с необязательным эвристическим соединением, чтобы потенциально увеличить скорость.
Двунаправленный планировщик RRT создает два дерева с корневыми узлами в заданных начальных и целевых строениях. Чтобы расширить каждое дерево, планировщик генерирует случайное строение и, если это допустимо, делает шаг от ближайшего узла на основе свойства MaxConnectionDistance. После каждого расширения планировщик пытается соединиться между двумя деревьями с помощью нового расширения и ближайшего узла на противоположном дереве. Недопустимые строения или соединения, которые конфликтуют со окружением, не добавляются в дерево.
Для более зеленого поиска включение свойства EnableConnectHeuristic отключает предел на MaxConnectionDistance
свойство при соединении двух деревьев.
Установка EnableConnectHueristic
свойство к false
ограничивает расстояние удлинения при соединении двух деревьев значением MaxConnectionDistance
свойство.
Объект использует rigidBodyTree
модель робота, чтобы сгенерировать случайные строения и промежуточные состояния между узлами. Объекты столкновения заданы в модели робота, чтобы подтвердить строения и проверить на столкновения со окружением или самим роботом.
Чтобы спланировать путь между начальными и целевыми строениями, используйте plan
функция объекта. После планирования можно интерполировать состояния вдоль пути с помощью interpolate
функция объекта. Чтобы попытаться сократить контур путем обрезки ребер, используйте shorten
функция объекта.
Чтобы задать область для выборки положений end-effector около строения цели, создайте workspaceGoalRegion
и задайте его как goalRegion
вход plan
функция объекта. Чтобы изменить вероятность дискретизации дополнительных строений цели, задайте свойство WorkspaceGoalRegionBias.
Для получения дополнительной информации о вычислительной сложности см. «Сложность планирования».
rrt = manipulatorRRT(
создает двунаправленный планировщик RRT для заданного robotRBT
,{})rigidBodyTree
модель робота. Пустой массив ячеек указывает, что в окружении нет никаких препятствий.
rrt = manipulatorRRT(
создает планировщик для модели робота с объектами столкновения, размещенными в окружении. Плановик проверяет наличие столкновений с этими объектами.robotRBT
,collisionObjects
)
plan | Планируйте путь, используя RRT для манипуляторов |
interpolate | Интерполяция состояний по пути из RRT |
shorten | Обрезка ребер для укорочения пути из RRT |
Комплексность планирования
При планировании движения между узлами в дереве генерируется и проверяется набор строений. Это время расчета плановика пропорционально количеству сгенерированных строений. Количество строений между узлами определяется отношением свойств MaxConnectionDistance и ValidationDistance. Чтобы улучшить время планирования, рассмотрите увеличение расстояния валидации или уменьшение максимального расстояния соединения.
Валидация каждого строения имеет сложность O (mn + m2), где m количество сталкивающихся тел в rigidBodyTree
object и n - количество объектов столкновения в worldObjects
. Использование большого количества сеток для представления вашего робота или окружения увеличивает время для проверки каждого строения.
Бесконечные Пределы Соединений
Если ваш rigidBodyTree
модель робота имеет пределы соединений, которые имеют бесконечную область значений (например, шарнирное соединение с пределами [-Inf Inf]
), а manipulatorRRT
объект использует пределы [-1e10 1e10]
для выполнения равномерной случайной выборки в пределах соединений.
[1] Kuffner, J. J., and S. M. LaValle. «RRT-Connect: эффективный подход к планированию пути с одним запросом». В Труде 2000 ICRA. Конференция тысячелетия. Международная конференция IEEE по робототехнике и автоматизации. Материалы симпозиумов (кат. № 00CH37065), 2:995–1001. Сан-Франциско, Калифорния, США: IEEE, 2000. https://doi:10.1109/ROBOT.2000.844730.