飞思卡尔智能车技术报告_第1页
飞思卡尔智能车技术报告_第2页
飞思卡尔智能车技术报告_第3页
飞思卡尔智能车技术报告_第4页
飞思卡尔智能车技术报告_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、第六届全国大学生智能汽车竞赛技术报告第六届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告学 校:队伍名称: 参赛队员:带队教师:关于技术报告和研究论文使用授权的说明本人完全了解第六届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日 期:摘要随着现代科技的飞速发展,人们对智能化的要求已越来越高,而智能化在汽车相关产业上的应用最典型的例子就是汽车电

2、子行业,汽车的电子化程度则被看作是衡量现代汽车水平的重要标志。同时,汽车生产商推出越来越智能的汽车,来满足各种各样的市场需求。本文以第六届全国大学生智能车竞赛为背景,主要介绍了智能车控制系统的机械及硬软件结构和开发流程。机械硬件方面,采用组委会规定的标准 A 车模,以飞思卡尔半导体公司生产的80管脚 16 位单片机 MC9S12XS128MAA 为控制核心,其他功能模块进行辅助,包括:摄像头数据采集模块、电源管理模块、电机驱动模块、测速模块以及无线调试模块等,来完成智能车的硬件设计。软件方面,我们在 CodeWarrior IDE 开发环境中进行系统编程,使用增量式 PD 算法控制舵机,使用位

3、置式 PID 算法控制电机,从而达到控制小车自主行驶的目的。另外文章对滤波去噪算法,黑线提取算法,起止线识别等也进行了介绍。关键字:智能车 摄像头 图像处理 简单算法 闭环控制 无线调试第一章 引言飞思卡尔公司作为全球最大的汽车电子半导体供应商,一直致力于为汽车电子系统提供全范围应用的单片机、模拟器件和传感器等器件产品和解决方案。飞思卡尔公司在汽车电子的半导体器件市场拥有领先的地位并不断赢得客户的认可和信任。其中在8 位、16 位及32 位汽车微控制器的市场占有率居于全球第一。飞思卡尔公司生产的S12 是一个非常成功的芯片系列,在全球以及中国范围内被广泛应用于各种汽车电子应用中。受教育部高等教

4、育司委托,高等学校自动化专业教学指导分委员负责主办全国大学生智能车竞赛。该项比赛已列入教育部主办的全国五大竞赛之一。此项赛事涉及的专业主要有:控制,电子,图像处理,及计算机等,能极大的培养学生的动手能力及创新型思维。也因此受到全国各大高校的重视。从第一届发展到现在,飞思卡尔智能车比赛在全国高校的影响力也越来越大。在整个备赛过程中,随着对小车各种性能要求认识的提高,我们的设计理念也随着不断的得到了更新。现在我们认识到,稳定的电路是小车运行的基本保证,优良的机械性能是小车快速稳定运行的有力保证,良好的控制算法能充分发挥硬件电路和机械性能的优势,再加上一定的应赛策略就能在比赛中取得好成绩。 基于以上

5、的重要认识,在小车的制作过程中我们始终把硬件电路设计、机械调节与安装以及控制算法优化三个方面摆在同等重要的位置,同时入手,一齐改进,单把某个或两个方面作为重点来突破都无法取得满意的效果。我们从零起步,一步一个脚印的走过来;在数十次的试验和尝试过程中,我们从头摸起,如今建立起了一套科学合理的试验和研究方法,培养了迅速行动的良好习惯和大胆创新的开拓精神,为今后的工作和学习打下了坚实的基础;在无数次的各种交流和学习后,我们深刻认识到了努力学习、大胆交流和团结协作的重要性。硬件电路设计智能小车的硬件电路设计在整个系统中起着基础性作用,硬件电路的稳定性好坏影响着整个调试过程。本系统以飞思卡尔公司S12系

6、列16位80引脚的MC9S12XS128作为核心控制处理器。此单片机具有8kB的RAM、64kB的EEPROM,完全满足系统需要,而且具有很好的超频性能。同时片上还集成了许多标准模块,包括2个异步串行通信口SCI、3个同步串行通信口SPI、8通道输入捕捉/输出比较定时器、1个10位8通道A/D转换模块、1个8通道脉宽调制模块,这些资源能够满足完成智能车所需要的所有的条件。硬件电路是整个小车系统运行的基本,因此小车硬件的设计制作必需仔细考虑,精心设计,最终可以稳定可靠地运行。基于这样的认识与综合小车的结构,合理地设计电路外形,合理的布局与布线,最终的框图如下:本系统的硬件设计主要包括,电源模块,

7、视频采集模块,电机驱动模块等等,下面将就个部分进行详细的介绍。图像采集测速电源(12V、7.2V、6V、5V)舵机电机驱动5V7.2V12V5V5VMC9S12XS128 控制器拨码开关图2.1 小车控制系统框图电源电路设计电源是小车系统的心脏,向各个电路模块提供能量,如果电源的任何一个出了小问题,都会使系统无法正常工作,因此供电部分一定要也必须要稳定可靠。考虑到各部分模块需要,其中5V的电压分别供给单片机、测速、视频分离模块,6V供给舵机,7.2V供给电机驱动,12供给摄像头。7.2V电源LM29405VMC3406312VLM11176V单片机编码器CMOS舵机电机CMOS摄像头供电在此部

