基于CCD传感器智能汽车软件的设计与研究_第1页
基于CCD传感器智能汽车软件的设计与研究_第2页
基于CCD传感器智能汽车软件的设计与研究_第3页
基于CCD传感器智能汽车软件的设计与研究_第4页
基于CCD传感器智能汽车软件的设计与研究_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于ccd传感器智能汽车软件的设计与研究中 文 摘 要本文以“飞思卡尔”杯全国大学生智能汽车竞赛为背景,以飞思卡尔公司9s12xs128微控制器为控制核心,设计制作了一个能在有黑色引导线的跑道上自主识别道路行驶的智能小车,并通过适当的控制算法使小车能在尽可能短的时间内完成行驶过程。本设计首先简要介绍了小车的整体概况和小车的硬件及机械结构的有关内容。文章主要对系统的软件的设计进行了分析和研究,重点论述了摄像头图像数据采集方法、各种特殊赛道元素的不同算法等内容。本设计的特色在于以下几点: 研究了摄像头图像采集的方案、分析了摄像头的工作原理以及提出了较佳的智能车摄像头的选购原则。成功应用了往届提出的

2、“弦切法”算法,使小车能较好地处理大s、小s等特殊赛道。 找到了较有效的起跑线识别算法,能很好适应“飞思卡尔”比赛的规则。 对急转弯、十字路口、大圆环出弯点等容易出现失误的地方提出了相应的行驶策略,使小车在这些地方的失误率降低。 针对实际实验现象和结果总结出了一些常出现问题的解决方法。所设计的智能车实物经过实验及实际比赛验证。本设计中的所采用的各种算法取得了良好的效果。关键词:9s12xs128;图像采集;行驶策略;智能车ccd sensor based intelligent software design and research vehicle abstract in this pape

3、r, freescale national university student smart car race as the background to the company 9s12xs128 freescale microcontroller as the control center, designed in a black line on the runway to guide self-identify roads intelligent vehicle, and through appropriate control algorithms to make car travel i

4、n the shortest possible time to complete the process.the design begins with a brief description of the cars overall profile and the cars hardware and mechanical structure of the content. design mainly the design of software systems analysis and research focuses on the camera image data acquisition a

5、nd de-noising method of interference, string cut method of application and improved motor pid control algorithm and so on.this design feature is the following: of the camera image acquisition program, analyzes the working principle of the camera and made a better buy smart car camera principle. of t

6、he servo control algorithm, the successful application of a previous proposal of string-section method algorithm, so that car can better handle large s, small s, and other special track. meanwhile, proposed and practice based on this algorithm is more effective improvement algorithm. found a more ef

7、fective starting line recognition algorithm, well adapted, freescale rules of the game. of the intersection, a large ring bend point out mistakes so easy to place a corresponding increase in denoising algorithm to car failure rate in these areas decreased. results to actual experimental results and

8、summarizes some of the rules to adapt to competition and the track characteristics of the algorithm.experimental verification by the actual physical competition, the design of algorithms used to obtain good resultskey word: 9s12xs128;image acquisition;pid control;string-cut method第一章前言11.1设计背景11.2智能

9、车辆发展现状、趋势及应用11.3 设计任务2第二章智能车系统整体设计方案32.1 智能车系统整体结构32.2 智能车硬件部分设计42.3智能车软件设计总体方案42.3.1 主程序流程图42.3.2中断程序流程图5第三章系统初始化73.1 系统初始化流程图73.2 系统时钟初始化83.3 pwm初始化93.4键盘初始化12第四章图像采集与路径分析144.1摄像头144.1.1工作原理144.1.2摄像头选择144.2图像信号简介154.2.1图像信号组成154.2.2图像信号各参数测量164.3视频信号分离174.4比较器174.4.1比较器的选择174.4.2比较器转换图像信号的原理204.5

10、数据采集214.6数据采集程序流程图234.7路径分析274.7.1数据处理部分274.7.2偏移计算29第五章控制策略345.1 pid调节器345.2 pid控制算法345.3舵机控制355.4速度控制36第六章调试软件386.1 调试软件界面程序编写386.2结束语42致谢45参考文献46附件1:下位机部分程序代码47附件2:上位机部分程序66附件3:智能竞赛车模的规定76附件4:电路器件及控制驱动电路限制76附件5:赛道基本参数(不包括拐弯点数目、位置以及整体布局)7772第一章 引言现代科技日新月异,人们对智能化程度的要求已经越来越高,而汽车的电子化程度则被看作是衡量现代汽车水平的重

11、要标志,汽车生产厂商推出了越来越智能的汽车,来满足各种各样的市场需求。智能化技术与汽车相结合产生的智能汽车将在未来工业生产和日常生活中扮演重要的角色。智能汽车是一种集合了环境感知、规划决策、自动行驶等功能于一体的综合系统,集中的运用了自动控制、传感器技术、汽车电子、电气、计算机、机械等多个学科的知识,是典型的高新技术综合体,具有重要的军用及民用价值。本文所述智能汽车是以“飞思卡尔”全国大学生智能汽车竞赛为背景的。根据比赛规则,该智能车系统要求小车在白色背景的场地上,通过对转向角和车速的控制,使小车能自动地沿着一条任意给定的黑色带状引导线行驶。本文先从总体上介绍了所设计的智能车的设计思想和整体概

