上海交通大学电院科技创新3——计算机控制小车走迷宫

M27组

 

  小组介绍

组长:孙珲

sunhui

负责项目:方案设计 迷宫算法设计 单片机设计

 

组员:沈逸菲

shenyifei

负责项目:小车硬件调试 串口调试 算法设计

 

组员:章薇

zhangwei

负责项目:部件焊接 小车外形设计 硬件调试算法设计

 

组员:马静

majing

负责项目:查找相关资料 硬件调试 算法设计

  项目介绍

任务目标由计算机发出指令控制小车从迷宫入口处开始运行,自动行驶至出口处(出入口均可自行设定明显标志)

过程

1.由摄像头(USB接口)实时捕捉迷宫内小车的位置情况,通过USB线缆传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及迷宫的

信息,经过计算,作出控制决策,生成控制信号,并经通讯模块发送至小车。

2.玩具小车上的控制电路对控制信号作出相应反应,驱动电机。

系统设计应当至少完成控制程序与控制电路两部分。

系统示意图如下:

系统示意图1

系统示意图2

 

基本要求:

  1. 小车可根据需要自行改装,如加装标志物品,车牌号码等(加分),但不得做破坏性设计(扣分)。
  2. 运行过程中不得故意剧烈冲撞迷宫(扣分)。
  3. 可使用任意软件进行算法设计,但不得完全采用市场上已有的现成的可执行程序(即应能提供源代码),软件算法应能适应变化的迷宫。
  4. 小车与计算机的通讯可采用RS232串行通信模式,亦可采用无线模块(加分,不提供现成的模块,如需使用,可自行寻找相关模块)。

材料:

  1. 89S52单片机控制的小车
  2. RS232无线模块收发模块
  3. USB转RS232串口线
  4. 计算机
  5. 摄像头

完成情况:

本组主要完成了计算机对小车的控制,对迷宫的分析,无线通信的设计,串口有线通讯等工作。但是由于时间关系,并未能完美的实现走出迷宫的工作。

但是各个分项均已完成。

自我评价:

可以说本组基本上完成了本次实验的内容,虽然仍有不足,但如果时间足够,且能获得更多的帮助的情况下,应该可以完成的更好。

 
  整体说明

工作流程:

1.通过摄像头对迷宫进行拍摄,然后通过程序实现迷宫路径的选取。

2.保持摄像头及迷宫位置的相对性,动态识别小车的位置,并通过计算机进行无线控制。

3.小车接受信号命令,通过内部程序转换为行动指令,进行移动。

硬件部分:

1.小车:小车由底板、车体和89S52组成。底板负责向小车提供8V电压,向89S52提供5V工作电压以及转换各种信号。车体为所有部件的载体。89S52负责将信号

转换成控制信号。

2.无线收发模块: 无线模块分为收发两部分,发送部分与串口相连,接受串行通讯标准的TTL高低电平,将其调制后作为无线信号发送出去。接受部份将发出的

无线信号转化成标准串行通讯信号发送给小车。

3.USB转RS232线: 负责电脑与小车间的串行通信。

4.电脑及摄像头。

软件部分:

1.迷宫识别:程序借助于OpenCV图形库编写而成。首先将图像转换为2进制码的表示,用0与1分别表示黑与白,即道路与墙壁,得到2进制码迷宫矩阵。再通过广

度优先搜索寻找路径。

2.小车跟踪:采用OpenCV例程中的CamShift算法,在屏幕上圈定小车后即可跟踪它。

3.命令发送:根据小车的位置自动计算出行动方向。发送的命令格式为多个(任意个)前导字符‘U'加一个命令字符。

4.串口通信: 电脑向串口发送信号采用一个封装了的公开类CnComm调用Windows的API进行串口操作。

5.小车命令识别: 小车接收到命令后,将调用中断程序,若命令格式正确’,则准备接收命令。

  系统演示

演示视频下载:点击下载

  感受体会

不足与改进:

由于算法的原因,选择的路径并不能保证与道路完全平行,因此会撞到墙壁,但是经过进一步优化后应该可以得到改进。

心得体会:

孙珲(组长)

这一次的科创实验可以说是大学以来最自主的一次学习过程,由老师提供的较少的信息,通过自己寻找更多的资料来完成老师的要求,不可不谓是一次很大的

挑战。不仅仅如此,组队作业的模式也是一次新的体验。以往不论做什么作业,都是一人独立完成,现在有这么多的组员一起做同一件事,作为组长,还要合

理的安排大家的工作,各展所长,可以说,本次科创让我学到了很多。

渐渐的,开始每天都要去关注一下科创的网站,渐渐的,脑袋里一直都想着算法的设计,从一开始对组员的能力不那么放心,到后来大家一起讨论研究,相信

对于我和各位组员,这都是一种成长。