8、分,我们采用了升压电路,采用的芯片为MC34063,通过该电路直接把电池的7.2V升压到12V,然后供给摄像头。MC34063是开关稳压芯片,可构成升压、降压斩波电路。输出开关电流大于1.5A。2.5mA的低静态电流。实验证明,由其构成的12V稳压电路完全能够为CMOS摄像头提供稳定的电源保证。其图所示:舵机供电本想直接采用电池电压的7.2V为舵机供电,但实际上每个电池的实际电压却远远不只7.2V,有的甚至达到8点几伏,而且电池电压在整个系统运行的时候会有很大的波动,为了避免产生不必要的问题,我们最终采用6V电压为舵机供电,6V电压是从7.2V的电池电压中稳压下来的,采用的稳压芯片为LM111

9、7。其他电路模块供电下面对各种常见 3.3V 和 5V 稳压芯片进行分析,寻找一款最符合稳定、高效和简单的硬件设计宗旨的稳压芯片。表 4.2.1 常见 3.3V、5V 稳压芯片对比稳压芯片78系列LM317系列LM2575 系列LM2940 系列LM1117 系列输出电压5V1.237V可调5V可调5V5V可调额定电流1A1.5A(2A max)1A(1.5A max)1A(2A max)800mA(1A max)最小压差3V2V2V0.5V1V输出纹波较大小小较小较小电路复杂程度低较低较高低低价格低较低较高较高较低经过对比我们可以知道 LM2940 系列和 LM1117 系列都是低压差的三端

10、稳压芯片系列,性能稳定且外围电路只有两个滤波电容,电路设计简单高效,最能满足硬件设计宗旨和需求。所以我们在 5V 稳压芯片选择贴片的LM2940芯片。具体电路图如下图所示视频信号采集电路模块我们的小车采用黑白CMOS模拟摄像头来采集路况信息。该摄像头重量轻、体积小、易安装是我们选用它的原因之一。视频信号分离采用LM1881视频分离芯片,分离出模拟视频信号的行同步信号和场同步信号,单片机根据这些同步信号来搭建控制时序,完成信号处理和各种控制。如图所示:电机驱动电路竞速比赛的智能车最关键的就是要有强劲的驱动力。这个“驱动力”不光包括通常所说的驱动电机,同时还包括电机驱动电路。由于比赛规则严禁改动更

11、换驱动电机,所以一个好的电机驱动电路对比赛影响非同小可,要能够保证长时间大电流输出的情况下减少升温且要稳定持续工作。对于PWM调速的电机驱动电路,主要有以下性能指标:1.输出电流和电压范围:它决定着电路能驱动多大功率的电机。2.效率:高的效率不仅意味着节省电源,也会减少驱动电路的发热。要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H桥或推挽电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。3.对控制输入端的影响:功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。4.对电源的影响:共态导通可以引起电

12、源电压的瞬间下降造成高频电源污染;大的电流可能导致地线电位浮动。5.可靠性:电机驱动电路应该尽可能做到,无论加上何种控制信号,何种无源负载,电路都是安全的。BTS7960 在较小的电路板空间占用的情况下为大电流保护的 PWM 电机驱动提供了一种成本优化的解决方案,于传统的MC33886驱动能力十分有限,,根据上图各种驱动方案得比较得知用BTS7960是较好的选择。其电路图如下:不过在今年的飞思卡尔比赛中摄像头组的C车模是双电机驱动,所以就要用到四块的BTS7960芯片分别对两个电机驱动,原来基础上再加一路驱动电路就行了,加两路闭环,两路PWM分开控制,最关键的还是软件,不过直道上,两轮的速度应

13、该相同才有利于在直线上的加速,可以通过两个编码器反馈进而调节两个电机,而且舵机的响应速度很高,0.16sec/60度,可以电机辅助转弯,没有必要使电机共轴。但是考虑到程序算法的复杂性,而且经过有些组别在我们已经采用两个电机级联的方法,感觉这影响也不是很大,既然有过成功的案例,所以我们暂时也通过电机共轴来简化程序。主控制系统主控制系统相当于大脑,车子的转向,加速减速、识别、判断全都由它来完成。我们直接采用比赛提供的MC9S12XS128,但是由于现在经验还是不够,所以我们将主电路,电源电路,驱动电路分开,以降低电路问题带来的风险。图13 单片机最小系统原理图单片机引脚规划如下:PORTA1-5:

14、按键PORTT0-2:LED 测试灯PORTB0-7:摄像头数据线PORTE2-7:无线传输模块PE2:奇偶场信号IRQ:行同步脉冲输入信号。PT6:光电编码器脉冲输入信号。PWM0、1:舵机角度控制信号输出。PWM2、3、4、5:电机速度控制信号输出。10第六届全国大学生智能汽车竞赛技术报告机械结构设计硬件软件的结合可以控制小车能够顺利地运行,但真正在赛道上跑的是小车,良好的机械的性能可以帮助小车更好地工作。就像一个真正的赛车手一样,要跑出好成绩,除了需要一个好车手以往,还需要一辆好车,两者缺一不可。基于这种想法,我们非常重视车模的机械结构。差速器的调节差速器的松紧程度对模型车的转弯性能、加

