任恒乐,徐 方,邸 霈,田大吉
(1.中国科学院沈阳自动化研究所 机器人学国家重点实验室,辽宁 沈阳 110016; 2.中国科学院机器人与智能制造创新研究院,辽宁 沈阳 110016; 3.中国科学院大学,北京 100049;4.沈阳新松机器人自动化 股份有限公司 中央研究院,辽宁 沈阳 110168)
由于深度相机既能采集颜色信息,又能采集深度信息,所以其可以作为移动机器人完成自主跟随任务的感知输入。自主跟随的核心技术就是对目标行人的准确检测与识别,即在判断出不同图像帧中的行人是否是同一个人。检测-跟踪框架是目前一种主流的方法[1]。其思想是先在每帧图像中检测出行人,然后对不同图像帧中的行人进行数据关联来确认身份。Munaro等提出的方法通过将无迹卡尔曼滤波和行人的颜色直方图相结合来关联不同图像帧中的行人[2]。Wang等将粒子滤波与社会力模型结合来跟踪行人[3]。Liu等则将均值偏移融入粒子滤波算法来进行多个行人的跟踪。文献[5]利用卡尔曼滤波弥补均值漂移算法没有利用行人运动信息的缺点来进行行人识别。文献[6-8]则是利用神经网络对多个行人进行跟踪。但以上的算法在行人距离机器人较近时效果都不太理想,无法满足移动机器人自主跟随的需求。
本文利用华硕的Xtion PRO LIVE深度相机来获取RGB图和深度图。然后利用提出的行人模型对行人进行检测与识别。接着依据得到的目标行人及干扰行人的位置来规划一条跟随路径,最后将速度指令发送给全向移动平台底盘控制器,从而使移动机器人在有行人干扰或距离行人较近的复杂环境下能够顺利完成跟随任务。
全向移动平台没有非完整性约束,可向任意方向移动[9]。这一优点可使机器人在跟随时始终朝向目标行人。图1为本文搭建的全向移动平台。
图1 全向移动平台实物
该平台采用3个全向轮,轮子轴向两两间的夹角均为120度,如图2所示。δ为全向轮与y轴夹角。vθ为平台绕几何中心的转速,l为全向轮中心到平台几何中心的距离。由式(1),式(2)可知v为移动平台的实际速度,ψ为其与x轴夹角,文中的粗体表示矢量。vx,vy分别为移动平台沿x轴和y轴的速度分量。根据式(3)可以分别求出3个全向轮的线速度v1,v2,v3
(1)
(2)
(3)
图2 全向轮移动平台运动学模型
在机器人进行自主跟随的过程中,当机器人与行人的距离太近时,由于相机视野范围的限制,其只能获取行人的局部信息,此时传统的方法很容易识别丢失。此外,当两个行人交叉行走出现相互遮挡的情况时,行人的身份也极易出现误匹配的问题。为了解决上述问题,本文提出了一种行人模型来进行行人检测与识别。首先对当前图像帧提取方向梯度直方图信息来检测当前帧中可能是行人的位置。然后结合深度图中的相应深度获得行人的实际三维坐标。接着利用社会力模型预测上一图像帧中每个待匹配行人的期望位置。另外,对每个行人分段提取颜色直方图。将以上信息作为行人模型的输入,利用这些信息,行人模型将当前帧与上一帧图像中的行人相匹配来完成行人的检测与识别。
(4)
(5)
社会力模型的主要组成部分是来自他人的排斥力
(6)
其中,A表示排斥力的大小,B表示力的范围,di,j是行人i之间的距离矢量的大小。vi/ti假定行人想要在ti停下来。另外,由于行人视场有限,排斥力可能不是各向同性的。ω是社会力模型的各向异性因子,具体可由式(7)得出,其中,λ是各向异性系数,θi,j是行人j相对于行人i的位置与其运动速度vi方向的夹角
(7)
传统的行人检测方法只有在获取人体大部分信息时才能有效的检测行人。然而,当行人距离机器人较近时,由于摄像头视野范围的限制只能采集到行人的部分信息。此时,如果传统的方法就难以对行人进行检测,行人的身份更是无法确定。
针对以上问题,本文首先分段记录每个行人的颜色信息。如图3所示,将检测到的行人区域平均分成4份,顶部的亮色部分占总面积的1/4,主要用来记录人体胸部以上的信息。中间的灰色区域占整体区域面积的1/2,能够统计人体大腿与胸部之间部分的信息。底部1/4的深色区域则用来统计人体大腿以下的信息。在每段区域中分别对红色、绿色和蓝色3个通道进行信息统计。每个通道按照值从0~255平均分为5个区间,统计每个区间点云所占的比例。
图3 分段颜色直方图划分
当某个行人的位置距离机器人较近时,由于机器人视野的问题只获取该行人身体的中间区域信息,此时,该行人未能被检测到。依据2.1部分的社会力模型可以预测该行人在图像中可能出现的区域。对该区域进行分段颜色直方图统计,然后将此信息作为行人模型的输入。
在此,本文提出了一种行人模型来解决机器人在自主跟随时出现的相互遮挡及视野太小的问题。对于每一帧图像,我们通过提取方向梯度直方图来得到检测子,把这些检测子作为识别部分的输入。这些检测子会出现有假阴性和假阳性的结果,因此本文将检测出的行人划分为两类:候选行人和真实行人。候选行人为待确认的行人,可能是误检测造成的。真实行人为实际存在的行人。两者可通过历史记录增减相互转化。利用社会力模型预测每个人在下一帧中的估计位置,结合颜色直方图信息,计算出当前帧检测出的行人与下一帧图像中检测子的距离,这里指的是加权距离。最后,依据距离矩阵利用匈牙利算法进行数据关联,从而进行行人跟踪识别。
每个行人都有身份编号、历史记录、位置、期望位置、速度、分段颜色直方图属性。身份编号代表当前行人的身份,历史记录包含过去几帧该行人的位置,期望位置是用社会力模型估算出的该行人在下一帧中的位置。分段颜色直方图可增强每个行人的区分度。两种类型行人之间可依据各自的历史记录进行相互转换。具体过程如图4所示。当前帧的两种类型行人都需要与下一帧中的检测子进行匹配,距离越近,匹配度就越高。每成功匹配一次,若该行人的历史记录没有达到预设的历史记录上限htop,就将该历史记录加1,若超过了真实行人历史记录的下线hreal,则该行人为真实行人。如果没匹配成功,其历史记录就减1。若该历史记录小于预设的历史记录下线hdel,则认为该行人是噪声引起的误检测,删除该行人。
图4 行人身份转化过程
接着将检测子与行人数据关联。首先是计算当前帧中的行人与下一帧中的检测子之间的距离。距离定义如下
d=w·(pped-pdet)
(8)
其中,d是当前帧行人和下一帧检测子之间的距离,而w是距离的权重。pped和pdet分别是当前帧行人的位置和下一帧检测子的位置。然后,本文利用基于距离矩阵的匈牙利算法并获得初步关联。但如果两者颜色直方图差异超过设定的阈值,则关联无效。此外,当检测子与候选行人相关联,并且其与真实行人的距离小于最大距离dmax时,优先将其与真实行人相关联。如果检测子不与所有行人相关联,我们将其添加为候选行人。但是,当真实的行人与检测子相关联并且另一个检测子与该行人之间的距离小于最小距离dmin时,则不能将该检测子添加为候选行人。这一步可以有效剔除图中重叠检测的行人。
借助人工势场法的思想,假设机器人处在一个人为构造的虚拟引力和斥力势场中,通过计算移动机器人所受到的合力来确定其运动轨迹[11]。引导者对机器人有吸引力,其大小与机器人和引导者的距离成正比。另外环境中的障碍物及其他行人会对机器人产生排斥力,其大小与机器人和各自间的距离成反比。
为了使机器人能够更有效地自主跟随,本文使用2.1部分社会力模型预测的行人的期望位置代替实际位置来计算虚拟力,这样使机器人能够更加及时躲避障碍及跟随行人。令Uatt为引力势函数,Katt为引力场系数,d为机器人与引导者之间的距离,p为机器人的坐标,pgoal为预测的引导者的期望坐标。引导者对机器人的引力势函数可用式(9)表示。而此引力场函数的负梯度就是引导者对机器人的引力,如式(10)所示
(9)
(10)
同样,对于环境中其他的行人或障碍物产生的斥力场也可表示为距离的函数。令Urep为斥力势函数,Krep为斥力场系数,d为机器人与其他行人或障碍物之间的距离,p为机器人的坐标,pother为预测的其他行人的期望坐标。周围其他行人的斥力势函数可用式(11)表示。而此斥力场函数的负梯度就是机器人所受的斥力
(11)
(12)
实验环境为普通的车间厂房,引导者在引导机器人时会有加速、减速、左转和右转等运动。在整个过程中会有其他行人在厂房内随意走动进行干扰。
图5展示了机器人在有其他行人遮挡时的实验结果。图中每个行人上方分别有两个数字,左边的数字表示该行人的身份编号,右边代表存储的每个行人的历史记录。此外,每个行人会被一个不同颜色的长方体包围。从图中可以看出,在0号行人走到1号行人身后的过程中,其历史记录在不断减小。这是由0号行人被1号行人遮挡面积过大造成的。此时,只利用方向梯度直方图法无法直接从图像中检测出0号行人。而本文提出的行人模型并没有删除0号行人,而是依据社会力模型预测该行人可能运动到的位置,假设该行人运动到这个位置,并将其历史记录减1。当从1号行人的身后走出时,由于利用方向梯度直方图能检测到该行人并且匹配正确,所以其历史记录又会增大。但在整个过程中两个行人各自的身份编号均未发生变化。这说明了在行人由于交叉行人而短期被遮挡时,本文的方法也能有效识别出行人。
由于摄像头视野范围的限制,当行人不断向机器人走进时,摄像头能看到的人体区域逐渐减小,只能看到人体中间的一小部分信息。仅依靠这部分信息传统无法检测出行人,而本文的方法此时会结合社会力模型及分段颜色直方图信息。从图6中可以看出,本文提出的方法在行人距离机器人较近时依然能够有效检测出行人。
图5 行人相互遮挡识别过程
图6 近距离识别过程
图6近距离识别过程从图7中可以看出在跟随的过程中机器人与引导者的夹角一直小于15度,机器人能够及时跟随引导者转向。而图8显示出机器人与引导者的距离虽有波动,但始终保持在1.5 m附近,能够顺利完成跟随任务。
图7 机器人与目标的夹角曲线
图8 机器人与目标的距离曲线
本文以全向移动平台为硬件环境,基于深度相机提出了一种移动机器人自主跟随方法。其中,行人模型以方向梯度直方图的检测结果为输入,结合深度信息获取行人三维坐标,利用社会力模型来预测行人的运动状态,通过分段颜色直方图匹配来增加每个行人的区分度。最终利用人工势场法进行跟随时的路径规划。通过实验验证了本文方法的有效性,能够在机器人与引导者距离较近或者在行人间相互遮挡时准确地识别行人,进而能够有效地完成跟随任务。