最近做毕设,研究了一下UR5的MATLAB仿真参考了一篇《基于MATLAB+Robotics+Toolbox的UR5机器人轨迹规划与仿真》的文章和《Robotics,Vision and Control》这本书。
一、插件安装
(1)我使用的是MATLAB R2020b具体什么版本的我感觉差别应该不大。
(2)之后下载一个RoboticToolbox的工具箱,参考了这篇文章http://t.csdnimg.cn/p6AVt,写的非常详细,就不用我多说了。
二、仿真
(1)在仿真之前我的建议是先学习一下晦涩的正逆运动学(学个大概就行),D-H参数法啥的都了解一下,知道这些参数是什么意思,不求甚解,但是需要知道。
(2)如果需要学习具体工具箱的使用方式推荐一本叫做《机器人学、机器视觉与控制 MATLAB算法基础》的书,是《Robotics,Vision and Control》这本书的中文版(具体可以在一些购买软件自行购买,个人推荐电子版,纸质可能很贵)。
(3)下面放上我的仿真过程和代码,在下载完成上面的工具箱之后,利用工具箱中的函数Link,首先我们需要了解这个函数的意义:Link用于描述一个机器人的连杆,我们知道UR5机械臂为6轴所以需要定义六个连杆参数。首先我们在matlab中查看Link函数需要填入的主要参数:
①参考文献发现Link函数后面有的内容加了一个standard,不知道为啥,我估计是因为它用的标准DH参数法来构建的关节,同理如果用的改进的DH参数法需要相应的选择第二个,如果是旋转关节需要选择第三个,同理改进的DH+旋转关节需要选择第四个(这个具体什么用法自行研究)。
![](https://i-blog.csdnimg.cn/blog_migrate/7fc6fda4c689b05db652adb0d225081c.png)
②下面是最主要的几个参数θj,dj,aj,αj(此四个参数需要看我上面提到的运动学原理,明白大概描述的是什么就行,每个参数的含义——表一,具体来说就是两平移两旋转)以及第五个元素σj表明该关节为转动关节还是移动关节,如果没有指定的话默认为是转动关节,表2——UR5机械臂的D-H参数表:
![](https://i-blog.csdnimg.cn/blog_migrate/a8c2744864a766d2fed14e812465a8b4.png)
关节角 | θj | xj-1轴和xj轴之间关于zj-1轴的角度 | 转动关节变量 |
连杆偏移 | dj | 沿着zj-1轴,j-1坐标原点到xj轴的距离 | 转动关节变量 |
连杆长度 | aj | 沿着xj轴,zj-1轴和zj轴之间的距离 | 常量 |
连杆扭转角 | αj | zj-1轴和zj轴之间关于xj轴的角度 | 常量 |
关节类型 | σj | σ=0为转动副,σ=1为移动副 | 常量 |
关节 | 扭转角 αj-1/(°) | 连杆长度 aj-1/mm | 连杆偏移量 dj/mm | 关节角范围 θj/(°) |
1 | 90 | 0 | 89.16 | -360~360 |
2 | 0 | -425.00 | 0 | -360~360 |
3 | 0 | -392.25 | 0 | -360~360 |
4 | 90 | 0 | 109.15 | -360~360 |
5 | -90 | 0 | 94.67 | -360~360 |
6 | 0 | 0 | 82.30 | -360~360 |
③因为机械臂的六个关节设置为转动关节,所以就算不直接表达,默认的就是转动关节。用标准的D-H法所以参数应该是四个UR5参数+0,由于UR5机械臂为六轴,所以要相应创建6个连杆如下(直接cv):
L(1)=Link([0 0.08916 0 pi/2 0]);
L(2)=Link([-pi/2 0 0.425 0 0]);
L(3)=Link([0 0 0.39225 0 0]);
L(4)=Link([-pi/2 0.10915 0 pi/2 0]);
L(5)=Link([0 0.09456 0 -pi/2 0]);
L(6)=Link([0 0.0823 0 0 0])
④然后他会反馈一个此数组的相关数据如下:
此时可以对照一下是否满足UR5机械臂的各项参数有没有整错,然后开始下一步。
![图3](https://i-blog.csdnimg.cn/blog_migrate/2290673fb8f89d43e8edfcc15c96ebda.png)
⑤上面的内容用于创建一个六轴机械臂,下面需要将他定义在MATLAB的工作空间并创建名为UR5的SerialLink对象。
UR5=SerialLink(L,'name','UR5')
⑥上面代码运行之后,我们发现这确实是一个6 axis(轴),RRRRRR代表6自由度的机械臂创建成功,stdDH(标准D-H参数法)参数如下图。
![图4](https://i-blog.csdnimg.cn/blog_migrate/11e5d95072168b9e7cf6c99c7139ea9e.png)
⑦我们可以通过如下指令观察我们创建的关节:
UR5.plot([0 0 0 0 0 0])
⑧使用如下指令,可以调整六个轴的关节:
UR5.teach
![图5](https://i-blog.csdnimg.cn/blog_migrate/5f39aea0c585c689d5c3030e0e565fe0.png)
⑨在MATLAB当中利用fkine函数对于UR5机器人进行正运动学的仿真,任取一组关节角依次为pi/2,pi/3,pi/4,pi/5,pi/3,pi/6,调用fkine函数得到图6的变换矩阵,此变换矩阵为UR5机器人在向量q时,所对应机器人末端位姿的其次变换矩阵:
q=[pi/2,pi/3,pi/4,pi/5,pi/3,pi/6];
T=fkine(UR5,q)
![图6](https://i-blog.csdnimg.cn/blog_migrate/97af89035e3f0392d0bfa5351ced504d.png)
⑩运动学逆解是在已知目标位姿T的情况下求出其对应的关节变量。调用ikine函数如下:
不想写了...因为用ikine逆解算法解不出来这个东西(除非很简单),过段时间再写吧,如果有什么问题或者建议可以在评论区讨论...