基于闭环控制算法和PID优化算法的智能小车软件系统设计

2016-05-14 10:33李碧月
软件工程 2016年9期
关键词:智能小车PID控制闭环控制

摘 要:在全国大学生“飞思卡尔”杯智能汽车竞赛的背景下,设计出一种能够自动识别路径、跟踪赛道双边引导线的智能小车软件控制系统。智能小车以飞思卡尔(Freescale)公司的MC9S12XS128为检测和控制核心,根据不同的环境状况动态确定黑白二值化阈值之后,对摄像头采集到的图像进行处理,从而准确判断不同类型的赛道,进一步控制舵机和电机。使用舵机转向闭环控制算法和电机速度闭环控制算法,结合经典的PID控制算法,实现直道加速、弯道减速的优化。智能小车最终可以在黑色双边引导线的白色背景赛道上自动识别路径行驶。

关键词:智能小车;MC9S12XS128;图像处理;闭环控制;PID控制

中图分类号:TP311 文献标识码:A

Abstract:Under the background of "Freescale" cup national college students smart car competition,design a control system software.Under this system,the smart car can automatically identify paths and trace the track of bilateral guide line.Tracking smart car system is designed based on the control chip of system of Freescale MC9S12XS128 MCU.After determine the black and white binarization threshold according to the different environmental conditions,run a series of processing on the images captured by the camera.Then,make an accurate judgment in the different shapes of the circuit to further control of steering gear and motor.Using steering gear steering closed-loop control algorithm and motor speed closed-loop control algorithm,combined with the classic PID control algorithm to achieve optimization of car was straight-line acceleration,deceleration in bend.Smart car could eventually automatically identify route which has the bilateral guide line of the white on black background and run steadily.

Keywords:smart car;MC9S12XS128;image processing;closed-loop control;PID control

1 引言(Introduction)

智能车控制系统的设计以汽车电子为背景,涵盖自动控制、模式识别、传感技术、计算机、机械与汽车工程等多门学科,是一项新兴的综合性技术。智能车系统是智能汽车的迷你版本,二者在信息提取及处理、控制系统构成和控制方案整定方面有诸多相似之处,可以说智能车系统是智能汽车良好的实验平台。

智能车系统主要包括三个大部分,分别为车模总体机械结构、硬件电路系统、软件算法控制系统。如果说硬件是智能车行驶的基础,那么程序算法就是灵魂。高效的程序则是智能车高速平稳自动寻迹的基础。

2 系统总体设计(General design of system)

2.1 概述

智能小车控制系统采用飞思卡尔公司的16位单片机MC9S12XS128为检测和控制核心[1]。以COMS数字摄像头OV7620为路径检测传感器,以欧姆龙500线编码器为速度检测传感器,根据摄像头检测到的赛道信息[2],以及编码器采集到的小车速度信息,基于XS128单片机通过智能小车软件控制系统对小车进行舵机转向和电机驱动的控制,使智能车系统达到所需的稳定性及快速性要求,从而实现小车的智能化行驶,如图1所示。

2.1.1 需求规定

(1)在小车功能方面

最终完成的基于摄像头传感器的智能小车,要能够做到在此软件控制系统的支撑下,完成按规则绕赛道运行一周的任务。在准确识别赛道并稳定运行一周的基础上[3],期望小车的速度越快越好,即完成比赛的用时越短越好。

(2)在小车性能方面

第一,要求智能小车软件控制系统应具有良好的运行效率,行驶速度尽可能快,能够快速准确判断出不同类型的弯道,并及时躲避在赛道上的障碍物;第二,应具有良好的灵活性,使行驶速度、自身调整角度都可以灵活改变;第三,应提供良好的测试模式,使设计人员可以方便的观察、调整的小车运行模式;第四,应具有良好的可扩展性,从而为日后升级系统提供方便。

2.1.2 运行环境

2.2 系统各模块设计

2.2.1 基于核心板MC9S12XS128的主程序(main函数)设计

(1)流程图(图2)

PLL_Init( ):初始化锁相环函数;

SCI_Init( ):串口初始化函数;

PIT_Init( ):PIT定时器中断初始化函数;

PWM_Init( ):脉冲宽度调试模块初始化函数;

PH_Init( ):初始化单片机PH口函数(用于接收编码器测速信息);

OV7620_Init( ):初始化摄像头函数(用于OV7620信息采集)。

2.2.2 图像采集模块

(1)流程图(图3)

(2)定义

存储原始图像矩阵的二维数组:Image_Data[ROW][LIN]。

(3)解释

