基于Matlab的空间描点机器人建模与仿真报告_第1页
基于Matlab的空间描点机器人建模与仿真报告_第2页
基于Matlab的空间描点机器人建模与仿真报告_第3页
基于Matlab的空间描点机器人建模与仿真报告_第4页
基于Matlab的空间描点机器人建模与仿真报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计课程名称机器人学题目名称空间描点机器人建模仿真学生学院专业班级学号学生姓名指导教师

目录课程设计要求………1空间描点机器人的设计……………2机器人构型及坐标…………….…2D-H参数表……………….……..4正运动学……………53.1齐次变换矩阵……………….……53.2空间描点机器人工作空间…………6几何法求逆解……….7程序流程图………….8总结分析…………….9Matlab程序附录……………..……..107.1Mov_6DOF_Rob_Lnya.m………………107.2DHfk6Dof_Lnya.m………127.3IK_6DOF_Rob_Lnya.m…………………137.4Build_6DOFRobot_Lnya.m………………..147.5Erzhihua.m…………………147.6draw_Workplace.m……...…157.7Matrix_DH_Ln.m……….…167.8Connect3D.m………………17. 课程设计要求一,按照附件模板填写,要求有封面和目录,除签名处不能有手写。二,主要内容包括下面几个部分,1,设计一款六自由度机器人,要求2,3,4,5关节中有一个是滑动关节,其余关节应为转动关节。试构想该机器人的功能,并根据功能设定机器人的介绍参数(杆件长度及关节极限)2,建立机器人的正运动学模型,进行Matlab运动仿真。(分析机器人的工作空间,制作机器人各个运动的动画。)注意事项:1)要求画出机器人的关节坐标系,列出DH参数表,以及各个关节间的齐次变换矩阵。2)Matlab仿真应画出工作空间的立体图和剖面图。采用机器人产品的同学应与实际说明书的工作空间做对比。自行设计的同学要做简单的分析讨论。3)直接采用例程里面的三自由度机器人该部分得0分。3,实现逆运动学轨迹规划注意事项:1)这里特指机器人末端的轨迹规划,不是关节空间的轨迹规划。2)要实现控制机器人末端在空间中完成某种轨迹。(如直线,圆弧,心型,写字等)3)可以采用求解逆运动的方程或者是利用微分运动。4)写出详细的推导过程(公式)。5)要求有仿真截图及动画。6)只能使用matlab及本课程提供的例程,不能使用工具箱。7)仅仅使用3自由度例程的同学本部分分数会很低4,自由发挥项(完成这一部分的同学才能够得到90分以上)1)机器人完整逆解的求解方式(数值解);2)寻找奇异点,分析奇异位型。5,Matlab程序作为附录应添加在课程设计报告书的最后面。要求在第一页附上程序流程图,注明函数调用过程,此外,程序要排好版。2.空间描点机器人的设计2.1机器人构型及坐标本课程设计通过matlab对一个六自由度的空间描点机器人进行设计,并对其进行仿真分析。该机器人的第一关节为固定关节,主要是用于机器人本体的固定,第四关节为滑动关节,剩余关节为转动关节,在第六关节的连杆末端,可以带上各类的设备,在运行时带动连杆对进行空间三维描点或其他动作。机器人的结构和大致效果示意图分别如如图1和图2所示:图1机器人结构图图2机器人大致效果图机器人关节坐标系和运行图如图3和图4所示:图3机器人关节坐标系图4机器人运行图2.2D-H参数表根据本设计按摩机器人的各关节的坐标系及连杆长度,我们可以得到如下表1的DH参数表。关节编号thdzdxalfA11T21180250090A22T3208000A33T43000100-90A44T54000a4+00A55T65010000A66T7600500表1D-H参数表3正运动学3.1齐次变换矩阵由课堂知识可易知,机器人关节n到关节n+1的坐标变换步骤为如下的模式:具体的齐次变换矩阵为:由上述知识,以及根据第三节的D-H参数表,可求得如下各个关节之间的齐次变化矩阵:(1)(2)(3)(4)(5)(6)3.2空间描点机器人工作空间 通过matlab程序仿真,我们可以得到如下结果:图5立体图图6X-Y视角图7Y-Z视图图8X-Z视图

