standard_DH
根据DH表示法确定一个一般步骤为每个关节指定参考坐标系,然后确定如何实现任意两个相邻坐标系之间的变换,最后写出机器人的总变换矩阵。如图所示表示了三个顺序关节和两个连杆,每个关节都是可以转动和平移的。第一个关节指定为关节i-1,第二个关节指定为关节i,第三个关节指定为关节i+1。在这些关节前后可能还有其他关节,连杆也是如此表示,连杆i位于关节i与关节i+1之间。
1、standard_DH建立每个关节参考坐标系步骤:
(1)所有关节,无一例外用z轴表示。如果是关节是旋转的,z轴位于按右手定则选装的方向,如果关节是滑动的,z轴为沿实现运动的方向。在每一种情况下,关节i处的z轴(以及该关节的本地参考坐标系)的下标为i-1。
(2) 通常关节不一定平行或相交。因此,通常z轴是斜线,但是总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义x轴。所以如果
a
i
a_i
ai表示
z
i
−
1
z_{i-1}
zi−1与
z
i
z_i
zi之间的公垂线,则
x
i
x_i
xi的方向沿
a
i
a_i
ai。
(3)如果两个关节的z轴平行,选取与前一关节的公垂线共线的一条公垂线,可简化模型;如果两个相邻关节的z轴是相交的,那么它们之间没有公垂线,可选取两条z轴的叉积2方向作为x轴,可简化模型。
θ
\theta
θ角表示绕z轴旋转角,d表示在z轴上两条相邻的公垂线之间的距离,a表示每一条公垂线的长度,角
α
\alpha
α表示两个相邻的z轴之间的角度。

