show

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

Описание

пример

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

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

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

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

Примеры

свернуть все

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

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

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

robot = importrobot('iiwa14.urdf');

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

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

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

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

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

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

show(puma1);

Figure contains an axes object. The axes object contains 13 objects of type patch, line. These objects represent base, L1, L2, L3, L4, L5, L6.

Измените настройку и установите второе объединенное положение на pi/2. Покажите получившееся изменение в настройке робота.

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

Figure contains an axes object. The axes object contains 13 objects of type patch, line. These objects represent base, L1, L2, L3, L4, L5, L6.

Создайте случайные настройки и покажите им.

show(puma1,randomConfiguration(puma1));

Figure contains an axes object. The axes object contains 13 objects of type patch, line. These objects represent base, L1, L2, L3, L4, L5, L6.

Используйте параметры Denavit-Hartenberg (DH) робота Puma560®, чтобы создать робота. Каждое твердое тело добавляется по одному, с дочерним элементом к родительскому элементу преобразовывают заданный объединенным объектом.

Параметры DH задают геометрию робота с отношением к тому, как каждое твердое тело присоединено к своему родительскому элементу. Для удобства установите параметры для робота Puma560 в матрице [1]. Робот Пумы является последовательным цепочечным манипулятором. Параметры 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. и Б. Армстронг-Хелуври. “Поиск Согласия среди Параметров модели, о которых Сообщают для робота PUMA 560”. Продолжения 1 994 Международных конференций IEEE по вопросам Робототехники и Автоматизации, IEEE Comput. Soc. Нажмите, 1994, стр 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');

Figure contains an axes object. The axes object contains 21 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.

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

Итеративно добавляйте цилиндр столкновения к каждому телу. Пропустите некоторые тела для этой определенной модели, как они перекрываются и всегда сталкиваются с исполнительным элементом конца (тело 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 contains an axes object. The axes object contains 28 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_ee_kuka_coll_mesh.

Проверяйте на столкновения

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

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

Figure contains an axes object. The axes object with title Collision Detected contains 28 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_ee_kuka_coll_mesh.

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

свернуть все

Модель Robot в виде rigidBodyTree объект.

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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.

Типы данных: логический

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Типы данных: логический

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

свернуть все

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

Советы

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

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

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

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

| |

Введенный в R2017b