本申请涉及计算机视觉领域,尤其涉及一种建立地图的方法、定位方法、装置、终端及存储介质。
背景技术
智能机器人或无人驾驶车辆等设备在未知的环境中需要实时的建图和定位来感知周围的环境,只有成功建图、定位才能为智能机器人或无人驾驶车辆等设备的导航以及其他功能提供保障。目前,建图和定位方法一般是根据单个视角采集的地图信息来完成建图和定位的。
发明人在研究现有技术过程中发现,单个视角下的定位有着很多的局限性。由于建图中所用的单个传感器设备(例如摄像头)的视野角度有限,获取的地图信息有限,导致智能机器人等设备只能在建图的视角下进行定位。一旦智能机器人等设备偏离原先视角或者原先视角上发生了视野遮挡,就会导致定位失败,轻则影响定位效果和用户体验,重则危及到他人生命安全。
可见,如何提高定位能力,是需要解决的问题。
技术实现要素:
本申请部分实施例所要解决的一个技术问题在于如何提高定位能力。
本申请的一个实施例提供了一种建立地图的方法,包括:获取n个不同视角的图像数据;其中,n为正整数;将n个不同视角的图像数据组成全视角的图像数据;根据全视角的图像数据,建立全视角地图。
本申请的一个实施例还提供了一种定位方法,包括:获取n个不同视角的第一图像数据;其中,n为正整数;根据n个不同视角的第一图像数据和地图,确定第一定位结果;其中,地图包括全视角地图,全视角地图根据m个不同视角的第二图像数据建立,m为正整数。
本申请的一个实施例还提供了一种建立地图的装置,包括:获取模块、合并模块和建图模块;获取模块用于获取n个不同视角的图像数据;其中,n为正整数;合并模块用于将n个不同视角的图像数据组成全视角的图像数据;建图模块用于根据全视角的图像数据,建立全视角地图。
本申请的一个实施例还提供了一种定位装置,包括:获取模块和定位模块;获取模块用于获取n个不同视角的第一图像数据;其中,n为正整数;定位模块用于根据n个不同视角的第一图像数据和地图,确定第一定位结果;其中,地图包括全视角地图,全视角地图根据m个不同视角的第二图像数据建立,m为正整数。
本申请的一个实施例还提供了一种终端,包括至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例提及的建立地图的方法。
本申请的一个实施例还提供了一种终端,包括至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例提及的定位方法。
本申请的一个实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施例提及的建立地图的方法。
本申请的一个实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施例提及的定位方法。
本申请的实施例相对于现有技术而言,根据不同视角的图像数据,建立全视角地图。由于终端中存储有全视角地图,即使终端在定位过程中传感器的视角与建图过程中传感器的视角不同,终端也能够根据全视角地图进行定位。该方法解决了由于视角偏差或视野受到遮挡导致定位失败的问题,减少了终端的定位盲区,提高了终端的定位能力。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请第一实施例的建立地图的方法的流程图;
图2是本申请第一实施例的传感器分布示意图;
图3是本申请第二实施例的建立地图的方法的流程图;
图4是本申请第三实施例的定位方法的流程图;
图5是本申请第四实施例的定位方法的流程图;
图6是本申请第四实施例中将建立地图的方法和定位方法合并的方法示意图;
图7是本申请第五实施例的建立地图的装置的结构示意图;
图8是本申请第五实施例的另一建立地图的装置的结构示意图;
图9是本申请第六实施例的定位装置的结构示意图;
图10是本申请第六实施例的另一定位装置的结构示意图;
图11是本申请第七实施例的终端的结构示意图;
图12是本申请第八实施例的终端的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的第一实施例涉及一种建立地图的方法,应用于终端或云端。终端可以是智能机器人、无人驾驶车辆、盲人导航装置等。云端与终端通信连接,为终端提供用于定位的地图或直接为终端提供定位结果。本实施例以终端为例说明建立地图的方法的执行过程,云端执行该建立地图的方法的过程可以参考本申请实施例的内容。如图1所示,该建立地图的方法包括以下步骤:
步骤101:获取n个不同视角的图像数据。其中,n为正整数。
具体地说,终端通过一个或多个传感器,采集终端周围环境的不同视角的图像数据。
步骤102:将n个不同视角的图像数据组成全视角的图像数据。
具体地说,终端通过图像处理技术,将n个不同视角的图像数据合并,得到全视角的图像数据。其中,将n个不同视角的图像数据合并为全视角的图像数据的方法包括但不限于以下三种:
方法1:终端确定n个不同视角的图像数据之间的相似区域,根据n个不同视角的图像数据之间的相似区域,将n个不同视角的图像数据合并。
具体实现中,终端的不同朝向上分别设置有一个传感器,n个不同视角的图像数据各自对应一个传感器。n个不同视角的图像数据各自对应的传感器中,相邻的两个传感器之间存在公共视野。由于相邻的两个传感器之间存在公共视野,使得相邻的两个传感器拍摄的图像数据之间存在相似区域。终端根据n个不同视角的图像数据之间的相似区域,将n个不同视角的图像数据合并。
另一具体实现中,终端上安装有一个传感器,终端通过控制传感器转动,以获取n个不同视角的图像数据。例如,终端建立地图的过程中,每间隔预设距离获取一次图像数据。终端在每次获取图像数据的过程中,分别进行以下操作:控制传感器拍摄在初始角度的图像数据,并在拍摄结束后,转至第一预设角度,传感器在传感器拍摄在第一预设角度的图像数据;其中,传感器在初始角度与传感器在第一预设角度时存在公共视野;拍摄结束后,传感器转至第二预设角度,拍摄在第二预设角度的图像数据;其中,传感器在第一预设角度与传感器在第二预设角度时存在公共视野……直至该传感器转回初始角度。传感器在每个角度拍摄的图像数据,以获得n个不同视角的图像数据。
方法2:终端获取预先建立的合并模型,根据合并模型,将n个不同视角的图像数据合并。
具体实现中,终端的不同朝向上分别设置有一个传感器,n个不同视角的图像数据各自对应一个传感器。合并模型用于指示n个不同视角的图像数据的合并顺序,n个不同视角的图像数据的合并顺序根据n个不同视角的图像数据各自对应的传感器的排列顺序确定。例如,终端上安装有5个传感器,传感器分布示意图如图2所示。在合并图像数据时,按照传感器的排列顺序,沿顺时针或逆时针方向将所有传感器的图像数据合并。
方法3:将方法1和方法2合并。具体地说,终端获取预先建立的合并模型,根据合并模型,确定n个不同视角的图像数据的合并顺序。终端根据n个不同视角的图像数据的合并顺序,排列n个不同视角的图像数据。终端根据排列后的n个不同视角的图像数据中相邻两个图像数据之间的相似区域,合并n个不同视角的图像数据。
步骤103:根据全视角的图像数据,建立全视角地图。
具体地说,终端基于全视角的图像数据,通过视觉即时定位和建图(visualsimultaneouslocalizationandmapping,vslam)技术建立全视角地图,例如,基于快速而鲁棒的二进制描述子的即时定位和建图(orientedfastandrotatedbrief_simultaneouslocalizationandmapping,org_slam)技术。
需要说明的是,本领域技术人员可以理解,实际应用中,也可以通过其他建图技术,创建全视角地图,本实施例不限制根据全视角数据创建地图的方法。
与现有技术相比,本实施例中提供的建立地图的方法,根据不同视角的图像数据,建立全视角地图。由于终端中存储有全视角地图,即使终端在定位过程中传感器的视角与建图过程中传感器的视角不同,终端也能够根据全视角地图进行定位。该方法解决了由于视角偏差或视野受到遮挡导致定位失败的问题,减少了终端的定位盲区,提高了终端的定位能力。
本申请的第二实施例涉及一种建立地图的方法,本实施例是对第一实施例的进一步改进,具体改进之处是:在步骤103之后增加了其他相关步骤。
如图3所示,本实施例包括步骤201至步骤204。其中,步骤201至步骤203分别与第一实施例中的步骤101至步骤103大致相同,此处不再详述,下面主要介绍不同之处:
执行步骤201至步骤203。
步骤204:根据n个不同视角的图像数据,分别建立n个单视角地图。
具体实现中,终端上安装有n个传感器。在建立全视角地图后,终端根据每个传感器拍摄的图像数据,分别使用vslam技术创建单视角地图,例如,orb_slam技术。
值得一提的是,在创建全视角地图以后,针对每个视角的图像数据,分别创建单视角地图,使得终端可以在全视角地图定位失败后,根据单视角地图进行定位,进一步提高了终端的定位能力。
需要说明的是,本实施例中,为阐述清楚,将步骤204作为步骤202和步骤203的后续步骤,本领域技术人员可以理解,实际应用中,步骤204也可以作为步骤202和步骤203的前一步骤,本实施例不限制步骤202和步骤203与步骤204的执行顺序。
与现有技术相比,本实施例中提供的建立地图的方法,在根据n个不同视角的图像数据建立全视角地图后,针对每个视角的图像数据,分别创建单视角地图,使得终端可以在全视角地图定位失败后,根据单视角地图进行定位,进一步提高了终端的定位能力。
本申请的第三实施例涉及一种定位方法,应用于终端或云端。终端可以是智能机器人、无人驾驶车辆、盲人导航装置等。云端与终端通信连接,为终端提供定位结果。本实施例以终端为例说明定位方法的执行过程,云端执行该定位方法的过程可以参考本申请实施例的内容。如图4所示,该定位方法包括以下步骤:
步骤301:获取n个不同视角的第一图像数据。其中,n为正整数。
具体实现中,终端上安装有多个传感器。终端控制多个传感器同时获取第一图像数据,或,终端控制多个传感器依次获取第一图像数据。
另一具体实现中,终端上安装有一个传感器。终端控制该传感器拍摄一个第一图像数据,并在拍摄第一图像数据后,按照预设方向和预设角度转动,再次获取第一图像数据,直至获得n个不同视角的第一图像数据。
步骤302:根据n个不同视角的第一图像数据和地图,确定第一定位结果。
具体地说,地图包括全视角地图,全视角地图根据m个不同视角的第二图像数据建立,m为正整数。终端将n个不同视角的第一图像数据分别与地图进行匹配,根据匹配结果,确定第一定位结果。
例如,终端在定位过程中的传感器的设置方式与终端在建立地图过程中的传感器的设置方式相同,即n=m。
与现有技术相比,本实施例中提供的定位方法,将获取的不同视角的图像数据与全视角地图进行匹配,使得终端能够使用任意一个视角进行定位,减少了终端的定位盲区。由于终端中存储有全视角地图,即使终端在定位过程中传感器的视角与建图过程中传感器的视角不同,终端也能够根据全视角地图进行定位,解决了由于视角偏差或视野遮挡导致定位失败的问题,提高了终端的定位能力。
本申请的第四实施例涉及一种定位方法,本实施例是对第三实施例的进一步细化,具体说明了步骤302。
如图5所示,本实施例包括步骤401至步骤406。其中,步骤401与第三实施例中的步骤301大致相同,此处不再详述,下面主要介绍不同之处:
步骤402:将n个不同视角的第一图像数据分别与全视角地图匹配,根据n个不同视角的第一图像数据分别与全视角地图的匹配结果,确定第二定位结果。
具体实现中,终端判断n个不同视角的第一图像数据分别与全视角地图的匹配结果中,是否存在指示定位成功的匹配结果,若确定存在,则确定第二定位结果指示定位成功,并根据指示定位成功的匹配结果中的位姿数据,确定第二定位结果中的位姿数据。
步骤403:判断第二定位结果是否指示定位成功。
具体地说,终端若确定第二定位结果指示定位成功,执行步骤404,否则,执行步骤405。
步骤404:根据第二定位结果,确定第一定位结果。之后结束流程。
具体地说,终端将第二定位结果中包含的位姿数据作为第一定位结果中的位姿数据。
步骤405:将n个不同视角的第一图像数据与m个单视角地图匹配,根据n个不同视角的第一图像数据与m个单视角地图的匹配结果,确定第三定位结果。
具体地说,地图还包括m个单视角地图,m个单视角地图是根据m个不同视角的第二图像数据分别建立。
以下对确定第三定位结果的方法进行举例说明。
方法a:终端针对每个第一图像数据,分别进行以下操作:将第一图像数据分别与m个单视角地图匹配;根据匹配结果,确定第一图像数据对应的第四定位结果。其中,第四定位结果指示定位成功或定位失败。终端根据n个不同视角的第一图像数据分别对应的第四定位结果,确定第三定位结果。
方法b:终端确定n个不同视角的第一图像数据与m个单视角地图的对应关系,并针对每个第一图像数据,分别进行以下操作:将第一图像数据与该第一图像数据对应的单视角地图匹配;根据匹配结果,确定第一图像数据对应的第四定位结果。其中,第四定位结果指示定位成功或定位失败。终端根据n个不同视角的第一图像数据分别对应的第四定位结果,确定第三定位结果。
具体实现中,终端根据n个不同视角的第一图像数据分别对应的第四定位结果,确定第三定位结果的方法如下:终端判断n个不同视角的第一图像数据分别对应的第四定位结果中是否存在指示定位成功的第四定位结果;若确定存在,终端确定每个指示定位成功的第四定位结果中包含的位姿数据,计算所有指示定位成功的第四定位结果中的位姿数据的平均值,将平均值作为第三定位结果;若确定不存在,终端确定第三定位结果指示定位失败。
步骤406:根据第三定位结果,确定第一定位结果。
与现有技术相比,本实施例中提供的定位方法,在全视角地图定位失败后,使用单视角地图进行定位,提高了终端的定位能力,根据多个单视角地图的定位结果确定最终的定位结果,提高了终端定位的准确性。
需要说明的是,本领域技术人员可以理解,实际应用中,可以将本申请实施例中提及的建立地图的方法和定位方法合并使用。具体实现中,将建立地图的方法和定位方法合并的方法示意图如图6所示。
以下结合实际场景说明终端的建立地图和定位的过程。终端上设置有5个传感器(传感器1、传感器2、传感器3、传感器4和传感器5),且每个传感器的视角不同。终端在建图过程中,获取传感器拍摄的第二图像数据。终端根据传感器1至传感器5拍摄的第二图像数据,建立1个全视角地图。终端根据传感器1拍摄的第二图像数据建立单视角地图1,根据传感器2拍摄的第二图像数据建立单视角地图2,传感器3拍摄的第二图像数据建立单视角地图3,传感器4拍摄的第二图像数据建立单视角地图4,传感器5拍摄的第二图像数据建立单视角地图5。终端在定位过程中,获取5个传感器拍摄的5个第一图像数据,先将5个第一图像数据分别与全视角地图进行匹配,确定每个第一图像数据各自对应的匹配结果。终端若确定存在指示定位成功的匹配结果,则根据该匹配结果,确定第一定位结果。终端若确定不存在指示定位成功的匹配结果,则将传感器i拍摄的第一图像数据与单视角地图i进行匹配,根据匹配结果确定传感器i拍摄的第一图像数据对应的第四定位结果。其中,i=1,2,3,4,5。终端若确定所有第一图像数据分别对应的第四定位结果中,存在指示定位成功的第四定位结果,则根据指示定位成功的第四定位结果,确定第一定位结果。否则,确定第一定位结果指示定位失败。
本申请的第五实施例涉及一种建立地图的装置,如图7所示,包括获取模块501、合并模块502和建图模块503;获取模块501用于获取n个不同视角的图像数据;其中,n为正整数;合并模块502用于将n个不同视角的图像数据组成全视角的图像数据;建图模块503用于根据全视角的图像数据,建立全视角地图。
具体实现中,另一建立地图的装置的结构示意图如图8所示,该建立地图的装置还包括n个传感器504,n个传感器504用于获取不同视角的图像数据。
不难发现,本实施例为与第一实施例相对应的系统实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
本申请的第六实施例涉及一种定位装置,如图9所示,包括:获取模块601和定位模块602;获取模块601用于获取n个不同视角的第一图像数据;其中,n为正整数。定位模块602用于根据n个不同视角的第一图像数据和地图,确定第一定位结果;其中,地图包括全视角地图,全视角地图根据m个不同视角的第二图像数据建立,m为正整数。
具体实现中,另一定位装置的结构示意图如图10所示,该建定位装置还包括单视角地图加载模块603和全视角地图加载模块604。单视角地图加载模块603用于加载根据m个不同视角的第二图像数据分别建立的单视角地图,全视角地图加载模块604用于加载全视角地图。
不难发现,本实施例为与第三实施例相对应的系统实施例,本实施例可与第三实施例互相配合实施。第三实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第三实施例中。
值得一提的是,第五实施例和第六实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本申请的第七实施例涉及一种终端,如图11所示,包括至少一个处理器701;以及,与至少一个处理器701通信连接的存储器702。其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行上述建立地图的方法。
本申请的第八实施例涉及一种终端,如图12所示,包括至少一个处理器801;以及,与至少一个处理器801通信连接的存储器802。其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行,以使至少一个处理器801能够执行上述定位方法。
第七实施例和第八实施例中,处理器以中央处理器(centralprocessingunit,cpu)为例,存储器以可读写存储器(randomaccessmemory,ram)为例。处理器、存储器可以通过总线或者其他方式连接,图11和图12中以通过总线连接为例。存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中全视角地图就存储于存储器中。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述建立地图的方法和定位方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的建立地图的方法和定位方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请的第九实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现以上任意方法实施例所描述的建立地图的方法。
本申请的第十实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现以上任意方法实施例所描述的定位方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。