1 前言
DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数来描述坐标系i相对坐标系i-1的关系,即3个用来描述位置另外3个用来描述姿态。而DH参数法只需要4个参数,列出DH参数表并带入变换矩阵中可以轻易的得到机械手末端和基坐标系的位姿变换关系。
而现在主要有两种DH参数建模方法,其中标准DH主要适用在开式运动链的机械结构上,如现在市面上串联的多轴机械臂,而对闭链机构建立坐标系会发生坐标系重合的风险从而产生歧义;而改进DH参数应用范围更广,在闭式运动链结构建模上(如并联四足狗腿等)会使运动求解过程更加简单。
对于初学者只需记住标准DH和改进DH建模的主要区别为连杆上坐标系建立的位置不同。Standard DH方法将连杆的坐标系固定在连杆的后端,而Modify DH方法将连杆的坐标系固定在连杆的前端,见下图。
前面说DH参数法只需要4个参数而不是6个,是因为我们使用该方法时默认了两个限制条件。那就是坐标系之间没有沿Y轴的平移和绕Y的旋转!!!!
详情请见https://blog.csdn.net/zhelijun/article/details/85007805
2 两种建模方法步骤与应用
在此小的以一个三自由度串联腿为例采用两种方法分别进行进行建模带大家认识两者区别。(MATLAB代码见文末)
2.1标准DH法
建系之前注意两个要点如下:
(1) 坐标轴Xi与坐标轴Zi-1垂直
(2) 坐标轴Xi与坐标轴Zi-1相交
然后我们再以各旋转关节旋转轴或直线关节运动方向为相应的Z轴,以Zi-1和Zi轴的公垂线方向(一般为各自杆长方向)建立Xi轴,Yi轴按右手定则确定,最终确立各个连杆坐标系如下:注:建立坐标系有一个易错点如下方两图,需要对照两种DH建模方法好好理解吃透。(对于标准DH法来说,坐标系是建立在相应杆件的后部,则其X轴方向是由前一坐标Z轴指向该关节Z轴的公垂线方向,所以下图左方才是符合标准建模方法的!!!)
根据DH四个参数的定义:
(1) 连杆长度a:zi-1轴与zi轴的公法线长度,为 杆i的连杆长(并不是物理意义上的两杆长)
(2) 连杆扭转角α:关节轴线zi-1到zi的转角,以xi轴为转轴(-pi~pi)
(3) 连杆偏距d:从xi-1轴与xi轴的公法线有向距离(正向沿zi-1方向)
(4) 关节转角θ:轴线xi-1到xi的转角,以zi-1轴为转轴(-pi~pi)
得到DH参数表:
表 1 DH参数
Link | offset+θi-1 | di-1 | ai | αi |
---|---|---|---|---|
1 | pi/2+θ1 | 0 | 0 | pi/2 |
2 | -5pi/6+θ2 | 0 | L2 | 0 |
3 | - pi/2+θ3 | 0 | L3 | 0 |
注:offset为MATLAB机器人工具箱中对应关节的初始偏角
建立模型如下图:主要MATLAB代码如下:
% 定义各个连杆,默认为转动关节
% theta d a alpha
f(1)=Link([ 0 0 0 pi/2] ); f(1).qlim=[-pi,pi]; f(1).offset=pi/2;
f(2)=Link([ 0 0 0.35 0] ); f(2).qlim=[-pi,pi]; f(2).offset=-5*pi/6;
f(3)=Link([ 0 0 0.3 0] ); f(3).qlim=[-pi,pi]; f(3).offset= -pi/2;
sta=SerialLink(f,'name','标准');
sta.tool = transl(0 ,0 ,0);
sta.plot([0 0 0]);
sta.teach(); %机器人示教界面
2.2改进DH法
以各旋转关节旋转轴或直线关节运动方向为相应的Z轴,Xi轴沿着Zi和Zi+1轴的公垂线(一般为各自杆长方向)由关节轴i指向关节轴i+1,如果关节轴i指向关节轴i+1相交,则Xi轴垂直于两轴平面建立,最终确立各个连杆坐标系如下图:
根据DH四个参数的定义:
(1) 连杆长度a:zi-1轴与zi轴的公法线长度,为杆i的连杆长(并不是物理意义上的两杆长)
(2) 连杆扭转角α:关节轴线zi-1到zi的转角,以xi-1轴为转轴(-pi~pi)
(3) 连杆偏距d:从xi-1轴与xi轴的公法线有向距离(正向沿zi方向)
(4) 关节转角θ:轴线xi-1到xi的转角,以zi轴为转轴(-pi~pi)
得到改进DH参数表:
表 2 改进DH参数
Link | offset+θi | di | ai-1 | αi-1 |
---|---|---|---|---|
1 | -pi/2+θ1 | 0 | 0 | pi/2 |
2 | pi/6+θ2 | 0 | L2 | -pi/2 |
3 | - pi/2+θ3 | 0 | L3 | 0 |
由于改进DH法是将坐标系建立在相应杆件头部,故采用MDH法建立的模型末端杆件只有头部转轴而没有杆长,为了模型和SDH建立的保持一致可以加一个工具坐标系,两种效果如图:相关代码如下:文章来源:https://www.toymoban.com/news/detail-783432.html
d1 = 0.35;
d2 = 0;
d3 = 0;
d4 = 0;
a1 = 0.25;
a2 = 0;
a3 = 0.35;
a4 = 0.30;
alpha1 = pi/2;
alpha2 = -pi/2;
alpha3 = 0;
alpha4 = 0 ;
% 定义各个连杆,默认为转动关节
% theta d a alpha
L(1)=Link([ 0 d1 a1 alpha1] ,'modified'); L(1).qlim=[-pi,pi]; L(1).offset=-pi/2;
L(2)=Link([ 0 d2 a2 alpha2] ,'modified'); L(2).qlim=[-pi,pi]; L(2).offset= pi/6;
L(3)=Link([ 0 d3 a3 alpha3] ,'modified'); L(3).qlim=[-pi,pi]; L(3).offset=-pi/2;
% 把上述连杆整合
OLRob=SerialLink(L,'name','改进');
view(3);
% 定义机器人基坐标和工具坐标的变换
%OLRob.base = transl(0 ,-0.7 ,0);
OLRob.tool = transl(0.3 ,0 ,0);
view(77,22);
title('改进-有工具坐标');
OLRob.plot([0 0 0]);
OLRob.teach(); %机器人示教界面
最后附上所有代码如下:
%% 改进DH
clear ; clc; close all;
% 机器人各连杆DH参数
d1 = 0.35;
d2 = 0;
d3 = 0;
d4 = 0;
a1 = 0.25;
a2 = 0;
a3 = 0.35;
a4 = 0.30;
alpha1 = pi/2;
alpha2 = -pi/2;
alpha3 = 0;
alpha4 = 0 ;
% 定义各个连杆,默认为转动关节
% theta d a alpha
L(1)=Link([ 0 d1 a1 alpha1] ,'modified'); L(1).qlim=[-pi,pi]; L(1).offset=-pi/2;
L(2)=Link([ 0 d2 a2 alpha2] ,'modified'); L(2).qlim=[-pi,pi]; L(2).offset= pi/6;
L(3)=Link([ 0 d3 a3 alpha3] ,'modified'); L(3).qlim=[-pi,pi]; L(3).offset=-pi/2;
% 把上述连杆整合
OLRob=SerialLink(L,'name','改进');
view(3);
% 定义机器人基坐标和工具坐标的变换
%OLRob.base = transl(0 ,-0.7 ,0);
OLRob.tool = transl(0.3 ,0 ,0);
view(77,22);
title('改进-有工具坐标');
OLRob.plot([0 0 0]);
OLRob.teach(); %机器人示教界面
%% 标准DH方法
figure(2)
view(3);
% 定义各个连杆,默认为转动关节
% theta d a alpha
f(1)=Link([ 0 0 0 pi/2] ); f(1).qlim=[-pi,pi]; f(1).offset=pi/2;
f(2)=Link([ 0 0 0.35 0] ); f(2).qlim=[-pi,pi]; f(2).offset=-5*pi/6;
f(3)=Link([ 0 0 0.3 0] ); f(3).qlim=[-pi,pi]; f(3).offset= -pi/2;
sta=SerialLink(f,'name','标准');
sta.tool = transl(0 ,0 ,0);
sta.plot([0 0 0]);
sta.teach(); %机器人示教界面
参考资料
https://zhuanlan.zhihu.com/p/66066294文章来源地址https://www.toymoban.com/news/detail-783432.html
到了这里,关于【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!