APP下载

基于线性CCD的智能小车循迹系统设计与研究

2020-08-13王信乐刘祚时

制造业自动化 2020年8期
关键词:黑线循迹卡尔曼滤波

王信乐,刘祚时

(江西理工大学 机电工程学院,赣州 341000)

0 引言

在工业自动化程度日益发达的今天,诸如AGV等工厂自动搬运货物的运输车越来越多的应用到工业生产中,所以提升优化工业生产自动化水平迫在眉睫。本课题源于中国机器人大赛中的旅游机器人项目,此比赛项目的目的也在于激发学生对未来实现工业生产自动化的兴趣,以研究设计旅游机器人为导向,为实现工业生产自动化提供理论支撑。

本比赛项目的要求是,循迹小车从比赛场地的起点出发,沿着赛道中间的黑线循迹行进,到达指定点完成规定的任务之后,再沿黑线行进,到达终点。目前此类循迹小车有很多,大部分也都能很好地完成循迹任务,但是仍会出现在赛道上特别是弯道处跑偏或跑丢的情况,本文则针对这一问题提出了具体的解决方案,该方案重点围绕路径信息的采集和处理方面进行研究,最后经过实地实验,跑偏率大大降低。

本文着重对小车的循迹进行研究,即小车如何快速准确地沿着黑色引导线行进,并在经过弯道时不偏离赛道。本循迹小车系统主要包括以下几个模块:电源模块、降压稳压模块、线性CCD模块、MCU模块、电机驱动模块、PID控制模块以及小车电机。实现整个系统的架构如图1所示。

图1 系统架构

1 线性CCD传感器

在竞赛用智能小车循迹系统中,有很多用于循迹的传感器,其中光电传感器应用最为广泛。但是线性CCD传感器对比前者的优点是:路径分辨率高,前瞻性强,可以更远更早地感知路径的变化,在小车本体跑偏之前修正行进方向,并且可以实时地监控路径的位置,及时纠偏。

本设计是基于TSL1401线性CCD传感器[1],该传感器有5个引脚,其中时钟CLK用于协调控制电荷传输和像素输出;串行输入SI用于控制数据输出序列的开始;模拟输出AO用于输出模拟电压值,其驱动时序图如图2所示。

图2 CCD驱动时序图

2 DMA技术

DMA技术,即直接内存存取技术。它在外设与内存进行数据传输时,不需要依赖于CPU的调控,而是由DMA控制器直接将外设采集的数据存入存储器。即在CCD传感器对路径信息进行采集时,利用DMA技术将采集到的数据直接传输给存储器。此时CPU不需对数据采集过程进行干预,而是把此过程全权交给DMA控制器完成,等输出设备需要数据时,再到存储器中读取。此技术大大节省了CPU的资源,在数据的传输过程中,不需要CPU的干预,所以它可以进行其他的工作,大大提高了整个系统的效率[2]。

此技术在循迹小车系统中的应用表现在于,当小车进行弯道循迹时,由于一般的查询和中断数据采集方式,是CPU边控制采集路径信息,边控制小车转向,其过程控制效率相对较低,但是小车的行进速度又很快,所以小车不能准确快速地转弯,很容易在弯道处跑偏。但是DMA技术解决了这一问题,图3是基于STM32F103单片机DMA控制器的具体程序流程图。

这里通过两种数据传输方式,即CPU干预下的数据传输和DMA控制下的数据传输进行耗时实验对比,验证使用DMA控制器传输数据能减小系统采样的响应时间,提高整个系统的效率。

图3 DMA程序流程图

实验中先取1280个数据放于源数组中,然后分别通过CPU调控和DMA控制器两种数据传输方式,将原数组中的1280个数据传输到目标数组中,并设置计时器分别记录耗时情况,最后将实验结果通过串口调试助手打印出来,如图4所示。由测试结果可知,1280个数据通过CPU调控方式传输耗时160μs,通过DMA控制器传输耗时115μs,数据传输效率提高了28.12%,证明了DMA技术的可行性,并且传输的数据量越大,效率提高越明显。

图4 耗时测试结果

3 数据处理

该循迹小车控制系统在运行时,首先进行初始化,然后由线性CCD采集路径信息并发送到STM32F103单片机,通过卡尔曼滤波和二值化处理得到黑色引导线位置。然后通过计算可以得出,当前小车的方向与黑色引导线之间的位置偏差,接着将此位置偏差信号输入到闭环位置控制系统,经过PID闭环位置控制算法进行调节,将调节后的信号再输入到驱动控制模块,实现对电机在速度上的控制,使小车沿黑色引导线行进。系统软件流程图如图5所示。

3.1 数据采集

图5 系统主程序流程图

