1、工业机器人 Matlab 仿真实验报告指导老师:姓名:班级:学号:2013 年 10 月 28 日实验内容(一)(1) 利用三次多项式规划出关节角运动轨迹,并在 Matlab 环境下绘制出轨迹曲线。题目:假设有一旋转关节的单自由度操作臂处于静止状态时,初始角位置 0=15,要求经过 3s 平滑运动以后该关节停止在终止角 f=75 的地方,试规划出满足以上要求的关节轨迹。并在 Matlab 环境下绘制轨迹曲线。(a) 0=15, f=75, tf = 3; (b) 0=15, f = 45, tf = 4; (c) 0=30, f=75, tf = 3; (d) 0=30, f=45, tf =
2、 5; (e) 0=30, f=60, tf = 3; (2) 熟悉机器人工具箱 Robotics Toolbox,阅读 robot.pdf 文档,应用工具箱中transl、rotx 、roty 和 rotz 函数得到平移变换和旋转变换的齐次变换矩阵,而复合变换可以由若干个简单变换直接相乘得到。并与课堂上学习的平移矩阵和旋转矩阵作对比,观察一致性。解:transl 平移变换举例:机器人在 x 轴方向平移了 0.5 米,那么我们可以用下面的方法来求取平移变换后的齐次矩阵:程序如下:transl(0.5,0,0)结果如下:ans =1.0000 0 0 0.50000 1.0000 0 00 0
3、1.0000 00 0 0 1.0000Rotx 旋转变换举例:机器人绕 x 轴旋转 45 度,那么可以用 rotx 来求取旋转后的齐次矩阵:程序如下:rotx(pi/4)结果如下:ans =1.0000 0 00 0.7071 -0.70710 0.7071 0.7071Roty 旋转变换举例:机器人绕 y 轴旋转 90 度,那么可以用 roty 来求取旋转后的齐次矩阵:程序如下:roty(pi/2)结果如下:ans =0.0000 0 1.0000 00 1.0000 0 0-1.0000 0 0.0000 00 0 0 1.0000Rotz 旋转变换举例如下:机器人绕 z 轴旋转-90
4、度,那么可以用 rotz 来求取旋转后的齐次矩阵:程序如下:rotz(-pi/2)结果如下:ans =0.0000 1.0000 0 0-1.0000 0.0000 0 00 0 1.0000 00 0 0 1.0000结论:多次调用函数再组合,和我们学习的平移矩阵和旋转矩阵做个对比,结果是一致的。(3) 在机器人工具箱 Robotics Toolbox 中,应用 Link 函数、robot 函数构建机器人对象。 (详细了解 link, robot 函数的调用格式)答:link 程序如下:L1 = link(0 0 0 0 0);L2 = link(-pi/2 0 0 0 1); % 移动关节
5、L3 = link(0 0 0 0 1); % 移动关节L4 = link(pi/2 0 0 0.4318 0);L5 = link(-pi/2 0 0 0 0);L6 = link(0 0 0 0 0);Robot 程序如下:r = robot(L1 L2 L3 L4 L5 L6); %构建机器人r.name = robot001; % 命名qA = 0 0 0 0 0 0;TB = -0.6533 0.2706 -0.7071 -0.63180.4571 -0.6036 -0.6533 0-0.6036 -0.75 0.2706 0.150 0 0 1;qAB = ikine(r, TB)
6、; % 对 TB 进行运动学逆问题求解% 它说明机械手由 A 到 B,关节 1 需要正向转动 1.5708rad,% 关节 2 和 3 需要向前移动 0.15 和 0.2m,% 最后三个关节需要各自转动 0.3927,0.7854,0.3927radTC = 0.3361 -0.2075 -0.9187 -0.48210.8669 -0.3131 0.3879 0.4821-0.3681 -0.9268 0.0747 0.180 0 0 1;Ikine 程序如下:qBC = ikine(r, TC) - ikine(r, TB); % 由 B 到 Ct = 0:0.025:2;q = jtra
7、j(qA, qAB, t);Plot 程序如下:plot(r, q); % 绘图Robot 函数举例:-0.4 -0.200.2 0.4-0.4-0.200.20.4-0.4-0.200.20.4XYZ robot001x yz实验内容(二):(1) 应用 Robotics Toolbox 工具箱提供的 ctraj、jtraj 和 trinterp 函数实现笛卡尔规划、关节空间规划和变换插值。答:ctraj 举例程序如下:T0 = transl(1 1 1);T1 = transl(-3 5 2);TC1 = ctraj(T0, T1, 101);t1 = 0:0.01:1;figure, p
8、lot(t1, transl(TC1);t2 = 0:0.05:20;r = jtraj(0, 1, t2);TC2 = ctraj(T0, T1, r);figure, plot(t2, transl(TC2);轨迹如下:0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-3-2-1012345% jtraj 轨迹规划测试puma560;t = 0:0.05:2; % 在 2 秒内完成某个动作,采样间隔是 50msq, qd, qdd = jtraj(qz, qr, t);figure, plot (t, q)figure, plot3 (t, q(:,2), q
9、(:,3)figure, plot (t, qd)figure, plot (t, qdd)结果如下:0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-2.5-2-1.5-1-0.500.511.522.50 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1.5-1-0.500.511.500.511.5200.511.52-2-1.5-1-0.500 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-2-1.5-1-0.500.511.52% trinterp 进行轨迹差值T0 = transl(1 1 1);T1 =
10、 transl(-3 5 2);trinterp(T0, T1, 0)trinterp(T0, T1, 0.3)trinterp(T0, T1, 0.5)trinterp(T0, T1, 0.8)trinterp(T0, T1, 1)结果:由于电脑问题,图片无法显示。(2) 利用 Robotics Toolbox 工具箱提供的 fkine 函数实现机器人运动学正问题的求解。% fkine 函数实现机器人运动学正问题的求解puma560t = 0:0.056:2;q = jtraj(qz, qr, t);T = fkine(p560, q); % T 是一个三维的矩阵,前两维是 44 的矩阵代表
11、坐标变化,第三维是时间。结果如下:经过运行,我们得到的是一系列从关节到手部末端执行器的空间 T矩阵,其第一个和最后一个如下:T(:,:,1) =1.0000 0 0 0.45210 1.0000 0 -0.15000 0 1.0000 0.43180 0 0 1.0000T(:,:,36) =1.0000 0 0 0.02030 1.0000 0 -0.15000 0 1.0000 0.86360 0 0 1.0000实验内容(三)利用 Robotics Toolbox 工具箱提供的 ikine 函数实现机器人运动学逆问题的求解。qA = 0 0 0 0 0 0;TB = -0.6533 0.
12、2706 -0.7071 -0.63180.4571 -0.6036 -0.6533 0-0.6036 -0.75 0.2706 0.150 0 0 1;qAB = ikine(r, TB); % 对 TB 进行运动学逆问题求解% 它说明机械手由 A 到 B,关节 1 需要正向转动 1.5708rad,% 关节 2 和 3 需要向前移动 0.15 和 0.2m,% 最后三个关节需要各自转动 0.3927,0.7854,0.3927radTC = 0.3361 -0.2075 -0.9187 -0.48210.8669 -0.3131 0.3879 0.4821-0.3681 -0.9268 0.0747 0.180 0 0 1;Ikine 程序如下:qBC = ikine(r, TC) - ikine(r, TB); % 由 B 到 C(1) 利用 Robotics Toolbox 工具箱提供的 inertia 函数计算机械臂关节空间的惯性矩阵。(2) 在机器人轨迹规划之后,利用 Robotics Toolbox 工具箱中的 plot 函数来实现对规划路径的仿真(动画演示) 。答:Plot 程序如下:plot(r, q); % 绘图运行后结果图如下:-0.4 -0.200.2 0.4-0.4-0.200.20.4-0.4-0.200.20.4XYZ robot001x yz