计算机控制小车走迷宫

2009-1-9                                   M17组 组长:李小超 组员:蔺昊天 许亮 锦晓曦 陈妍君


小组成员     项目介绍    硬件部分    软件部分    课程体    相关文件下载       


小组成员                                                                                                            TOP

SP_A0182.jpgSP_A0183.jpg

李小超:左图右 学号5060309708;负责部分:迷宫制作,资料查找,协调小组成员之间的工作及任务分派,并参与网页制作;

蔺昊天:左图中 学号5060309685;负责部分:程序编写,OPENCV图像处理,单片机调试;

  亮:左图左 学号5060309707;负责部分:小车行走算法编写调试,网页制作;

锦晓曦:右图右 学号5070309548;负责部分:资料整理,文档文件编写;

陈妍君:右图左 学号5070309613;负责部分:关注课程网站信息,资料整理,与其他小组的交流,小车的美化、保护。

 


项目介绍                                                                                                           TOP

本项目由计算机控制小车走出自己搭建的迷宫:首先由摄像头(USB接口)捕捉迷宫情况,计算机软件通过图像处理识别入口与出口,自动生成行使路径;再发出控制小车的指令,经通讯模块传送至小车,小车开始行驶;再由摄像头实时捕捉迷宫内小车的位置情况,通过USB线缆传送至电脑里编写的软件,软件再通过图像识别找出当前小车的位置信息及迷宫的信息,生成控制信号,并经再通讯模块发送至小车。以次循环,最终使小车走出迷宫。

index_1.jpg

说明:通过摄像头采集迷宫的数据及小车在迷宫中的位置信息,传输至计算机,计算机内部对图像信息进行处理,提取出有用信息数据,并根据数据生成小车走迷宫的路径,通过串口传至小车,小车接收指令走出迷宫。计算机发指令部分由计算机自己完成。

提供的实验器材:89S52单片机控制的小车,RS232有线收发模块、USBRS232串口线及计算机(自备计算机也可以)。

自备摄像头。


                      

硬件部分:

                                                                              TOP

方案设计:

index_2.jpg

小车硬件电路图:

dianzichuangyishiyan-schematic.png

小车硬件信息:

用到两块主要的芯片,一块是CMOS8位微控制器,其主要功能是:
· 兼容MCS-51指令系统
· 8k可反复擦写(>1000次)ISP FLASH ROM
· 1000次擦写周期
· 32个双向I/O
· 4.5-5.5V工作电压
· 316位可编程定时/计数器
· 时钟频率0-33MHz
· 全双工UART串行中断口
· 128x8bit内部RAM
· 低功耗空闲和省电模式
· 中断唤醒省电模式
· 3级加密位
· 看门狗(WDT)电路
· 软件设置空闲和省电功能
· 灵活的ISP字节和分页编程
· 双数据寄存器指针


   AT89S52
是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。AT89S52使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,AT89S52拥有灵巧的8 CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:
8k
字节Flash256字节RAM32 I/O 口线,看门狗定时器,2 个数据指针,三个16
位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz
静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

另一块芯片是L298N

OPERATINGSUPPLYVOLTAGEUP TO 46 V

.TOTAL DC CURRENT UP TO 4 A

.LOWSATURATION VOLTAGE

.OVERTEMPERATURE PROTECTION LOGICAL ”0”

INPUT VOLTAGE UP TO 1.5 V(HIGHNOISE IMMUNITY)

 

 

 

 

 

 

软件部分:

设计说明:将整个项目分成4个部分,即图像采集处理部分,最优路径生成,串口通讯,小车电机控制。

1、图像采集处理部分。

图像采集与处理部分利用OpenCVOpen Source Computer Vision Library解决。

index_3.gif

说明:

CV:图像处理,视觉算法

CXCORE:基本数据结构,运算

HighguiGUI,图像,视频接口

这次实验主要参考了OpenCV中的Camshift的例子,利用OpenCV内部的函数将与电脑相连的USB摄像头获取的视频流导入程序中,然后依此对每帧图像进行处理。其中将初始化后的第一帧迷宫图像作为背景图,并且不再更新,利用二值化处理后的背景图得到迷宫信息,生成最优路径。之后的各帧图像实时跟踪小车在迷宫中的位置,并由此协助发送控制小车指令。

