韩彩霞,黄艺,罗子波
(武汉文理学院,湖北武汉 430345)
全国大学生智能汽车竞赛是教育部自动化专业教指委主办,多加半导体公司协办的全国性大学生高规格赛事。采用校内赛、赛区赛直到全国总决赛的形式[1-2],该竞赛是一个非常好的探索自动驾驶技术的平台,竞赛要求是参赛队员研制一台无需人为干涉,可以自主完成各种任务的寻迹小车。其设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械、能源等多个学科的知识,对学生知识融合和实践动手能力的培养具有良好的推动作用[3-4]。
智能车主控采用英飞凌TC264 单片机,使用神眼MT9V034 灰度摄像头采集赛道信息,对赛道图像进行二值化处理,转换为黑白图像,便于进行赛道元素的识别与处理[5-6]。
辅助传感器为电磁传感器和陀螺仪传感器,结合摄像头图像可以更加准确地处理赛道各元素。TFT 彩屏可以将摄像头采集的图像显示在屏幕上,并且可以显示补线后的图像效果以及电感采集信息,为了方便上位机查看图像,主板预留蓝牙接口留做人机交互使用[7-8]。系统整体结构框图如图1所示。
图1 系统整体结构框图
智能车电源系统是由锂电池组提供电能,相比以前镍铬电池,锂电池的能量密度更高,大幅度降低了车身重量。锂电池选用松下21 700 高倍率电池,其内阻只有12 mΩ,瞬时放电电流可达50 A,持续最高放电电流可达30 A。在两节电池串联的情况下,智能车启动或快速切换速度过程中电池组输出电压跌落不会超过1 V,系统供电稳定性得到了保障,整车供电原理图如图2 所示。
图2 供电原理图
智能车最小系统电源的纹波越小越好,纹波严重会导致地线电平不稳,其结果往往是系统突然复位[9-10]。并且英飞凌TC264单片机功耗较大,需要保证1 A 电流,电源管理芯片直接由电池组电压转3.3 V供电时,电源管理芯片内部将消耗5 W 的电能,这些电能将以热能的形式散发到周围介质中,众所周知半导体在高温情况下性能会急剧下降,温度过高时甚至会烧坏电源管理芯片,所以先采用LM2596 降压再使用线性稳压器ASM1117 降压到3.3 V,其优点是线性稳压器发热量低,最小系统供电更稳定。
舵机响应速度与输入电压成正比,为了获得较好的转弯效果,将舵机供电设计为电压可调模块,使用的电源管理芯片为AS1015。电磁采集与调理电路和摄像头模块对纹波要求较高,并且这两个模块耗电不大,所以直接选用TPS73xx 线性稳压芯片为其供电,该款芯片优点是具有低纹波和低压差的性能。
智能车主要采用摄像头获取赛道灰度图像,Otsu 是一种图像二进制分割阈值的方法,最早是在20 世纪70 年代末提出的。根据灰度将图像特征分为前景和背景两部分,背景和前景之间的差异越大,图像两部分之间的差异就越大,前景和背景被分割[11-14]。
智能车辅助传感器为电感,其左右两端电感对弯道元素比较敏感,两个内八电感对环岛电磁线切线方向比较敏感,中间的竖直电感和水平电感则对三岔路口比较敏感,利用这几个特征加上图像的判断,就可以准确的识别各元素。采集的电感初始值跳变比较大,所以采用均值滤波方法连续采集五次电感值后进行冒泡排序,剔除最大值与最小值后再取平均值。
智能车采集的图像原始大小为188×120 像素,对于分辨率可以适当缩放到合适大小,优点是可以减少单片机的处理时间,但同时较小的分辨率会导致图像细节丢失,因此,需要选择合适的缩放比例才能既不丢失图像有效信息,又能够保证单片机处理速度。经过多次分析、调整选取94×60 像素分辨率大小图像。并确定图像主跑行为第33 行,第一次扫描边界是从中心列第47 列开始左右扫描,随后往上扫描的中心列是由之前确定的中心列往左右扫描。变中心列扫描的好处是避免小车在大弯道中心列丢失,导致扫描边界出错,赛道基本图像如图3 所示。
图3 赛道基本图像
紧接着对扫线后边界异常情况进行补线处理,主要分为近端补线和远端补线。在近端只丢一边边界的情况下,可以用另外一边边界加上或减去赛道宽度,对于左右都丢线的情况取中心列为中线。在远端只丢右边边界情况下,用上一行右边界加上左边界的上一行与当前行的变化值,就可得到右边界,远端没有使用赛道宽度直接补线是因为赛道宽度数组是在直道时取的值,对于远端有曲线变化趋势的情况,用上一行与当前行差值可以更好地体现赛道曲线变化。
补线完成后每行的中线值可以看作一个点,这些点有时离散程度比较大,为了利用好中线数据,可将这些点进行最小二乘法及一次方拟合得到斜率,再结合中线可以使小车在大弯道的输出值增大,增强小车转弯力度。
坡道的识别无非是让智能车平稳而快速的通过坡道,其根本在于坡道识别后处理器对智能车的速度控制,以下为智能车行驶状态分析以及检测策略[15]。坡道元素识别方法主要是基于陀螺仪采集的俯仰角度,当俯仰角大于设定阈值时可判定当前为坡道。小车处于上坡状态时,摄像头翘起容易扫到赛道以外的物体引起误判,此时需关闭其他元素判断,小车下坡时车身俯仰角小于设定角度阈值,小车需进行减速处理,避免下坡后速度过快冲出赛道。
电感在智能车上主要是辅助摄像头判断圆环及三岔路。首先确定电感的排布,经过多次尝试,选择使用6 电感排布方案,排布方式如图4 所示,需注意的是电感之间间隔不能太近,避免产生互感现象,导致数据采集有误。
图4 电感排布方式
电磁杆上左右两端电感对弯道元素比较敏感,两个内八电感对环岛电磁线切线方向比较敏感,中间的竖直电感和水平电感则是对三岔路口比较敏感,利用这几个特征以及图像进行判断,就可以准确地识别赛道各元素[16]。
采集的电感初始值跳变比较大,所以需要进行滤波,在连续采集五次电感值后进行冒泡排序,剔除最大值与最小值再取平均值。
对于环岛元素的识别,由于电磁线在环岛入口与直道叠加,导致中间电感采集值非常大,并且在识别左圆环时左八字电感数值明显大于右八字电感,结合赛道宽度和左边界丢失可确定当前元素为环岛。
环岛采用椭圆补线方法,这里只介绍左圆环入环处理思路,右圆环同理。左环岛入环是左边界丢线,右边界正常,并且左八电感值明显大于右八电感值,中间横电感值暴增,确定当前元素为环岛。然后确定左边界的特殊列,并向右平移10 列,以40 行开始向上搜索,搜到黑点,用公式计算出椭圆短半轴长度,长半轴是固定值为70,椭圆中心也是固定值为(60,0),入环只需要补1/4 即可,代入椭圆参数方程就可以算出一条边界,入环补线示意图如图5 所示。
智能车在完成入环后需要清除补线,以免补线过度使小车撞到环岛内路肩上。补线完成的标志是左边第二列连续白点数小于24,左右断点搜索原理就是运用递归算法。出环补线也是采用椭圆补线,与入环不同的是短半轴稍微扩大一些就可以顺滑出环。
三岔路是第十六届比赛首次新加元素,比赛道上铺设两圈电磁线,第一圈电磁线经过三岔路入口时先走三岔路段的一边,电磁线再次经过三岔路口时走另外一边,所以电磁传感器在三岔路口正上方时,中间横电感与竖直电感小于特定值,图像上赛道左右丢线行数大于特定值就可以判断当前为三岔路入口。然后进行单边拉线,其补线方法是用直道赛道宽度一半作为右边界。这样补出来的中心线往左偏,就可以顺利进入三岔路段,补线示意图如图6 所示。
图6 三岔路入口补线示意图
入三岔路后小车采集的电感值明显小于正常赛道电感值,那么进入三岔路段后可以锁定小车在三岔路的状态,出三岔路时,由于两根电磁线汇聚,小车采集的电感值突增,再结合图像进行单边拉线就可以控制小车顺利使出三岔路段。
智能车开始时必须在车库内发车,为了更好地控制小车的全程运行状态,设计状态控制函数,发车后只需要将舵机输出值固定,车身转过40°后摄像头可扫描到赛道,再解除舵机固定赋值交由单片机进行自动处理。入库是第二次扫到斑马线赋值固定打角,车身在旋转一定角度后刚好完全进入车库内,停车就可完成此次比赛。由于斑马线特征独特,只需单独编写函数进行识别,选取图像第38 行为识别行,白黑跳变与黑白跳变相差不多则判定为斑马线,具体实现代码如下:
小车运行过程中,需要实时收集车辆的各种参数信息,因此,设计快速调参是非常重要的。
主要是环岛及三岔路入口和出口信息,因为需要判定电感值,需要现场取值,以往常用的方法是在赛道上记录电感值大小,然后在程序对应位置修改常量值,经编译器编译完毕后下载到单片机中,这样非常浪费比赛时间,还有可能因为参数输错导致小车无法正常识别赛道元素。
英飞凌TC264 自带96KB EEPROM,可以将各元素需要判断的阈值以采集到的当前实际值存入对应扇区,当小车运行到刚才存储元素附近时就满足判断条件,省去了修改编译下载环节,大大节省了时间,在每次进行变量存储时一般遵循先擦除后写入的规则,避免数据没有擦除就写入而导致存储数据有误。调参界面如图7 所示。
本设计基于TC264 单片机控制核心,通过摄像头传感器采集赛道图像信息,电磁传感器和陀螺仪传感器辅助判断各元素,主控芯片分析小车当前的赛道元素,进行补线处理,能够识别出直道、弯道、环岛、三岔路及坡道,并且对于较难的元素环岛采用椭圆补线处理,很好地解决了小车入环出界问题,对于新元素三岔路采用单边赛道宽度拉线的方式,实现了道路信息采集、元素分析和自动寻迹功能的智能小车的设计。