本文主要参考清华大学出版社的《机器人仿真与编程技术》一书

空间中的位置:

所谓的位姿就是指机器人上每个关节在每一个时刻的位置和姿态。
在机器人工具箱中可以使用rotx( Θ)、roty( Θ)、rotz( Θ)计算旋转 Θ的旋转矩阵。( Θ为弧度
R=rotx(pi)
显示:
R =
    1.0000         0         0
         0   -1.0000   -0.0000
         0    0.0000   -1.0000
 
我们使用acos(-1)、asin(0)得到验证,返回结果就是3.1416=pi。
我们安装了机器人工具箱后可以使用角度形式进行表示,也就是:
R=rotx(180,'deg')
结果也是一样,但是直接使用R=rotx(180)返回结果就是:
R =
    1.0000         0         0
         0   -0.5985    0.8012
         0   -0.8012   -0.5985
我们算出acos(-0.5985)=2.2124 ,asin(0.8012)=0.9293,之后使用弧度角度转换发现rad2deg(2.2124+0.9293)=180.0062,是补交关系和机器人学中的旋转矩阵定义不相符
画出来样子:
 
之后是图形化绘制函数trplot:
R = rotx(pi)
subplot(1,2,1)
title("原始")
trplot()
subplot(1,2,2)
title("旋转后")
trplot(R)
效果图:
清晰的看到绕着x轴旋转了180°
使用函数tranimate
R1 = rotx(0)
R2 = rotx(pi)
tranimate(R1,R2)
就可以看到坐标轴旋转的动画效果
 

坐标变换:

平移变换:

A = [0.5,-0.5,0.6,5;0.3,0.8,0.4,3;-0.7,0,0.6,8;0,0,0,1]
T = transl(0,10,5)
B = T*A
C = A*T
我们的A是空间坐标系
A =
    0.5000   -0.5000    0.6000    5.0000
    0.3000    0.8000    0.4000    3.0000
   -0.7000         0    0.6000    8.0000
         0         0         0    1.0000
T是旋转矩阵,通过transl自动生成
T =
     1     0     0     0
     0     1     0    10
     0     0     1     5
     0     0     0     1
两个矩阵的关系到底是谁乘谁,我们用BC做了实验。
B =
    0.5000   -0.5000    0.6000    5.0000
    0.3000    0.8000    0.4000   13.0000
   -0.7000         0    0.6000   13.0000
         0         0         0    1.0000
C =
    0.5000   -0.5000    0.6000    3.0000
    0.3000    0.8000    0.4000   13.0000
   -0.7000         0    0.6000   11.0000
         0         0         0    1.0000
我们发现要使用T*A,使T只影响A的最后一列

旋转变换

同样使T*A
A = [0.5,-0.5,0.6,5;0.3,0.8,0.4,3;-0.7,0,0.6,8;0,0,0,1]
T = trotx(pi/6)
B = T*A
其中
T =
    1.0000         0         0         0
         0    0.8660   -0.5000         0
         0    0.5000    0.8660         0
         0         0         0    1.0000

平移加旋转

T=transl(4,0,3)*trory(pi/3)
当我们需要由变换后矩阵得到变换前的矩阵时使用:
inv(T)
得到变换矩阵的逆
如果我们想从T中提取旋转分量
R=t2r(T)
如果想提取平移分量
p=tranl(T)
总结
  • 使用transl()创建平移变换矩阵
  • 使用transl()提取平移部分
  • 旋转矩阵rotx( Θ)、roty( Θ)、rotz( Θ
  • 使用t2r提取旋转分量
  • 使用r2t()由旋转矩阵得到齐次变换矩阵
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