机械臂D-H参数法分析

news/2024/11/29 6:40:24/

文章目录

  • 前言
  • 连杆D-H参数法介绍
  • D-H参数法的坐标变换矩阵
  • 特殊情况加实例分析
  • 方法总结

前言

笔者在看D-H参数法的时候对此方法的适用性产生了好奇,通过个人构思推导得出传统D-H参数表有时不适用的原因,并相出一种简洁的判断方法,列在文章最末,原理十分简单,欢迎指点。

本人对手边的一只五自由度旋转舵机机械手进行了坐标系的建模。为了方便理解画了一个示意图,图省事所以画成了圆柱形,各个旋转关节不影响理解即可。

机械臂在底座上有四节连杆。第一节为相对于底座转动的连杆。第二节相对于第一节的连轴处旋转。第三节相对于第二节的连轴处旋转,第四节相对于第三节的连轴处旋转。第四节末端为机械手工作部件,抓取夹,绕第四节末端的轴转动,由于不关心夹子的开合角度,便简化为一个示意的形状。其中第四节的转轴距第四节形心轴向后偏了距离为h。

为了看得更清楚,在建模软件中调整一下角度,可看出机械臂大致的运动姿态。

下面进入正题,第一部分介绍推算D-H参数与坐标轴方向的方法;第二部分介绍一下根据D-H参数得到的坐标变换矩阵;第三部分为我在建模时遇到的问题和自己的分析;第四部分为我总结的步骤。

连杆D-H参数法介绍

建立连杆坐标系的基本原则如图所示。规定连杆 i i i的坐标系为 i i i,坐标系 i i i z i z_i zi轴与关节轴 i i i重合,坐标系 的原点位于连杆长度 a i a_i ai与关节轴线 i i i的交点处,坐标系 i i i x i x_i xi轴沿着 a i a_i ai由轴 i i i指向轴 i + 1 i+1 i+1,坐标系 i i i y i y_i yi由右手定则确定。

如图所示,表示了机器人的两个连杆 i − 1 i-1 i1 i i i,图中的四个参数 α i − 1 \alpha_{i-1} αi1 a i − 1 a_{i-1} ai1 d i d_i di θ i \theta_i θi为连杆 i i i的D-H参数。

根据蔡自兴老师的《机器人学》第三版第42页的Craig法则:可得出四个参数的计算方法。

a i − 1 a_{i-1} ai1=沿 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1移动到 z i z_i zi的距离。
α i − 1 \alpha_{i-1} αi1=绕 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1旋转到 z i z_i zi的转角。
d i d_i di=沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1移动到 x i x_i xi的距离。
θ i \theta_i θi=沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1旋转到 x i x_i xi的转角。

D-H参数法的坐标变换矩阵

建立相邻连杆的坐标系变换的一般形式,然后将这些变换联系起来,就可以求出最后一个连杆相对于基坐标系的位置和姿态,即运动学方程的矩阵表示,如图所示。连杆变换即坐标系 i − 1 i-1 i1向坐标系 i i i的变换。变换过程可以看成是坐标系 i − 1 i-1 i1经过4次子变换得到了坐标系 i i i,建立3个中间坐标系 R R R Q Q Q P P P。坐标系 i − 1 i-1 i1先绕坐标轴 x i − 1 x_{i-1} xi1旋转 α i − 1 \alpha_{i-1} αi1得到坐标系 R R R;坐标系 R R R沿着轴线 i − 1 i-1 i1和轴线 i i i的公垂线方向移动 a i − 1 a_{i-1} ai1,得到坐标系 Q Q Q;坐标系 Q Q Q绕坐标轴 z Q z_Q zQ旋转 θ i \theta_i θi,得到坐标系 P P P;坐标系 P P P沿着坐标轴 z P z_P zP方向移动 d i d_i di,得到坐标系 i i i