该传感器中有128个线性排列的光电二极管[3,4],它在每一个采样周期内,会拍摄一行含有128个可视像素的像素点,然后通过模拟输出口AO将采集到的一行数据经过A/D转换之后发送给STM32单片机。如图6和图7所示为循迹的实际路径和采集到的一组灰度值图像,其灰度值范围是0~255。理论上白色的灰度值接近255,黑色的灰度值接近0,但是由于在实际采样过程中会受到光照条件的影响,在弱光环境下采集到的白色背景灰度值只有60左右。

图6 实际路径

图7 路径灰度采集图

3.2 卡尔曼滤波

由于在实际的比赛场地上,由光照条件不足带来的局部阴影和光斑,以及人员走动造成白色地面脏乱等不确定因素的存在,如图6中白色地面的污点造成采集到的路径数据中存在很多的干扰噪声,如图7所示。从图7可以看出,数据中仍存在的噪声,会干扰下一步数据的二值化处理,所以这里需要用到卡尔曼滤波算法[5]对数据进行降噪处理。卡尔曼滤波是一种算法,通过它能对含有噪声的数据进行处理,在平均的意义上,求得最接近真实数据的估计值。它被广泛应用于通信、航天、工业控制等领域。

卡尔曼滤波算法在此CCD采样的具体工作过程是,先根据前一采样周期的状态,估计当前采样周期的状态,这一过程称为状态预测;然后再根据当前采样的实际数据作为反馈,去修正估计的数据,这一过程称为测量修正。它就是一种利用反馈来控制实现对当前状态估计的算法,因此它能根据采集的数据的普遍性来剔除数据中的噪声。

卡尔曼滤波算法[6,7]分为状态预测方程式(1)~式(2)和测量修正方程式(3)~式(5),其中式(1)是向前推算状态变量,式(2)是向前推算误差协方差,式(3)是计算卡尔曼增益,式(4)是根据实际测量值进行修正估计,式(5)是更新协方差计算。

以上五式中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量,A和B是系统参数,P(k)是X(k)对应的协方差矩阵,AT是A的转置矩阵,Q和R分别是系统过程和测量误差的协方差矩阵,K(k)为加权因子,H是测量系统的参数,HT是H的转置矩阵,Z(k)是k时刻的测量值[8]。

由图7可以看出,观测值有所波动,又由于这里无法给出下一周期的预测值,所以这里根据理论基础并结合大量实验给出期望估计,建立预测模型如下:

式中x为像素点坐标,y为数字电压值。

然后由式(1)~式(6)得到卡尔曼滤波算法如下:

最后得出卡尔曼滤波结果,对比观测值,数据中的噪声被滤除,数据有了明显的改善。滤波结果如图8所示。

图8 卡尔曼滤波结果

3.3 二值化处理

由于初步获得的图像灰度值范围为0~255,但是在实际应用中只需判断出黑白两色即可,所以需要对初步得到的数据进行简化,即二值化处理[9]。这里首先需要设定一个阈值才能对数据进行二值化处理。对于阈值的设定,有固定阈值法和动态阈值法两种。固定阈值法是根据经验,取一个固定的数值作为阈值来对数据进行二值化处理;动态阈值法是对每一采样周期内的128个数据取平均,将此平均值作为阈值来处理数据。即:

式(15)中为动态阈值,为某一个采样周期内的128个数据。

由于实际比赛场地光照环境情况复杂,所以选用动态阈值法。此方法能有效抑制阴影、光斑以及赛道上的污点对数据采集的干扰。又由于动态阈值在每个采样周期内是变化的,所以它还能自适应光照强度的变化[10]。

确定了阈值之后,就在这128个数据中进行筛选,小于设定阈值的则为0,代表黑色;大于设定阈值的则为1,代表白色。这样就能将大量的数据简化成0和1,方便了单片机的处理,便于寻找黑线的位置。二值化处理之后如图9所示,相比图8显得更为简洁。

图9 二值化处理结果

3.4 黑线位置提取算法

经过二值化处理之后,路径信息被保存在一个一维数组a[128]中,此数组中一共有128个连续的0或1,0代表黑色轨迹,1代表白色赛道,只要找到数字0在这组数组中的坐标,就找到了黑线边缘位置,再计算黑线的宽度,便能找到黑线的中心位置。

这里假设小车在路径中间位置,为了提取黑线位置,首先,从左至右,依次检验数组中的128个数据,待找到第一个“0”时,记此“0”的坐标为,并令为“0”的个数,此时=1。然后依次向右进行检验,当检验到的数据为“0”时,自加1。程序运行框图如图10所示。由此就可以得到黑线在像素点中的坐标宽度值,那么黑线中点坐标的计算公式如式(16)所示,黑线位置如图11所示。

图10 程序运行框图

图11 黑线位置

3.5 方向控制算法

找到了黑线的位置之后,还需要设定一个判断是否跑偏的阈值。由于此组数据一共有128个,所以中点坐标为64,黑色线宽为,所以黑线的坐标宽度范围是[64-,64+]。判断依据和小车的行进情况如表1所示。

表1 判断依据及行进情况

3.6 实验分析

