向 超,蒋 林,雷 斌,朱建阳
(1.武汉科技大学机器人与智能系统研究院,湖北 武汉,430081;2.武汉科技大学冶金装备及其控制教育部重点实验室,湖北 武汉,430081)
为了实现移动机器人自主性的导航规划任务,需要进行环境建模即地图构建。移动机器人导航领域中常用的有拓扑地图[1]、特征地图[2]、栅格地图[3]等,其中栅格地图是将环境划分为若干个相同大小的小栅格,用三种不同的颜色信息表示障碍物区域、无障碍物区域以及未知区域,它已成为目前应用于导航中的主流地图形式。研究人员开发并开源了基于粒子滤波[4]、图优化[5]等方法的多种即时定位和栅格地图构建方法。
栅格地图虽然已能满足机器人的基础定位与导航要求,但它只表达了环境结构信息,机器人根据栅格地图进行全局定位时,能够利用的信息还比较少。在机器人重定位过程中,往往采用粒子滤波算法,通过采样粒子与激光雷达信息逐步迭代完成定位,但在没有人为设置条件及其他知识的情况下,粒子滤波方法的全局粒子撒布较为随机,重定位往往会出现错误收敛或短时间内无法收敛的问题。
针对上述问题,胡章芳等[6]通过在环境中布局二维码约束粒子采样,增强了定位效果;黄鹤等[7]则通过在环境内布局多摄像头监控,在多摄像头采集的图像中提取ORB特征匹配检测机器人所在区域,提高了机器人被绑架后重定位的时间效率;张启彬等[8]通过分析机器人到障碍物的距离以及传感器感知面积这两个特征来快速确定机器人可能所在的区域;Park等[9]利用激光雷达信息训练用于位置识别的分类器,完成机器人的粗定位,提高了姿态恢复的成功率。无论是通过布局二维码等人工标记,还是利用视频监控获取机器人位置,这些增强定位效果的方法都不够直接、自主;而在仅通过激光雷达信息完成粗定位时,所利用的栅格地图比较简单,信息不够丰富,同时,利用激光雷达信息单独训练粗定位分类器也较为麻烦。
近些年来,深度学习方法在目标检测领域取得了瞩目的成就[10]。基于卷积神经网络的目标检测方法在计算机视觉技术中得到实际应用,可为机器人提供丰富的语义信息,使得机器人能像人一样思考环境和理解环境,补充栅格地图未能表达的信息,为机器人的定位、导航提供支持。
本文结合深度学习与粒子滤波算法,针对室内环境提出一种加载环境语义信息的移动机器人重定位增强方法,同样将重定位过程分为粗定位与精定位两个阶段,但不同点在于其采用丰富的语义信息初步估计机器人位置,从而在一定程度上增强机器人重定位的准确性与快速收敛性。
本文提出的移动机器人重定位增强方法如图1所示。在建立机器人工作环境地图时,同时获取二维栅格地图与环境内的语义信息,完成遍历后根据栅格地图将环境划分为各个功能区块,获取其各自的语义信息作为功能区特征,建立子区域物体类别表。将语义信息用于环境匹配,完成机器人粗定位,并将该定位结果作为粒子滤波器的先验知识,在子区域中利用粒子滤波器对机器人的姿态进行精确估计。
图1 移动机器人重定位方法的框架结构
Fig.1 Framework of relocalization method for mobile robots
机器人定位可描述为连续时间概率计算问题:bel(Xk)=p(X0∶k|m,z1∶k,u1∶k)。通过贝叶斯方法与马尔科夫假设,将该问题进一步表示为:
bel(Xt)=ηp(zt|Xt,m)p(Xt|Xt-1,ut)bel(Xt-1)
(1)
式中:bel(Xt)为置信度;Xt为机器人t时刻的状态估计;ut为控制量;zt为激光雷达测量数据;η为归一化因子;m为全局地图。
式(1)中包含了预测与更新两个过程,p(Xt|Xt-1,ut)用于生成先验概率分布来预测机器人状态,p(zt|Xt,m)为测量似然概率,两者结合后生成后验概率分布,更新机器人状态估计。
在机器人通过粒子滤波全局重定位时,如果没有先验知识,机器人初始位姿的不确定性较大,往往需要产生足够多的粒子覆盖整个状态空间以获得较好的结果,计算规模与占用内存都会呈指数级增长。同时,在环境结构存在一定相似性、二维环境特征简单、粒子样本数量不足或撒布不均时,由于可利用的信息较为单一,会经常出现错误收敛的情况。为此,本文通过划分室内环境子区域、提取环境内语义信息并采用极大似然估计方法估计机器人所处的子区域,来完成其粗定位,从而约束粒子滤波器的初始粒子分布。
实际室内环境可依据功能分为卧室、客厅、厨房等,而各功能区域包含的可观测物体类型会有一定的区别,显然,这种区别有助于机器人定位。在利用功能区的不同进行定位前,首先要对其进行分离。通常各功能区被墙体所隔,又以地图中的窄通道“门”来连接,因此在“门”的位置加入虚拟墙来分离各个房间。
在图2所示测试环境中,将纸箱作为墙体,分隔出各个房间,在房中摆放不同类型或不同个数物体,以模拟实际环境各功能区域物体种类、数量的不同,其对应的栅格地图见图3(a)。图3描述了区域分离的整个过程:根据栅格地图求得环境中的大轮廓如图3(b)所示(环境真实墙体一般为环境中的大连续障碍物),并得到如图3(c)所示的墙体以内区域;将轮廓图腐蚀、膨胀以连接墙体之间窄通道,结果见图3(d);提取骨架后的结果见图3(e),其基本表达了真实墙体与虚拟墙体,也可表达成如图3(f)所示的建议分块区域;将建议分块区域与图3(c)做差值,可得到如图3(g)所示误差区域;最后将建议分块的每个连续区域分别单独加载到误差图对应位置,并获取对应区域连续域,从而获得某一完整区域,例如将图3(f)左上角区域加载到误差图中得到图3(h),获取连续域后得到图3(i)所示完整区域;组合以上各个区域分块结果并去除区域连接处重复线(虚拟墙,如图3(j)所示)后则获得区域最终分块结果,如图3(k)所示,图中不同颜色区域代表不同功能区,从左至右、自上而下分别定义为区域1~6。
图2 测试环境全景
(a) (b) (c) (d)
(e)
(f) (g) (h) (i) (j)
(k)
图3 区域分块结果
Fig.3 Results of regional separation
在计算机视觉检测识别领域,使用选择性搜索的方法生成候选区域以及基于卷积神经网络的深度学习方法已逐渐替代基于滑动窗口与人工特征提取的传统检测识别方法。当前较为典型的卷积神经网络模型有R-CNN[11]、fast R-CNN[12]、faster R-CNN[13]、YOLO[14]、SSD[15]等,其中SSD结合了YOLO的网格化回归思想和faster R-CNN的Anchor机制,同时还加入了多尺度特征图检测,可兼顾检测速率与检测准确率,有利于机器人对环境的语义信息提取。笔者收集并标注了包含室内常见物体在多视角、多视距、多亮度观测条件下的12 000张室内场景图片,用于SSD模型的训练与测试,得到了室内物体检测识别模型,综合检测精度为0.81。
饮食行为影响因素中,可看到产妇及其配偶文化程度高是部分食物摄入的保护因素,父母/公婆的建议是产妇对相关知识获得的主要途径且会影响产妇对食物的选择,而从医生/护士、网络等获取知识的产妇目前只是少部分。往后的工作中应广泛开展营养健康教育,从而提高产妇及其家属的营养保健知识水平,以降低对女性健康的不利影响。
为了区分环境内的物体类别与个数,本文选用美国微软公司的kinectV2相机获取彩色图与深度图,在标定配准深度相机与彩色相机后,将采集的彩色图像输入至SSD识别模型中得到检测框与类别,并将彩色图像输入至GrabCut方法[16]中得到分割结果,通过深度图像与相机模型获取检测框内剩余点云数据,最后同步SLAM算法的定位信息完成坐标转换并得到检测框内点云的世界坐标,栅格化后得到栅格坐标。将检测到的每个物体都以(label、cells、pose)的形式存储,其中,label为物体类别,cells为栅格坐标系下的物体栅格坐标,pose为第一次检测识别到该物体时机器人的姿态。在遍历环境过程中,如识别到同类物体时,将物体栅格坐标进行连续性判断与重复性匹配,如无直接连续性或重复性较低,则认为其为环境中的另一物体,与此同时记录下检测到该物体时机器人的位姿,保存物体信息,表示机器人于当前位置可观测物体。
由于本文测试环境中的纸箱高度较低,无法如真实墙体一样遮挡相机视野,因此在遍历环境过程中,根据激光雷达扫描距离适当选取相机视距,只获取视距以内物体。在遍历整体环境后,将检测到物体时机器人的姿态pose投影到各个功能区中,如图4(a)中所示,绿点为机器人当前位置,蓝色区域为相机当前观测范围,红色区域为当前机器人所位于的功能区,其对应检测结果如图4(b)所示,表示在当前功能区当前位姿下检测到door与chair。
(a)机器人位姿
(b)检测结果
图4 机器人位姿与当前检测结果
Fig.4 Robot’s pose and current observations
将全部检测结果与机器人位姿投影到各区域后,得到子区域中的物体类别和数量,将其作为各区域特征,用于匹配区分各功能区。表1所示即为根据图2中测试环境得到的对应信息。
表1 子区域中的物体类别和数量
尽管当前采用深度学习方法已经取得较高的检测识别精度,但由于光照等因素还是会产生一定程度上的漏检与误检。为了降低漏检、误检对区域估计的影响,在实际应用中,根据对某一类物体在应用环境中的检出与识别正确率来适当增加或减少该类物体对于区域判断的贡献值,以使粗定位估计更加准确。例如在本文搭建的测试环境中,由于模拟墙体的纸箱与语义库中的柜子外观较为相似,检测识别时偶尔会将纸箱识别成柜子,故本文适当减少了检测到柜子时对区域判断的贡献值。
(2)
在完成粗定位之后,将粒子约束在子区域中,相比于全局分布粒子,排除了语义小概率粒子与其他栅格地图区域对地图匹配的干扰,使机器人于语义高概率区域中通过粒子滤波器估计其位姿。理论上,通过语义信息增强先验知识后的粒子滤波方法能有效提高粒子收敛速度并降低错误收敛概率。
图5为采用传统粒子滤波方法的粒子撒布与重定位结果。图5(a)为粒子全局撒布形式,图5(b)为在图5(a)基础上机器人旋转后的重定位状态,随着机器人的移动与粒子滤波器的迭代,粒子逐渐收敛,最终收敛于区域5,而此时机器人实际位于区域2内,图中彩色点为激光雷达在真实位置扫描结果,在该错误收敛结果下扫描值与地图重合度似乎较高,但实际上是因为环境结构有一定的相似性且栅格地图信息不够丰富导致收敛错误,机器人重定位失败。
(a)粒子分布方式
(b)重定位结果
图5 采用传统粒子滤波方法的重定位结果
Fig.5 Relocalization result by traditional particle filter
在本文方法中,机器人首先利用相机观测周围环境,其中几帧观测结果如图6所示,检测到可视范围内包含了椅子与垃圾桶,未检测到门,且由于在局部地图中两帧观测结果的椅子的点云重复度为0,机器人此时认为该区域中存在两把椅子。根据子区域物体类别表,机器人更相信自身位于2#房间内,得到语义高概率区域,于是将粒子重点分布在该房间,如图7(a)所示。机器人通过粒子滤波器精确定位后,定位结果如图7(b)所示,粒子收敛于区域2内且激光数据与障碍物基本重合,表明此时定位成功。
(a)
(c)
图6 观测结果
Fig.6 Observation results
(a)粒子分布方式
(b)重定位结果
图7 采用本文方法的重定位结果1
Fig.7 Relocalization result 1#by the proposed method
对于应用环境存在多个功能类似区域的情况,为了防止机器人粗定位出错而导致机器人无法成功精定位,在区域估计中出现多区域有相同高概率时,则在环境中的多个子区域分布粒子。例如,在重定位实验中,机器人实际位于测试环境区域6,相机观测周围环境只检测到柜子、椅子,本文方法估计出区域5和区域6有相同高概率,则将粒子分布到这两个子区域,如图8(a)所示,同样可减少粒子分布范围,去除了语义小概率区域对粒子滤波器的干扰,通过粒子滤波器迭代收敛后,最后收敛结果如图8(b)所示,定位成功。
(a)粒子分布方式
(b)重定位结果
图8 采用本文方法的重定位结果2
Fig.8 Relocalization result 2#by the proposed method
为了分析本文方法对于重定位准确率的提升效果,采用传统粒子滤波方法和本文方法在同等粒子数量条件下分别重复进行25次实验,结果如表2中第1、2行所示。由表2可见:粒子全局分布方式的定位成功率为52%;本文同粒子数局部分布方式的定位成功率为88%,其中,3个失败案例是由于出现了漏检与误检使得粗定位估计不准确,最终导致精定位失败,而对于其他粗定位成功的22个案例,随后的精定位全部成功。
表2 实验结果对比
综合图5、图7与表2可知,在采用同等粒子数量的条件下,通过查询先验知识的局部粒子撒布方法的重定位更为准确,而且此时仅仅利用了为数不多的语义特征。如果环境中物体类别更多,语义库、语义特征更加丰富,各区域的区分性就会更高,相应地机器人粗定位的估计准确率也会更高。
为了验证本文方法在粒子数量方面的优势,在机器人粗定位之后,适量降低机器人重定位时粒子撒布数量。如图9所示,粗定位估计机器人位于区域2内,由于区域2约占整体环境1/4的区域,将粒子数量降低为全局撒布粒子方式的1/4。同样重复进行25次重定位实验,结果如表2中第3行所示,重定位成功19次,失败6次,成功率为76%。由于粒子只撒布在局部区域,一定程度上去除了其他区域对于数据匹配的干扰,尽管粒子数量降低为原来的1/4,本文方法的重定位成功率依然比全局均匀撒布粒子方式要高。
(a)粒子分布方式
(b)重定位结果
图9 采用本文方法的重定位结果3
Fig.9 Relocalization result 3#by the proposed method
为了验证本文方法在收敛速度上的优势,从上述同粒子数量条件下的实验中获取重定位成功案例,分别记录重定位过程中粒子平均权重的变化,如图10所示。从本文方法的平均权重变化曲线可见,迭代更新13次后,粒子快速收敛,更新21次后平均权重稳定在较高值;从全局撒布粒子方式的平均权重变化曲线可见,由于粒子分布初值较差,更新过程中平均权重增长较慢,在更新31次后平均权重才达到0.02以上。该实验结果表明,本文方法使机器人在同等粒子数量条件下的全局重定位收敛速度得到明显提高。
图10 粒子平均权重变化曲线
本文针对室内环境下基于粒子滤波的机器人重定位收敛失败、收敛速度慢等问题,提出一种通过提取语义信息来增强定位效果的方法。在机器人建立环境地图时就获取环境语义信息,并根据栅格地图将环境划分为多个子区域。在机器人自主重定位过程中,本文方法先通过机器人观测四周环境,利用环境内的语义信息进行语义节点匹配,从语义上确定自身可能位于的子区域。之后,在语义高概率子区域初始化粒子,大大减少了粒子撒布范围,降低了粒子滤波器的误匹配概率。相较于传统的全局分布粒子滤波重定位方法,加载了语义信息之后,在相同甚至减少粒子数量的情况下,本文方法的机器人重定位准确性更高,定位收敛速度更快。