本文转载自微信公众号ROBOTICS
上一篇(干货 | 位置角度平移旋转,“乱七八糟”的坐标变换)我们暂时抛开机器人,讲了坐标系之间怎样进行平移和旋转变换;今天,我们要把目光收回到机器人身上,看看我们怎样用一系列坐标系来描述一个链式机械臂,机器人学常说的DH参数(Denavit–Hartenberg parameters)又是什么。
相邻关节的坐标变换
在第一篇文章(《干货 | 从RP入门机器人学》)中我们说过,链式机器人可以由关节-连杆-关节-连杆-……-连杆-末端执行器(joint – link – joint – link – … – link – end effector)这样的结构式来描述。现在的问题是,假如你有两个由连杆相连的关节,你要怎样描述它们之间的位置/朝向position/orientation)关系? 假设一个关节固定,另一个关节在自由空间中相对于这个固定的关节将会有六个自由度;若我们给每个关节随意附上一个坐标系,那么我们刚刚学过的齐次坐标变换就足以解决这个问题。但是这样做既无法很好地描述一个有独特结构而非简单自由刚体的链式机械臂系统、也很难将坐标变换与关节本身的参数(旋转关节的旋转角、平移关节的平移距离)联系起来。 直接用齐次坐标变换不顾机械臂本身的结构限制,这种表达方式必然是冗余低效的。如果我们根据关节的轴之间的关系限制坐标轴的选择,我们或许可以得到更高效的表示方法。 DH参数与坐标系确定(frame attachment) DH参数就是一个用四个参数表达两对关节连杆之间位置角度关系的机械臂数学模型和坐标系确定系统。通过下文我们会看到,它通过限制原点位置和X轴的方向,人为减少了两个自由度,因此它只需要用四个参数即可表达关节之间原本是六自由度的坐标变换。它是一个很有用的通用的convention(惯例),而不是一个“知识点”。 DH选的四个参数都有非常明确的物理含义: · link length(连杆长度):两个关节的轴(旋转关节的旋转轴,平移关节的平移轴)之间的公共法线长度 · link twist(连杆扭转):一个关节的轴相对于另一个关节的轴绕它们的公共法线旋转的角度 · link offset(连杆偏移):一个关节与下一个关节的公共法线和它与上一个关节的公共法线沿这个关节轴的距离 · joint angle(关节转角):一个关节与下一个关节的公共法线和它与上一个关节的公共法线绕这个关节轴的转角 以上定义看了很绕口,但是结合坐标系看就会清楚许多。 首先你应该注意到最重要的两条“线”:一个关节的轴(axis),和一个关节的轴与相邻关节的轴之间的公共法线(common normal)。在DH参数体系里,我们把axis定为z轴;common normal定为x轴,且x轴的方向为从本关节指向下一个关节。我们后面会举例说明。 当然,仅仅这两个规则还不足以完全确定每个关节的坐标系;下面我们就来详细讲确定坐标系的步骤——一定要记住这里讲的所有东西都是convention,并非必须遵循的真理。在机械臂的仿真等应用中,我们也常常会采取其他方法来确立坐标系;但是掌握这里讲的方法,对你理解机械臂的数学表达和理解我们后续的分析是很有必要的。 以一个RPRR机器人为例: i. 确定原点 首先注意我们无论确定原点还是坐标轴,都是从第一个关节开始逐一确定的。 原点为本关节与下一关节公共法线和本关节轴的交点,如果是最后一个关节,则为前一个关节与本关节公共法线与本关节轴的交点。这个规则看似简单,不过下图的O2和你想得一样吗?这里第二个关节和第三个关节的轴相交了,所以它们的公共法线显然就在轴的交点上。
ii. 确定Z轴 Z轴从原点出发,与关节的轴重合。显然,每一个关节的Z轴都可以有两个选择(比如上图一二四关节你可以选择上或下,三关节你可以选择往外或往内),这个选择可以由你自由决定;但在地面坐标系和末端执行器坐标系已知的情况下,我们通常会希望当前Z轴与上一个已确定的Z轴的夹角能是0°就不要是180°,最后一个关节的Z轴若能与end effector的Z轴重合则选择让它们重合。所以我们的选择如下:
注意图中的Z3既可以选择指向屏幕外,也可以选择指向屏幕内。 iii.确定X轴 最后我们确定X轴。如上文所说,X轴为本关节轴指向下一关节轴的公共法线,与两个关节的轴都垂直。对于大部分情况这是非常清楚的,但当两条Z轴相交时我们无法确定X轴的方向,这个时候我们可以有另一个convention:即选择X轴的方向使当前Z轴与下一个Z轴的夹角(即当前关节与下一个关节的link twist)为正且小于180°。(注意此规则只在Z轴相交时使用!)而当两条Z轴平行或重合时,X轴的选择就比较随意了,我们通常会尽量让它与前或后一致。对于最后一个关节,我们也尽量选择与end effector更接近的坐标系。
一旦原点、Z轴和X轴都确定,我们可以根据右手定则确定Y轴,所有关节的坐标系也就唯一确定了。 DH参数表 确定坐标系以后,我们可以用更简洁的方法来表示上面很绕口的四个参数:
你可以自己对照上面RPRR机械臂的图,把每一个关节的各项参数找出来。通常我们把这些参数做成一个表(注意绕某个轴旋转的角度我们采用右手定则确定正方向):
除了θ1、d2、θ3、θ4为关节自身变量外,其它对应的变量如下图所示:
这部分内容挺容易让人头脑混乱的,但如果你从确定坐标系开始一步一步做下来,几次过后就会熟悉了。如果你再深入思考每一个参数的物理意义,那么你会发现它们都是非常直观的。不过个人认为,上面那张全是英文的图应该是最有用的…… 确定好坐标系和DH参数以后,关节之间的坐标变换就变得简单多了。我们把这部分内容留到下一次再讲,在那之前,强烈建议你把这篇文章看明白,尤其弄清楚以下几个问题: · DH参数如何通过限制坐标轴的选择,用四个参数表示六个自由度的空间变换? · 什么样的坐标变换是DH参数无法表达的?(Hint: 比如一个坐标系的X轴与另一个坐标系的Z轴平行) · 确定每个关节坐标系和DH参数的步骤是什么?