机器人学: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 OiXiYiZi,并简称其为系 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轴均取为相同的指向)。这里需要说明的是:
  1. 当关节 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轴相交)

  2. 机器人杆 n n n的远端没有关节 n + 1 n+1 n+1,这时可选取 Z n Z_n Zn轴与 Z n − 1 Z_{n-1} Zn1轴重合

  • 第2步:确定各坐标系的原点 O O O基本原则是:选取原点 O i O_i Oi在过 Z i − 1 Z_{i-1} Zi1轴和 Z i Z_i Zi轴的公法线上(即 O i O_i Oi为此公法线与 Z i Z_i Zi轴的交点)。这里要说明的是:
  1. Z i − 1 Z_{i-1} Zi1轴与 Z i Z_i Zi轴平行时,经过两轴的公法线不唯一,确定 O i O_i Oi的方法是:若 Z i − 1 Z_{i-1} Zi1轴与 Z i Z_i Zi轴重合,取 O i = O i − 1 O_i=O_{i-1} Oi=Oi1·若 Z i − 1 Z_{i-1} Zi1轴与 Z i Z_i Zi轴平行且不重合,过 O i − 1 O_{i-1} Oi1点作 Z i − 1 Z_{i-1} Zi1轴和 Z i Z_i Zi轴的公法线,取此公法线与 Z i Z_i Zi轴的交点为 O i O_i Oi.

  2. 由于没有 Z − 1 Z_{-1} Z1轴,故无法按上述基本原则选取 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} Zi1轴和 Z i Z_i Zi轴的公法线,方向从 Z i − 1 Z_{i-1} Zi1指向 Z i Z_i Zi.这里要说明的是:
  1. Z i − 1 Z_{i-1} Zi1轴与 Z i Z_i Zi轴重合时(这时 O i O_i Oi= O i − 1 O_{i-1} Oi1),选取 X i X_i Xi轴满足在初始位置时 X i X_i Xi轴与 X i − 1 X_{i-1} Xi1轴重合

  2. Z i − 1 Z_{i-1} Zi1轴与 Z i Z_i Zi轴相交且不重合时,选择 X i = ± ( Z i − 1 × Z i ) X_i=±(Z_{i-1}×Z_{i}) Xi=±(Zi1×Zi),通常使所有平行的 X X X轴均有相同的指向。

  3. 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 i1 和系 i i i 间的相对位置和指向可用以下4 个参数表示:

(1)杆件长度 a i a_i ai , 定义为从 Z i − 1 Z_{i-1} Zi1 轴到 Z i Z_i Zi 轴的距离, 沿 X i X_i Xi轴的指向为正.

(2)杆件扭角 α i \alpha_i αi, 定义为从 Z i − 1 Z_{i-1} Zi1轴到 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} Xi1 轴到 X i X_i Xi 轴的距离, 沿 Z i − 1 Z_{i-1} Zi1 轴的指向为正。

(4)关节转角 θ i \theta_i θi,定义为从 X i − 1 X_{i-1} Xi1 轴到 X i X_i Xi 轴的转角, 沿 Z i − 1 Z_{i-1} Zi1 轴的指向为正,且规定 θ i ∈ ( − π , π ] \theta_i\in(-\pi, \pi] θi(π,π] .

在这里插入图片描述

  1. 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+σidi为关节变量, q i q_i qi刻画了系 i i i相对系 i − 1 i-1 i1的运动

  2. 利用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

  1. 有时为应用方便,也可不像前面所述那样设置系,而是将系 n n n设置在机器人末端夹持器的端点,或在其所夹持工具的端点

在这里插入图片描述

1.3 DH参数齐次变换矩阵

最终效果:

在这里插入图片描述

  • 第1步:沿 Z i − 1 Z_{i-1} Zi1轴移动 d i d_i di

  • 第2步:绕 Z i − 1 Z_{i-1} Zi1轴转动 θ 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 i1坐标系和 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} i1 Ai=Transz(di)Rotz(θi)Transx(ai)Rotx(αi)= cos(θi)sin(θi)00sin(θi)cos(αi)cos(θi)cos(αi)sin(αi)0sin(θi)sin(αi)cos(θi)sin(αi)cos(αi)0aicos(θi)aisin(θi)di1
用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(变量)0
40 − π / 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} Zi1 Z i Z_i Zi的距离,沿 X i − 1 X_{i-1} Xi1轴指向为正。

杆件扭角 α i \alpha_i αi,定义为从 Z i − 1 Z_{i-1} Zi1 Z i Z_i Zi的转角。绕 X i − 1 X_{i-1} Xi1轴正向转动为正。

关节距离 d i d_i di,定义为从 X i − 1 X_{i-1} Xi1 X i X_i Xi的距离,沿 Z i Z_i Zi轴指向为正。

关节转角 θ i \theta_i θi定义为从 X i − 1 X_{i-1} Xi1 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 i1坐标系和 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} i1 Ai=Transx(ai)Rotx(αi)Transz(di)Rotz(θi)= cos(θi)sin(θi)cos(αi)sin(θi)sin(αi)0sin(θi)cos(θi)cos(αi)cos(θi)sin(αi)00sin(αi)cos(αi)0aidisin(αi)dicos(α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} i1 Ai=Transx(ai1)Rotx(αi1)Transz(di)Rotz(θi)= cos(θi)sin(θi)cos(αi1)sin(θi)sin(αi1)0sin(θi)cos(θi)cos(αi1)cos(θi)sin(αi1)00sin(αi1)cos(αi1)0ai1disin(αi1)dicos(αi1)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 d60

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

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

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

  • 19
    点赞
  • 178
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值