Matlab Robotics Toolbox--坐标系变换

约定不等于承诺〃 2022-11-26 09:59 395阅读 0赞

Matlab Robotics Toolbox–坐标系变换

摘要

坐标变换一般可由旋转变换和平移变换两部分构成,上一篇介绍了Robotics Toolbox旋转变换的相关函数,这一篇介绍坐标系齐次变换的函数。

平移变换

(1)创建平移变换矩阵

  • T=transl(x,y,z) : 表示能够获取一个分别沿着x,y,z轴平移一段距离得到的4x4齐次变换矩阵。
  • T=transl§ : 表示由经过矩阵(或向量)p=[x,y,z]的平移得到的其次变换矩阵。如果p为(Mx3)的矩阵,则T为一组其次变换矩阵(4x4xM),其中T(:,:,i)对应于p的第i行。

例如

  1. >> T=transl(1,2,3)
  2. T =
  3. 1 0 0 1
  4. 0 1 0 2
  5. 0 0 1 3
  6. 0 0 0 1
  7. >>p=[2 3 4];
  8. >>T=transl(p)
  9. T =
  10. 1 0 0 2
  11. 0 1 0 3
  12. 0 0 1 4
  13. 0 0 0 1

(2)使用transl()获取一个矩阵中的平移分量。

  • [x ,y, z]=transl(T): x,y,z是齐次变换矩阵T中的三个分量,是一个1xM的向量。
  • p=transl(T): p是齐次变换矩阵T中平移部分,是一个3xM的矩阵。

例子

  1. T=transl(3,4,5)
  2. T =
  3. 1 0 0 3
  4. 0 1 0 4
  5. 0 0 1 5
  6. 0 0 0 1
  7. >> p=transl(T)
  8. p =
  9. 3
  10. 4
  11. 5
  12. >> [x,y,z]=transl(T)
  13. x =
  14. 3
  15. y =
  16. 4
  17. z =
  18. 5

旋转坐标变换

  • T=trotx( θ \theta θ): 表示绕X轴旋转 θ \theta θ得到的齐次变换矩阵(4x4);
  • T=troty( θ \theta θ): 表示绕Y轴旋转 θ \theta θ得到的齐次变换矩阵(4x4);
  • T=trotz( θ \theta θ): 表示绕Z轴旋转 θ \theta θ得到的齐次变换矩阵(4x4);

矩阵分解

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

例子

  1. >> T=trotx(30)*transl(3,4,5)
  2. T =
  3. 1.0000 0 0 3.0000
  4. 0 0.8660 -0.5000 0.9641
  5. 0 0.5000 0.8660 6.3301
  6. 0 0 0 1.0000
  7. >> R=t2r(T)
  8. R =
  9. 1.0000 0 0
  10. 0 0.8660 -0.5000
  11. 0 0.5000 0.8660
  • T=r2t®可将旋转矩转换为齐次矩阵,获取一个正交旋转矩阵R等价的具有零平移分量的其次变换矩阵。如果R是一个3x3的矩阵,则T是一个4x4的矩阵;如果R是一个2x2的矩阵,则T是一个3x3的矩阵。

例子

  1. >> R=rotz(60)
  2. R =
  3. 0.5000 -0.8660 0
  4. 0.8660 0.5000 0
  5. 0 0 1.0000
  6. >> T=r2t(R)
  7. T =
  8. 0.5000 -0.8660 0 0
  9. 0.8660 0.5000 0 0
  10. 0 0 1.0000 0
  11. 0 0 0 1.0000

例子:坐标系{A}与坐标系{B}重合,首先{B}相对于{A}的 y A y_A yA​轴旋转60度,再沿{A}的x轴移动4个单位,最后沿着A的z轴移动3个单位。求点 p 1 p_1 p1​在坐标系B中描述为 B p 1 = [ 2 , 4 , 3 ] T ^Bp_1=[2, 4 ,3]^T Bp1​=[2,4,3]T,求它在坐标系A中的描述。

用toolbox仿真如下

  1. clc
  2. clear
  3. close('all')
  4. %%坐标系正变换,坐标点逆变换
  5. T1=troty(60);
  6. T2=transl(4,0,3);
  7. T=T2*T1;
  8. p1=[2;4;3;1];
  9. Ap1=T*p1;
  10. %%坐标系逆变换,坐标点正变换
  11. Tr=inv(T);
  12. Bp1=Tr*p1;
  13. %%绘图
  14. T0=transl(0,0,0);
  15. trplot(T0,'frame','A','color','b');
  16. axis([-5 5 -5 5 -5 5]);
  17. hold on,
  18. tranimate(T0,T,'frame','B','color','r');

在这里插入图片描述

参考文献

[1]机器人仿真与编程技术[M].杨辰光,李智军,许杨.北京:清华大学出版社,2018

发表评论

表情:
评论列表 (有 0 条评论,395人围观)

还没有评论,来说两句吧...

相关阅读