本发明涉及机器人技术领域,具体而言,涉及一种机器人重定位方法及装置。
背景技术:
机器人在移动的过程中,需要二维激光测距传感器不断的向外发射激光,测量机器人距离障碍物的距离,以使机器人躲避障碍物,在移动机器人的导航中得到了广泛的应用,而基于激光传感器的同步定位与建图(Simultaneous Localization and Mapping,SLAM)能够在机器人移动的过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的地主定位和导航。
但是,基于激光的SLAM经常会出现由于人为移动或者系统本身的原因发生定位错误,当发生这样的问题后,现有技术中,大都是重新开始建图,但是,重新建图一方面会导致建图成本增加,另一方面重新建图时,机器人只能终止现在正在执行的任务,导致任务的中断。
技术实现要素:
有鉴于此,本发明实施例的目的在于提供一种机器人重定位方法及装置,以解决现有技术中,当基于激光的SLAM出现定位错误时,需要重新建图,这样一方面导致建图成本增加,另一方面导致机器人正在执行的任务终止的问题。
第一方面,本发明实施例提供了一种机器人重定位方法,其中,所述方法包括:
获取机器人当前发出的激光数据和所述机器人所在位置对应的局部地图,将所述激光数据和所述局部地图进行匹配,根据匹配结果判断当前定位的所述机器人的位置是否准确;
当确定当前定位的所述机器人的位置不准确时,将与所述激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在所述局部地图上对应的区域确定为重定位的候选区域;
计算所述候选区域的不同位置与所述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的所述机器人的位置。
结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述将所述激光数据和所述局部地图进行匹配,包括:
获取所述机器人在所述局部地图上的位置坐标,根据所述位置坐标通过坐标转换的方法计算所述激光数据中的激光点在所述局部地图上的映射点坐标;
根据所述激光点在所述局部地图上对应的映射点在预设区域内是否存在障碍点,对所述激光点进行积分;
根据所述激光点的积分,计算所述激光数据中的所有激光点的平均积分值;
将所述平均积分值确定为所述激光数据与所述局部地图的匹配分数。
结合第一方面的第一种可能的实现方式,本方面实施例提供了上述第一方面的第二种可能的实现方式,其中,所述根据匹配结果判断当前定位的所述机器人的位置是否准确,包括:
将所述匹配分数与预设阈值进行比较,当所述匹配分数小于所述预设阈值时,确定当前定位的所述机器人的位置不准确。
结合第一方面,本方面实施例提供了上述第一方面的第三种可能的实现方式,其中,所述将与所述激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在所述局部地图上对应的区域确定为重定位的候选区域,包括:
生成所述激光数据的直方图;
采用相关系数法分别计算所述激光数据对应的直方图与所述预存激光数据对应的直方图的相关性分数;
将所述相关性分数与预设分数值进行比较,选取所述相关性分数大于或者等于预设分数值的至少一个预存激光数据;
将所述至少一个预存激光数据在所述局部地图上对应的区域确定为重定位的候选区域。
结合第一方面的第三种可能的实现方式,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述生成所述激光数据的直方图,包括:
按照预设角度间隔将360°平均划分为多个角度区间;
统计方向角落在每个所述角度区间内的激光点,并计算每个所述角度区间内的激光点与所述机器人的距离的平均值;
将所述角度区间确定为所述直方图的横轴,将所述平均值确定为所述直方图的纵轴。
结合第一方面,本方面实施例提供了上述第一方面的第五种可能的实现方式,其中,所述计算所述候选区域的不同位置与所述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的所述机器人的位置,包括:
获取所述候选区域的起始匹配位置,计算所述起始匹配位置与所述激光数据的匹配分数;
选取距离所述起始匹配位置预设步长的多个匹配位置,分别计算多个所述匹配位置与所述激光数据的匹配分数;
将所述起始匹配位置对应的匹配分数与多个所述匹配位置对应的匹配分数进行比较,根据比较结果调整所述预设步长,重新确定匹配位置进行匹配,直至确定出匹配分数最大的位置。
第二方面,本发明实施例提供了一种机器人重定位装置,其中,所述装置包括:
匹配模块,用于获取机器人当前发出的激光数据和所述机器人所在位置对应的局部地图,将所述激光数据和所述局部地图进行匹配,根据匹配结果判断当前定位的所述机器人的位置是否准确;
第一确定模块,用于当确定当前定位的所述机器人的位置不准确时,将与所述激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在所述局部地图上对应的区域确定为重定位的候选区域;
第二确定模块,用于计算所述候选区域的不同位置与所述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的所述机器人的位置。
结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述匹配模块包括:
坐标转换单元,用于获取所述机器人在所述局部地图上的位置坐标,根据所述位置坐标通过坐标转换的方法计算所述激光数据中的激光点在所述局部地图上的映射点坐标;
积分单元,用于根据所述激光点在所述局部地图上对应的映射点在预设区域内是否存在障碍点,对所述激光点进行积分;
第一计算单元,用于根据所述激光点的积分,计算所述激光数据中的所有激光点的平均积分值;
第一确定单元,用于将所述平均积分值确定为所述激光数据与所述局部地图的匹配分数。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述匹配模块还包括:
比较单元,用于将所述匹配分数与预设阈值进行比较,当所述匹配分数小于所述预设阈值时,确定当前定位的所述机器人的位置不准确。
结合第二方面,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述第一确定模块包括:
生成单元,用于生成所述激光数据的直方图;
第二计算单元,用于采用相关系数法分别计算所述激光数据对应的直方图与所述预存激光数据对应的直方图的相关性分数;
选取单元,用于将所述相关性分数与预设分数值进行比较,选取所述相关性分数大于或者等于预设分数值的至少一个预存激光数据;
第二确定单元,用于将所述至少一个预存激光数据在所述局部地图上对应的区域确定为重定位的候选区域。
结合第二方面的第三种可能的实现方式,本发明实施例提供了上述第二方面的第四种可能的实现方式,其中,所述生成单元包括:
划分子单元,用于按照预设角度间隔将360°平均划分为多个角度区间;
统计子单元,用于统计方向角落在每个所述角度区间内的激光点,并计算每个所述角度区间内的激光点与所述机器人的距离的平均值;
确定子单元,用于将所述角度区间确定为所述直方图的横轴,将所述平均值确定为所述直方图的纵轴。
结合第二方面,本发明实施例提供了上述第二方面的第五种可能的实现方式,其中,所述第二确定模块包括:
第三确定单元,用于获取所述候选区域的起始匹配位置,计算所述起始匹配位置与所述激光数据的匹配分数;
第三计算单元,用于选取距离所述起始匹配位置预设步长的多个匹配位置,分别计算多个所述匹配位置与所述激光数据的匹配分数;
第四确定单元,用于将所述起始匹配位置对应的匹配分数与多个所述匹配位置对应的匹配分数进行比较,根据比较结果调整所述预设步长,重新确定匹配位置进行匹配,直至确定出匹配分数最大的位置。
本发明实施例提供的机器人重定位方法及装置,当出现当前定位的机器人的位置不准确时,会根据机器人当前发出的激光数据的直方图确定重定位的候选区域,将候选区域的不同位置与机器人当前发出的激光数据进行匹配,对机器人进行重定位,确定重定位的机器人的位置,不需要重新建图,避免了由于重新建图而导致建图成本增加及机器人终止正在执行的任务的情况。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例1所提供的机器人重定位方法的流程图;
图2示出了本发明实施例1所提供的机器人重定位方法中确定的上下左右四个位置与起始匹配位置的位置关系示意图;
图3示出了本发明实施例2所提供的机器人重定位装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到相关技术中,应用于机器人上的基于激光的SLAM经常会出现由于人为移动或者系统本身的原因定位发生错位,当出现这样的问题后,现有技术中,大都是重新开始建图,但是,这样一方面导致建图成本增加,另一方面,当重新建图时,机器人只能终止现在正在执行的任务,导致任务的中断。基于此,本发明实施例提供了一种机器人重定位方法及装置,下面通过实施例进行描述。
实施例1
本发明实施例提供了一种机器人重定位方法,当通过SLAM构建的地图中定位的机器人的位置出现错误时,采用本发明实施例提供的方法进行机器人重定位,不需要重新构建地图,避免了由于重新建图而导致建图成本增加及机器人终止正在执行的任务的情况。
当机器人在执行某项任务或者在移动时,机器人上的激光测距系统会不断向外发射激光,发射的激光遇到障碍物时会反射回来,通过反射回来的信号可以判断是否存在障碍物,以此实现机器人的避障和路径规划。
如图1所示,本发明实施例提供的机器人重定位方法,具体包括步骤S110-S130。
S110,获取机器人当前发出的激光数据和机器人所在位置对应的局部地图,将上述激光数据和局部地图进行匹配,根据匹配结果判断当前定位的机器人的位置是否准确。
上述机器人当前发出的激光数据指的是机器人上的激光测距系统向外发出的激光点的集合,该激光数据包括以机器人所在位置为中心的一系列的激光点集,可以用P表示上述点集,上述点集P中的每个激光点Pi用两个参数表征,分别是该激光点距离机器人的距离di和该激光点的方向角ai,这两个参数表示在机器人的ai方向且距离机器人di的位置存在障碍物。
机器人在移动的过程中,机器人上的SLAM系统会构建机器人当前位置的局部地图,为了判断SLAM构建的局部地图上机器人的位置是否准确,需要将上述机器人当前发出的激光数据和局部地图进行匹配,匹配的具体过程包括:
获取机器人在局部地图上的位置坐标,根据位置坐标通过坐标转换的方法计算激光数据中的激光点在局部地图上的映射点坐标;根据激光点在局部地图上对应的映射点在预设区域内是否存在障碍点,对上述激光点进行积分;根据激光点的积分,计算激光数据中的所有激光点的平均积分值;将上述平均积分值确定为激光数据与局部地图的匹配分数。
在构建的机器人的当前位置对应的局部地图上,机器人的位置坐标表示为pos(x,y,yaw),其中,x和y表示机器人在局部地图上的位置,yaw表示机器人在局部地图上的方向,且yaw的取值范围为(0-2π),且上述机器人的位置坐标相对于上述局部地图的左上角,即以局部地图的左上角作为坐标原点。
根据激光数据中每个激光点的参数,以及机器人在局部地图上的位置坐标,通过坐标转换方法可以计算出每个激光点在上述局部地图上的映射点的坐标,计算过程中所使用的坐标转换方程如下所示,
xi=x+di*cos(yaw+ai)
yi=y+di*sin(yaw+ai)
其中,在上述公式中,(xi,yi)为激光数据中任意一个激光点在局部地图上的映射点的坐标,(x,y,yaw)为机器人在上述局部地图上的位置坐标,ai为上述任意一个激光点的方向角,di为上述任意一个激光点距离机器人的距离。
通过上述方式,可以计算出激光数据中每个激光点在上述局部地图上的映射点的位置坐标,由此可以确定出激光数据中每个激光点在上述局部地图上的映射点的位置,如果上述定位的机器人的位置正确,那么激光数据中的激光点在上述局部地图上的映射点应该落在局部地图上的障碍点处,如果定位的机器人的位置不正确,那么激光数据中的激光点在上述局部地图上的映射点则无法全部落在局部地图上的障碍点处。
因此,当计算出激光数据中的每个激光点在上述局部地图上的映射点的位置坐标后,判断以映射点为中心的周围预设区域内是否存在障碍点,如果存在障碍点,则该映射点对应的激光点积分为1,如果不存在障碍点,则不对该映射点对应的激光点积分,即该映射点对应的激光点的积分为0,通过上述方式得到激光数据中每个激光点的积分,并通过下述公式计算激光数据中所有激光点的积分平均值,
其中,在上述公式中,score为激光数据中所有激光点的积分平均值,N为激光数据中激光点的个数,Si为激光数据中任意一个激光点的积分,Si的取值为0或1。
将上述计算出的激光数据中所有激光点的积分平均值确定为激光数据和局部地图的匹配分数,当确定出上述匹配分数后,需要根据匹配分数判断当前定位的机器人的位置是否准确,具体包括:将上述匹配分数与预设阈值进行比较,当匹配分数小于预设阈值时,确定当前定位的机器人的位置不准确。
其中,上述预设阈值是预先设置的一个积分值,该预设阈值可以根据实际应用场景进行设置,本发明实施例并不限定上述预设阈值的具体取值。
将上述计算出的激光数据与局部地图的匹配分数和预设阈值进行比较,当上述匹配分数大于或者等于预设阈值时,确定当前定位的机器人的位置准确,即不需要对机器人进行重定位;当上述匹配分数小于预设阈值时,确定当前定位的机器人的位置不准确,即当前定位失败,这时需要对机器人进行重定位。
S120,当确定当前定位的机器人的位置不准确时,将与上述激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在上述局部地图上对应的区域确定为重定位的候选区域。
在步骤S110中通过激光数据与局部地图的匹配分数和预设阈值进行比较可以判断当前定位的机器人的位置是否准确,当确定出当前定位的机器人的位置不准确时,需要对机器人进行重定位,首先需要选取重定位的候选区域。
上述将与激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在上述局部地图上对应的区域确定为重定位的候选区域,具体包括:生成上述激光数据的直方图;采用相关系数法分别计算激光数据对应的直方图与预存激光数据对应的直方图的相关性分数;将上述相关性分数与预设分数值进行比较,选取相关性分数大于或者等于预设分数值的至少一个预存激光数据;将上述至少一个预存激光数据在局部地图上对应的区域确定为重定位的候选区域。
其中,上述预存激光数据是预先保存的一些激光数据,这些激光数据在局部地图上对应的区域分布在局部地图上不同的位置,预存激光数据包括采集预存激光数据时机器人在当前局部地图上的位置(xi,yi,yawi),预存激光数据中每个激光点的参数特征,该参数特征分别是该激光点距离机器人的距离di和该激光点的方向角ai,这两个参数表示在机器人的ai方向且距离机器人di的位置存在障碍物,以及该预存激光数据对应的直方图。
上述生成机器人当前发出的激光数据的直方图具体包括:按照预设角度间隔将360°平均划分为多个角度区间;统计方向角落在每个角度区间内的激光点,并计算每个角度区间内的激光点与机器人的距离的平均值;将角度区间确定为直方图的横轴,将平均值确定为直方图的纵轴。
其中,上述预设角度间隔为预先设置的角度值,可以为30°,还可以为其它数值,本发明实施例并不限定上述预设角度间隔的具体数值,如果上述预设角度间隔为30°,则将360°划分为12个角度区间,每个角度区间为30°,即划分的12个角度区间分别为0-30°、30-60°、60-90°、90-120°、120-150°、150-180°、180-210°、210-240°、240-270°、270-300°、300-330°、330-360°,上述只是以30°为例介绍角度区间的划分,并没有限定上述预设角度间隔的具体数值,上述预设角度间隔的具体数值可以根据实际应用场景进行设置。
根据激光数据中每个激光点的方向角,统计出方向角在每个角度区间内的激光点,根据每个激光点与机器人之间的距离di,以及每个角度区间内的激光点,计算出每个角度区间内的激光点与机器人之间的距离的平均值,任意一个角度区间内激光点与机器人之间的距离的平均值可以用Vi表示,上述多个角度区间对应的平均值可以形成特征向量V={v1,v2,v3…vM},其中,M为划分的角度区间的个数,上述v1为第一个角度区间内激光点与机器人之间的距离的平均值,上述v2为第二个角度区间内激光点与机器人之间的距离的平均值,上述vM为第M个角度区间内激光点与机器人之间的距离的平均值。
以角度区间作为横轴,以距离的平均值作为纵轴,根据每个角度区间对应的距离的平均值,生成上述激光数据的直方图。
当生成了上述激光数据的直方图后,采用相关系数法分别计算激光数据对应的直方图与预存激光数据对应的直方图的相关性分数,下面将以一个预存激光数据为例详细介绍相关分数的计算过程,具体包括:
上述激光数据对应的特征向量为V={v1,v2,v3…vM},上述预存激光数据中的其中一个预存激光数据对应的直方图的特征向量为U={u1,u2,u3…uM},通过如下公式可以计算出激光数据对应的直方图和上述其中一个预存激光数据对应的直方图的相关性分数,
其中,在上述公式中,s表示的是上述激光数据对应的直方图和其中一个预存激光数据对应的直方图的相关性分数,M为划分的角度区间的个数。
通过上述方法计算出预存激光数据中的每个预存激光数据对应的直方图与上述激光数据对应的直方图之间的相关性分数。
上述相关性分数的数值越大,说明预存激光数据对应的直方图与上述激光数据对应的直方图的相似度越大。
当计算出上述每个预存激光数据对应的直方图与上述激光数据对应的直方图的相关性分数之后,将所有的相关性分数与预设分数进行比较,选取相关性分数大于或者等于预设分数的相关性分数对应的预设激光数据,其中,选取的该预设激光数据至少为一个,即可以为一个也可以为多个,并将上述选取的至少一个预设激光数据在局部地图上对应的区域确定为重定位的候选区域。
其中,上述预设分数是预先设置的一个数值,该数值可以根据实际应用场景进行设置,本发明实施例并不限定上述预设分数的具体数值。
S130,计算上述候选区域的不同位置与上述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的机器人的位置。
当确定出重定位的候选区域后,需要将该候选区域的不同位置与机器人当前发出的激光数据进行匹配,以此确定重定位的机器人的位置,由于,上述确定的候选区域为至少一个,所以上述候选区域可以为一个,也可以为多个。
当上述候选区域只有一个时,计算候选区域的不同位置与上述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的机器人的位置,具体包括:
获取候选区域的起始匹配位置,计算起始匹配位置与上述激光数据的匹配分数;选取距离起始匹配位置预设步长的多个匹配位置,分别计算上述多个匹配位置与上述激光数据的匹配分数;将起始匹配位置对应的匹配分数与上述多个匹配位置对应的匹配分数进行比较,根据比较结果调整上述预设步长,重新确定匹配位置进行匹配,直至确定出匹配分数最大的位置。
其中,每个预存激光数据都携带有一个位置信息,该位置信息在局部地图上对应的位置就是该预存激光数据对应的候选区域的起始匹配位置,假设上述候选区域的起始匹配位置为TO,在起始匹配位置T0进行预设旋转角度的旋转,采用步骤S110中的方法将上述激光数据与机器人在当前位置对应的局部地图进行匹配,计算起始匹配位置与上述激光数据的匹配分数,之后,选取距离起始匹配位置预设步长的多个匹配位置,比如说,可以选取距离起始匹配位置预设步长的上下左右四个匹配位置,或者可以选择距离起始匹配位置预设步长的左上、左下、右上和右下四个匹配位置,或者选取距离起始匹配位置预设步长的多个匹配位置,该多个匹配位置均匀分布在起始匹配位置的周围,上述多个可以为任意数值,当然还可以选取距离起始匹配位置预设步长范围内的所有的匹配位置,本发明实施例将以上下左右四个匹配位置为例进行介绍,如图2所示,选取的上下左右四个匹配位置分别为T1、T2、T3和T4,且T1和T0之间的距离为预设步长,T2和T0之间的距离为预设步长,T3和T0之间的距离为预设步长,T4和T0之间的距离为预设步长,在位置T1、T2、T3和T4分别进行预设旋转角度的旋,采用步骤S110中的方法分别将上述四个匹配位置与上述激光数据进行匹配,计算上述四个匹配位置与上述激光数据的匹配分数。
当计算出起始匹配位置和上述四个匹配位置对应的匹配分数后,将起始匹配位置对应的匹配分数与上述四个匹配位置对应的匹配分数进行比较,如果比较结果是起始匹配位置对应的匹配分数最大,则缩短上述预设步长,将上述预设步长缩短至第二预设步长,仍然以起始匹配位置开始,选取距离起始匹配位置第二预设步长的上下左右四个匹配位置,即该上下左右四个匹配位置位于原来匹配位置T1、T2、T3、T4和起始匹配位置T0之间某个位置上,并采用步骤S110中的方法将重新选取的上下左右四个匹配位置与机器人的上述激光数据进行匹配,计算当前四个匹配位置与激光数据的匹配分数,并将该四个匹配位置对应的匹配分数与起始匹配位置对应的匹配分数进行比较,如果仍然是起始匹配位置对应的匹配分数最大,则缩短第二预设步长,以此类推,通过上述预设步长不断收敛的方法确定出候选区域中匹配分数最大的位置,将匹配分数最大的位置确定为重定位的机器人的位置。
如果将起始匹配位置TO对应的匹配分数与匹配位置T1、T2、T3和T4对应的匹配分数进行比较后,匹配位置T1、T2、T3或者T4中任意一个匹配位置对应的匹配分数最大,则将该匹配位置确定为初始匹配位置,选取距离重新确定的初始匹配位置预设步长的上下左右四个匹配位置,分别将该四个匹配位置与上述激光数据进行匹配,以此确定出该候选区域中匹配分数最大的位置,将该候选区域中匹配分数最大的位置确定为重定位的机器人的位置。
当上述选取的候选区域为多个时,首先采用上述方法,确定出每个候选区域的匹配分数最大的位置,将上述多个候选区域的最大匹配分数进行比较,从多个候选区域中选出匹配分数最大的候选区域,将该候选区域上匹配分数最大的位置确定为重定位的机器人的位置。
本发明实施例提供的机器人重定位方法,当出现当前定位的机器人的位置不准确时,会根据机器人当前发出的激光数据的直方图确定重定位的候选区域,将候选区域的不同位置与机器人当前发出的激光数据进行匹配,对机器人进行重定位,确定重定位的机器人的位置,不需要重新建图,避免了由于重新建图而导致建图成本增加及机器人终止正在执行的任务的情况。
实施例2
本发明实施例提供了一种机器人重定位装置,如图3所示,本发明实施例提供的装置包括匹配模块310、第一确定模块320、第二确定模块330;
上述匹配模块310,用于获取机器人当前发出的激光数据和机器人所在位置对应的局部地图,将上述激光数据和局部地图进行匹配,根据匹配结果判断当前定位的机器人的位置是否正确;
上述第一确定模块320,用于当确定当前定位的机器人的位置不准确时,将与激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在上述局部地图上对应的区域确定为重定位的候选区域;
上述第二确定模块330,用于计算上述候选区域的不同位置与上述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的机器人的位置。
其中,上述匹配模块310将上述激光数据和上述局部地图进行匹配,是通过坐标转换单元、积分单元、第一计算单元和第一确定单元来实现的,具体包括:
上述坐标转换单元,用于获取机器人在上述局部地图上的位置坐标,根据上述位置坐标通过坐标转换的方法计算激光数据中的激光点在局部地图上的映射点坐标;上述积分单元,用于根据上述激光点在局部地图上对应的映射点在预设区域内是否存在障碍点,对激光点进行积分;上述第一计算单元,用于根据激光点的积分,计算激光数据中的所有激光点的平均积分值;上述第一确定单元,用于将上述平均积分值确定为激光数据与局部地图的匹配分数。
上述匹配模块310根据匹配结果判断当前定位的机器人的位置是否准确,是通过比较单元实现的,具体包括:
上述比较单元,用于将上述匹配分数与预设阈值进行比较,当匹配分数小于上述预设阈值时,确定当前定位的机器人的位置不准确。
将上述计算出的激光数据与局部地图的匹配分数和预设阈值进行比较,当上述匹配分数大于或者等于预设阈值时,确定当前定位的机器人的位置准确,即不需要对机器人进行重定位;当上述匹配分数小于预设阈值时,确定当前定位的机器人的位置不准确,即当前定位失败,这时需要对机器人进行重定位。
其中,上述第一确定模块320将与激光数据的直方图的相似度大于或者等于预设值的至少一个预存激光数据在上述局部地图上对应的区域确定为重定位的候选区域,是通过生成单元、第二计算单元、选取单元和第二确定单元来实现的,具体包括:
上述生成单元,用于生成上述激光数据的直方图;上述第二计算单元,用于采用相关系数法分别计算上述激光数据对应的直方图与预存激光数据对应的直方图的相关性分数;上述选取单元,用于将上述相关性分数与预设分数值进行比较,选取相关性分数大于或者等于预设分数值的至少一个预存激光数据;上述第二确定单元,用于将上述至少一个预存激光数据在上述局部地图上对应的区域确定为重定位的候选区域。
上述生成单元生成上述激光数据的直方图,是通过划分子单元、统计子单元和确定子单元实现的,具体包括:
上述划分子单元,用于按照预设角度间隔将360°平均划分为多个角度区间;上述统计子单元,用于统计方向角落在每个角度区间内的激光点,并计算每个角度区间内的激光点与机器人的距离的平均值;上述确定子单元,用于将角度区间确定为上述直方图的横轴,将上述平均值确定为直方图的纵轴。
上述第二确定模块330计算上述候选区域的不同位置与上述激光数据的匹配分数,将匹配分数最大的位置确定为重定位的机器人的位置,是通过第三确定单元、第三计算单元和第四确定单元实现的,具体包括:
上述第三确定单元,用于获取上述候选区域的起始匹配位置,计算上述起始匹配位置与上述激光数据的匹配分数;上述第三计算单元,用于选取距离上述起始匹配位置预设步长的多个匹配位置,分别计算上述多个匹配位置与上述激光数据的匹配分数;上述第四确定单元,用于将上述起始匹配位置对应的匹配分数与上述多个匹配位置对应的匹配分数进行比较,根据比较结果调整上述预设步长,重新确定匹配位置进行匹配,直至确定出匹配分数最大的位置。
上述确定的候选区域为至少一个,所以上述候选区域可以为一个,也可以为多个。
当上述候选区域只有一个时,通过上述第三确定单元、上述第三计算单元及上述第四确定单元确定重定位的机器人的位置。
当上述选取的候选区域为多个时,首先采用上述方法,确定出每个候选区域的匹配分数最大的位置,将上述多个候选区域的最大匹配分数进行比较,从多个候选区域中选出匹配分数最大的候选区域,将该候选区域上匹配分数最大的位置确定为重定位的机器人的位置。
本发明实施例提供的机器人重定位装置,当出现当前定位的机器人的位置不准确时,会根据机器人当前发出的激光数据的直方图确定重定位的候选区域,将候选区域的不同位置与机器人当前发出的激光数据进行匹配,对机器人进行重定位,确定重定位的机器人的位置,不需要重新建图,避免了由于重新建图而导致建图成本增加及机器人终止正在执行的任务的情况。
本发明实施例所提供的机器人重定位装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。