文章目录
0 引言
在了解了如何描述末端执行器的位姿之后,接下来我们就可以实现对机械臂的数学建模。建模的工具有很多种,本文介绍一种基于标准DH参数法与Matlab的Robotics Toolbox - Peter Corke库来实现此过程,并尝试实现6自由度机器人的仿真运动。
强烈推荐b站教学视频MATLAB机器人工具箱10.4 机械臂仿真教学(未完结),并且强烈建议大家先提前了解机器人位姿相关知识。本文多数内容基于自己的理解与参考中的链接,不妥之处多多指正。
1 预备知识
不严格的说,机械臂大体上可以分成三种结构:连杆(link),关节(又叫轴,axis)与基座(base)。直觉上说,我们会把坐标系固定在关节上,而非连杆上;基座指的是机器人的底座,是不动的,它又被称为连杆0。
每个坐标系(除了基座上的)我们都可以视为一个“自由度”,这意味着这个连杆是可以运动的。一般来说一个连杆只有一个自由度,要么是旋转,要么是移动,也可能有两个自由度。对于不同的连杆,建模方法是有所差异,但大致相同。
1.1 标准DH建模法
1.1.1 基本概念
建模的主要目的之一是为了保存两个关节与他们之间连杆的信息(例如连杆长度、旋转角度等),有了这些描述,我们就可以从基座开始,一步步把机械臂重新画出来。
标准DH法是一种常用的定义连杆坐标系的规则,由J Denavit,RS Hartenberg于1956年提出。其具体规则为图2所示:
PS:实际建模过程中,坐标系 O i − 1 O_{i-1} Oi−1与坐标系 O i O_i Oi’ 重合,这意味着轴 x i x_i xi与轴 z i − 1 z_{i-1} zi−1总是垂直相交。这样,我们就能用更少的参数来表达这些关节和连杆(我所指的信息是指此处的 a 、 α 、 θ a、\alpha、\theta a、α、θ);并且实际建模的过程,我们大多数情况只关心z轴与x轴上旋转、位移的信息。
与其叫做标准DH建模法,笔者认为叫做提线木偶可能更好理解一些。它的核心就是,需要把坐标系建立在连杆远离基座方向的关节的那一端(例如图1中的坐标系 O i O_i Oi和连杆 i i i,以此**“牵引着”**这个连杆的旋转或者移动,就像使用提线木偶一样。更形象一点:使用左手抓住右手指尖,然后拉着指尖来控制右手臂的运动,你的手臂就是连杆,你的右手指尖的位置就是关节坐标系的位置,这就是标准DH建模法的“感觉”。
补充:改进DH建模法
还有一种方法叫做改进DH建模法,它的核心就和标准DH建模法相反,它把坐标系建在连杆的靠近基座的那一个关节上,它的感觉就比如:用右手的手腕,来主动控制右手掌的旋转。不过,现实建模过程区分它们最严谨的方法,还是它们获取数据的顺序。
1.1.2 DH参数表格
我们建模过程获得的信息是怎么样的?如果我们有 n n n个连杆,我们获得的信息的排布可能是一个 n × 4 n\times 4 n×4(如果把基座看做连杆,例如此处的连杆0)大小的表格,就比如图3:
这四个参数分别是:
1.: θ \theta θ表明从上一个关节所对应的坐标系的z轴,该旋转多少角度(逆时针为正);
2.: d d d表明沿着上一个关节所对应的坐标系的z轴,该移动多少距离;
3.: a a a表明沿着上一个关节所对应的坐标系的x轴,该移动多少距离(这个时候就已经到达);
4.: α \alpha α表明沿着上一个关节所对应的坐标系的x轴,该旋转多少角度(它可能用来调整这个自由度的旋转方向);
这个DH参数表格中包含了所有我们需要的描述机器人的完整信息,本质上就是机器人的各个坐标系之间的“变换矩阵”。这个信息可以帮助我们从基座的坐标系一步步的从参考坐标系一直推导到末端执行器的坐标系上,从而获得末端执行器的位姿,这也是正向运动学的核心。相关的推导会放到后续的章节中(剧透:就是四个齐次变换矩阵的矩阵乘法,获得相邻两坐标系的变换矩阵)。关于机器人位姿的理解,可以参考这篇文章:机械臂位姿描述。
1.1.3 使用matlab机器人工具箱通过标准DH参数表格建立机器人
本文使用机器人工具箱Robotics Toolbox - Peter Corke以及标准DH建模法来建立机器人。核心是先确定有多少个自由度,再确定机械臂的初始位姿,最后使用几个函数生成我们的机器人,获得一个对象。
对于每一个自由度,使用link函数来获取一个连杆对象,这个对象的属性如下:
Link 的类属性(读/写ÿ