第八届飞思卡尔智能车竞赛摄像头组中南大学比亚迪金牛座技术报告Word文档格式.docx
《第八届飞思卡尔智能车竞赛摄像头组中南大学比亚迪金牛座技术报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《第八届飞思卡尔智能车竞赛摄像头组中南大学比亚迪金牛座技术报告Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
全国大学生智能汽车竞赛已经成功举办了七届,比赛规模不断扩大、比赛成绩不断提高。
通过比赛促进了高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。
[1]
从20012年9月开始,我们就开始着手准备这项赛事。
历时11个月时间,经历了机械构造、硬件方案、算法思路的不断创新,这些创新体现在设计理念上,也贯穿赛车制作过程的始终。
由于这些创新,赛车各方面综合性能得到提升,并且获得了良好的赛场表现。
本技术报告将详细介绍我们为第八届“飞思卡尔”杯全国大学生智能汽车竞赛而准备的智能车系统方案。
1.2赛车整体设计思路
1.2.1控制系统设计
智能车系统是一个相对复杂的反馈系统。
CMOS摄像头采集的赛道图像信息、光电编码器采集到的车体运行速度是反馈控制系统的输入量。
执行器(直流电机和伺服舵机)以及模型赛车构成反馈系统的装置。
飞思卡尔K60系列的32位单片机是系统的控制器。
在智能车系统的搭建到赛车快速、稳定地按照赛道行驶的整个过程中,反馈原理是我们分析问题和解决问题的基本原理。
1.2.2赛车结构设计
关于赛车的整体结构布局(如图1.1所示),我们主要思路是:
减轻车体重量,电路板模块化处理,尽量降低并合理调整车体重心。
为此,我们将电路板体积做到了最小,在双面板情况下集成度做到了最高;
选用轻质单板CMOS摄像头;
选用轻质碳素合金支杆安装摄像头;
尽可能的降低了摄像头高度;
微控制板与大功率驱动板分开安装。
图1.1智能车整体结构布局
1.3文章结构
技术报告分七个章节:
第一章节主要是对模型车设计制作的主要思路以及实现的技术方案概要说明,提出技术报告的行文框架。
第二章介绍了赛车机械改造的总体思路,并详细说明了机械结构调整情况。
第三章说明赛车系统的硬件设计实现。
第四章说明方向控制和速度控制算法设计。
第五章介绍仿真和调试的方法。
第六章是赛车的具体参数。
第七章总结了整个制作过程中的创新点和不足之处,提出了下届备赛过程的努力方向。
第2章机械结构调整
2.1整体思路
关于赛车机械结构的调整,我们主要从以下两个个方面考虑:
①车体重量:
比赛规则规定,智能车的驱动电机和传动机构不允许更改,意味着赛车的最大驱动力是一定的。
要想提高赛车的平均速度,必须提高其加速和制动性能,在驱动力一定的情况下,尽量减轻车体的重量是必要的,我们将电路板体积做到了最小,在双面板情况下集成度做到了最高;
②重心安排:
导引线弯道的最小半径为0.5米,要使得智能车能在弯道上高速通过,必须防止侧滑和侧翻,尤其是侧翻。
重心位置是影响侧翻的最关键的因素,所以设计中应尽量降低智能车的重心。
为此,传感器选用轻质CMOS摄像头;
微控制板与大功率驱动板放在了一起,以减小电路板体积,达到减轻重量的效果。
2.2底盘调整
在独立悬架下摆臂与底板之间可以通过增减垫片来调整底盘离地间隙。
垫片有1mm和2mm两种规格。
一片垫片不加,车前部离地间隙为9mm,故离地间隙的调整范围为9~12mm。
由于采用CMOS摄像头式布置结构,为保证车模高速行驶时的稳定性并降低重心,将底盘离地间隙设为最低9mm。
2.3后轮定位调整
调试中发现,在赛车过弯时,转向舵机的负载会因为车轮转向角度的增大而增大。
后轮定位可保证转向的稳定性,定位是由主销内倾、主销后倾、前轮外倾和前轮前束四个因素决定的。
2.3.1主销后倾角
主销后倾角是指在纵向平面内主销轴线与地面垂直线之间的夹角。
它在车辆转弯时会产生与车轮偏转方向相反的回正力矩,使车轮自动恢复到原来的中间位置上。
所以,主销后倾角越大,车速越高,前轮自动回正的能力就越强,但是过大的回正力矩会使车辆转向沉重。
通常主销后倾角值设定在1°
到3°
。
模型车通过增减黄色垫片的数量来改变主销后倾角的,由于竞赛所用的转向舵机力矩不大,过大的主销后倾角会使转向变得沉重,转弯反应迟滞,所以设置为0°
,以便增加其转向的灵活性。
2.3.2主销内倾角
主销内倾角是指在横向平面内主销轴线与地面垂直线之间的夹角,它的作用也是使前轮自动回正。
角度越大前轮自动回正的作用就越强,但转向时也就越费力,轮胎磨损增大;
反之,角度越小前轮自动回正的作用就越弱。
通常汽车的主销内倾角不大于8°
,主销内倾的调整应该保持在一个合适的范围,“一般来说0~8度范围内皆可”。
在实际的调整中,只要将角度调整为5度左右就会对于过弯性能有明显的改善。
如果赛道比较滑,可以将这个角度再调节的大一些。
在实际制作中,这个角度调节为8度左右。
对于模型车,通过调整前桥的螺杆的长度可以改变主销内倾角的大小,由于过大的内倾角也会增大转向阻力,增加轮胎磨损,所以在调整时可以近似调整为0°
~3°
左右,不宜太大。
2.3.3车轮外倾角
车轮外倾角是指通过车轮中心的汽车横向平面与车轮平面的交线与地面垂线之间的夹角,对汽车的转向性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。
在汽车的横向平面内,轮胎呈“八”字型时称为“负外倾”,而呈现“V”字形张开时称为正外倾。
如果车轮垂直地面一旦满载就易产生变形,可能引
起车轮上部向内倾侧,导致车轮联接件损坏。
所以事先将车轮校偏一个正外倾角度,一般这个角度约在1°
左右,以减少承载轴承负荷,增加零件使用寿命,提高汽车的安全性能。
模型车提供了专门的外倾角调整配件,近似调节其外倾角。
由于竞赛中模型主要用于竞速,所以要求尽量减轻重量,其底盘和前桥上承受的载荷不大,所以外倾角调整为0°
即可。
2.4舵机安装
2.4.1舵机延时分析
舵机的响应时间对于控制非常重要,舵机能够及时响应微控制器发出的指令并产生相应的动作可以保障智能车在高速行驶过程中能够及时转弯,不脱离轨道。
否则,即使控制算法再好,输出控制信号后,执行器(舵机)没有动作,则也达不到预期的控制效果。
例如,微控制器已经根据赛道信息发出了转弯指令,但舵机响应控制信号延迟,则会出现已经到了弯道跟前,但是舵机却还没有转动的情况,智能车在惯性的作用下依旧向前冲,等舵机转动时小车车身已经偏离出轨道了。
情况好的,在减速刹车后经过一段时间还能转回来,驶上正常的轨道;
情况坏的则会冲出赛道,导致摄像头检测不到正确的赛道信息,不能够继续行驶。
在之前的比赛中,有很多队伍都提到了舵机的响应会滞后,但是没有分析原因,导致有些队伍无法对症下药,不得不以牺牲速度为代价,来换取智能车平安完成比赛。
在此,我们对舵机延时的原因做一个比较详细的分析,以便做出相应的改进。
①微控制器输出周期延时
前面已经提及,我们利用K60微控制器内部集成的PWM模块产生周期一定,占空比(及脉宽)可调的PWM波形。
而控制PWM波周期和占空比是通过K60微控制器的一个16位的内部寄存器来实现的,它们是PWMPERx(PWMPeriod)和PWMDTYx(PWMDuty),其中x代表0~7通道的序号。
设定好这
两个寄存器的值后(具体的设置还与系统总线频率和其它寄存器的值相关),对应的通道就会一直输出一个固定频率的PWM波,直到改变这两个寄存器的值为止[5]。
当智能车检测到前方有弯道时,经过运算得出需要的占空比和所对应的寄存器的值,将这个值赋给PWMDTYx寄存器,随后输出PWM波的占空比就会发生相应的改变。
但是,当在软件中改变了PWMDTYx寄存器中的值后,输出PWM波的占空比并不会立刻改变。
PWMDTYx寄存器为双缓冲结构,由于K60微控制器内部硬件结构的原因,当在PWM信号输出过程中进行写操作时,写入的值将进入缓冲器,而不是直接进入该寄存器,直到通道被禁止或当前周期结束,计数器重新被写入(计数器回0)时才能进入该寄存器。
这样设计的目的,虽然是为了避免输出变化着的不稳定的PWM波形,但是却产生了延时,如图2.1所示。
假设我们产生的PWM波的频率是300Hz,即周期为3.3ms。
我们在软件中运算得出需要的占空比对应的PWMDTYx寄存器的值,并将其赋值给PWMDTYx寄存器,如果这一时刻在A点,即一个周期刚开始的时刻,那么我们运算得出的结果将要在缓冲器中保存3.3ms,在下一周期开始时才进入PWMDTYx寄存器,使占空比变成我们计算出的结果;
如果那一时刻刚好在C点,即一个周期即将结束的时刻,那么我们运算的结果能够立刻进入PWMDTYx寄存器,使下一周期的占空比发生变化;
而通常这一时刻则在B点,即3.3ms中的任意一点。
因此,这就是第一次延时产生的原因所在。
根据上面的叙述,当PWM波周期为3.3ms,产生的延迟时间为0~3.3ms。
我们将这个延时叫做微控制器输出周期延时。
图2.1PWM波占空比改变示意图
②舵机机械延时
由于舵机内部具有小型直流电机、级联减速齿轮组、位置反馈电位器等机械装置,因此不可能瞬间达到我们所期望的输出角度,这就是影响舵机控制特性的一个主要参数即响应速度,也叫做舵机输出轴转动角速度,这个参数一般以舵机空载时输出转盘旋转60°
所需要的时间表示。
大赛指定使用的舵机工作电压范围为5V左右,在4.8V时,响应速度时0.20sec/60degrees,在5.5V时,响应速度为0.16sec/60degrees。
而带了负载之后,响应速度还会略微下降。
由此可知,舵机转动一定角度有时间延迟,时间延迟正比于旋转过的角度,反比于舵机的响应速度。
例如,当舵机收到从0°
转动到60°
的信号时,要经过160ms才会达到我们预期的角度值。
我们将这部分延时叫做舵机机械延时。
2.4.2舵机的安装与控制延时解决办法
因此,舵机的控制输出延时由微控制器输出周期延时和舵机机械延时两部分组成,由上分析可知,延时最大时会达到将近3.3ms+160ms=163.3ms。
可以说,舵机的响应速度直接影响智能车通过弯道时的最高速度。
因此提高舵机的响应速度是提高智能车平均速度的一个关键。
根据以上的分析,提出以下几个解决办法:
1.提高PWM波频率。
指定舵机可接收的PWM信号频率范围为50–300Hz,对应的周期为20ms–3.3ms,通过上述分析可知,频率越高,微控制器输出周期延时就越短,因此我们在设置K60微控制器PWM模块输出信号时选用300Hz的频率,可以有效减少延迟时间。
图2.2舵机安装方式
2.提高舵机工作电压。
在上述分析中可以看出,工作电压越高,响应速度则越快,我们使用电池电压为7.2V,略高于舵机标定的工作电压范围,但是可以直接舵机供电。
如此一来,舵机的响应速度还可以进一步提高,大约为0.1sec/60degrees。
3.安装更长的舵机输出臂。
采用杠杆原理,在舵机的输出舵盘上安装一个较长的输出臂,将转向传动杆连接在输出臂末端。
这样就可以在舵机输出较小的转角下,取得较大的前轮转角,从而提高了整个车模转向控制的速度。
如图2.3所示,这种方法是通过机械方式,利用舵机的输出转距余量,将角度进行放大,加快了舵机响应速度[4]。
2.5摄像头支架的设计安装
赛车CMOS图像传感器的架设主要考虑以下几个因素:
1、确保CMOS图像传感器位置的居中且正对前方。
因为当CMOS图像传感器不居中,其采集进来的图像也不是居中的,而处理程序对舵机输出量是居中的,这样就会导致智能车在直道上也偏离赛道中央,即使可以通过程序校正,也会导致扫描到的图像面积左右不对称,会浪费一部分图像信息。
2、CMOS图像传感器的安装高度要足够高。
这样可以使得智能车在CMOS图像传感器的安装角度不是很大的情况下就能够前瞻到前方足够远处的路况信息。
因为当摄像头的角度过大时候,采集进来的图像形变过大,且图像中的干扰信息增多,对模型车的处理算法十分的不利。
而且当摄像头的安装位置较高时,所能扫描到的图像靠近智能车的部分范围较大,当智能车偏离赛道一定距离时,依然可以扫描到黑线,这样会便于图像的算法处理。
一般要求该范围为45cm宽。
3、CMOS图像传感器的安装是可调整的。
这样以便于CMOS图像传感器居中的校正,以及在实际调试中选择最佳探测角度,以及对CMOS图像传感器视野范围进行标定。
经过多次的实验和总结,我们对CMOS图像传感器的远度进行了标定,对CMOS图像传感器的采集的图像信息进行了中心位置的校正。
将CMOS图像传感器的视频信息通过视频采集卡传到计算机中,通过调节CMOS图像传感器各个旋转变量使得摄像头的图像位置居中。
校正后的摄像头能够采集到小车前方上底为60cm,下底为240cm,高为220cm的近似等腰梯形图像。
经过上述设计,前轮的静态侧翻极限是55度,后轮的侧翻极限是70度,而在赛道上侧滑极限一般不会超过50度,所以赛车在侧向加速度很大的极限情况下会先发生侧滑而不会发生侧翻。
2.6电路板安装
电路板应安装于智能车的最低的部位,并且固定于底盘。
由于电池的安装后移了6cm,考虑到赛车的空间,PCB板应设计成长方形以便于安装。
PCB设计形状示意如图2.3所示。
这个形状有利于电路板的安装,同时防止了前轮转角过大时与电池接触。
图2.3电路板的形状与安装
第3章
硬件设计
3.1总体方案
系统硬件电路主要由一块PCB板构成,集成了整个系统的逻辑电路和驱动电路。
主控制芯片采用官方推荐的32位微控制器MK60DN512,但速度很高且工作性能较稳定。
主电机驱动电路采用BTN7971B搭建的H桥电路,该驱动电路导通内阻小,能承载的电流大,相比之下赛车可获得更大的加速度和直道上限速度。
3.2电源模块
由于电源对高频干扰具有较强的抑制作用。
同时由于其低功耗特点,在进行电路板设计时,可以减少散热片的体积和PCB板的面积,有时甚至不需要加装散热片,方便了电路设计与使用,提高了稳定性能。
3.2.1电机供电与单片机供电分离电路
主电机在启动的瞬间和反转的瞬间会产生高达20A的冲击电流。
由于对赛车速度的控制采用的是bang-bang控制,因此在赛车的行驶的过程中始终存在较大的电流波动。
而主电机和单片机都是由单独电池供电,若在主电机电源和单片机电源系统之间不加任何隔离措施,有可能导致在赛车行驶的过程中单片机复位,这是绝对不允许的。
所以在主电机电源和单片机电源系统之间加了一极π型滤波器。
电路图如图3.2所示。
图3.1单片机电源和电机电源分离
3.2.2单片机供电电路
单片机电源模块我们选用TPS76850QD和LT1117芯片,输入电压用电池电压通过TPS76850QD先稳到5V再通过LT1117稳压到3.3V,最后给单片机供电。
其典型应用电路图如图
图3.2单片机电源电路
3.2.3摄像头供电电路
CMOS的工作电压为5V,所以单独采用一块TPS76850QD给CMOS供电。
图3.3CMOS电源电路
3.3传感器模块
3.3.1摄像头的选择
目前市面上常见的摄像头主要有CCD和CMOS两种:
CCD摄像头具有对比度高、动态特性好的优点,但需要工作在12V电压下,对于整个系统来说过于耗电,且图像稳定性不高;
CMOS摄像头体积小,耗电量小,图像稳定性较高。
因此,经过实验论证之后我们决定采用CMOS摄像头。
对于CMOS摄像头分为数字和模拟两种。
其中数字摄像头OV7620可以直接输出8路数字图像信号,使主板硬件电路的简化成为可能,且能够达到60帧/S的帧速率,只需要对其内部寄存器进行适当设置,因此,最终我们选择了CMOS数字图像传感器的方案。
3.2.2编码器测速模块
光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器,这也是目前应用最多的测速传感器之一。
其获取信息准确、精度高、应用简单。
采用增量式1024线光电编码器,其供电电压为5V,输出为小幅值的正弦信号。
为了将此信号放大整形,设计了信号调理电路,其基本原理是使用一个运放做成比较器电路,调节参考电压,使输出变为0/5V的方波信号,送入单片机进行运算。
3.4主控模块
MCU最小系统包括滤波电路,晶振模块,主控芯片为MK60DN512ZLV10。
K60,32位微控制器系列针对一系列成本敏感型汽车车身电子应用进行了优化。
K60产品满足了用户对设计灵活性和平台兼容性的需求,并在一系列汽车电子平台上实现了可升级性、硬件和软件可重用性、以及兼容性。
紧凑的封装使得这些器件适于空间受限应用,如小型执行器、传感器模块和转向柱集成模块。
3.5电机驱动模块
驱动单元是控制系统的重要组成部分,驱动电路经过改进,最终选取BTN7971B作为驱动芯片,其电路结构简单,负载能力强,为赛车的加速和制动性能以及上限速度得到了很大程度的提高。
电路如图3.4所示。
图3.4H桥控制电路
第4章
软件设计
系统硬件位于底层,是整个系统的基础,系统软件结构则根据硬件和控制需求来制定。
系统的基本软件流程为:
首先,对各功能模块和控制参数进行初始化。
然后,通过图像采集模块获取前方赛道的图像数据,同时通过速度传感器模块获取赛车的速度。
根据采集到的赛道信息,采用PD对舵机进行反馈控制。
另外根据检测到的速度,结合速度控制策略,对赛车速度不断进行适当调整,使赛车在符合比赛规则的前提下,沿赛道快速行驶。
4.1黑线的提取和图像中心的计算
4.1.1原始图像的特点及校正
在单片机采集图像信号后需要对其进行处理以提取主要的赛道信息,同时,由于起点线的存在,光线、杂点、赛道连接处以及赛道外杂物的干扰,图像效果会大打折扣。
因此,在软件上必须排除干扰因素,对赛道进行有效识别,并提供尽可能多的赛道信息供决策使用。
因为CMOS图像传感器所扫描到的图像是一幅发射式的图像,产生了严重的畸变,如果不进行校正,那么扫描到的数据的正确性将无法保证,那么对于道路形状的判定将会不准确,造成赛车判断失误,走的不是最优路径,严重时甚至冲出轨道。
因此,在进行赛车方向控制时,进行坐标的校正显得至关重要。
下面对坐标校正的方法进行具体的介绍。
由于CMOS图像传感器所扫描到的图像总是向外扩张,扫描到的图像并非为一个标准的长方形,在不考虑纵向畸变的情况下可以近似认为是一个梯形[7],严重影响到了数据采集的准确性,所以我们必须对扫描到的数据进行校正。
我们根据实验发现,越是靠近CMOS图像传感器的地方,扫描到的范围就越窄,离CMOS图像传感器距离较远的地方,扫描到的范围就越宽,因此,在相同的情况下,如果CMOS图像传感器在最近处和最远处采集到黑线的数字信号距离中心位置均是30的话,事实上最远处偏离中心位置的距离可能比最近处偏离中心位置的距离大很多。
按照赛车的安装方法,在扫描到的数字量相同的情况下,在第40行处偏离中心位置的距离超过了第0行偏离中心位置的4倍还要多,故必须进行校正,校正的方法就是在不同的行乘以一个不同的系数,系数大小的确定是先进行理论粗略的计算,然后再在事物上进行校正。
4.1.2黑线的提取和中心的计算
由于智能汽车大赛在第八届对规则进行了改变,其中最为明显的就是在小S弯处设置了长为一米的虚线,这就为我们黑线的提取增加了难度。
另外由于十字交叉也存在黑线不连续的特点,我们在黑线提取的过程中引入一次线性预测、黑线校验和一次线性插值等方法,这样可以将黑线不连续的边界也连接起来。
黑线提取算法的基本思想如下:
Step1:
首先确定图像二值化的灰度级阈值THRESHOLD;
对于左边界,如果左边两列灰度值均小于阈值并且右边一列大于等于阈值,则判断为左边界;
同理,对于右边界,如果右边两列小于阈值并且左边一列大于等于阈值,则判断为右边界;
Step2:
从图像的第0行开始遍历,直到连续三行找到图像的左右边界,置标志变量beginFlag为1;
否者如果遍历到图像HEIGHT-1行,表明提取失败,退出;
Step3:
当找到该行的左右边界时,同时记录下前三行已找到的边界(可以不连续),如果前一行已找到的边界所在行与当前行不相邻,则利用一次线性插值补全未找到边界的行;
否者,搜索下一行的左右边缘;
Step4:
利用前三行已找的边界信息,进行一次线性拟合出直线方程,并利用该直线方程预测改行边界的位置col,根据经验左右设定一个余量e,在[col-e,col+e]范围内搜索该行的黑线边缘,当搜索到边缘后,进行边缘校验,滤掉明显不是边缘的噪点;
赛道中心线提取:
由于智能车大赛在第八届赛道中心的黑线调成了赛道两边,而智能车想要在赛道上平稳的行驶,不冲出赛道,必须知道赛道的中心,为此,我们利用提取的左右两边的黑线坐标对赛道的中心进行了计算,基本思想如下:
(1)当该行左右黑线均已提取到时,则将左右黑线位置的平均值作为中心线的位置;
(2)当只有单边黑线找到时,则根据找到的边界平移半个赛道宽度作为中心线的位置;
(3)当左(右)边界的结束行小于右(左)边界的开始行时,如果按照步骤
(2)来计算赛道中心线的位置会出现中心线不连续的情况。
为了解决该问题,我们利用前半部分连续的中心线一次线性预测下半部分第一行的中心线位置,则下半部分的中心线位置以该部分第一行的位置来计算。
图4.1十字交叉
图4.2小S虚线
4.2方向控制方案
图4.3方向控制流程图
起跑线的判断:
全国大学生智能车竞赛规定,智能车必须能够识别起跑线,并在跑完一圈以后能够自动停止在3米以内的赛道中,否则在本来的时间基础上加上1秒,如果加上1秒那必须将速度加大很多才能挽回。
然而,当速度本来就较快时,由于智能车本身的结构原因,很难再进行提速,因为速度过快可能会导致翻车等一系列不利现象。
因此,对于起跑线的精准识别显得至关重要。
观察图4.9可知,起跑线的颜色从左到右依次为“黑”→“白”→“黑”→“白”→“黑”→“白”→“黑”,对应于微控制器内的数字信号即是0→1→0→1→0→1→0,因此我们可以利用这个特征来识别起跑线。
即当这部分图像中出现这样的颜色规律时就判定为是起跑线。
当跑完第二圈,第三次检测到起跑线时,表明已经完成了比赛,要在冲过起跑线后刹车,在三米范围内停车。
4.3分类进行方向控制算法
4.3.1直道的方向控制算法
对于赛道中的直道,是方向控制中最好处理的一种情况,因为只要小车没有偏离赛道,就可以不进行偏转,而当智能车偏离赛道时也只需要一个较小的偏转,让智能车能缓慢回归赛道就可以了,具体的方法是计算扫描到黑线的偏离中心线的平均值和黑线的斜率,再将这两个数分别乘上各自的比例系数,加上舵机偏向中心位置时需要给出的高电平的值,作为PWM波的高电平送入给舵