- 前言
- 关节与连杆
- 编号
- 连杆参数
- 连杆的描述
- 连杆连接的描述
- 关节变量
- 连杆坐标系
- 中间连杆坐标系建立
- 首尾连杆坐标系建立
- 首坐标系
- 尾坐标系
- 连杆参数与连杆坐标系
- 连杆变换
- MDH法使用步骤
- 后记
本篇学习机械臂的正运动学,MDH法。
关节与连杆关节joint,连杆link,是机械臂的基本组成结构。
关节包括转动关节和移动关节,一般仅有一个自由度。
一个关节把相邻两连杆连接,n个关节把n+1个连杆连接起来,具有n个自由度。
编号把固定基座作为第0个连杆,机械臂末端的连杆作为第n个连杆。
连杆参数 连杆的描述两个相邻关节轴之间的公垂线的长度,称为连杆的长度。
两个相邻关节轴之间形成的角度,称为连杆的转角。 上图中,连杆
i-1
的长度是其近端关节轴i-1
与远端关节轴i
之间的公垂线长度
a
i
−
1
a_{i-1}
ai−1
连杆i-1
的转角是其近端关节轴i-1
与远端关节轴i
形成的角度
α
i
−
1
\alpha_{i-1}
αi−1,至于角度的正负号,可以根据后面建立坐标系时再确定。
两个相邻连杆之间的距离,称为连杆偏距。
两个相邻连杆绕公共关节轴旋转的夹角,称为关节角。
上图中,关节
i
是连杆i-1
和连杆i
的公共关节。
由于实际的连杆是弯曲的,可以将公垂线段
a
i
−
1
a_{i-1}
ai−1和
a
i
a_i
ai 看作代替曲连杆的直连杆i-1
,i
。
直连杆i-1
,i
之间的距离是关节i
的连杆偏距
d
i
d_i
di
直连杆i-1
沿关节轴i
旋转到直连杆i
的角度是关节角
θ
i
\theta_i
θi
一个连杆可以使用上面的连杆长度、连杆转角、连杆偏距、关节角四个参数确定。
对于转动关节,关节角可变,另三个参数不变。
对于移动关节,连杆偏距可变,另三个参数不变。
可变的参数称为关节变量。
连杆坐标系连杆坐标系用于描述相邻连杆之间的相对位置关系。
连杆坐标系编号与连杆编号相同,称为 { i } \{i\} {i}。
中间连杆坐标系建立为连杆i
建立坐标系:
以关节轴i
作为Z轴
,以连杆i
与Z轴
的交点作为原点
,以连杆i
作为X轴
指向关节轴i+1
,以右手定则确定Y轴
。
例外:如果连杆i
的长度
a
i
=
0
a_i=0
ai=0(此时连杆i
,i+1
的Z轴
相交),以交点作为原点
,以两个Z轴所在平面
的垂线作为X轴
,方向可以有两种选择,而
α
i
\alpha_i
αi的符号就由X轴
方向决定。
每个坐标轴的建立都要满足右手定则。 上图中,可以按这个顺序来建立坐标系:
首先找到所有的关节轴i-1,i
然后确定坐标系
{
i
−
1
}
\{i-1\}
{i−1},以关节轴作为
Z
^
i
−
1
\hat Z_{i-1}
Z^i−1,直连杆i-1
作为
X
^
i
−
1
\hat X_{i-1}
X^i−1,再右手定则确定
Y
^
i
−
1
\hat Y_{i-1}
Y^i−1。
然后确定坐标系 { i } \{i\} {i}。
首尾连杆坐标系建立对于首尾连杆0,n
,有特殊的建系方法。
坐标系 { 0 } \{0\} {0}在基座上,一般作为参考系。
第一个关节变量为0时,规定坐标系 { 0 } \{0\} {0}于 { 1 } \{1\} {1}重合。
当第一个关节为转动关节, d 1 = 0 d_1=0 d1=0;第一个关节为移动关节, θ 1 = 0 \theta_1=0 θ1=0
尾坐标系坐标系
{
n
}
\{n\}
{n}的原点和x轴
方向可以任意选取,但要尽量使得连杆参数为0。
按照上面的建系方法,可以把连杆参数重新定义:
- a i a_i ai连杆长度:沿 X ^ i \hat X_i X^i,从 Z ^ i \hat Z_i Z^i移动到 Z ^ i + 1 \hat Z_{i+1} Z^i+1的距离
- α i \alpha_i αi连杆扭转角:绕 X ^ i \hat X_i X^i轴,把 Z ^ i \hat Z_i Z^i旋转到 Z ^ i + 1 \hat Z_{i+1} Z^i+1的角度
- d i d_i di连杆偏距:沿 Z ^ i \hat Z_i Z^i,从 X ^ i − 1 \hat X_{i-1} X^i−1移动到 X ^ i 1 \hat X_{i1} X^i1的距离
- θ i \theta_i θi关节角:绕 Z ^ i \hat Z_i Z^i轴,把 X ^ i − 1 \hat X_{i-1} X^i−1旋转到 X ^ i \hat X_{i} X^i的角度
设定 a i > 0 a_i>0 ai>0,其它参数可正可负。
上面建立连杆坐标系和连杆参数的方式称为MDH法(Modified Denavit–Hartenberg)。
DH法建立的坐标系并不是唯一的。
连杆变换连杆参数可用于相邻杆之间的相对位姿计算。 上图中,考虑坐标系
{
i
−
1
}
,
{
i
}
\{i-1\},\{i\}
{i−1},{i}之间的变换
i
−
1
i
T
^i_{i-1}T
i−1iT,建立中间坐标系
{
P
}
,
{
Q
}
,
{
R
}
\{P\},\{Q\},\{R\}
{P},{Q},{R},则有:
i
i
−
1
T
=
R
i
−
1
T
Q
R
T
P
Q
T
i
P
T
^{i-1}_iT = \ ^{i-1}_RT \ ^R_{Q}T \ ^Q_PT \ ^P_{i}T
ii−1T= Ri−1T QRT PQT iPT 上面的变换,可以看作是把
X
^
i
\hat X_i
X^i变换为
X
^
i
−
1
\hat X_{i-1}
X^i−1,则有:
i
i
−
1
T
=
R
X
(
α
i
−
1
)
D
X
(
a
i
−
1
)
R
Z
(
θ
i
)
D
Z
(
d
i
)
^{i-1}_iT = R_X(\alpha_{i-1})D_X(a_{i-1})R_Z(\theta_i)D_Z(d_i)
ii−1T=RX(αi−1)DX(ai−1)RZ(θi)DZ(di) 或者将每个中间坐标系的变换都写出来:
i
P
T
=
[
1
0
0
0
0
1
0
0
0
0
1
d
i
0
0
0
1
]
P
Q
T
=
[
cos
θ
1
−
sin
θ
1
0
0
sin
θ
1
cos
θ
1
0
0
0
0
1
0
0
0
0
1
]
Q
R
T
=
[
1
0
0
0
0
1
0
a
i
−
1
0
0
1
0
0
0
0
1
]
R
i
−
1
T
=
[
1
0
0
0
0
cos
α
i
−
1
−
sin
α
i
−
1
0
0
sin
α
i
−
1
cos
α
i
−
1
0
0
0
0
1
]
^P_iT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^Q_PT = \begin{bmatrix} \cos \theta_1 & -\sin \theta_1 & 0 & 0 \\ \sin \theta_1 & \cos \theta_1 & 0 & 0 \\ 0 & 0 & 1 &0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^R_QT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & a_{i-1} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^{i-1}_RT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos \alpha_{i-1} & -\sin \alpha_{i-1} & 0 \\ 0 & \sin \alpha_{i-1} & \cos \alpha_{i-1} & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\
iPT=⎣⎢⎢⎡10000100001000di1⎦⎥⎥⎤ PQT=⎣⎢⎢⎡cosθ1sinθ100−sinθ1cosθ10000100001⎦⎥⎥⎤ QRT=⎣⎢⎢⎡1000010000100ai−101⎦⎥⎥⎤ Ri−1T=⎣⎢⎢⎡10000cosαi−1sinαi−100−sinαi−1cosαi−100001⎦⎥⎥⎤ 得到
i
i
−
1
T
^{i-1}_iT
ii−1T的一般形式:
- 找到所有关节轴;
- 按顺序依次建立中间连杆的坐标系;
- 确定首尾坐标系;
- 写出DH参数;
- 计算正运动学矩阵。
本篇是机器人学中的正运动学,采用的是MDH法。
后续会有Matlab示例编程。