机器人学:DH参数总结(传统DH方法和改进DH方法)

机器人学:DH参数总结(传统DH方法和改进DH方法)

1. 传统DH参数方法

1.1 确定坐标系的方法

定义:杆

i

i

i的近端是关节

i

i

i,远端是关节

i

+

1

i+1

i+1.

【下面的规则参考上面的图看得更清楚】

对于

n

n

n自由度机器人,可用以下步骤建立与各杆件

i

(

i

=

0

,

1

,

,

n

)

i(i=0,1,…,n)

i(i=0,1,…,n)固连的坐标系

O

i

X

i

Y

i

Z

i

O_iX_iY_iZ_i

Oi​Xi​Yi​Zi​,并简称其为系

i

i

i(注意:其中每一步都从

i

=

0

i=0

i=0到

i

=

n

i=n

i=n进行完后再执行下一步骤)。

第1步:确定各坐标系的

Z

Z

Z轴。基本原则是:选取

Z

i

Z_i

Zi​轴沿关节

i

+

1

i+1

i+1的轴向(指向可任选,但通常都将各平行的

Z

Z

Z轴均取为相同的指向)。这里需要说明的是:

当关节

i

+

1

i+1

i+1是移动关节(即

σ

i

+

1

=

1

σ_{i+1}=1

σi+1​=1)时,其轴线指向已知但位置不确定,这时选取

Z

i

Z_i

Zi​轴与

Z

i

+

1

Z_{i+1}

Zi+1​轴相交(若还有

σ

i

+

2

=

1

σ_{i+2}=1

σi+2​=1,则取

Z

i

Z_i

Zi​轴和

Z

i

+

1

Z_{i+1}

Zi+1​轴都与

Z

i

+

2

Z_{i+2}

Zi+2​轴相交)

机器人杆

n

n

n的远端没有关节

n

+

1

n+1

n+1,这时可选取

Z

n

Z_n

Zn​轴与

Z

n

1

Z_{n-1}

Zn−1​轴重合

第2步:确定各坐标系的原点

O

O

O。基本原则是:选取原点

O

i

O_i

Oi​在过

Z

i

1

Z_{i-1}

Zi−1​轴和

Z

i

Z_i

Zi​轴的公法线上(即

O

i

O_i

Oi​为此公法线与

Z

i

Z_i

Zi​轴的交点)。这里要说明的是:

Z

i

1

Z_{i-1}

Zi−1​轴与

Z

i

Z_i

Zi​轴平行时,经过两轴的公法线不唯一,确定

O

i

O_i

Oi​的方法是:若

Z

i

1

Z_{i-1}

Zi−1​轴与

Z

i

Z_i

Zi​轴重合,取

O

i

=

O

i

1

O_i=O_{i-1}

Oi​=Oi−1​·若

Z

i

1

Z_{i-1}

Zi−1​轴与

Z

i

Z_i

Zi​轴平行且不重合,过

O

i

1

O_{i-1}

Oi−1​点作

Z

i

1

Z_{i-1}

Zi−1​轴和

Z

i

Z_i

Zi​轴的公法线,取此公法线与

Z

i

Z_i

Zi​轴的交点为

O

i

O_i

Oi​.

由于没有

Z

1

Z_{-1}

Z−1​轴,故无法按上述基本原则选取

O

0

O_0

O0​。这时确定

O

0

O_0

O0​的方法是:若

Z

0

Z_0

Z0​与

Z

1

Z_1

Z1​相交时,取

O

0

=

O

1

O_0=O_1

O0​=O1​;若

Z

0

Z_0

Z0​与

Z

1

Z_1

Z1​不相交时,取

O

0

O_0

O0​在

Z

0

Z_0

Z0​与

Z

1

Z_1

Z1​的公法线上。

第3步:确定各坐标系的

X

X

X轴。基本原则是:选取

X

i

X_i

Xi​轴沿过

Z

i

1

Z_{i-1}

Zi−1​轴和

Z

i

Z_i

Zi​轴的公法线,方向从

Z

i

1

Z_{i-1}

Zi−1​指向

Z

i

Z_i

Zi​.这里要说明的是:

Z

i

1

Z_{i-1}

Zi−1​轴与

Z

i

Z_i

Zi​轴重合时(这时

O

i

O_i

Oi​=

O

i

1

O_{i-1}

Oi−1​),选取

X

i

X_i

Xi​轴满足在初始位置时

X

i

X_i

Xi​轴与

X

i

1

