上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走

上传人:da****ge 文档编号:59520692 上传时间:2022-03-03 格式:DOC 页数:22 大小:5.59MB
收藏 版权申诉 举报 下载
上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走_第1页
第1页 / 共22页
上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走_第2页
第2页 / 共22页
上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走_第3页
第3页 / 共22页
资源描述:

《上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走》由会员分享,可在线阅读,更多相关《上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走(22页珍藏版)》请在装配图网上搜索。

1、电院科技创新3 实验报告 M08组 2009-1-19上海交通大学 电子信息与电气工程学院 科技创新【3】 计算机控制小车走迷宫实验报告M08组 组长:乐佳琪 组员:冯可陈治龙黄莎 完成时间:2009/1/19摘要本报告包括了我组计算机控制小车走迷宫的图像处理、数据处理、迷宫路径算法、实时控制、串口通讯等软件设计及硬件控制。此外某些部分用系统框图进行了说明。还包括了系统的调试分析,心得体会和实物照片等等。关键词计算机控制小车走迷宫,软件设计 一、 成员介绍姓名班级学号具体负责的工作联系方式乐佳琪F07030335070309832图像处理部分程序;迷宫算法与小车部分程序;材料采购;lejiaq

2、i0726冯可F07030335070309824串口与单片机部分程序;迷宫制作;fk.soleman陈治龙F07030345070309849小车硬件调试;串口与单片机部分my-rei黄莎F07030345070309843小车美化;中期汇报PPT制作;写报告;网页制作shasha8874(从左到右)乐佳琪陈治龙黄莎冯可二、 项目介绍. 任务目标由计算机发出指令控制小车从迷宫入口处开始运行,自动行驶至出口处(出入口均可自行设定明显标志)。. 整体过程()由摄像头(USB接口)实时捕捉迷宫内小车的位置情况,通过USB线缆传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及迷宫

3、的信息,经过计算,作出控制决策,生成控制信号,并经通讯模块发送至小车。()小车上的控制电路对控制信号作出相应反应,驱动电机。系统示意图如下:. 整体完成情况本组主要完成了计算机对小车的控制,对迷宫的分析,图像的分析处理等工作。但是由于时间关系,并未能完美的实现走出迷宫的工作。但是各个分项均可以说基本完成。. 自我评价本组基本上完成了本次实验的内容,虽然仍有许多不足,但如果时间足够,且能获得更多的帮助的情况下,应该可以完成的更好。三、 硬件部分介绍.硬件元件介绍(1)小车:小车由底板、车体和89S52组成。底板负责向小车提供8V电压,向89S52提供5V工作电压以及转换各种信号。车体为所有部件的

4、载体。89S52负责将信号转换成控制信号。小车外壳设计图纸如下:小车外壳成品图如下:(2)无线收发模块: 无线模块分为收发两部分,发送部分与串口相连,接受串行通讯标准的TTL高低电平,将其调制后作为无线信号发送出去。接受部份将发出的无线信号转化成标准串行通讯信号发送给小车。(3)芯片:CMOS8位微控制器主要功能: 兼容MCS-51指令系统 8k可反复擦写(1000次)ISP FLASH ROM 1000次擦写周期 32个双向I/O口 4.5-5.5V工作电压 3个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口 128x8bit内部RAM 低功耗空闲和省电模式 中断

5、唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针AT89S52是一种低功耗、高性能CMOS8位微控制器,其PDIP图如下: L298N(用来控制两个电机)其管脚图如下:()USB转RS232线: 负责电脑与小车间的串行通信。()电脑及摄像头。.硬件调试过程在实验初始阶段,我们的车子一直不能启动,有时候会突然启动一下,这可能是接触的问题。后来我们发现小车芯片上的部分焊接点没有焊好,并且有几条线已经快要脱离了,于是我们重新进行了焊接, 并且重新烧入了程序,小车就能够跑self test程序了。四、 软件部分介绍编程语言:c+编译环

6、境:VC6.0所加载类库:OpenCV图像处理库,EasyComm串口读写类 主要流程: (1)摄像头获取迷宫图片,做整个过程的背景 (2)人工标记入口,得到入口坐标 (3)人工标记出口,得到出口坐标 (4)通过迷宫算法由计算机找到一条可行的路径,保存关键标点 (5)小车放置入口处,开始行进 (6)摄像头实时捕捉小车位置,与计算路径相比较,并通过串口自动向小车发送调整指令 (7)小车最终到达出口 .图像处理迷宫路线计算和小车位置判断都基于二值图,故通过以下OpenCV库函数按步骤得到: cvQueryFrame():通过摄像头抓取图片 cvCvtColor():色彩空间转换 cvConvert

