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