X_{i-1}

Xi−1​轴重合

Z

i

1

Z_{i-1}

Zi−1​轴与

Z

i

Z_i

Zi​轴相交且不重合时,选择

X

i

=

±

(

Z

i

1

×

Z

i

)

X_i=±(Z_{i-1}×Z_{i})

Xi​=±(Zi−1​×Zi​),通常使所有平行的

X

X

X轴均有相同的指向。

i

=

0

i=0

i=0时,由上所述知,这时

O

0

=

O

1

O_0=O_1

O0​=O1​,或

O

0

O_0

O0​在

Z

0

Z_0

Z0​轴和

Z

1

Z_1

Z1​轴的公法线上,选取在初始位置时

X

0

X_0

X0​轴与

X

1

X_1

X1​轴重合。

第4步:确定各坐标系的

Y

Y

Y轴。基本原则是使

Y

i

=

Z

i

×

X

i

Y_i=Z_i×X_i

Yi​=Zi​×Xi​,即构成右手坐标系。

1.2 DH参数的定义

当用 DH 方法建立起各杆件坐标系后, 系

i

1

i-1

i−1 和系

i

i

i 间的相对位置和指向可用以下4 个参数表示:

(1)杆件长度

a

i

a_i

ai​ , 定义为从

Z

i

1

Z_{i-1}

Zi−1​ 轴到

Z

i

Z_i

Zi​ 轴的距离, 沿

X

i

X_i

Xi​轴的指向为正.

(2)杆件扭角

α

i

\alpha_i

αi​, 定义为从

Z

i

1

Z_{i-1}

Zi−1​轴到

Z

i

Z_{i}

Zi​轴的转角, 绕

X

i

X_{i}

Xi​轴正向转动为正, 且规定

α

i

(

π

,

π

]

\alpha_{i}\in(-\pi, \pi]

αi​∈(−π,π] .

(3)关节距离

d

i

d_i

di​ , 定义为从

X

i

1

X_{i-1}

Xi−1​ 轴到

X

i

X_i

Xi​ 轴的距离, 沿

Z

i

1

Z_{i-1}

Zi−1​ 轴的指向为正。

(4)关节转角

θ

i

\theta_i

θi​,定义为从

X

i

1

X_{i-1}

Xi−1​ 轴到

X

i

X_i

Xi​ 轴的转角, 沿

Z

i

1

Z_{i-1}

Zi−1​ 轴的指向为正,且规定

θ

i

(

π

,

π

]

\theta_i\in(-\pi, \pi]

θi​∈(−π,π] .

a

i

a_i

ai​和

α

i

\alpha_i

αi​由杆

i

i

i的结构确定,是常数;而

d

i

d_i

di​和

θ

i

\theta_i

θi​与关节

i

i

i的类型有关,其中一个是常数,另一个是变量.当关节

i

i

i是转动关节(即

σ

i

=

0

σ_i=0

σi​=0)时,

d

i

d_i

di​是常数,

θ

i

\theta_i

θi​是变量;当关节

i

i

i是移动关节(即

σ

i

=

1

σ_i=1

σi​=1)时,

d

i

d_i

di​是变量,

θ

i

\theta_i

θi​是常数.通常称

q

i

=

(

1

σ

i

)

θ

i

+

σ

i

d

i

q_i=(1-σ_i)\theta_{i}+σ_id_i

qi​=(1−σi​)θi​+σi​di​为关节变量,

q

i

q_i

qi​刻画了系

i

i

i相对系

i

1

i-1

i−1的运动

利用D-H参数的概念可看出,在用D-H方法建立杆坐标系时,如果某一步不能按基本原则唯一确定时,总是在设置时力图使更多的D-H参数为零(在后面的章节中可看出,这样做可以极大地简化机器人运动学与动力学模型及计算的复杂性).可不失一般性地认为一些D-H参数为零。可不失一般性地认为修改的D-H参数满足

a

1

=

σ

1

θ

1

(

1

σ

1

)

d

1

=

0

a

n

=

α

n

=

σ

n

θ

n

(

1

σ

n

)

d

n

=

0

a_1=\sigma_1\theta_1十(1-\sigma_1)d_1=0\\\ a_n=\alpha_n=\sigma_n\theta_n十(1-\sigma_n)d_n=0

a1​=σ1​θ1​十(1−σ1​)d1​=0 an​=αn​=σn​θn​十(1−σn​)dn​=0

有时为应用方便,也可不像前面所述那样设置系,而是将系

