导言
我们都知道关节一般会导致(驱动)机械臂产生两种状态:平移或者转动。也知道我们需要借助坐标系来描述物体的姿态和位置信息,那如何为一整个机械臂建立一个完整的坐标系,从而能够求解每个关节通过平移/旋转多少值让机械臂最终拿到我们的目标物品呢?在这里需要借助DH表达法来定义我们的坐标系的作法,并且给出需要求解的数值(平移/旋转)在空间上的表达。本节是学习顺逆向运动学的基础。
D-H表达法(Denavit-Hartenberg)
DH表达法有两个通用版本,一个是标准版(standard),一个是craig版本,在这先使用craig版本作解释。
一般(驱动)关节(joint)分为两种:转轴(R型,revolute)或者 滑动杆 / 平移(P型,prismatic)
目录
如何构建DH表格
构建DH表格首先需要画出坐标系,然后根据坐标系的数据做表。
(1)如何确定 轴?
首先找到每个关节的转动/平移方向
平移关节 : 沿着平移方向画 轴
转轴关节 :垂直转动方向做 轴
注:方向不唯一,全凭喜好或条件选择轴向正负
可以看到这个机械臂由转动、平移、转动关节组成,即所谓的RPR类型机械臂。
(2)如何确定 轴?
上过高中的一定知道啦,空间中的两条线一定能找到一条线与它们都垂直。
找到一条与关节 、关节 的 轴都垂直并相交的线,这条线就是 轴 。
注:方向不唯一,全凭喜好或条件选择轴向正负
需要注意的是( 下面的(5) 解释了 是个什么东西 ):
与不在同一平面上时: ≠0, 轴沿着这条线。
与在同一平面上: =0
(3)如何确定 轴?
已知 轴、 轴,与它们两两垂直的就是 轴。(符合坐标系的右手定则)
(4)处理特殊点的坐标系(最开始、最后的)
由上述三点,一般杆件的驱动坐标系都定义出来了。还有两个特殊的杆件:地杆和端杆,我们如何处理?
- 地杆(第0杆,link 0):无关节驱动、不动的
当 = 0 (或 = 0 )时的关节1的坐标系,就可当作地杆的关节坐标系(如图红色所示)。
注:这个坐标系定义后不会变动,一般作为整个机械臂的参考坐标系使用。
- 端杆(最后一杆,link n):
端杆依靠最后一个关节的运动改变坐标位置
一般使用上一个关节的坐标系的 轴延伸直线作为端杆的 轴。
(5)构建DH表格
(注意区分 和 )
: 即关节与关节 两者轴的最短举例(即垂直距离)
:即关节与关节 两者轴的角度差
: 即 与 的最短距离
:即 与 的角度差
一般 以上/右为正, 以逆时针方向为正方向。
如果仅是表达两杆,只需要、即可。如果是多杆(一般情况),涉及到的信息矩阵T的运算需要、参数。
然后根据情况将机械臂的数值写到表中:
一般而言,杆的长度我们都是已知的,数值都是可以直接得到的,所以有:
对于转轴而言,、、都是已知的。是未知的,它是这个关节的驱动数值。
对于动杆而言,、、都是已知的。是未知的,它是这个关节的驱动数值。
相关例题
([扩展]中以此图为例)
DH表的作用
我们通过信息矩阵{T}能轻易知道两个关节杆子相互之间的联系与位置转换,通过{T}的运算连续性也很容易知道不相邻杆件关节间的状态:
通过上式可以得知,如果我们想把物体向量从{}的表达转换到{},则需要依次经过从到,从到.....
这样就能让我们的机械臂一步一步慢慢触碰到目标物体了。
那么我们如何得知的具体数值呢?
DH表的最大作用就是为信息矩阵 T 提供了必要的数值。
从而可以使关节0通过相应的T矩阵到关节1的位置,关节通过T矩阵到达关节的位置,一个推一个,最终达到目标位置。
由于信息矩阵{T}的特性,可以推出:
这个矩阵的意思是:
关节i-1怎么到关节i呢?
首先是围绕轴逆时针转动(蓝色->绿色),然后再沿着轴向右平移(绿色->橙色)
然后再围绕轴逆时针转动(橙色->紫色),然后再沿着轴向上平移(紫色->红色)
然后就能得到固定公式 =
相关例子(PUMA560)
这是很经典的一个机械手臂——PUMA 560.现在需要求出 .
求解过程
1)首先画出DH表(用Craig方式)
2)使用T矩阵的连续性求解
根据之前提供的公式,这六个矩阵有:
扩展(选读)
-
DH表达法的另一个版本(标准版)
之前有提到DH表达法由两种版本,本博客举例的是craig版本的,而不是早期教材中的standard版本。
他们的区别是:
1、名称上的区别,前者的关节的表示英文为axis ,后者为 joint
2、代号定义上的区别,前者是关节i后面接杆件,后者是关节i后面接杆件.
3、坐标系的画法标准不同,关于轴的画法,前者是指向,后者是指向。
4、运算上的复杂度区别,后者需要的运算量稍微大了点。(以[相关例子]的最后一个图为例)
-
复合型关节如何得到驱动数值
之前说过了,一般的关节分两种:转轴或者滑动杆。
其中转轴的驱动机械臂运动的数值取决于,滑动杆取决于。
但是实际上的需求关节会有更复杂的,这里以这个机器人的轮腿为例:
可以看到的轮子不只可以转动,而且由于可以“上上下下”,所以可以达到“走路”的效果。
所以这是由两个马达控制的关节驱动,一个控制转动 ,一个控制位移 。, 代表的是两个马达的状态。