15、速性能有较大的影响。差速器越松对转弯越有利,但是不利于模型车的加速,如果差速器过松,还会导致差速器严重的滑动,使得编码器测得的速度与实际速度不符等。差速器越紧越有利于加速,但是不利于转弯。综上应选择一折中的程度,即半锁状态,新车模在未调节差速器时即处于这种状态。传动齿轮的调节轮子的动力是电机通过传动齿轮传到后轮的,因此齿轮间的耦合十分重要。如果耦合过松则齿轮容易受损甚至会打坏齿轮,但如果过紧又会加重电机的负担,甚至造成磨擦过大或者卡死现象。所以要把齿轮调节到一个适当位置,使齿轮既可传动又不会因为磨擦过大发出噪声。同时,为了减小齿轮间的磨擦,我们给齿轮间加上润滑油。舵机的安装舵机是车模中很重要的

16、一个部分,车子的转向全靠它。舵机的安装得是否得当直接关系到车子的转向性能,因此考虑一个好的安装方法是十分重要的。由于比赛规定禁止改动伺服舵机,所以我们采取加压的方法提高舵机的性能。实践表明,电压过高极易烧毁舵机里面的驱动三极管,我们只好使用较适宜的 5V 作为舵机的电源电压。还有,我们也试图提高舵机输入的 PWM 波的频率来提高舵机的性能,最后因为这样的改动极为容易造成舵机的烧毁,故使用较为常用的 50Hz 作为舵机输入的 PWM 波的频率。车辆的转向响应就存在这样一个平衡:即增加转向力臂可以提高转向的响应速度,但增加力臂也会导致车辆高速转向时车轮对舵机反向的作用力增加,一旦这个反向的力矩大于

17、舵机的扭矩,舵机就会因发热过度而烧毁。鉴于舵机性能所限的情况下,我们通过车子高速转向时所需的扭力计算出安全力臂约为 3cm,所以根据整车的实际情况,在尽量减少转向传动摩擦的前提下,我们选择了舵机直接传动转向传动轴的方法,力臂长度为 2.6cm。摄像头的安装摄像头是收集道路信息的核心部分,安装方法的好坏直接关系到车子的性能。因些必须选择一个合适的安装方法既可以让摄像头有足够广的视野,又不使车子的重心过高。为了使得整车的重心降低,摄像头的高度就要有所限制,但是随之而来的问题就是摄像头的视野收到了局限。如果摄像头放在整车的前方,盲区和视野区都将缩小,车辆的视野宽度和前瞻性都将受到影响;如果摄像头放在

18、整车的后方,盲区和视野区都将扩大,虽然能够提高车辆视野宽度和前瞻性,但是小车前的盲区也会成为影响车辆稳定性的隐患(如图 2.2.1 所示)。图 2.2.1 前置摄像头与后置摄像头的视野差异CMOS摄像头视野的调整摄像头的左右视野不对称,是一个不等腰梯形,因此必要在机械设计时做适当调整,如图所示:图3.2 摄像头可视范围示意图光电编码器安装编码器安装方法也有很多种,为了安装得牢固,我们采用刚性安装的耦合方法,直接采用齿轮带动编码器。本想在车模上直接打孔安装,但为了避免打孔打偏产生误差及可调性不好,我们放弃了这一想法。采用设计外部零件固定编码器的方法,最终设计了一个较好的安装零件,而且前后左右可调

19、,可以理想地安装编码器。如图3.3所示为未装编码器时的模型:其它部件的调节这要根据到以后的情况进行调试,改进。13软件设计高效稳定的程序是智能车平稳快速寻线的基础。本智能车采用CMOS摄像头作为寻线传感器,图像采集处理就成了整个软件的核心内容。在智能车的转向和速度控制方面,我们使用了经典PID控制算法,配合理论计算和实际参数补偿等办法,使在智能车达到了稳定快速的效果。系统程序主要包括初始化程序、图像采集及图像处理程序和PID速度控制程序等。下图为系统软件流程图。 4.1系统软件流程图由于摄像头每秒扫描25 帧图像,每帧又分奇、偶两场,先奇场后偶场,故每秒扫描50 场图像。采集每场需要的时间大约

20、为20ms,程序每采集一场图像执行控制一次,故速度控制也只能限定在20ms内调整一次。视频信号采集CMOS视频模拟信号经LM1881视频分离芯片分离出场信号和行信号,以场信号和行信号作为视频信号时序根据,使用S12单片机片内AD对模拟信号进行采集。 本队采用的CMOS黑白摄像头每帧信息共320行,其中场头消隐22行,场尾消隐11行(以LM1881分离出来的场信号跳变沿作分界),即有效的图像信息为287行。在单片机内存有限的情况下,如此大的信息量不可能完全被采集。根据摄像头安装位置和俯仰角度大小,以及考虑到图像的畸变等因素,本队采取跳行采集,所跳行数从近到远。根据需要共采集12行信息,每行采集5

