前段时间勇哥在淘宝上看到一个六轴机器人,别人用3D打印做的本体,配上电机驱动器。
然后控制板据说自己写的程序,用的是DH算法。我知道这是机器人正解反解的算法,但是个这算法怎么工作的我不知道。
下面这位大神的文章就是来解读这个DH算法是毛东西的,虽然看不懂,但是放在这里扫个盲。
貌似淘宝上3D打印机器人,然后配个电机的就拿来卖的有无数家,但是如果说机器人配上位机DH算法控制软件的就极少,好像还是个少有人涉足的领域。
不像机器视觉,已经感觉烂大街了,会点hlacon或者visionPro的都说自己是做视觉的。
========================
一 机器人运动学
工业机器人的正向运动学是指已知各关节的类型、相邻关节之间的尺寸和相邻关节相对运动量的大小时,如何确定工业机器人末端操作器在固定坐标系中的位姿。
DH模型由来:1955年,Denavit和Hartenberg(迪纳维特和哈坦伯格)提出了这一方法,后成为表示机器人以及对机器人建模的标准方法,应用广泛。
总体思想:首先给每个关节指定坐标系,然后确定从一个关节到下一个关节进行变化的步骤,这体现在两个相邻参考坐标系之间的变化,将所有变化结合起来,就确定了末端关节与基座之间的总变化,从而建立运动学方程,进一步对其求解。
二 坐标系的确定
杆件与关节
操作机由一串用转动或平移(棱柱形)关节连接的刚体(杆件)组成。
每一对关节杆件构成一个自由度,因此N个自由度的操作机就有N对关节—杆件。
0号杆件(一般不把它当作机器人的一部分)固联在机座上,通常在这里建立一个固定参考坐标系,最后一个杆件与工具相连。
关节和杆件均由底座向外顺序排列,每个杆件最多和另外两个杆件相联,不构成闭环。
机器人关节坐标系的建立:对于每个杆件都可以在关节轴处建立一个正规的笛卡儿坐标系(xi, yi, zi),(i=1, 2, …, n),n是自由度数,再加上基座坐标系,一共有(n+1)个坐标系。
基座坐标系 ∑O0定义为0号坐标系(x0, y0, z0),它也是机器人的惯性坐标系,0号坐标系在基座上的位置和方向可任选,但z0轴线必须与关节1的轴线重合,位置和方向可任选;
最后一个坐标系(n关节),可以设在手的任意部位,但必须保证 zn与zn-1 垂直。
情况1:两关节Z轴既不平行也不相交
取两Z轴公垂线方向作为X轴方向,命名规则同Z轴X轴确定规则
情况2:两关节Z轴平行
此时,两Z轴之间有无数条公垂线,可挑选与前一关节的公垂线共线的一条公垂线。
情况3:两关节Z轴相交
取两条Z轴的叉积方向作为X轴。
情况4:Y轴确定原则
取X轴、Z轴叉积方向作为Y轴方向。(右手)
情况5:变量选择原则
用θn+1角表示Xn到Xn+1绕Zn轴的旋转角;dn+1表示从Xn到Xn+1沿Zn测量的距离;an+1表示关节偏移,an+1是从Zn到Zn+1沿Xn+1测量的距离;角α表示关节扭转, αn+1是从Zn到Zn+1绕Xn+1旋转的角度。 通常情况下,只有θ和d是关节变量。
关节坐标系的建立方法:
原点Oi:设在li与Ai+1轴线的交点上
zi轴:与Ai+1关节轴重合,指向任意
xi轴:与公法线li重合,指向沿li由Ai轴线指向Ai+1轴线
yi轴:按右手定则
杆件长度li —沿 xi 轴, zi-1 轴与 xi 轴交点到 0i 的距离
杆件扭转角αi — 绕 xi 轴,由 zi-1 转向zi
杆件偏移量 di — 沿 zi-1 轴,zi-1 轴和 xi 交点至∑0i –1 坐标系原点的距离
杆件回转角θi — 绕 zi-1 轴,由 xi-1转向 xi
两种特殊情况:
1、两轴相交,怎么建立坐标系?
Oi — Ai与Ai+1关节轴线的交点;
zi — Ai+1轴线;
xi — zi和zi-1构成的平面的 法线 ;
yi — 右手定则;
2、两轴平行,怎么建立坐标系(Ai与Ai+1平行)?
先建立 ∑Oi-1
然后建立∑Oi+1
最后建立 ∑Oi
三 机器人运动学正解
D-H变换矩阵
第一步:根据D-H法建立坐标系的规则建立坐标系
第二步:将做好的坐标系简化为我们熟悉的线图形式
第三步:根据建立好的坐标系,确定各参数,并写入D-H参数表
第四步:将参数代入A矩阵,可得到
综上:
依次写出从基坐标系到手爪坐标系之间相邻两坐标系的齐次变换矩阵,它们依次连乘的结果就是末端执行器(手爪)在基坐标系中的空间描述,即
四 机器人运动学逆解
给定机器人终端位姿,求各关节变量,称求机器人运动学逆解。让我们通过下面这道例题来了解一下机器人逆运动学求解的一般步骤。前面例子最后方程为:
第一步,求theta1,依次用 左乘上面两个矩阵,得到:
根据第3行第4列元素对应相等可得到
第二步,求theta3,根据1,4元素和2,4元素,可得到:
将上面两个方程两边平方相加,并利用和差化积公式得到
已知
于是可得到:
依次类推,分别在方程2.19两边左乘A1~A4的逆,可得到
接下来再一次利用式
由于C12=C1C2-S1S2以及S12=S1C2+C1S2,最后得到:
最后用A5的逆左乘式2.67,再利用2,1元素和2,2元素,得到:
五 对机器人相关概念的补充
退化:当机器人失去一个自由度,并因此不按所期望的状态运动时即称为退化。
退化发生条件:
1.机器人达到物理极限,不能进一步运动
2.两个相似关节共线
不灵巧区域:能对机器人定位不定姿的区域称为不灵巧区域。
D-H法的局限性:无法表示关于y轴的运动。
————————————————
版权声明:本文为CSDN博主「南山二毛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16481211/java/article/details/79749282

