课程报告(word).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程报告(word).doc

科技创新3-- 计算机控制小车走迷宫 (M03小组) 概述: 小车走迷宫”,主要的方法示意图如下: 1. 图像处理 本项目的第一步就是要实现图像的识别和处理。我们组选择了使用拥有开源代码库的Opencv做为我们的图像处理工具。Opencv在安装了visual studio之后便可在vc编译器上编程。在听了老师的讲座、自己查阅资料、试编例程后,就能一步步学会使用Opencv提供的工具,用来给我们服务。 在图像处理阶段,要实现迷宫的识别,入口和出口的识别,小车位置的识别,小车头尾的识别等多重任务。 2. 路径判断 在已能识别迷宫的基础上,实现根据出口和入口或根据小车位置和出口而求最短路径。相对于图像处理而言,路径的计算是相对简单的小问题了。但是,最佳路径在后续的步骤中将十分重要。 3.串口通信及单片机控制 在这部分,还要简单地学习下单片机编程的知识。把自己的小车控制程序烧入单片机,同时学会如何在程序根据路径和小车位置给小车发送下一步的运行方向指令。串口通信的相关知识也需要有所了解。成员介绍 组长: 贾钟烨 负责上位机图像处理,迷宫路径识别与指令计算工作。 组员: 杨昊 负责单片机编程和硬件调试工作。 臧硕 负责串口通讯部分和硬件联合调试工作。 郑吉聪 负责迷宫,小车外壳制作,后期处理工作。 软件部分为图像处理,路径计算,串口通信三个部分。 软件执行总流程为: 其中,图像处理采用C++结合OpenCV实现,由于OpenCV 1.0不支持DirectX摄像头驱动,因此又配合了第三方库CameraDS以驱动摄像头。首先运行初始化。摄像头采集图像后,由于迷宫经投影角度发生变化,故使用函数OpenCV库函数cvWarpPerspective(),进行透视变换后得到迷宫的正上方俯视图。然后进行二值化。由于已知迷宫为4*4方格,因此编写函数checkVert(),checkHori() 对每个方格边界进行采样,采样遍历所有方格,之后可以得到图的矩阵。示意如下: vert: check whether ( x, y) ( x, y+1) are connected ?????? if so, set ( x, y)-VertPlus ( x, y+1)-VertMinus to be true hori: check whether ( x, y) ( x+1, y) are connected ?????? if so, set ( x, y)-HoriPlus ( x+1, y)-HoriMinus to be true 而后,进行路径计算,第一步得到的图的数据结构为一个特化的邻接矩阵。考虑到小车转弯难度较大,因此路径搜索采用特化的DFS,编写函数ComputePath()和递归函数goHoriPlus( ),goVertPlus( ),goVertPlus( ),goVertPlus( ) 优先考虑直行。搜索过程中使用一个“节点栈”保存路径信息,即到达节点时压栈,离开节点时弹栈,DFS至出口终结,路径上所经过的节点均保留在栈中。之后利用节点栈计算指令。编写函数 initInstruction( void) 根据节点坐标求出每一步应下达给小车的指令F(前进)、L(左转)、R(右转)。 最后,使用MuMega Technologies提供的VC++类CSerial实现串口通信,以下为其定义部分 其中使用Open函数用于打开端口,Close函数用于关闭端口,SendData函数用于发出字符。 使用一个自定义函数SendByte调用该类成员函数,并将其成员函数Open返回值(True表示端口正常打开)作为反馈值返回给图像处理程序以判断数据是否成功发送。通过发送与下位机程序约定好的代表各种动作命令的字符(F、L、R)以达到控制小车运动的效果。 运行截图: 透视变换 二值化 计算路径和命令实验室提供器材简介: 小车分为三个部分,底板部份、车体部份和89S52部份。底板部分负责向小车车体部份的电机提供8V电压,向89S52提供 5V工作电压以及转换各种信号。车体部份主要为上层芯片和整体提供支撑,它的电机为小车提供动力前进。89S52部份负责识别收到的信号,并将其转换成电机的控制信号。 无线模块分为收发两部分,发送部分与串口连接,接受串行通讯标准的TTL高低电平,将其调制后作为无线信号发送出去。接受部份将发出的无线信号转化成标准 串行通讯信号发送给小车。无线接收模块的Vcc与89S52上层版的Vcc连接,GND接电路板的任一接地端。信号输出端与89S52上层版的RxD连 接,由于底板三极管通常是坏的,可将上层板RxD与底板分开。 USB转RS232线将增加

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档