21、2个点,从而形成12*52像素的图像数组用于路况分析。 为了检测起始线,采集到的一帧前面2行作为起始线的检测数据。按照本队摄像头的安装方案,从一帧的第100行到260行在路面上前后可以覆盖20cm的距离,按照4m/s的速度计算,摄像头每采集一帧图像(20ms)小车可前进8cm。所以能覆盖20cm的检测方案足以完成对所经过路面的路况检测,不会漏掉起始线。 图像采集摄像头采样机制摄像头主要由镜头,图像传感芯片和外围电路构成。图像传感芯片又是其最重要的部分,摄像头的指标(如黑白或彩色,分辨率)就取决于图像传感芯片的指标。摄像头通常引出三个端子,一个为电源端,一个为地端,另一个就为视频信号端(有的摄像

22、头多出一个端子,那是音频信号端)。电源接多大要视具体的单板而定,目前而言,一般有两种规格,6-9V,或9-12V 。视频信号的电压一般位于0.5V-2V 之间。摄像头的主要工作原理是:按一定的分辨率,以隔行扫描的方式采样图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度成一一对应关系的电压值,然后将此电压值通过视频信号端输出。具体而言(参见图4.2),摄像头连续地扫描图像上的一行,就输出一段连续的电压视频信号,该电压信号的高低起伏正反映了该行图像的灰度变化情况。当扫描完一行,视频信号端就输出一低于最低视频信号电压的电平(如0.3V), 并保持一段时间。这样相当于,紧接

23、着每行图像对应的电压信号之后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。然后,跳过一行后(因为摄像头是隔行扫描的方式),开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着就会出现一段场消隐区。此区中有若干个复合消隐脉冲(简称消隐脉冲),在这些消隐脉冲中,有个脉冲,它远宽于(即持续时间长于)其他的消隐脉冲,该消隐脉冲又称为场同步脉冲,它是扫描换场的标志。场同步脉冲标志着新的一场的到来,不过,场消隐区恰好跨在上一场的结尾部分和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。摄像头每秒扫描25 幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描50

24、场图像。奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。图4.2摄像头视频信号检测赛道相对车模中心的偏移量、方向、曲率等信息是实现车模自主沿赛道运行基础,获取更多、更远、更精确的赛道信息是提高车速的关键。LM1881是针对电视信号的视频同步分离芯片,它可以直接对电视信号进行同步分离,准确地获得所需的视频图像信号,使用者可根据需要对该同步信号进行时序逻辑控制。图4.3 LM1881应用原理图图4.3引脚2 为视频信号输入端,摄像头信号即由此输入LM1881 。引脚1 为行同步信号输出端,它输出的信号波形只是输入的摄像头信号在黑屏电位之下的波形的简单复制(对比图中b 和a)。引脚3 为场同步信号

25、输出端,当摄像头信号的场同步脉冲到来时,该端将变为低电平,一般维持230us,然后重新变回高电平(如图4.4中的c)。引脚7 为奇-偶场同步信号输出端,当摄像头信号处于奇场时,该端为高电平,当处于偶场时,为低电平。奇-偶场的交替处与场同步信号的下降沿同步,也就是和场同步脉冲后的上升沿同步(如图4.4中的d)。事实上,我们不仅可以用场同步信号作为换场的标志,也可以用奇-偶场间的交替作为换场的标志。视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等,因此,若要对视频信号进行采集,就必须准确地把握各种信号问的逻辑关系。LM1

26、881就是针对视频信号的同步分离而生产的,LM1881可以从0.52V的标准负极性NTSC制、PAL制、SECAM制视频信号中提取行同步、场同步、奇偶场识别等信号,这些信号都是图像数字采集所需要的同步信号,由此便确定采集点在哪一场,哪一行。本队的连接方式在前面硬件部分已经介绍了。图像采集原理摄像头视频信号端接LM1881 的视频信号输入端,同时也接入S12 的一个AD 转换器口(选用AD0)。LM1881 的行同步信号端(引脚1)接入S12 的一个带中断能力的I/O 口(选用IRQ 口,S12 带中断能力的接口除T 口外还有H 口、P 口、J 口和E 口)。之所以选用中断IRQ 口是因为,行同

27、步信号(即对应摄像头信号的行同步脉冲)持续时间较短,为了不漏检到行同步信号,若使用普通I/O 口,则只能使用等待查询的方式来检测到行同步信号,这会浪费不少S12 的CPU 资源。LM1881 的奇-偶场同步信号输出端接S12 的XIRQ口。采样思路,摄像头是采用隔行扫描的方式,奇场时只扫描画面的奇数线,偶场时只扫描画面的偶数线。摄像头每场信号的第23 行至第310 行为视频信号,即摄像头每场会扫描产生288 行的视频信号。为方便设计,我们忽略奇场和偶场在扫描位置上的细微差别,认为奇、偶场的扫描位置相同。因此,我们只需对这288 行视频信号中的某些行进行采样就足够了。假设每场采样27 行图像数据

