机械臂的DH连杆参数

机械臂的DH连杆参数不止一种,这里仅记录一种改进后的DH参数。在改进的DH参数中, f r a m e i frame_i framei对应 j o i n t i joint_i jointi l i n k i link_i linki的起始端关节,所有关节默认为 r e v o l u t e revolute revolute型)。

连杆 l i n k i link_i linki的始端和末端关节分别对应 f r a m e i 、 f r a m e i + 1 frame_i、frame_{i+1} frameiframei+1,各坐标系的 z i z_i zi轴与对应关节的旋转轴重合。从 f r a m e i − 1 → f r a i m e i frame_{i-1} \rightarrow fraime_i framei1fraimei的DH参数分别记为 a i 、 α i 、 d i 、 θ i a_i、\alpha_i、d_i、\theta_i aiαidiθi

I n t r o d u c t i o n   t o   R o b o t i c s   M e c h a n i c s   a n d   C o n t r o l ( J o h n   J . C r a i g ) Introduction \ to \ Robotics \ Mechanics \ and \ Control(John\ J.Craig) Introduction to Robotics Mechanics and Control(John J.Craig)一书中使用了这样一张图介绍DH参数(P68):
在这里插入图片描述
注意图中描述的DH参数实际上是 a i − 1 、 α i − 1 、 d i 、 θ i a_{i-1}、\alpha_{i-1}、d_i、\theta_i ai1αi1diθi,下标不统一有点不太方便后续的计算。在 S p r i n g e r   H a n d b o o k   o f   R o b o t i c s Springer \ Handbook \ of \ Robotics Springer Handbook of Robotics这本书中给出了我认为更合理的DH参数确定规则(P27):在这里插入图片描述
需要改动的地方在上上幅图中有标记。在确定了 f r a m e i − 1 → f r a i m e i frame_{i-1} \rightarrow fraime_i framei1fraimei的DH参数后,可以将对应的齐次变换矩阵计算出来,对照上上幅图可以得到 f r a m e i − 1 → f r a i m e i frame_{i-1} \rightarrow fraime_i framei1fraimei这一过程中涉及的4个旋转和平移变换 R x i ( α i ) T x i ( a i ) R z i + 1 ( θ i ) T z i + 1 ( d i ) R_{x_{i}}(\alpha_i)T_{x_{i}}(a_i)R_{z_{i+1}}(\theta_i)T_{z_{i+1}}(d_i) Rxi(αi)Txi(ai)Rzi+1(θi)Tzi+1(di),这里使用两个齐次变换矩阵表示:
A i i ′ = [ 1 0 0 a i 0 cos ⁡ α i − sin ⁡ α i 0 0 sin ⁡ α i cos ⁡ α i 0 0 0 0 1 ] A i ′ i + 1 = [ cos ⁡ θ i − sin ⁡ θ i 0 0 sin ⁡ θ i cos ⁡ θ i 0 0 0 0 1 d i 0 0 0 1 ] A_i^{i'} = \begin{bmatrix} 1 & 0 & 0 & a_i \\ 0 & \cos\alpha_i & -\sin\alpha_i & 0 \\ 0 & \sin\alpha_i & \cos\alpha_i & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \\ A_{i'}^{i+1} = \begin{bmatrix} \cos\theta_i & -\sin\theta_i & 0 & 0 \\ \sin\theta_i & \cos\theta_i & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \end{bmatrix} Aii= 10000cosαisinαi00sinαicosαi0ai001 Aii+1= cosθisinθi00sinθicosθi00001000di1
于是得到最终的齐次变换矩阵:
A i i + 1 = A i i ′ ⋅ A i ′ i + 1 = [ 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} A_i^{i+1} &= A_i^{i'} \cdot A_{i'}^{i+1} \\ &= \begin{bmatrix} \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{bmatrix} \end{aligned} Aii+1=AiiAii+1= cosθisinθicosαisinθisinαi0sinθicosθicosαicosθisinαi00sinαicosαi0aidisinαidicosαi1

在针对具体的机械臂建立坐标系确定DH参数时,其结果并不是唯一的。每个关节的坐标系的方向存在一定的选择自由,并且不同姿态的机械臂得到的DH参数也往往不同(通常体现在 θ \theta θ参数中)。在已知机械臂官方DH参数(通常会把 θ \theta θ全部设置为0)的情况下,可以先参照除 θ \theta θ以外的其他三个参数建立坐标系,然后确定 θ \theta θ的值(不一定全为零)。将每个关节的旋转角度设置为 θ \theta θ中对应角度的相反数即可得到官方DH参数对应的机械臂初始姿态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值