鲁小雨
(东南大学自动化学院,江苏南京 211102)
随着汽车电子业的发展,具有自动识别道路功能的智能汽车成为业界研究的重点.本文研究的智能小车的制作设计以CMOS摄像头作为路径识别传感器,以直流电机作为小车的驱动装置,通过舵机来控制小车的转向.本文不仅说明了整个智能小车控制系统的硬件和软件设计与实现,同时讨论了为进一步提高小车的稳定性和行驶速度对小车控制算法的设计要求.设计出的智能小车可以通过实时对自身运动速度和方向的调整来“沿赛道”快速行驶.
我们设计的智能小车控制系统结构如图1所示.
图1 智能车控制系统结构示意图
如图1所示,该智能车控制系统以MC9S12XS128单片机作为控制系统的核心[1],通过黑白CMOS摄像头拍摄赛道图像并以PAL制式信号输出到信号处理模块(LM1881)进行视频同步信号分离,所得到图像和同步信号同时输入到单片机控制核心,单片机对信号进行判断处理后,通过改变PWM波脉宽实现对舵机转向的控制.舵机转向采用PD控制,通过光电编码器来检测车速并将速度反馈到单片机控制核心,用PID控制算法处理后得到的控制量去改变电机驱动模块的PWM波占空比,从而控制智能车的行驶速度.此外,控制系统还增加了路径识别的模块,对典型赛道进行决策控制,提高了智能小车的运行速度和稳定性.
智能小车控制系统硬件电路的总体设计本着可靠、高效、简洁的原则进行.系统的硬件电路包括控制系统核心电路、电源稳压电路、视频同步分离电路、电机驱动电路等.
设计中,我们选取MC9S12XS128单片机作为控制系统核心.该单片机的CPU外部总线频率为8 MHz,内部运算速度可达25 MHz,其内部寄存器组中的寄存器、堆栈指针和变址寄存器均为16位.其为112引脚封装,有2个8路10位精度A/D转换器,脉宽调制模块(PWM)可设置成4路8位或者2路16位.
在控制系统核心电路制作时,需要涉及一些普通的I/O口,单片机引脚规划如下:PS4-7,SPI下载; AN00-15,2个8路10位ADC;ANIN,输入视频模拟信号VIDEO;IRQ,输入视频行同步脉冲信号;PH5,输入奇偶场信号O/E;PWM5,舵机角度信号控制输出;PWM1、PWM3,输出电机控制信号.
硬件电路的电源为7.2 V的镍铬电池,除了舵机需要的电压是7.2 V,可以直接输出以外,CMOS摄像头的工作电压为12 V,需要一个升压的电路,而单片机的标准供电电压、LM1881供电电压、光电编码器的供电电压均为5 V,因此还需要一个降压稳压电路.
2.2.1 5 V电源降压稳压电路.
5 V电源降压稳压电路如图2所示.
图2 5 V电源降压稳压电路
由于后轮驱动电机工作时电池电压压降较大,电路设计中必须采用低压降串联稳压芯片,以保证系统工作的稳定性,本电路选用2940稳压芯片来实现稳压.
2.2.2 12 V电源升压电路.
12 V电源升压电路如图3所示.
图3 12 V升压电路
MC34063芯片是一个单片机双极型线性集成电路,专用于直流—直流变换器控制的部分.MC34063芯片内包含了温度补偿带隙基准源、控制振荡器、驱动器和大电流输出开关,能输出1.5A的开关电流,故选取MC34063设计升压电路,可使用最少的外接元件就能够构成开关式升压变压器.
智能小车视频信号中除了包含拍摄到的图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号等,因此,必须准确地把握各个信号之间的时序逻辑关系,才能实现对视频信号的采集.LM1881是针对视频信号的同步分离芯片,它可以从0.5~2 V的标准负极性NTSC制、PAL制、SECAM制视频信号中提取复合同步、场同步、奇偶场识别等信号,然后将这些信号送到单片机控制核心,这些信号都是图像数字采集所需要的同步信号.视频同步分离电路设计如图4所示,其中,C32和R24构成一个简单滤波电路,使视频信号更平稳,C31和R26构成了一个复位电路.
图4 视频同步分离电路
电机驱动电路如图5所示.
图5 电机驱动电路
MC33886是一款专用于电机驱动的高效单片集成芯片,它最高能够处理10 kHz频率的PWM调制脉冲,并且能够向负载电机提供高达5.0 A的电流.
在设计中,我们采用两片MC33886芯片并联驱动,这样不仅可以提高电机的输入电流,增大电机的实际功率,使电机在不增加动力源的情况下大大的改善其性能,还能够减少MC33886芯片的功耗.
由于智能小车采用CMOS摄像头作为传感器,因此图像采集处理和智能小车转向及速度的控制是整个软件的核心.软件系统中,图像信号采集算法采用直接边缘提取算法以及图像滤波算法得到黑线的位置,并通过动态阈值以实时适应比赛环境,同时,编写了赛道识别的算法,以实现对典型赛道的决策控制.智能小车舵机和电机的控制算法使用了鲁棒性很好的经典PID控制算法,配合使用实际参数补偿的方法,使小车在行驶的过程中达到了快速稳定的效果.系统软件设计的流程图如图6所示.
图6 系统软件设计流程图
图像采集算法[2]的流程图如图7所示.
考虑到实际赛道只是在白色KT板上布置黑色引导线,因此,可以采用隔行采集的思想来压缩图像的数据.经过实际实验发现,智能小车的图像传感系统在单一方向上只要有40个像素的分辨力就足够用了,其前22行视频为场消隐信号,为均匀采样288行视频信号,可以采样场信号29行、36行……,即每隔7行采集一次即可.
黑线采用直接边缘提取算法[3],识别黑线后,可以通过求平均值计算黑线的中心点.为进一步消除外界因素的影响和十字交叉线的干扰,必须对图像滤波加以矫正,具体步骤为:
(1)根据图像模型去噪.赛道的黑色引导线是绝对连续的,不可能出现全白行.当某一行求取的中心线位置与相邻的两行相差较大时,可认为该行错误,需采用中值滤波方法重新获得该行位置.
图7 图像采集算法流程图
(2)当出现两段黑线情况时,比如,赛道比较密集,或是“十”字交叉道,或是大“S”弯道,可保留最底下的一段,并增加路径识别的算法,给出适当的控制策略.
(3)由于摄像头可能相对于赛道存在一定的倾斜角度,因此采集到的图像可能存在一定的梯形失真,可通过添加一个线性修正值来消除,该线性补偿系数通过实验来确定.
智能小车的舵机转向和速度调节采用PID控制算法[4]来控制,它结构简单、稳定性好、工作可靠、调整也十分方便.
3.3.1 速度的控制.
速度控制采取的基本策略是弯道降速,直道提速.因此,控制中需要根据当前测速和路面弯道情况来决定当前速度,当前速度反馈值与当前设定速度存在的偏差,记为 e (k).那么就可以通过偏差值来调节当前的速度值.
在计算机上实现PID算法时,可通过数字PID调节器采用增量型算法来实现,增量式为,
因此,运用PID控制的关键就变为调整3个系数 q1,q2,q3,即参数整定,在具体PID参数整定时,我们采取了简化的扩充临界比例度法[4].
通过PID算法对速度的调整后,最终将经过图像提取算法处理后的黑线位置和对应的PID参照速度处理成二次曲线的关系,使得小车在直道和弯道相互过渡时加减速比较灵敏.
3.3.2 舵机转向的控制.
在舵机控制时,采用PD控制可以达到较好的效果,将P项认为是计算得到的黑线的位置和图像中心位置的偏差,而D项认为选定行的黑线位置与上幅图像中的黑线位置的差值.
我们在实际测试中发现,增加P项系数可以增强小车的沿线能力,实现小车的转向提前,达到切弯的目的,但是若P系数太大,也会导致大半径弧线切弯过度.加入D项系数后,可以使小车入弯时转向提前,出弯时转向减少,对大S弯切线很有好处.通过适当的调节PD参数可以使小车灵活的运行.
典型赛道如图8所示.赛道主要分为直道、小S弯道、急转弯、十字交叉等几种.对于直道,以及比赛中小于15°的上下坡,配合PID控制算法,具有较好的控制效果.但对于别的赛道可通过路径识别算法判断当前所处的赛道,针对实际情况做出相应的控制处理.赛道识别算法具体步骤如下:
图8 典型赛道示意图
(1)选取赛道上间隔一定距离的黑点,计算所选n个黑点的位置x相对于视场中心的平均位置x—= x/n.
(2)平均位置与视场中心绝对值之差表示了当前赛道的弯曲程度,其值的正负表示了是向左弯曲还是向右弯曲,其值越大表示拐弯半径越小.
(3)通过适当的选取黑点的间隔,可以达到比较明显的区分效果,能够顺利的识别出急转弯与直道,而小S弯道可能被识别为直道,这正是设计所希望的,即在小S弯道可以直接加速冲过去而不会偏出赛道.
(4)对于起点和十字赛道的识别可通过黑线赛道两旁黑线部分的长度来识别,通过适当的设定其宽度值的大小,可以顺利识别.
顺利识别赛道后,还需要对典型赛道做出相应的处理,其处理方法如下:
(1)起始线.在定时一段时间后执行判断程序(保证在起始的时候不会停下来),判断读入的包含了起始线的图像的场数大于一个给定值(由于摄像头的前瞻性,在终点之前的一段距离,摄像头就识别到了终点,为了冲过终点)就让电机输出0.
(2)急转弯.要求小车在急转弯处能够立刻减速,而PID调节难达到理想效果,可以在识别到急转弯时,让小车电机输出负值,从而使小车的后轮反转,这样可以保证小车速度迅速降下来.
本文详细说明了带CMOS摄像头的智能小车系统中硬件和软件的设计制作过程.图像采集时,采用了压缩图像的方法,通过提取黑线并实现了动态阈值的设定,利用PID调节使得舵机和电机输出得到了较好的控制,路径识别和决策控制的添加,保证了智能小车在弯道上平稳快速的行驶.
[1]王威.HCS12微控制器原理及应用[M].北京:北京航空航天大学出版社,2005.
[2]蔡波.视频实时图像处理系统研究及设计[J].电视技术, 2005,29(5):23-25.
[3]董翠敏.一种有效的图像二值化方法在CCD传感器图像信息处理中的应用[J].成都大学学报(自然科学版), 2009,28(4):1-4.
[4]Park K H,Bien Z,Hwang D H.A Study on the Robustness of a PID-type Iterative Learning Controller against Initial State Error [J].International Journal of Systems Science,1999,30(1):102 -135.
[5]王勤.计算机控制技术[M].南京:东南大学出版社,2003.
[6]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.
[7]杨加国.单片机C语言与汇编语言混合编程[J].成都大学学报(自然科学版),2008,27(3):1-4.