APP下载

基于CCD的自动循迹小车的软件设计

2012-07-26石冰飞周宏辉

自动化仪表 2012年1期
关键词:黑线循迹引线

杨 宁 石冰飞 朱 平 周宏辉

(上海电力学院电力与自动化工程学院1,上海 200090;国核自仪系统工程有限公司2,上海 200233;宁波市电业局3,浙江 宁波 315010)

0 引言

自动循迹小车作为一种移动机器人,主要应用于机场、仓库以及其他需要搬运设备的工况中。小车的基本结构由导向模块、驱动模块、微处理器、控制模块、通信模块、机械部分和电源模块构成。小车通过导向传感器获取路径信息,并按一定的精度要求沿正确路径行驶。目前,比较常用的传感器有激光传感器[1-2]、CCD 传感器和测距仪等[3-4]。

基于CCD的自动循迹小车采用CCD获取道路信息,通过图像处理辨别路面标志,并确定小车前方一定范围内的路况。综合分析道路和速度等相关信息,采用相应的控制策略来控制小车沿正确的路线前进。本文主要介绍所设计的基于CCD的自动循迹小车的软件系统,提出软件设计方面的关键问题,并探讨了图像信息的采集、处理和舵机控制策略[5-6]。

1 软件系统整体设计

本设计中,要求自动循迹小车在一定宽度的白色底黑色引导线的道路上自动行驶,并可根据变化的道路形状,按行驶要求自主导航。这就要求小车具备较强的自适应能力。自动循迹小车需要稳定快速行驶,兼顾速度和可靠性的要求,因此,设计方案必须考虑传感器信号采集处理、舵机和电机控制策略设计等因素[7]。整个软件系统包括图像信息采集和处理、舵机转角控制、电机速度控制和速度反馈。软件系统组成如图1所示。

图1 软件系统组成图Fig.1 The composition of software system

2 软件模块设计

2.1 图像信息处理

对道路形状的判断正确与否决定了小车能否实现自动循迹功能。虽然图像处理算法已经有很多成熟的算法和应用,但如何有效地采用符合具体实际使用的算法则需要经过实际测试才能确认。图像处理包括对CCD信息采集、道路状况的提取、路径的计算等。一般的设计流程包括图像信息采集、图像信息的处理、道路信息的计算和行驶路线的优化这4个部分。

图像信息采集时,单片机的端口与摄像头的图像灰度信息输出引脚相连。考虑到单片机的内存有限,在每张图像中进行隔行采集,对每行数据进行不间断保存,共采集到53行×74列的有效像素数据。剔除有误差的点,并考虑有效使用内存,只保存第2行到第41行,以及中间50列的像素数据,即实际图像为40行×50列的数据。

2.1.1 滤波算法

图像处理的滤波算法较多,主要分为时域滤波和频域滤波[8-9]。时域滤波常用的方法有平均值滤波、中值滤波、限值滤波等,频域滤波有傅里叶变换、小波变换等。考虑到频域滤波的运算量大,需要占用大量内存,本文采用时域滤波法。去噪滤波采用中值滤波与滑动平均值滤波相结合的算法。中值滤波的优点是能有效克服因偶然因素引起的波动干扰,对温度、液位等变化较缓慢的被测参数具有良好的滤波效果;滑动平均滤波的优点是对周期性干扰具有良好的抑制作用,平滑度高,适用于高频振荡的系统[10]。

在实际处理中,每次取一行中3个相邻列的灰度值,先判断这3个值是否有相同的灰度值,若灰度值相同则采用滑动平均值滤波,取平均值,并将第二个值修改为该平均值;若灰度值不同则采用中值滤波,并对这3个值进行排序,将第二个值修改为3个数值的中间值。该算法对一个像素点的过滤仅用到了相邻两个像素点的灰度值,计算量不大,占用内存不多,适合单片机的计算,且该算法相对来说较简单,时间复杂度不高,满足了小车对快速控制系统的要求。

滤波前后图像对比如图2所示。

图2 滤波前后图像对比图Fig.2 Image comparison pre-filtering and post-filtering

由图2可以看出,经过滤波后的图像更适合后续的判别和处理。

2.1.2 轨迹线提取

在滤波后的图像中,白色为小车的行驶范围,黑线为小车需要跟踪的轨迹,因此,轨迹线的提取即为黑线,本文采用跟踪引线的黑线提取算法。假设某时刻找到某行的黑线中心位置m,则下一时刻在下一行的m附近搜寻黑线的左右边缘,然后计算该行的中心位置。该方法的特点是始终在前一行的引线中心位置附近寻找下一行的引线位置,故称为“跟踪”引线的黑线提取算法。该算法的优点是在首行引线检测正确的前提下具有较强的抗干扰性,能更有效地消除十字垂直交叉黑色引线的干扰以及引线外黑色噪点的影响,始终跟踪目标引导线。

在试验过程中,发现该算法也存在一定的问题。由于是在连续邻域上跟踪引导线,因此,若第一行引线的检测位置和实际导引线偏差较大,将产生一连串的错误,甚至造成小车失稳。为防止这种现象的发生,可利用前面两行的引线中心位置来确定下一行的黑线位置。因为前两行同时出错的概率远远小于一行出错的概率,所以采用这种方法造成丢失引线的几率会大大减小。