7、():图像转化成矩阵 cvAbsDiff():与迷宫背景相减(获取迷宫背景图时跳过这一步) cvSmooth():高斯滤波,平滑图像 cvThreshold():二值化 cvErode(),cvDilate():形态学滤波及去噪 实际中,得到迷宫的效果是墙为白色,地为黑色,出入口和小车的实时图像均为白色。标记入口和出口位置为已知的灰度,则得到完整的迷宫图样(白墙、黑路、不同灰度的出入口),可进行找路径的操作。 程序中需要依据实际环境作调整的两个重要参数(在declaration.h头文件中): const double K:计算迷宫宽度的调整系数,为适合迷宫宽度不太均匀的情况。 const d

8、ouble Thold:二值化的阀值。.迷宫算法通过走格子的方式寻找迷宫出口,首先根据实际图像计算道路宽度,大致定下步长略大于迷宫道路宽度的三分之一但小于宽度的二分之一。行走路线为上下左右四个方向,每一步后须判断其余三个方向的走法(去除标记为已试探或者不可走的方向),总体是回溯算法,直到找到出口或者出错返回。关键函数说明:void GetCenter(IplImage* img, Point& p):得到特殊区域(起点标记、终点标记、小车位置)的中心点坐标。 void Initialize(IplImage* img, Point& p, int& step_len):在标记起点的时候计算步长

9、,即格子宽度。 bool NoWall(IplImage* img,Point& p, int step_len):判断当前格内是否有障碍。 bool StepAvailable(IplImage* img, Point& p, Direction direction, int step_len):判断指定格是否可走。 bool Arrive(IplImage* img, Point& p, int step_len):判断是否到达终点。.小车实时调整小车基本行进方式为向前、微左弯、微右弯、90度左转、90度右转。各状态两个电机的速度事先设置好,实际过程中只需向小车发送相应的指令即可。走迷宫的

10、路径已计算出并保存,小车的实时位置由摄像头捕捉并通过图像函数得到坐标位置,对小车位置的评估只基于当前理论应走的方向(vector)和下一个拐角(corner)的位置:当小车偏离方向线时发送相应的左右微调指令;当小车到达拐点时发送相应的转弯指令同时获得下一个行走方向和拐角。直到到达出口为止。关键函数说明: bool reach_corner(Point& corner, Point& car_pos):判断小车是否到达当前拐点。 void next(Point& corner, Point* route, int& index, const int route_size, Direction&

11、vector):获得下一个拐点位置和行进方向。 void front(); void left(); void right(); void round_l(); void round_r(); void stop(): 分别为前进、微左拐、微右拐、左转、右转、停止指令。.串口通讯主要基于一个简单的C+串口读写类”EasyComm.h”,实现对小车指定串口的指令发送。 关键函数说明: bool Open(int port):打开串口。 bool Setup(DWORD dwBaudRate, DWORD dwByteSize, DWORD dwParity, DWORD dwStopBitsT)

12、 :设置串口属性,包括比特率、字长、校验属性、停止位长度。 int Write(const void* lpBuffer, DWORD len):往串口写数据。 bool Close():关闭串口。软件运行中的屏幕截图如下:五、 项目心得体会. 系统的不足或可改进部分在本次实验中我们遇到了很多问题:() 在采集图像时,对于场地的要求比较高,如摄像头的角度,周围的光线等。图像采集对于这些的敏感度较高,有时需要尝试几次,才能有一次成功。() 串口最终未能成功,虽然我们已经尽力去做,但是最后也还是不行。. 自我评价感受及收获() 乐佳琪:经过一个学期的努力,科创三的课程终于接近了尾声。虽然最后的结果

13、不甚理想(这作为组长的我却有不可推卸的责任),但在整个过程中,我们组各成员都付出了努力与汗水,从中也学到了不少东西。在这里,就自己在这门课程中的感受与体会作下总结。我们组的四位成员都是大二的,对于科创三的内容都可谓是基础。但是,对于充满热情的我们来说,即使是再大的困难,相信只要努力了,总会被克服的。诚然,刚开始的时候,事情也的确是十分顺利的。听讲座,然后自学了图像处理方面的知识(主要用到了),一番努力之下,图像处理这部分基本上完成了。同时,其他组员那边也进展的比较顺利,也正因为这样,使得我们低估了在之后的硬件调试上所将遇到的困难要让这辆小车跑起来还真不容易啊,线焊了断,断了再焊,接触不良时有发

14、生,感慨一下这小车作者的马虎好不容易能够跑self test程序了,又发现原本的迷宫算法的程序对图像的要求太高,就现在的情况而言很难让其正常的运行起来,也正是这个问题,一直到检测时仍旧无法解决,并导致了最后小车没能走过迷宫。对于这个问题,初期的过分乐观与对困难的预见不足是主要原因,当然,自身实力上的不足也是一大因素。看着别人的小车缓缓地驶出迷宫,心里真的很不是滋味,但谁叫自己技不如人呢。但至少,我们都为了同一个目标而努力了,有人为了看懂一个函数的用法彻夜不眠;有人为了实现一个算法绞尽脑汁;有人为了小车的美化竭心尽力总之,我们真的已经很努力了,最后虽然失败了,但这其中的过程仍旧值得我们铭记于心,

