一、机器人工具箱介绍
机器人工具箱是由来自昆士兰科技大学的教授Peter Corke开发的,被广泛用于机器人进行仿真(主要是串联机器人)。该工具箱支持机器人一些基本算法的功能,例如三维坐标中的方向表示,运动学、动力学模型和轨迹生成。
学习该工具箱较为经典的书籍有以下两本,其中第一本是Peter Corke教授自己编写的,为英文版,第二本是国内学者翻译的。
二、机器人工具箱的下载和安装
2.1 机器人工具箱下载
可以在官方网站下载安装文件(点这个超链接即可跳转:机器人工具箱下载官网),如下所示:
下载的文件名为 RTB10.4.mltbx,如下所示:
2.2 机器人工具箱安装
在matlab中打开刚刚存放RTB10.4.mltbx文件的目录,然后双击RTB10.4.mltbx文件:
下载完毕之后,输入指令:ver
,便可以查看我们所下载的机器人工具箱版本,同时也进一步确认该工具箱是否安装成功
三、机器人学中的一些数学基础
3.1 三维空间中的位置和姿态
3.1.1 位置描述
我个人简单的认为,所谓的位置描述就是点在某一个坐标系中的坐标。
上图中,空间中任意一点在坐标系
{
A
}
\left\{ A \right\}
{A}中的表示为:
其中,
p
x
、
p
y
、
p
z
p _ { x }、p _ { y }、p _ { z }
px、py、pz分别表示该点在坐标系
{
A
}
\left\{ A \right\}
{A}中的三个坐标。MATLAB中,利用plot3( )
函数可以绘制三维空间中的一个点。例如绘制空间中点(1,2,3):plot3(1,2,3,'*');
3.1.2 姿态描述
我个人认为,所谓的姿态描述就是表示空间中某一个物体的方位。
如上图所示,空间中存在一个刚体,与该刚体固连的坐标系
{
B
}
\left\{ B \right\}
{B}。该刚体相对于坐标系
{
A
}
\left\{ A \right\}
{A}的姿态用姿态变换矩阵(也叫旋转矩阵)
B
A
R
_{B}^{A}\mathbf{\mathit{R}}
BAR:
式中,
x
A
{\mathbf{\mathit{x}}}_{A}
xA、
y
A
{\mathbf{\mathit{y}}}_{A}
yA、
z
A
{\mathbf{\mathit{z}}}_{A}
zA分别表示坐标系
{
A
}
\left\{ A \right\}
{A}三个坐标轴在某一个坐标系下的表示;
x
B
{\mathbf{\mathit{x}}}_{B}
xB、
y
B
{\mathbf{\mathit{y}}}_{B}
yB、
z
B
{\mathbf{\mathit{z}}}_{B}
zB分别表示坐标系
{
B
}
\left\{ B \right\}
{B}三个坐标轴在某一个坐标系下的表示;
A
x
B
^ { A }x_{ B }
AxB、
A
y
B
^ { A } y _ { B }
AyB、
A
z
B
^ { A } z _ { B }
AzB表示坐标系
{
B
}
\left\{ B \right\}
{B}三个坐标轴在坐标系
{
A
}
\left\{ A \right\}
{A}上的表达。
当分别绕坐标轴
x
、
y
、
z
x、y、z
x、y、z旋转角度
θ
\theta
θ时,姿态变换矩阵
R
R
R可以分别表示为:
机器人工具箱中提供rotx( )
、roty( )
、rotz( )
函数来计算绕单个坐标轴旋转的姿态矩阵(注意:这些个函数默认角度制,但好像有的版本时默认弧度制度,注意辨别一下):
使用trplot( )
函数可以图形化显示相应的坐标系,例如显示一个绕基坐标系的
x
x
x轴旋转60°的坐标系,如下图所示:
使用tranimate( )
函数可以显示坐标系旋转的动画,如下图所示:
3.1.3 函数总结
(1)绕单个坐标轴旋转的旋转矩阵:rotx( )、roty( )、rotz( )函数
● rotx( ):R=rotx(
θ
\theta
θ)表示围绕
x
x
x轴旋转角度
θ
\theta
θ所得到的旋转矩阵,函数返回一个3x3的矩阵;
● roty( ):R=roty(
θ
\theta
θ)表示围绕
y
y
y轴旋转角度
θ
\theta
θ所得到的旋转矩阵,函数返回一个3x3的矩阵;
● rotz( ):R=rotz(
θ
\theta
θ)表示围绕
z
z
z轴旋转角度
θ
\theta
θ所得到的旋转矩阵,函数返回一个3x3的矩阵;
(2)绘制坐标系:trplot( )函数
trplot( )函数的语法:trplot(R, options)
● trplot®:绘制由旋转矩阵
R
R
R得到的坐标系;
● trplot(T):绘制由齐次变换矩阵
T
T
T表示的坐标系;
trplot( )函数的options项有其他的用法
(3)动画展示函数:tranimate( )函数
● tranimate(x1, x2, options):展示3D坐标系从姿态x1变换到姿态x2的动画效果其中,姿态 x1和 x2有三种表示方法:一个4X4 的齐次矩阵,或一个3x3的旋转矩阵,或一个四元数;
● tranimate(x,options):展示了坐标系由上一个姿态变换到姿态x的动画效果。同样地,姿势x也有三种表示方法:一个4X4 的齐次矩阵,或一个 3x3 的旋转矩阵,或一个四元数;
● tranimate(xseq,options):展示了移动一段轨迹的动画效果。xseq可以是一组4x4xN的齐次矩阵,或一组 3x3xN 的旋转矩阵,或是一组四元数向量(Nx1)。
tranimate( )函数中options的其他用法:
3.2 坐标变换
同一个物体可以在不同的坐标系下进行描述,这之间就涉及到坐标变换
3.2.1 平移坐标变换
如上图所示,坐标系
{
A
}
\left\{ A \right\}
{A}没有经过旋转,直接平移得到坐标系
{
B
}
\left\{ B \right\}
{B}。
P
P
P是坐标系
{
B
}
\left\{ B \right\}
{B}中的一点,用矢量
B
P
^ { B } P
BP表示它在坐标系
{
B
}
\left\{ B \right\}
{B}中的位置,用矢量
A
P
^ { A } P
AP表示它在坐标系
{
A
}
\left\{ A \right\}
{A}中的位置,则有:
式中,
A
P
B
O
R
G
^ { A } P _ { B O R G }
APBORG是坐标系
{
A
}
\left\{ A \right\}
{A}平移的矢量。
用4x4的齐次矩阵表示由坐标系
{
A
}
\left\{ A \right\}
{A}到坐标系
{
B
}
\left\{ B \right\}
{B}的平移变换矩阵:
其中,
B
x
B_{x}
Bx、
B
y
B_{y}
By、
B
z
B_{z}
Bz分别表示矢量
A
P
B
O
R
G
^ { A } P _ { B O R G }
APBORG的三个分量。
机器人工具箱中用transl( )
函数来计算平移变换矩阵,例如:坐标系
{
A
}
\left\{ A \right\}
{A}的坐标(这里的坐标指代位置和姿态)表示为:
坐标系
{
A
}
\left\{ A \right\}
{A}沿着
x
x
x轴移动10,沿着
y
y
y轴移动5,沿着
z
z
z轴移动1得到坐标系
{
B
}
\left\{ B \right\}
{B},可以用transl(10, 5, 1)来得到平移变换矩阵。
3.2.2 旋转坐标变换
如上图所示,坐标系
{
A
}
\left\{ A \right\}
{A}没有经过平移,直接旋转(旋转矩阵为
B
A
R
_{B}^{A}\mathbf{\mathit{R}}
BAR)得到坐标系
{
B
}
\left\{ B \right\}
{B}。同一个点
P
P
P在坐标系
{
A
}
\left\{ A \right\}
{A}和坐标系
{
B
}
\left\{ B \right\}
{B}中的表达分别为
A
P
^ { A } P
AP和
B
P
^ { B } P
BP,两者的转换关系为:
机器人工具箱中用trotx( )
、troty( )
和trotz( )
函数分别表示绕
x
x
x轴、
y
y
y轴和
z
z
z轴旋转一定角度的4x4的齐次变换矩阵:
3.2.3 齐次坐标变换
如上图所示,坐标系
{
A
}
\left\{ A \right\}
{A}经过平移(平移矢量为
A
P
B
O
R
G
^ { A } P _ { B O R G }
APBORG)和旋转(旋转矩阵为
B
A
R
_{B}^{A}\mathbf{\mathit{R}}
BAR)得到坐标系
{
B
}
\left\{ B \right\}
{B},则有:
将上式写成齐次坐标变换的形式:
例如,坐标系
{
A
}
\left\{ A \right\}
{A}先绕
y
y
y轴旋转120°,然后再沿着
x
x
x轴移动4,沿着
y
y
y轴移动5,沿着
z
z
z轴移动6得到坐标系
{
B
}
\left\{ B \right\}
{B}:
坐标系
{
B
}
\left\{ B \right\}
{B}中的矢量
B
P
^ { B} P
BP在坐标系
{
A
}
\left\{ A \right\}
{A}中进行描述
A
P
^ { A } P
AP:
已知
A
P
^ { A } P
AP求
B
P
^ { B } P
BP:
在三维坐标中画出经过齐次变换的两个坐标系:
transl( )
函数可以获取齐次变换矩阵
T
T
T中的平移矢量,t2r( )
函数可以获取齐次变换矩阵
T
T
T中的旋转矩阵,r2t( )
函数可以根据旋转矩阵
R
R
R得到齐次变换矩阵
T
T
T(只有旋转,没有移动):
3.2.4 函数总结
(1)平移坐标变换:transl( )函数
● 使用transl( )函数创建齐次的平移变换矩阵
1)T = transl(x,y,z):表示能够获取一个分别沿着x轴、y轴和z轴平移一段距离得到的4X4齐次变换矩阵;
2)T= transl§:表示由经过矩阵(或向量)
p
=
[
x
,
y
,
z
]
p = \left[ x , y , z \right]
p=[x,y,z]的平移得到的齐次变换矩阵如果
p
p
p为(Mx3)的矩 阵,则
T
T
T为一组齐次变换矩阵(4x4xM),其中
T
(
:
,
:
,
i
)
T ( : , : , i )
T(:,:,i)对应于
p
p
p的第
i
i
i行。
● 使用transl( )函数提取齐次矩阵
T
T
T中的平移变换分量。
(2)旋转坐标变换:trotx( )函数、troty( )函数和trotz( )函数
● T=trotx(
θ
\theta
θ):表示围绕
x
x
x轴旋转
θ
\theta
θ角度得到的齐次变换矩阵(4x4);
● T=troty(
θ
\theta
θ):表示围绕
y
y
y轴旋转
θ
\theta
θ角度得到的齐次变换矩阵(4x4);
● T=trotz(
θ
\theta
θ):表示围绕
z
z
z轴旋转
θ
\theta
θ角度得到的齐次变换矩阵(4x4);
(3)t2r( )与r2t( )函数
● R=t2r(T):用来获取齐次变换矩阵
T
T
T中的旋转矩阵分量;
● T=r2t(R ):用来获取一个与旋转矩阵
R
R
R等价的具有零平移分量的齐次变换矩阵。