28、,我们可以均匀地采样288 行视频信号中的27 行,例如采样其中的第14 行、第23 行、第32 行、第257 行、第266 行,即采样该场信号的第36 行、第45 行、第54 行、第279 行、第288 行(每场开始的前22 行视频为场消隐信号)。当XIRQ 口的信号由高变低或由低变高时,表明新的一场到来了,由此时开始对行同步信号重新计数。当IRQ 口每检测到一个上升沿,表明一个行同步信号刚过去,让计数变量增1。当计数变量变为36 时,表明第36 行信号(即第14 行视频信号)开始了,对此行信号进行采样,直到下一个行同步信号到来为止。保持对每个行同步信号的计数,直到计数变量又增加9 个变为4

29、5 时,开始对到来的第45 行信号(即第23 行视频信号)进行采样,直到下一个同步信号到来为止。如此下去,计数变量每增加7 个,就采样随后的一行视频信号,直到采样完第288 行信号(即第266 行视频信号),然后就结束了对该场信号的采样。S12 是每9 行视频信号才采样其中一行,因此在这每9 行中那8 行不需要采样的信号持续的时间内,可让S12 处理别的任务,然后,隔段时间检侧一次PT 口有没有接受过新的上升沿或下降沿(表明有新的行同步信号过去),并相应地给计数变量增1。这样,既不影响摄像头视频采样,也不耽误智能车定位系统中别的任务的执行。图像处理CMOS传回来的视频信号接入LM1881视频分

30、离芯片,分离出模拟视频信号的行同步信号和场同步信号,单片机根据这些同步信号来搭建控制时序,完成信号采集,AD转换。每场图像采集12行52个点,即图像被单片机采集后存于的数组中。采用跳变检测法,识别图像每行中的黑点,进而辨别出图像中的直道,大弯,急弯,还有小S弯等。黑线提取方法根据采集点电平高低来提取前方路面黑点信息,低电平(数值小)表示黑点,高电平(数值大)表示白色路面,通过提取黑点位置来判断路况。黑线提取思路有:a) 直接利用原始图像逐行扫描,根据设定的阈值提取黑白跳变点;这方法费时且容易受干扰。b) 黑线宽度有一个范围,在确定的黑线宽度范围内提取有效黑块,这样可以滤除不在宽度范围内的黑点干

31、扰;c) 利用黑线的连续性,根据上一行黑线中心的位置来确定本行求出的黑线中心是否有效;d) 图像是远处小近处大,所以黑线宽度范围和前后行黑线中心的位置差别都要动态调整;e) 求黑线中心时,因为近处的黑线稳定,远处黑线不稳定,所以采用由近及远的办法;f) 图像数据量大,全部扫描一遍会浪费很多时间,利用前面已经求出的黑线中心位置判断出黑线的趋势,从而推断出下一行的黑线大概位置,确定出扫描范围,避免整行逐点扫描,节约时间;g) 提取出整场所有有效行的黑线中心后,根据预先设定好的权重计算出黑线中心的加权平均,作为本场的黑线中心。本智能车通过片内AD每行采集52个有效点,其中赛道黑线采集1至5个有效点(

32、最远处1个点最近处5个点),以第25个点为中心,提取每场采集到的12行信息,用于分析赛道类型。我们采用的算法为,图像数组经过阀值二值化(大于阀值为0,小于阀值为1)后,从某一行的左边开始,向右搜寻,以此来寻找黑线的起始点。为了确保搜寻到的起始黑点非常可靠,则所搜寻的行就必须受干扰最小。由于距车子前端最近的一行图像数据受干扰几乎为零,因此将此行作为基准行进行搜索黑线起始点。搜寻黑线起始点的方法为,从该行左边开始搜寻从0到1 的跳变,为了保证该跳变就是黑线的出现,我们用四个点的信息来进行判断黑线出现,即,从左到右的四个像素点分别为0011(此算法还可以轻松滤掉蓝色地板带来的干扰,当拍摄到边界地板时

33、,蓝色也被二值化为1,这时的跳变为1100,不满足条件)当搜寻到黑线的出现时,再从出现1的那个列值开始,向右搜索1到0的跳变,如果搜索三个连续的像素点为110时,即出现1到0的跳变,此时还不能断定是起始点的出现,因为也可能是搜寻到的起跑线两侧的跳变。因此需要加上另一个限定条件,即两次跳变之间1的个数,即黑点个数、黑线宽度。由拍摄到的大量图像得出,25mm的黑线所占像素点最多为5个,因此加个的限定条件为,搜索到的最右边黑点所在列值减去最左边的黑点所在列值,如果此值小于7的话,则可以确定搜寻到了所需的黑线起始点。否则就视为没有搜寻到黑线起始点,黑线信息按上一场提取到的进行处理。黑线起始点已确定,如

34、果图像数组中的每一行都按上述方法进行处理搜索,将会浪费太多时间,以至于在20ms内无法完成所有控制。由于黑线的连续性,不难想到,可以借用数字图像处理技术中的边界跟踪方法,借助可靠的起始点,来对图像数据进行连续的区域扫描,以此来获得所需的黑线数组。具体方法如下:当黑线起始点确定以后,以此点为基点,向此点的上、左、右进行搜索为1 的点(因为我们搜寻到的起始点在图像最下方,因此区域扫描不能向下,否则会出现将黑线左右两个边界都搜寻出来,没有必要,而且会浪费时间)。如图3.6所示:图3.6 区域扫描对图中五个点搜寻的优先级,必须按图中所标的优先级顺序来进行搜索,否则的话,十字交叉就会过滤不掉,从而影响赛

