一种自主定位和地图建立方法、装置和机器人
技术领域
本发明实施例涉及人工智能领域,例如涉及一种自主定位和地图建立方法、装置和机器人。
背景技术
SLAM(Simultaneous Localization and Mapping),即同时定位与地图重建,是指搭载特定传感器的机器人,在没有环境先验信息的情况下,通过机器人的运动过程构建环境的增量式地图,同时估计自身的位姿,实现机器人的自主定位与导航。随着科技的发展,基于SLAM的应用也越来越多。
在研究现有技术的过程中,发明人发现相关技术中至少存在如下问题:现有技术中,机器人在定位时,通常依据已有地图中各路标的位置,以及机器人当前时刻对路标的距离观测值,来估计当前时刻机器人在地图中的位置。而地图中新路标的位姿计算又依赖于机器人在地图中的位置和上述距离观测值。如果机器人参考的路标发生变动,将导致机器人定位不准确,同时也将导致地图中新路标位姿计算不准确。从而使机器人的定位和地图建立均受环境影响较大。
发明内容
本发明实施例的一个目的是提供一种自主定位和地图建立方法、装置和机器人,能降低周围环境对机器人自主定位和地图建立的影响。
第一方面,本发明实施例提供了一种自主定位和地图建立方法,所述方法应用于机器人,所述方法包括:
获取所述机器人对路标点的距离观测值;
获取所述机器人在地图中的位置;
将所述路标点中属于固定物体的新路标点加入所述地图,并根据所述位置和所述距离观测值获得所述新路标点的位姿。
第二方面,本发明实施例还提供了自主定位和地图建立装置,所述装置应用于机器人,所述装置包括:
观测距离获取模块,用于获取所述机器人对路标点的距离观测值;
定位模块,用于获取所述机器人在地图中的位置;
建图模块,用于将所述路标点中属于固定物体的新路标点加入所述地图,并根据所述位置和所述距离观测值获得所述新路标点的位姿。
第三方面,本发明实施例还提供了一种机器人,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的方法。
本发明实施例提供的自主定位和地图建立方法、装置和机器人,仅将属于固定物体的路标加入地图中,以避免机器人在参照路标时发生路标变化的情况,降低周围环境对机器人定位和地图建立的影响,从而使机器人的定位和地图中路标的计算更准确。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明自主定位和地图建立方法和装置的应用场景示意图;
图2是本发明的一个实施例中机器人定位和建图示意图;
图3是本发明自主定位和地图建立方法的一个实施例的流程图;
图4本发明自主定位和地图建立方法的一个实施例中获取机器人对路标的距离观测值步骤的流程图;
图5是本发明自主定位和地图建立方法的一个实施例的流程图;
图6是本发明自主定位和地图建立装置的一个实施例的结构示意图;
图7是本发明自主定位和地图建立装置的一个实施例的结构示意图;
图8是本发明实施例提供的机器人的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的自主定位和地图建立方法和装置适用于图1所示的应用场景,所述应用场景包括机器人10,其中,机器人10为可移动机器人,所述机器人是指具有某些人工智能的机器,例如,扫地机器人、人形机器人、自动驾驶汽车等。机器人10在为了完成用户的任务或者其他情况下,需要在未知环境中运动。在运动过程中为了实现自主定位和导航,需要构建增量式地图,同时估计自身位置。
为方便起见,请参照图2,把机器人10的一段连续运动分成离散时刻t=1,…k,在每一个时刻用xn表示机器人10的自身位置,即x1,x2…xk,它构成了机器人10的运动轨迹。假设地图由许多个路标组成,如图中的y1、y2和y3,在每一个时刻机器人10都会观测到一部分路标,得到它们的距离观测值z(即x和y之间的距离)。机器人10的定位即估计机器人10在地图中的位置(x),机器人10可以通过对路标的距离观测值在已有地图中估计自身所处的位置。地图建立即估计地图中路标的位置(y),路标的位置(y)可以根据机器人10的位置(x)和距离观测值(z)获得。机器人10的定位和建图是一个不断持续的过程,随着机器人10的位置变化,机器人10会观测到新的路标,同时不断将新的路标加入到地图中。
其中,所述路标例如墙面、窗户、柱子、树木、建筑物、桌子、柜子、花草、标识牌、人、宠物、车辆等。在一些实施例中,可以将墙面、窗户、柱子、树木和建筑物等的移动属性定义为“固定物体”,将桌子、柜子、花草、标识牌等的移动属性定义为“可移动物体”,将人、宠物、车辆等的移动属性定义为“移动物体”。机器人10仅将属于固定物体的路标加入地图中,由于这些路标不易发生变化,可以避免机器人10在参照路标定位时发生路标变化的情况,能降低周围环境对机器人定位和建立地图的影响,从而使机器人的定位和地图中路标的计算更准确。需要说明的是,上述移动属性的定义可以根据机器人10的应用场景事先定义,并非绝对的,同一个物体在一些应用场景中移动属性为“可移动物体”,在另一些应用场景中则可能为“固定物体”。
图3为本发明实施例提供的自主定位和地图建立方法的流程示意图,所述方法可由图1中的机器人10执行,如图3所示,所述方法包括:
101:获取所述机器人对路标点的距离观测值。
其中,机器人10对路标的距离观测可以基于视觉的方法,例如通过双目相机或深度相机等获得机器人视觉前方的图像,然后通过获取所述图像中各像素点的深度信息来获得机器人10与各路标之间的距离。在另一些实施例中,机器人也可以通过其他方法测量机器人10与路标之间的距离。
以基于视觉方法的双目相机获得距离观测值为例,请参照图4,所述机器人10获取对路标的距离观测值,包括:
1011:通过双目摄像装置分别获取视觉范围内的第一图像和第二图像。
即通过位于机器人10左侧的相机获得第一图像,通过位于机器人10右侧的相机获得第二图像,其中,左侧的相机和右侧的相机可以分别设置在机器人10的左眼和右眼处。
1012:分别对所述第一图像和所述第二图像进行图像识别,识别出图像中各个区域的类别并根据所述类别确定移动属性,为每个区域标记所述类别和所述移动属性,所述移动属性包括移动物体、可移动物体和固定物体。
具体的,对第一图像和第二图像进行图像识别,可以采用例如基于深度学习的神经网络模型进行识别,识别出图像中各个物体的类别。同时可以根据物体类别事先定义的移动属性确定图像中各个物体的移动属性,并为物体对应区域的像素点标记所属类别和移动属性(例如移动物体、可移动物体和固定物体)。例如,通过图像识别识别出第一图像中的物体类别分别为桌子、人、墙等,依据事先对桌子、人和墙的定义,其移动属性分别为可移动物体、移动物体和固定物体,则为桌子在图像中的区域对应的像素点标记类别和移动属性为“桌子”和“可移动物体”,为人在图像中的区域对应的像素点标记类别和移动属性为“人”和“移动物体”,为墙在图像中的区域对应的像素点标记类别和移动属性为“墙”和“固定物体”。本领域技术人员可以理解的是,在实际应用中对像素点标记类别和移动属性时,采用的可能是代表实际类别和实际移动属性的计算机符号,而并非实际类别和实际移动属性本身。其中,每个物体的移动属性可以事先根据机器人10的应用场景定义。
1013:基于所述第一图像和所述第二图像提取特征点,并去除属于移动物体的特征点。
具体的,从第一图像和第二图像的各像素点中提取特征点,可以采用例如SIFT或ORB等算法。特征点一般是图像中的一些“稳定点”,不会因为视角的改变、光照的变化、噪音的干扰而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点等。特征点提取之后,可以去除特征点中标记为移动物体的特征点。因为移动的物体发生移动的概率较大,如果机器人10定位时以这些移动的物体为参考,将导致机器人10的位置定位不准确。因此,在该步骤中,可以将移动属性为移动物体的路标进行剔除。
在其他一些实施例中,识别出图像中的每个区域后,也可以直接将移动属性属于移动物体的区域进行屏蔽。这样进行特征点提取时,就不会提取到位于屏蔽区域的特征点,以使提取的特征点中不包括移动属性为移动物体的特征点。
1014:基于去除特征点后的所述第一图像和所述第二图像进行特征点匹配,所述特征点匹配在类别相同的特征点之间进行,以获得图像中移动属性为非移动物体的路标点的距离观测值。
具体的,可以基于例如立体匹配算法进行特征点匹配,在类别相同的特征点之间进行匹配。例如在类别同属于“桌子”的特征点间进行特征点匹配,或者在类别同属于“墙面”的特征点间进行匹配。这样可以减小匹配范围,提高匹配结果的有效性。特征点匹配之后,可以利用匹配结果,根据三角测量原理,计算一个点在第一图像和第二图像上的视差来确定该特征点的深度,即机器人10距该特征点的距离。
102:获取所述机器人在地图中的位置。
103:将所述路标点中属于固定物体的新路标点加入所述地图,并根据所述位置和所述距离观测值获得所述新路标点的位姿。
请参照图2,在机器人10开始一段运动时,可以将机器人10运动的起点(x1)设置为圆点,机器人在此位置可以观测到路标y1和y2,假设路标y1和y2的移动属性均为固定物体,将路标y1和y2加入到地图中。因为此时机器人10在圆点,根据机器人在此处对路标y1和y2的距离观测值z1和z2即可获得路标y1和y2在地图中的位姿。
当机器人10运动到位置x2时,机器人10对路标y1和y2的距离观测值为z1’和z2’,根据z1’和z2’在地图(x1位置获得的地图)中进行位置搜索(即定位)。当搜索到地图中的某一位置时,将该位置与地图中各路标的距离称为定位距离,将机器人10实际对各对应路标的距离观测值称为观测距离,如果所述定位距离符合所述观测距离的符合程度大于预设阈值,则认为该位置即为x2位置的估计位置。
图2中仅示出了路标y1和y2,实际每个路标均包括多个特征点(路标点)。计算上述符合程度,实际上是计算在该位置、地图中各个路标点的定位距离符合机器人10对各个对应路标点的实际观测距离的程度。例如,假设预设阈值为70,定位距离符合观测距离的路标点记为1,定位距离不符合观测距离的路标点记为0。如果有超过70个路标点与该位置的定位距离符合实际观测距离,则可以认为该位置就是机器人10在地图中的位置。否则,需要重新搜索新的位置。
其中,判断路标点的定位距离是否符合观测距离需要基于对应的路标点,因此,在计算所述符合程度之前,需匹配机器人10观测的路标点和地图中的路标点的对应关系。可以对机器人10观测的路标点和地图中的路标点进行特征点匹配,以确定机器人观测的路标点在地图中对应的路标点。其中,在一些实施例中,在地图中加入各路标点时,还可以为各路标点标记所属类别,上述特征点匹配可以在相同类别的特征点之间进行,以减小匹配范围,提高匹配结果的有效性。
在一些实施例中,在地图中加入各路标点时,还可以为各路标点标记移动权重值。例如,虽然作为地图中的路标树木和建筑物移动属性都是固定物体,但是,相对来说,建筑物更不易发生运动,因此,可以将建筑物的移动权重值设置为大于树木的移动权重值。例如,将建筑物的移动权重值设置为3,将树木的移动权重值设置为2。对应的,上述符合程度也可以结合地图中各路标点对应的移动权重值来获取。在一些实施例中,所述符合程度和移动权重值为正相关关系。还以上例说明,假设路标y1的移动权重值为3,路标y2的移动权重值为1,预设阈值还是70。如果路标y1中有20个定位距离符合观测距离的特征点,路标y2中有15个定位距离符合观测距离的特征点,则符合程度为20*3+15*1=75>70,此位置定位成功。如果路标y1中有8个定位距离符合观测距离的特征点,路标y2中有45个定位距离符合观测距离的特征点,则符合程度为8*3+45*1=69<70,此位置定位失败,需要重新在地图中搜索新位置。
其中,在一些实施例中,为了减小搜索范围,降低运算量。还可以先通过传感器等检测装置对机器人10的位移进行估计,进而估计机器人10的位置,然后在地图中该估计位置附近一定范围内进行位置搜索。具体的,估计机器人10在第一时刻与第二时刻间的位移,可以对第一时刻和第二时刻获得的路标点深度图进行特征点匹配,通过同一特征点在不同深度图中的深度来获得机器人10的位移。该位移还可以进一步与惯性测量单元(IMU,Inertial measurement unit)提供的姿态信息进行滤波融合。
当机器人10运动到位置x4时,机器人在此位置观测到新路标y3,如果路标y3亦属于固定物体,则将路标y3加入到地图中。路标y3在地图中的位姿根据定位获得的x4处的位置和机器人10在此位置对路标y3的距离观测值获得。
因为每个路标均由多个特征点组成,加入到地图中的也是路标对应的多个特征点,把这些特征点云拼起来即构成地图。
本发明实施例提供的自主定位和地图建立方法,仅将属于固定物体的路标点加入地图中,以避免机器人在参照路标时发生路标变化的情况,降低周围环境对机器人定位和地图建立的影响,从而使机器人的定位和地图中路标的计算更准确。
在另一些实施例中,请参照图5,所述自主定位和地图建立方法,除了步骤101-103之外,还包括步骤104:
如果所述位置与历史位置重合,则根据在所述历史位置获得的路标点位姿修正所述位置、以及所述历史位置和所述位置之间获得的路标点位姿。
为了修正由于漂移造成的误差,得到信息一致的地图。机器人10会定时检测当前位置是否是之前访问过的历史位置,即进行回环检测。如果当前位置与历史位置重合,则根据在历史位置获得的地图修正当前位置、以及从历史位置到当前位置之间获得的地图。由于机器人10定位时剔除了路标变化的影响,因此在回环检测时机器人10更容易找到历史位置。
相应的,本发明实施例还提供了一种自主定位和地图建立装置,所述自主定位和地图建立装置用于图1所示的机器人10,如图6所示,所述自主定位和地图建立装置600包括:
观测距离获取模块601,用于获取所述机器人对路标点的距离观测值;
定位模块602,用于获取所述机器人在地图中的位置;
建图模块603,用于将所述路标点中属于固定物体的新路标点加入所述地图,并根据所述位置和所述距离观测值获得所述新路标点的位姿。
本发明实施例提供的自主定位和地图建立装置,仅将属于固定物体的路标加入地图中,以避免机器人在参照路标时发生路标变化的情况,降低周围环境对机器人定位和地图建立的影响,从而使机器人的定位和地图中路标的计算更准确。
在自主定位和地图建立装置600的一些实施例中,观测距离获取模块601具体用于:
通过双目摄像装置分别获取视觉范围内的第一图像和第二图像;
分别对所述第一图像和所述第二图像进行图像识别,识别出图像中各个区域的类别并根据所述类别确定移动属性,为每个区域标记所述类别和所述移动属性,所述移动属性包括移动物体、可移动物体和固定物体;
基于所述第一图像和所述第二图像提取特征点,并去除属于移动物体的特征点;
基于去除特征点后的所述第一图像和所述第二图像进行特征点匹配,所述特征点匹配在类别相同的特征点之间进行,以获得图像中移动属性为非移动物体的路标点的距离观测值。
具体的,在其中一些实施例中,建图模块603具体用于:
将所述路标点中属于固定物体的新路标点加入所述地图,并为所述新路标点标记所属类别和移动权重值。
具体的,在其中一些实施例中,定位模块602具体用于:
将第二时刻机器人观测的路标点与第一时刻地图中的路标点进行特征点匹配,确定第二时刻机器人观测的路标点在第一时刻地图中对应的路标点,所述特征点匹配在类别相同的特征点之间进行;
根据所述第二时刻所述机器人对路标点的距离观测值在所述第一时刻的地图中进行位置搜索;
结合所述地图中路标点的移动权重值,获取所述机器人在所述地图中某一位置时定位距离与观测距离的符合程度,如果所述符合程度超过预设阈值,则将该位置定位为所述机器人在地图中的位置,所述定位距离为所述地图中该位置与各路标点的距离,所述观测距离为所述机器人对各对应路标点的距离观测值。
在自主定位和地图建立装置600的其他实施例中,请参照图7所述装置还包括:
回环检测模块604,用于如果所述位置与历史位置重合,则根据在所述历史位置获得的路标点位姿修正所述位置、以及所述历史位置和所述位置之间获得的路标点位姿。
需要说明的是,上述自主定位和地图建立装置可执行本发明实施例所提供的自主定位和地图建立方法,具备执行方法相应的功能模块和有益效果。未在自主定位和地图建立装置实施例中详尽描述的技术细节,可参见本发明实施例所提供的自主定位和地图建立方法。
图8是本发明实施例提供的机器人10的硬件结构示意图,如图8所示,该机器人10包括:
一个或多个处理器11以及存储器12,图8中以一个处理器11为例。
处理器11和存储器12可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器12作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的自主定位和地图建立方法对应的程序指令/模块(例如,附图6所示的观测距离获取模块601、定位模块602和建图模块603)。处理器11通过运行存储在存储器12中的非易失性软件程序、指令以及模块,从而执行机器人的各种功能应用以及数据处理,即实现上述方法实施例的自主定位和地图建立方法。
存储器12可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据自主定位和地图建立装置的使用所创建的数据等。此外,存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器12可选包括相对于处理器11远程设置的存储器,这些远程存储器可以通过网络连接至自主定位和地图建立装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器12中,当被所述一个或者多个处理器11执行时,执行上述任意方法实施例中的自主定位和地图建立方法,例如,执行以上描述的图3中的方法步骤101至步骤103,图4中的方法步骤1011至步骤1014,图5中的方法步骤101至步骤104,;实现图6中的模块601-603、图7中模块601-604的功能。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
本发明实施例提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图8中的一个处理器11,可使得上述一个或多个处理器可执行上述任意方法实施例中的自主定位和地图建立方法,例如,执行以上描述的图3中的方法步骤101至步骤103,图4中的方法步骤1011至步骤1014,图5中的方法步骤101至步骤104,;实现图6中的模块601-603、图7中模块601-604的功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。