机器人理论(3)DH表达法:解析关节轴之间的关系

版权声明: https://blog.csdn.net/aic1999/article/details/82490615

导言

我们都知道关节一般会导致(驱动)机械臂产生两种状态:平移或者转动。也知道我们需要借助坐标系来描述物体的姿态和位置信息,那如何为一整个机械臂建立一个完整的坐标系,从而能够求解每个关节通过平移/旋转多少值让机械臂最终拿到我们的目标物品呢?在这里需要借助DH表达法来定义我们的坐标系的作法,并且给出需要求解的数值(平移\large d/旋转\large \Theta)在空间上的表达。本节是学习顺逆向运动学的基础。


D-H表达法(Denavit-Hartenberg)

DH表达法有两个通用版本,一个是标准版(standard),一个是craig版本,在这先使用craig版本作解释。

一般(驱动)关节(joint)分为两种:转轴(R型,revolute)或者 滑动杆 / 平移(P型,prismatic)

目录

如何构建DH表格

相关例题

DH表的作用

相关例子(PUMA560)

扩展(选读)

DH表达法的另一个版本(标准版)

复合型关节如何得到驱动数值

 


 

如何构建DH表格

构建DH表格首先需要画出坐标系,然后根据坐标系的数据做表。

(1)如何确定 z 轴?

首先找到每个关节的转动/平移方向

平移关节 :  沿着平移方向画 z 轴

转轴关节 :垂直转动方向做 z 轴

注:方向不唯一,全凭喜好或条件选择轴向正负

可以看到这个机械臂由转动、平移、转动关节组成,即所谓的RPR类型机械臂。

(2)如何确定 x 轴?

上过高中的一定知道啦,空间中的两条线一定能找到一条线与它们都垂直。

找到一条与关节 \large i、关节 i+1 的 z 轴都垂直并相交的线,这条线就是 x 轴 。

注:方向不唯一,全凭喜好或条件选择轴向正负

需要注意的是( 下面的(5) 解释了 \large a_{i} 是个什么东西 ):

Z_{i}Z_{i+1}不在同一平面上时:\large a_{i} ≠0, x 轴沿着这条线。

Z_{i}Z_{i+1}在同一平面上:\large a_{i} =0

(3)如何确定 y 轴?

已知 x 轴、 z 轴,与它们两两垂直的就是 y 轴。(符合坐标系的右手定则)

(4)处理特殊点的坐标系(最开始、最后的)

由上述三点,一般杆件的驱动坐标系都定义出来了。还有两个特殊的杆件:地杆和端杆,我们如何处理?

  • 地杆(第0杆,link 0):无关节驱动、不动的

当  \theta_{1} = 0 (或 \small d_{1} = 0 )时的关节1的坐标系,就可当作地杆的关节坐标系(如图红色所示)。

注:这个坐标系定义后不会变动,一般作为整个机械臂的参考坐标系使用。

  • 端杆(最后一杆,link n):

端杆依靠最后一个关节的运动改变坐标位置

一般使用上一个关节的坐标系的 x 轴延伸直线作为端杆的 x 轴。

(5)构建DH表格

(注意区分 \large a 和 \large \alpha } )

\large a_{i-1} :  即关节i-1与关节i 两者z轴的最短举例(即垂直距离)

\large \alpha _{i-1} :即关节i-1与关节i 两者z轴的角度差

\large d_{i} : 即 \large a_{i-1} 与 \large a_{i}  的最短距离

\theta_{i} :即 \large a_{i-1} 与 \large a_{i} 的角度差

一般 \large d_{i} 以上/右为正,\theta_{i} 以逆时针方向为正方向。

如果仅是表达两杆,只需要\large a\large \alpha即可。如果是多杆(一般情况),涉及到的信息矩阵T的运算需要\large d_{i}\theta_{i}参数。

然后根据情况将机械臂的数值写到表中:

一般而言,杆的长度我们都是已知的,数值都是可以直接得到的,所以有:

对于转轴而言,\large a\large \alpha\large d都是已知的。\theta是未知的,它是这个关节的驱动数值。

对于动杆而言,\large a\large \alpha\theta都是已知的。\large d是未知的,它是这个关节的驱动数值。

相关例题

([扩展]中以此图为例)

DH表的作用

我们通过信息矩阵{T}能轻易知道两个关节杆子相互之间的联系与位置转换,通过{T}的运算连续性也很容易知道不相邻杆件关节间的状态:

通过上式可以得知,如果我们想把物体\large P向量从{\large i}的表达转换到{\large i-1},则需要依次经过从\large i-1\large R,从\large R\large Q.....

这样就能让我们的机械臂一步一步慢慢触碰到目标物体了。

那么我们如何得知的\large T具体数值呢?

DH表的最大作用就是为信息矩阵 T 提供了必要的数值。

从而可以使关节0通过相应的T矩阵到关节1的位置,关节\large i通过T矩阵到达关节\large i+1的位置,一个推一个,最终达到目标位置。

由于信息矩阵{T}的特性,可以推出:

这个矩阵的意思是:

关节i-1怎么到关节i呢?

首先是围绕\large x_{i-1}轴逆时针转动\large \alpha _{i-1}(蓝色->绿色),然后再沿着\large x_{R}轴向右平移\large a_{i-1}(绿色->橙色)

然后再围绕\large z_{Q}轴逆时针转动\large \Theta _{i}(橙色->紫色),然后再沿着\large z_{P}轴向上平移\large d_{i}(紫色->红色)

然后就能得到固定公式   \large _{i}^{i-1}\textrm{T} =

       

相关例子(PUMA560)

这是很经典的一个机械手臂——PUMA 560.现在需要求出 \large _{6}^{0}\textrm{T}.

求解过程

1)首先画出DH表(用Craig方式)

2)使用T矩阵的连续性求解

根据之前提供的公式,这六个矩阵有:

扩展(选读)

  • DH表达法的另一个版本(标准版)

之前有提到DH表达法由两种版本,本博客举例的是craig版本的,而不是早期教材中的standard版本。

他们的区别是:

1、名称上的区别,前者的关节的表示英文为axis ,后者为 joint

2、代号定义上的区别,前者是关节i后面接杆件\large i,后者是关节i后面接杆件\large i+1.

3、坐标系的画法标准不同,关于\large x轴的画法,前者是\large z_{i}指向\large z_{i+1},后者是\large z_{i-1}指向\large z_{i}

4、运算上的复杂度区别,后者需要的运算量稍微大了点。(以[相关例子]的最后一个图为例)

  • 复合型关节如何得到驱动数值

之前说过了,一般的关节分两种:转轴或者滑动杆。

其中转轴的驱动机械臂运动的数值取决于\large \Theta,滑动杆取决于\large d

但是实际上的需求关节会有更复杂的,这里以这个机器人的轮腿为例:

可以看到的轮子不只可以转动,而且由于可以“上上下下”,所以可以达到“走路”的效果。

所以这是由两个马达控制的关节驱动,一个控制转动 \large \Theta,一个控制位移 \large \gamma\large \varphi _{1},\large \varphi _{2} 代表的是两个马达的状态。

 

猜你喜欢

转载自blog.csdn.net/aic1999/article/details/82490615