Matlab Robitic Toolbox学习笔记Day2
1.对于之前已经建立好的SCARA机器人模型,进行动画演示。9.10版本的工具箱中原来的drivebot函数替换为teach函数,用来生成可修改关节变量q的演示图。值得注意的是,在使用teach函数之前,必须在建立各个杆件的时候设置好关节变量q的范围,即qlim;以及设置好所显示图形的范围,即workspace。如果没有设置好,则teach函数会报错。
代码如下所示:
clc, clear, close all;
deg = pi/180;
% Joints setting
L1 = Link('d', 3.3, 'a', 0, 'alpha', 0, 'qlim', [-105 105]*deg,'modified');
L2 = Link('d', 0, 'a', 3.25, 'alpha', 0, 'qlim', [-150 150]*deg,'modified');
L3 = Link('theta', 0, 'a', 2.75, 'alpha', pi,'qlim', [0 2.1],'modified');
L4 = Link('d', 0, 'a', 0, 'alpha',0, 'qlim', [-360 360]*deg,'modified');
bot = SerialLink([L1 L2 L3 L4], 'name', 'SCARA');
% Initial position/Starting position
q = [0 0 1 0];
q1=[90*deg 0 2 0]
a=7;
W = [-a a -a a -a/2 a];
bot.plot(q,'workspace', W);
图形界面如图所示
之前在网上搜索的实例大多是puma560机器人,由于该机器人全部关节均为转动关节,所以在进行仿真的时候可以不必添加workspace的选项,而scara机器人的第三关节是移动关节,所以在使用teach函数的时候必须规定好workspace的大小。
2.jtraj函数。jtraj函数用来生成轨迹
q = [0 0 1 0];
q1=[90*deg 0 2 0];
a=7;
W = [-a a -a a -a/2 a];
c = jtraj(q , q1 , 40 );
bot.plot(c,'workspace', W);
使用robotic toolbox自带的plot函数画出的图形都为动图,如果需要得到一个静态图,则可以使用哪个plot3函数,具体的使用方法如下。
plot3函数与plot函数用法十分相似,其调用格式为:
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)
其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。
例 绘制三维曲线。
程序如下:
t=0:pi/100:20*pi;
x=sin(t);
y=cos(t);
z=t.*sin(t).*cos(t);
plot3(x,y,z);
title('Line in 3-D Space');
xlabel('X');ylabel('Y');zlabel('Z');
(参考来源:http://www.ilovematlab.cn/thread-243883-1-1.html)
3.在进行模型的动力学分析的时候,用serialLink.rne函数求得力矩。
rtbdemo中的puma560的实例如下:
t = [0:.056:2]; % create time vector
[q,qd,qdd] = jtraj(qz, qr, t); % compute joint coordinate trajectory
tau = p560.rne(q, qd, qdd); % compute inverse dynamics
% Now the joint torques can be plotted as a function of time
plot(t, tau(:,1:3)); xlabel('Time (s)'); ylabel('Joint torque (Nm)')
4.尚不明确的地方:
五次三项式的插值函数?关于第三第四关节的简化中,实际力矩的求解?