show

Показать модель робота на рисунке

Описание

пример

show(robot) строит графики каркасов кузова модели робота на рисунке с предопределенными домашними строениями. Оба Frames и Visuals отображаются автоматически.

show(robot,configuration) использует положения соединений, указанные в configuration чтобы показать каркасы кузова робота.

show(___,Name,Value) задает опции с использованием одного или нескольких аргументов пары "имя-значение" в сложение с любой комбинацией входных параметров из предыдущих синтаксисов. Для примера, 'Frames','off' скрывает жесткие каркасы кузова на рисунке.

ax = show(___) возвращает указатель на оси, на котором изображен робот.

Примеры

свернуть все

Можно импортировать роботов, у которых есть .stl файлы, сопоставленные с файлом формата Unified Robot Description (URDF), для описания визуальных геометрий робота. Каждое твердое тело имеет заданную индивидуальную визуальную геометрию. The importrobot функция анализирует файл URDF, чтобы получить модель робота и визуальные геометрии. Функция принимает, что визуальная геометрия и геометрия столкновения робота одинаковы, и присваивает визуальные геометрии как геометрии столкновения соответствующих тел.

Используйте show функция для отображения визуальных и коллизионных геометрий модели робота на рисунке. Затем можно взаимодействовать с моделью, щелкнув мышью на компонентах, чтобы просмотреть их и щелкнув правой кнопкой мыши, чтобы переключить видимость.

Импортируйте модель робота как файл URDF. The .stl расположение файлов должно быть правильно задано в этом URDF. Как добавить другие .stl файлы для отдельных твердых тел, см. addVisual.

robot = importrobot('iiwa14.urdf');

Визуализируйте робота со связанной визуальной моделью. Щелкните тела или системы координат, чтобы просмотреть их. Щелкните правой кнопкой мыши тела, чтобы переключить видимость для каждой визуальной геометрии.

show(robot,'visuals','on','collision','off');

Figure contains an axes. The axes contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh.

Визуализируйте робота со связанными геометриями столкновения. Щелкните тела или системы координат, чтобы просмотреть их. Щелкните правой кнопкой мыши тела, чтобы переключить видимость для каждой геометрии столкновения.

show(robot,'visuals','off','collision','on'); 

Figure contains an axes. The axes contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

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

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

load exampleRobots.mat

Создайте структуру для домашнего строения робота Puma. Структура имеет имена соединений и положения для каждого тела на модели робота.

config = homeConfiguration(puma1)
config=1×6 struct array with fields:
    JointName
    JointPosition

Показать домашние строения с помощью show. Вам не нужно указывать вход строения.

show(puma1);

Измените строение и установите второе положение соединения равным pi/2. Отображение результирующего изменения строения робота.

config(2).JointPosition = pi/2;
show(puma1,config);

Создайте случайные строения и отобразите их.

show(puma1,randomConfiguration(puma1));

Используйте параметры Денавита-Хартенберга (DH) робота Puma560 ®, чтобы создать робота. Каждое твердое тело добавляется по одному с преобразованием «child-to-parent», заданным объектом joint.

Параметры DH определяют геометрию робота относительно того, как каждое твердое тело присоединено к его родительскому элементу. Для удобства настройте параметры для робота- Puma560 в матрице [1]. Робот Puma является серийной цепью манипулятором. Параметры DH относятся к предыдущей линии в матрице, соответствующей предыдущему присоединению соединения .

dhparams = [0   	pi/2	0   	0;
            0.4318	0       0       0
            0.0203	-pi/2	0.15005	0;
            0   	pi/2	0.4318	0;
            0       -pi/2	0   	0;
            0       0       0       0];

Создайте объект древовидного твердого тела, чтобы создать робота.

robot = rigidBodyTree;

Создайте первое твёрдое тело и добавьте его к роботу. Для добавления твердого тела:

  1. Создайте rigidBody и присвоить ему уникальное имя.

  2. Создайте rigidBodyJoint и присвоить ему уникальное имя.

  3. Использование setFixedTransform для задания преобразования тела в тело с помощью параметров DH. Последний элемент параметров DH, theta, игнорируется, потому что угол зависит от положения соединения.

  4. Функции addBody крепление первого соединения корпуса к базовой системе координат робота.

body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');

setFixedTransform(jnt1,dhparams(1,:),'dh');
body1.Joint = jnt1;

addBody(robot,body1,'base')

