基于激光传感器的智能车路径识别算法研究
基于激光传感器的智能车路径识别算法研究
作者:张迪洲;李增彦
随着社会的高速发展, 智能车的应用领域越来越广泛,智能水平也越来越高,给我们的工作和生活都带来了极大的方便。 结合传感器技术和自动驾驶技术,智能车可以出色的完成人们下达的任务,比如汽车夜间安全辅助驾驶、无人值守的巡逻监视、物料的运输、消防灭火等任务。在“飞思卡尔”杯全国大学生智能汽车竞赛中,常见的路径识别系统分为基于光电传感器和基于摄像头传感器两种方案。 路径识别系统作为智能车的“眼睛”,是整个控制算法的基础,具有举足轻重的地位。 其设计得好坏与否,直接关系到智能车的整体性能。 文中主要针对激光传感器路径采集系统提出了一种识别算法。
1 智能车整体设计方案
在“飞思卡尔”杯智能车大赛中要求智能车利用基于单片机的控制系统在封闭的跑道上自主循线行驶,实现自主识别赛道和自主决策控制等功能。 智能车作为一个完全自主的系统,首先要完成对路径信息和速度信息等的获取,然后通过对舵机和直流驱动电机的控制,实现智能车的自主行驶。
整个控制系统以 MC9S12XS128 单片机为核心, 辅以路径识别模块、电源管理模块、转向舵机模块、电机驱动模块和速度采集模块等,并通过相关的机械结构设计,使整个系统有机的结合在一起。 在路径识别模块中采用的是激光传感器,布局方式为“一”字型。
2 智能车路径识别算法
路径识别系统的算法部分按照功能可主要分为赛道信息采集、数字滤波和赛道识别 3 部分。
2.1 赛道信息采集
路径采集系统一次采样得到的检测结果是关于赛道的一维信息,只能获取到黑线相对于智能车的位置,而不能识别赛道模式和赛道的变化趋势。设计中将连续若干次一维检测结果组合成一幅二维“图像”,实现由一维信息向二维信息的转换,即将单片机连续若干次检测结果中黑线的位置记录下来, 组成一个一维数组,便可以从横向和纵向两个方向共同分析黑线中心位置的特点和相互关系,进而识别赛道模式,获取黑线的变化趋势等赛道信息。
2.2 基于赛道连续性的数字滤波
路径识别系统在实际路径信息的采集过程中,会因传感器自身性能和赛道环境等原因出现干扰信号。 由于赛道的黑色引导线具有连续性(此时暂且忽略虚线赛道部分),若智能车前进速度为 2 m/s,单行采样周期为 3.5 ms,则连续两次单行采样之间的距离为 7 mm,赛道模式不会产生很大的突变,所以利用理论采样值中黑线位置的连续性进行数字滤波。 即一个采样周期内,在不出现十字线赛道和起跑线赛道的前提下,黑色引导线不会跳跃 2 个传感器(30 mm)以上的距离。
具体滤波流程如下:
首先计算本行检测结果中“1”的个数,即检测到黑线的传感器个数。 若结果中没有“1”,则认为本行采样不成功,用上行采样值代替本行采样值。 再判断上一行的采样值中“1” 的位置是否出现在最左(右)端的传感器。 若是,则进入从一侧偏离赛道后的处理程序。 即一直保持上一行采样值中“1” 的位置,直到本行采样中“1”的位置只出现在左(右)端前 4个传感器中,才认为本行的采样值有效。
如果本行检测结果中“1”的个数不为零,继续判断“1”的个数是否小于等于 2 个。 若是,则“1”值正确;如果“1”的个数大于 2 个,则进入十字线和起跑线判断程序。 若符合十字线和起跑线的特征,则“1”值正确;若不符合,则根据赛道的连续性判断每个“1”值是否正确。 正确则保留,不正确则将当前 “1”值改为“0”。
经过试验,此算法可以保证智能车在赛道上比较流畅地前进,并且很好的处理了丢失图像的情况。 智能车采集不到黑线后,上一行的采样值中“1”的位置出现在最左端或最右端的传感器上,以最左端为例。 如果本行结果中没有“1”,则一直采用上次能检测到黑线的最后一次采样值代替本行采样值,此时智能车会向左行驶靠近黑线。 但智能车在偏离黑线时,最右端的传感器可能会检测到赛道以外的地板上而误认为是黑线,所以在采样值中重新获得“1”时,必须首先判断是否是黑色引导线。 此时设定条件,即只有“1”值出现在左端前 4 个传感器中才认为采样值有效,即智能车又重新检测到黑色引导线。
2.3 一维信息向二维信息的转化
由于仅依靠单行采样值只能获取黑色引导线的位置,为了更精确的识别赛道模式等其它信息,需要把多行的一维信息转换为二维信息。利用一个一维数组, 将连续 70 次单行采样中黑线的位置信息记录到一维数组中,再经过分析判断,便可以获得赛道的模式信息和变化趋势。在一行的采样结果中,除了经过起跑线和十字线时的情况,只会出现一个或两个“1”,其他的都为“0”。 采用中值拟合算法 ,当只有一个 “1”时 ,黑线中心位置为对应传感器的位置;当有两个“1”时,黑线中心位置为对应两个传感器位置的平均值。 此时路径识别精度为 7.5 mm。 当经过起跑线和十字线时,根据连续性滤波,便可以区分出智能车前进方向上的黑色引导线。
2.4 赛道模式识别
竞赛赛道可分为以下赛道模式: 直线赛道, 虚直线赛道,弯道(包含“S”型弯道),虚线弯道,十字线赛道以及起跑线, 其中虚直线赛道和虚线弯道可用连续滤波算法近似为直线赛道和实线弯道。 所以在此主要介绍其余 4 种赛道模式的识别。
赛道模式识别的过程如下:
首先,计算每行黑线的中心位置;然后, 将前 70 行黑线的中心位置记录到一个一维数组中,并对其求平均值;最后,分析此一维数组的特征,实现赛道模式的识别。
1)直线赛道
智能车沿直线赛道前进时,路径采集系统检测赛道得到每行的采样信息。 利用中值滤波的方法计算出每行黑线的中心位置,并将其保存到一维数组中。 此时数组中会得到一组相同的数字,这样就完成了对直线赛道模式的识别。
2)弯道
当智能车进入弯道时, 黑线中心位置将向一个方向偏离,而且偏差量越来越大,即数组中出现逐渐增大或逐渐减小的情况,由此判断智能车进入弯道[6]。当智能车经过 S 弯道时 ,对一维数组求平均值 ,便可以近似得到 S 弯道的优化路线 ,如图 3 所示 。 对小 S 弯道直接按照直线模式快速通过 ,对大 S 弯道则按优化后的路径通过 。
3)十字线赛道和起跑线
由于十字线赛道和起跑线比较相似,将这两种赛道模式区分开是路径检测的一个难点,特别是当智能车不是正面通过的情况下,所以将此两种赛道模式的识别放在一起讨论。当智能车通过十字线赛道时,路径采集系统将会有若干个传感器同时探测到黑色引导线,检测结果中会同时出现若干个连续的“1”。 再经过连续性数字滤波算法,即智能车前进方向上的黑色引导线相对于路径采集系统的位置不会产生
跳变 ,发生跳变的 “1”会被判为无效点 ,再利用中值拟合算法,便可近似得到十字线赛道处的黑线的中心位置。然后进行十字线赛道的赛道模式识别。 在一次采集中,根据近似得到的黑线中心位置,判断在它一侧或两侧是否有连续若干个传感器探测到黑色引导线。 若符合条件,则认为智能车经过十字线赛道。 智能车在前进方向上继续沿直线前进,而不受交叉线的干扰,突然拐弯。路径采集系统对起跑线标志的检测结果与十字线赛道的检测结果比较接近,都是由若干个“1”值组成。 不同的是,起跑线标志的检测结果中 “1”值不连续 ,是一个 14 位 “0”、 “1”间隔分布的数字序列[7],具有一定规律:有 4 到 6 个传感器探测到黑色引导线和起跑线中间的白色赛道。 利用这个区别进行起跑线的识别。 对于出现若干个“1”的检测结果,利用中值拟合算法可求得黑线的中心位置,再根据该黑线中心位置,判断其两侧传感器的采样值。 若两侧若干个“1”值不连续,并且“1”的个数介于 8 到 10 个,再计算本行采样结果中从“0”跳变到“1”和从“1”跳变到“0”的次数,如果次数和等于4,说明此时路径采集系统检测到的是起跑线。
3 结束语
文中介绍了一种基于激光传感器的智能车路径识别算法,经过实验,利用此算法可以使智能车具有更大的探测范围和更强的路径识别能力,使智能车对新环境具有更强的适应能力。
本文章转自爱学术(aixueshu.com),如有侵权,请联系删除