35、道的判断。起初我们设置的优先级顺序为先左右后向上, 由于我们采取的方法是,得到的黑线数组,每一行中只保留一个黑点,如果一行中有多个黑点,下一次的将前一次的覆盖掉(这样有利于后面的舵机和速度控制)。如果向右为最高优先级,跟踪的结果,会被判断为弯道。从而使智能车走错误的路线,这是我们不想看到的。经过分析,将区域搜索的优先级改为如图3-6所示后,十字交叉被轻松滤过。我们的方法比较简单,直接对二值化后的图像进行提取黑线,没有滤波,去杂等处理。但由于赛道及场地环境的关系,杂点以及地板等干扰,都出现在图像的前端或边界,距中间实际黑线都有一定的白色底板的间隔,因此不用担心会搜寻到杂点。路径识别我们从图像的3

36、0行采到240行,其中每隔17行采集一次,于是可得12×52的数组,采完后对数组进行识别处理。第一,先利用单边搜索法寻找最近2行的黑点,若连续2行都没有发现黑点,则认为视野出界,什么也没有看到,这时停止搜索,直接进入控制程序,控制保持上次图像处理结果。若都发现黑点,则进行第二步。第二,第1第2行都发现黑点后,我们记下黑点的位置,然后继续后面行的黑点搜索,并记下黑点位置。若黑点位置与前面黑点位置偏差太大,我们记下有一跳变标志。这个跳变可能是起跑线也可能是干扰,先把标准位记下,后面进一步处理。第三,若没有跳变,则继续搜索下一行。若发现该行找不到黑点,而且前一点(row-1)的位置在图像的

37、最左或最右区域,这时我们认为这行以后已经离开了黑线,即黑线到头了,应该是弯,记下head=row+1.我们后面用到head来判别急弯和普通弯。第四,对跳变进行处理,先对跳变行进行起跑线判断。若是起跑线,则进行停车程序。若不是起跑线,则很可能是黑三角或十字交叉。我们用中值滤波滤波掉。四步下来图像基本处理结束。最后进行的是识别程序,根据赛道情况我们细分下面几种情况:1.直道、小S,急弯50、普通弯60.算法流程图当所有黑点的位置都落在中心线区域内时,我们认为此时图像显示的是直道或小S道,如图直道小S道识别图:直道识别图当head某个值时,我们进行急弯和普通弯的识别,通过电视机辅助调试,我们取值为3

38、.当head大于3时,我们认定为急弯,小于等于3为普通弯。如图所示:弯道的判别图起跑线的检测本智能车采集每帧信号的第1行至2行信息作为起始线的检测数据。根据对起始线特征(黑白黑白黑)的判断,当检测到某行的电平有“低高低高低”的特征时就认为是起始线。为了不产生误检测,通过判断连续3行以上起始线特征数据行才确认为起始线。当确认为起始线之后,马上屏蔽起始线检测2秒,以保证智能车顺利通过起。我们设定采集的行数为40行,假设图像前后端均匀分配,每行所占的实际距离为1米/40=2.5cm,假设智能车的速度为3米每秒,3m/s*20ms=6cm,6cm/2.5cm=2.4行。即一场图像处理完成后,起跑线会向

39、图像后端移2.4行,因此,只需在图像后端一定行内进行起跑线的判断即可。不会浪费太多时间。经过不断测试,我们选取离车子前方最近的20内进行起跑线的判断。1,图像经过二值化后,在后20行内,从最左端开始由下到上搜寻0到1 的跳变,当搜寻到后,再由1开始,搜寻1到0零的跳变,如果出现,并且1的个数小于某一个值,则认为此搜寻有效。此时可以借助黑线的连续性,由出现1的这一行,向列值变大的方向,即向右搜寻1到0的跳变,如果出现,并且黑点数,即1的个数大于某一值,则认搜寻到了起跑线的左侧一半。2,接着再从此行向右搜寻01跳变,即找赛道的中心黑线,此时也是有01,10两个跳变的出现才认为正确。上述两种情况都满

40、足时,还不能确定就是起跑线,因为当智能车斜着通过十字交叉时,也是出现上述两种情况,而且只有这两种。因此必须搜寻起跑的右半边。上述情况成立后,就可以确定右半边黑线的搜寻范围。因为智能车有可能偏离赛道通过起跑线,因此,我们将右半边的搜索设定在上述出现两次跳变的那一行的上下一个范围内,太大会浪费时间,太小刚可能搜寻不到。范围设定后,搜寻方法跟上述1方法类似,只是上下限被设定的非常小。如果搜寻到的情况满足,则此时就可以断定是起跑线的出现了。经过实际实验,我们的方法对起跑线的检测准确率极高。控制策略有了一定的路径识别算法后,要想小车快速稳定,我们需要很好的控制算法。系统根据识别到的路径信息进行有效的速度