由坐标系变换法则可知,这四个变换可以用四个齐次变换矩阵表示,分别是 R i − 1 T _{R}^{i-1} T Ri1T Q R T _{Q}^R T QRT P Q T _{P}^Q T PQT i P T _{i}^P T iPT,根据坐标变换的链式法则,坐标系 i − 1 i-1 i1到坐标系 i i i的变换矩阵可以写成
i − 1 i T = R i − 1 T Q R T P Q T i P T = R o t ( x , α i − 1 ) T r a n s ( x , a i − 1 ) R o t ( z , θ i ) T r a n s ( z , d i ) = [ c o s θ i − s i n θ i 0 a i − 1 s i n θ i c o s α i − 1 c o s θ i c o s α i − 1 − s i n α i − 1 − d i s i n α i − 1 s i n θ i s i n α i − 1 c o s θ i s i n α i − 1 c o s α i − 1 d i c o s α i − 1 0 0 0 1 ] _{i-1}^i T=_{R}^{i-1} T_{Q}^R T_{P}^Q T_{i}^P T =Rot(x,\alpha_{i-1})Trans(x,a_{i-1})Rot(z,\theta_{i})Trans(z,d_i) =\begin{bmatrix} cos\theta_i&-sin\theta_i&0&a_{i-1}\\ sin\theta_icos\alpha_{i-1}&cos\theta_icos\alpha_{i-1}&-sin\alpha_{i-1}&-d_isin\alpha_{i-1}\\ sin\theta_isin\alpha_{i-1}&cos\theta_isin\alpha_{i-1}&cos\alpha_{i-1}&d_icos\alpha_{i-1}\\ 0&0&0&1 \end{bmatrix} i1iT=Ri1TQRTPQTiPT=Rot(x,αi1)Trans(x,ai1)Rot(z,θi)Trans(z,di)=cosθisinθicosαi1sinθisinαi10sinθicosθicosαi1cosθisinαi100sinαi1cosαi10ai1disinαi1dicosαi11

其中, R o t ( x , α i − 1 ) Rot(x,\alpha_{i-1}) Rot(x,αi1)表示坐标系绕 x x x轴旋转 α i − 1 \alpha_{i-1} αi1 T r a n s ( x , a i − 1 ) Trans(x,a_{i-1}) Trans(x,ai1)表示沿着 x x x轴平移 a i − 1 a_{i-1} ai1

在得到每个连杆变换后,通过链式法则就可以得到执行机构相对于基坐标系的位姿,即机械臂的运动学方程,可由齐次矩阵 0 5 T _0^5T 05T表示。
5 0 T = 1 0 T 2 1 T 3 2 T 4 3 T 5 4 T = [ n x o x a x P x n y o y a y P y n z o z a z P z 0 0 0 1 ] _5^0T=_1^0T _2^1T _3^2T _4^3T _5^4T=\begin{bmatrix} n_x&o_x&a_x&P_x\\ n_y&o_y&a_y&P_y\\ n_z&o_z&a_z&P_z\\ 0&0&0&1\\ \end{bmatrix} 50T=10T21T32T43T54T=nxnynz0oxoyoz0axayaz0PxPyPz1

特殊情况加实例分析

上述方法中,转轴仅绕参考坐标系即上一个关节的 x x x轴与 z z z轴旋转,移动。其中绕 z z z轴的转角为关节舵机的主动转角,若舵机转角为0, θ \theta θ为0,即仅绕 x x x轴产生转动,转动后的新 x x x轴应当与原 x x x轴平行。

从图中可以看出,这是一个五自由度的机械臂,所有关节均为转动关节。最底下为底座,将其圆心视为全局坐标系的 O O O点,竖直向上方向为全局坐标系的 z z z正方向,向前的方向为 x x x轴正方向。底座的高度为 l 0 l_0 l0

在底座上有四节连杆。第一节为相对于底座转动的连杆,长度为 l 1 l_1 l1。第二节相对于第一节的连轴处旋转,长度为 l 2 l_2 l2。第三节相对于第二节的连轴处旋转,长度为 l 3 l_3 l3,第四节相对于第三节的连轴处旋转,长度为 l 4 l_4 l4。第四节末端为机械手工作部件,抓取夹,绕第四节末端的轴转动,其中此转轴距第四节形心轴向后偏了距离为 h h h,在此图中状态看为向全局坐标系x轴负方向偏了 h h h

根据上述规则,将图中机械臂各关节坐标系一一标出。并得到D-H参数表。