12、况,然后简要论述了在机械和硬件方面的设计,接着重点阐述了系统软件设计的方法和各种算法的分析与实现。对智能车的制作及调试过程,包括本队在制作和调试过程中遇到的问题及其解决方法也做了相应的介绍。1.1设计背景随着人们对智能化程度需求的日益增高,汽车的智能化不可避免要成为未来汽车的发展方向。智能化技术与汽车相结合产生的智能汽车将在未来工业生产和日常生活中扮演重要的角色。在仍然以人力主导汽车行驶控制的今天,汽车的自动行驶和智能化将会带来很重要的意义。据美国国家公路交通安全管理局评估,在2000年的过6百万交通事故报告中,有20%至30%是因为司机的错误或疏忽而导致的。可见,人为驾驶在汽车行驶中会带来很

13、多的不安全因素。汽车发明之初,人们梦想利用汽车的快速发展,进而改变生活形态。今天,汽车却成了人们的烦恼,如今因为汽车而衍生出车祸、交通拥堵、乱红灯等诸多交通问题。智能汽车则成了解决这些烦恼的希望。汽车的智能化不仅可以使人们从枯燥的汽车驾驶中解脱出来,还会减少人为的不安全因素,使偶发性人为交通事故率降低。因此,当前各国也越来越重视对智能汽车的研究,有越来越多的学者致力于智能汽车的研究与开发。教育部为了加强大学生实践、创新能力和团队精神的培养,进一步深化高等工程教育改革,培养本科生获取知识、应用知识的能力及创新意识;培养硕士生从事科学和技术研究能力;培养博士生知识和技术创新能力。在已举办全国大学生

14、数学建模、电子设计、机械设计、结构设计等4大竞赛的基础上,经研究决定,委托教育部高等学校自动化专业教学指导分委员会主办每年一度的全国大学生智能汽车竞赛(教高司函2005201号文)1。该项赛事与其它四项赛事一样,旨在培养与提高当代大学生的动手力、创新能力、自学能力、理论应用于实际的能力等,具有重大的现实意义。但是与其它赛事有很大的区别,它不仅是面向某个方向,如机械设计大赛面向的是机械设计方面,电子设计大赛面向的是电子原器件运用、电路设计方面,而这项赛事的综合性很强,基本囊括了上述四项大赛的内容,涵盖了控制、模式识别、传感、电子、电气、计算机和机械等多个学科,这对进一步深化高等工程教育改革,培养

15、本科生获取知识、应用知识的能力及创新意识具有重大的意义。教育部委托高等学校自动化专业教学指导分委员会主办每年一度的全国大学生智能汽车竞赛;高等学校自动专业教学指导分委员会决定飞思卡尔半导体公司为协办单位,赛事冠名为“飞思卡尔”杯。1.2课题研究现状及发展趋势由于自动化技术、计算机技术、信息技术、人工智能、电子技术等各种技术的突飞猛进,智能汽车技术有了实现和发展的技术基础。目前智能车辆技术在轿车和重型汽车上主要应用于碰撞预警系统、防撞及辅助驾驶系统、智能速度适应、自动操作等,其在军事上的应用更加广泛和重要。据报道日本已经研制成功了一种能自行调节车速、方向盘以及车身在车道上位置的超级智能汽车。驾驶

16、这种智能汽车行驶在一般公路上,与普通汽车也并无多大区别。而只有当行驶在标识清楚、分明的高速公路上,汽车的种种“超级智能”才能予以充分发挥。如果前车突然刹车,或有其他车插进来,报警系统还会发出警告,提醒驾车人注意,同时要求驾车人辅以手动刹车。值得一提的是,该车驾驶室里安装的一种特别监视器还能自动监视方向盘转动的度数;而且当驾驶员的手离开方向盘时,监视器也会发出警告。在2004年世界工程师大会汽车制造业专场论坛上,研究人员描绘了未来汽车的发展方向是“四个轮子加一个计算机”的智能机器。利用全球定位系统,人造卫星能确认物体在地球上的位置,这是智能型汽车的第一步。而车内信息系统在未来将改变人类用车的方式

17、,车用计算机能安排旅程、引导驾驶避开塞车,运用定位系统与数字地图管理燃料。此外还发展出新的驾驶界面,以声控技术与车内所有的配备沟通,让驾驶者在专心开车的同时也能享受其他的附加价值。而近年来所发明的智能型交通引导系统、气囊科技与夜视系统等皆是实现汽车自动驾驶梦想的关键。基于现在的技术水平,司机还不敢像科幻小说写的那样对汽车启动后就放手不管。但是,科学家认为将来的汽车智能不断完善,这样的“傻瓜”汽车总会实现。到了那时,你就可以在上车之后在电脑上输入你的目的地的详细地址,汽车就会像马儿那样载着你快速奔跑,而你也不用担心它会和其他汽车相撞。与智能汽车配套的智能公路也将逐步发展起来。在未来,每辆汽车借助

