目录
1. 引言
SCARA机器人拥有四个自由度,三个旋转自由度,一个平移自由度。在我的机器人学专栏中已经介绍完了机器人正运动学---连杆坐标系与DH参数(后面简称参考博客)。有了这个基本的数学工具我们已经可以对机器人进行建模并完成一些简单的仿真。这篇文章将利用robotic toolbox建模一个四自由度的SCARA机器人。
在这个专栏中,如无特殊说明我使用的Matlab版本为R2018a,robotic toolbox版本为10.1,操作系统为Ubuntu16.04。关于如何安装robotic toolbox这里就不再赘述了,直接搜索”robotic toolbox安装“会有很多相关教程。不过网络环境有限制的话可能无法登录这个工具箱的官网,因此我把这个工具箱上传到了github,https://github.com/hitgavin/robotic_toolbox/tree/master/robotic_toolbox_10.1。
2. 建模
关于如何建立机器人连杆的DH坐标系请见我的参考博客。进行机器人的运动学仿真,我们首先要写出这个机器人的DH参数表。在Matlab中也就是先建立一个矩阵:
l1 = 0.225; % unit m
l2 = 0.175;
d3 = 0.05;
scara_dh = [
% theta d a alpha
0 0 l1 0
0 0 l2 pi
0 d3 0 0
0 0 0 0
];
在利用robotic toolbox建立机器人的模型时通常是利用DH参数建立所有的连杆,然后再利用这些连杆去创建机器人,robotic toolbox中利用Link函数可以创建平移和旋转两种类型的连杆。SCARA机器人有四个关节,因此虽然表面上它只有三个连杆,我们还是要建立四个,因为在SCARA中的滚珠丝杠花键有两个自由度。SCARA机器人的各个连杆定义如下:
% joint-type 0 for revolute, 1 for prismatic
% theta d a alpha joint-type
L(1) = Link([0 0 l1 0 0], 'standard');
L(2) = Link([0 0 l2 pi 0], 'standard');
L(3) = Link([0 d3 0 0 1], 'standard');
L(4) = Link([0 0 0 0 0], 'standard');
Link函数的第一个参数描述连杆属性,这是一个向量,前四个元素是DH参数,最后一个是连杆类型,0代表旋转,1代表平移。Link函数的第二个参数‘standard’代表这是标准DH参数,正如你所想,还有修改DH参数。我们在参考博客中提到标准DH参数是按传动轴建立坐标系的,修改DH参数则是按驱动轴建立坐标系,关于这一点在我的机器人学专栏后续文章中会进行介绍,这里不再展开了。
连杆建立好之后接下来就是创建一个机器人了,robotic toolbox已经为我们封装了极为简洁的接口,即SerialLink函数。在这里创建SCARA机器人只需要一行代码。
scara = SerialLink(L, 'name', 'scara400');
第一个参数就是传入Link的数组L,第二个参数用于设置机器人的名字,我们取名为scara400,还可以有其他一些参数具体可以参考这个库的说明文档。
以上就是创建机器人模型的基本过程,当然有很多其他参数比如动力学参数,工具坐标系,关节限位等都没有设置,但是我们已经有了一个可以运动的机器人了(或许),其他的参数我们后面会陆陆续续用到。
3. 让机器人动起来
以上创建了SCARA机器人模型,接下来我们想办法让机器人动起来,其实很简单,只需要几行代码:
L(3).qlim = [0.05 0.3];
q1 = [0 0 0.05 0];
q2 = [pi/4 pi/6 0.2 pi/8];
q = jtraj(q1, q2, 100);
scara.plot(q);
代码执行后你应该能看到机器人从初始位置运动到终止位置的动画了。下面我们逐行解释一下代码。
第一行是为了给平移的连杆设置一下关节限位,如果没有这句话后面的代码执行会报错(这就是前面说或许的原因),这也说不好是为什么,更奇葩的是这个限位不能是负值,所以如果你细心观察DH参数表和参考博客中的DH参数表会发现第二个连杆的角在这里设置成了
,就是为了让连杆2坐标系的
轴朝下,这样连杆3的平移方向就是
轴正向了,也就避免了限位参数为负。
第二行和第三行分别设置了机器人的起始关节位置和终止关节位置。第四行是个插值函数,我们这里暂且不提,这个函数执行结果是一个关节位置矩阵,每一行代表机器人的一个位姿(就是各个关节的关节位置)。
最后一行是让机器人依次经过q中的各个位置。
以下是模型显示的一个截图。
完整的代码已经上传到github,https://github.com/hitgavin/robotic_toolbox/tree/master/scara_model
4. 总结
这篇文章主要介绍了如何利用robotic toolbox创建一个简单的机器人并驱动机器人运动。