【Robotics toolbox】(二)平移变换transl | 旋转坐标变换trot| t2t | r2t

关注微信公众号`二进制人工智能`,回复`robot`获取机器人工具箱

1 坐标变换

在这里插入图片描述
在三维空间中,任一坐标系均可作为描述一个物体位姿的参考坐标系。在机器人学的许多问题中,常常需要在不同的参考坐标系中表示同一个物体的位姿。例如,图1-8的应用例子中,需要在相机的指导下﹐使用机器人的手臂去夹取一个目标物体。因此,需要获取世界坐标系、固定相机的坐标系.机器人的坐标系.机器人的相机坐标系、目标物体的坐标系的位置与姿态,使得机器人的末端执行器能够达到夹取目标物体所需要的位姿,执行夹取任务。

1.1 平移坐标变换

在这里插入图片描述
如图1-9所示,坐标系 A {A} A没有经过旋转,只经过平移得到坐标系 { B } \{B\} {B} P P P B B B坐标系中的一点,用矢量 B P ^BP BP表示它在坐标系 { B } \{B\} {B}中的位置; A P B O R G ^AP_{BORG} APBORG表示 A A A坐标系平移到 B B B坐标系的距离。当 P P P用坐标系表示时,用矢量 A P ^AP AP表示。因为矢量 A P ^AP AP B P ^BP BP具有相同的姿态,所以可以使用矢量相加的方法表示 A P ^AP AP
在这里插入图片描述

4 × 4 4\times 4 4×4的齐次矩阵表示平移变换矩阵 T T T,则
在这里插入图片描述

其中, p x , p y 和 p z p_x,p_y和p_z pxpypz ,是平移向量 Р Р Р相对于参考坐标系 X X X轴、 Y Y Y轴和 Z Z Z轴的3个分量。与矢量和旋转矩阵一样,坐标系还可以用上述变换算子表示。

对于平移坐标变换,机器人工具箱提供了函数transl()计算一段平移相对应的平移变换矩阵。

例如,空间中的一个坐标系 { A } \{A\} {A},它可以表示为:
在这里插入图片描述

如果将这个坐标系沿着参考坐标系的 Y Y Y轴移动10个单位,然后再沿着 Z Z Z轴移动5个单位得到坐标系 { B } \{B\} {B},求坐标系 { B } \{B\} {B}的表示。

A=[0.527,-0.574,0.628,5;
    0.369,0.819,0.439,3;
    -0.766,0,0.643,8;
    0,0,0,1];
T=transl(0,10,5)
B=T*A

在这里插入图片描述

1.2 旋转平移矩阵

在这里插入图片描述

如图1-10所示,当坐标系 { A } \{A\} {A}没有经过平移,只经过旋转时(旋转矩阵为 B A R ^A_BR BAR),得到坐标系 { B } \{B\} {B}。同一个点 P P P在坐标系 { A } \{A\} {A} { B } \{B\} {B}中的表示分别为 A P ^AP AP B P ^BP BP,这两个矢量有这样的变换关系:
在这里插入图片描述
机器人工具箱分别提供了trotx(),troty(),trotz()三个函数计算旋转变换矩阵,分别对应于 X X X轴, Y Y Y轴, Z Z Z轴旋转一定的角度,得到的是一个 4 × 4 4\times 4 4×4的矩阵。

例如:使用上面的坐标系 A A A,绕着 X X X轴旋转30°,求旋转后的坐标系 { C } \{C\} {C}

A=[0.527,-0.574,0.628,5;
    0.369,0.819,0.439,3;
    -0.766,0,0.643,8;
    0,0,0,1];
T=trotx(pi/6)
C=T*A

在这里插入图片描述

1.3 齐次坐标变换

在这里插入图片描述

如图1-11所示,当坐标系 { A } \{A\} {A}经过平移(距离为 A P B O R G ^AP_{BORG} APBORG)于旋转(旋转矩阵为^A_BR)得到坐标系 { B } \{B\} {B}。同一个点 P P P在坐标系 { A } \{A\} {A} { B } \{B\} {B}中的表示分别为 A P ^AP AP B P ^BP BP,这两个矢量有如下的变换关系:
在这里插入图片描述

从上式可以得出在不同坐标系中的位姿 A P ^AP AP B P ^BP BP之间的关系,但在上式中 A P ^AP AP B P ^BP BP并不是齐次变换的关系,结果只能简易计算相邻坐标系中位姿之间的关系,当不是相邻甚至需要得到末端执行器和基座坐标系上位姿的关系时,计算量太大,太复杂,所以应该将这个等式写成齐次变换的形式。因为在三维矩阵计算不能充分描述齐次变换,所以增加了矩阵的维数,将等式改写为四维矩阵的形式,即:
在这里插入图片描述
将转换因子用齐次变换矩阵 B A T ^A_BT BAT表示,即:
在这里插入图片描述

因此上式可以表示为:
在这里插入图片描述

对于旋转矩阵 B A R ^A_BR BAR,根据正交矩阵的性质可以得到:
在这里插入图片描述
而对于旋转矩阵,其逆矩阵不等于原矩阵,经过推导,可得到:

在这里插入图片描述
因此,得到了相邻坐标系间矢量(旋转矢量和移动矢量)的齐次变换。

下面用例子说明如何用机器人工具箱解决齐次变换的问题。
在这里插入图片描述
解:
(1)旋转矩阵 B A R = R ( y , 60 ° ) ^A_BR=R(y,60°) BAR=R(y60°),平移矢量为 A p B = [ 4 0 3 ] T ^Ap_B=[4\quad0\quad 3]^T ApB=[403]T
在这里插入图片描述

