workspaceGoalRegion

Задайте область рабочей области положений цели исполнительного элемента конца

Описание

workspaceGoalRegion объект задает область для допустимых положений цели исполнительного элемента конца. К демонстрационным положениям в границах целевой области используйте 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) создает объект области цели рабочей области по умолчанию для заданного имени исполнительного элемента конца. Устанавливает EndEffectorName свойство.

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

Свойства

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

Имя исполнительного элемента конца в виде строкового скаляра.

Пример: "eeTool"

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

Положение системы координат в виде гомогенной матрицы преобразования 4 на 4. 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 позиционные границы. Последние три строки являются границами ориентации, которые заданы как внутренние Углы Эйлера ZYX. Ориентация основана на правиле правой руки с против часовой стрелки вращениями вокруг соответствующих осей, являющихся положительным и измеренным в радианах. Во время выборки положение однородно производится в каждой из этих границ, чтобы получить демонстрационное положение в системе координат.

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

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

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

Примеры

свернуть все

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

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

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

Figure contains an axes object. The axes object 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 object. The axes object 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 отберите, чтобы гарантировать повторяемые результаты.

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 object. The axes object 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.

Настройте положение исполнительного элемента конца

Заметьте, что манипулятор приближается к рабочей области от нижней части. Чтобы инвертировать ориентацию конечного положения, добавьте 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 object. The axes object 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.

Ссылки

[1] Беренсон, Дмитрий, Сиддхартха С. Сриниваса, Дэйв Фергюсон, Альваро Кольет и Джеймс Дж. Каффнер. "Манипуляция, Планирующая с областями Цели Рабочей области". На 2 009 Международных конференциях IEEE по вопросам Робототехники и Автоматизации (ICRA), 618–24. Кобе, Япония: Институт инженеров по электротехнике и электронике, 2009. https://doi.org/10.1109/ROBOT.2009.5152401.

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

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

Смотрите также

| |

Введенный в R2021a