interpolate

Интерполируйте состояния вдоль пути от RRT

Описание

пример

interpPath = interpolate(rrt,path) интерполирует состояния между каждой смежной настройкой в пути на основе свойства ValidationDistance манипулятора, быстро исследуя случайное дерево (RRT) планировщик rrt.

interpPath = interpolate(rrt,path,numInterp) задает количество интерполяций между смежными настройками.

Примеры

свернуть все

Используйте 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})

Figure contains an axes object. The axes object contains 31 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh.

Создайте планировщика 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

Figure contains an axes object. The axes object contains 437 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh.

Входные параметры

свернуть все

Манипулятор планировщик RRT в виде manipulatorRRT объект. Этот планировщик для определенной модели робота дерева твердого тела, сохраненной как rigidBodyTree объект.

Запланированный путь на объединенном пробеле в виде r-by-n матрица объединенных настроек, где r является количеством настроек в пути и n, является количеством нефиксированных соединений в rigidBodyTree модель робота.

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

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

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

Выходные аргументы

свернуть все

Запланированный путь на объединенном пробеле в виде r-by-n матрица объединенных настроек, где r является количеством настроек в пути и n, является количеством нефиксированных соединений в rigidBodyTree модель робота.

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

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

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

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте