毕业论文基于摄像头的智能车路径识别方案概要.docx
- 文档编号:29663546
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:27
- 大小:499.17KB
毕业论文基于摄像头的智能车路径识别方案概要.docx
《毕业论文基于摄像头的智能车路径识别方案概要.docx》由会员分享,可在线阅读,更多相关《毕业论文基于摄像头的智能车路径识别方案概要.docx(27页珍藏版)》请在冰豆网上搜索。
毕业论文基于摄像头的智能车路径识别方案概要
基于摄像头的智能车路径识别方案
摘要:
本文按照第四届“飞思卡尔”杯全国大学生智能汽车邀请赛的技术要求,经过一段时间的资料的采集与样本电路的参照,本文主要介绍了车模的系统设计原理,系统软件,与方案简介。
在硬件电路的设计与实现中,描述了最小系统设计,电源模块,并且着重描述数字摄像头OV6620,在软件系统设计中,讲述了时钟模块,ECT模块,图像采集以及图像处理等内容,经过实践证明,这些理论方案都可以得到证明,能使汽车稳定快速运行。
关键字:
智能车;摄像头;电源模块;图像采集
TheidentificationofintelligentvehiclepathofprogramisbasedonCamera
Abstract:
Thisarticleinaccordancewiththe4th"flyingtoKarl"CupNationalUniversitySMARTCarInvitationaltechnicalrequirementsforthetimeoftheinformationgatheringandsamplecircuitsinthelightofthisarticleintroducesthecarmodelsystemdesignprinciples,systemsoftware,andtheprogrammeprofile.Onthehardwarecircuitdesignandimplementation,describestheminimumsystemdesign,powersupply,withemphasisondescribeddigitalcameraOV6620insoftwaredesignofthesystemontheclockmodule,ECTmodules,imageacquisitionandimageprocessing,thepracticehasprovedthatthesetheoriesprogrammescanbeprovedthatautosteadyandrapidoperation
Keywords:
SMARTcars;camera;powersupply;imageacquisition
前言4
第1章系统设计概述5
1.1系统设计原理5
1.2系统软件6
1.3方案简介6
第2章硬件电路的设计与实现7
2.1最小系统板设计7
2.2电源模块8
2.2.15v电源9
2.2.26V电源9
2.3数字摄像头OV662010
2.3.1OV6620简介10
2.3.2OV6620和普通摄像头的对比10
2.3.3OV6620管脚说明11
2.3.4OV6620图像采集11
第3章软件系统设计14
3.1时钟模块14
3.2ECT模块14
3.3图像采集16
3.4图像处理17
3.4.1二值化算法17
5.4.2黑线提取流程19
结论21
致谢22
参考文献23
附录A24
前言
智能汽车,是一种集环境感知、规划决策、自动行驶等功能于一体的综合系统,集中地应用到自动控制、模式识别、传感器技术、汽车电子、电气、计算机、机械等多个学科,是典型的高新技术综合体,具有重要的军用及民用价值。
目前,智能车领域的研究已经能够在具有一定标记的道路上为司机提供辅助驾驶系统甚至实现无人驾驶。
这些智能车的设计通常依靠特定道路标记完成识别,通过推理判断模仿人工驾驶进行操作。
通常,智能车接受辅助定位系统提供的信息完成路径规划,如由GPS等提供的地图,交通拥堵状况,道路条件等信息。
本文内容的安排如下所示:
第一章引言本章主要介绍了Freescale车模竞赛的基本情况,智能汽车的发展状况。
第二章系统整体框架本章对系统硬件模块方案和软件控制方法进行了选择与论证。
第三章机械结构的安装与调整本章对机械结构的安装与改进,各个模块的安装技巧作了详细的介绍。
第四章硬件电路的设计与实现本章主要介绍了自行设计的基于飞思卡尔单片机的最小系统板的设计、电源模块、摄像头模块和速度传感器模块的设计与实现。
第五章软件系统设计与实现本章软件系统各模块的设计思路作了详细的介绍。
特别介绍了图像处理中的各种技巧、PID控制策略的应用和起跑线识别算法的设计等问题。
第六章开发工具及其调试本章对开发工具与调试方法作了简单介绍。
结论对整个参赛过程中的经验与教训作了总结。
第1章系统设计概述
1.1系统设计原理
电机驱动模块
MC9S12XS128
图像采集模块
硬件电路是整个系统的基础,下面是我们的硬件电路原框图:
舵机驱动模块
速度采集模块
速度采集模块
速度采集模块
图1.1整体框架
1.2系统软件
开始
系统的软件流程图1.2
初始化
图像采集
图像处理
舵机控制
电机控制
图1.2系统流程图
1.3方案简介
在本次比赛中,组委会提出了3种单片机可供选择MC9S12XS128,MC9S12DG128和9S08AW60.我们选择了总线频率较高的MC9S12XS128作为主控芯片,并且自己制作了最小系统板。
图像采集我们经过对比最终选择了CMOS的OV6620作为图像采集传感器。
将图像采集来后,为了减小干扰首先我们对整幅进行了二值化,然后利用跟踪边缘的算法对黑线进行提取。
最终使得黑线的变化更加平稳。
提取出黑线后,我们采用了模糊控制与PD控制相结合的方式对舵机进行控制,让小S直接冲过去,大S尽量内切,最大难度的发卡弯沿线通过。
在硬件方面,我们为了使电路更加简化,自己制作了最小系统板,使得单片机,电源,电机驱动等模块集中到了一块最小的系统板上。
第2章硬件电路的设计与实现
硬件电路主要包括:
电源模块,驱动模块与调试模块。
电源模块主要包括单片机电源,编码器电源,摄像头电源,舵机电源等等。
驱动模块主要包括电机驱动和舵机驱动。
调试模块主要包括BDM下载和串口的设计。
2.1最小系统板设计
我们采用了MC9S12XS128芯片作为主控芯片,参考了组委会提供的系统板的原理图,自行设计了最小系统板和外围器件的电路,同时为了尽可能的减小板子的质量与大小,我们没有将串口设计到最小系统板上,而是另外做了一块USB转串口的电路板。
原理图如图2.1和2.2
图2.1最小系统板原理图
引脚功能介绍:
PORTB:
LED状态指示
PORTM:
摄像头数据采集口
PORTK:
模式选择口
PP1:
舵机控制
PP2:
电机控制口
PP3:
电机控制口
TXDO:
串口通讯
RXDO:
串口通讯
2.2电源模块
为了保证各个部件的正常工作,电源的供给是十分主要的,需要对配发的标准车模用蓄电池进行电压调节。
单片机系统,摄像头,车速传感器电路等各个电路的工作电压不同,需要想办法来使得电压满足各自的要求,一种办法是利用升压或降压的芯片来达到它们的要求,另一种方法是利用双电源供电的方法,来实现自己各模块的不同需求,由于电路的模块较多,该方案中需要升压或降压芯片,实际应用中,我们确定采用升压降压芯片等来实现对各个模块的供电需求,而且,再电路设计中,考虑到由于电机驱动所引起的电源不稳定,在电源输入端,各芯片电源引脚都加入滤波电路。
如图2.3所示电源模块的组成
摄像头
图2.3电源模块的组成框图
2.2.15v电源
市场上常用的5V芯片有LM2940,LM7805,LM2575,LM2596其中LM2940和LM7805转换效率低(40%)输出波纹小,而且稳定,对于电源要求比较高的元件适合。
LM2575和LM2596转换效率高(75%~80%)输出波纹大,可能会让单片机出现重启。
所以我们选择前者而LM2940比LM7805压差小,而且更加稳定因此我们选择LM2940作为5V稳压芯片。
原理图如图2.4所示
图2.45V稳压电路原理图
2.2.26V电源
舵机的响应速度与其电源电压有关。
因此,为了获得更快的响应速度,舵机的供电采用其工作上限电压+6V,舵机的工作电压4-6V,因此为了稳定起见我们给舵机也做了稳压电路,期间的选择的是LM2941.原理图如图2.5
图2.5舵机电源6V
2.3数字摄像头OV6620
2.3.1OV6620简介
(1)、OV6620需要稳定的5V电压供电,和系统板上的供电电源兼容。
(2)、NAL制,每秒25帧,一帧两场,那么每秒就有50场。
意味着20MS就有一副图像产生。
356x292pixels,理解为:
有292行,一行有356个点。
(3)、视野和可视距离:
这个和镜头的选择有关,据我测试,f=3.6MM时视野应该有25度左右,f越大视场越小。
可视距离需要调节镜头焦距。
经我测试可视距离可以看到十几米,毕竟像素值只有10万多,用单片机读可以看到3-4M的距离。
这里解释一下为什么用单片机读会打折扣,因为线宽度只有2.5CM,太远了黑线会很细,采点之后就分辨不出是噪音还是有用信号了,在1米左右时,黑线宽度可用8个点表示。
(4)、内部有IIC可编程。
可以调整摄像头的参数,比如最大灰度,对比度,暴光率控制等等。
其本质是SCCB协议。
(5)、数据格式-YCrCb4:
2:
2,GRB4:
2:
2,RGB;电子曝光/增益/白平衡控制;内部自动图像增强,亮度,对比度,伽马,饱和度,锐度,加窗等。
最重要的是不需AD,不需1881.当然玩一下他的模拟输出一可以,VTO管脚就可以当普通的模拟摄像头用。
2.3.2OV6620和普通摄像头的对比
模拟的优势比较明显:
便宜,程序有现成的。
缺点:
消耗MCU资源,功耗大,取点个数少,需要做12V的供电模块(最近有队伍说把摄像头上的5V稳压芯片取下来飞飞线就可以直接用5V供电),外围处理电路多,还要1881。
数字的优点就是避免了模拟的缺点。
行场同步中断信号有现成的,而且消隐区也十分有规律。
可以用示波器对比一下模拟的和数字的,数字的信号非常漂亮,非常稳定。
这对于图像采集来说是十分有利的。
最终我们选择了数字摄像头OV6620。
OV6620的管脚分布样子如图2.6和2.7所示:
2.3.3OV6620管脚说明
图2.6管脚分布图图2.7OV6620像头
PIN1-PIN8灰度信号输出接口Y0-Y7
PIN11SCCB数据接口SDA
PIN12奇偶场同步信号FODD
PIN13SCCB数据时钟SCL
PIN14行中断信号HREF
PIN16场中断信号VSYN
PIN18像素同步信号PCLK(也叫TCLK
PIN32模拟信号输出接口VTO
这里仅说明可能需要用到的管脚,模拟摄像头无非也就这几个信号,重要的是,模拟摄像头的信号线需要分离,这当然会给图像的采集带来本可以避免的干扰。
2.3.4OV6620图像采集
我最不能忍受的是模拟的图像采集之后的分辩率.真的还不如在光电前加个老花镜.数字摄像头相对来说贵一些,他内部的信号处理比较复杂,接口也较多,一般是彩色的YUV信号,只取Y的亮度信号,所以用起来略有浪费.
附上测的数字OV6620的时序图,我发现它的DS上表示有些不明确,就自己画了一个.而实际上,图像采集的这块最关键的也是时序的把握了.另外,中断的优先级一定要保证,要不然系统一运行起来,图像采到一半就丢了.
先看DS上的时序图2.8:
图2.8DS上的时序
如果这个图还不明白的话看下面的这个图2.9:
图2.9摄像头信号采集时序图
如果这个图还不明白的话看下面的说明:
(1)、在采集时乎略TCLK,首先是因为它太快了,捕捉不到,另外也没有必要捕捉到它。
采集图像时尽快地一个点一个点的取就行了,和模拟摄像头一样。
(2)、VYNSC是判断是否一幅图像开始,周期是20mS,其中高电平持续时间很短,忽略;HREF是判断是否一行图像的开始,周期是63us左右,其中高电平持续时间为40US,低电平持续时间23US,那么可以算一下一场有多少行:
20ms/63us=317,当然实际上没有这么多,消隐和无效信号去掉之后只有292行。
(3)、必须明确:
场中断要通过下降沿捕捉,行中断要通过上升沿捕捉。
若用IRQ捕捉行中断必须加反相器。
(4)、有效的灰度数据是在行中断之后的上升沿内,所以不要在行中断后的23US后采集,那是废数据。
计算一下一行OV6620有多少个点:
40us/110ns=363,消隐和无效信号去掉之后只有356个点。
图上若有表述不清楚可通过示波器观察。
第3章软件系统设计
3.1时钟模块
时钟基本脉冲是CPU工作的基础。
MC9S12XS128微控制器的系统时钟信号,由时钟振荡电路或专用时序脉冲信号提供。
MCU内部的所有时钟信号都来源于EXTAL引脚,也为MCU与其他外接芯片之间的通信提供了可靠的同步时钟信号。
S12的总线时钟是整个MCU系统的定时基准和工作同步脉冲,其频率固定为晶体频率的1/2。
对于S12,可以利用寄存器SYNR、REFDV来改变晶振频率fOSCCLK,可以选用8MHz或16MHz外部晶体振荡器作外时钟。
将SYNR设为3,REFDV设为1,可以得到32MHz的总线频率。
而锁相环产生的时钟频率fPLLCLK=2*fOSCCLK*(SYNR+1/(REFDV+1,设计中我们将SYNR设为3,REFDV设为1,因此,总线时钟为32MHz,CPU工作频率为64MHz。
3.2ECT模块
S12得ECT具有8个输入(IC)/输出(OC比较通道,可以通过设置TIOS寄存器选择输入或输出比较功能。
ECT既可以作为一个时基定时产生中断,也可以用来产生控制信号。
模数递减计数器(MDC)是S12微控制器ECT特有,它是一个16位计数器,其外围配备了常数寄存器MCCNT和控制寄存器MCCTL,分别为MDC提供定时常数和时钟信号。
通过寄存器TCTL4设定各个引脚的各种动作,初始化设置过程如下所示:
//定时器初始化
voidexternvECTInit(void
{
TIOS=0x00;//定时器通道0,1为输入捕捉
TSCR1=0x80;//定时器使能
TCTL4=0x09;//通道0捕捉上升沿通道1捕捉下降沿
TIE=0x03;//通道0,1中断使能
TFLG1=0xFF;//清中断标志位
}
voidexternIOC_Init(void
{
//TSCR2=0x04;//禁止定时器溢出中断,计数器自由运行,禁止复位,预分频系
数为16
//busclock/16=48Mhz/16=3000000
TIOS=0x00;//设置通道2工作在输出比较状态,其它通道工作在输入状态
//TC2=0x2328;//0x2328*(1/3000000=3ms
//TCTL2=0x00;//切断OC2与输出引脚断开
//TCTL3=0X80;
TCTL4=0x09;
//TSCR1_TFFCA=1;//通道自动清除
//TIE=0x83;//通道0,1,2,7中断使能
//TIE=0x84;
TSCR1_TEN=1;//定时器使能
PACTL=0x40;//脉冲累加器使能,事件计数,下降沿计数,16位A累加器
PACNT=0x0000;
TFLG1=0xFF;//清中断标志位
PERT=0x80;//PT7口上拉电阻使能
PPST=0x00;
}
通过ECT模块,我们实现了对行中断和场中断的PT0和PT1口的使能和捕捉方式,PT7口对脉冲进行计数,检测智能车的速度,对速度进行闭环控制。
3.3图像采集
实际上,图像采集的这块最关键的也是时序的把握了。
另外,中断的优先级一定要保证,要不然系统一运行起来,图像采到一半就丢了。
摄像头每扫描完一行,就输出一低于视频信号电压的的电平,相当于每行图像对应的电压信号之后会有一电压“凹槽”,此凹槽被称为行同步脉冲。
扫描完该场的视频信号,接着会出现一段消隐区,此区中有若干个复合脉冲(简称消隐脉冲),在这些脉冲中,有一个脉冲,它远宽于其他的消隐脉冲,该消隐脉冲称为场同步脉冲。
场同步脉冲标志着新的一场的到来,不过,场消隐区恰好跨在上一场的结尾部分和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。
摄像头每秒扫描25幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描50场图像。
奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。
如图3.1所示:
图3.1摄像头视频信号
图3.2摄像头信号采集时序图
如图3.2所示:
(1)在采集时乎略TCLK,首先是因为它太快了,捕捉不到,另外也没有必要捕捉到它。
采集图像时尽快地一个点一个点的取就行了,和模拟摄像头一样。
(2)VYNSC是判断是否一幅图像开始,周期是20mS,其中高电平持续时间很短,忽略;HREF是判断是否一行图像的开始,周期是63us左右,其中高电平持续时间为40us,低电平持续时间23us,那么可以算一下一场有多少行:
20ms/63us=317,当然实际上没有这么多,消隐和无效信号去掉之后只有292行。
(3)必须明确:
场中断要通过下降沿捕捉,行中断要通过上升沿捕捉。
若用IRQ捕捉行中断必须加反相器。
(4)有效的灰度数据是在行中断之后的上升沿内,所以不要在行中断后的23US后全国大学生智能汽车邀请赛技术报告27/82采集,那是废数据。
计算一下一行OV6620有多少个点:
40us/110ns=363消隐和无效信号去掉之后只有356个点。
3.4图像处理
3.4.1二值化算法
图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是将整个图像呈现出明显的黑白效果。
即将256个亮度等级的灰度图像通过适当得阀值选取而获得仍然可以反映图像整体和局部特征得二值化图像。
首先要把灰度图像二值化,得到二值化图像,这样子有利于图像进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。
为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。
所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为0表示,否则这些像素点被排除在物体区域以外,灰度值为1,表示背景或者例外的物体区域。
因为赛道只有黑白两种颜色,其很容易分辨,采用二值化算法可以得到很好的效果,为了得到可靠的阀值,我们进行了大量的试验,最后得出了这个阀值为52,当小于这个阀值时,我们认定是检测到黑线,当大于这个阀值时,我们认为是检测到白线。
图3.3为二值化后在串口上显示出来的图像。
图3.3二值化后的图像
3.4.2黑线提取流程
黑线的提取我们参考了去年上海大学的黑线提取方法,在前十行采用边缘提取方法,十行以后的利用跟踪边缘提取方法。
实验测得这种方法只要细节掌握好能够很好的提取出黑线。
下面是具体的黑线提取方法。
如图3.4
图3.4黑线提取流程图
(1)、首先准备提取黑线
(2)、用检测跳变的方法提取出前十行中每行的两个跳变点,然后求平均值就可以得到前十行的黑线位置。
当搜索到多个跳变的时候,我们根据上一行跳变的位置确定出最优的那个跳变的位置作为本行的黑线跳变位置。
当前十行都没有找到黑线的时候,我们就认为这幅图像的黑线丢失了,然后依据前一幅图像黑线的位置,给这幅图像的整体赋极值。
当只有十行中的几行丢失时,我们就继续搜索黑线直道找完前十行位置。
(3)、当前十行黑线存在时,我们利用前十行黑线的位置确定第十一行黑线的位置,然后在这个区间搜索黑线,依次类推用前一行黑线的位置确定后一行黑线的位置,当本行黑线没有找到时,此行黑线位置保持上行的值,下行搜索的位置相应的扩大。
有全国大学生智能汽车邀请赛技术报告连续3行黑线搜索不到十我们就认为黑线丢失,退出搜索。
这样既可以去除干扰,还可以大大的提高算法的效率。
值得注意的是:
第十行和前一行第九行这个接口位置边缘确定非常重要,要考虑的非常全面,不然有可能就只能搜索到前十行的黑线,后面的黑线因为边缘的问题所有不到。
(4)、搜索完成后推出搜索。
对搜索到的黑线进行中值滤波和限幅滤波。
只要搜索范围合理,这种算法有很强的抗干扰能力,并且可以滤除十字交叉和三角黑区的干扰。
结论
经过将近三个月的努力,到现在已经完成的部分,结果还是令人欣喜的。
在整个过程中,全部的线路板的搭建布局都是亲力亲为,无论是摄像头的安装位置,还是硬件电路的设计,都是经过反复试验,反复修整而得出的。
对于在摄像头采集信号,花费了很多精力,查阅了很多摄像头方面的期刊杂志,不断试验,最后终于获得有用的参数。
在这段紧张的时间内,让自己无论在电子知识方面还是动手能力方面有了很大的提高,更重要的是通过做完小车,无论在自信心方面还是知识钻研方面有了较大的提高。
此次智能小车,前阶段经历了很多失败,也有过一筹莫展的时候,但到现在目前的状况,小车大S切弯做的还是不好,车也不是很稳定,所以要想车跑的更快,更稳,还需做更多的努力。
这次控制算法上我们用了PID控制,PID控制算法能够使小车加速减速迅速,容易实现“进弯减速,出弯加速”,该控制算法具有很强的灵活性,可以根据实验和经验在线调整参数,可以更好的控制性能。
具有控制精度高、超调小的优点,使静态、动态性能指标较为理想,同时又达到了准确、快速测定的目的。
致谢
参考文献
[1]卓晴,黄开胜,邵贝贝.学做智能车.北京:
北京航空航天大学出版社.2007,3-1
[2]刘进,齐晓辉,李永科.基于摄像头的智能小车设计与实现.维普资讯.
[3]OV6620的使用说明,
[4]使用S12PWM控制电机,ppt
[5]邵贝贝.单片机嵌入式应用的在线开发方法.北京:
清华大学出版社.2004
[6]孙同景,陈桂友.Freescale9S12十六位单片机原理及嵌入式开发技术.2008,7-1
附录A
程序源代码
#include"Includes.h"
voidmain(void
{
DisableInterrupts;
xianshi_init(;
vPLLInit(;
PWM_Init(;
Timerch2Init(;
delay(3500;
vIOPortInit(;
EnableInterrupts;
//delay(1500;
asm(nop;
asm(nop;
for(;;
{
Image_binaryzation(;
black_extract(;
control_actuator(;
}
}
//*******************************************************************
//************************头文件及宏定义*******************
*
//*
*
//************************************************************************
*
#ifndef__INCLUD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 基于 摄像头 智能 路径 识别 方案 概要