1.本发明属于机器人技术领域,具体涉及一种基于关键帧的移动机器人高效闭环检测方法。
背景技术:2.自主移动机器人被越来越广泛地应用于生产与生活,其定位与地图构建(simultaneous localization and mapping,slam)作为关键技术,得到了高速发展。
3.常见的slam系统因其使用传感器的不同,可分为激光slam和视觉slam两类。其中,视觉slam(visual slam,v-slam)使用视觉传感器作为唯一输入传感器,例如单目相机、双目相机(立体相机)、rgb-d相机、鱼眼相机和事件相机等。就v-slam系统本身而言,目前较为主流的系统框架包括前端位姿估计、后端优化、闭环检测和地图构建等模块。
4.在机器人设备持续的运行中,由于前端算法局限性所导致的预测误差也会持续积累,这种累计误差将影响到机器人对位置的估计和地图的构建。闭环检测即为解决累计误差问题的主流方法之一。机器人通过闭环检测来判断自己回到一个曾经到过的地点,就可以根据这个闭环的位置来修正累计误差,使机器人得到一个全局一致的估计结果。
5.由于slam系统多用于自动驾驶和机器人导航等领域,对系统的实时性有一定要求,且数据储存空间有限。因此,无法对历史数据逐帧保存,需要按照一定的筛选策略对由传感器获取的图像挑选并进一步储存。在进行闭环检测的判断时,也只针对保存的历史数据进行。因此关键帧的筛选策略直接影响到闭环检测的准确性。最常见的关键帧保存是基于等时间间隔的等距筛选方法,但是在环境中存在动态物体干扰、相机速度或角度变化等影响时,等距筛选方法难以满足slam系统对环境干扰的鲁棒性要求。同时,由于载体在实际运行时,闭环不是经常发生的。始终保持对每一张输出图像都进行基于全部历史数据的逐帧检测是极其浪费计算资源的,且此情况会随着运行时间增加而更加严重。
6.因此,提出一种基于关键帧的移动机器人高效闭环检测方法,利用实际场景中的环境信息对闭环检测的状态进行改变,可以有效降低闭环检测系统所需要的计算成本。
技术实现要素:7.本发明的目的在于针对上述问题,提出一种基于关键帧的移动机器人高效闭环检测方法,能够在保证闭环检测准确率的基础上有效提高关键帧选取结果和闭环检测效率。
8.为实现上述目的,本发明所采取的技术方案为:
9.本发明提出的一种基于关键帧的移动机器人高效闭环检测方法,包括:
10.s1、获取移动机器人采集的图像帧;
11.s2、利用视觉里程计提取当前图像帧的关键点和描述子,并对当前图像帧和其相邻图像帧通过特征匹配进行位姿估计,位姿估计包括相邻图像帧间的旋转角度变化δθ和位移变化δδ;
12.s3、利用语义分割网络将当前图像帧转换为语义图,获得语义分割结果;
13.s4、将移动机器人运行时采集的第一个图像帧记为关键帧,根据位姿估计和语义分割结果提取其余关键帧,过程如下:
14.s41、计算当前图像帧与最近的关键帧间的旋转角度变化δθ的累积和∑δθ与位移变化δδ的累积和∑δδ,并判断∑δθ和∑δδ中任一项是否超过第一预设阈值,若是,执行步骤s42,否则,直接将当前图像帧记为关键帧,执行步骤s5;
15.s42、根据当前图像帧的语义分割结果,计算当前图像帧中动态敏感物体所占像素比例;
16.s43、判断当前图像帧中动态敏感物体所占像素比例是否超过占比阈值,若是,则将当前图像帧的前一间隔帧记为关键帧,后一间隔帧记为待定关键帧,并将待定关键帧作为当前图像帧,返回执行步骤s42,前一间隔帧和后一间隔帧的间隔帧数为第二预设阈值,否则,直接将当前图像帧记为关键帧,执行步骤s5;
17.s5、将各关键帧的关键点和描述子输入bow模型转化为对应的视觉词向量,并将视觉词向量存入历史数据集;
18.s6、对当前图像帧进行闭环检测获得闭环检测结果,即分别计算当前图像帧的视觉词向量与历史数据集中其余视觉词向量间的相似度,将相似度最大的关键帧作为闭环帧;
19.s7、根据闭环检测结果切换闭环检测状态,闭环检测状态包括闭环检测连续状态和闭环检测检索状态,具体如下:
20.s71、自适应切换闭环检测检索状态,闭环检测检索状态包括高注意力状态和低注意力状态,在高注意力状态时,对各图像帧均进行闭环检测,在低注意力状态时,对间隔帧数为第三预设阈值的图像帧进行闭环检测;
21.s72、判定闭环检测连续状态,闭环检测连续状态包括连续状态、非连续状态和待定状态,当发生相邻的图像帧被连续检索为闭环帧时,判定为连续状态并将下一图像帧的历史数据集的闭环检测检索范围设为当前图像帧的前后预设帧数范围,当发生图像帧未被检索为闭环帧时认为连续状态发生中断,判定为待定状态并重置历史数据集的闭环检测检索范围为全范围,当发生多帧图像帧未被检索为闭环帧后判定为非连续状态并保持历史数据集的闭环检测检索范围为全范围。
22.优选地,通过特征匹配进行位姿估计采用对极几何方法。
23.优选地,相似度基于一范数计算获得。
24.优选地,自适应切换闭环检测检索状态,执行如下操作:
25.s721、在移动机器人首次启动运行时,切换为高注意力状态,并获得第一帧发生闭环检测或路口的关键帧,记录此时关键帧的位置为α1;
26.s722、在连续状态时始终保持为高注意力状态,在退出第1个连续状态时记录此时关键帧的位置为β1,并切换为低注意力状态,记状态自转换间隔为
[0027][0028]
s723、在第i个连续状态中,获得连续闭环的开始关键帧的位置αi和结束关键帧的位置βi,对应的状态自转换间隔为
[0029][0030]
式中,εj为第j个状态自转换间隔,αj为第j个连续状态的开始关键帧的位置,β
j-1
为第j-1个连续状态的结束关键帧的位置,i、j均为正整数;
[0031]
s724、保存每次的状态自转换间隔至历史数据集,并根据状态自转换间隔的规律性,在当前闭环检测结束后,预测出未来εi帧内不会发生闭环并切换为低注意力状态,在低注意力状态结束后切换回高注意力状态。
[0032]
优选地,自适应切换闭环检测检索状态,还执行如下操作:
[0033]
判断低注意力状态下是否检测到闭环发生,若是,回调当前图像帧的启动位置为发生闭环的位置,同时在历史数据集中更新状态自转换间隔数据的记录。
[0034]
与现有技术相比,本发明的有益效果为:
[0035]
本方法针对现有的基于关键帧提取的视觉slam闭环检测模块进行改进,关键选取结合了图像帧间运动和场景中的敏感信息以在避免过多的图像帧间信息冗余的情况下,保证了关键帧选取的高效性,同时根据判定闭环检测的连续状态和记录当前场景的场景信息,对检测的状态进行自适应切换,可以有效节省系统运行过程中的运算量,能够在保证闭环检测准确率的基础上有效提高系统的关键帧选取结果和闭环检测效率。
附图说明
[0036]
图1为本发明基于关键帧的移动机器人高效闭环检测方法的流程图;
[0037]
图2为本发明关键帧的提取流程图;
[0038]
图3为本发明闭环检测连续状态的切换流程图;
[0039]
图4为本发明闭环检测检索状态的切换流程图。
具体实施方式
[0040]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0041]
需要说明的是,除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本技术。
[0042]
如图1-4所示,一种基于关键帧的移动机器人高效闭环检测方法,包括:
[0043]
s1、获取移动机器人采集的图像帧。
[0044]
s2、利用视觉里程计提取当前图像帧的关键点和描述子,并对当前图像帧和其相邻图像帧通过特征匹配进行位姿估计,位姿估计包括相邻图像帧间的旋转角度变化δθ和位移变化δδ。
[0045]
在一实施例中,通过特征匹配进行位姿估计采用对极几何方法。
[0046]
s3、利用语义分割网络将当前图像帧转换为语义图,获得语义分割结果。
[0047]
s4、将移动机器人运行时采集的第一个图像帧记为关键帧,根据位姿估计和语义
分割结果提取其余关键帧,过程如下:
[0048]
s41、计算当前图像帧与最近的关键帧间的旋转角度变化δθ的累积和∑δθ与位移变化δδ的累积和∑δδ,并判断∑δθ和∑δδ中任一项是否超过第一预设阈值,若是,执行步骤s42,否则,直接将当前图像帧记为关键帧,执行步骤s5。
[0049]
s42、根据当前图像帧的语义分割结果,计算当前图像帧中动态敏感物体所占像素比例。
[0050]
s43、判断当前图像帧中动态敏感物体所占像素比例是否超过占比阈值,若是,则将当前图像帧的前一间隔帧记为关键帧,后一间隔帧记为待定关键帧,并将待定关键帧作为当前图像帧,返回执行步骤s42,前一间隔帧和后一间隔帧的间隔帧数为第二预设阈值,否则,直接将当前图像帧记为关键帧,执行步骤s5。
[0051]
首先计算当前图像帧相对上一关键帧(即最近的关键帧)的相对运动,进行运动判定,过程如下:
[0052]
对于两个连续图像帧i1和i2,由视觉里程计可以得到两图像帧之间的旋转角度变化δθ和位移变化δδ。在移动机器人的slam系统(如包括相机和视觉里程计)开始运行后,将第一图像帧记录为第一帧关键帧,然后逐渐累积连续图像帧间的旋转角度变化δθ和位移变化δδ,累计和分别记为∑δθ和∑δδ。当∑δθ和∑δδ中的任意一项累计和超过第一预设阈值,则将当前图像帧记录为关键帧,并以当前的新关键帧为新的开始,重新记录累计和∑δθ和∑δδ。由二维图像间(即2d-2d)使用的对极几何方法,可以计算出相邻图像帧间的位姿变换。
[0053]
根据上述计算的累计和,判断当前图像帧距上一关键帧的位置变化是否超过第一预设阈值,若不超过,直接将当前图像帧记为关键帧,并在后续进行下一次关键帧判断;若超过第一预设阈值,则继续根据由当前图像帧获取的语义分割结果进行动态敏感物体判定,计算其中动态敏感物体所占像素比例。根据相机运动变化和动态敏感物体作为复合决策,即采用运动判定和动态敏感物体判定作为关键帧提取策略,最终决定某一图像帧是否为关键帧,具体流程如图2所示。
[0054]
s5、将各关键帧的关键点和描述子输入bow模型转化为对应的视觉词向量,并将视觉词向量存入历史数据集。
[0055]
获取到关键帧后,将关键帧的特征提取结果(关键点和描述子)输入到bow模型转化为对应的视觉词向量,并进一步存入历史数据集,并进行闭环检测,即根据一范数计算视觉词向量间的相似度,历史数据集中相似度最大的关键帧被认定为闭环帧。在获取到新的图像帧后,也通过bow模型将其特征提取结果转化为视觉词向量并计算闭环检测。
[0056]
s6、对当前图像帧进行闭环检测获得闭环检测结果,即分别计算当前图像帧的视觉词向量与历史数据集中其余视觉词向量间的相似度,将相似度最大的关键帧作为闭环帧。
[0057]
在一实施例中,相似度基于一范数计算获得。
[0058]
s7、根据闭环检测结果切换闭环检测状态,闭环检测状态包括闭环检测连续状态和闭环检测检索状态,具体如下:
[0059]
s71、自适应切换闭环检测检索状态,闭环检测检索状态包括高注意力状态和低注意力状态,在高注意力状态时,对各图像帧均进行闭环检测,在低注意力状态时,对间隔帧
数为第三预设阈值的图像帧进行闭环检测。
[0060]
在一实施例中,自适应切换闭环检测检索状态,执行如下操作:
[0061]
s721、在移动机器人首次启动运行时,切换为高注意力状态,并获得第一帧发生闭环检测或路口的关键帧,记录此时关键帧的位置为α1;
[0062]
s722、在连续状态时始终保持为高注意力状态,在退出第1个连续状态时记录此时关键帧的位置为β1,并切换为低注意力状态,记状态自转换间隔为
[0063][0064]
s723、在第i个连续状态中,获得连续闭环的开始关键帧的位置αi和结束关键帧的位置βi,对应的状态自转换间隔为
[0065][0066]
式中,εj为第j个状态自转换间隔,αj为第j个连续状态的开始关键帧的位置,β
j-1
为第j-1个连续状态的结束关键帧的位置,i、j均为正整数;
[0067]
s724、保存每次的状态自转换间隔至历史数据集,并根据状态自转换间隔的规律性,在当前闭环检测结束后,预测出未来εi帧内不会发生闭环并切换为低注意力状态,在低注意力状态结束后切换回高注意力状态。
[0068]
在一实施例中,自适应切换闭环检测检索状态,还执行如下操作:
[0069]
判断低注意力状态下是否检测到闭环发生,若是,回调当前图像帧的启动位置为发生闭环的位置,同时在历史数据集中更新状态自转换间隔数据的记录。
[0070]
其中,将闭环检测检索状态分为高注意力状态和低注意力状态两种。高注意力状态代表对新获取的每一帧都进行闭环检测的判断,低注意力状态将根据一定的筛选对新获取的关键帧进行闭环检测,如筛选出间隔帧数为第三预设阈值的图像帧,在两种状态下自适应切换,以节省计算资源。
[0071]
随着移动机器人的运行,会逐渐记录经过的闭环检测的规律性,并作为下次状态的判定基础,即通过将每一次的状态自转换间隔保存到历史数据集中,并随着移动机器人的运行逐渐获取所处场景的间隔规律。在当前闭环检测结束后,预测出未来εi帧内不会发生闭环并切换为低注意力状态,在预测εi帧结束后切换为高注意力状态。需要说明的是,采集的图像帧可批量上报,通过指定当前图像帧进行闭环检测。
[0072]
因为间隔规律会存在间隔很小或间隔很大的情况,难以满足所有间隔的要求。为保证不丢失闭环,会通过对路口的判断和间隔闭环检测的结果及时调整当前的检测状态,并在低注意力状态检测到闭环发生时(即预测失败时),因为低注意力状态下,两图像帧间有数帧是不检查的,这时需要把这些原本不检测的图像帧重新回查一遍,及时回调检测帧的启动位置(开始关键帧的位置)为发生闭环的位置,同时在历史数据集中更新状态自转换间隔的记录,如图4所示。
[0073]
在移动机器人首次启动运行时,可能存在很长时间不发生闭环的现象,此时将“路口”信息也当作闭环信息处理,路口可通过对图像语义信息(语义分割结果)的获取,如借助于道路信息(红绿灯、交通标识牌和斑马线等)对道路形状做出判断,可以有效在无闭环发生情况下记录场景规律。此外,在连续状态中,如果未触发退出连续状态的条件,移动机器
人始终工作在高注意力状态中,以防止闭环检测的偶发误判,导致对历史数据的错误记录和使用。
[0074]
s72、判定闭环检测连续状态,闭环检测连续状态包括连续状态、非连续状态和待定状态,当发生相邻的图像帧被连续检索为闭环帧时,判定为连续状态并将下一图像帧的历史数据集的闭环检测检索范围设为当前图像帧的前后预设帧数范围,当发生图像帧未被检索为闭环帧时认为连续状态发生中断,判定为待定状态并重置历史数据集的闭环检测检索范围为全范围,当发生多帧图像帧未被检索为闭环帧后判定为非连续状态并保持历史数据集的闭环检测检索范围为全范围。
[0075]
其中,将闭环检测连续状态设定为三种状态:连续状态、非连续状态和待定状态。连续状态代表判定出当前移动机器人回到一条曾经行驶过的路径而产生连续发生闭环的状态。非连续状态代表判定出当前移动机器人未回到一条曾经行驶过的路径从而未产生连续发生闭环的状态。为保证在实际运行中正确检测到所有闭环真值,此处增加待定状态,以防止频繁地切换检测状态。如图3所示,通过对闭环检测结果的连续性进行判定,当发生相邻的历史数据集中的图像帧被连续检索为闭环帧时,即判定发生连续闭环状态,同时切换历史数据的检索范围,将下一图像帧的历史数据集的闭环检测检索范围设为当前图像帧的前后预设帧数范围,如为当前图像帧的前20帧和后20帧,每次发生闭环时,置连续flag+1、非连续flag等于m,连续flag的初始值等于0,当连续flag累积大于等于n时,如n=2,判定为连续状态。若连续状态发生中断,如图像帧未发生闭环,则认为发生中断,每次发生中断记非连续flag-1,非连续flag的初始值等于m,此处m=3,m值可根据实际需求设定,暂时进入待定状态,再次发生多帧中断后切换为非连续状态,即满足非连续flag小于等于1时切换为非连续状态,在待定状态和非连续状态,历史数据集的闭环检测检索范围均为全范围。
[0076]
对于移动机器人从不同方向重新经过一个历史位置的情况,在闭环位置只会发生短暂的连续闭环,并且相对于完整的行驶过程,闭环情况的发生只是小概率事件。对于道路行驶等非室内运行情况,在检测到一次闭环发生后,一般不会马上发生新的闭环。这个现象本质取决于道路场景的闭环发生情况只有3种:道路同方向再次驶过,道路逆方向再次驶过,路口驶过。对于前两种,上述基于连续状态的检索范围改变能够在一定程度上降低计算成本,对于第三种,可以通过自适应历史数据和图像语义信息判断的联合触发筛选策略进行解决。
[0077]
本方法针对现有的基于关键帧提取的视觉slam闭环检测模块进行改进,关键选取结合了图像帧间运动和场景中的敏感信息以在避免过多的图像帧间信息冗余的情况下,保证了关键帧选取的高效性,同时根据判定闭环检测的连续状态和记录当前场景的场景信息,对检测的状态进行自适应切换,可以有效节省系统运行过程中的运算量,能够在保证闭环检测准确率的基础上有效提高系统的关键帧选取结果和闭环检测效率。
[0078]
以上所述实施例的各技术特征可以进行任意的组合,且步骤顺序可根据实际需求调整,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0079]
以上所述实施例仅表达了本技术描述较为具体和详细的实施例,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,
本技术专利的保护范围应以所附权利要求为准。