由于高中的时候一直在进行计算机竞赛的学习,所以各种算法对我来说并不陌生,迷宫的题也做过不少,深度优先,广度优先,缔结斯特拉算法,等等等等,

但是以往都仅仅是在做题,把这些学过的东西应用到实际存在的小车上还是第一次。

在这将近一个学期的漫长的学习过程中,我们一开始也有过不知所措,不知道从哪里下手,后来去听老师的讲座、询问其他组的牛人,然后慢慢开始上手,我

想这就是学习的一个过程,如果一直在想要怎么做而没有行动的话就会永远停滞不前,但是一旦开始着手行动了,即使这个时候不是很明了,但是渐渐的就会

做好了。

总之,这次的科创对我们意义非凡,这样独特的课程是电院学生的一种财富。

后,要感谢老师的教导,老师的亲切让我们记忆深刻,还要感谢其他同学的帮助,让我们更好的进行了学习。

 

沈逸菲:

经过这次科创的锻炼,我们小组通过对小车的编程,焊接,设计等的学习,我们组不仅增强了团队意识,而且还从中学到了很多知识。组长安排恰当,组员配

合默契,致使我们这次科创的学习相当成功。其间我们也遇到了许多困难,通过与组员的讨论,老师的指导和帮助,其他同学的相互交流,逐个的将我们的问

题一一击破。在最后的测试中,我们不断探索,求新,在实践中,找出我们小车的问题并不断完善,尽管最后由于时间问题,我们没能做到最好,但是我们也

突破了许多我们小车本身存在的问题。其实期间也有地图,光线等许多客观因素的存在而导致进度的延迟。但是比起一开始拿到材料不知所措的时候,现在已

经能完全了解每个程序和零部件的使用了,所以这次科技创新的学习还是收获颇丰的。

最后由衷感谢老师的教导,组长孙珲组员章薇马静的帮助和合作,以及期间参与共同讨论的同学。

 

章薇:

这一次是我第二次参与科技创新课程的学习。第一次课程可以说是入门练习,有关于焊接以及电路的学习,一学期的学习让我体会到将一个个电阻电容通过自

己的努力变成实际可用的东西的成就感以及快乐。所以这学期我继续选择了科技创新(3)智能小车作为继续学习的课程。

科创(3)是与之前的学习完全不同的一门课,刚开始的时候,我完全不懂,有些迷茫,在请教了老师以及学长以后,渐渐的进入状态。其实编程的过程比较轻

松,因为我们组长的程序编写能力很强,所以当我们有想法,提出算法以后,接下来的任务都可以请教组长。比较难的是后面的图像识别程序的应用。刚开始

我们找了好几个采集软件,都不是很好用,后来只能向同学寻找帮助,借助同学的程序和算法来完成我们最后的设计。最终结果虽然不尽人意,但是我们的努

力还是让小车在我们控制下跑了起来。当小车在我脚边跑的时候,我更有一种努力终于有收获的成就感。

在这一次的学习中,我深刻的体会到不懂就要问的古老学习态度。不是每一个人都一开始就懂很多的,只有学习,勤问勤做勤思考才能解决问题。以后我还会

再次选择这门课程,继续向更加难的课题挑战,告诉自己没有不可能。很高兴这一次与其他组员的合作以及有组长的领导,也谢谢老师的指导和同学的帮助。

 

马静:

在所有小车走迷宫的组队中,我们这组应该是最特别的吧~~~~~~~~~因为我们女生最多,有三个。这既增加了我们团结的信心,又总让我们碰到很多难缠的问

题,有时让能力有限的我们感到孤立无缘,也苦了我们唯一的男生组长……

回想我们的科创三,从开始到成功的通过检查,让我感受最深的是大家的齐心协力~~~

科创不仅让我们学到了很多技术的东西,但我认为更重要的是有机会让我们几个人共同解决问题,那是一种每个人都想尽办法付出的场面,那是一种各尽其长

的合作,那是一种互勉互励的温馨……不懂又怎样,我们可以勤奋的多问多学;没时间又怎样,我们可以一人接一人的奋斗,也可以对自己的事情有所放弃,

因为我们是一队!

科创三也让我们接触到了一些牛人与热心的同学~~~~~在我激动终于通过检查时候,我最想要感谢的也是他们!谢谢你们的指导,谢谢你们这么费心费力的帮

我们!也许某一天当我想起我们的科创三,我想我最先想起的除了我们队员的努力的画面,还有就是这些学生时代纯情的互帮互助吧……谢谢你们!

最后,虽然我们的科创三结果并不是完美的,但在我的心目中,它是最特别的~~~~~

  附录

系统使用说明:点击下载

 

源程序:

1.小车:点击下载

2.迷宫处理:点击下载

 

设计报告:点击下载