18、无线通讯与其他车辆以及公路计算机不断交换信息,每秒至少50次,让所有车辆都做到同步加减速以保持固定车距,因此不可能发生塞车的现象。从空中鸟瞰这样的智能型公路,最好的比喻是一条巨大的输送带,其上车辆相互之间完全静止,感觉上就像一起被公路拖着走。这样的智能型公路至少能容纳3倍于目前的车流。智能汽车是一种高新技术密集型的新型汽车,是今后的主流汽车产品,国际上正在形成智能汽车研究设计开发的热潮。 人们预测,到2015年时,第一代智能车将可以躲避碰撞。到2020年,第二代声音识别汽车将可以在自动化公路上自行行驶。到2025年,第三代智能车将会从肌肉神经脉冲、眼部活动和脑电波接受指令1。汽车的智能化是必然

19、的发展趋势。而今后的智能化也不仅仅限于能自动行驶,它还将注重对安全性、舒适性、防盗性、节能性,甚至网络化等方面的智能。随着计算机技术和信息技术为代表的高新技术的发展,人工神经网络技术、模糊控制技术、神经模糊技术、虚拟实现等技术的出现和发展,智能车辆技术的研究将会有突破性的进展。实用化和大众化将是智能汽车发展的前进方向。1.3 论文章节安排本文内容的安排如下所示:第一章 引言 本章主要介绍了课题的由来、研究的背景,课题的研究现状及发展趋势等内容。介绍了freescale 竞赛的基本情况,智能汽车的发展状况等。第二章 系统整体方案设计 该部分对系统整体框架和结构进行了论述。由于本文主要论述软件的设

20、计方案,所以,硬件及机械方面的内容也一并放在此简要论述。第三章 系统初始化 本章主要对系统进行初始化设置、对单片机中的各种寄存器进行初始设置。第四章 信号采集与处理 本章介绍了摄像头工作原理、图像信号特征,对所采用的数据采集及处理的方法进行了论述。第五章 路径识别与行驶策略 本章是本次设计的重点内容,其中涉及很多我们的创新点,其中特别介绍了图像处理中的各种技巧、“弦切法”的应用及改进、pid 控制策略的应用及改进和起跑线识别算法的设计、防误判算法等我们在实践中应用良好的算法并总结了一些在实践中摸索出来的技巧。第六章 开发环境与系统调试 本章对开发工具与调试方法作了简单介绍。第七章 总结 在此部

21、分我们论述整个设计过程中的经验与教训;对小车的性能、参数作了评价;对设计中取得的成果和不足作了总结。第二章 系统整体方案设计2.1 系统整体设计思想对于系统的整体结构,我们有一个很形象的“拟人”描述。首先,我们明确小车所要完成的最基本的功能即巡线行驶。那么我们自然想到既然要循着黑线行驶,必须要先认识黑线、找到黑线,这就相当于我们的眼睛寻找到了目标,在实际设计中我们的ccd传感器就是这个作用(当然,要构成闭环系统,肯定还要采集实时速度信号。);然后,我们的眼睛找到目标后就要将所获得的信息(包括位置、形状等等)送入我们的大脑进行处理,这个过程就是利用s12单片机的控制决策过程。而具体大脑如何进行处

22、理,处理的方法得不得当,这就是所谓的算法优劣的问题了。经过大脑处理之后,大脑会送出相应的命令给我们的手、脚等去执行相应的动作。智能车系统也是如此,经单片机处理之后,系统便可以执行决策命令,只不过本系统的执行机构相应只是舵机和电机而已。由以上简要分析可见,本智能车主要由三个方面组成:第一,信号采集和处理系统(包括图像信号和速度信号);第二,控制决策系统;第三,执行机构系统。其整体结构图如图2.1所示。其中,图像信号的采集我们选择动态性能较好的ccd 视频传感器。控制决策系统采用飞思卡尔公司的16 位单片机mc9s12xs128 作为主控芯片。执行机构主要控制舵机的转角和直流电机的转速。s12微控

23、制器ccd图像采集实时速度信号采集舵机电机拨码开关选择输入信号采集和处理系统控制决策系统执行机构系统图2.1 系统整体框架图2.2智能车软件设计总体方案2.2.1 软件层次结构根据以上系统的整体框架结构和系统所要实现的功能,我们在设计软件时首先研究制定了系统软件的层次结构。关于智能车软件方面整体分为:系统初始设置层、信号采集层、数据分析处理层、决策判断层、执行层几个层次。其层次结构图如图2.2所示。软件层次结构图系统初始设置层系统初始值设置信号采集层摄像头信号采集 速度信号采集数据分析处理层图像信号滤波、视频分离 信号转换、计数决策判断层制定相应控制算法执行层控制执行机构(舵机、电机)运转图2

