机器人运动学的研究依赖于机器人的模型的建立,目前较为多见的两种方法分别是Denavit-Hartenberg建模法(简称:D-H建模法)。该方法时由Denavit和Hartenberg于19955年提出的一种为关节链中的每一个杆件建立一个坐标系的矩阵方法,根据其建模过程中的参数设置不同,可分为标准D-H建模法和改进D-H建模法两种,下面将对上述两种不同的D-H建模方法进行阐述。
机器人连杆与关节的编号
- 先标号,再建系。
- 连杆编号:基座为杆0,从基座往后依次定义为杆1,杆2,…,杆i;
- 关节编号:杆i离基座近的一端(近端)的关节为关节i,远的一端(远端)为关节i+1。
为便于理解,这里我把连杆的近端用绿色表示,远端用橙色表示,且远端驱动近端转动。大家只要记住一句话,连杆近端关节的标号和连杆标号是一致的。
D-H建模相关参数介绍
运用D-H建模的基本步骤为:建立连杆坐标系->求解连杆间变换矩阵->求解机器人末端相对基座的位姿矩阵;机器人的每根连杆的几何尺寸都可以用四个参数来描述,这四个参数分别为: a 、 α 、 d 、 θ a、\alpha、 d、\theta a、α、d、θ。其中:
- a a a表示连杆的长度。
- α \alpha α表示连杆的扭角。
这两个参数描述连杆本身的特征。 - d d d表示两个相邻连杆之间的距离。
- θ \theta θ 表示两个相邻连杆之间的夹角。
这两该参数描述相邻连杆之间的关系。对于旋转关节来说, θ \theta θ 就是关节变量, a 、 α 、 d a、\alpha、 d a、α、d是关节参数;对于平移关节来说, d d d 就是关节变量, a 、 α 、 θ a、\alpha、 \theta a、α、θ是关节参数,如下图所示。
标准D-H法和改进D-H法建模区别
主要区别一:连杆坐标系建立的位置不同。标准D-H建模法将连杆i的坐标系固定在连杆的远端,改进D-H建模法把连杆i的坐标系固定在连杆的近端。
主要区别二:执行变换的的顺序不同。按照标准D-H建模法变换时四个参数相乘的顺序依次为d—>θ—>a—>α,而改进D-H建模法则按照α—>a—>θ—>d(正好与标准D-H建模法相反)。详细区别可见下图,其中STD_DH表示标准D-H建模法,MOD_DH表示改进D-H建模法。
MATLAB中的建模实现
标准D-H建模法在MATLAB中编写如下程序:
%标准DH
%Link(DH,option):
%DH = [THETA D A ALPHA SIGMA]//我的代码中此处定义theta的初始值无效
L1 = Link([0 0.2 1 pi/4 0],'standard');
L2 = Link([0 0.2 1 pi/4 0],'standard');
L3 = Link([0 0 0.5 pi/4 0],'standard');
robot = SerialLink([L1 L2 L3]); %建立连杆机器人
robot.plot([0 0 0]) %显示并赋三个关节变量theta值都为0//此处才可以初始theta
对比代码中的D-H四个参数定义和上图坐标系建立关系,可知四个参数含义:
- theta( θ i \theta_{i} θi):绕 Z i − 1 Z_{i-1} Zi−1轴,从 X i − 1 X_{i-1} Xi−1旋转到 X i X_{i} Xi的角度
- D( d i d_{i} di):沿 Z i − 1 Z_{i-1} Zi−1轴,从 X i − 1 X_{i-1} Xi−1移动到 X i X_{i} Xi的距离
- A( a i a_{i} ai):沿 X i X_{i} Xi轴,从 Z i − 1 Z_{i-1} Zi−1移动到 Z i Z_{i} Zi的距离
- alpha( α i \alpha_{i} αi):绕 X i X_{i} Xi轴,从 Z i − 1 Z_{i-1} Zi−1旋转到 Z i Z_{i} Zi的角度
改进D-H建模法在MATLAB中编写如下程序:
%改进DH
%Link(DH,option):DH = [THETA D A ALPHA SIGMA]
L1 = Link([0 0.2 1 pi/4 0],'modified');
L2 = Link([0 0.2 1 pi/4 0],'modified');
L3 = Link([0 0 0.5 pi/4 0],'modified');
robot = SerialLink([L1 L2 L3]); %建立连杆机器人
robot.plot([0 0 0]) %显示并赋三个关节变量theta的初始值都为0
程序运行结果:
对比代码中的D-H四个参数定义和上图坐标系建立关系,可知四个参数含义:
- theta( θ i \theta_{i} θi):绕 Z i Z_{i} Zi轴,从 X i − 1 X_{i-1} Xi−1旋转到 X i X_{i} Xi的角度
- D( d i d_{i} di):沿 Z i Z_{i} Zi轴,从 X i − 1 X_{i-1} Xi−1移动到 X i X_{i} Xi的距离
- A( a i a_{i} ai):沿 X i X_{i} Xi轴,从 Z i Z_{i} Zi移动到 Z i + 1 Z_{i+1} Zi+1的距离
- alpha( α i \alpha_{i} αi):绕 X i X_{i} Xi轴,从 Z i Z_{i} Zi旋转到 Z i + 1 Z_{i+1} Zi+1的角度
注:上文中所涉及到的程序运行时,需安装MATLAB机器人工具箱,安装方式见:https://mp.weixin.qq.com/s?__biz=MzU2OTUxNTA1OQ==&mid=2247487384&idx=3&sn=4436f84374a26791b36943050275e3ff&chksm=fcfcc2c4cb8b4bd212cdc7c1074049d06dd21b6ff692f115ec3153a3c6a782322d0484e8efb2&token=1932408492&lang=zh_CN#rd