setFixedTransform

Класс: робототехника. Соединение
Пакет: робототехника

Установите зафиксированный, преобразовывают свойства соединения

Синтаксис

setFixedTransform(jointObj,tform)
setFixedTransform(jointObj,dhparams,"dh")
setFixedTransform(jointObj,mdhparams,"mdh")

Описание

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

пример

setFixedTransform(jointObj,dhparams,"dh") устанавливает свойство ChildToJointTransform с помощью параметров Denavit-Hartenberg (DH). Свойство JointToParentTransform установлено в единичную матрицу. Параметры DH даны в порядке [a alpha d theta].

Вход theta проигнорирован при определении фиксированного преобразования между соединениями, потому что тот угол зависит от объединенной настройки. Для получения дополнительной информации см. Модель Робота Дерева Твердого тела.

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

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

развернуть все

Объект Joint, заданный как указатель. Создайте объединенный объект с помощью robotics.Joint.

Гомогенное преобразование, заданное как матрица 4 на 4. Преобразование установлено в свойство ChildToJointTransform. Свойство JointToParentTransform установлено в единичную матрицу.

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

Вход theta проигнорирован при определении фиксированного преобразования между соединениями, потому что тот угол зависит от объединенной настройки. Для получения дополнительной информации см. Модель Робота Дерева Твердого тела.

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

Вход theta проигнорирован при определении фиксированного преобразования между соединениями, потому что тот угол зависит от объединенной настройки. Для получения дополнительной информации см. Модель Робота Дерева Твердого тела.

Примеры

развернуть все

Используйте параметры 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 = robotics.RigidBodyTree;

Создайте первое твердое тело и добавьте его в робота. Добавить твердое тело:

  1. Создайте объект RigidBody и дайте ему уникальное имя.

  2. Создайте объект Joint и дайте ему уникальное имя.

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

  4. Вызовите addBody, чтобы присоединить первый сустав к опорной раме робота.

body1 = robotics.RigidBody('body1');
jnt1 = robotics.Joint('jnt1','revolute');

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

addBody(robot,body1,'base')

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

body2 = robotics.RigidBody('body2');
jnt2 = robotics.Joint('jnt2','revolute');
body3 = robotics.RigidBody('body3');
jnt3 = robotics.Joint('jnt3','revolute');
body4 = robotics.RigidBody('body4');
jnt4 = robotics.Joint('jnt4','revolute');
body5 = robotics.RigidBody('body5');
jnt5 = robotics.Joint('jnt5','revolute');
body6 = robotics.RigidBody('body6');
jnt6 = robotics.Joint('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')

Проверьте, что ваш робот был создан правильно при помощи функции show или showdetails. 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] Крэйг, Джон Дж. Введение в робототехнику: механика и управление. Чтение, MA: Аддисон-Уэсли, 1989.

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

Введенный в R2017b