Создайте и добавьте к роботу другие твердые тела. Задайте имя предыдущего тела при вызове addBody чтобы прикрепить его. Каждое фиксированное преобразование относится к предыдущей системе координат соединения.

body2 = rigidBody('body2');
jnt2 = rigidBodyJoint('jnt2','revolute');
body3 = rigidBody('body3');
jnt3 = rigidBodyJoint('jnt3','revolute');
body4 = rigidBody('body4');
jnt4 = rigidBodyJoint('jnt4','revolute');
body5 = rigidBody('body5');
jnt5 = rigidBodyJoint('jnt5','revolute');
body6 = rigidBody('body6');
jnt6 = rigidBodyJoint('jnt6','revolute');

setFixedTransform(jnt2,dhparams(2,:),'dh');
setFixedTransform(jnt3,dhparams(3,:),'dh');
setFixedTransform(jnt4,dhparams(4,:),'dh');
setFixedTransform(jnt5,dhparams(5,:),'dh');
setFixedTransform(jnt6,dhparams(6,:),'dh');

body2.Joint = jnt2;
body3.Joint = jnt3;
body4.Joint = jnt4;
body5.Joint = jnt5;
body6.Joint = jnt6;

addBody(robot,body2,'body1')
addBody(robot,body3,'body2')
addBody(robot,body4,'body3')
addBody(robot,body5,'body4')
addBody(robot,body6,'body5')

Проверьте, что ваш робот был построен правильно при помощи showdetails или show функция. showdetails списки всех тел в командном окне MATLAB ®. show отображает робота с заданным строением (по умолчанию домашний). Вызовы в axis измените пределы по осям и скрыть подписи по осям.

showdetails(robot)
--------------------
Robot: (6 bodies)

 Idx    Body Name   Joint Name   Joint Type    Parent Name(Idx)   Children Name(s)
 ---    ---------   ----------   ----------    ----------------   ----------------
   1        body1         jnt1     revolute             base(0)   body2(2)  
   2        body2         jnt2     revolute            body1(1)   body3(3)  
   3        body3         jnt3     revolute            body2(2)   body4(4)  
   4        body4         jnt4     revolute            body3(3)   body5(5)  
   5        body5         jnt5     revolute            body4(4)   body6(6)  
   6        body6         jnt6     revolute            body5(5)   
--------------------
show(robot);
axis([-0.5,0.5,-0.5,0.5,-0.5,0.5])
axis off

Ссылки

[1] Corke, P. I., and B. Armstrong-Helouvry. «Поиск консенсуса среди параметров модели, сообщенных для робота PUMA 560». Материалы 1994 Международной конференции IEEE по робототехнике и автоматизации, IEEE Comput. Soc. Press, 1994, pp. 1608-13. DOI.org (Crossref), doi:10.1109/ROBOT.1994.351360.

Загрузите модель робота и измените сетки столкновения. Очистить существующие сетки столкновения, добавить простые примитивы объектов столкновения и проверить, находятся ли определенные строения в конфликте.

Загрузка модели робота

Загрузите предварительно сконфигурированную модель робота в рабочую область с помощью loadrobot функция. Эта модель уже имеет сетки столкновения, заданные для каждого тела. Выполните итерацию всех элементов твердого тела и очистите существующие сетки столкновения. Подтвердите, что существующие сетки исчезли.

robot = loadrobot('kukaIiwa7','DataFormat','column');

for i = 1:robot.NumBodies
    clearCollision(robot.Bodies{i})
end

show(robot,'Collisions','on','Visuals','off');

Добавление цилиндров столкновения

Итеративно добавьте цилиндр столкновения к каждому телу. Пропустите некоторые тела для этой конкретной модели, так как они перекрываются и всегда сталкиваются с концевым эффектором (телом 10).

collisionObj = collisionCylinder(0.05,0.25);

for i = 1:robot.NumBodies
    if i > 6 && i < 10
        % Skip these bodies.
    else
        addCollision(robot.Bodies{i},collisionObj)
    end
end

show(robot,'Collisions','on','Visuals','off');

Проверка на наличие коллизий

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

figure
rng(0) % Set random seed for repeatability.
for i = 1:20
    config = randomConfiguration(robot);
    isColliding = checkCollision(robot,config);
    if isColliding
        show(robot,config,'Collisions','on','Visuals','off');
        title('Collision Detected')
    else
        % Skip non-collisions.
    end
end

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

свернуть все