41、控制。当检测到为直道时小车以设置最高目标速度高速行驶,当进入弯道时,以次高速行驶。识别到急弯时速度进一步降底。根据不同的弯道路况,速度控制也是有所区别。为了尽量提高车速,采用直道上设置最高目标速度,转入弯道立即减速,并把车速调整到过弯极限速度,保证小车顺畅过弯且不出跑道。要使小车高效完成比赛,则小车的速度将如图3所变化:(假设小车是依次经过直道,大弯,急弯,再小S弯,最后回到直道)。图3不同路况中小车速度变化图经典PID控制算法介绍在生产过程自动控制发展历程中,PID控制方式历史最久、生命力最强,其原理简单、适应性好和鲁棒性强等优点使之成为工业过程控制的主要技术之一。PID 控制原理框图如图

42、4.11 所示。图4.11 单位反馈的PID控制原理为了使小车能较好跟踪图3的目标速度,我们先采用常规PID算法。通过旋转编码器实现智能车的速度采样,进行闭环PID速度控制。通过速度反馈可以快速、有效的调节PWM的占空比,使小车跟踪目标速度。系统利用测速模块反馈的当前速度值,通过增量式PID算法进行调节。增量式PID算法的优点:增量式每次输出并不与整个过去状态有关,计算式中没有用到过去偏差的累加值,不容易产生较大的积累误差。增量式只需计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小。增量式PID的算式为: (2)。单神经元PID速度控制器仿真在实验中,该算法能满足一般的控制要求。但

43、当平均速度加大时,控制系统的响应速度不够,小车容易冲出赛道(未能及时刹车),再者,由于更换电池后电量变化较大,PID系数也要变化。所以系数非常难调,花了大量的时间才调出个比较理想的参数。就此我们引入单神经元PID控制算法。单神经元作为神经网络的基本单位具有自学习和自适应能力,而且结构简单、易于计算。而PID控制器的参数与被控对象联系密切,将两者结合组成具有自适应能力的单神经元PID控制器,可以实现电机负载变化时控制器参数的自动调节图4所示单神经元控制器结构图。图4单神经元控制器结构图图中转换器的输入为,输出为,经过转换器转换后得神经元的输入量、,即积分、比例和微分三个分量。且有: (3) (4

44、) (5) (6)设 为对应于的加权,为神经元的比例系数,。单神经元控制器通过有监督的Hebb学习规则调整加权系数。控制量为: (7) (8)单神经元PID控制器的控制学习算法为: (9) (10) (11)上面的式中,分别对应增量式PID控制器的3个参数, ,、为比例、积分、微分的学习速率。为了更清楚准确的比较两个算法的差异,我们在MATLAB中进行仿真比较,系统的输入,控制对象都相同。常规增量PID控制方式时,由于积分项容易产生饱和,影响系统的稳态性能,积分项Ki=0,其它参数分别为Kp=1.2、Kd=4,采样时间为20ms(由于受图像采集和处理影响,控制部分只能20ms运行一次)。在此条

45、件下,小车的速度给定波形如图5所示。(其中最高速为直道4.5m/s,急弯最小,为1.5m/s,普通弯和小S弯为2.5m/s和3.5m/s。)图5 小车给定速度波形常规PID跟踪结果如图6,其中蓝色是小车给定的目标速度,红色是实际跟踪速度。其中上升时间约为300ms左右,存在一个波动。图6 单纯PID控制小车速度波形当采用单神经元PID速度控制时设速度控制器PID参数的初始值为,;学习速率为0.2, 学习速率为0.01,学习速率为0.001,神经元的比例系数为0.6。同样小车在速度给定波形如图5所示时,图7为单神经元PID速度控制方式下小车稳态时速度波形。对图6和图7所示的试验波形做比较,可以看

46、出,采用了单神经元PID控制方式的控制效果好于单纯的PID控制方式,上升时间没有受到参数整定计算影响都是150 ms左右,有很小的超调量并且稳态运行时速度的稳定性非常好。再由图7可以看到当速度给定为图5波形时系统在单神经元PID控制方式下有很好的快速性和稳定能。图7 单神经元PID控制速度波形由仿真结果可以看出,采用单神经元自适应PID控制算法,智能车在加速或减速时能在较小的增幅或减幅范围内快速调节到目标速度,从而保证了模型车的平稳过渡而不影响整体速度。由于单神经元的连接权值可调,使得基于单神经元的PID控制器具有在线调整参数,自学习以及自适应的能力。在智能车速度控制中,单神经元PID优于常规

47、PID,能快速提高智能车运行速度。从而为智能车快速、平稳的前进、转弯以及制动控制提供更好的判断依据开发与调试好的开发和调试工具以及测试环境能够加快产品开发速度,提高调试精度,减少工作量。本章将对开发和调试工具以及测试环境作相关说明。本智能车在开发和调试中所使用开发环境为Metrowerks公司的集成开发环境MetrowerksCorewarrior IDE4.7和与之配套使用的调试软件 hiwave,调试器为清华大学工程物理系开发的 BDM,辅助调试工具有电视机、KT板、刻度尺等。通过以上各工具配合使用,再加上良好的测试环境,使得小车开发和调试能够顺利而快速地完成。 软件开发环境Corewar

