T矩阵中一共有12个有效参数,然而我们只需要6个量来获取位姿,感觉很不划算,而且有些参数根本用不上。因此有两位大佬,D大佬和H大佬提出了DH法。

写这部分的时候,我拿出了两本书Introduction to Robotics, Mechanics and Control Third Edition, John J. Craig和Introduction to Robotics, Analysis, Systems, Applications, Saeed B. Niku。看完之后,我很混乱。

经过我的调查,Saeed为大家所说的SDH法(Standard DH),Craig为大家所说的MDH法(Modified DH)。还有另外一个MDH,指的是在DH法4个参数的基础上新引入一个参数,在精度标定是会使用,此法本篇暂时不进行说明。

对于以上两种建模方法,我将在下面同时对比说明。

D-H法的简化方式很明确,就是将y轴位移和旋转的2个自由度干掉了,仅考虑x和z轴的位移与旋转。这样,6个自由度的位姿变成由4个参数来表示了。其中参数采用关节角(Joint Angle) [公式]、连杆偏移(Link Offset)[公式] 、连杆扭转角(Link Twist)[公式] 、连杆长度(Link Length) [公式]共4个参数来表述相邻两个坐标系的关系。

这4个参数可以分为两组。在移动关节下可变参数[公式] 是关节参数(Joint Variable)(移动关节的话,可变参数是[公式])。另一组是系统固有参数连杆参数(Link Parameters)[公式] [公式][公式]

具体表示方法和参数意义下面会写到。

建立步骤:

  1. 列表

2. 建模

1)确定初始位置并给连杆和关节标号。一般机械臂初始位置被认为是整体伸直朝上,横向关节朝向为x轴。下图右边是连杆结构图。

2)确认各关节轴线和z轴。

轴线为各关节旋转或移动的轴线。z轴为当前轴线,方向任意(此处选择电机旋转反方向)。此处两种方法将有不同,要注意下角标的符号。z轴的下标就代表了第几坐标系了。

3)建立各关节坐标系。

首先找第i个坐标系{i}的原点。再确定x_i轴。

在SDH中,{i}的轴线和{i-1}的轴线,如果相交,则交点为原点,x_i轴在两轴线所在平面的垂线上,方向任意;如果不相交,两轴线公垂线和当前关节i轴线的交点为原点,x_i为在公垂线上,方向任意。

在MDH中,{i}的轴线和{i+1}的轴线,如果相交,则交点为原点,x_i轴在两轴线所在平面的垂线上,方向任意;如果不相交,两轴线公垂线和当前关节i轴线的交点为原点,x_i为在公垂线上,方向任意。

由于会有两轴线平行,公垂线有无数条;x轴z轴方向可任意设置,所以会导致参数模型会有很多版本。

添加首尾坐标系。

SDH中已经标注好{0}了,所以在尾端添加{6}。MDH中已经标注好{6}了,所以在首端添加{0}。首尾端的坐标系设置是要根据实际情况和个人喜好的。

下面是建系过程。

*注,由于选择z轴,x轴和原点有很大的自由性,所以以上只是建系的一种选择,怎么建系需要根据自身情况来判断。

3. 确定D-H的4个参数

拿出第一步列的表,挨个进行填写。先不要在意参数下角标,因为会混淆。SDH和MDH两种方法的坐标变换都是从前面的坐标系往下一个坐标系变换,写第i行时只要关注{i-1}和{i}之间的关系就好。但是参数顺序是有差别的。

此处将对表的第2行进行举例。i=2时,利用{1}的坐标系变换到{2}。

SDH的顺序是[公式]

1)先将坐标系i-1的x_i-1轴绕z_i轴转到与坐标系i的x_i轴平行,转过的角度为[公式],右手准则拇指指向为z正方向为正;

2)再将x_i-1轴沿z_i-1轴平移到x_i轴,平移的距离为[公式]

3)接着刚才变换的结果,将坐标系i-1的z_i-1轴绕x_i-1轴转到和坐标系的z_i轴平行,转过的角度为[公式],右手准则拇指指向为x正方向为正;

4)再将z_i-1轴沿x_i-1轴平移到z_i轴,平移的距离为[公式],直到两坐标系重合。

根据SDH的规则可以得出下表。在上图theta_2=-90,但由于是可变参数theta设为q2。

MDH的顺序是[公式]

1)先将坐标系i-1的z_i-1轴绕x_i-1轴转到与坐标系i的z_i轴平行,转过的角度为[公式],右手准则拇指指向为z正方向为正;

2)再将z_i-1轴沿x_i-1轴平移到z_i轴,平移的距离为[公式]

3)接着刚才变换的结果,将坐标系i-1的x_i-1轴绕z_i-1轴转到和坐标系的x_i轴平行,转过的角度为[公式],右手准则拇指指向为x正方向为正;

4)再将x_i-1轴沿z_i-1轴平移到x_i轴,平移的距离为[公式],直到两坐标系重合。

根据MDH的规则可以得出下表。在上图theta_2=90,但由于是可变参数theta设为q2。

由于书本和网页是二维的缘故,使得无法很好的表现三维空间的变换,会变得很抽象难理解。如果还是看不太懂,可以去观看下面的动画,可以在空间中直观的理解。此动画时维基百科的D-H法推荐。

4. 完整表

根据DH法模型和工程图纸,将表填好。(官方给的二维图纸和三维模型尺寸不一致。由于主要使用三维模型,所以自己重新量了一下三维图纸)

总结

SDH和MDH的建模方法区别在于1)固连坐标系位置,2)x轴确定方向,3)四参数顺序。

可以从连杆结构图中看出来:SDH是连杆i和关节i共同建系;MDH是连杆i-1和关节i共同建系。最后坐标系变换时都是将关节重合。

回忆起机械原理在对连杆机构进行运动分析时,步骤就是将各连杆拆开,再分别分析关节在各个连杆的运动。只不过是二维平面分析,坐标变换比较简单,所以都在分析中包含了。

这两种方法都是比较常用的,还是要自己亲手推一下才能深刻理解。但是由于建模方式很自由,无法确定是否建模正确。可以利用Matlab-robotics-toolbox建模,来和市面上类似机械臂做对比。比如innfos的这款6轴机械臂和UR机械臂是类似的,所以找到UR的机械臂详细数据和DH参数,在此链接

根据UR的参数再建一个SDH的模型如下:

接下来都会使用这个模型。