24、.2 软件层次结构图2.2.2 系统程序流程图根据以上软件整体设计思想和层次结构图的分析和应用,得出了整个系统的程序流程图如图2.3所示。需要说明的是,在图中图像信息采集的环节会有一些中断子程序,这些放在具体分析时给出。另外,其它一些比如算法等部分的程序流程图并未给出,它们会在后续章节中作详细说明。这里给出的只是系统主要的整体流程图。开始单片机初始化图像信号采集数据处理、路径识别pwm控制信号输出根据相关算法计算偏移量拨码开关选择实时测速中断保护现场清实时中断标志位测速函数计算当前速度值中断返回图2.3系统主程序流程图2.3 智能车硬件及机械系统设计方案硬件和机械部分是系统的骨架和基础,没有合

25、理良好的硬件和机械系统,光在软件上下功夫也是徒劳。由于本设计主要是对智能车系统的软件部分进行论述,所以此处仅对智能车硬件和机械系统做简要概述。2.4 本章小结本章是整个设计的总体设计。对整个智能车的设计思想包括软件总体设计思路和硬件及机械方面的总体规划都进行了论述,对以下几章具有总体宏观的指导意义。第三章 系统初始化本系统中,mc9s12xs128单片机是控制的核心,其他各模块的初始化是通过对单片机内部的设置实现的。系统的初始化主要是对mc9s12xs128各种使用到的内部寄存器、端口等进行设置。主要完成系统时钟、自定义变量初始值的设置、小车的初始状态(初始速度、初始转角等)的设置、pwm周期

26、设置、分配存储空间等内容。系统初始化之后才能正常工作。由于初始化部分本组有专门负责人员,下面只介绍几个重要的初始化函数。3.1 时钟初始化对于以ccd摄像头采集信号的小车来说,单片机总线的频率对采集处理图像信息的能力是非常重要的。如果频率过低,单片机处理速度跟不上来,将对小车的性能以及各种算法的要求影响很大。所以,摄像头小车一度非常流行超频。我们根据自己所选择的摄像头的特点,未使用过大的超频。单片机的晶振是16mhz的,mc9s12xs128在时钟初始化后可以通过内部锁相环倍频电路,使总线频率达到40mhz,这里就用到了一些寄存器中的某些位,倍频公式如下: (1)其中,oscclk_value

27、系统的外部晶振;refdv_value系统时钟分频系数,在初始化中,它的值为3;synr_value倍频系数,它的值为3。而synr=synr_value,refdv=refdv_value,synr、refdv就是寄存器中的对应位。3.2 pwm初始化pwm通道计数寄存器pwmcntx,写入任何值都将使pwmcntx清0,也就是说pwmcntx不能被置0以外的数值,图3.2表示pwm波产生的过程。图3.2pwm占空比pwm周期: (2)脉宽左对齐,起始高电平输出,占空比计算公式: (3)由于总线时钟在调试过程中经常会人为地进行调整,而如果我们每次进行调整都将再次对每个pwm寄存器进行分频,预

28、分频的调整,以达到预期的输出周期(舵机100hz左右,电机10khz左右),这样给调试带来了不便,故部分程序编写进行了相应的处理:1、 pwm.h头文件中进行如下宏定义:#define bus_freq 80000000 /总线频率80mhz#define pwm_prclk 0x22 /ch_a = ch_b = bus_freq/4#define ch_a_freq 20000000 /时钟a频率,此值为bus_freq 4分频后计算所得值#define ch_b_freq 20000000 /时钟b频率,此值为bus_freq 4分频后计算所得值#define ch_sa_freq 10

29、00000 /时钟sa频率#define ch_sb_freq 4000000 /时钟sb频率#define ch_sa_div ch_a_freq/(ch_sa_freq*2) /ch_sa_div = 4#define ch_sb_div ch_b_freq/(ch_sb_freq*2) /ch_sb_div = 1/舵机频率选择 50200hz#define servofreq 80/舵机频率100hz(此处数值对应舵机频率)/dc电机频率选择 025khz#define motorfreq 20000/dc电机频率20khz(此处值对应直流电机的工作频率)2、 在pwm.c源文件中进行

30、如下处理:void pwm_init(void) pwmprclk = pwm_prclk; /clocka,b时钟总线=总线频/4=20mhz pwmscla = ch_sa_div;/ch_sa_freq = ch_a_freq/ch_sa_div/2 pwmsclb = ch_sb_div; /clocksa=clocksb=8mhz/(2*4)=1mhz pwmctl_con45 = 1;/组合pwm45 pwmctl_con67 = 1; /组合pwm67 pwmctl_con23 = 1; /组合pwm23 pwmclk_pclk5 = 1;/pwm5使用sa pwmclk_pcl