这里分别在强光环境和弱光环境下进行试验,如图12所示,两图分别是在强光和弱光条件下测得的路径背景灰度值、黑色引导线灰度值和动态阈值,可以看出动态阈值全部处于路径背景灰度值和黑色引导线灰度值之间,所以利用此动态阈值能很好地区分路径背景和黑色引导线。

图13所示两图分别是在强光和弱光条件下小车行进过程中CCD采集到的中线位置,这里将黑色引导线设置在一定范围内,即在小车不偏离所设置的范围内时,认为偏移量很小,不足以影响到循线效果,仍然执行直行程序。只有当小车偏离了这一设置范围,才进行左偏或右偏的矫正。但是这一范围的设置也不能过大,经过反复实验,这里将范围确定为正负7个像素点。即当Pm在区间[64-Ct/2-7,64+Ct/2+7]时,认为小车没有偏离中线。

图12 灰度值和阈值变化图

图13所示两图中两条直线之间的点表示小车沿黑色引导线行进,直线上方的点表示小车向左矫正,反之直线下方的点表示小车向右矫正。但是由于此实验中小车在拐弯处是沿黑色引导线逆时针行进,所以在整个实验过程中,小车执行向左矫正的程序次数大于向右的次数,表现在图中便是直线上方点的个数大于下方的个数。

4 PID闭环位置控制算法

在确定了小车是否跑偏以及左偏还是右偏之后,就要控制调节电机使小车的行进方向回正,但是具体调节电机多少转速能使小车回正方向,这里便需要PID闭环控制调节算法[11,12]。其数学模型为:

图13 CCD采集的中线位置图

式中e(t)为PID控制系统的位置偏差,u(t)为经过PID整定的控制信号,KP为比例系数,TI为积分时间常数,TD为微分时间常数。

具体到小车循迹的控制过程是,首先通过线性CCD测出小车相对于路径中心具体偏离像素点的个数,即将此次小车的实际位置与路径中心目标位置作差。然后将此偏离像素点的个数作为调节小车左右轮电机转速的依据,即PID控制系统的位置偏差e(t)。这里再预设一个偏差的阈值△e,经过反复试验,△e取值7。即如果位置偏差e(t)大于7个像素点,则将e(t)送入PID调节器中,输出系统控制信号u(t),然后转换成对应小车电机的转速,矫正小车的位置;如果e(t)小于7,则控制对象保持当前有效的输出值不变。最后重复上述步骤,直至接近或达到期望状态。控制原理框图如图14所示。

图14 PID控制原理框图

5 循迹实验

小车实物如图15所示,标号a为线性CCD传感器,其视角角度56°,安装高度10cm,与路面夹角45°。标号b为循线路径,如图16所示,图中黑线轨迹弯道是半径为20cm的1/4圆,转弯角度90°。该路径既能检验小车直线行驶时的循迹状态,也能考验小车通过弯道时循迹的准确性和机动性。

图15 小车实物图

图16 循线路径

实验中,调整小车以不同的速度V匀速行进,每一相同速度实验5次,并以小车车头偏离中心黑色引导线的最大距离△S和小车冲出赛道的次数N作为衡量小车循迹稳定性的标准。这里在采样过程中分别采用CPU直接调控和DMA控制两种数据传输方式进行对比实验,现将实验数据记录如表2所示。△S'和N'表示在CPU直接调控下小车车头偏离黑线的最大距离和其冲出赛道的次数;△S和N表示在DMA控制下的最大距离和冲出赛道次数。

表2 小车实验数据

由表2实验数据可以看出,通过DMA控制下的采样相比于CPU直接调控下的采样小车循迹效果更好。当小车的行驶速度小于0.5m/s时,采用DMA控制器的采样方式能够使小车更好地沿黑色引导线行驶并准确地通过弯道。小车的弯道循迹测试如图17所示。

图17 小车弯道循迹测试

6 结语

经过实验表明,在循迹上线性CCD传感器相比于传统光电传感器,具有更高的前瞻性,能更早地感知路径的变化,提前矫正前进方向;DMA直接存取技术减少了CPU处理任务的数量,在数据传输测试中,使系统的采样效率提升28.12%,并且传输的数据量越大,效率提升越明显,确保了小车能快速准确地转过更大的弯道;卡尔曼滤波使数据中的噪声大大减少,更便于数据的二值化处理;PID位置控制算法使偏离矫正有了依据,能使系统快速响应且不超调。通过理论论证及实地实验,均验证了方案的可行性,达到了预期要求。

猜你喜欢

黑线循迹卡尔曼滤波
基于深度强化学习与扩展卡尔曼滤波相结合的交通信号灯配时方法
基于DFT算法的电力巡检无人机循迹检测系统设计
黑线
浅谈基于机器视觉和姿态检测的循迹智能车
卡尔曼滤波在信号跟踪系统伺服控制中的应用设计
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
虾背黑线真的特别“脏”吗
基于有色噪声的改进卡尔曼滤波方法
智能差分循迹小车设计
这也算海鲜