n

n

n设置在机器人末端夹持器的端点,或在其所夹持工具的端点

1.3 DH参数齐次变换矩阵

最终效果:

第1步:沿

Z

i

1

Z_{i-1}

Zi−1​轴移动

d

i

d_i

di​

第2步:绕

Z

i

1

Z_{i-1}

Zi−1​轴转动

θ

i

\theta_i

θi​

第3步:沿

X

i

X_i

Xi​轴移动

a

i

a_i

ai​

第4步:绕

X

i

X_i

Xi​轴转动

α

i

\alpha_i

αi​

列写DH参数表时描述其连接的

i

1

i-1

i−1坐标系和

i

i

i坐标系之间的关系。(i从1开始)

i

1

A

i

=

Trans

z

(

d

i

)

Rot

z

(

θ

i

)

Trans

x

(

a

i

)

Rot

x

(

α

i

)

=

[

cos

(

θ

i

)

sin

(

θ

i

)

cos

(

α

i

)

sin

(

θ

i

)

sin

(

α

i

)

a

i

cos

(

θ

i

)

sin

(

θ

i

)

cos

(

θ

i

)

cos

(

α

i

)

cos

(

θ

i

)

sin

(

α

i

)

a

i

sin

(

θ

i

)

0

sin

(

α

i

)

cos

(

α

i

)

d

i

0

0

0

1

]

\begin{aligned} { }^{{i}-1} {~A}_{{i}} & =\operatorname{Trans}_{{z}}\left({d}_{{i}}\right) \operatorname{Rot}_{{z}}\left(\theta_{{i}}\right) \operatorname{Trans}_{{x}}\left({a}_{{i}}\right) \operatorname{Rot}_{{x}}\left(\alpha_{{i}}\right) \\ & =\left[\begin{array}{cccc} \cos (\theta_i) & -\sin (\theta_i) \cos (\alpha_i) & \sin (\theta_i) \sin (\alpha_i) & a_i\cos (\theta_i) & \\ \sin (\theta_i) & \cos (\theta_i) \cos (\alpha_i) & -\cos (\theta_i) \sin (\alpha_i) & a_i\sin (\theta_i) \\ 0 & \sin (\alpha_i) & \cos (\alpha_i) & d_i \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned}

i−1 Ai​​=Transz​(di​)Rotz​(θi​)Transx​(ai​)Rotx​(αi​)=

​cos(θi​)sin(θi​)00​−sin(θi​)cos(αi​)cos(θi​)cos(αi​)sin(αi​)0​sin(θi​)sin(αi​)−cos(θi​)sin(αi​)cos(αi​)0​ai​cos(θi​)ai​sin(θi​)di​1​

​​ 用Maple简单计算了一下:

1.4 检验

可以试着做一下这个题目,加深一下理解:

i

i

i

a

i

a_i

ai​

α

i

\alpha_i

αi​

d

i

d_i

di​

θ

i

\theta_i

θi​10

π

/

2

-\pi/2

−π/2

d

1

d_1

d1​

θ

1

\theta_1

θ1​(变量)20

π

/

2

\pi/2

π/2

d

2

d_2

d2​

θ

2

\theta_2

θ2​(变量)300

d

3

d_3

d3​(变量)040

π

/

2

-\pi/2

−π/20

θ

4

\theta_4

θ4​(变量)50

π

/

2

\pi/2

π/20

θ

5

\theta_5

θ5​(变量)600

d

6

d_6

d6​

θ

6

\theta_6

θ6​(变量)

2. 改进DH参数方法

i

i

i的近端是关节

i

i

i,远端是关节

i

+

1

i+1

i+1.驱动杆

i

i

i的力(或力矩)是经由关节

i

i

i的轴线施加到杆

i

i

i上的,故关节

i

i

i的轴称为杆

i

i

i的驱动轴(Driving Axis).对杆

i

i

i来说,关节

i

+

1

i+1

i+1的作用是将杆i的运动和力传到杆

i

+

1

i+1

i+1上,故关节

i

+

1

i+1

i+1的轴称为杆

i

i

i的传动轴(Transmitting Axis),在用D-H方法建立杆坐标系时,和杆

i

i

i固连的坐标系

i

i

i的

Z

Z

Z轴沿杆

i

i

i的传动轴轴向,

于是很自然想到传统建立DH参数坐标系方法的一个明显缺点是:对于树形结构或含闭链的机器人,有的杆上会存在多于一个传动轴,这时用D一H方法建立杆坐标系时会产生歧义。

