exponenta event banner

показать

Визуализация границ рабочего пространства, опорной рамки и рамки смещения

Описание

пример

show(goalRegion) отображает положение и границы ориентации целевой области рабочего пространства. Функция также отображает опорный кадр и кадр смещения конечного эффектора.

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

show(goalRegion,"Parent",axesHandle) задает родительские оси, на которых будет отображаться целевая область рабочего пространства.

ax = 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.

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

свернуть все

Область цели рабочего пространства, заданная как workspaceGoalRegion объект.

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

свернуть все

Оси, содержащие область цели рабочего пространства, возвращенную как axes объект.

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