摄像头是智能车的眼睛,我们将采用数字摄像头进行赛道采集,在采集时,我们利用行、场中断进行数据采集。在每次捕捉到40个行中断之后,触发一次场中断,其中,在行中断的中断子函数中利用单片机读出图像数据。由于单片机的处理能力有限,所以不能对摄像头的一场图像中所有行的所有像素点都进行处理,但为了获得理想的赛道信息和足够的前瞻量,需要通过多次实验,需要选择出合适的行和每一行中需要采集的像素点数。最终,将所采集的数据存在一个二维数组中,得到原始的图像矩阵,以便后续处理。

2.2.3 图像处理模块

(1)流程图(图4)

(2)定义

BEST_THRESHOLD( ):确定最佳黑白二值化阈值函数。

(3)解释

在图像处理模块,为了能够做到识别不同光线环境下的赛道,首先需要确定一个合适的黑白二值化阈值,确定阈值后,在保持原始图像矩阵大小不变的前提下,对其进行均值滤波,在此算法基础上对原始图像进行二值化处理,从而达到降噪的目的,最终通过摄像头的上位机获取到赛道的二值图像。

2.2.4 电机驱动模块

(1)电机驱动模块采取速度闭环控制原理,结构示意图如图5所示。

speed_error=setV-backV:本次速度的偏差值=设定速度值-编码器读回的小车实际速度值;

last_speed_error:上一次的速度偏差值;

pre_speed_error:上上次的速度偏差值;

derta_M:经过PID控制器处理过后的速度改变量。

(3)解释

取三次速度偏差值,经过PID控制器的处理,得到处理后的速度改变量,作用在设定速度setV上,通过调整过后的PWM波来控制电机的转动,使小车在不同类型赛道上行驶时有一个合适的速度。

2.2.5 舵机转向模块

(1)舵机转向模块采取运动方向闭环控制算法,结构示意图如图6所示。

Error[S_ROW]:原始偏差数组;

angle_error=E2:本次角度的偏差值=处理后的偏差值E2;

last_angle_error:上一次的角度偏差值;

pre_angle_error:上上次的角度偏差值;

derta_S经过PID控制器处理过后的角度改变量。

(3)解释

通过获取到的赛道信息,提取出赛道的中线,与图像的中线进行比较,将每一行的偏差值存储在数组Error[S_ROW]中,使用加权算法得到偏差值E2,取三次角度偏差值(指E2),经过PID控制器的处理,得到处理后的角度改变量,作用在舵机的参考零点上,通过调整过后的PWM波来控制舵机的转向量。

2.2.6 调试模块

为了能够对编码器采集到的小车速度以及摄像头采集到的赛道图像进行检测,还需要完善调试检测模块。实际使用中,我们将成品蓝牙模块与USB-TTL模块连接并连接至电脑,将另一个蓝牙模块连接至单片机的UART1组,即S2、S3口,该口定义为TXD、RXD,通过串口SCI接收与发送数据,接受到的数据我们通过上位机软件,串口助手进行接收。所接收到的图像如图7所示(以十字路口的识别为例)。

3.1 PID控制算法

3.1.1 PID控制算法简介

PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量[4],对被控对象进行控制,故称PID控制器,原理框图如图8所示。

在计算机控制系统中,使用的是数字PID控制器,控制规律为

式中,:采样序号,=0,1,2,…;:第次给定值;:第次实际输出值;:第次输出控制量;:第次偏差;:第次偏差;:比例系数;:积分时间常数;:微分时间常数;:采样周期。

3.1.2 增量式PID

由上文中公式可得

得增量式PID控制算法公式

可以看出由于一般计算机控制系统采用恒定的采样周期T,一旦确定了KP、KI、KD,只要使用前后三次量值的偏差,即可由上式求出控制增量[5]。

3.2 图像采集时如何躲避消隐区

在摄像头进行图像信息采集时会产生消隐区失真的问题,故使用延时函数,通过延时作用来跳过图像采集时的消隐信号,保证图像不失真。

3.3 黑白二值化阈值的确定

要想从原始图像数组中分离出白色赛道、黑色边界和蓝色的底布,必须在程序上设置一个灰度的阈值,当像素点灰度值大于该阈值时为白色赛道,当像素点灰度值小于该阈值时为非赛道,所以要将此值设置在蓝色底布和白色赛道之间。但是由于比赛场地灯光,以及底布蓝色深浅的不同,所界定的阈值也应该相应的改变,所以采用动态阈值可以大大提高小车对比赛环境的适应性[6]。

在此采用最大类间方差法:对原始图像矩阵,记为前景与背景的分割阈值,前景点数占图像比例为,平均灰度为;背景点数占图像比例为,平均灰度为。图像的总平均灰度为;从最小灰度值到最大灰度值遍历,当使得值最大时,即为分割的最佳阈值。

3.4 图像降噪时的均值滤波算法

为了使获取到的图像信息更加准确,需要对原始的图像进行降噪处理,在这里我们使用均值滤波算法。均值滤波的基本原理是用平均值代替原图像中的各个像素值,即对待处理的当前像素点[7],选择一个小窗口(如一个3×3的矩阵),该窗口由其近邻的若干像素点组成,求窗口中所有像素点的平均值,再把该均值赋予当前像素点,作为处理后图像在该点上的灰度,即为该模板中包含当前像素点在内的像素总个数。