图像二值化算法(cvThreshold)

通过腐蚀噪点和图像边缘化,得到各颜色的中心,以此得到小车的中心。

2、最优路径问题。

利用BFS算法,在二值化后的迷宫图中遍历,得到最优路径。

3、串口通讯:

很遗憾,这部分内容我们未能自主编写完成。经过若干次与其他小组同学的探讨之后,我们编写我们的串口程序,但是很遗憾,这个程序并没能起到预期的作用,

仅能从计算机端口发送信号,但是小车不能做出相应的反应。

4、小车电机控制

这里主要参考了小车的selftest程序,进行多次测试后选定合适的速度(正转、反转分别测试)及转向参数,最终确定算法。

其中的相关问题及改进:

1、拐弯问题

   本小组在初始阶段采用的是一倍路宽,但由于小车的体积比较大,与与路宽几乎不相上下。要完成一倍路宽的顺利转弯必须具备一下三个条件:一是图像处理足够精确,二是小车单片机程序的参数设置适当,三是小车的马达稳定(即强劲有力)。本小组一二两点均完成了,但在调试过程中,由于马达的问题,小车不能稳定的通过拐弯。最后本小组采用两倍路宽。

2、小车参数的设置

小车参数的设置是个复杂的问题,任何条件的改变都会对其造成影响:如小车的负重,电压的大小,甚至小车重心的改变等等。本小组最终的测试环境如下:采用有线串口通讯,6.3V直流电压(未采用电池)。最终小车的车速设置为95

 


课程体会 

 李小超:本次科创是我大学的第二次科创,或许受周围同学的影响吧,大家刚开始都没有动手,所以我们刚开始的几周根本没做什么实质性工作,作为一个组长,也仅仅是组织大家开会,写写进展。期中考试一过,才发现离科创验收越来越近,仅剩一个月时间。从最初毫无头绪,充满幻想,到搜寻资料,BBS上、各大论坛中求援,到有点头绪,逐步进入状态,到然后的有较为明确的思路甚至豁然开朗,并得到一些成果,还有最后关头器材临时崩溃,导致我们陷入绝望,随后器材加班赶修完成,通过测试。完成了这个过程很有意义,可以说那几天,脑子里只有小车。本次科创让我收获了很多,特别是独自查找资料,自学的能力,受益匪浅,希望以后还有机会能做科创。最后感谢我的同学们和我共同完成了本次项目,我们团结一心,风雨同舟,克服了重重困难,很好的培养了我们的团体合作意识。

 许亮:这不是第一次做科创了,但还是第一次基本上全过程都由我们自己完成,还是很有挑战性的。收获了不少,了解了图像处理的一些基本概念和思想,程序的写入,小车的操控等。通过这次的科创我更好的了解了科研并对此产生了更大的兴趣,在实验操作中,我也更好的在反省自身在理论学习方面的欠缺,在网上查询,并在BBS论坛咨询,也加深了理论与实际的联系。总体来讲,通过对科创三“计算机控制小车走迷宫”这个项目的学习,使我们对单片机、模拟电路有了一个初步的认识,而且在动手实践的过程中也帮助我们加深了对书本知识的理解,这对于我们的专业学习是十分有帮助的。同时,通过这门课程,我们还都掌握了两种非常重要的能力,那就是自主学习能力与团队合作能力,通过自主学习,我们对掌握的东西会印象更深;通过团队合作,我们将成功的喜悦放大了很多倍,每个人都是那么的开心,每个人都为其他人而自豪!最后还是要由衷的感谢下我们的指导老师给予我们的支持,帮助和理解。