48、rior IDE 是 Metrowerks 为其 DSP 和微处理芯片所推出的专用可视化集成开发环境,功能强大,除了能编译代码外还具有芯片仿真等功能。下面以一个简单的实例来说明使用 Corewarrior IDE 开发全过程。 BDM常见问题解决办法BDM for S12(TBDML)设计了跳线开关,允许用户对BDM for S12(TBDML)进行一些特定的设置,以此满足用户的特定要求。打开BDM for S12(TBDML)硬件包装盒,可以看到有3个跳线可以进行设置,分别是J4、J5和J6。 BDM引脚定义,跳线J4用于选择BDM电缆的信号定义。 默认状态为J4闭合。 当J4闭合(有跳线)

49、时,BDM电缆的信号定义如图1所示; 当J4断开(无跳线)时,BDM电缆的信号定义如图2所示。 目标板供电方式选择 ( 跳线J5和J6) 默认状态是目标板由5V外部电源供电。跳线J5、J6用于选择目标板的工作电压,以及供电方式。J5、J6跳线具体设置如表1所示。 表1  跳线J5、J6设置目标板工作电压设置类型跳线J5跳线J6目标板工作电压目标板供电方式1(默认)闭合(有跳线)断开(无跳线)+5V自供电2闭合(有跳线)闭合(有跳线)+5V由BDM供电(不推荐,因为USB供电不足)3断开(无跳线)闭合(有跳线)+3.3V自供电4断开(无跳线)断开(无跳线)无效【常见问题之一】正确安装了

50、BDM for S12(TBDML)的驱动程序和动态链接库后,并用BDM连接了目标单片机后,在Hiwave.exe的【TBDML HCS12】菜单中,没有出现“Flash.”项,无法对目标单片机进行调试。 解决办法:首先,用户应该确保目标板供电正常,BDM for S12(TBDML)默认的电源工作方式是目标板自供电;如果,还有问题,用户应该打开BDM的包装小盒,查看跳线J4是否已经短接,原因见上文。 【常见问题之二】驱动程序安装正常,跳线也没有问题,目标板也供电了,但BDM还是不工作。 解决办法:出现这一问题,最大的可能是,用户的CodeWarrio版本不对,没有利用CodeWarrio V

51、4.1以上的版本进行调试。安装高版本的CodeWarrio即可解决问题。 总结本文主要介绍了采用飞思卡尔单片机MC9S12XS128进行控制处理,基于CMOS摄像头进行路径识别的智能车设计。回顾整个过程,从最初的CMOS摄像头的选取, CMOS摄像头的安装位置的调整,主板电路的设计与检测,再到控制算法的编写和调试,最终设计出了相对稳定的赛车。从总体上看,赛车主要分为车体机械结构的调整,硬件电路的设计,软件算法的设计和调试。机械结构在机械结构的调整上,主要调整了舵机的摆放方式和摄像头的安装位置,也对赛车进行了大规模的改造。通过实际的测试和调整,使车已经能适应跑道并且达到了相对的稳定。但由于条件的

52、限制,所需的支架都要手工制作和打磨,对于摄像头的安装精度有一定的影响,左右平衡性稍差,在对赛车的定期维护,保养元件减少损耗上也有很多的不足,在将来的制作中一定要提高机械制作精度,把握好赛车的平衡性。使用专业的维护工具,在跑车的前后要做保养维护。硬件设计在硬件方面,制作电路板的过程中,我们首先利用对电路进行多次的仿真,减少了电路问题造成对原件的拆装和时间上的浪费。调试的过程也并不是一帆风顺,毕竟仿真跟实际还是有一定的区别的,做好的电路板不能正常工作的情况时常发生,失败了,就暗自打气,仔细检查每一个可能出现问题的环节,再失败再检查。这个过程是我们意识到,绝对不容许有半点的侥幸心理,每一个电阻电容,

53、铜线都可能是通往成功路上的拦路虎。 软件设计软件的算法上又可分为两个部分:舵机转向的算法和电机PID算法。视屏采集和数据处理是所有算法的基础,只有数据处理得好,对舵机和电机的控制才能精准。在视屏采集和对其的处理上我们采用黑线边沿提取的方法,然后对每一行的有效点进行连线,最后用最小二乘法求出斜率,得到舵机的输出值。这种数据处理算法在赛道难度不大时稳定性很好,但在赛道相距很近且赛道底色为深色是,有时会出现错误,现在我们将上述情况考虑在滤波中,使用相应的算法滤波,将这种情况完全处理掉。对电机PID算法影响较大的是测速的准确度,在使用了编码器后,测速的准确度大大的提高了,这就提高了PID的控制精度,所以在PID的参数上还要再下苦功,尽可能的提高PID的控制稳定,做到加减速响应快,响应精准。总之,通过比赛的方式让我们学到了许多,对于汽车的机械结构、光电传感器、软件设计有了深入的了解,并拥有了一整套较为完善的软件系统;也得到了很多的实践经验。把我们的知识运用到现实生活中去,这才是最重要的,我们所学的知识,所得到的实战经验是我们一生的财富。但是由于知识有限,对于各项内容的理解还不够,在算法上还有很大的提高空间。当然现在的设计方案还存在一些问题,我们暂时还不能够解决,希望在比赛中可以学到更多,在以后的比赛中得以提高。最后感谢学校为我

温馨提示

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

评论

0/150

提交评论