连杆关节角 θ i / ° \theta_i/° θi/°连杆偏移量 d i / m d_i/m di/m扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/°连杆长度 a i − 1 / m a_{i-1}/m ai1/m
10 l 0 l_0 l000
20 l 1 l_1 l1 − 90 ° -90° 90°0
3-90°00 l 2 l_2 l2
4000 l 3 l_3 l3
5-90°0 − 90 ° -90° 90°0

其中前四个关节的D-H参数都依照规则较为简单地求出,但是第五关节比较奇怪。按照描述 a i − 1 a_{i-1} ai1为沿 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1移动到 z i z_i zi的距离。 d i d_i di为沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1移动到 x i x_{i} xi的距离。

z 4 z_4 z4移动到 z 5 z_5 z5的距离为h,但是在 x 4 x_4 x4上的分量为0; x 4 x_4 x4 x 5 x_5 x5相交,故 d d d也为 0 0 0
但这很明显是不可能的,此关节的两个空间尺度 l 4 l_4 l4 h h h都没有用上,那这个关节岂不是变成质点了吗?

于是我尝试了三种思路得到参数
(1)不管轴方向的分量,强行将此二值代入,认为:

连杆关节角 θ i / ° \theta_i/° θi/°连杆偏移量 d i / m d_i/m di/m扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/°连杆长度 a i − 1 / m a_{i-1}/m ai1/m
5 θ 5 \theta_5 θ5 l 4 l_4 l4 − 90 ° -90° 90° h h h

并得到变换矩阵 5 4 T _5^4T 54T
5 4 T = [ c o s θ 5 − s i n θ 5 0 h 0 0 1 l 4 − s i n θ 5 − c o s θ 5 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix} cos\theta_5&-sin\theta_5&0&h\\ 0&0&1&l_4\\ -sin\theta_5&-cos\theta_5&0&0\\ 0&0&0&1 \end{bmatrix} 54T=cosθ50sinθ50sinθ50cosθ500100hl401

按照机械臂的初始状态, θ 5 = − 90 ° \theta_5=-90° θ5=90°,代入得
5 4 T = [ 0 1 0 h 0 0 1 l 4 1 0 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&1&0&h\\0&0&1&l_4\\1&0&0&0\\0&0&0&1\end{bmatrix} 54T=001010000100hl401,明显不对

(2)考虑到坐标系 5 5 5的原点相对于坐标系 4 4 4 x x x方向位移为 l 4 l_4 l4 y y y方向为 − h -h h,猜测为

连杆关节角 θ i / ° \theta_i/° θi/°连杆偏移量 d i / m d_i/m di/m扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/°连杆长度 a i − 1 / m a_{i-1}/m ai1/m
5 θ 5 \theta_5 θ5-h-90° l 4 l_4 l4

可得坐标变换矩阵 5 4 T = [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix} 54T=001010000100l4h01,坐标系 5 5 5的原点代入求该点在坐标系 4 4 4对应的坐标: [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] [ 0 0 0 1 ] = [ l 4 − h 0 1 ] \begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}0\\0\\0\\1\end{bmatrix}=\begin{bmatrix}l_4\\-h\\0\\1\end{bmatrix} 001010000100l4h010001=l4h01,这次好像对了,再将点(1,2,3)代入试试 [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] [ 1 2 3 1 ] = [ 2 + l 4 3 − h 1 1 ] \begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}1\\2\\3\\1\end{bmatrix}=\begin{bmatrix}2+l_4\\3-h\\1\\1\end{bmatrix} 001010000100l4h011231=2+l43h11,可观察出在坐标系4中应当为 ( 3 + l 4 , − 1 − h , − 2 ) (3+l_4,-1-h,-2) (3+l4,1h,2),所以此矩阵错误。

(3) 这是为什么呢,我观察了下,现在它是 − 90 ° , -90°, 90°我把它转回去看看。即绕 z 5 z_5 z5轴正转 90 90 90度。