31、k3 = 1; /pwm3使用sb pwmclk_pclk7 = 1; /pwm7使用sb pwmper45 = ch_sa_freq / servofreq; /写pwm45的周期寄存器,提供给舵机pwmper23 = pwmper67 = ch_sb_freq / motorfreq; /写pwm23,pwm67的周期寄存器,提供给直流电机 pwmpol_ppol5 = 1; /极性为正 pwmpol_ppol3 = 1; /极性相反 pwmpol_ppol7 = 0; /极性相反 pwmcae = 0x00; /左对齐 pwme_pwme5 = 1; /使能pwm45 pwme_pwme

32、3 = 1; /pwm23 控制电机速度 pwme_pwme7 = 0; 经过以上处理后,如果总线频率bus_freq改变的话,我只要简单计算新的bus_freq经pwm_prclk (此处为4分频)分频后的频率,并将ch_a_freq声明为新值,其它不作改变。如:bus_freq开始为32000000经4分频(pwm_prclk=0x22)得时钟a频率为8 000000hz,因此将ch_a_freq声明为8000000,经公式(4)计算得ch_sa_div = 4。若bus_freq改为80000000hz,则4分频后时钟a频率20000000hz,则将ch_a_freq声明为2000000

33、0则通过公式(4)计算得ch_sa_div=10。之所以能这样处理的原因是pwmscla、pwmsclb能够进行1*2,2*2直到255*2的连续分频,这样ch_sa_div可为2512中任意一个偶数,而根据公式(4)处理恰好可得到2512中的偶数之一。 (4)同时本程序编写可很方便地对舵机工作频率进行软调:#define servofreq100 /表示舵机工作频率为100hz。根据公式: (5)计算得pwmper45=10000,而对应舵机的pwm通道(本设计中舵机用的是pwm45)的pwm周期根据公式(2)得:即对应舵机频率为100hz。同时其占空比可根据公式(3)求取。由于pwper4

34、5=10000,固pwmdty45的值变化范围为110000,即对应的占空比可调值有10000个。实际中因舵机左右转角位置限制使其可变的点数大概在600个左右。同理直流电机可调范围根据公式(6)可得pwmper23=200;即:所以pwmdty23变化范围为0201。整体来说,此部分初始化相对复杂,其范围也要求较为严格,并且直接关系到舵机、直流电机的响应时间和稳定性。在实际应用中,如果对应舵机的pwm通道的频率设置过高(高于200hz),可以很明显听到舵机发出断续声响。3.3定时函数初始化在编程时基本都会用到延时程序,但是延时程序的一大缺点就是造成系统资源严重浪费,只要执行延时程序,除了中断函

35、数的打断,系统就只能等待,直到延时程序执行完毕,系统才能继续执行,从程序的并行处理的角度来说,这样的延时程序浪费了高性能mcu的处理能力。所以,本系统利用xs128芯片的定时器模块,设计了一个定时函数,该定时函数的主要功能是:在程序中由用户设定要定时的时间以后,定时开始,同时,系统可以接着执行其他的程序,定时时间到了之后,系统进入中断服务程序,在该中断服务程序中,用户可以设置定时结束后想要完成的功能。这样,从程序的并行处理来说,本系统充分利用了系统资源,提高了系统执行的效率。在定时器函数中,主要是把mcctl寄存器的mczi和mcen置1,这样可实现开定时器,中断使能的功能。在设置寄存器之后,

36、执行mccnt=time*bus_clk,对mccnt赋初值,其中time为要定时的时间(us),mccnt为一个递减计数器。写mccnt会自动清中断标志。在定时结束后,即mccnt从初始值递减为0时,进入其对应中断函数mdc_isr()。在mdc_isr()中断函数中,先清标志位(mcflg_mczf=1),再执行定时后想要实现的功能,本系统中,atd0ctl2 |= atd0ctl2_ascie_mask; 开启atd中断使能atd0ctl5 = (atd0ctl5_djm_mask|atd0ctl5_scan_mask);djm位置1是左对齐转换后数据,scan位置1是使能atd持续转换

37、。如上所示,在中断服务程序中,用户设置的功能是开启atd0、atd1中断使能,这样一旦中断的中断触发脉冲到来,对应的中断服务程序就可以被执行了,进而完成atd0或atd1中断服务程序的功能。第四章 信号采集与处理本设计的控制系统通过摄像头采集图像后对采集到的图像进行数据处理再据此判断引导线(黑线)的位置及其变化趋势,从而运用相应的控制算法对转向和速度进行控制。由此可见信号采集和处理部分的重要性。而对于摄像头智能车来说,信号的采集与处理又是较为复杂的一个部分,本章内容是设计中的一个难点部分。4.1传感器及图像信号基本知识本设计中在对信号采集与处理方案具体介绍前先论述传感器及图像信号的基本知识。这

