通过本系列文章的前三篇,一个小型桌面舵机机械臂我们就获得了,但一个控制单关节实现整体运动的机械臂无非就是一个桌面玩具,根本就不能称之为"机器人",因此在接下来的文章中我们会使用机器人学的知识对这个机械臂进行深入分析,使其拥有真正的灵魂,目前粗略定下以下目标
在对文章(二)中的模型进行采购搭建后,我发现了不少建模过程中出现的问题,那之后我对机械模型进行了重新建模。
本文首先对新建的机械模型进行了介绍,之后对机械臂进行运动学分析,使用DH法进行运动学建模,并在matlab中实现简单的仿真。
不多bb,先上图
在之前的机械臂模型搭建的过程中我发现使用板状亚克力材料虽然方便加工,精度高,但最后的零件数量太多了,而且板状材料装配精度特别不可控。之前建模较为急促,许多连接部分没有充足的考虑,导致链接处出现异响。
因此在新建的模型中采用3d打印件作为基础材料,大大减少了零件的数量,如果财有余力的话也可以使用CNC加工金属,那样的效果更好。连接处也进行了升级,理论上没有问题,由于上海无法买到快递,机械臂的搭建估计需要在之后的文章中才能描述。
新建模的腕部由三个3d打印件构成,保证机械臂的末端三个关节的垂线相交于一点
新建模的肘部简化为一个整体结构,用于安装舵机和与大臂连接
新建模的腰部简化为三个部件,更加清爽
从这一部分开始就涉及机器人学了,对于从未了解过这部分的朋友希望能进一步的学习
这里列举一些我认为好的参考材料
[1] JOHN J.CRAIG. 机器人学导论: 第3版[M]. 机械工业出版社, 2006.
[2]桑红波. ABB-IRB 2400/10型机器人空间轨迹规划的研究[D]. 吉林大学, 2007.
尤其是《机器人学导论》对我帮助特别大,看了后有豁然开朗的感觉
DH法是机器人建模最多使用的方法,该方法将各个杆件进行分离,分析每个杆件后一关节相对于前一关节的位姿变化,通过建立坐标系得到杆件的连杆偏距d、关节角theta、连杆转角alpha、连杆长度a。
基于得到的这四个连杆参数可以建立每个连杆的关节齐次矩阵,通过链式相乘最终获得机械臂末端相对于基坐标的位姿。
机器人运动学的正逆解和雅可比矩阵都需要通过DH建模得到。
本项目机械臂是一个关节型六轴机械臂(RRRRRR型),从侧面可以得到机械臂各个关节之间的连杆参数。
标准型DH法建模的每根杆由前一关节和杆件本体组成,因此用这种方法建模可以将末端也进行考虑
对于我们的机械臂可以简化为
分析各个连杆参数可以得到如下DH参数表
i | theta(i) | d(i) | a(i-1) | alpha(i-1) |
---|---|---|---|---|
1 | 0 | 100 | 10 | -pi/2 |
2 | 0 | 0 | 100 | 0 |
3 | 0 | 0 | 30 | -pi/2 |
4 | 0 | 140 | 0 | pi/2 |
5 | 0 | 0 | 0 | -pi/2 |
6 | 0 | 22 | 0 | 0 |
改进型DH法建模的每根杆由杆件 本体和后一关节组成因此用这种方法可以将机械臂的底座进行考虑。
对于我们的机械臂可以简化为
分析各个连杆参数可以得到如下DH参数表
i | theta(i) | d(i) | a(i-1) | alpha(i-1) |
---|---|---|---|---|
1 | 0 | 100 | 0 | 0 |
2 | 0 | 0 | 10 | -pi/2 |
3 | 0 | 0 | 100 | 0 |
4 | 0 | 140 | 30 | -pi/2 |
5 | 0 | 0 | 0 | pi/2 |
6 | 0 | 22 | 0 | -pi/2 |
使用matlab机器人工具箱Robotic Toolbox对我们建模的机器人进行仿真
Robotic Toolbox是一款配合matlab用来进行机器人分析的工具箱,通过使用该工具箱可以很快的求解齐次方程等机器人相关矩阵,工具箱的安装方式请参考:
机器人工具箱安装方法
这位up主已经进行了详细的介绍,并且测试完全可行
工具箱的使用方法可以参考:
机器人工具箱使用介绍
工具箱使用Link()函数构建机器人的每一连杆的参数,每根连杆的参数以theta、d、a、alpha进行排列。由上文第二章可知机器人的DH法建模分为标准法与改进法,因此我们分别使用两种方法对其建模,当然我个人更倾向于使用改进型DH法
%% 标准型
% theta d a alpha
L(21)=Link([0, 100, 10, -pi/2]);
L(22)=Link([0, 0, 100, 0]);
L(23)=Link([0, 0, 30, -pi/2]);
L(24)=Link([0, 140, 0, pi/2]);
L(25)=Link([0, 0, 0, -pi/2]);
L(26)=Link([0, 22, 0, 0]);
Six_Link_b=SerialLink([L(21),L(22),L(23),L(24),L(25),L(26)]);
Six_Link_b.display
Six_Link_b.teach
%% 改进型
% theta d a alpha
L(1)=Link([0, 100, 0, 0],'modified');
L(2)=Link([0, 0, 10, -pi/2],'modified');
L(3)=Link([0, 0, 100,0],'modified');
L(4)=Link([0, 140, 30, -pi/2],'modified');
L(5)=Link([0, 0,0, pi/2],'modified');
L(6)=Link([0, 22, 0, -pi/2],'modified');
Six_Link=SerialLink([L(1),L(2),L(3),L(4),L(5),L(6)]);
Six_Link.display
Six_Link.teach
本文是对机器人运动学的初步分析,首先介绍了改进过后的机械建模,基于该建模对整个机械臂进行了DH法分析,得到所有连杆的DH参数,这在我们之后的分析中相当重要。最后本文通过在MATLAB机器人工具箱中仿真验证建模的正确性。之后我们会进一步学习该工具箱的使用,并在它的帮助下完成机器人的正逆解,最后得到我们想要的路径。