可以看出 x 5 x_5 x5 x 4 x_4 x4并非平行,相反地, y 5 y_5 y5 y 4 y_4 y4是平行的。说明坐标系 5 5 5为绕 y y y轴转动了 90 90 90度,然后在 x x x y y y方向产生了位移。这个变换矩阵应当自行计算:
5 4 T = T r a n s ( y , − h ) T r a n s ( x , l 4 ) R o t ( y , 90 ° ) R o t ( z , θ 5 ) = [ 1 0 0 l 4 0 1 0 − h 0 0 1 0 0 0 0 1 ] [ 0 0 1 0 0 1 0 0 − 1 0 0 0 0 0 0 1 ] [ c o s θ 5 − s i n θ 5 0 0 s i n θ 5 c o s θ 5 0 0 0 0 1 0 0 0 0 1 ] _5^4T=Trans(y,-h)Trans(x,l_4)Rot(y,90°)Rot(z,\theta_5) =\begin{bmatrix}1&0&0&l_4\\0&1&0&-h\\0&0&1&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}0&0&1&0\\0&1&0&0\\-1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}cos\theta_5&-sin\theta_5&0&0\\sin\theta_5&cos\theta_5&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} 54T=Trans(y,h)Trans(x,l4)Rot(y,90°)Rot(z,θ5)=100001000010l4h010010010010000001cosθ5sinθ500sinθ5cosθ50000100001

= [ 0 0 1 l 4 s i n θ 5 c o s θ 5 0 − h − c o s θ 5 s i n θ 5 0 0 0 0 0 1 ] =\begin{bmatrix}0&0&1&l_4\\sin\theta_5&cos\theta_5&0&-h\\-cos\theta_5&sin\theta_5&0&0\\0&0&0&1\end{bmatrix} =0sinθ5cosθ500cosθ5sinθ501000l4h01

θ = − 90 ° \theta=-90° θ=90°代入得 5 4 T = [ 0 0 1 l 4 − 1 0 0 − h 0 − 1 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&0&1&l_4\\-1&0&0&-h\\0&-1&0&0\\0&0&0&1\end{bmatrix} 54T=010000101000l4h01,再将点 ( 1 , 2 , 3 ) (1,2,3) (1,2,3)代入试试 [ 0 0 1 l 4 − 1 0 0 − h 0 − 1 0 0 0 0 0 1 ] [ 1 2 3 1 ] = [ 3 + l 4 − 1 − h − 2 1 ] \begin{bmatrix}0&0&1&l_4\\-1&0&0&-h\\0&-1&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}1\\2\\3\\1\end{bmatrix}=\begin{bmatrix}3+l_4\\-1-h\\-2\\1\end{bmatrix} 010000101000l4h011231=3+l41h21,正确。

反复验证,此种方法得到的矩阵应该不存在问题。

方法总结

于是就出现了问题,难道传统 D − H D-H DH参数法是错的?那肯定不是,之前的学者们肯定遇到了各种特殊情况,并且给出了解决方法,但我觉得书上描述的针对一般性问题的描述过于复杂,在此,我想出了一种比较快速的方法。

根据前面的描述,若舵机转角为 0 0 0 θ \theta θ 0 0 0,即仅绕 x x x轴产生转动,转动后的新 x x x轴应当与原 x x x轴平行。

故,看到机械臂关节后的建立坐标转换矩阵的步骤为:

(1)根据 C r a i g Craig Craig规则,确定各原点以及 x i , y i , z i x_i,y_i,z_i xi,yi,zi 的方向。并根据规则算出此状态时的角度 θ i 0 \theta_{i0} θi0
(2)将关节 i i i沿转轴 z i z_i zi旋转 − θ i 0 -\theta_{i0} θi0,得到关节 i i i相对于上一个转角为 0 0 0时的坐标系,观察此时的 x x x轴是否与上一个关节的 x x x轴平行,若平行,则满足前述规则,直接求出 D − H D-H DH参数,并代入矩阵

[ c o s θ i − s i n θ i 0 a i − 1 s i n θ i c o s α i − 1 c o s θ i c o s α i − 1 − s i n α i − 1 − d i s i n α i − 1 s i n θ i s i n α i − 1 c o s θ i s i n α i − 1 c o s α i − 1 d i c o s α i − 1 0 0 0 1 ] \begin{bmatrix}cos\theta_i&-sin\theta_i&0&a_{i-1}\\ sin\theta_icos\alpha_{i-1}&cos\theta_icos\alpha_{i-1}&-sin\alpha_{i-1}&-d_isin\alpha_{i-1}\\ sin\theta_isin\alpha_{i-1}&cos\theta_isin\alpha_{i-1}&cos\alpha_{i-1}&d_icos\alpha_{i-1}\\ 0&0&0&1\\ \end{bmatrix} cosθisinθicosαi1sinθisinαi10sinθicosθicosαi1cosθisinαi100sinαi1cosαi10ai1disinαi1dicosαi11

