基于CMOS摄像头的寻迹智能样车的研究与实现
2013-04-16韩致信
□ 孙 备 □ 王 烁 □ 王 勇 □ 韩致信
兰州理工大学 机电工程学院 兰州 730050
1 概述
随着电子信息科技的快速发展,智能这个词充斥着生活的每一个角落,给人们带来了方便,也推动着世界快速发展。智能汽车是一种正在研制的新型高科技汽车,它不需要人驾驶,在运行过程中借助道路信息检测和控制系统作出控制决策,并由车辆的执行机构实现自动驾驶。本实验要制作一辆能够自主识别道路的模型车,智能样车采用Freescalel6位单片机作为核心控制单元,以CMOS摄像头作为路径检测传感器,对白色道路中的两条黑色导线进行识别,设计电机驱动电路、编写相应的软件以及装配模型车,选用合适的控制算法使其能完成自主寻迹并及时作出转向和速度调整。本实验对智能车运动模型进行了详细的分析,最终采用模糊PID来控制转向,速度闭环控制[1]。
PID控制由于结构简单、稳定可靠以及调整方便而成为工业过程控制的经典方法之一,其应用已有几十年的历史。单纯从PID各参数来看,比例环节能加快响应速度,提高系统调节精度;积分环节能消除系统稳态误差;微分环节具有对调节目标超前的预测功能,能改善系统的动态环节。由于智能车存在非线性、时变特性,使单纯的PID控制难以达到预期的控制效果,而模糊控制能有效改善这种情况。模糊控制在一定程度上模仿了人的控制,它不需要建立被控对象精确的数学模型,而将专家的控制经验、知识表达成语言控制规则,用规则去控制目标系统,但是它不能有效地控制稳态误差。本系统将两者结合起来,取得了比较好的效果[2]。
智能车在赛道上随不同赛道负载随时变化,如果单纯以固定的PWM占空比进行速度开环控制,存在控制周期长、速度响应慢的缺点,所以采用闭环控制。
2 智能样车的硬件设计
智能样车的样机及总体设计方案见图1、图2。
智能样车硬件设计主要包括电源模块、路径检测模块、直流电机驱动模块、转向舵机驱动模块、速度检测与调节模块等。
2.1 电源模块
智能车的硬件电路是由一节7.2V、2 000 mA 的镍镉充电电池提供,由于电路中不同模块所需的工作电压和电流容量不相同,因此,需要通过稳压和升压电路将7.2V的电池电压转换成各个模块所需的电压。
▲图1 智能车样机
▲图2 智能汽车总体方案设计图
2.2 路径检测模块
此模块的主要任务是通过摄像头采集当前的道路信息,使智能车可根据道路情况进行实时处理。第七届全国大学生智能汽车竞赛把赛道引线由原来的中间一道黑线改为沿赛道两边缘粘贴,如图3所示。这样更贴近现实中的道路,同时也增加了信息处理量,对比赛提出了更高的要求。
2.3 直流电机驱动模块
此模块的主要任务是对模型车后轮的直流电机进行驱动,设计和制作了符合智能车要求的驱动电路板。
2.4 转向舵机驱动模块
此模块的主要任务是对模型车的舵机进行驱动,控制智能车的方向和转向速度,设计和制作了符合舵机要求的驱动电路板。
2.5 速度检测与调节模块
由于实际路径存在多变性,为了使智能车平稳地运行,采用速度闭环控制系统,速度检测模块能够修正速度误差,提高智能车路径跟踪的准确性和实时性。
3 智能车的软件设计
3.1 路径信息识别处理
路径信息识别分为两步,第一步是图像采集,第二步是图像处理。最有难度的是图像处理,包括图像去噪、图像二值化、黑线提取以及寻迹算法。
图像采集使用OV6620数字摄像头 (见图4),供电电压为5V,它内置一个352×288的图像阵列,并具有高达60帧/s的图像捕捉能力。内部集成了A/D和视频分离模块,使采集程序简单,采集质量高,视频信号转换在内部进行,减轻了单片机的负担。为了减少单片机的数据存储量,增加其处理速度,采取隔10行一提取的方法,这样既能保证道路提取的需要,又减少了数据量[3]。
图像信息通过摄像头采集后存储在一个二维数组image[i][j]中,为了分析图像的特征,需要从图像中分离出对象物,从而把图形和背景作为分离的二值图像对待。可以根据下列程序进行图像二值化:If image[i][j]>t image[i][j]=0;else image[i][j]=1;通常用最后的二值图像中值为1的部分表示图形,值为0的部分表示背景,值t为阈值。图像二值化关键是阈值t的确定,可根据现场提取阈值进行设定。
▲图3 摄像头采集的图像
▲图4 OV6620摄像头
黑线提取采用边缘检测的方法。二维数组的行数和列数即为像素的图像坐标,若求出了黑线边缘的图像坐标,就知道了黑线的位置。黑线边缘的特点是其左、右两像素为一黑一白,两像素值差的绝对值等于1,而其余处的相邻两像素或全白、或全黑,像素值差的绝对值等于0。这样,只要对两数组每行中任何相邻两点做差,就可以根据差值的大小来判断此两点处是否为黑线边缘,还可以根据差值的正负来判定边缘处是左白右黑,还是左黑右白。黑线提取后,本实验采用黑线位置与中心的偏差E和偏差变化率Ec作为转向的输入量。
3.2 转向模糊控制算法
模糊控制是以模糊集理论、模糊语言变量和模糊控制逻辑推理为基础的一种智能控制方法,从行为上模拟人的思维方式,它对难建模的对象实施模糊推理和决策,实际上是一种非线性控制。该方法首先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号模糊化,作为模糊规则的输入,完成模糊推理,再将推理后得到的输出量加到执行器上[4]。
模糊控制器的原理见图5。
3.2.1 输入输出变量的确定
▲图5 模糊控制器原理图
智能车模糊控制采用二维模糊控制器,输入变量E、Ec,分别为赛车前端的传感器给出的赛车位置和道路中心的横向偏差和偏差的变化率,其输出变量U为赛车的前轮转向角,通过改变输出PWM占空比来改变。
3.2.2 模糊化
在模糊控制系统中,智能车所检测到的图像信息是精确量,要将这些精确的物理量转变成语言变量即模糊化。为了减少单片机的运算量,提高处理速度,本采集程序中,采用隔10行提取,将24行110列数据存储于二维数组 image[24][110]中,用来检测引导线的位置,由于本实验的赛道引导线处于赛道的两边,把两引导线的列数分别存储到2个一位数组black_x1[j]和black_x2[j]中,通过图像分析,赛道的引导线是连续的,因此利用 black_x1[j]-black_x1[j-1]的差值或black_x2[j]-black_x2[j-1]的差值就可以判断智能车是在直道还是在弯道,向左转弯还是向右转弯。根据不同的赛道情况,偏差E和偏差变化率Ec在试验中测得,偏差E的论域设定为[-95,95],误差变化率Ec的论域设定在[-10,10]。因此每次控制中,误差的变化值范围可将小车转动角度Angle的范围控制在[-35,35]内。为了兼顾系统的控制精度和响应速度,偏差E论域取11个模糊子集,偏差变化率Ec论域取5个模糊子集。
3.2.3 模糊规则库的建立
确定控制规则是模糊控制器设计的核心工作,控制规则的多少视输入及输出数量及所需控制精度而定。控制规则库常根据人们的经验得到,根据驾驶员驾车的经验,当车与轨道的偏差很大,且偏差的变化率也很大时,应使舵机向相反的方向转较大的角度;当车与轨道的偏差不是很大时,舵机应稍转或不转;当偏差较大而偏差变化率向相反方向很大时,说明偏差正在变小此时舵机可以不转[5]。根据以上控制经验可建立方向模糊控制规则表,将这些模糊规则以程序的形式写到单片机中,从而实现对智能车的控制。部分程序如下所示:
3.2.4 速度闭环控制及刹车功能的实现
速度闭环控制采用Bang-bang控制及PID控制,如果安装车速传感器,就可以实时测出赛车的速度,当速度与设定值之差过大时,赛车满占空比加速;当速度高于设定值时,占空比为0;当速度接近设定值时采用PID控制,这样赛车能够准确地控制在设定速度上,速度响应快。另外,理想的赛车速度控制应当是直道上以极限速度行驶,在即将进入弯道时速度降至最大安全速度过弯,出弯后继续全速行驶,为了提高直道上的车速并保证入弯迅速降速,赛车必须在最短时间内刹车,比较几种刹车方式后,最好的刹车方式是驱动电机反转,当电机与赛车后轮转向相反时,驱动轮与赛车行驶的方向相反,驱动轮与赛道的摩擦力使赛车迅速减速,另外还可以根据车速度传感器返回值和弯道识别来调整电机反转的时间,保证了赛车高速过弯和其稳定性。
4 结论
本文主要介绍了摄像头智能车的研究与实现。本次试验除了对以上内容作了研究,同时也对智能车模型作了很大的改进,包括重心的调整、前轮定位、车轮轮胎的处理等。经过对各个参数进行不断调整,实践证明,该智能车寻迹效果好,系统响应快,具备良好的动力性能和转向性能,平均速度能达到2.8 m/s。
[1] 任娜.基于16位单片机MC9S12DGl28智能车系统的设计[D].西安:长安大学,2008.
[2] 董秀成,杨栩.基于视觉的智能车道路检测与转向控制策略研究[J].西华大学学报,2010,29(2):135-138.
[3] 葛家斌.基于OV7620图像传感器的智能循迹系统的设计[J].电脑知识与技术,2011,7(33):8286-8287.
[4] 余永权,曾碧.单片机模糊逻辑控制[M].北京:北京航空航天大学出版社,1995.
[5] 孙绍杰.一种基于模糊控制的智能车转向控制算法研究[J].军械工程学院学报,2011,32(1):27-28.