基于单目视觉的机器人避障方法研究
2018-02-28王潇峰张礼廉胡小平
王潇峰,张礼廉,胡小平,张 盼
(1.国防科学技术大学,长沙410073;2.浙江理工大学,杭州310018)
0 引言
机器人避障就是在机器人运动过程中,通过相应的障碍物检测算法,运用控制策略指导机器人对检测到的障碍物进行躲避,保障机器人的安全行驶。机器人避障是实现机器人全自主运动的关键环节,总体方法可分为主动避障和被动避障。主动避障这类算法是针对已知环境情况的,此时机器人运动空间中的障碍物信息是完全已知的,如同时定位与地图构建(Simultaneous Localization and Mapping,SLAM),经典的基于视觉的 SLAM方法有 LSD-SLAM(Large Scale Direct Monocular SLAM)[1]。主动避障方法在得到环境地图后,进行路径规划,可实现机器人主动避开障碍物。本文提出的方法属于被动避障,这类避障方法针对的环境情况是未知的,或者即使环境已知但还需要面对突然出现的障碍物,因而需要实时检测障碍物,在检测到障碍物后进行躲避。随着计算机视觉技术的不断发展,基于视觉的障碍物检测方法被不断地研究和应用,现已成为机器人障碍物检测的主要手段。
相关的基于视觉的方法有:在文献[2]中,结合SIFT特征及MOPS恢复了障碍物的三维信息。其中,MOPS用于提取障碍物的边缘及角点信息,SIFT用于检测障碍物内部轮廓信息。文献[3]提出了一种测量到障碍物相对距离的方法。其中,基于惯性传感器(IMU)并应用拓展Kalman滤波(EKF)方法估计摄像机位置,然后重投影特征点到图像中来计算障碍物的空间坐标。Kovács[4]利用显著性物体检测方法检测图像内的显著性物体,并把该物体当作障碍物,然后进行规避。文献[5]提出一种仿生方法,模拟昆虫的避障机理,提出基于光流的平衡策略,并计算接触时间(Time to Contact,TTC)构建深度图。 透视信息[6-7](例如消失的线特征)在人造的结构化的环境中很有作用,然而在自然环境中表现很差。基于立体视觉的方法也有很多,如文献[8],模拟人类的双眼结构,能获得较好的深度信息,但是对应的成本更高、结构更复杂,主流处理方法的复杂性较高。
本文提出的方法仅仅依赖单目相机,针对单目摄像头系统的局限性,因而需要一种可靠的避障方法。当机器人正前方的障碍物尺寸扩大时,意味着障碍物正在靠近机器人。因而提出基于SURF特征[9]尺度膨胀的方法,并计算由特征点连接成的凸包的面积,用于检测机器人正前方的障碍物。对于机器人视野两侧的障碍物,采用基于光流平衡的方法,通过平衡运动视差避免碰撞到两侧的障碍物;然而基于特征和光流的方法对于纹理高度相似的区域(如白墙)失效,因为没有足够的信息来提取特征和计算光流,所以,提出基于图像熵的方法指导机器人在这些情况下的避障。本文提出的方法在地面移动机器人Turtlebot上进行了大量实验,表现出了良好的避障效果。
1 系统总述
本文的方法首先将一幅图像分为3个区域,分别为IL、IM、IR,如图1所示。
之所以将图像分成3个区域,是为了充分利用上文提到的各方法的优势,形成互补。图像中间区域IM运用特征尺度检测器算法检测正前方的障碍物,视野两侧的区域IL、IR则被应用于光流平衡策略躲避两侧障碍物。对于高度相似纹理的障碍物(如白墙),计算的光流是不可靠的,而且也没特征点可以提取,这种时候需要分别在3个区域计算图像熵,利用熵值判断障碍物。系统总体结构框图如图2所示。
图2中的图像序列指的是前后两帧图像,这是因为在SURF特征点匹配以及计算光流场时都需要两帧图像。当左右视野IL、IR某一区域图像熵小于阈值时,例如区域IL,说明机器人左侧已经靠近障碍物,这时候需要转向右侧,反之亦然;当IL、IR熵值都没有达到阈值,这时候可以分别计算左右视场的光流场,通过平衡光流达到同时不碰撞两侧障碍物的目的;对于区域IM,在提取特征点前先同样计算图像熵,当中间区域检测到障碍物时,需要向左侧还是右侧规避?本文采取的策略是,转向左右视场中光流较小的一侧。转角大小与左右区域光流差值成正比例关系,即简单的比例控制。
2 单目视觉避障方法
2.1 特征尺度检测器
本文中机器人视野正前方障碍物的检测方法主要依赖于尺度膨胀信息,这种检测方法不依赖于先验信息,也不对环境作前提假设。尺度膨胀信息在避免机器人碰撞到正前方障碍物时很有用,当障碍物与机器人的距离缩小时,图像中的物体尺寸也在相应扩大。因而采用基于SURF特征的尺度检测器方法,用于检测机器人正对着的正在靠近的障碍物。
本文的方法首先在某两帧图像(区域IM)中提取SURF特征关键点和描述子,这些特征点可能是障碍物上的点,也可能不是障碍物上的点。由于SUFR特征点具有旋转不变性和尺度不变性,因而即使关键点尺寸大小发生变化,也能匹配。所以,在连续的图像序列中,将相邻两幅图像中的关键点进行匹配,并且比较匹配上的两个点的尺寸大小,来判断相机是否正在靠近障碍物。在所有关键点匹配好以后,由于是检测正在靠近的障碍物,所以先剔除关键点尺寸变小或者不变的匹配对。然后用基于尺寸比例的方法进一步确定有可能是障碍物上的点,最后将这些特征点连接起来构成一个凸包,比较上下两帧凸包的面积,只有当面积之比大于一个阈值时,就认为已经检测到障碍物,具体算法步骤如下。
算法:特征尺度检测器
⑥判断障碍物,ratio>Th?yes:no。
首先在相邻两帧图像中提取关键点和特征描述子,并进行FLANN匹配(步骤①和步骤②),匹配结果如图3所示,这里面有许多误匹配的点。
为了提高匹配的准确率,必须对匹配点进行过滤,只有当两个匹配点描述子的距离度量小于一定阈值时,才认为这些关键点足够相似,然后保留这些匹配对。此外,仅仅需要在下一帧图像中尺寸变大的关键点,因而去除尺寸变小或者不变的匹配对(步骤③),得到结果如图4所示。此时可以看到,误匹配情况很少。
但仅仅利用尺寸变大这一点是无法判断这些特征点是否属于障碍物,因为机器人在前进的过程中,看到的大部分物体尺寸都是在变大的。虽然物体尺寸都在变大,但是变大的比例是不一样的。如图4所示,机器人向前移动一定距离,分别得到上一时刻和当前时刻的图像。可以看到,距离最近的物体(书本)的尺寸明显变大,而距离较远的物体(窗户边的椅子)尺寸则变化不明显,也就是说特征尺寸变化的比例是不一样的。利用这一观察,对特征点作进一步过滤,如步骤④,这里的scale参数(本文设置为1.2,必须大于1)设置依据机器人运动速度而异,得到图5的结果。可以看到,此时剩余这些特征点基本都属于障碍物(书本)。
最后,将剩余这些特征点连接形成凸包,并比较上一帧和当前帧凸包面积之比,步骤⑤的结果如图6所示。目的是进一步确认剩余的这些特征点是否构成障碍物,当剩余特征点很少且稀疏时,认为这不是障碍物。通过设置Th参数(本文设置为1.15,必须大于1),可以防止在距离障碍物很远时就检测出障碍物,距离障碍物太远就进行规避是没有必要的。由图6可以看到,画出的凸包的位置基本上描述了障碍物的大致位置。
可以看到,利用特征尺度检测器的方法,检测正前方的障碍物是确实有效的。但稍微也有不足之处,正前方可能没有障碍物,而机器人的两侧有障碍物,这时候需要用另一种方法进行互补,即基于光流平衡的避障方法。
2.2 光流平衡策略
光流(Optical Flow)是图像灰度模式的运动。运动场是空间物体三维运动在图像平面的投影,光流场是一个二维矢量场,它包含的信息是各像素点的瞬时运动速度矢量信息。在含有平移运动的情况下,运动场可等价于光流场。
平衡策略(Balancing Strategy)受到了昆虫飞行的启发,人们在日常生活中观察发现,蜜蜂在穿过窗户上的小洞时,能沿着洞的中心飞过去;在走廊环境中时,能沿走廊的中心线飞行。在探究了蜜蜂的导航机理以后,证实了蜜蜂是通过平衡两眼中图像的运动速度即光流来控制飞行轨迹的。
仿照蜜蜂的视觉导航机理,设计了光流平衡策略用于机器人避障。使用光流密度来构建平衡策略方法的主要思想是利用运动视差:当机器人运动时,近处的物体比远处的物体在图像上产生更大的运动;近处的物体会占据更大的视野,所以近处的障碍物将产生更大的光流。控制机器人远离光流更大的一侧,就可实现避障[10]。
本文的做法是,在图像区域IL、IR分别计算稠密光流场。稠密光流是一种针对图像进行逐点匹配的图像配准方法,稀疏光流只针对图像上若干个特征点,稠密光流计算图像上所有点的偏移量,从而形成一个稠密的光流场。通过这个稠密的光流场,可以进行像素级别的图像配准,相比稀疏光流计算,稠密光流更加精确,而且更重要的是对于特征点少的物体也能可靠计算。由于要计算每个点的偏移量,所以计算量特别大。但是本文并不需要在整幅图像上计算,只需要分别在机器人视野IL、IR中计算每个像素的光流即可。更进一步节省计算资源的方法,也是本文用到的方法,将IL、IR分别进行降采样,IL、IR同时缩小为原来的1/2,再对得到的像素计算光流。这样做不仅不影响光流计算的精度,而且能极大减少计算量。
稠密光流计算方法采用Farneback法,Farneback在文献[11]中通过计算参数化的运动模型约束,从图像序列中计算3D方向张量。方向张量构造如下:
本文不是直接从张量点估计速度,而是假设在某个区域的速度场能够根据运动模型被参数化,然后用所有的张量去计算参数。用仿射模型表示该方法:
x、y表示像素坐标,写成矩阵形式如下:
为了估计运动模型的向量p,引入代价函数:
根据式(3)、 式(4)得到:
将区域内所有点相加得到:
通过最小化这个总代价函数,可以估计出参数向量p,即计算出每个像素点的运动向量,得到稠密光流场。
截取机器人运动过程中的某连续两帧图像进行计算, 如图7所示。 图7(b)由图7(a)向前运动得到,可以看到在图像视野右侧,机器人已经靠近障碍物,这时候需要进行躲避。
通过分别计算IL、IR区域的稠密光流场,并每隔10个像素取一个像素,画出该像素点的光流向量,如图8所示。
从图8中得到的光流场可以看到,IR区域由于距离障碍物较近,所以大部分像素点的光流向量幅值(直线长度)明显大于IL区域。假设像素点(x,y)处光流向量为f(x,y)=(u,v), 则该像素点光流幅值为:
分别在IL、IR区域内计算所有像素点的光流向量幅值之和得到:
根据运动视差原理,设计光流平衡策略如下[5]:
比较左右两侧的光流强度总和,再进行归一化,得到作用力F。如果F大于0,说明机器人左侧的光流较大,极有可能左侧距离障碍物较近;F小于0,则右侧已靠近障碍物。但是由于图像噪声的原因,光流计算不可能绝对准确。如果仅仅F大于0,就控制机器人向右转,F小于0,机器人向左转,那么整个运动过程机器人就一直在左右摇摆。因而需要对F设定一个阈值Fthreshold,实际上归一化的目的就是为了方便设定阈值。通过合理设定这个阈值,就可以控制机器人在实际靠近障碍物时再进行转向,而不是一直左右转向。至于转角大小,本文的方法是与F成比例关系。F绝对值越大,说明某一侧靠近障碍物的速度越快,因而需要一个大的转角,确保立即避开。
结合特征尺度检测器和光流平衡策略,对于大部分自然障碍物已经可以达到很好的避障效果。但这些障碍物通常具有少量的纹理信息,这样才可以提取特征点,或者可以计算稠密光流场。但是对于很大区域都是相同纹理的物体,例如白墙,既无法提取特征点,光流计算也不准,这种情况就需要利用计算图像熵的方法,此法对这种障碍物也能检测。
2.3 计算图像熵
熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。热力学第二定律,又称“熵增定律”,表明了在自然过程中,一个孤立系统的总混乱度不会减小。在信息论中,熵被用来衡量一个随机变量出现的期望值。它代表了在被接收之前,信号传输过程中损失的信息量,又被称为信息熵。信息熵也称信源熵、平均自信息量。
实际上熵就是衡量信息量的大小,对于图像来说,如果一个灰度图像的值是常数,那么它的熵为0,也就是这个图像没带给我们任何信息,我们知道了一个像素值,其他也就全知道了。相反,熵越大说明图像包含的信息越多、越复杂,其灰度值越混乱。因而可以通过检测图像熵的方法,去判断物体包含纹理的多少。对于白墙,几乎没有纹理信息,因而图像熵很小;而高纹理的物体,包含大量纹理信息,图像比较混乱,因而拥有较大的图像熵。
这里只引入图像的一维熵,它反映了图像中平均信息量的多少,表示图像灰度分布的聚集特征所包含的信息量,计算方法如下:
mi表示图像中灰度值为i的像素点的总个数,N表示该图像内像素总数,所以pi代表了某个灰度在该图像中出现的概率。图像的熵则表示为:
实验中,让机器人分别靠近一张黑色椅子和一面白墙,并计算相应区域的图像熵。首先,机器人视野右侧有一张纯黑色椅子,让机器人逐渐靠近,计算IR区域的图像熵,熵值用数字标明,得到如图9所示的3幅图像。
然后,再让机器人靠近一堵白墙,并计算IM区域的图像熵,结果如图10所示。
从实验结果可以看到,当图像某区域只有一种相似纹理的时候,例如纯黑色椅子和白墙,该区域图像熵值很小;当混有其他纹理时,则熵值很大。从高纹理到低纹理,图像熵值有一个大幅度的跳跃过程,例如图9中,从第2帧到第3帧,第2帧中IR区域还包括地面,该区域熵值为2223;但当到第3帧时,IR区域就只包含黑色椅子,图像熵值为173,可以看到有一个急剧跳跃的过程,图10也是相同的过程。从而可以设定一个临界值Ethreshold,本文设定为800,当图像某一区域熵值小于该临界值时,表明该区域已经临近障碍物,需要做出动作规避。从上面实验也可以看到,当面对的是一堵白墙时,根本无法提取有效特征点,所以计算图像熵值是在提取特征点和计算光流场之前。
3 实验及结果分析
为了验证本文方法的可行性,把上述方法综合起来构成一个实际系统。本文实验基于Turtlebot地面移动机器人,上面搭载ROS开源机器人操作系统,配备Kinect深度/彩色相机(本文仅需彩色相机),RGB相机分辨率为640×480,采样频率为25Hz。在室内环境下进行实验,设置机器人直线速度为0.2m/s,室内环境布置如图11所示。
相关实验参数设置如表1所示。
表1 实验参数设置Table 1 Parameter setting of experiment
每次实验场景障碍物摆放略有不同,且机器人每次从不同起点出发,目的是为了充分验证本文方法的可行性。本文在上述环境中共做了12次漫游实验,只有当无碰撞漫游时间达到2min或者中途碰撞到障碍物时,一次实验才算完成。提取其中3次成功的实验,并将轨迹图画出来,得到如图12所示结果。
图12中,灰色线条及矩形为障碍物,黑色边框表示墙壁,黑色菱形为机器人初始位置,虚线为机器人运动轨迹,黑色三角形是机器人漫游终点位置。从图12可以看到,机器人在漫游过程中可以避开障碍物,本文提出的方法对指导机器人避障确实有效。
本实验目前只在室内进行,由于室内环境比较封闭,从而容易使机器人陷入障碍物构成的狭小角落内,如图12(b)终点黑色三角形所示。机器人进入这样的角落,就极有可能一直在原地左右摇摆寻找可通行路径。图12(b)是在时间到了2min以后陷入角落,所以仍视为一次成功的实验。实际上在陷入角落之前,很多次实验都没有碰撞到障碍物,但是实验时间没有达到2min,对于这样的一次实验既没有算做成功也没有并入失败,相当于一次无效实验。因而要在室内漫游时间达到2min而不陷入角落需要一定运气,如果是在室外,2min漫游则容易达到。12次实验中共有两次实验失败,避障失败的情形如图13所示。
图13(a)失败并不是因为没有检测到障碍物(黑色椅子),而是因为没有相应措施检测到地面障碍物(椅子底座),这也是本文方法的局限之一,因为本文的方法都是假设障碍物至少具有一定高度;图13(b)失败是因为该障碍物出现在图像IM区域,但是供提取的特征点不够,所以没有检测出该障碍物,这也是本文方法的局限之二,正前方障碍物需要一定量的纹理可供提取特征点。但实验中发现,当图13(b)中的障碍物出现在机器人视野两侧时,则可以躲避成功,这是因为光流计算对于纹理要求相对较低。
4 总结及未来工作
本文基于单目视觉,通过结合特征尺度检测器、光流平衡策略以及图像熵的方法,设计了一个可靠的避障系统,具有较强的实用性。本文的方法把图像分为左中右3个区域,在不同区域内应用不同的方法检测障碍物,这样可以将各个方法形成互补,保证系统的可靠性。
对于图像中间区域,基于SURF特征提取膨胀特征点,并将这些特征点连接以形成凸包,通过凸包面积变化速率,可以确认是否有障碍物靠近。实验表明,在障碍物有足够纹理提取特征时,这种方法对于检测正前方障碍物很有效。对于图像视野两侧,可以通过平衡这两个区域的光流密度来避障。本文计算方法是Farneback稠密光流方法,为了保证实时性,可以将左右区域再降采样。通过上述两种方法的互补,既可以检测机器人正前方的障碍物,也可以同时躲避左右两侧的障碍物。但保证上述两种方法有效的前提是,障碍物具有一定纹理信息。当障碍物纹理信息很低时,可以再加入图像熵的方法避障。
接下来的工作将考虑把主动避障和被动避障结合起来,先对环境建图,然后作路径规划指导机器人避障,对于动态障碍物或者地图构建不准确时则用被动避障方法。此外,还可以在本文方法的基础上,加入透视及其他信息进行融合,因为透视信息已经被成功应用于结构化环境中的导航,因而同样可以应用于避障。而且,本文对环境信息没有作假设,这种方法可以应用于室内环境,也可以用在自然环境中;既可以是地面移动机器人,也可以是飞行器,所以将考虑把本文方法应用于四旋翼无人机的自动避障。
[1]Engel J,Schöps T,Cremers D.LSD-SLAM:large-scale direct monocular SLAM [C].European Conference on Computer Vision,2014:834-849.
[2]Lee J O,Lee K H,Park S H,et al.Obstacle avoidance for small UAVs using monocular vision [J].Aircraft Engineering and Aerospace Technology,2011,83 (6):397-406.
[3]Saha S,Natraj A,Waharte S.A real-time monocular vision-based frontal obstacle detection and avoidance for low cost UAVs in GPS denied environment[C].IEEE International Conference on Aerospace Electronics and Remote Sensing Technology (ICARES),2014:189-195.
[4]Kovács L.Visual monocular obstacle avoidance for small unmanned vehicles [C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops,2016:59-66.
[5]Souhila K,Karim A.Optical flow based robot obstacle avoidance [J].International Journal of Advanced Robotic Systems,2007,4 (1):13-16.
[6]Bills C,Chen J,Saxena A.Autonomous MAV flight in indoor environments using single image perspective cues[C].IEEE International Conference on Robotics and Automation (ICRA),2011:5776-5783.
[7]Chavez A,Gustafson D.Vision-based obstacle avoidance using SIFT features [C].International Symposium on Visual Computing,2009:550-557.
[8]Hrabar S,Sukhatme G S,Corke P,et al.Combined opticflow and stereo-based navigation of urban canyons for a UAV [C].2005 IEEE/RSJ International Conference on Intelligent Robots and Systems,2005:3309-3316.
[9]Mori T,Scherer S.First results in detecting and avoiding frontal obstacles from a monocular camera for micro unmanned aerial vehicles [C].IEEE International Conference on Robotics and Automation (ICRA),2013:1750-1757.
[10]徐丽.基于光流的移动机器人仿生避障方法研究[D].北京工业大学,2014.XU Li.Research on bionic obstacle avoidance method of mobile robot based on optical flow [D].Beijing University of Technology,2014.
[11]Farneback G.Fast and accurate motion estimation using orientation tensors and parametric motion models [C].15thInternational Conference on Pattern Recognition,2000,1 (1):135-139.