在具体实现过程中,我们将在原始图像矩阵中依次取3*3的矩阵,采用九宫格形式[8],将每一次计算的均值赋给该矩阵的左上角元素,得到处理过后图像矩阵,根据动态设定的阈值进行二值化操作,得到最终的赛道的二值图像。

3.5 电机驱动模块Set_V的确定

由于在不同类型的赛道上小车行驶的速度不同,故设定值Set_V不能始终为一个固定值参与到电机控制环中。

解决方法:考虑到直道速度快,弯道速度较慢,建立Set_V

和E2之间的二次曲线的模型关系,即,其中,,使用MATLAB仿真结果如图9所示。

3.6 赛道中线的提取

前提:规定白色为1,黑色为0。具体操作:提取二值化赛道图像(图10)的一行,从该行数组的第一个元素开始判断,当连续的1达到一定个数时(暂时规定10个1为标准),则第一个检测到的1所在的位置确定为Left;从该行数组的最后一个元素开始倒序判断,同样,当连续的1达到一定个数时,第一个检测到的1所在的位置确定为Right,每行数组均进行此操作,将每一行的所在的位置进行存储,得到赛道中线信息,并分别与图像的中心线位置做差,得到的数据存储到Error[S_ROW]即为原始偏差数组。

3.7 对原始偏差数组的加权处理算法

小车速度大小V对图像远近处偏差值权重大小的影响:车速慢时舵机不用提前打角,只需利用近处的图像便可跑好,但是车速快时,由于舵机要提前打角,所以即使远处的图像不够真实准确,对于快速行驶的小车来说远处的图像也显得很重要。

因此,当获取到原始偏差数组Error[S_ROW]后,需要通过加权处理,对数组中不同行的元素乘以不同的权值,最终得到较为准确的偏差量E2,该权值分配需满足如图11所示的关系。

图11 对原始偏差数组的加权处理示意图

Fig.11 The deviation of the original array weighting diagram

4 结论(Conclusion)

经过调试和检测的结果证明,在基于MC9S12XS128的智能车软件控制系统的作用下,小车能够在黑色双边引导线的白色背景赛道上自动识别路径平稳行驶。通过PID控制算法的优化,实现了直道加速、弯道减速的设想;在图像采集时,使用延时函数在一定程度上解决了图像消隐区失真问题;均值滤波的降噪处理对于采集到的图像进行了进一步的完善;闭环控制算法更是保证了小车行驶的稳定性和快速性。相信通过进一步的探索与完善,这个智能小车软件控制系统会得到越来越广泛的应用。

参考文献(References)

[1] Zhang.L.,Q.H.Song.Design of Smart Car Servosystem Based on Camera[J].Manufacturing Science and Technology,2012:5923-5927.

[2] Jiang.Z.J.,M.F.Wang,P.Guo.The Road Information Video Capture and Processing Research for Smart Car Based on CMOS Camera[J].Proceedings of 2009 International Conference on Information,Electronic and Computer Science,Vols I and II,2009:96-101.

[3] Ye.M.J.,C.H.Hu.Design of Electromagnetic Smart Car System[J].Mechanical and Electronics Engineering III,2012:343-346.

[4] 张飞飞,杨雪松.基于MC9S12XS128单片机的路径图像识别智能小车[J].甘肃科技,2013(13):12-14.

[5] 陶永华.新型PID控制及其应用──第一讲PID控制原理和自整定策略[J].工业仪表与自动化装置,1997(04):60-64;46.

[6] 孔岩,董奥,王勇.摄像头型智能车的赛道类型处理[J].电子世界,2016(11):134.

[7] 王惠华,等.基于二值图像连通域提取的图像滤波方法[J].北京印刷学院学报,2015,06:39-41.

[8] 李旭东,廖中浩,孟娇.基于CMOS摄像头的智能车控制系统设计及实现[J].吉林大学学报(信息科学版),2013(04):414-418.

作者简介:

李碧月(1996-),女,本科生.研究领域:电子信息工程.

猜你喜欢
智能小车PID控制闭环控制
基于LMI的过渡态主控回路闭环控制律优化设计
适用于厚度在线测量的水压闭环控制系统
智能车竞赛中的闭环控制算法应用分析
基于STC89C51智能小车的移动家居平台的设计
内模控制在火电厂主汽温系统中的应用
基于HC—SR04超声波传感器的智能避障小车设计
《计算机测控技术》课程中PID控制部分的教学探讨
常规PID控制和常规模糊控制的比较
智能安全防盗探测小车
一种基于SPWM的逆变电源并联运行参数设计及控制策略仿真