workspaceGoalRegion

Задайте область рабочей области целевых положений end-effector

Описание

The workspaceGoalRegion объект задает область для допустимых положений цели end-effector. Чтобы выборить положения в границах области цели, используйте sample функция объекта. Вы также можете визуализировать границы, которые вы задаете, используя show функция объекта.

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

Image of workspace goal region showing an XYZ reference frame, an offset pose, an XYZ bounding box, and Euler angle rotations. The offset pose, bounding box, and angle rotations are all relative to the original reference frame pose.

Ключевые элементы области цели определяются как свойства объекта:

  • ReferencePose - положение опорной системы координат в лабораторной системе координат. Границы и положение смещения соответствуют этой системе координат.

  • EndEffectorOffsetPose - положение смещения, примененное к любому положению, выбранному в систему координат. Используйте это смещение, если конечный эффектор должен располагаться по-разному на основе захвата или других геометрических ограничений.

  • Границы - Границы области как матрица 6 на 2 с минимальными и максимальными значениями для XYZ-положения и ZYX ориентации угла Эйлера, в соответствующих векторах-столбцах.

Создание

Описание

пример

goalRegion = workspaceGoalRegion(EndEffectorName) создает объект области цели рабочей области по умолчанию для заданного имени end-effector. Устанавливает EndEffectorName свойство.

goalRegion = workspaceGoalRegion(EndEffectorName,Name,Value) устанавливает дополнительные свойства объекта с помощью пар "имя-значение". Для примера, workSpaceGoalRegion("endEffector","Bounds",limits) создает область цели рабочей области со свойством Bounds, заданным в виде матрицы.

Свойства

расширить все

Имя конечного эффектора, заданное как строковый скаляр.

Пример: "eeTool"

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

Положение опорной системы координат, заданное как матрица однородного преобразования 4 на 4. The Bounds свойство задает пределы области цели относительно этой системы координат.

Пример: trvect2tform([1 2 3])

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

Смещение энд-эффектора применено к дискретизированным в систему координат положениям, заданным как матрица однородного преобразования 4 на 4. Это смещение применяется ко всем дискретизированным положениям. Используйте это смещение, если конечный эффектор должен располагаться по-разному на основе захвата или других геометрических ограничений.

Пример: trvect2tform([0.5 1 0])

Пример: eul2tform([pi/2 0 -pi/4])

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

Ограничения положения и ориентации на выборках положения, заданные как матрица 6 на 2 с минимальными и максимальными значениями в векторы-столбцы.

wgr.Bounds = [ minX  maxX;
               minY  maxY;
               minZ  maxZ;
               minEulZ  maxEulZ;
               minEulY  maxEulY;
               minEulX  maxEulX ];

Первые три строки являются XYZ границами положения. Последние три строки являются границами ориентации, которые заданы как внутренние углы < reservedrangesplaceholder0 > углов Эйлера. Ориентация основана на правиле правой руки с поворотами против часовой стрелки вокруг соответствующих осей, положительными и измеренными в радианах. Во время отбора проб положение равномерно дискретизируется в каждом из этих границ, чтобы получить положение пробы в систему координат.

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

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

sampleДискретизация положений концевого эффектора в лабораторной системе координат
showВизуализация границ рабочей области, системы координат и системы координат

Примеры

свернуть все

Задайте область цели в рабочей рабочей области и планируйте путь в этих границах. The workspaceGoalRegion объект задает границы XYZ-положения и ориентации ZYX Euler эффектора конца робота. The manipulatorRRT объект планирует путь, основанный на этой целевой области, и дискретизирует случайные положения в границах.

Загрузка существующей модели робота в rigidBodyTree объект.

robot = loadrobot("kinovaGen3", "DataFormat", "row");
ax = show(robot);

Figure contains an axes. The axes contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

Создайте Планировщик Пути

Создайте быстро исследуемый планировщик пути (RRT) для робота. Этот пример использует пустое окружение, но этот рабочий процесс также хорошо работает с загроможденными окружениями. Можно добавить объекты столкновения в окружение, такую как collisionBox или collisionMesh объект.

planner = manipulatorRRT(robot,{});

Определите область цели

Создайте область цели рабочей области, используя имя тела робота с конечным эффектором.

Определите параметры области цели для вашей рабочей области. Область цели включает положение ссылки, границы XYZ-положения и пределы ориентации углов Эйлера ZYX. Этот пример задает границы XY-плоскости в метрах и позволяет вращать вокруг оси Z в радианах.

goalRegion = workspaceGoalRegion(robot.BodyNames{end}); 
goalRegion.ReferencePose = trvec2tform([0.5 0.5 0.2]);
goalRegion.Bounds(1, :) = [-0.2 0.2];    % X Bounds
goalRegion.Bounds(2, :) = [-0.2 0.2];    % Y Bounds
goalRegion.Bounds(4, :) = [-pi/2 pi/2];  % Rotation about the Z-axis

Можно также применить фиксированное смещение ко всем положениям, выбранным в области. Это смещение может учитывать инструменты захвата или изменения размерностей в рабочем рабочая область. В данном примере примените фиксированное преобразование, которое помещает концевой эффектор на 5 см выше рабочей области.

goalRegion.EndEffectorOffsetPose = trvec2tform([0 0 0.05]);
hold on
show(goalRegion);

Figure contains an axes. The axes contains 35 objects of type line, patch. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

Планируйте путь к области цели

Планируйте путь к области цели из домашнего строения робота. Из-за случайности в алгоритме RRT, этот пример устанавливает rng seed для обеспечения повторяемых результатов.

rng(0)
path = plan(planner,homeConfiguration(robot),goalRegion);

Показать робота, выполняющего путь. Чтобы визуализировать более реалистичный путь, интерполируйте точки между строениями пути.

interpConfigurations = interpolate(planner,path,5);

for i = 1 : size(interpConfigurations)
    show(robot,interpConfigurations(i,:),"PreservePlot",false);
    set(ax,'ZLim',[-0.05 0.75],'YLim',[-0.05 1],'XLim',[-0.05 1],...
        'CameraViewAngle',5)
  
    drawnow
end
hold off

Figure contains an axes. The axes contains 35 objects of type line, patch. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

Настройте положение End-Effector

Заметьте, что рука робота приближается к рабочей области снизу. Чтобы развернуть ориентацию конечного положения, добавьте pi вращение к оси Y для ссылки положения.

goalRegion.EndEffectorOffsetPose = ... 
    goalRegion.EndEffectorOffsetPose*eul2tform([0 pi 0],"ZYX");

Повторите путь и снова визуализируйте движение робота. Теперь робот приближается с верхней частью.

hold on
show(goalRegion);
path = plan(planner,homeConfiguration(robot),goalRegion);

interpConfigurations = interpolate(planner,path,5);

for i = 1 : size(interpConfigurations)
    show(robot, interpConfigurations(i, :),"PreservePlot",false);
    set(ax,'ZLim',[-0.05 0.75],'YLim',[-0.05 1],'XLim',[-0.05 1])
    drawnow;
end
hold off

Figure contains an axes. The axes contains 45 objects of type line, patch. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

Ссылки

Беренсон, Дмитрий, Сиддхартха С. Шриниваса, Дэйв Фергюсон, Альваро Колле, и Джеймс Дж. Куффнер. «Планирование манипуляций с областями рабочей области». В 2009 году Международная конференция IEEE по робототехнике и автоматизации (ICRA), 618-24. Кобе, Япония: Институт инженеров электротехники и электроники, 2009. https://doi.org/10.1109/ROBOT.2009.5152401.

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

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

.

См. также

| |

Введенный в R2021a