C大作业项目报告—AGV 路径规划与运行仿真软件设计

上传人:龙*** 文档编号:133825309 上传时间:2020-05-30 格式:DOC 页数:15 大小:237.02KB
返回 下载 相关 举报
C大作业项目报告—AGV 路径规划与运行仿真软件设计_第1页
第1页 / 共15页
C大作业项目报告—AGV 路径规划与运行仿真软件设计_第2页
第2页 / 共15页
C大作业项目报告—AGV 路径规划与运行仿真软件设计_第3页
第3页 / 共15页
C大作业项目报告—AGV 路径规划与运行仿真软件设计_第4页
第4页 / 共15页
C大作业项目报告—AGV 路径规划与运行仿真软件设计_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《C大作业项目报告—AGV 路径规划与运行仿真软件设计》由会员分享,可在线阅读,更多相关《C大作业项目报告—AGV 路径规划与运行仿真软件设计(15页珍藏版)》请在金锄头文库上搜索。

1、实用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设

2、计中遇到的困难14六、参考资料15七、源程序及相关文件15八、各小组成员个人报告15一、课题背景1.1案例背景AGV(自动导引车)由于运动灵活,被广泛用于生产车间物料的搬运。由于单机搬运能力有限,实践中经常需要由多台AGV 同时进行搬运。由于AGV 一般无法感知全局信息,为避免多AGV 发生碰撞并提高AGV 搬运效率,多台AGV 需要与上位机调度系统进行通信并依据调度指令运行。1.2问题描述在已知AGV运行的地图以及AGV运行速度前提下,采用C+编写单台AGV路径规划的最短路径算法,并动态显示AGV 的运行。1.3任务目标针对AGV 搬运调度需求开发一套AGV 路径规划与运行监控仿真软件,合理

3、规划单台AGV 运行路径并动态显示运行轨迹。1.4具体分析由以上介绍可知,AGV在工业生产中有着很广泛的应用,对AGV导引程序的研究是有着很强实际意义的。要完成一个完整的AGV路径规划程序,就要考虑地图,AGV,和路径三个方面的问题。而其中,路径又是最为重要的。本程序要求仿真显示,所以显示部分也是重点。若制作多台AGV的路径规划程序,还应当考虑到路径的重叠,以避免碰撞产生。二、系统设计2.1类体系设计包含了两个基类CFixedMap和CAGV,一个单一继承的派生类CPathPlan和一个多重派生类CAGVShow。2.2类定义及函数描述各个类的成员以及成员函数的作用如注解所示。(1).基类:C

4、FixedMapclass 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);

5、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 dis

6、tMAX; /存放路径距离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中的相关

7、数据void show();2.3程序流程图开始AGV信息设定自动设置AGV?是自动载入地图?手动输入AGV信息手动输入地图文件名载入地图文件(文本)多次演示?否显示地图路径文件输出路径规划动态显示动态显示显示地图路径规划路径文件输出结束?结束是否是否是否三、程序重点解析3.1文本文档读入地图信息在最初的设计中,为了方便调试与信息录入,地图文本做的粗糙不堪,但这确实为程序编写提供了许多便利。如图,优化前的地图文件:可以看出,全都是由数字组成,如果不了解程序,就不知道文件包含了什么,应该怎样修改。在优化时,加入了大量提示信息,由此也出现了问题。由于文件流输入无法判断输入的信息类型,造成了将提示信

8、息录入而无法得到正确信息的错误。为解决这一问题,我们使用了一个简单的手段,即将提示信息与地图信息分隔,并分别录入,然后不再处理提示信息。改进后的地图文本如下:程序中的相应代码:/以文件方式输入地图信息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; /端点个

9、数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算法中首先是初始化源点数组,然后就是查找其他到源点距离最近的点,然后就是将该点并入源点集,再就是更新,以上次并入的点为起点开始查找,直到

10、遍历所有点。刷新每次查找后的最短距离并保存。代码如下: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+) /假设由一个中转

11、点到达会近些,验证。再假设由两个中转点到达会近些,验证。穷举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路径输出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 大学论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号