38、些内容也是之后信号采集与处理方案分析的关键。4.1.1摄像头工作原理在“飞思卡尔”智能汽车竞赛中,根据信号提取方案的不同可以分成摄像头组、光电组、电磁组等不同类型的智能车。本设计中所采用的是摄像头组的方案,因此,图像信号的提取是以ccd摄像头为基础的。摄像头主要由镜头,图像传感芯片和外围电路构成。图像传感芯片又是其最重要的部分,摄像头的指标取决于图像传感芯片的指标;该芯片要配以合适的外围电路才能工作,将它们制作在一块电路板上,再配上镜头、外壳、引线和接头,这就构成了通常所见的摄像头。摄像头通常引出三个端子,分别为电源端,地端和视频信号端(有的摄像头还有一个音频信号端)。其中电源使用12v 供电

39、,视频信号输出为模拟信号,可以直接使用普通电视的视频输入端口输入并显示出来。摄像头的主要工作原理介绍如下:传感器按照一定的分辨率,以隔行扫描的方式逐点扫描,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度成一一对应关系的电压值,然后将此电压值通过视频信号端输出。这就像我们看书一样,我们会一行一行的看。然后,看完一页再跳到下一页。所不同的是,摄像头是隔行扫描的,所以它会有奇场和偶场之分。本设计所采用的摄像头每秒扫描25帧图像,每帧又分奇、偶两场,先奇场后偶场,奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。故每秒扫描50场图像。可见,每场信号持续时间为20ms。每场又有310线

40、(行),故每行的扫描时间大约为64us。4.1.2摄像头图像信号简介摄像头图像信号的组成如图4.1所示。本部分内容上海交通大学的技术报告的说明非常详细,在此简述如下:当摄像头扫描完一行,视频信号端就输出一个低于最低视频信号电压的电平,这样在每行图像对应的电压信号之后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。然后,跳过一行(因为摄像头是隔行扫描的方式),开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着就会出现一段场消隐区。此区中有若干个复合消隐脉冲(简称消隐脉冲),在这些消隐脉冲中,有个脉冲它远宽于(即持续时间长于)其他的消隐脉冲,该消隐脉冲又称为场同步脉冲,

41、它是扫描换场的标志。场同步脉冲标志着新的一场的到来。不过,场消隐区恰好跨在上一场的结尾部分和下一场的开始部分,要等场消隐区过去,下一场的视频信号才真正到来。图4.1 图像信号组成摄像头有两个重要的指标:分辨率和有效像素。分辨率实际上就是每场行同步脉冲数,这是因为行同步脉冲数越多,则对每场图像扫描的行数也越多。事实上,分辨率反映的是摄像头的纵向分辨能力。有效像素常写成两数相乘的形式,如“320240”,其中前一个数值表示单行视频信号的精细程度,即行分辨能力;后一个数值为分辨率,因而有效像素=行分辨能力分辨率。4.1.2摄像头的选择摄像头的性能,对本设计所述的一些算法影响较大。关于摄像头的选择方法

42、,根据参赛经验并参考其他说法总结如下:摄像头分黑白的和彩色的这两种,为达到寻线目的,只需提取探测画面的灰度信息,而并不使用色彩信息,所以本设计中采用黑白摄像头,相较使用同等分辨率的彩色摄像头而言,这样可减少单片机采样摄像头输出视频信号的负担,同时,在软件编写方面也会方便很多。关于ccd和cmos摄像头的选择,根据实际经验我认为ccd摄像头在动态性能上面要优于后者,但在稳定性能方面不如cmos摄像头。也就是说如果运动速度较快,用前者的效果要好于后者。基于设计要求达到的速度已经不满足于低速巡线行驶,而要追求尽可能高的速度,本设计最终选择了ccd摄像头。另外,根据经验,现在市场上能买到的摄像头参数中

43、的输入电流要尽量选择大一点。对于摄像头线数的选择,大量实验显示线数不能太高,因为单片机的处理速度有限,线数越高,尽管可提高纵向分辨能力,却会减少单片机采样单行信号的点数。这样对于小车的安全行驶非常不利,小车误判冲出跑道的可能性大大增加。而从视角的角度考虑摄像头的选择,我认为视场范围越宽,受到的外界光线干扰就越多。因此视场不宜过宽,现在在市场上的摄像头都足以满足跑道的视角要求。因此,选择视场越小的越适宜。另外,值得一提的是,绝大部分摄像头的视场或多或少都是偏置的。如果仅仅依靠软件来设置视场的中心,将有非常大的局限性。因此在机械安装时可以按摄像头偏的方向反向安装。基于以上分析,加之市场上的购买等因