(3)若此时的 x x x轴与上一个关节的 x x x轴不平行,则必定有绕 y y y轴的转动,此时需要观察,另行推算出坐标变换矩阵。一般优先考虑转角,后考虑位移。一般情况下机械臂不会有很奇怪的角度,通过观察可得到沿 x x x y y y轴的转角。若同时具有 x x x y y y轴的转角并且角度不是 90 90 90的倍数,也可根据坐标轴之间的夹角求出转角。

另:在上面那个机械臂的例子中 x 3 x_3 x3 x 4 x_4 x4也不是平行的,但考虑到此状态的 θ = − 90 ° \theta=-90° θ=90°,将 θ 3 \theta_3 θ3正转 90 ° 90° 90°后, x 3 x_3 x3 x 4 x_4 x4平行。

2019-01-03 上海


http://www.ppmy.cn/news/261232.html

相关文章

J1800N-D2H主板升级bios,安装Fedora20,并搭建开发环境

 安装过程如下:以fedora20桌面版为例 准备工作:下载UtralSO用作安装盘的制作工具,下载win8.1,下载fedora20桌面版,在技嘉官网下载mb_utility_appcenter_soc.exe,mb_utility_atbios…

三维重建——D2HC-RMVSNet网络详解

前言 之前在做MVS的学习接触到了MVSNet,这钟基于深度学习的方法是目前的一个趋势,因此值得我花大功夫去研究一番。但是现在网上的资料很少,特别是中文的,能找到的一般就是MVSNet或者是R-MVSNet。 上周在排行耪上看见了d2hc网络&a…

CnOpenData全国养老机构数据

一、数据简介 养老机构指为老年人提供集中居住和照料服务的机构,县级以上地方人民政府民政部门负责本行政区域内养老机构的指导、监督和管理。其他有关部门依照职责分工对养老机构实施监督。 与其他服务不同的是,养老服务是一种全人、全员、全程服务,养老…

第12章:SpringMVC执行流程

一、SpringMVC执行流程 1.SpringMVC常用组件 ①、DispatcherServlet:前端控制器,框架提供。 作用:统一处理请求和响应,整个流程的控制中心,由它调用其他组件处理用户的请求 ②、HandlerMapping:处理器映射器&#…

uniapp和springboot微信小程序开发实战:开发环境准备以及技术选型

文章目录 开发工具STSHBuilder X其他工具技术选型前端开发vueelementUI后端springbootmybatisplusJWT和shiro开发工具 STS STS是开发springboot项目的利器,是Eclipse的一个版本,全称是SpringToolSuite STS下载地址 HBuilder X 下载地址

学计算机类专业要什么牌子笔记本,请问学计算机专业的大学生买什么牌子的笔记本比较合适...

宁宁是大卟點 回答数:2 | 被采纳数:46 2019-03-26 12:28:47 办公用途,平面设计类吃处理器的能力。游戏,3d设计类吃显卡能力。不管那种需求,内存容量都是需要有合理的选择(类如看机器是否支持扩展)。不管台式本子都一…

笔记本电脑购买指南与建议-知识点介绍

前言 刚进入学校的新生们一大笔开销就是买笔记本了,但是很多同学不知道电脑的配置怎么样,不清楚各种显卡,内存什么配置好,又不知道价位是否是同等价位当中性价比最高的,那么今天我们就简单介绍下笔记本的各种配置 1C…

学python笔记本什么牌子好且实惠实用_想自学python,应该买什么牌子的笔记本?...

建议入手:macpro。个人不推荐买联想系列的电脑,thinkpad不要入手,原因: 1、python变成主要是命令行,各种命令和脚本,在mac终端非常方便。 2、mac电脑续航久、品质有保障 3、联想系列用1-2年就卡的不行 …