interpolate

Интерполяция состояний по пути из RRT

Описание

пример

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

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

Примеры

свернуть все

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

Загрузите модель робота в рабочую область. Используйте руку манипулятора KUKA LBR 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 seed для повторяемости.

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

Визуализируйте путь. Чтобы добавить больше промежуточных состояний, интерполируйте путь. По умолчанию в interpolate объект использует значение ValidationDistance свойство для определения количества промежуточных состояний. The 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

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

свернуть все

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

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

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

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

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

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

свернуть все

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

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

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

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

.
Введенный в R2020b