2.1 确定坐标系的方法

第1步:确定

Z

i

Z_i

Zi​轴。基本原则是:

Z

i

Z_i

Zi​轴沿关节

i

i

i的轴向

第2步:确定原点

O

i

O_i

Oi​.基本原则是:

O

i

O_i

Oi​在过

Z

i

Z_i

Zi​和

Z

i

+

1

Z_{i+1}

Zi+1​轴的公法线上。

第3步:确定

X

i

X_i

Xi​轴。基本原则是:

X

X

X轴沿过

Z

i

Z_i

Zi​和

Z

i

+

1

Z_{i+1}

Zi+1​轴的公法线方向,从

Z

i

Z_i

Zi​指向

Z

i

+

1

Z_{i+1}

Zi+1​·

第4步:确定

Y

i

Y_i

Yi​轴。基本原则是:

Y

i

=

Z

i

×

X

i

Y_i=Z_i\times X_i

Yi​=Zi​×Xi​,使坐标系为右手坐标系

2.2 DH参数的定义

①杆件长度

a

i

a_i

ai​,定义为从

Z

i

1

Z_{i-1}

Zi−1​到

Z

i

Z_i

Zi​的距离,沿

X

i

1

X_{i-1}

Xi−1​轴指向为正。

②杆件扭角

α

i

\alpha_i

αi​,定义为从

Z

i

1

Z_{i-1}

Zi−1​到

Z

i

Z_i

Zi​的转角。绕

X

i

1

X_{i-1}

Xi−1​轴正向转动为正。

③关节距离

d

i

d_i

di​,定义为从

X

i

1

X_{i-1}

Xi−1​到

X

i

X_i

Xi​的距离,沿

Z

i

Z_i

Zi​轴指向为正。

④关节转角

θ

i

\theta_i

θi​定义为从

X

i

1

X_{i-1}

Xi−1​到

X

i

X_i

Xi​的转角,绕

Z

i

Z_i

Zi​轴正向转动为正。

关于①和②也有《现代机器人学》的书这样描述(可能是现在主流的方法)* ①杆件长度

a

i

a_i

ai​,定义为从

Z

i

Z_{i}

Zi​到

Z

i

+

1

Z_{i+1}

Zi+1​的距离,沿

X

i

X_{i}

Xi​轴指向为正。 ②杆件扭角

α

i

\alpha_i

αi​,定义为从

Z

i

Z_{i}

Zi​到

Z

i

+

1

Z_{i+1}

Zi+1​的转角。绕

X

i

X_{i}

Xi​轴正向转动为正。

需要注意的有以下几点:

①在建立驱动轴坐标系遇到不可应用基本原则的特殊情况时,也总是要使修改的D-H参数尽可能为零.特别是,当

i

=

1

i=1

i=1和

i

=

n

i=n

i=n时,可不失一般性地认为修改的D-H参数满足

a

1

=

α

1

=

σ

1

θ

1

(

1

σ

1

)

d

1

=

σ

n

θ

n

(

1

σ

n

)

d

n

=

0

a_1=\alpha_1=\sigma_1\theta_1十(1-\sigma_1)d_1=\sigma_n\theta_n十(1-\sigma_n)d_n=0

a1​=α1​=σ1​θ1​十(1−σ1​)d1​=σn​θn​十(1−σn​)dn​=0

2.3 改进DH参数齐次变换矩阵

最终效果:

列写DH参数表时描述其连接的

i

1

i-1

i−1坐标系和

i

i

i坐标系之间的关系。(i从1开始)

i

1

A

i

=

Trans

x

(

a

i

)

Rot

x

(

α

i

)

Trans

z

(

d

i

)

Rot

z

(

θ

i

)

=

[

cos

(

θ

i

)

sin

(

θ

i

)

0

a

i

sin

(

θ

i

)

cos

(

α

i

)

cos

(

θ

i

)

cos

(

α

i

)

sin

(

α

i

)

d

i

sin

(

α

i

)

sin

(

θ

i

)

sin

(

α

i

)

cos

(

θ

i

)

sin

(

α

i

)

cos

(

α

i

)

d

i

cos

(

α

i

)

0

0

0

1

]