输入命令,得到 B A T ^A_BT BAT

T=transl(4,0,3)*troty(pi/3)

在这里插入图片描述

p 1 p_1 p1在坐标系 { A } \{A\} {A}中的描述为 A P = B A T B P ^AP=^A_BT^BP AP=BATBP,输入命令:

p=T*[2;4;3;1]

得到 A P ^AP AP
在这里插入图片描述

(2)由 A P = B A T B P ^AP=^A_BT^BP AP=BATBP可得到 B P = B A T − 1 ⋅ A P ^BP=^A_BT^{-1}\cdot ^AP BP=BAT1AP,输入命令:

p2=inv(T)*[2;4;3;1]

运行结果:
在这里插入图片描述

画出坐标系A和B:

T=transl(4,0,3)*troty(pi/3);
T0=transl(0,0,0);
trplot(T0,'frame','A','color','b');
hold on;
trplot(T,'frame','B','color','r');
axis([0,5,0,5,0,5]);

在这里插入图片描述

此外,关于齐次变换矩阵 B A T ^A_BT BAT,机器人工具箱提供了函数t2r()可以提取旋转矩阵分量:

R=t2r(T)

在这里插入图片描述
而函数r2t()则可以将旋转矩阵转换成对应的齐次变换矩阵。如通过运行指令r2t(R)可以得到上面的矩阵T

T1=r2t(R)

在这里插入图片描述

通过以下的命令可以提取平移变换分量:

p=transl(T)

在这里插入图片描述

2 相关函数详细用法

2.1平移变换transl

(1)使用transl()创建平移变换矩阵。

T= transl(x,y,z):表示能够获取一个分别沿着工 x , y , z x,y,z xyz轴平移一段距离得到的4×4齐次变换矩阵。

T = transl(p):表示由经过矩阵(或向量)p =[r,y,z]的平移得到的齐次变换矩阵。
如果p ( M × 3 ) (M×3) (M×3)的矩阵,则 T T T为一组齐次变换矩阵 ( 4 × 4 × M ) (4×4×M) (4×4×M),其中T(:,: ,i)对应于p的第i行。
(2)使用transl提取一个矩阵中的平移变换分量。

[x, y,z]= transl(T): x , y , z x,y,z xyz是齐次变换矩阵中的三个分量,是一个 1 × M 1×M 1×M的向量。

p =transl(T):p是齐次变换矩阵中T的平移部分,是一个 3 × M 3×M 3×M的矩阵。

2.2 旋转坐标变换

(1)T=trotx(0):表示围绕X轴旋转((弧度)得到的齐次变换矩阵(4×4)。

(2)T=troty(0):表示围绕Y轴旋转0(弧度)得到的齐次变换矩阵(4×4)。

(3)T=trotz(0):表示围绕Z轴旋转0(弧度)得到的齐次变换矩阵(4×4)。

以上3个函数中,可选参数为deg,表示角度值单位为度(degree),如totx(180,'deg')

2.3 t2r()

R= t2r(T)获取齐次变换矩阵T中正交旋转矩阵分量。如果T是一个4×4的矩阵,则R是一个3×3的矩阵﹔如果T是一个3×3的矩阵,则R是一个2×2的矩阵。

2.4 r2t()

函数r2t()将旋转矩阵转换为齐次变换矩阵T=r2t(R)获取一个正交旋转矩阵R等价的具有零平移分量的齐次变换矩阵。如果R是一个3×3的矩阵,则T是一个4×4的矩阵;如果R是一个2×2的矩阵,则T是一个3×3的矩阵。

《机器人仿真与编程技术》 杨辰光 李智军 许扬

假设我们有一个初始坐标系A,它的原点为(0,0,0),三个轴分别为x,y,z。现在我们需要将这个坐标系平移并旋转得到一个新的坐标系B,其原点为(1,2,3),同时绕z轴旋转45度。 1. 平移矩阵 平移矩阵是将一个坐标系沿着某个方向平移一定距离的变换矩阵。对于上述情况,我们需要将坐标系A沿着x、y、z三个轴分别平移1、2、3个单位,那么平移矩阵为: ``` T = [1, 0, 0, 1; 0, 1, 0, 2; 0, 0, 1, 3; 0, 0, 0, 1]; ``` 其中,前三列代表x、y、z轴的平移量,最后一列为齐次坐标系中的常数项。 2. 旋转矩阵 旋转矩阵是将一个坐标系绕着某个轴旋转一定角度的变换矩阵。对于上述情况,我们需要将坐标系A绕z轴旋转45度,那么旋转矩阵为: ``` R = [cosd(45), -sind(45), 0, 0; sind(45), cosd(45), 0, 0; 0, 0, 1, 0; 0, 0, 0, 1]; ``` 其中,前三列代表绕x、y、z轴旋转的方向和角度,最后一列为齐次坐标系中的常数项。 3. 变换矩阵 将平移矩阵和旋转矩阵相乘得到变换矩阵: ``` T_b_a = T * R; ``` 其中,T_b_a表示从坐标系A到B的变换矩阵。 4. 验证变换矩阵 我们可以验证一下变换矩阵的正确性,将坐标系A中的点(1,1,1)变换到坐标系B中: ``` p_a = [1; 1; 1; 1]; p_b = T_b_a * p_a; ``` 得到p_b = [1.71; 2.71; 4; 1],符合预期结果。 综上所述,我们可以通过Matlab robotics toolbox求解一个坐标系平移、旋转矩阵实例,具体步骤如下: 1. 定义平移矩阵; 2. 定义旋转矩阵; 3. 将平移矩阵和旋转矩阵相乘得到变换矩阵; 4. 验证变换矩阵的正确性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二进制人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值