manipulatorRRT

Запланируйте движение дерево твердого тела использование двунаправленного RRT

Описание

manipulatorRRT объект является планировщиком единого запроса для рук манипулятора, который использует двунаправленные быстро исследующие случайные деревья (RRT) алгоритм с дополнительной эвристикой подключения, чтобы потенциально увеличить скорость.

Двунаправленный планировщик RRT создает два дерева с корневыми узлами в заданном запуске и целевых настройках. Чтобы расширить каждое дерево, планировщик генерирует случайную настройку и, если допустимый, получает шаг от самого близкого узла на основе MaxConnectionDistance свойство. После каждого расширения планировщик пытается соединиться между этими двумя деревьями с помощью нового расширения и самого близкого узла на противоположном дереве. Недопустимые настройки или связи, которые сталкиваются со средой, не добавляются к дереву.

Для более жадного поиска, включая EnableConnectHeuristic свойство отключает предел на MaxConnectionDistance свойство при соединении между этими двумя деревьями.

Image showing the extension of the two branching trees from start and end goal. When the EnableConnectHeurist is true, the connection steps are not limited by the max connection distance.

Установка EnableConnectHueristic свойство к false ограничивает дополнительное расстояние при соединении между этими двумя деревьями со значением MaxConnectionDistance свойство.

Image showing the extension of the two branching trees from start and end goal. When the EnableConnectHeurist is false, the connection steps are limited by the max connection distance.

Объект использует rigidBodyTree модель робота, чтобы сгенерировать случайные настройки и промежуточные состояния между узлами. Объекты столкновения заданы в модели робота, чтобы подтвердить настройки и проверку на столкновения со средой или самим роботом.

Чтобы запланировать путь между запуском и целевой настройкой, используйте plan объектная функция. После планирования можно интерполировать состояния вдоль пути с помощью interpolate объектная функция. Чтобы попытаться сократить путь путем обрезки ребер, используйте shorten объектная функция.

Для получения дополнительной информации о сложности расчета, смотрите Сложность Планирования.

Создание

Описание

пример

rrt = manipulatorRRT(robotRBT,{}) создает двунаправленного планировщика RRT для заданного rigidBodyTree модель робота. Массив пустой ячейки указывает, что нет никаких препятствий в среде.

rrt = manipulatorRRT(robotRBT,collisionObjects) создает планировщика для модели робота с объектами столкновения, помещенными в среду. Планировщик проверяет на столкновения с этими объектами.

Свойства

развернуть все

Максимальная длина между запланированными настройками в виде положительной скалярной величины. Объект вычисляет продолжительность движения как Евклидово расстояние между двумя объединенными настройками. Разности между двумя объединенными положениями для шарнирного соединения вычислены с помощью angdiff функция. Во время дополнительного процесса это - максимальное расстояние, которое может изменить настройка.

Если EnableConnectheuristic свойство установлено в true, объект игнорирует это расстояние при соединении этих двух деревьев во время этапа подключения.

Типы данных: double

Разрешающая способность по дальности для проверки движения между настройками в виде положительной скалярной величины. Расстояние валидации определяет количество интерполированных узлов между двумя смежными узлами в дереве. Объект подтверждает каждый интерполированный узел путем проверки на столкновения с роботом и средой.

Типы данных: double

Максимальное количество случайных настроек сгенерировано в виде положительного целого числа.

Типы данных: double

Непосредственно соедините деревья во время фазы connect планировщика в виде логического 1 TRUE) или 0 ложь). Установка этого свойства к true вызывает объект проигнорировать MaxConnectionDistance свойство при попытке соединить эти два дерева вместе.

Типы данных: логический

Функции объекта

planЗапланируйте путь с помощью RRT для манипуляторов
interpolateИнтерполируйте состояния вдоль пути от RRT
shortenРебра для обрезки, чтобы сократить путь от RRT

Примеры

свернуть все

Используйте manipulatorRRT возразите, чтобы запланировать путь модель робота дерева твердого тела в среде с препятствиями. Визуализируйте запланированный путь с интерполированными состояниями.

Загрузите модель робота в рабочую область. Используйте LBR KUKA рука манипулятора iiwa©.

robot = loadrobot("kukaIiwa14","DataFormat","row");

Сгенерируйте среду для робота. Создайте объекты столкновения и задайте их положения относительно основы робота. Визуализируйте среду.

env = {collisionBox(0.5, 0.5, 0.05) collisionSphere(0.3)};
env{1}.Pose(3, end) = -0.05;
env{2}.Pose(1:3, end) = [0.1 0.2 0.8];

show(robot);
hold on
show(env{1})
show(env{2})

Создайте планировщика RRT для модели робота.

rrt = manipulatorRRT(robot,env);

Задайте запуск и целевую настройку.

startConfig = [0.08 -0.65 0.05 0.02 0.04 0.49 0.04];
goalConfig =  [2.97 -1.05 0.05 0.02 0.04 0.49 0.04];

Запланируйте путь. Из-за случайности алгоритма RRT, набор rng отберите для воспроизводимости.

rng(0)
path = plan(rrt,startConfig,goalConfig);

Визуализируйте путь. Чтобы добавить больше промежуточных состояний, интерполируйте путь. По умолчанию, interpolate возразите, что функция использует значение ValidationDistance свойство определить количество промежуточных состояний. for цикл показывает каждый 20-й элемент интерполированного пути.

interpPath = interpolate(rrt,path);
clf
for i = 1:20:size(interpPath,1)
    show(robot,interpPath(i,:));
    hold on
end
show(env{1})
show(env{2})
hold off

Советы

Планирование сложности

  • При планировании движения между узлами в дереве набор настроек сгенерирован и подтвержден. Это время вычисления планировщика пропорционально количеству сгенерированных настроек. Количеством настроек между узлами управляет отношение свойств 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]

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2020b