Модель робота, заданная как rigidBodyTree объект.

Строение робота, заданная как вектор положений соединений или структура с именами соединений и положениями для всех тел в модели робота. Вы можете сгенерировать строение, используя homeConfiguration(robot), randomConfiguration(robot)или путем определения собственных положений соединений в структуре. Как использовать вектор форму configuration, установите DataFormat свойство для robot к любому из "row" или "column" .

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Frames','off' скрывает жесткие каркасы кузова на рисунке.

Родительский элемент осей, заданный как разделенная разделенными запятой парами, состоящая из 'Parent' и Axes объект, в котором нужно нарисовать робота. По умолчанию робот строится в активных осях.

Опция сохранения графика робота, заданная как разделенная разделенными запятой парами, состоящая из 'PreservePlot' и логический 1 (true) или 0 (false). Когда вы задаете этот аргумент как trueфункция не перезаписывает предыдущие графики, отображаемые вызовом show. Эта настройка функционирует аналогично hold on для стандартного MATLAB® рисунок, но ограничивается каркасами кузова робота. Когда вы задаете этот аргумент как falseфункция перезаписывает предыдущие графики робота.

Примечание

Когда 'PreservePlot' значение true, а 'FastUpdate' значение должно быть false.

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

Отобразите каркасы кузова, заданные как разделенная разделенными запятой парами, состоящая из 'Frames' и 'on' или 'off'. Эти системы координат являются системами координат отдельных тел в древовидном твердом теле.

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

Отобразите визуальные геометрии, заданные как разделенная разделенными запятой парами, состоящая из 'Visuals' и 'on' или 'off'. Отдельные визуальные геометрии также можно отключить, щелкнув правой кнопкой мыши по ним на рисунке.

Задайте отдельные визуальные геометрии используя addVisual. Чтобы импортировать модель робота URDF с .stl файлы для ячеек см. в importrobot функция.

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

Отобразите геометрию столкновения, заданную как разделенную разделенными запятой парами, состоящую из 'Collisions' и 'on' или 'off'.

Добавьте геометрию столкновения к отдельным твердым телам в модели робота с помощью addCollision функция. Чтобы импортировать модель робота URDF с .stl файлы для ячеек см. в importrobot функция.

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

Положение робота, заданное как разделенная разделенными запятой парами, состоящая из 'Position' и вектор с четырьмя элементами формы [<reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5> <reservedrangesplaceholder4> ]. Элементы x, y и z определяют положение в метрах, а yaw - угол рыскания в радианах.

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

Быстрое обновление существующего графика, заданное как разделенная разделенными запятой парами, состоящая из 'FastUpdate' и логический 0 (false) или 1 (true). Вы должны использовать show функция объекта, чтобы первоначально отобразить модель робота, прежде чем вы сможете задать ее с помощью этого аргумента.

Примечание

Когда 'FastUpdate' значение true, а 'PreservePlot' значение должно быть false.

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

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

свернуть все

Графический указатель на ось, возвращенный как Axes объект. Этот объект содержит свойства рисунка, на которой нанесен робот.

Совет

У вашей модели робота с ней связаны визуальные компоненты. Каждый rigidBody объект содержит координатную систему координат, которая отображается как каркас кузова. Каждое тело также может иметь визуальные сетки, сопоставленные с ними. По умолчанию оба этих компонентов отображаются автоматически. Можно просматривать или изменять визуальные компоненты древовидного твердого тела. Щелкните каркасы кузова или визуальные сетки, чтобы выделить их желтым цветом и увидеть связанное имя тела, индекс и тип соединения. Щелкните правой кнопкой мыши, чтобы переключить видимость отдельных компонентов.

  • Каркасы кузова: Отдельные каркасы кузова отображаются как 3-осевая координатная рамка. Фиксированные системы координат являются розовыми системами координат. Типы подвижных соединений отображаются в виде осей RGB. Можно кликнуть каркас кузова, чтобы увидеть ось движения. Призматические соединения показывают желтую стрелу в направлении оси движения и, шарнирные соединения показывают круговую стрелу вокруг оси вращения.

  • Визуальные сетки: Отдельные визуальные геометрии заданы с помощью addVisual или при помощи importrobot для импорта модели робота с .stl заданные файлы. Щелкнув правой кнопкой мыши отдельные тела на рисунке, можно выключить их сетки или задать Visuals Пара "имя-значение", чтобы скрыть все визуальные геометрии.

Введенный в R2016b