




免费预览已结束,剩余10页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+大作业项目报告AGV 路径规划与运行仿真软件设计小组成员: 日期:2015年6月16日 指导老师: 目录C+大作业项目报告1AGV 路径规划与运行仿真软件设计1一、课题背景31.1案例背景31.2问题描述31.3任务目标31.4具体分析3二、系统设计42.1类体系设计42.2类定义及函数描述42.3程序流程图5三、程序重点解析73.1文本文档读入地图信息73.2 Dijkstra 算法程序设计83.3动态显示部分9四、程序运行结果展示104.1地图文件104.2运行窗口104.3动态显示窗口114.5改变地图,改变AGV参数运行。12五、程序设计小结145.1程序设计的缺陷和不足145.2设计中遇到的困难14六、参考资料15七、源程序及相关文件15八、各小组成员个人报告15一、课题背景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).基类:CFixedMapclass CFixedMapstruct Coordinateint x;int y;int num;/记录点的结构体struct combpint x1,y1;int x2,y2;/连通点坐标struct Combnameint num1;int num2;/连通点名public:int mVexNum; / 顶点数int mEdgNum; / 边数double mMatrixMAXMAX; / 邻接矩阵Combname combMAX; /连通点名combp cpMAX; /连通点坐标Coordinate mVexsMAX; / 顶点集合int getx(int n1);int gety(int n2);void Input();/以文件方式输入地图信息void ShowMap();/easyx显示地图;(2).基类CAGVclass CAGVint speed; /AGV速度int width; /AGV宽度int length; /AGV长度public:CAGV();int getl(); /返回AGV长度int getw(); /返回AGV宽度int gets(); /返回AGV速度;(3).单一继承类CPathPlanclass CPathPlan:public CFixedMappublic:int pathMAX; /存放最后一个点double distMAX; /存放路径距离int v0; /起始点int route40; /路径int rnum; /路径顶点数Coordinate rpointsMAX;/路径点集void MaptoGraph();void Dijstra();void Putpath();(4).多重继承类CAGVShowclass CAGVShow:public CPathPlan,public CAGVpublic:#define k (abs(y2-y1)/(abs(x1-x2)int a,b,c,d;int x1,x2,y1,y2; /AGV实际坐标int i,j;int l,w,s; /对应类CAGV中的相关数据void show();2.3程序流程图开始AGV信息设定自动设置AGV?是自动载入地图?手动输入AGV信息手动输入地图文件名载入地图文件(文本)多次演示?否显示地图路径文件输出路径规划动态显示动态显示显示地图路径规划路径文件输出结束?结束是否是否是否三、程序重点解析3.1文本文档读入地图信息在最初的设计中,为了方便调试与信息录入,地图文本做的粗糙不堪,但这确实为程序编写提供了许多便利。如图,优化前的地图文件:可以看出,全都是由数字组成,如果不了解程序,就不知道文件包含了什么,应该怎样修改。在优化时,加入了大量提示信息,由此也出现了问题。由于文件流输入无法判断输入的信息类型,造成了将提示信息录入而无法得到正确信息的错误。为解决这一问题,我们使用了一个简单的手段,即将提示信息与地图信息分隔,并分别录入,然后不再处理提示信息。改进后的地图文本如下:程序中的相应代码:/以文件方式输入地图信息void CFixedMap:Input()int panju;char fname10=map2.txt;coutpanju;if(panju=2)coutfname;ifstream file(fname);char use1100;char use2100;char use3100;char use4100; /use数组用来储存提示信息。fileuse1;filemVexNum; /端点个数fileuse2;filemEdgNum; /边数fileuse3;for(int i=0;imVexsi.nummVexsi.xmVexsi.y;fileuse4;for(i=0;icombi.num1combi.num2;file.close();3.2 Dijkstra 算法程序设计Dijkstra 算法主要就是查找和更新,开始时想过用指针来做,后来由于跟地图的输入结合要用到input函数里的变量,于是就采用了用数组来储存距离和路径。在Diikstra算法中首先是初始化源点数组,然后就是查找其他到源点距离最近的点,然后就是将该点并入源点集,再就是更新,以上次并入的点为起点开始查找,直到遍历所有点。刷新每次查找后的最短距离并保存。代码如下:void Dijstra()coutv0;v0-;int sMAX;int v;int i;int j;int w;double min;for(v=0;vmVexNum;v+) /初始化S,dist,pathsv=0; /0表示未求出最短路径distv=mMatrixv0v; /开始时假定为最短路径if(distvmaxD & v!=v0)pathv=v0; /直达情况else pathv=-1; /无直达路径distv0=0; /初始时v0属于s集,v0到v0路径最短sv0=1;for(i=1;imVexNum;i+) /假设由一个中转点到达会近些,验证。再假设由两个中转点到达会近些,验证。穷举min=maxD;for(w=0;wmVexNum;w+) /找一个最近到的点,下标装入vif(sw=0 & distwmin) /点w不属于s集且离v0更近v=w; /经点w中转min=distw;sv=1; /将v并入S,由v0到达v点最短距离为min,假设由v0到v再由v到其余各点,更新当前最后一个点及距离for(j=0;jmVexNum;j+)if(sj=0 & (min+mMatrixvjdistj) /如果多经过一个点v到点j的距离更短,更新distj=min+mMatrixvj;pathj=v; /点的序号3.3动态显示部分问题主要是集中在用easyx画图上,从直线到斜线到反向直线和任意一个线段,全部用循环和间歇控制,主要工作就是每隔一个间隔绘制一定的图像使得间隔连起来的一个整体是一个顺畅的连贯的运行图。说起来简单可实践起来哪怕是循环中画图和清空的顺序不对,显示的都会是一个完全不像样的运行线路,所以整个程序部分对逻辑的要求比较严格,每个细节都要重复重复地检查和试运行才能达到不出错的地步。寻找错误几乎成了整个程序设计的主要工作,不过也是在告诉我们,编好程序不一定要多么高级,而是少犯错。程序代码过多,参见cpp文件。 四、程序运行结果展示4.1地图文件4.2运行窗口4.3动态显示窗口4.4fops.txt路径输出4.5改变地图,改变AGV参数运行。(1).地图文件(2).运行窗口,动态显示,fops路径文件输出。五、程序设计小结5.1程序设计的缺陷和不足(1) 地图输入的方式虽然采用了文件流,但是实用价值仍然不高,负责输入的组员曾经考虑过使用图片载入,但查阅相关资料后因为难度较大而放弃。(2) 算法的革新未能实现,直接使用了比较简单和落后的Dijkstra 算法,程序的处理能力并不强。(3) 多台AGV运行未能实现。后期优化的同时,尝试将1台AGV增加到两台,但是由于动态显示部分程序的特殊性未能完成。(4) 动态显示比较流畅,然而利用sleep方法完成的显示部分会将整个程序冻结,计时器没能使用,是一个遗憾。(5) 程序的界面不够友好,由于前期各项工作完成的进度不如人意,程序的MFC改编也未能完成。5.2设计中遇到的困难主要是小组成员各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灭鼠灭蟑螂培训课件
- 2025贵州省水利投资(集团)有限责任公司招聘84人考前自测高频考点模拟试题及答案详解(有一套)
- 服务与沟通培训课件
- 2025-2030工业激光器核心光学元件市场格局与技术创新方向报告
- 2025-2030工业气体产业市场现状及投资前景评估研究报告
- 2025-2030工业机器人核心零部件市场供需分析与投资风险评估报告
- 2025安徽芜湖经济技术开发区公办幼儿园招聘26人考前自测高频考点模拟试题带答案详解
- 2025-2030工业机器人应用场景拓展与市场竞争态势评估分析报告
- 2025-2030工业机器人产业链发展趋势及资本运作模式分析报告
- 2025-2030工业旅游模式对免漆门品牌传播效果评估报告
- 2024抖音护肤行业白皮书
- 电力工程施工进度及安全保障措施
- GB/T 19973.2-2025医疗产品灭菌微生物学方法第2部分:用于灭菌过程的定义、确认和维护的无菌试验
- 装修合同意向协议书
- 商铺转租赁合同范本
- 《足球裁判员培训》课件
- 浴室工程施工组织设计方案
- 2024年秋九年级化学上册 第3单元 物质构成的奥秘 课题3 元素 第1课时 物质是由元素组成的说课稿 (新版)新人教版
- 安全隐患整改回复单
- 微商基础培训课件
- ISO9001:2024版质量手册资料
评论
0/150
提交评论