罗盆琳,方艳红,2*,王学渊,陈泳吉,蒲毅
(1.西南科技大学 信息工程学院,绵阳 621010;2.特殊环境机器人技术四川省重点实验室,绵阳 621010)
避障是移动机器人运行过程中非常重要的一个问题[1],从感知信息中完成障碍物检测是移动机器人实现避障的必要条件[2]。障碍物检测主要是实现对其空间位置和形态等信息的判定,检测过程中的重点在于如何获取并处理障碍物信息,从而得到实时准确的判定结果。传感器作为具有信息探测和周围感知能力的设备[3],是获取障碍物信息的首要选择。
目前,基于视觉测距技术的辅助,可以实现一定准确度的视觉避障[4~7]。视觉传感器测距一般通过摄像机的针孔成像模型将物体的图像信息转换为三维空间中的位置关系[8],但由于摄像机不是一个理想透视模型,摄像机镜头的非线性畸变导致视觉测距很难达到较高精度[9]。超声波传感器作为另一种非接触式测距方法,相对于视觉测距,方法简单、测距准确[10]、不易受光照和颜色影响且价格低廉[11],能稳定获取障碍物深度值。但在获取场景深度信息时,单一或少数传感器采集范围有限、获取信息不够全面。传统的数据采集结构通常使用多个传感器进行阵列式或全局布局式排列来获取大范围场景深度信息,又容易出现操作复杂、体积庞大、不便携等现象。
为此,本文设计一个基于多传感器数据融合的障碍物判定系统,首先,使用超声波传感器和舵机设计一种立体转轴式数据采集结构来获取全局场景深度信息,解决视觉测距精度不足和传感器传统布局方式结构复杂、体积过大等问题;然后,利用多次采集数据的互补性和冗余性,使用结合部分模糊理论的Bayesian算法对栅格隶属度矩阵进行融合,得到最优估计值,增强对障碍物深度位置判定的实时性与准确性;同时,使用视觉传感器获取图像数据,实时检测并标定出动态障碍物,辅助系统完成障碍物的形态判定;最后,将所有功能模块移植到树莓派,提高系统的便携性。
本文实现的障碍物判定系统主要由三部分组成,包括立体转轴式采集结构与视觉传感器构成的数据采集部分,以树莓派为核心的数据分析部分,显示最终判定结果的输出部分。系统功能设计如图1所示。
图1 系统功能设计图
图1的系统功能设计主要分为两个部分,一部分是利用立体转轴式数据采集结构获取深度数据并使用与模糊理论相结合的Bayesian算法进行处理,得到障碍物深度位置判定结果;另一部分则是利用视觉传感器采集图像数据,对障碍物形态特征进行提取从而判定障碍物的形状与动态。
具体的,将立体转轴式数据采集结构获取的深度值,传送到树莓派,利用栅格化思想,在笛卡尔坐标系下将实际环境初始化为400×400的栅格地图,再计算在极坐标形式下的栅格中心点坐标。由于采集到的深度数据由角度和距离值组成,使用极坐标形式将其映射到二维栅格地图中从而减少计算量。为避免使用超声波的锥体特性和概率密度函数等复杂运算过程来获取隶属度矩阵,每次旋转只测量传感器水平方向深度值再采用最小外接圆法来确定栅格状态,将相邻的每16个栅格合并为一个区域,设置阈值进行归一化处理得到“占有”和“空闲”概率矩阵,通过模糊理论得到栅格隶属度,再使用Bayesian融合算法预估下一时刻障碍物的准确深度位置,实时更新环境地图。同时,使用视觉传感器读取视频流信息,利用加权平均融合算法更新当前时刻环境背景图像数据,再结合帧差法得到帧变化量,通过设置变化量阈值进行动态点分离,之后使用形态学中的膨胀法进行处理,将相邻动态点连接成一个区域并标定。最后,将多传感器融合后的综合判定结果作为系统输出。
本文使用舵机和超声波传感器设计了立体转轴式数据采集结构,如图2所示,使用较少的超声波传感器就能获得系统前方180°立体空间范围内障碍物深度数据,且结构简单、轻巧便携。
图2 立体转轴式结构
由图2可知,该结构将多个超声波传感器等间距固定到支架上来获取各个高度障碍物深度值,从而解决简单平面结构容易出现的空间信息丢失问题。为了传感器能稳定的固定于支架,在矩形支架上等距的切割出具有超声波传感器发送与接收端口大小的矩形孔洞,如图3所示。将带有传感器的支架垂直地放置于舵机上,解决了阵列式或全布局式排列导致的结构复杂、体积庞大等问题。
图3 立体转轴式超声波固定支架
系统工作时由舵机带动支架上的多个超声波传感器进行0°到180°旋转,每次旋转角度为5°,同时传感器对障碍物进行多次测距,其测距公式如式(1)所示。随后将获取的角度和距离信息传送到树莓派,结合该结构的旋转特性和超声波传感器的测量特性进行栅格化处理,再使用Bayesian融合算法实时更新局部地图,实现对障碍物深度位置的准确描述。
式(1)中,d为需要测量的距离,t为超声波往返时间,v为超声波传播速度通常取340m/s。
该系统采用栅格法来创建环境地图,环境地图栅格化方式如图4所示。
图4 环境地图栅格化
图4中,将0.6m×0.6m的矩形环境地图处理为栅格粒度为0.0015m的栅格地图,立体转轴式数据采集结构位于地图底部中心,在完成环境信息采集后,树莓派将得到的矢量信息进行处理并更新环境地图。其中,地图大小和栅格粒度可根据具体实验环境大小调节。
在处理栅格地图数据时,一般使用与概率相结合的Bayesian算法。根据概率论中的Bayesian法则,给定一个距离传感器r,栅格地图中每个栅格的状态变量s(Ci)可通过公式(2)计算:
式(2)中,P[r丨s(Ci)=OCC]是给定s(Ci)为占有条件下,传感器收到对应幅值r的概率,可以通过式(3)进行计算。
假定每个栅格的随机变量s(Ci)相互独立,传感器每次测得的数据r1,r2,...,rt,rt+1也相互独立,则当使用多个传感器测距时,栅格地图中每个栅格状态更新可采用式(4)进行递推。
式(3)为一个迭代更新算法,式(2)和式(4)中的条件概率P[r丨s(Ci)]均需要使用该公式,这是一个计算难点。在文献[12]的方法中引入部分模糊理论知识,将单次测量下的每个栅格分为两个测量值mE和mO分别表示栅格的“空闲”和“占用”隶属度,可由式(5)计算:
由于传统数据采集结构将传感器固定于静态位置,通常使用笛卡尔坐标系形式确定环境栅格中心点坐标和障碍物位置坐标。在获取隶属度矩阵过程中,根据每个超声波距离读数提供有关传感器前方圆锥体中“空闲”和“占用”信息,然后将读取的数据投射到栅格化地图的概率剖面图中进行解释[13,14],该过程需要考虑超声波的锥体传播模型以及概率密度函数等,计算十分复杂。
本文设计的数据采集结构获取的深度信息由角度和距离值组成,与极坐标形式更为匹配。因此,提出使用极坐标系形式的方法来处理障碍物坐标。在获取隶属度时,每次旋转只获取传感器水平方向上的测量值,有返回值则将该栅格视为障碍物区域,通过多个相邻栅格合并归一化处理得到隶属度矩阵简化运算过程。首先对系统前方区域栅格地图进行初始化,得到各栅格在极坐标系下的中心点坐标;然后,将超声波和舵机测得的角度和距离值与极坐标系下的栅格地图坐标点匹配,减少每次测量后将数据转化为笛卡尔坐标值的运算过程;之后,使用栅格最小外接圆来确定测量点是否位于地图中某栅格内,如果是则将栅格对应位置的矩阵值赋为1,否则赋为0;最后,将每16个栅格的值相加,进行归一化处理,图5为该过程的可视化,得到100×100的“空闲”和“占用”隶属度矩阵,然后运用于后续栅格状态更新。
图5 栅格状态及隶属度运算可视化过程
如图5所示,障碍物坐标在栅格6和栅格7的外接圆内,将该栅格判定为占有,最后归一化将16个栅格整合为1个栅格,得到该栅格占有概率为2/16,空闲概率为14/16。
假定传感器数据相互独立,则栅格状态更新式(4)可简写为:
式中,
最终通过最大后验概率准则给出栅格状态的最优估计,式(7)~式(9)分别表示栅格“占有”、“空闲”和“未知”状态。
通过以上方法可检测到障碍物位置,但无法判定障碍物形状和动态信息,本文通过视觉传感器和图像处理技术进行障碍物动态特征判定。
假设环境与光线不变且视觉传感器获取第一帧图像时环境为静态,使用普通的帧差法能很容易将静态环境和动态障碍物分离,但这个假设在现实场景下十分容易失效。在光线发生变化或者视野中出现其他物体后会产生较大的误判。
因此,本文使用加权均值滤波算法来滤除背景噪声,其主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度,如式(10)所示:
式(10)中,ωα、ωβ是加权系数,ωα+ωβ=1。
系统读取视频流信息后,利用该方法得到背景数据。融合过程如图6所示。
图6 像素平均法融合
融合后使用当前测得的数据减去加权平均值,得到“帧变化量”,如式(11)所示:
式(11)中,δ为帧变化量,back_data为融合后的背景数据,current_data为当前数据。
在得到帧变化量后,设置阈值对动态点进行分割,分割后的图像中含有孤立噪声点。本文采用图像处理技术中的膨胀法,将相邻动态区域进行连接,然后再设置最小动态面积阈值,将大于阈值面积的动态区域进行框选,从而消除噪声,标定出动态障碍物。
为检测系统使用的立体转轴式数据采集结构与融合方法对障碍物位置判定的实时性与准确性以及其在多障碍物环境中的性能,搭建了以下测试环境,将环境栅格地图大小设置为0.6m×0.6m的正方形场景,场景布置如图7中的场景原图所示。
如场景原图所示,测试环境为黑色边界线划分出的矩形区域,于测试区域随机设置多个大小不一的障碍物。系统最终输出结果如图7中的融合地图所示,其中白色部分为安全区域、黑色部分为障碍物区域、灰色部分为不确定区域。通过对场景原图、不同时刻测试效果图与Bayesian算法预估计出的下一时刻地图进行对比可得,融合后的地图消除了单次测量中的部分噪声,得到了更准确的测试结果。图7中各场景对应的融合地图数据统计结果如表1、表2所示。
表2 障碍物距离数据记录
图7 障碍物位置检测
表1 障碍物角度范围数据记录
通过对表格数据的对比分析可得,障碍物角度测量的最大误差值为6.2°,深度值测量误差在4%以内,能够满足避障需求。同时,系统使用局部地图更新的方法,利用本时刻采集的数据预判下一时刻的障碍物位置信息,使用改进坐标系法来简化算法,进一步提高了避障的实时性。系统使用的数据采集结构与运算方法能将环境中的多个障碍物全部检测出来并得到实时准确的障碍物位置判定结果。
此外,系统采用OpenCV和python作为开发工具,快速的获得障碍物图像数据,进而辅助系统确定障碍物形状,将采集到的环境图像数据使用加权平均融合下的帧差法,进一步检测动态障碍物并给出提醒,检测结果如图8所示。
图8 动态障碍物检测结果
由图8可得,通过视觉传感器采集到的图像数据,可以明确障碍物的形状特征。同时经动态障碍物检测算法处理后,减少了环境因素对系统的影响,能准确的检测出环境中的动态障碍物形态,将其在视频流中标定,并对用户发出前方有运动物体的提示。
障碍物判定是一项复杂的工作,涉及到障碍物多样性、采集结构设计与传感器特性等条件[15]。通过对传统避障系统的现状分析,存在视觉测距准确率低、单一超声波传感器采集深度值范围有限以及多超声波传感器布局复杂等问题,本文设计了一款基于多传感器数据融合的障碍物判定系统。首先,结合视觉传感器与超声波传感器的优势,解决传统避障系统采集信息不全面的问题;其次,设计立体转轴式数据采集结构,获取全局障碍物深度信息;同时,利用视觉传感器辅助获取障碍物形状与动态信息;最后,将系统移植到树莓派。测试结果表明,系统使用的数据采集结构与融合方法能同时对多个障碍物的深度位置与形态信息进行实时准确的判定且性能稳定。系统硬件结构由树莓派、立体转轴式数据采集结构、树莓派摄像头等组成,具有结构简单、便携等优势。在后续工作中,将进一步提高系统的实时性与准确性,切实运用于各类需要避障的场景中。