exponenta event banner

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.

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

  • ReferurePose - Поза опорной рамки в мировой рамке. Границы и поза смещения находятся относительно этого кадра.

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

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

Создание

Описание

пример

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

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

Свойства

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

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

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

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

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

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

Примеры

свернуть все

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

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.

Настройка положения концевого эффектора

Обратите внимание, что рука робота подходит к рабочему пространству снизу. Чтобы развернуть ориентацию конечного положения, добавьте 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++ с помощью MATLAB ® Coder™

.

См. также

| |

Представлен в R2021a