15、记住这份热情,记住这种朝着目标不断努力的感觉。最后,要感谢张士文老师提供的帮助以及鼓励,感谢同组同学给与的帮助以及支持,谢谢大家!() 冯可:通过这次科创我真的学到了很多东西,虽然这次最后我们的小车没有能够成功走出迷宫,但是大家的努力是没有浪费的,我们从刚接下任务时的一无所知逐步进入状态,本次我主要是负责小车的硬件部分,在科创过程中确实遇到了各种各样的困难,小车的芯片以及各种元件都有损坏的迹象,但是最后通过大家的帮助以及咨询老师和助教,终于把小车的硬件部分完善了,虽然后面由于我们的图象处理部分对迷宫要求太高没有继续往后进行,但是在制作过程中学到的团结以及一些硬件软件的知识还是让我觉得十分值得,

16、希望以后能多给我们进行这种活动的机会() 陈治龙:大一下时我抱着好奇心与同学们一起报名参加了电院科技创新3,虽然那时什么也不懂,单片机,图像处理一切都得从头开始,可是想到要完成那么有趣的任务小车走迷宫,就觉得充满了挑战性,想要跃跃欲试。然而现在想来,整个科创过程远比当初想象的要复杂。当初的热情遭到的第一盆冷水就是第一场讲座,我还记得那是关于图像处理的部分,本以为听完之后必定受益非浅,可当听到了诸如高斯滤波,求偏导数等等如此高深而专业的术语时,我才发现本次科创的难度之大。当然这个问题在初期时并未起多大的影响,因为最初的任务比较轻松,主要是制作迷宫,领取小车等前期准备,不过由于小车在一定概率下可能

17、残缺不全,所以不得不额外花费时间对小车进行维修与调试。有了硬件,自然下一步就是做软件,说实话当初报名参加科创3时以为只要做了小车就成,在加之科创1的经历,我还以科创3纯粹搞硬件的,但显然我们接下来面对的图像处理与迷宫算法则是本次科创的核心部分,这才是我们所面对的真正挑战。可是我们的知识还只局限于一些基本的C+语言操作,一切的一切都得从头学起。万幸的是,在科技创新网上老师为我们提供了历届小组的实验档案,有了前辈的参考,我们就可以有一个明确的方向做下去。首先是图像处理,这里有两种选择,Labview与OpenCV,前者的长处在于使用了ADT,我们只要学会此软件的应用即可完成目标,然而Labview

18、中的零件实在太多了,要能搭建出符合实验要求的虚拟仪器,需要花费相当大的经历;至于后者,由于其是基于C+而编写的库,所以我们这要能取得接口,掌握其中各函数的作用即可,只是所有的算法得人工输入。在权衡了两种方法的利弊之后,我们决定采取后一种策略。不过在具体的实现过程难度还是非常大的,若不是几番上网查阅资料,以及参考上界算法的情况下,很多东西是很难由我们几个写出来的,一言难尽啊。只是在做完了科创3的灵魂部分后,我们小组在串口程序方面遇到了阻碍,最初将程序烧录进单片机时,一切正常。然而在某此我们将修改过的程序重新烧录单片机后,发现小车运行selftest时无法停下,而后小车在走迷宫时,发生了错误,虽然

19、在最后我们依然没有解决这个问题,但我想或多或少都可能是在单片机方面出了问题。很遗憾的是最终我们小组没能圆满完成任务,未能将我们所努力的东西展示出来,但我们这次的科创执行绝对是受益良多的,无论是学习了那么多有趣的新知识,还是这个团队合作中培养的默契,在很多时候都给予了我对于自主学习,独立研发的乐趣。我觉得电院科技创新不仅仅只是一门课程,它还是指导我们人生路上如何解决一个个难题的小小演习。() 黄莎:经过一个学期的时间,科技创新的课程也基本上结束了。本学期的这次科创不仅锻炼了我们动脑的能力,同时也锻炼了我们的动手能力。不管是对管脚的焊接还是小车外壳的制作,从设计到制作出成品的过程都是我们十分珍惜的

20、。同时,这次科创还督促我们学习了一些平时我们不会去学的内容,包括OpenCV、Labview等,我们都多多少少看了一些这些方面的书。虽然对我本人来讲,看得那些东西在本次实验中并没有起到多少用处,但是至少我去学过,对这些内容有了一个基本上的概念了,相信这些对于我以后的发展是有一定的作用的。当看到我们的小车能够走动时,当看到我们的程序能运行时,那种打从心底里的高兴,真的是言语所不能形容的。也许本次科创对于我们这四位大二的同学来说是有一些困难,但是我们都在尽力,没有偷懒,尽可能的去做到最好。尽管这次实验的结果并不是很完美,但是我们都不会后悔这一次的选择,因为我们都有所收获!最后非常感谢张士文老师对我们的帮助!22

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!