大三下(本学期)《工业机器人》课程作业,要求利用Matlab Robotics ToolBox完成对埃夫特ER3A-C60六轴机器人的正逆运动学分析。除了DH参数不一样外,其余知识同之前的文章对斯坦福机械手的建模类似。
一、建模对象
埃夫特ER3A-C60六轴机器人。
二、D-H法建模分析
6个关节均为旋转副,利用D-H对机器人手臂建立坐标系如下:
制D-H参数表如下:
三、Matlab Robotics ToolBox建模分析
3.1、关节定义
%关节定义
% th d a alpha sigma
L(1) = Link([ pi/2 321.5 50 pi/2 0]);
L(2) = Link([ pi/2 0 270 0 0]);
L(3) = Link([ 0 0 70 pi/2 0]);
L(4) = Link([ 0 299 0 -pi/2 0]);
L(5) = Link([ 0 78.5 0 pi/2 0]);
L(6) = Link([ 0 0 0 0 0]);
3.2、关节限位
通过参考手册,可以知道埃夫特ER3A-C60六轴机器人具有如下关节限位:
因此,修改关节qlim属性如下:
% 关节参数范围限定
L(1).qlim = [-167 167]*pi/180;
L(2).qlim = [-130 90]*pi/180;
L(3).qlim = [-71 101]*pi/180;
L(4).qlim = [-180 180]*pi/180;
L(5).qlim = [-113 113]*pi/180;
L(6).qlim = [-360 360]*pi/180;
3.3、观察模型
给定初始关节角:
init = [0 pi/2 0 0 0 0];%初始关节参数
%工作区定义
w=[-1000,1000,-1000,1000,-1000,1000]:
figure
efort.plot(init,\'workspace\',w);%画出图像
title(\'初始状态\');
结果显示如左图所示,对比右图可以验证建模结果是正确的:
3.4、工作空间
通过在关节角限位内随机取1000个关节角状态,绘制机械臂末端到达的空间点位置,可以近似得到机械臂的工作空间形状:
3.5、正逆运动学分析
3.5.1、正运动学分析
给定期望关节角,求位姿:
输出结果:
机械臂状态:
动画演示:
3.5.2、逆运动学分析
给定期望位姿,求解关节角(此处为便于验证,将期望位姿设置为正运动分析所得到的位姿结果)。
期望位姿:
输出结果:
由输出结果可以看出,第二组运动学逆解求得的关节角 \(theta1\) 中我们设定的第二组期望关节角 \(aid1\) 有所不同:
进一步观察此时机械臂状态(左图):
可以发现此时的机械臂末端确实到达了我们期望的位姿(右图),但是各关节角状态并不符合我们的要求。同时,细心观察结果,可以发现此时由逆解计算得到的关节角状态已经超过机械臂的关节限位。
三、总结
Matlab Robotics Toolbox的ikine函数在求机械臂运动逆解时,由于未考虑机械臂的限位及机械臂状态(比如左手/右手、肘部在上/肘部在下、手腕翻转/手腕不翻转),会导致出现我们不想要的解的状态。怎么解决?试试求解析解吧
请发表评论