- 422.01 KB
- 16页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
';.C++大作业项目报告——AGV路径规划与运行仿真软件设计小组成员:日期:2015年6月16日指导老师:;."
;.目录C++大作业项目报告........................................................................................................................1——AGV路径规划与运行仿真软件设计...............................................................................1一、课题背景...................................................................................................................................31.1案例背景.............................................................................................................................31.2问题描述.............................................................................................................................31.3任务目标.............................................................................................................................31.4具体分析.............................................................................................................................3二、系统设计...................................................................................................................................42.1类体系设计.........................................................................................................................42.2类定义及函数描述.............................................................................................................42.3程序流程图.........................................................................................................................5三、程序重点解析...........................................................................................................................73.1文本文档读入地图信息.....................................................................................................73.2Dijkstra算法程序设计.......................................................................................................83.3动态显示部分.....................................................................................................................9四、程序运行结果展示.................................................................................................................104.1地图文件...........................................................................................................................104.2运行窗口...........................................................................................................................114.3动态显示窗口...................................................................................................................124.5改变地图,改变AGV参数运行。..................................................................................13五、程序设计小结.........................................................................................................................155.1程序设计的缺陷和不足...................................................................................................155.2设计中遇到的困难...........................................................................................................15六、参考资料.................................................................................................................................16七、源程序及相关文件.................................................................................................................16八、各小组成员个人报告.............................................................................................................16;."
;.一、课题背景1.1案例背景AGV(自动导引车)由于运动灵活,被广泛用于生产车间物料的搬运。由于单机搬运能力有限,实践中经常需要由多台AGV同时进行搬运。由于AGV一般无法感知全局信息,为避免多AGV发生碰撞并提高AGV搬运效率,多台AGV需要与上位机调度系统进行通信并依据调度指令运行。1.2问题描述在已知AGV运行的地图以及AGV运行速度前提下,采用C++编写单台AGV路径规划的最短路径算法,并动态显示AGV的运行。1.3任务目标针对AGV搬运调度需求开发一套AGV路径规划与运行监控仿真软件,合理规划单台AGV运行路径并动态显示运行轨迹。1.4具体分析由以上介绍可知,AGV在工业生产中有着很广泛的应用,对AGV导引程序的研究是有着很强实际意义的。要完成一个完整的AGV路径规划程序,就要考虑地图,AGV,和路径三个方面的问题。而其中,路径又是最为重要的。本程序要求仿真显示,所以显示部分也是重点。若制作多台AGV的路径规划程序,还应当考虑到路径的重叠,以避免碰撞产生。;."
;.二、系统设计2.1类体系设计包含了两个基类CFixedMap和CAGV,一个单一继承的派生类CPathPlan和一个多重派生类CAGVShow。2.2类定义及函数描述各个类的成员以及成员函数的作用如注解所示。(1).基类:CFixedMapclassCFixedMap{structCoordinate{intx;inty;intnum;};//记录点的结构体structcombp{intx1,y1;intx2,y2;};//连通点坐标structCombname{intnum1;intnum2;};//连通点名public:intmVexNum;//顶点数intmEdgNum;//边数doublemMatrix[MAX][MAX];//邻接矩阵Combnamecomb[MAX];//连通点名combpcp[MAX];//连通点坐标CoordinatemVexs[MAX];//顶点集合intgetx(intn1);intgety(intn2);;."
;.voidInput();//以文件方式输入地图信息voidShowMap();//easyx显示地图};(2).基类CAGVclassCAGV{intspeed;//AGV速度intwidth;//AGV宽度intlength;//AGV长度public:CAGV();intgetl();//返回AGV长度intgetw();//返回AGV宽度intgets();//返回AGV速度};(3).单一继承类CPathPlanclassCPathPlan:publicCFixedMap{public:intpath[MAX];//存放最后一个点doubledist[MAX];//存放路径距离intv0;//起始点introute[40];//路径intrnum;//路径顶点数Coordinaterpoints[MAX];//路径点集voidMaptoGraph();voidDijstra();voidPutpath();};(4).多重继承类CAGVShowclassCAGVShow:publicCPathPlan,publicCAGV{public:#definek(abs(y2-y1))/(abs(x1-x2))inta,b,c,d;intx1,x2,y1,y2;//AGV实际坐标inti,j;intl,w,s;//对应类CAGV中的相关数据voidshow();};2.3程序流程图;."
;.开始否手动输入AGV信息自动设置AGV?是AGV信息设定否自动载入地图?手动输入地图文件名是载入地图文件(文本)否多次演示?是显示地图显示地图路径规划路径规划路径文件动态显示输出动态显示否结束?路径文件输出是结束;."
;.三、程序重点解析3.1文本文档读入地图信息在最初的设计中,为了方便调试与信息录入,地图文本做的粗糙不堪,但这确实为程序编写提供了许多便利。如图,优化前的地图文件:可以看出,全都是由数字组成,如果不了解程序,就不知道文件包含了什么,应该怎样修改。在优化时,加入了大量提示信息,由此也出现了问题。由于文件流输入无法判断输入的信息类型,造成了将提示信息录入而无法得到正确信息的错误。为解决这一问题,我们使用了一个简单的手段,即将提示信息与地图信息分隔,并分别录入,然后不再处理提示信息。改进后的地图文本如下:程序中的相应代码://以文件方式输入地图信息voidCFixedMap::Input(){intpanju;charfname[10]={"map2.txt"};cout<<"是否载入默认地图?(1:是,2:否)";cin>>panju;if(panju==2){cout<<"请输入地图信息文件名:";cin>>fname;;."
;.}ifstreamfile(fname);charuse1[100];charuse2[100];charuse3[100];charuse4[100];//use数组用来储存提示信息。file>>use1;file>>mVexNum;//端点个数file>>use2;file>>mEdgNum;//边数file>>use3;for(inti=0;i>mVexs[i].num>>mVexs[i].x>>mVexs[i].y;}file>>use4;for(i=0;i>comb[i].num1>>comb[i].num2;}file.close();}3.2Dijkstra算法程序设计Dijkstra算法主要就是查找和更新,开始时想过用指针来做,后来由于跟地图的输入结合要用到input函数里的变量,于是就采用了用数组来储存距离和路径。在Diikstra算法中首先是初始化源点数组,然后就是查找其他到源点距离最近的点,然后就是将该点并入源点集,再就是更新,以上次并入的点为起点开始查找,直到遍历所有点。刷新每次查找后的最短距离并保存。代码如下:voidDijstra(){cout<<"输入起点:";cin>>v0;v0--;ints[MAX];intv;inti;intj;intw;doublemin;;."
;.for(v=0;v
您可能关注的文档
- 《外贸英语合同》项目报告.doc
- 模具设计与制造专业特色与创新项目报告.doc
- 《自治区职业教育攻坚专项经费支持的中等职业教育实训基地建设项目报告书》.doc
- 财务管理项目报告.doc
- 《改善项目报告》PPT课件.ppt
- 重庆大学算法导论跳桩得珠宝问题项目报告(包含报告和源代码).doc
- 机电传动与控制课程综合训练项目报告模板.doc
- 襄樊市重点项目(整合)项目报告.doc
- 分布式光伏发电项目报告课件.ppt
- 人事管理系统项目报告书.doc
- Windows网络操作系统管理07实训项目报告-配置WINS服务.doc
- 汽车自动清洗装置项目报告.doc
- 循环灯控制系统项目报告.doc
- 济源市宇润循环发展科技有限公司年产12万吨铝酸钙粉项目报告表.pdf
- 年回收利用13万吨液态钢渣项目报告表.pdf
- 湖北省宏源药业科技股份有限公司年产1000吨阿昔洛韦建设项目报告书.pdf
- 最优控制项目报告.doc
- PLC综合应用技术期末考试项目报告.doc