\begin{aligned} { }^{{i}-1} {~A}_{{i}} & =\operatorname{Trans}_{{x}}\left({a}_{{i}}\right) \operatorname{Rot}_{{x}}\left(\alpha_{{i}}\right) \operatorname{Trans}_{{z}}\left({d}_{{i}}\right) \operatorname{Rot}_{{z}}\left(\theta_{{i}}\right) \\ & =\left[\begin{array}{cccc} \cos (\theta_i) & -\sin (\theta_i)& 0 & a_i \\ \sin (\theta_i)\cos(\alpha_i) & \cos (\theta_i) \cos (\alpha_i) & -\sin(\alpha_i) & -d_i\sin (\alpha_i) \\ \sin(\theta_i)\sin(\alpha_i) & \cos(\theta_i)\sin (\alpha_i) & \cos (\alpha_i) & d_i\cos(\alpha_i) \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned}

i−1 Ai​​=Transx​(ai​)Rotx​(αi​)Transz​(di​)Rotz​(θi​)=

​cos(θi​)sin(θi​)cos(αi​)sin(θi​)sin(αi​)0​−sin(θi​)cos(θi​)cos(αi​)cos(θi​)sin(αi​)0​0−sin(αi​)cos(αi​)0​ai​−di​sin(αi​)di​cos(αi​)1​

​​

如果按照《现代机器人学》的书对于

α

\alpha

α和

a

a

a的描述,齐次变换矩阵公式写作:

i

1

A

i

=

Trans

x

(

a

i

1

)

Rot

x

(

α

i

1

)

Trans

z

(

d

i

)

Rot

z

(

θ

i

)

=

[

cos

(

θ

i

)

sin

(

θ

i

)

0

a

i

1

sin

(

θ

i

)

cos

(

α

i

1

)

cos

(

θ

i

)

cos

(

α

i

1

)

sin

(

α

i

1

)

d

i

sin

(

α

i

1

)

sin

(

θ

i

)

sin

(

α

i

1

)

cos

(

θ

i

)

sin

(

α

i

1

)

cos

(

α

i

1

)

d

i

cos

(

α

i

1

)

0

0

0

1

]

\begin{aligned} { }^{{i}-1} {~A}_{{i}} & =\operatorname{Trans}_{{x}}\left({a}_{{i-1}}\right) \operatorname{Rot}_{{x}}\left(\alpha_{{i-1}}\right) \operatorname{Trans}_{{z}}\left({d}_{{i}}\right) \operatorname{Rot}_{{z}}\left(\theta_{{i}}\right) \\ & =\left[\begin{array}{cccc} \cos (\theta_i) & -\sin (\theta_i)& 0 & a_{i-1} \\ \sin (\theta_i)\cos(\alpha_{i-1}) & \cos (\theta_i) \cos (\alpha_{i-1}) & -\sin(\alpha_{i-1}) & -d_i\sin (\alpha_{i-1}) \\ \sin(\theta_i)\sin(\alpha_{i-1}) & \cos(\theta_i)\sin (\alpha_{i-1}) & \cos (\alpha_{i-1}) & d_i\cos(\alpha_{i-1}) \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned}

i−1 Ai​​=Transx​(ai−1​)Rotx​(αi−1​)Transz​(di​)Rotz​(θi​)=

​cos(θi​)sin(θi​)cos(αi−1​)sin(θi​)sin(αi−1​)0​−sin(θi​)cos(θi​)cos(αi−1​)cos(θi​)sin(αi−1​)0​0−sin(αi−1​)cos(αi−1​)0​ai−1​−di​sin(αi−1​)di​cos(αi−1​)1​

​​

2.4 检验

可以试着做一下传统DH方法那个题目,加深一下理解,自己重新建一下坐标系,写一下改进的DH参数

i

i

i

a

i

a_i

ai​

α

i

\alpha_i

αi​

d

i

d_i

di​

θ

i

\theta_i

θi​1000

θ

1

\theta_1

θ1​(变量)20

π

/

2

-\pi/2

−π/2

d

2

d_2

d2​

θ

2

\theta_2

θ2​(变量)30

π

/

2

-\pi/2

−π/2

d

3

d_3

d3​(变量)

π

\pi

π4000

θ

4

\theta_4

θ4​(变量)50

π

/

2

-\pi/2

−π/20

θ

5

\theta_5

θ5​(变量)60

π

/

2

\pi/2

π/20

θ

6

\theta_6

θ6​(变量)700

d

6

d_6

d6​0

另外关于改进的DH方法可以看我的这篇博客

机器人学DH参数及利用matlab符号运算推导

写点自己的理解,如果有错误请大家指出,参考的是《机器人动力学与控制》这本书。

相关数据