标准DH建模与改进DH建模
standard_DH根据DH表示法确定一个一般步骤为每个关节指定参考坐标系,然后确定如何实现任意两个相邻坐标系之间的变换,最后写出机器人的总变换矩阵。如图所示表示了三个顺序关节和两个连杆,每个关节都是可以转动和平移的。第一个关节指定为关节i-1,第二个关节指定为关节i,第三个关节指定为关节i+1。在这些关节前后可能还有其他关节,连杆也是如此表示,连杆i位于关节i与关节i+1之间。1、standard_DH建立每个关节参考坐标系步骤:(1)所有关节,无一例外用z轴表示。如果是关节是旋转的,z轴位于按右手定则选装的方向,如果关节是滑动的,z轴为沿实现运动的方向。在每一种情况下,关节i处的z轴(以及该关节的本地参考坐标系)的下标为i-1。(2)通常关节不一定平行或相交。因此,通常z轴是斜线,但是总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义x轴。所以如果aia_iai表示zi−1z_{i-1}zi−1与ziz_izi之间的公垂线,则xix_ixi的方向沿aia_iai。(3)如果两个关节的z轴平行,选取与前一关节的公垂线共线的一条公垂线,可简化模型;如果两个相邻关节的z轴是相交的,那么它们之间没有公垂线,可选取两条z轴的叉积2方向作为x轴,可简化模型。 θ hetaθ角表示绕z轴旋转角,d表示在z轴上两条相邻的公垂线之间的距离,a表示每一条公垂线的长度,角αalphaα表示两个相邻的z轴之间的角度。
2、standard_DH建模步骤:(1)绕zi−1z_{i-1}zi−1轴旋转θi heta_iθi,它使得xi−1x_{i-1}xi−1和xix_{i}xi互相平行;(2)沿zi−1z_{i-1}zi−1轴平移did_{i}di距离,使得xi−1x_{i-1}xi−1和xix_{i}xi共线;(3)沿xix_{i}xi轴平移aia_{i}ai距离,使得xi−1x_{i-1}xi−1和xix_{i}xi的原点重合;(4)将zi−1z_{i-1}zi−1轴绕xix_{i}xi旋转aia_{i}ai,使得zi−1z_{i-1}zi−1轴与ziz_{i}zi轴对准。 通过右乘四个运动的四个矩阵就可以得到变换矩阵i−1Ti^{i-1}T_ii−1Ti:i−1Ti=Rot(zi−1,θi)×Trans((zi−1,di)×Trans((xi,ai)×Rot(xi,αi)egin{aligned}^{i-1}T_i=Rot(z_{i-1}, heta_i) imesTrans((z_{i-1},d_i) imesTrans((x_{i},a_i) imesRot(x_{i},alpha_i)end{aligned}i−1Ti=Rot(zi−1,θi)×Trans((zi−1,di)×Trans((xi,ai)×Rot(xi,αi)
i−1Ti=[cθi−sθi00sθicθi0000100001][10000100001di0001][100ai010000100001][10000cαi−sαi00sαicαi00001]^{i-1}T_i=egin{bmatrix}c heta_i&-s heta_i&0&0\s heta_i&c heta_i&0&0\0&0&1&0\0&0&0&1end{bmatrix}egin{bmatrix}1&0&0&0\0&1&0&0\0&0&1&d_i\0&0&0&1end{bmatrix}egin{bmatrix}1&0&0&a_i\0&1&0&0\0&0&1&0\0&0&0&1end{bmatrix}egin{bmatrix}1&0&0&0\0&calpha_i&-salpha_i&0\0&salpha_i&calpha_i&0\0&0&0&1end{bmatrix}i−1Ti=⎣⎢⎢⎡cθisθi00−sθicθi0000100001⎦⎥⎥⎤⎣⎢⎢⎡10000100001000di1⎦⎥⎥⎤⎣⎢⎢⎡100001000010ai001⎦⎥⎥⎤⎣⎢⎢⎡10000cαisαi00−sαicαi00001⎦⎥⎥⎤
i−1Ti=[cθi−sθicαisθisαiaicθisθicθicαi−cθisαiaisθi0sαicαidi0001]^{i-1}T_i=egin{bmatrix}c heta_i&-s heta_icalpha_i&s heta_isalpha_i&a_ic heta_i\s heta_i&c heta_icalpha_i&-c heta_isalpha_i&a_is heta_i\0&salpha_i&calpha_i&d_i\0&0&0&1end{bmatrix}i−1Ti=⎣⎢⎢⎡cθisθi00−sθicαicθicαisαi0sθisαi−cθisαicαi0aicθiaisθidi1⎦⎥⎥⎤
modified_DH1、modified_DH建立每个关节参考坐标系步骤:(1)找出关节轴i和i+1之间的公垂线或关节轴i和i+1的交点,以关节轴i和i+1的交点或公垂线与关节轴i的交点作为连杆坐标系{i}的原点;(2)规定ziz_izi轴沿关节轴i的指向;(3)规定xix_ixi轴沿公垂线的指向,如果关节轴i和i+1相交,则规定xix_ixi垂直于关节轴i和i+1所在平面。(4)按照右手定则确定yiy_iyi轴
2、modified_DH建模步骤:(1)aia_iai=沿xix_ixi轴,从ziz_izi移动到zi+1z_{i+1}zi+1的距离;(2)αialpha_iαi=绕xix_ixi轴,从ziz_izi旋转到zi+1z_{i+1}zi+1的角度;(3)did_idi=沿ziz_izi轴,从xi−1x_{i-1}xi−1移动到xix_{i}xi的距离;(4)θi heta_iθi=沿ziz_izi轴,从xi−1x_{i-1}xi−1旋转到xix_{i}xi的角度; 变换矩阵可以写成:i−1Ti=RX(αi−1)×DX(ai−1)×RZ(θi)×DZ(di)egin{aligned}^{i-1}T_i=R_X(alpha_{i-1}) imesD_X(a_{i-1}) imesR_Z( heta_{i}) imesD_Z(d_{i})end{aligned}i−1Ti=RX(αi−1)×DX(ai−1)×RZ(θi)×DZ(di)
i−1Ti=[cθi−sθi0ai−1sθicαi−1cθicαi−1−sαi−1−sαi−1disθisαi−1cθisαi−1cαi−1cαi−1di0001]^{i-1}T_i=egin{bmatrix}c heta_i&-s heta_i&0&a_{i-1}\s heta_icalpha_{i-1}&c heta_icalpha_{i-1}&-salpha_{i-1}&-salpha_{i-1}d_i\s heta_isalpha_{i-1}&c heta_isalpha_{i-1}&calpha_{i-1}&calpha_{i-1}d_i\0&0&0&1end{bmatrix}i−1Ti=⎣⎢⎢⎡cθisθicαi−1sθisαi−10−sθicθicαi−1cθisαi−100−sαi−1cαi−10ai−1−sαi−1dicαi−1di1⎦⎥⎥⎤
SDH与MDH比较(1)固连坐标系不同SDH方法关节i上固连的是i-1坐标系,即坐标系建在连杆的输出端;MDH关节i上固连的是i坐标系,即坐标系建在连杆的输入端。(2)坐标系变换顺序不同SDH方法是ZX类变换:先绕着i-1坐标系的的Zi-1轴旋转和平移,再绕着坐标系i的Xi轴进行旋转和平移;MDH方法是XZ类变换:先绕着i坐标系的的Xi轴旋转和平移,再绕着坐标系i的Zi轴进行旋转和平移;
8 机器人正运动学
目录 1.引言2.建立DH坐标系的技巧2.1理清关节和连杆2.2画z 轴2.3确定x 轴2.3.1x轴方向2.3.2x轴起始点(坐标系原点)2.4小结3.总结1.引言关于DH参数上一篇文章介绍了基本概念和物理意义,但是还有一些内容没有提到。这篇文章主要介绍DH坐标系建立的一些技巧。
2.建立DH坐标系的技巧DH参数本身并不复杂,但是最初我在应用DH参数对机器人建立坐标系时的感受就一个字,乱。乱的原因是比较多的,罗列一下有这么几个点:
在机器人上不太容易一一区分出各个连杆,而且连杆编号也容易乱无法确定一段距离是连杆偏距 还是连杆长度 难以确定坐标系的 轴方向建立完坐标系后发现通过DH变换无法使坐标系重合那么建立DH坐标系有没有什么技巧呢?还真有,而且很有效。下面我们来介绍一下如何快速建立机器人的DH坐标系。
2.1理清关节和连杆第一步至关重要,你得首先搞清楚哪个是关节1,哪个是连杆1,与连杆1固连的坐标系1原点在哪里等等。还是想再次强调DH坐标系是建立在连杆的传动轴也就是远离基座的那个轴。因此对于串联机器人来说关节,连杆,坐标系按照距离基座由近到远排列应该是这样的:首先肯定是关节1,其次是安装在关节1上的连杆1,然后是与连杆1固连的坐标系1,之后是关节2。请注意连杆1的坐标系 轴轴线实际是连杆2的驱动轴。
我们以一个六轴机器人建立DH坐标系为例,为了方便看清楚各个连杆,我把每个连杆涂成了不同的颜色,如下图所示。
想象一下如果没有给各个连杆涂上颜色,你还能一下子看出所有的连杆吗?你还能一下子区分出连杆1的坐标系应该建立在哪里吗?
2.2画z 轴第二步我们要确定各个连杆坐标系的 轴,这一步实际上是比较容易的,因为按照规则 轴应该是和关节轴同向的。所以这里你唯一需要搞清楚的是这些 轴分别是固连在哪个连杆上。由于DH参数是在传动轴上建立坐标系的(请原谅我已经无数次在强调这个问题,因为我曾经无数次掉进这个坑里),所以 轴肯定是建立在连杆远离基座一侧的那个轴上的。
以下我们把与连杆固连的坐标系涂成与连杆相近的颜色。请先在自己的脑海中构思一下,看看你建立的 轴与下面的图是一致的吗。
2.3确定x 轴第三步我们需要确定 轴,这一步是最关键也是比较困难的一部分。在这里需要确定的有两点,第一点你需要确定 轴的方向第二点你得搞清楚坐标系的原点在哪里,也就是需要确定 轴的起始点。
2.3.1x轴方向我们先解决第一点。DH坐标系的 轴是连杆的驱动轴和传动轴的公垂线。所以 轴的方向相对而言是比较容易获得的。我们知道两个不平行的向量的叉乘(外积)就是两个向量的公垂线了。所以我们定义:
这样你就可以确定连杆坐标系 轴的轴线了。最终 轴的指向你可以统一让它们指向传动轴。当驱动轴和传动轴平行时也很简单,你只需要画一条与两个轴都垂直且相交的向量,并且这个向量指向传动轴就可以了。
2.3.2x轴起始点(坐标系原点)接下来解决第二点。怎么确定坐标系 轴的起点(其实就是坐标系原点)。提前说明一下,当连杆的驱动轴和传动轴是异面直线时这个问题是不存在的,因为异面直线的公垂线有且仅有一条,这个时候原点已经随着 轴的确定一起确定下来了(就是 轴和 轴的交点)。
除了异面直线之外,驱动轴和传动轴还有两种关系,一个是平行关系,另一个是相交关系。这两种关系下驱动轴和传动轴的公垂线有无数条。在这个时候要如何确定坐标系的原点呢?
按照DH的规则,两个 轴之间公垂线长度代表的是抽象的连杆长度,两个 轴的公垂线长度代表的相邻两个连杆之间的偏距。你在确定坐标系原点时就需要考虑这些参数物理含义了。由于 轴已经全部确定了, 轴的方向也确定了,所以这个时候各个连杆的长度也就是DH参数中的 已经确定了。那么我们在选择 轴的起点时必须要保证经过上一个连杆i-1的坐标系绕 轴旋转和沿 轴平移后能让 和 重合。当你发现经过这样的变换不能让和重合时说明你的连杆i坐标系选择的原点有问题。
上面这么说还是太晦涩了,我们举个例子。上面的六轴机器人连杆2的驱动轴和传动轴平行,连杆3的驱动轴和传动轴相交,我们就以这两个连杆为例来说明坐标系原点的确定过程。
在这之前我们还是先把基坐标系和连杆1坐标系确定下来,通常基座的 轴指向机器人的正前方。因此基坐标系很容易就确定下来了。连杆1的驱动轴和传动轴是异面直线,因此连杆1的坐标系 轴也可以轻松地根据前面提到的叉乘公式确定。这样基座和连杆1的坐标系就确定完了,如下图所示。
接下来的连杆2和连杆3就比较特殊了。当你试图找到 和 的公垂线时你发现又无数条。对于这种平行的连杆怎么确定其 轴呢?其实很简单,你的连杆1坐标系不是已经确定好了嘛,只需要过这个坐标系原点作垂线与 相交就可以了。这其实是最简单的连杆,不要把这个问题想复杂了就好。如果不相信,你可以按照前面说的规则检验一下。连杆2的坐标系确定之后如下图所示。
接下来就是连杆3了,你会发现连杆3的驱动轴和传动轴是相交的。连杆3的 方向是容易确定的,因为只要驱动轴和传动轴不平行我们就可以利用叉乘公式确定确定 轴的方向。但是同样的,这样的 轴有无数个,要怎么选择呢?你可以试一下选 和 的交点。先告诉各位这是对的。其实可以多找几个点,你会发现无论原点选在除这个点之外的任何地方,你要么需要在某个中间步骤向轴平移,要么就是最终你需要在 轴方向再平移一段。这样我们就确定了连杆3的坐标系,如下图所示。观察后你会发现两个坐标系的原点重合,这说明连杆长度和连杆偏距都为0,这就是此类连杆的一个特点。
后面的连杆4也是类似的,驱动轴和传动轴相交,注意图里面的 很不明显,不要把 当成 哦。叉乘后发现 向下,原点当然也是在 和 的交点。后面的连杆也都大同小异。这里我就不一一介绍了。
最后的六轴机器人DH坐标系建立完成后如下图所示。
最后我们写出这个机器人的DH参数表如下表所示。
连杆编号offset1020030004050060000
关于offset项是叠加在上面的偏置量,你可以理解为机器人处于零位时,驱动轴和传动轴依然存在夹角。
2.4小结前面感觉啰嗦了很多,不知道有没有说清楚,这里简单总结一下:当连杆驱动轴和传动轴是异面直线,公垂线(唯一)就是连杆的 轴;当连杆的驱动轴和传动轴平行时,找到上一个连杆的坐标系原点,向当前连杆的 轴作垂线,垂足就是当前连杆原点,垂线就是 轴;当连杆的驱动轴和传动轴相交时,交点就是连杆坐标系原点,驱动轴和传动轴的叉乘就是 轴方向。
这一块还是需要各位仔细去品味的,相信你经过不断的思考和尝试,一定可以变得通透。写这篇博客挺费力的,作图时间很长,但是我真的在这个过程里受益匪浅,对DH坐标系的理解也更进了一步。如果你一下子还不能完全理解,千万别着急,可以先放着,过几天再看,相信一定会有新的收获。
3.总结这篇文章我们主要介绍了DH坐标系建立的一些技巧,下一篇文章会介绍修改DH参数以及和标准DH参数之间的差别。由于个人能力有限,所述内容难免存在疏漏,欢迎指出,欢迎讨论。
下一篇:9.机器人正运动学---修改DH参数