44、素,本设计选择了以下的摄像头参数,如表4.1所示:分辨率240有效像素310240行周期64us场周期20ms行同步时间4.7us场同步时间160us行消隐时间12us场消隐时间1.6ms表4.1 摄像头参数4.2图像信息预处理4.2.1视频信号同步分离从以上分析可知,摄像头未经处理输出的视频信号中含有对图像信号采集无用的一些消隐信号。本设计在单片机中对视频信号进行处理时要将这些信号滤除。也就是说,要对视频信号进行分离,将有用的同步信号提取出来并转换成数字式电平直接输给单片机的i/o 口,同时使用9s12 单片机i/o 口的中断功能来接收这些信号。本设计采用芯片lm1881实现以上功能,具体的

45、硬件连接电路由其他小组成员论述。此处不再具体阐述。视频信号同步分离的原理图如图4.3所示。图4.3 视频信号同步分离原理图4.2.2二值化处理在图4.3中,经视频信号同步分离处理后的视频信号在输入单片机前,在图中画了一段虚线,此处正是以下将要论述的信号二值化处理部分。对于将数据采集进入单片机处理,很多设计中采用的是a/d转换的方法,此种方法使用s12内部自带的a/d,就不需要在外部再加硬件电路。但使用a/d也有很多的弊端,比如对单片机资源的消耗以及程序算法的复杂等。而对于二值化也分为硬件二值化和软件二值化,软件二值化通常也是在a/d采集的基础上的,它是将256个亮度等级的灰度图像通过适当的阀值

46、选取而获得仍然可以反映图像整体和局部特征得二值化图像。本设计中采用的是硬件二值化处理即通过硬件的比较器对信号进行二值化处理后再送入单片机。主要理由如下:首先,用比较器进行硬件二值化抗噪能力比较强,因为比较器对单个面积较小的干扰点无响应;其次,与a/d方案相比较,经硬件二值化所得到的数据非常简单,容易处理。视频信号二值化示意图如图4.4所示。图4.4 视频信号二值化示意图对于比较器电路,我们最终选择的是lm339芯片。具体的硬件电路及芯片选择等内容已超出本文论述范围,同组的朱明亮将会具体论述。此种方法在实际应用中效果良好。4.3图像数据提取本设计中采用奇场和偶场换场时信号的下降沿作为一场信号来临

47、的标志。根据前面对信号的分析知道,奇偶换场信号过后将先有一段复合消隐区,之后才有行同步信号。因此,每一场的前一段信号(通常是十几行)是没有用的,在实际的设计时,将这一部分信号滤除,提取出有用的同步信号和视频信号,此部分已在前面视频信号分离时作了介绍。在实际测量后,我们滤除的是换场后1024us的信号。本设计采用捕捉图像经比较器二值化后的边沿来判断信号的。这种方法能带来处理数据量小、处理方便等好处。设计中通过s12的一个i/o口捕捉lm1881芯片换场信号的下降沿,当捕捉到时表示一场的开始,这时就开中断。使用外中断irq,以行同步信号作为外部中断,捕捉行同步的下降沿,判断一行的开始,其程序流程图

48、如图4.5所示。外部中断irq行中断标志位置1中断返回图4.5 行同步信号捕捉设置流程图接下来当行同步信号来临之后就是我们采集到的图像信息了。当然,前面已经说过此处的图像信息已经经过硬件二值化预处理了。此时我们就要使用输入捕捉中断tc0来捕捉经过比较器输出的图像信号的跳变边沿。程序流程图如图4.6所示。输入捕捉中断进入输入捕捉中断标志位置1中断返回图4.6 输入捕捉中断如图4.7所示,经预处理之后的信号中,低电平表示的是赛道中的黑线即引导线。本设计采用捕捉图像二值化后的边沿进而判断黑线偏移量的。具体方法如下:行同步信号的下降沿1捕捉到之后,整个一行的宽度为w=w1+w2+w3。其中w2为黑线,

49、w1、w3分别为黑线左右的赛道部分(为浅色调)。定义offset为黑线的偏移量即为偏移中心位置的多少。则有公式:offset=w1-w3,在程序当中可以简单地实现,这样就可以知道黑线的偏移量了。图4.7 视频图像捕捉及偏移量计算示意图图4.8为按以上方法捕捉到的一组图像数据。图4.12 捕捉边沿得到的一组数据我们不妨将图上图中显示的数组tcnt_count部分数据成表4.2。表4.2 tcnt_count部分数据表我们分析一下表4.2:每行数据a、c、e、g对应图4.11中的点2、3、4、5 。红底数据为我们将可以知道它们的平均值为51.46,从数值上和每行的图像信号52us相吻和,也就是图4

50、.11中w1+w2+w3;蓝底数据 ,它对应于黑线的宽度,也就是图4.11中的w2。正如上面说的那样,可以通过w3w1可以知道黑线的偏移量。但是方案2采集思路也是有问题的,上面数据的参考点选择的为图4.11中的点2,而这一点是不确定的。我们仔细观察图4.4中的图像两边,发现比中间要低,而图像硬件二值化结果第一点并不是和图像开始边沿对齐,也就是说我们用w3w1得出的黑线偏移是以w1为基准点,而w1又是变动的,那么同一位置的偏移量就有变动的。所以在后面的处理中,我选择的参考点为1,因为它是行同步下降沿,所以为定值。4.4速度信息采集与处理为了实现很多闭环的控制算法,需要对小车的实时速度进行采集、处