此外,针对每行中的孤立噪点,采用计数法排除。如果连续黑点数小于某个阈值时,认为是噪声影响,而非实际的黑线,从而可以减少误判概率。

2.1.3 梯形失真

由于摄像头与地面之间存在俯角,导致采集到的图像并不是一个方形区域,而是一个近处区域小、远处区域大的梯形区域,图像出现失真。梯形失真示意图如图3所示。

图3 梯形失真示意图Fig.3 Keystone distortion

由图3可以看出,摄像头采集的图像发生了很大的形变。即使远处引线偏离道路中间很大,但是在图像上显示出来的仍有一个较小的偏差,从而使传感器出现误差,前瞻性大大减小,小车容易因控制不及时而冲出行驶范围。

在实际处理中,需要对图像进行失真补偿:当小车静止时,进行扫描区域的标定,测量出图像区域的实际位置,并与采集到图像中的位置进行换算,即可得到以下变换公式。

式中:y为在实际中图像位置的列数;x为摄像头采集到的图像的列数;k为梯形一条边的斜率。

在变换公式中,b的取值最为关键,由于每行之间的间隔不同,所以图像变换公式中不能采取同样的b值。最佳方法是对每行设定一个相应的b值,但对于行数较多的图像,每行都进行精确测定显然不可能实现。为了简化程序,对于该40×50的图像,将40行图像按每10行分为一组(0行 ~9行、10行~19行、20行~29行、30行~39行),每组采用相同的b值,即每组的中间行测出来的b值。这样既减少了测定每行b值的工作量,又比整个图像采用一个b值计算得到的数据准确性高。

将图像中每一行的最中间列作为基准列,这里取第24列为基准列,设定为0列。将左边的列作为负列,右边的列为正列。经过式(1)补偿后得到的每一行新的各列,在第0列左边的列,依次为第-1、-2、-3,…,第-n列,直到实际图像最左边的列为止;右边依次为第1、2、3、…、n列,直到实际图像最右边的列为准。由此得出图像中各像素点的实际位置。在进行梯形失真补偿后,计算出每行黑线的中心位置,并保存在一维数组中。这个数据就是每行的实际引线所在位置。

得到每行引线的实际位置后,为减少误差,再对每行的引线位置数据进行滑动平均滤波,取滑动采样值个数为5,每次修改第3个采样值为5个采样值的平均值。经过滤波后,每行引线的中心位置变得更加平滑,这就避免了由于引线提取部分的计算误差而引起的错误。

2.1.4 轨迹曲率处理

对于道路形状的判断,可以采用曲率法。找到每行黑线的中心位置后,再进行道路曲率信息的计算,即可得出道路的类型。简单的曲率计算公式如下所示:

式中:x1、x2和 x3为3个实际距离相等的行的黑线位置。

行驶路径类型可以分为直道、曲率小的S弯、曲率大的S弯和普通弯道4类。U型弯道和O型弯道可以认为是多个同方向普通弯道连接在一起,因此,都可以被认为是普通弯道。若计算出来的曲率q接近0,则说明该段道路为直道或者小S弯;若曲率q比较大,则说明该段道路为普通弯道;若计算出来的曲率q非常大,则说明该段弯道为大S弯。

在计算得到各段道路的具体类型之后,就可以进行小车行驶路径的优化。通常情况下,直道和小S弯道按照直线行驶通过;对于普通弯道,一般将小车行驶路线的曲率比道路弯曲程度大一点,尽量以微内圈的线路通过;对于大S弯道,需要将小车的行驶路线曲率比道路弯曲程度小一点,在不跑出道路的情况下尽量少走弯路,这样小车看到的弯道类型始终是大S弯道,即可以连续地走“小弯”路线通过,这样既节约时间,且行驶速度不会因为拐弯太大而过于减小,并保持匀速行驶。

优化前后路径如图4所示,虚线代表实际道路形状,带箭头的实线代表优化后的路径形状。

2.2 舵机转角控制

在循迹小车的行驶过程中,舵机转向控制是小车能够稳定行驶的一个重要因素,它对小车的速度有很大影响。若转向及时,小车就不需要在弯道处通过降低速度来通过弯道,从而保证小车始终保持匀速行驶。

小车的转向是根据信号线输入的占空比信号来控制固定在小车前轮的中央位置的舵机,以产生一个转角;再通过左右转向摇臂产生一个扭矩,驱动前轮转向。根据测出的最左、最右和中间位置的信号占空比的值,采用等分法来确定占空比和转角的比例。