4几何法求逆解本课程设计所建立的机器人模型的逆解是通过几何法来进行求解的,总体的思路是第四个关节为滑动关节,第五、六关节为固定关节,所以当知道目标点的位置信息后,可以通过第四节中的各个关节间的齐次变换矩阵,求得,接着的话便可以通过3自由度机器人几何法求逆解的方法求出相应的关节转动角度。具体的公式推导过程如下:(7) 由于本设计的机器人模型结构特殊,后两个关节变化角度为0,即,所以可得(8)由于(9)可得(10) 接着便可以通过课堂上三自由度机器人对前三个关节角度求逆解的几何法进行求解。5程序流程图本设计主要是两个功能,一个是通过所设计机器人末端在空间中画球,另外一个是通过所设计机器人末端对在空间中对加载的图片实现一个复现,把图片描出来。大致的流程图如下:图9程序流程图6分析总结由matlab的实验结果来看,本次课程设计达到了实验的目的。所设计空间描点机器人的工作空间也符合描点机器人工作的需要。 在本次课程设计中,虽然达到了实验要求的工作,可实现三维空间的描点,相对于前一次的大作业,本次课程设计有了很大进步。可实现对目标点逆解的求解,在画工作空间中,采用的是通过齐次变换矩阵的计算,事先在matlab中画出工作空间点,最后再对该工作空间数组直接描点,大大提高了效率。不过还存在着一些问题需要改进: 1)在描字过程中,描出来的字并不算整齐。 2)在工作空间的X-Y视角图中,出现了一个空心点。在本次课程设计中,通过对机器人建模,增强了对这方面的了解,对机器人有了更加全面的认识,我将会在此课程设计的基础上,进一步摸索解决上述还存在问题的原因,不断从中学习机器人的知识。7matlab代码附录7.1Mov_6DOF_Rob_Lnya.m:closeall;clear;num=1ToDeg=180/pi;ToRad=pi/180;L1=150;L2=100;L3=100;th1=180;th2=0;th3=0;d4=50;th5=0;th6=0;DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,0);view(134,12);pause;stp=30;%%%%%%%%%%%%%%%%%%%正运动学%%%%%%%%%%%%%%%%%%%%%%%%fori=0:stp:360DHfk6Dof_Lnya(th1+i,th2,th3,d4,th5,th6,1);endfori=0:stp:360DHfk6Dof_Lnya(th1,th2+i,th3,d4,th5,th6,1);endfori=0:stp:360DHfk6Dof_Lnya(th1,th2,th3+i,d4,th5,th6,1);endfori=0:60:360DHfk6Dof_Lnya(th1,th2,th3,d4+i,th5,th6,1);endfori=360:-60:0DHfk6Dof_Lnya(th1,th2,th3,d4+i,th5,th6,1);endfori=0:stp:360DHfk6Dof_Lnya(th1,th2,th3,d4,th5+i,th6,1);endfori=0:stp:360DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6+i,1);endpause;%%%%%%%%%%%%%%%%%%%%%%%画球%%%%%%%%%%%%%%%%%%%%%%%%cla;globalLink;point11=[];point12=[];point13=[];a=100;b=100;c=100;r=30;[x,y,z]=sphere(30);X=x*r+a;Y=y*r+b;Z=z*r+c;fori=1:1:31forj=1:1:31px=X(i,j);py=Y(i,j);pz=Z(i,j);[th1,th2,th3]=IK_6DOF_Rob_Lnya(L1,L2,L3,px,py,pz);th1=th1*ToDeg;th2=th2*ToDeg;th3=th3*ToDeg;DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,1);point11(num)=Link(7).p(1);point12(num)=Link(7).p(2);point13(num)=Link(7).p(3);num=num+1;plot3(point11,point12,point13,'k*');holdon;endend%%%%%%%%%%%%%%%%%%%%%描字%%%%%%%%%%%%%%%%%%%%%globalLinkpoint21=[];point22=[];point23=[];num=1;ToDeg=180/pi;load('FP.mat');[FPh,FPl]=size(FP);fori=1:FPh;[th1,th2,th3]=IK_6DOF_Rob_Lnya(L1,L2,L3,FP(i,2),100,FP(i,1));num=num+1;th1=th1*ToDeg;th2=th2*ToDeg;th3=th3*ToDeg;th4=0;th5=0;th6=0;ifi==FPhDHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,0);elseDHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,1);endpoint21(num)=Link(7).p(1);point22(num)=Link(7).p(2);point23(num)=Link(7).p(3);plot3(point11,point12,point13,'k*');holdon;plot3(point21,point22,point23,'r.');holdon;endcla;plot3(point11,point12,point13,'k*');holdon;plot3(point21,point22,point23,'r.');holdon;7.2DHfk6Dof_Lnya.mfunctionpic=DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,fcla)globalLinkBuild_6DOFRobot_Lnya;radius=10;len=30;joint_col=0;plot3(0,0,0,'ro');Link(2).th=th1*pi/180;Link(3).th=th2*pi/180;Link(4).th=th3*pi/180;Link(5).dx=d4;Link(6).th=th5*pi/180;Link(7).th=th6*pi/180;p0=[0,0,0]';fori=1:7Matrix_DH_Ln(i);Endfori=2:7Link(i).A=Link(i-1).A*Link(i).A;Link(i).p=Link(i).A(:,4);Link(i).n=Link(i).A(:,1);Link(i).o=Link(i).A(:,2);Link(i).a=Link(i).A(:,3);Link(i).R=[Link(i).n(1:3),Link(i).o(1:3),Link(i).a(1:3)];Connect3D(Link(i-1).p,Link(i).p,'b',2);holdon;DrawCylinder(Link(i-1).p,Link(i-1).R*Link(i).az,radius,len,joint_col);holdon;endgridon;axis([-600,500,-500,500,-500,500]);xlabel('x');ylabel('y');zlabel('z');drawnow;pic=getframe;if(fcla)cla;end7.3IK_6DOF_Rob_Lnya.mfunction[th1,th2,th3]=IK_6DOF_Rob_Lnya(L1,L2,L3,px,py,pz)ToDeg=180/pi;ToRad=pi/180;th1=atan2(py,px);P=[px,py,pz];J2=[0,0,L1];th3=pi-acos((L2^2+L3^2-norm(P-J2)^2)/(2*L2*L3));th3=-th3;C1=cos(th1);S1=sin(th1);C3=cos(th3);S3=sin(th3);A=C1*px+S1*py;B=pz-L1;W1=(L2+C3*L3);W2=(L3*S3);fprintf('W1^2+W2^2=%4.2f\n',W1^2+W2^2);th2=atan2((W1*B-W2*A),(W1*A+W2*B));fprintf('th1=%4.2f\n',th1*ToDeg);fprintf('th2=%4.2f\n',th2*ToDeg);fprintf('th3=%4.2f\n',th3*ToDeg);7.4Build_6DOFRobot_Lnya.mToDeg=180/pi;ToRad=pi/180;UX=[100]';UY=[010]';UZ=[001]';Link=struct('name','Body','th',0,'dz',0,'dx',0,'alf',90*ToRad,'az',UZ);%azLink(1)=struct('name','Base','th',0*ToRad,'dz',-200,'dx',100,'alf',0*ToRad,'az',UZ);%BaseTo1Link(2)=struct('name','J1','th',180*ToRad,'dz',250,'dx',0,'alf',90*ToRad,'az',UZ);%1TO2Link(3)=struct('name','J2','th',0*ToRad,'dz',0,'dx',100,'alf',0*ToRad,'az',UZ);%2TO3Link(4)=struct('name','J3','th',0*ToRad,'dz',0,'dx',100,'alf',-90*ToRad,'az',UZ);%3TO4Link(5)=struct('name','J3','th',0*ToRad,'dz',0,'dx',50,'alf',0*ToRad,'az',UZ);%4TO5Link(6)=struct('name','J3','th',0*ToRad,'dz',100,'dx',0,'alf',0*ToRad,'az',UZ);%5TO6Link(7)=struct('name','J3','th',0*ToRad,'dz',0,'dx',50,'alf',0*ToRad,'az',UZ);%6TO77.5Erzhihua.mclear,clcA=imread('广工.png');B=rgb2gray(A);g_max=double(max(max(B)));g_min=double(min(min(B)));T=round((g_max-g_min)/2);D=(double(B)>=T);[Dm,Dn]=size(D);num=1;form=1:Dmifmod(m,2)==0n=Dn;forii=1:DnifD(m,n)==0FP(num,1)=(Dm-m);FP(num,2)=(Dn-n);num=num+1;endn=n-1;endelsen=1;forii=1:DnifD(m,n)==0FP(num,1)=(Dm-m);FP(num,2)=(Dn-n);num=num+1;endn=n+1;endendendsave('FP.mat','FP');7.6draw_Workplace.mcloseall;clear;ToDeg=180/pi;ToRad=pi/180;num=1;th_interval=30;d_interval=10;forth1=-180:10:180forth2=-90:th_interval:90forth3=-180:th_interval:0ford4=-40:d_interval:200forth5=-180:th_interval:180forth6=-90:th_interval:90theta1=th1*ToRad;theta2=th2*ToRad;theta3=th3*ToRad;theta5=th5*ToRad;theta6=th6*ToRad;A1=[[cos(theta1),0,sin(theta1),0][sin(theta1),0,-cos(theta1),0][0,1,0,250][0,0,0,1]];A2=[[cos(theta2),-sin(theta2),0,0][sin(theta2),cos(theta2),0,0][0,0,1,80][0,0,0,1]];A3=[[cos(theta3),0,-sin(theta3),100*cos(theta3)][sin(theta3),0,cos(theta3),100*sin(theta3)][0,-1,0,0][0,0,0,1]];A4=[[1,0,0,0][0,1,0,0][0,0,1,d4+50][0,0,0,1]];A5=[[cos(theta5),-sin(theta5),0,0][sin(theta5),cos(theta5),0,0][0,1,0,100][0,0,0,1]];A6=[[cos(theta6),-sin(theta6),0,50*cos(theta6)][sin(theta6),cos(theta6),0,50*sin(theta6)][0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论