一、关节与连杆
机器人一般由一系列关节和连杆按任意的顺序连接而成,这些关节可能是滑动(线性)的或旋转(转动)的,它们可能处在不同的平面,旋转轴之间可能存在偏差。连杆也可以是任意长度的(包括零),它可能被扭曲或弯曲,也可能位于任意的平面上。所以任何一组关节和连杆都可以构成机器人。我们必须要能对任何机器人进行建模和分析。
所以,我们需要给每个关节指定一个参考坐标系,然后确定从一个关节到下一个关节(一个坐标系到下一个坐标系)进行变换的步骤。如果将从基座到第1关节,再从第1关节到第2关节直至最后一个关节的所有变换结合起来,就得到了机器人的总变换矩阵。
假设机器人由任意多的连杆和关节以任意形式构成,如图所示,有3个顺序的关节和2个连杆,每个关节都可能是旋转的、滑动的或两者都是。指定第1个关节为关节
n
,第2个关节为关节
n+1
,第3个关节为关节
n+2
。连杆
n
位于关节
n
与
n+1
之间,连杆
n+1
位于关节
n+1
与
n+2
之间。
二、D-H参数法中
x,y,z
轴及参数说明
为了用D-H表示法对机器人建模,所要做的第一件事是为每个关节指定一个本地的参考坐标系。因此,对于每个关节,都必须指定一个
z
轴和
x
轴,通常并不需要指定
y
轴,因为
y
轴总是垂直于
x
轴和
z
轴。
-
z
轴:所有关节,无一例外都用
z
轴表示。如果关节是旋转的,那么
z
轴位于按右手规则旋转的方向。如果关节是滑动的,那么
z
轴为沿直线运动的方向。绕关节
n+1
运动的
z
轴是
zn
。对于旋转关节,绕
z
轴的旋转角
θ
是关节变量。对于滑动关节,沿
z
轴的连杆长度
d
是关节变量。
-
x
轴:通常关节不一定平行或相交。因此,
z
轴也许是斜线,但总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义本地参考坐标系的
x
轴。所以如果
an
表示
zn−1
与
zn
之间的公垂线,则定义
xn
的方向为沿
an
的方向。
- 特殊情况:
(1):如果两个关节的
z
轴平行,那么它们之间就有无数条公垂线。这时可挑选与前一关节的公垂线共线的一条公垂线。
(2):如果两个相邻关节的
z
轴是相交的,那么它们之间就没有公垂线(或者公垂线的距离为零)。这时可将垂直于两条轴线构成的平面的直线指定为
x
轴,即其公垂线是垂直于包含了两条
z
轴平面的直线。
-
θ
:表示绕
z
轴的旋转角
-
d
:表示在
z
轴上两条相邻的公垂线之前的距离(关节偏移)
-
a
:表示每一条公垂线的长度(连杆长度)
-
α
:表示两个相邻的
z
轴之间的角度(扭角)
通常只有
θ
和
d
是关节变量。
三、D-H参数法的坐标变换矩阵
现在需要将一个参考坐标系变换到下一个参考坐标系。假设现在位于本地参考坐标系
xn−zn
,则通过以下4步标准运动即可到达下一个本地参考坐标系
xn+1−zn+1
。
(1)绕
zn
轴旋转
θn+1
,使得
xn
和
xn+1
互相平行。因为
an
和
an+1
都是垂直于
zn
轴的,因此绕
zn
轴旋转
θn+1
确实可使
xn
和
xn+1
平行(且共面)。
(2)沿
zn
轴平移
dn+1
距离,使得
xn
和
xn+1
共线。因为
xn
和
xn+1
已经平行且垂直于
zn
,则沿着
zn
移动可使它们相互重叠在一起。
(3)沿已经旋转过的
xn
轴平移
an+1
的距离,使得
xn
和
xn+1
的原点重合。这时两个参考坐标系的原点处在同一位置。
(4)将
z
轴绕
xn+1
轴旋转
αn+1
,使得
zn
轴与
zn+1
轴对准。这时坐标系
n
和
n+1
完全相同。这样就实现了从一个坐标系变换到下一个坐标系。
在坐标系
n+1
和
n+2
之间,严格地按照上述的4个步骤就可以将一个坐标系变换到下一个坐标系。通过重复以上步骤,可以实现一系列相邻坐标系之间的变换。从机器人的参考坐标系开始,我们可以将其转换到机器人的第1个关节,在转换到第2个关节,以此类推,直至转换到末端执行器。
表示前面4个运动的两个依次坐标系之间的变换
nTn+1
(称为
An+1
)是4个运动变换矩阵的乘积。由于所有的变换都是相对于当前的坐标系进行的,因此所有的变换都是右乘的。即
nTn+1=An+1=Rot(z,θn+1)×Trans(0,0,dn+1)×Trans(an+1,0,0)×Rot(x,αn+1)
=⎡⎣⎢⎢⎢cosθn+1sinθn+100−sinθn+1cosθn+10000100001⎤⎦⎥⎥⎥×⎡⎣⎢⎢⎢10000100001000dn+11⎤⎦⎥⎥⎥×⎡⎣⎢⎢⎢100001000010an+1001⎤⎦⎥⎥⎥×⎡⎣⎢⎢⎢10000cosαn+1sinαn+100−sinαn+1cosαn+100001⎤⎦⎥⎥⎥
An+1=⎡⎣⎢⎢⎢cosθn+1sinθn+100−sinθn+1cosαn+1cosθn+1cosαn+1sinαn+10sinθn+1sinαn+1−cosθn+1sinαn+1cosαn+10an+1cosθn+1an+1sinθn+1dn+11⎤⎦⎥⎥⎥
在机器人基座上,可以从第1个关节开始变换到第2个关节,然后到第3个关节等等,直到机器人手和最终的末端执行器。若把每个变换定义为
An+1
,则可以得到许多表示变换的
A
矩阵。在机器人的基座与手之间的总变换则为:
RTH=RT11T22T3...n−1Tn=A1A2A3...An
其中
n
是关节数,有几个自由度就有几个
A
矩阵。通常可以制作一张关节和连杆参数的表格,其中每个连杆和关节的参数值可从机器人的机构示意图上确定。
连杆 |
θ
|
d
|
a
|
α
|
0-1 |
|
|
|
|
1-2 |
|
|
|
|
四、正运动学例题
例1:如图所示的简单2轴平面机器人,根据D-H表示法,建立必要的坐标系,填写D-H参数表,导出每个机器人的正运动学方程。
解:首先两个关节都在
x−y
平面内旋转,坐标系
xH−zH
表示机器人的末端。先指定关节的
z
轴,将关节1指定为
z0
,关节2指定为
z1
,坐标系0是固定不动的,机器人相对于它而运动。
然后为每一个坐标系指定
x
轴,因为第1个坐标系(坐标系0)是在机器人基座上,在它之前没有关节,因此
x0
的方向是任意的。我们可以指定
x0
的方向与全局坐标系的
x
轴相同。因为
z0
和
z1
是平行的,他们之间的公垂线就在两者之间的方向上,所以
x1
轴如图所示。
下表显示了该机器人的变量表。根据D-H的常规步骤,按照如下从一个坐标系到下一个坐标系所必须的4个变换,可以来确认变量表中的这些值。
连杆 |
θ
|
d
|
a
|
α
|
0-1 |
θ1
|
0 |
a1
|
0 |
1-
H
|
θ2
|
0 |
a2
|
0 |
(1)绕
z0
轴旋转
θ1
,使
x0
和
x1
平行;
(2)由于
x0
和
x1
已经在一个平面内了,不需要在平移
z0
轴,因此沿着
z0
轴的偏移量
d
是0;
(3)沿着已经旋转过的
x0
轴平移距离
a1
;
(4)因为
z0
和
z1
是平行的,不需要在旋转,因此绕
x1
轴的旋转角
α1
是0。
坐标系1到坐标系
H
之间的变换与上面的过程类似。
由于有两个旋转关节,因此存在两个未知的变量,即关节角
θ1
和
θ2
。将D-H参数表中的这些参数代入相应的A矩阵中,可以得到机器人的正运动学方程为:
A1=⎡⎣⎢⎢⎢cosθ1sinθ100−sinθ1cosθ1000010a1cosθ1a1sinθ101⎤⎦⎥⎥⎥, A2=⎡⎣⎢⎢⎢cosθ2sinθ200−sinθ2cosθ2000010a2cosθ2a2sinθ201⎤⎦⎥⎥⎥
0TH=A1×A1=⎡⎣⎢⎢⎢⎢cos(θ1+θ2)sin(θ1+θ2)00−sin(θ1+θ2)cos(θ1+θ2)000010a2cos(θ1+θ2)+a1cosθ1a2sin(θ1+θ2)+a1sinθ101⎤⎦⎥⎥⎥⎥
给定
θ1、θ2、a1
和
a2
,根据正运动学方程就可以求出机器人末端的位置和姿态。
五、逆运动学例题
有了逆运动学解才能确定每个关节的值,从而使机器人到达期望的位姿。
例2:求解例1中的关节角。
解1:设期望的位置和姿态为:
扫描二维码关注公众号,回复:
2254523 查看本文章
0TH=A1×A1=⎡⎣⎢⎢⎢⎢cos(θ1+θ2)sin(θ1+θ2)00−sin(θ1+θ2)cos(θ1+θ2)000010a2cos(θ1+θ2)+a1cosθ1a2sin(θ1+θ2)+a1sinθ101⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢nxnynz0oxoyoz0axayaz0pxpypz1⎤⎦⎥⎥⎥⎥
则可得:
sin(θ1+θ2)=ny
且
cos(θ1+θ2)=nx
,所以:
θ1+θ2=ATAN2(ny,nx)
。
又因为
a2cos(θ1+θ2)+a1cosθ1=px⇒a2nx+a1cosθ1=px
,所以:
cosθ1=px−a2nxa1
。
又因为
a2sin(θ1+θ2)+a1sinθ1=py⇒a2ny+a1sinθ1=py
,所以:
sinθ1=px−a2nxa1
。
所以:
θ1=ATAN2(sinθ1,cosθ1)=ATAN2(px−a2nxa1,px−a2nxa1)
。所以
θ2=θ1+θ2−θ1
。
解2:在等式中通常乘
A−12
,使得
θ1
从
θ2
中解耦。(常用于多自由度的)
A1×A2×A−12=⎡⎣⎢⎢⎢⎢nxnynz0oxoyoz0axayaz0pxpypz1⎤⎦⎥⎥⎥⎥×A−12⇒A1=⎡⎣⎢⎢⎢⎢nxnynz0oxoyoz0axayaz0pxpypz1⎤⎦⎥⎥⎥⎥×A−12
⎡⎣⎢⎢⎢cosθ1sinθ100−sinθ1cosθ1000010a1cosθ1a1sinθ101⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢nxnynz0oxoyoz0axayaz0pxpypz1⎤⎦⎥⎥⎥⎥×⎡⎣⎢⎢⎢cosθ2sinθ200−sinθ2cosθ2000010−a2001⎤⎦⎥⎥⎥
⎡⎣⎢⎢⎢cosθ1sinθ100−sinθ1cosθ1000010a1cosθ1a1sinθ101⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢cosθ2nx−sinθ2oxcosθ2ny−sinθ2oycosθ2nz−sinθ2oz0sinθ2nx+cosθ2oxsinθ2ny+cosθ2oysinθ2nz+cosθ2oz0axayaz0px−a2nxpy−a2nypz−a2nz1⎤⎦⎥⎥⎥⎥
对应位置矩阵元素相等即可求得
θ1
和
θ2
,其结果和解1一样。
参考文献:SaeedB.Niku 等,机器人学导论——分析、系统及应用(第二版),电子工业出版社,2013.2.