exponenta event banner

setFixedTransform

Задание фиксированных свойств преобразования соединения

Описание

setFixedTransform(jointObj,tform) устанавливает JointToParentTransform имущества rigidBodyJoint объект непосредственно с указанным однородным преобразованием, tform.

пример

setFixedTransform(jointObj,dhparams,"dh") устанавливает ChildToJointTransform с использованием параметров Денавита-Хартенберга (DH). JointToParentTransform свойство имеет значение identity matrix. Параметры DH приведены в порядке [a alpha d theta].

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

setFixedTransform(jointObj,mdhparams,"mdh") устанавливает JointToParentTransform с использованием измененных параметров DH. ChildToJointTransform свойство имеет значение identity matrix. Измененные параметры DH приведены в порядке [a alpha d theta].

Примеры

свернуть все

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

Параметры 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] Корк, П. И. и Б. Армстронг-Хелуври. «Поиск консенсуса между параметрами модели, сообщенными для робота PUMA 560». Материалы Международной конференции IEEE по робототехнике и автоматизации 1994 года, IEEE Comput. Soc. Press, 1994, стр. 1608-13. DOI.org (Crossref), doi:10.1109/ROBOT.1994.351360.

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

свернуть все

rigidBodyJoint объект, указанный как дескриптор.

Однородное преобразование, указанное как матрица 4 на 4. Для преобразования установлено значение ChildToJointTransform собственность. JointToParentTransform свойство имеет значение identity matrix.

Параметры Денавита-Хартенберга (DH), указанные как четырехэлементный вектор, [a alpha d theta]. Эти параметры используются для установки ChildToJointTransform собственность. JointToParentTransform свойство имеет значение identity matrix.

theta при задании фиксированного преобразования между соединениями ввод игнорируется, поскольку этот угол зависит от конфигурации соединения. Дополнительные сведения см. в разделе Модель робота дерева жесткого тела.

Модифицированные параметры Денавита-Хартенберга (DH), указанные как четырехэлементный вектор, [a alpha d theta]. Эти параметры используются для установки JointToParentTransform собственность. ChildToJointTransform устанавливается в единичную матрицу.

theta при задании фиксированного преобразования между соединениями ввод игнорируется, поскольку этот угол зависит от конфигурации соединения. Дополнительные сведения см. в разделе Модель робота дерева жесткого тела.

Ссылки

[1] Крейг, Джон Дж. Введение в робототехнику: механика и управление. Рединг, Массачусетс: Эддисон-Уэсли, 1989.

[2] Сисилиано, Бруно. Робототехника: моделирование, планирование и контроль. Лондон: Спрингер, 2009.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2016b