2、standard_DH建模步骤:
(1)绕
z
i
−
1
z_{i-1}
zi−1轴旋转
θ
i
\theta_i
θi,它使得
x
i
−
1
x_{i-1}
xi−1和
x
i
x_{i}
xi互相平行;
(2)沿
z
i
−
1
z_{i-1}
zi−1轴平移
d
i
d_{i}
di距离,使得
x
i
−
1
x_{i-1}
xi−1和
x
i
x_{i}
xi共线;
(3)沿
x
i
x_{i}
xi轴平移
a
i
a_{i}
ai距离,使得
x
i
−
1
x_{i-1}
xi−1和
x
i
x_{i}
xi的原点重合;
(4)将
z
i
−
1
z_{i-1}
zi−1轴绕
x
i
x_{i}
xi旋转
a
i
a_{i}
ai,使得
z
i
−
1
z_{i-1}
zi−1轴与
z
i
z_{i}
zi轴对准。
通过右乘四个运动的四个矩阵就可以得到变换矩阵
i
−
1
T
i
^{i-1}T_i
i−1Ti:
i
−
1
T
i
=
R
o
t
(
z
i
−
1
,
θ
i
)
×
T
r
a
n
s
(
(
z
i
−
1
,
d
i
)
×
T
r
a
n
s
(
(
x
i
,
a
i
)
×
R
o
t
(
x
i
,
α
i
)
\begin{aligned}^{i-1}T_i=Rot(z_{i-1},\theta_i)\times Trans((z_{i-1},d_i)\times Trans((x_{i},a_i)\times Rot(x_{i},\alpha_i)\end{aligned}
i−1Ti=Rot(zi−1,θi)×Trans((zi−1,di)×Trans((xi,ai)×Rot(xi,αi)
i − 1 T i = [ c θ i − s θ i 0 0 s θ i c θ i 0 0 0 0 1 0 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 d i 0 0 0 1 ] [ 1 0 0 a i 0 1 0 0 0 0 1 0 0 0 0 1 ] [ 1 0 0 0 0 c α i − s α i 0 0 s α i c α i 0 0 0 0 1 ] ^{i-1}T_i=\begin{bmatrix} c\theta_i&-s\theta_i&0&0\\s\theta_i&c\theta_i&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} \begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&d_i\\0&0&0&1\end{bmatrix} \begin{bmatrix} 1&0&0&a_i\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} \begin{bmatrix} 1&0&0&0\\0&c\alpha_i&-s\alpha_i&0\\0&s\alpha_i&c\alpha_i&0\\0&0&0&1\end{bmatrix} i−1Ti=⎣⎢⎢⎡cθisθi00−sθicθi0000100001⎦⎥⎥⎤⎣⎢⎢⎡10000100001000di1⎦⎥⎥⎤⎣⎢⎢⎡100001000010ai001⎦⎥⎥⎤⎣⎢⎢⎡10000cαisαi00−sαicαi00001⎦⎥⎥⎤
i − 1 T i = [ c θ i − s θ i c α i s θ i s α i a i c θ i s θ i c θ i c α i − c θ i s α i a i s θ i 0 s α i c α i d i 0 0 0 1 ] ^{i-1}T_i=\begin{bmatrix} c\theta_i&-s\theta_i c\alpha_i&s\theta_i s\alpha_i&a_i c\theta_i\\s\theta_i&c\theta_i c\alpha_i&-c\theta_i s\alpha_i&a_i s\theta_i\\0&s\alpha_i&c\alpha_i&d_i\\0&0&0&1\end{bmatrix} i−1Ti=⎣⎢⎢⎡cθisθi00−sθicαicθicαisαi0sθisαi−cθisαicαi0aicθiaisθidi1⎦⎥⎥⎤
modified_DH
1、modified_DH建立每个关节参考坐标系步骤:
(1)找出关节轴i和i+1之间的公垂线或关节轴i和i+1的交点,以关节轴i和i+1的交点或公垂线与关节轴i的交点作为连杆坐标系{i}的原点;
(2)规定
z
i
z_i
zi轴沿关节轴i的指向;
(3)规定
x
i
x_i
xi轴沿公垂线的指向,如果关节轴i和i+1相交,则规定
x
i
x_i
xi垂直于关节轴i和i+1所在平面。
(4)按照右手定则确定
y
i
y_i
yi轴

2、modified_DH建模步骤:
(1)
a
i
a_i
ai=沿
x
i
x_i
xi轴,从
z
i
z_i
zi移动到
z
i
+
1
z_{i+1}
zi+1的距离;
(2)
α
i
\alpha_i
αi=绕
x
i
x_i
xi轴,从
z
i
z_i
zi旋转到
z
i
+
1
z_{i+1}
zi+1的角度;
(3)
d
i
d_i
di=沿
z
i
z_i
zi轴,从
x
i
−
1
x_{i-1}
xi−1移动到
x
i
x_{i}
xi的距离;
(4)
θ
i
\theta_i
θi=沿
z
i
z_i
zi轴,从
x
i
−
1
x_{i-1}
xi−1旋转到
x
i
x_{i}
xi的角度;
变换矩阵可以写成:
i
−
1
T
i
=
R
X
(
α
i
−
1
)
×
D
X
(
a
i
−
1
)
×
R
Z
(
θ
i
)
×
D
Z
(
d
i
)
\begin{aligned}^{i-1}T_i=R_X(\alpha_{i-1})\times D_X(a_{i-1})\times R_Z(\theta_{i})\times D_Z(d_{i})\end{aligned}
i−1Ti=RX(αi−1)×DX(ai−1)×RZ(θi)×DZ(di)
i − 1 T i = [ c θ i − s θ i 0 a i − 1 s θ i c α i − 1 c θ i c α i − 1 − s α i − 1 − s α i − 1 d i s θ i s α i − 1 c θ i s α i − 1 c α i − 1 c α i − 1 d i 0 0 0 1 ] ^{i-1}T_i=\begin{bmatrix} c\theta_i&-s\theta_i &0&a_{i-1} \\s\theta_i c\alpha_{i-1}&c\theta_i c\alpha_{i-1}&-s\alpha_{i-1}&-s\alpha_{i-1}d_i \\s\theta_i s\alpha_{i-1}&c\theta_i s\alpha_{i-1}&c\alpha_{i-1}&c\alpha_{i-1}d_i\\0&0&0&1\end{bmatrix} i−1Ti=⎣⎢⎢⎡cθisθicαi−1sθisαi−10−sθicθicαi−1cθisαi−100−sαi−1cαi−10ai−1−sαi−1dicαi−1di1⎦⎥⎥⎤
SDH与MDH比较
(1)固连坐标系不同
SDH方法关节i上固连的是i-1坐标系,即坐标系建在连杆的输出端;MDH关节i上固连的是i坐标系,即坐标系建在连杆的输入端。
(2)坐标系变换顺序不同
SDH方法是ZX类变换:先绕着i-1坐标系的的Zi-1轴旋转和平移,再绕着坐标系i的Xi轴进行旋转和平移;MDH方法是XZ类变换:先绕着i坐标系的的Xi轴旋转和平移,再绕着坐标系i的Zi轴进行旋转和平移;