《机器人技术》实验报告.docx
《《机器人技术》实验报告.docx》由会员分享,可在线阅读,更多相关《《机器人技术》实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
《机器人技术》实验报告
工业机器人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=5;
(e)θ0=30,θf=60,tf=3;
(2)熟悉机器人工具箱RoboticsToolbox,阅读robot.pdf文档,应用工具箱中transl、rotx、roty和rotz函数得到平移变换和旋转变换的齐次变换矩阵,而复合变换可以由若干个简单变换直接相乘得到。
并与课堂上学习的平移矩阵和旋转矩阵作对比,观察一致性。
解:
transl平移变换举例:
机器人在x轴方向平移了0.5米,那么我们可以用下面的方法来求取平移变换后的齐次矩阵:
程序如下:
transl(0.5,0,0)
结果如下:
ans=
1.0000000.5000
01.000000
001.00000
0001.0000
Rotx旋转变换举例:
机器人绕x轴旋转45度,那么可以用rotx来求取旋转后的齐次矩阵:
程序如下:
rotx(pi/4)
结果如下:
ans=
1.000000
00.7071-0.7071
00.70710.7071
Roty旋转变换举例:
机器人绕y轴旋转90度,那么可以用roty来求取旋转后的齐次矩阵:
程序如下:
roty(pi/2)
结果如下:
ans=
0.0000 0 1.0000 0
0 1.0000 0 0
-1.0000 0 0.0000 0
0 0 0 1.0000
Rotz旋转变换举例如下:
机器人绕z轴旋转-90度,那么可以用rotz来求取旋转后的齐次矩阵:
程序如下:
rotz(-pi/2)
结果如下:
ans=
0.0000 1.0000 0 0
-1.0000 0.0000 0 0
0 0 1.0000 0
0 0 0 1.0000
结论:
多次调用函数再组合,和我们学习的平移矩阵和旋转矩阵做个对比,结果是一致的。
(3)在机器人工具箱RoboticsToolbox中,应用Link函数、robot函数构建机器人对象。
(详细了解link,robot函数的调用格式)
答:
link程序如下:
L1=link([00000]);
L2=link([-pi/20001]);%移动关节
L3=link([00001]);%移动关节
L4=link([pi/2000.43180]);
L5=link([-pi/20000]);
L6=link([00000]);
Robot程序如下:
r=robot({L1L2L3L4L5L6});%构建机器人
r.name='robot001';%命名
qA=[000000];
TB=[-0.65330.2706-0.7071-0.6318
0.4571-0.6036-0.65330
-0.6036-0.750.27060.15
0001];
qAB=ikine(r,TB);%对TB进行运动学逆问题求解
%它说明机械手由A到B,关节1需要正向转动1.5708rad,
%关节2和3需要向前移动0.15和0.2m,
%最后三个关节需要各自转动0.3927,0.7854,0.3927rad
TC=[0.3361-0.2075-0.9187-0.4821
0.8669-0.31310.38790.4821
-0.3681-0.92680.07470.18
0001];
Ikine程序如下:
qBC=ikine(r,TC)-ikine(r,TB);%由B到C
t=0:
0.025:
2;
q=jtraj(qA,qAB,t);
Plot程序如下:
plot(r,q);%绘图
Robot函数举例:
实验内容
(二):
(1)应用RoboticsToolbox工具箱提供的ctraj、jtraj和trinterp函数实现笛卡尔规划、关节空间规划和变换插值。
答:
ctraj举例
程序如下:
T0=transl([111]);
T1=transl([-352]);
TC1=ctraj(T0,T1,101);
t1=[0:
0.01:
1];
figure,plot(t1,transl(TC1));
t2=[0:
0.05:
20];
r=jtraj(0,1,t2);
TC2=ctraj(T0,T1,r);
figure,plot(t2,transl(TC2));
轨迹如下:
%jtraj轨迹规划测试
puma560;
t=0:
0.05:
2;%在2秒内完成某个动作,采样间隔是50ms
[q,qd,qdd]=jtraj(qz,qr,t);
figure,plot(t,q)
figure,plot3(t,q(:
2),q(:
3))
figure,plot(t,qd)
figure,plot(t,qdd)
结果如下:
%trinterp进行轨迹差值
T0=transl([111]);
T1=transl([-352]);
trinterp(T0,T1,0)
trinterp(T0,T1,0.3)
trinterp(T0,T1,0.5)
trinterp(T0,T1,0.8)
trinterp(T0,T1,1)
结果:
由于电脑问题,图片无法显示。
(2)利用RoboticsToolbox工具箱提供的fkine函数实现机器人运动学正问题的求解。
%fkine函数实现机器人运动学正问题的求解
puma560
t=0:
0.056:
2;
q=jtraj(qz,qr,t);
T=fkine(p560,q);%T是一个三维的矩阵,前两维是4×4的矩阵代表坐标变化,第三维是时间。
结果如下:
经过运行,我们得到的是一系列从关节到手部末端执行器的空间T矩阵,其第一个和最后一个如下:
T(:
:
1)=
1.0000000.4521
01.00000-0.1500
001.00000.4318
0001.0000
T(:
:
36)=
1.0000000.0203
01.00000-0.1500
001.00000.8636
0001.0000
实验内容(三)
利用RoboticsToolbox工具箱提供的ikine函数实现机器人运动学逆问题的求解。
qA=[000000];
TB=[-0.65330.2706-0.7071-0.6318
0.4571-0.6036-0.65330
-0.6036-0.750.27060.15
0001];
qAB=ikine(r,TB);%对TB进行运动学逆问题求解
%它说明机械手由A到B,关节1需要正向转动1.5708rad,
%关节2和3需要向前移动0.15和0.2m,
%最后三个关节需要各自转动0.3927,0.7854,0.3927rad
TC=[0.3361-0.2075-0.9187-0.4821
0.8669-0.31310.38790.4821
-0.3681-0.92680.07470.18
0001];
Ikine程序如下:
qBC=ikine(r,TC)-ikine(r,TB);%由B到C
(1)利用RoboticsToolbox工具箱提供的inertia函数计算机械臂关节空间的惯性矩阵。
(2)在机器人轨迹规划之后,利用RoboticsToolbox工具箱中的plot函数来实现对规划路径的仿真(动画演示)。
答:
Plot程序如下:
plot(r,q);%绘图
运行后结果图如下: