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');

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

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

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

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

load exampleRobots.mat

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

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));

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

Параметры DH задают геометрию робота с отношением к тому, как каждое твердое тело присоединено к своему родительскому элементу. Для удобства установите параметры для робота Puma560 в матрице. Робот Пумы является последовательным цепочечным манипулятором. Параметры 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

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

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

Загрузите предварительно сконфигурированную модель робота в рабочую область с помощью 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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Советы

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

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

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

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

| |

Введенный в R2017b