51、理并反馈给单片机使用。对于测速模块,本设计采用编码器来检测速度信息。通过脉冲计数的方法来实现对小车速度的检测。该实时中断的流程图如图4.8所示。实时中断调用测速函数使用相应算法对速度和转向进行控制清实时中断标志位中断返回图4.8 测速实时中断流程图4.5数据采集和处理部分小结本章主要对图像数据的采集和处理进行了论述,另外也简要介绍了速度信息采集与处理的内容。总结起来说,对于图像信号的采集与处理部分主要分为以下几个步骤:首先通过摄像头检测到的信号经视频信号分离后提取出了各同步信号和视频信号,再经硬件二值化将信号变为只有高低两种电平的形式,方便之后的分析和处理;接着通过判断奇偶换场信号得出一场的开

52、始进而开中断,此时就可以捕捉行同步信号的下降沿,判断一行的开始,通过输入捕捉中断捕捉到视频信号的各个跳变边沿的值并记录下存储在数组中,最后就可以根据这些数据计算出偏移量的大小。同时,测速实时中断将小车的实时速度送入单片机,从而与偏移量一起通过一定的算法控制小车的运动。关于图像信号处理总结的流程图如图4.9所示。yyyynnnn摄像头信号采集开输入捕捉中断tc0,捕捉图像的边沿信号行数加1转入其他模块tcnt_countij+ =tc0tcnt_counti0+清tm0_flg行中断到来?下降、上升沿中断标志位tm0_flg=1?行数大于20下一行中断到来?信号预处理图4.9 图像信号处理流程图

53、第五章 路径识别与行驶策略完成了前面几章的内容,加上对单片机输出方面的控制后,小车基本上就可以完成最基本的功能:巡线行驶。但是,本设计的目的不仅仅是让小车巡线行驶,还要在此基础上以最优的路径行驶,以最稳定的状态、最短的时间完成比赛。那么如何以较优的路径行驶、如何对不同的特征赛道进行相应的处理、如何使系统更加稳定对干扰较多的地方进行去干扰处理,这就是本章所要论述的路径识别和行驶策略的内容。本章是本次设计的重点内容,其中涉及很多我们的创新点,其中特别介绍了图像处理中的各种技巧、“弦切法”的应用、pid 控制策略的应用及改进和起跑线识别算法的设计、防误判算法等我们在实践中应用良好的算法并总结了一些在

54、实践中摸索出来的技巧。5.1路径分析与特殊赛道行驶策略5.1.1路径分析在制定对赛道的行驶策略前,必须对赛道的特点进行分析,以方便制定正确合理的控制算法。图5.1 示例赛道对于飞思卡尔比赛的赛道,其示例赛道如图5.1所示。根据不同的赛道特点赛道主要可分为以下几个元素:1) 起跑线 通常设置在直道上,其特征就是在25mm宽的引导线两旁各有一个25mm长,100mm宽的黑带,其离引导线的距离为17.5mm。2) 直道 此赛道是由25mm宽的直线中心黑线引导线构成的,其直线长度大于2m,在此赛道上赛车可以全速行驶,但为了防止急转弯时小车冲出跑道,在直道上也可以设置极限速度。另外,直道也有宽直道和窄直

55、道之分。3) 小s赛道 也可称之为波浪形赛道,此赛道的黑色引导线在中心线两边对称作小幅度波动,其形状如“小s”状。在此赛道上,小车要尽可能以直线行驶,这样能节约时间。4) 大s赛道 相对于小s赛道而言,此环节黑色引导线在中心线两边对称的波动,但是幅度较大,其形状如“大s”状。在此赛道上,由于小车如果直接以直线行驶的话会掉下赛道。所以与“小s”赛道不同,在此赛道上只能以一定的弦长去切割赛道行驶来节省时间。5) 深度s赛道 可以说此赛道是大s赛道的波动幅度进一步加大后的形状,典型赛道为半径50cm、弧度为180度的赛道拼接而成。这种赛道上,切割的弦长要求更短,甚至为了保险起见,可以考虑在此赛道上之间沿线行驶。6) 急转弯环节 通常由设置在一个长直道后的半径50cm的90度弯赛道组成。正如在直道中所述一样,为避免冲出赛道,此环节要限速,并且要提前转弯。7) 大圆环赛道(包括十字路口) 此赛道构成一个完整的圆环,进圆环时是一个十字路口,对小车的抗干扰能力要求较高,对于此环节的处理方法中主要要注意速度的连续性问题,也就是说过弯速度不能过慢。5.1.2 “s”形赛道的行驶算法所谓“s”形赛道包括小s、大s和深s(如果深s深度过大则不属于此处所讲的范畴)。如图5.2

温馨提示

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

评论

0/150

提交评论