舵机转角一般采用PID控制[11]。最简单的是采用P控制,通过设定合适的系数,就可以减小余差和超调,使小车始终保持在道路中间位置且不跑出道路。但由于舵机本身是一个大惯性大延迟系统,若只采用P控制,一旦控制不及时,就会产生较大的超调,很有可能冲出道路,或被迫采用牺牲速度的方法来换取稳定性。为改进控制效果,增加了D控制,这样就可以在出现偏差时作出较快反应,减少控制延时。经测试,加入D控制后,在过普通弯道时效果较好,可以使小车入弯时转向提前,切内道过弯,出弯时转向减少,但是在S弯道,尤其是大S弯道时,转过一两个弯后,就会引起小车与引线偏差增大,很容易跑出道路,引起系统的不稳定。D控制系数越大,大S弯道的稳定性越差。I控制作用可以消除余差,但是I控制是一个缓慢的控制,而小车的速度很快,在进入弯道时,前半弯控制作用不大,且对于连续的弯道,I控制变得较强,进入直道后很容易引起较大的超调,使小车冲出道路。在实际测试中,加入I控制后的效果并不好,在大S弯道处也没有明显的效果,而且会引起弯道进入直道时车体发生抖动,整体效果反而变差。所以,舍弃I控制,只采用PD控制。

由于面阵CCD可以获得更多的信息量,因此,可采用图像处理得到的曲率轨迹来进行辅助的控制。将道路曲率看作干扰,相当于在闭环的PD控制上增加一个曲率的前馈。这样就可以充分利用摄像头传感器的高前瞻性,预判前面道路的趋势。该控制效果明显优于简单PD控制的控制效果。

小车舵机控制模型如图5所示。

图5 小车舵机控制模型Fig.5 Control model of the steering engine of car

3 循迹试验

考虑到实际应用环境下对小车的平稳运行的要求,试验中对小车采用匀速运行。道路信息为二维水平平面,宽度最大为600 mm,窄道区域最大为450 mm。道路弯曲处最小曲率半径不小于500 mm,并且路径有交叉,交叉角为90°。试验中,小车采用不同速度匀速运行,并以偏离黑线的最大误差和冲出道路的次数为标准衡量系统性能,小车试验数据如表1所示。表1中:V为小车速度;ΔS为最大误差,ΔS=|S实际-S标准|;N为冲出轨迹次数。

表1 小车试验数据Tab.1 The experimental data of car

由表1可以看出,当速度逐渐增大时,小车偏离轨迹中心线的距离也随之增加,冲出整个轨迹的次数也明显增加。当速度不是很快时,小车能够很好地跟踪黑线。

4 结束语

近年来,自动循迹小车在不同场合的应用需求日益增加,以激光、CCD和电磁等作为道路信息采集方式的不同循迹方式不断出现。

本设计采用CCD摄像头获取道路信息,根据路面标志作为导引信息,通过图像处理来确定自动循迹小车的前方路况。本文介绍了一套较为适合基于CCD的自动循迹小车的信息处理和控制方法,并针对各模块处理方法和运动控制策略进行了分析和比较,包括CCD信息采集、道路状况的提取和路径形状判断等内容。控制策略上主要采用变参数、带死区的增量式数字PID控制器,使小车行驶更加稳定。在试验测试中,循迹小车以不同的车速在固定跑道上行驶,采用偏离中心的最大误差和冲出道路次数来衡量循迹小车性能。试验表明,本文所设计的小车能有效地识别和跟踪多种类型的道路[12]。

[1]Lü Yingjun,Xu Anling,Chong Cancan,et al.Application analysis of the linear CCD in the path recognition system1[C]∥International Conference on Integration Technology,Shenzhen,2007:151-154.

[2]宫纪波.基于红外反射循迹小车的传感器布局研究[J].工业控制计算机,2009,22(8):97-98.

[3]程志江,李剑波.基于遗传算法的智能小车模糊控制系统的研发[J].自动化仪表,2009,30(8):4-7.

[4]王子辉,叶云岳.基于CMOS传感器的智能循迹小车图像识别技术研究[J].传感技术学报,2009,22(4):484-488.

[5]卓晴,黄开胜,邵贝贝,等.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大学出版社,2007:45-68.

[6]田里,姚素英,周津.CMOS图像传感器的自适应降噪方法研究[J].传感技术学报,2008,21(9):697-701.

[7]杨枝灵,王开.数字图像获取、处理及其实践应用[M].北京:人民邮电出版社,2003:70-100.

[8]郎锐.数字图像处理学[M].北京:北京希望电子出版社,2003.

[9]甄红涛,齐晓慧.智能车参数自校正方向模糊控制器的设计[J].自动化仪表,2010,31(9):57-59.

[10]温阳东,王祥好.基于线阵CCD的智能小车路径识别系统[J].合肥工业大学学报:自然科学版,2009,32(9):1348-1353.

[11]黄伟,吴青,马育林,等.基于视觉导航的智能小车调速控制器设计[J].武汉理工大学学报:自然科学版,2010,32(6):103-106,135.

[12]梁佳海,黄雪燕.基于光引导的小车自动寻轨技术研究[J].钦州学院学报,2008,23(3):38-40.

猜你喜欢

黑线循迹引线
基于DFT算法的电力巡检无人机循迹检测系统设计
基于超导磁体的高温超导电流引线的传热优化
带引线的固体酒精
黑线
浅谈基于机器视觉和姿态检测的循迹智能车
虾背黑线真的特别“脏”吗
智能差分循迹小车设计
鞭炮迷宫
这也算海鲜
七巧数独