设计小组名单:
组员 | 班级 | 组员分工 |
倪佳伟(组长) | F0603016 | 串口程序、小车控制程序、小车装配与调试、实验报告 |
唐健刚 | F0603016 | 串口程序、控制程序、小车装配与调试、资料汇总与实验报告 |
王羲中 | F0603016 | 图像处理、迷宫算法、小车调试、实验报告 |
刘彦熙 | F0603018 | 图像处理、迷宫算法 |
摘 要:
本项目采用ATMEL公司的AT89S52芯片作为处理芯片,实现小车在计算机控制下走出迷宫的功能。使用一辆小车、一台PC及摄像头。利用摄像头将迷宫的信息拍摄成图片,传送给计算机,计算机通过OPEN CV图像处理,计算出小车走出迷宫的最短路径,通过串口模块将信息传递给小车,使之以最短的路径走出迷宫。
关键词:
小车、迷宫、计算机、OPEN CV
目 录
一. 整体介绍 1
二. 硬件部分 3
三. 软件部分 7
四. 系统测试 10
五. 心得体会 11
六. 致谢 12
七. 附录 13
由摄像头(建议使用USB接口)捕捉迷宫的信息以及迷宫内内小车的位置情况,通过串口线传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及迷宫的信息,经过计算,作出控制决策,生成控制信号,并经通讯模块发送至小车。
小车上的控制电路对控制信号作出相应反应,驱动电机。
使用硬件材料:
89S52单片机控制的小车、RS232有线收发模块、USB转RS232串口线、计算机、摄像头
项目组成
1、图像处理
摄像头监小车位置,通过图像处理的手段发布指令。其中的具体项目包括图像实时采集,图像处理——预处理,形状检测,小车跟踪,摄像机标定及最优线路生成。
2、串行通信
计算机与小车之间的通信为串行通信(有线),实现PC与单片机的通信。由摄像头(USB接口)实时捕捉迷宫内小车的位置情况,通过USB线缆传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及迷宫的信息,经过计算,作出控制决策,生成控制信号,并经通讯模块发送至小车。
3、单片机部分
具体包括闭环控制算法,小车电机控制。
硬件介绍
小车分为三个部分,主板部份、车体部份和控制芯片部份。
主板部分负责接受8V直流电源,并向小车的电机提供8V电压,向电路板上的芯片提供工作电压。
车体部份主要为上层芯片和整体提供支撑,它的电机为小车提供动力前进。
控制芯片部份负责识别并处理收到的信号,并输出控制信号,控制小车电机的运转。
信号收发模块
信号收发模块分为收发两部分,即发送部分与串口连接,接受串行通讯标准的TTL高低电平,将其调制后发送出去。
接受部份将发出的信号转化成标准串行通讯信号发送给小车。接收模块的Vcc与89S52上层版的Vcc连接,GND接电路板的任一接地端。
信号输出端与89S52上层版的RxD连接,由于主板三极管通常是坏的,可将上层板RxD与底板分开。
USB转RS232线
此串口线将增加电脑一个COM口,根据电脑的不同,初始被赋予的COM口地址也不同,但一般为COM4,可以在设备管理器中对端口地址进行修改。
对于电脑与小车进行串行通信来说该线是透明的。其USB端接电脑,TxD接无线发送模块的数据端,Vcc与发送模块Vcc相连,GND与发送模块GND连接。
电脑及摄像头
电脑有两个以上USB口,摄像头使用普通USB摄像头。
本次实验主要用到两块控制芯片,一块是AT89S52
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。AT89S52使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,AT89S52拥有灵巧的8 位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
其PDIP图如下:
硬件原理图
另一块芯片是L298N,用它来分别控制两个电机。
管脚图如下:
每个管脚正常工作时的电参数如下:
硬件原理图
编程语言:C++
编译环境:VC6.0
所加载类库:Open CV图像处理库,EasyComm串口读写类
图像处理
我们小组采用OPEN CV软件进行图像处理,OPEN CV模块如下图所示
其中:
CV:图像处理、视觉算法
CXCORE:基本数据结构、运算
HighGui:GUI,图像、视频接口
所实现的图像处理过程如下:
1.1图像的实时采集
包括以下注意点:
光源亮度要足够、均匀
成像的投影关系
镜头聚焦使整个场景清晰
1.2图像处理
图像处理包括预处理,形状检测,小车跟踪,摄像机标定这几方面的内容。
预处理
OPEN CV图像预处理技术常用的一般有以下三种:图像二值化、直方图均衡化、空间滤波。
我们小组采用的是图像二值化对图像进行图像预处理。图像二值化的目的是将灰度图像转化为黑白图像,用于边缘提取,在模式识别中生成特征量。其基本算法思想如下:
输入:灰度图像,F(i,j)=0~255
输出:二值图像,B(i,j)=0~1
B(i,j)=
阈值T 的选取原则:突出图像特征,抑制背景和噪声干扰。
1.2.1小车跟踪
我们小组采用背景剪除方法
背景剪除(Background Substraction)
•算法步骤
1)背景建模:最简单的是时间平均
2)当前图像与背景图像差分
3)运动区域判断(阈值比较)
优点: 计算量小,可以提供全部的特征数据
缺点: 受变化背景、变化光照影响很大
1.3最优路径的生成
对迷宫进行搜索后得出最优路径。过程是,假定小车向各个方向行走,若不通则为死路。与此同时。寻找小车对应路线的坐标。通过OPEN CV得出最优路径。
2.单片机部分
玩具小车上的控制电路对控制信号作出相应反应,驱动电机。系统设计应当至少完成控制程序与控制电路两部分。软件中的单片机便是控制程序。
3.串口通信部分
具体功能:由摄像头(USB接口)实时捕捉迷宫内小车的位置情况,通过USB线缆传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及迷宫的信息,经过计算,作出控制决策,生成控制信号,并经通讯模块发送至小车。
迷宫算法说明
首先由摄像头读取迷宫图像,然后利用Open CV对图像进行像素处理,然后利用广度优先的方式找到迷宫的出口。由于此时方向没有办法确定,于是便将各个方向加了一个优先级排序,使小车的路线尽可能的直,便于实际操作。(迷宫算法采用广度优先的方式进行计算。)
对小车的测试主要包括两个方面。一是图像处理结果与小车之间的串口通信;
二是对于小车控制的调试。
Ⅰ图像处理结果与小车的串口通信
测试结果良好,在测试过程中基本没有遇到什么困难。在串口通讯完成以后,小车能够按照图像处理的结果进行左右拐弯、前进、停止等基本行动。
Ⅱ小车控制
所遇到的最大问题是小车拐弯的问题。经过多次测试得到如下结果:
1、小车不是很稳定。
不知道是因为马达的问题,还是控制芯片的问题,抑或是其他一些我们没有想到的问题,小车总不是很稳定,而每次小车的不稳定,直接导致我们小组的成员要花费相当多的时间去检查小车硬件方面的问题,连线的焊接是否有误、是否出现连线断开的问题,控制芯片是否查紧等问题。
2、拐弯比较困难
我们小组在初始阶段预备采用一倍路宽(对于迷宫而言),但由于小车的体积比较大,要做到这一点比较困难。我们小组各成员经过讨论,决定改用二倍路宽,并取得了比较好的成就。
3、小车参数的设置
小车参数的设置是个复杂的问题,任何条件的改变都会对其造成影响:如小车的负重,电压的大小,甚至小车重心的改变,不仅如此,还要考虑小车颜色对识别的影响等因素。我们小组最终的测试环境如下:采用有线串口通讯,8V直流电压(未采用电池,因为会导致小车重心改变而影响最终的测试结果)。
在整个小车装配的过程中,别看就是小小的焊接工作,要让小车动起来绝对不是一件易事。线头的焊接看似简单,但很容易断线,更让我们小组感到苦恼的是,在对连线进行全面检查之后,确定没有漏焊虚焊的情况下,小车就是走不起来。我们只能碰碰运气似的对元器件进行检查,只要有一丝发现,我们就会用百分百努力去解决。但这一过程十分难熬,光是对硬件的调试,我们的反复检查和维修就不少于15次。这其中我们小组的成员一直在希望和失望之间徘徊,也许是领取的小车不够完好,也许是我们的焊工不够出色,但不管怎样,小车最后还是走了起来。在写入单片机程序之后,我们又根据我们的迷宫算法和迷宫矩阵,对参数进行调整,让小车的向前、向左、向右、停止达到我们的要求。
图像处理是整个项目的重点和难点。我们小组的成员为了更好地完成这项工作,自发购买了OpenCV的教程书籍,相互交流,同时也与其他小组进行沟通。而在临近验收的那几个星期里,我们更是编程编到凌晨一两点。光是这份执着和责任心,就足以让人敬佩。
也许最后的结果不是很完美,但通过这次的历练,我们小组的成员们懂得了团队精神、培养了自主学习的能力,锻炼了耐心和细心程度,磨练了意志和责任。毫无疑问,本次科创实验,过程比结果更加重要和可贵。这如老师所说,我们追求的是这个过程,相信如果给我们小组更多的时间,我们一定会这个项目做得更好。
在本次试验中,不仅是科创负责人张士文老师、帮助我们调试和更换器件的助教以及给我们讲课的老师,还有许多给予过我们帮助的同学,在此,我们小组对于你们的指导与帮助表示最衷心的感谢!
小车静态照片一张
唐健刚在装配小车
线老是断,倪佳伟在焊接
更多照片
本文来源:https://www.2haoxitong.net/k/doc/563ecd2d178884868762caaedd3383c4bb4cb42d.html
文档为doc格式