蔺昊天:在小组里我的工作是负责软件部分的程序编写,包括图像处理,走迷宫算法设计,小车定位等。在整个过程中也投入和很多时间和精力,尤其是最后一段时间,天天晚上泡在实验室进行调试和修改,也有好几个晚上为了修改程序而弄到很晚。这要感谢组长还有组里的一些同学,在整个过程中带给我很大的帮助。临近期末大家都很忙,大家为了最后的验收,还都积极的到实验室,而且我的任务比较重,很多时候都想放弃,大家的热情和勤奋给了我很大的信心和动力。好多次在做的过程中碰到困难,甚至到了绝望的边缘,我们总是一起讨论解决办法。科创一个多月的时间,我感到很充实。我们从门外汉到能够拿起小车说的头头是道,这其中不知要跨过多少道坎,我们不知遇到了多少次挫折,光最后程序的修改就改了大小十几次。最后要感谢组长及其他组员,感谢所有帮助过我的老师、助教和其他同学。

锦晓曦:开始对这个项目并不了解,但是上过课并大致了解到一些软件的使用后才发现,当刚拿到单片机的材料时,我感到许多困惑, 毕竟单片机对我们来说是陌生的,因此,在整个实验过程中,我们始终都抱以一种虚心学习的态度,不敢半点大意马虎。我们虚心向老师和其他组同学学习,慢慢的解决一个个问题。最后我们的小车在大家集体的力量下,终于能够在电脑的指令下跑动了起来。那一刻,我们真的很激动,我们每个人都拿着板子遮光,我们那天在那里已经耗了8个小时,当然我们的老师更辛苦,在那里一直陪着我们,为我们拍摄DV。当然我们的成功也感染了我们的老师,让我真切体会到了付出后得到回报的欣喜。

陈研君:这次是我第二次参与科技创新课程的学习。第一次课程是控制小车的行进,可以说是入门练习,虽然对其中的程序以及原理了解不深,但是却学到了有关于焊接以及电路的具体知识,一学期的学习让我体会到将一个个电阻电容通过自己的努力变成实际可用的东西的成就感以及快乐。所以这学期我继续选择了科技创新(3)智能小车作为继续学习的课程。科创三是关于计算机控制小车走迷宫的设计。乍一听,很刺激也很有挑战性,但是仔细想来,其中的一些具体的程序与实现,中断、串行通信等知识,是我完全没有接触过的,完全不懂的。因此在片刻的兴奋之后有些迷茫。于是开始翻阅一些书籍,请教老师以及学长,使自己渐渐的进入状态。由于和大三的学长一组,其中还有两个计算机系的,因此我们仅仅是提出一些想法,而具体的实现都是由他们编写的,从他们的编写过程中我也学到了不少关于编程的知识。最后串口的处理遇到了一些问题,只能借助学长的程序和算法来完成最后的设计。虽然最后的结果不尽人意,但是我们的努力还是让小车在控制下跑了起来,在多天的调试之后有这样的结果还是让我有种收获的成就感。通过这次科创实验,我学会了主动学习,我们不是什么之后都会的万能人,但是在遇到不会的知识时,我们可以主动的翻阅资料,询问老师学长来获取相关知识,从而掌握知识并且解决问题。另外我也体会到了在实验中团队合作的重要性,仅凭一个人的知识是远远不够的,只有通过大家的积极讨论分析才能更快更好的解决问题。今后我也会继续选这门课程,来锻炼自己的自学,思考以及解决问题的能力。

经过本次科创三的学习,我们小组学到了很多东西,首先这是一个团队合作的活动,大家互相帮助才会有我们小组最后的成果,其次感觉这是一项很有意思的自我创新活动,其中有艰辛有快乐,虽然是第一次做此类工作,难免有许多想法还不纯属,不过我们尽力了,大家都很满意现在的成果。最后我们小组对后来小组的建议:这个课程和科创一有很大的不同,需要搜集很多资料并且开动脑筋想办法解决问题,课程网站上除了经常有新信息的更新外,还有很多东西值得我们去借鉴和参考;很多小组包括我们小组在内都选择在课程结束前的最后几周才去搞科创,我们小组很有体会,到时候小组很多资源不够,并且时间紧张,建议在前几周有时间就去搞一下。最后新年要到了,祝大家新年快乐~


相关文件下载                                                                                                                                 TOP

OPENCV图像处理

串口                                                                                                                                TOP

科创报告

走迷宫视频