具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。然而,本领域的普通技术人员可以理解,在本申请的各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本申请的第一实施例涉及一种定位方法,可应用于终端或云端。终端可以是无人驾驶车辆、导盲设备或扫地机器人等设备,云端与终端通信连接,为终端提供用于定位的地图或直接为终端提供定位结果。本实施例以终端为例说明定位方法的执行过程,云端执行该定位方法的过程可以参考本申请实施例的内容。具体流程如图1所示,包括如下步骤:
步骤101:获取用于定位的实时图像。
具体地说,本实施例中的实时图像可通过摄像头或其他图像传感器获取,此处不做具体限制。
在一个具体实现中,使用该定位方法进行定位和导航,实时图像可以是环境图像,用于根据环境图像进行定位。例如,在导盲设备中应用该定位方法进行定位,通过摄像头获取环境信息确定出当前的位置信息。若将定位方法应用于机器人,实时图像为机器人通过视觉获取到的图像,也可以是经过机器人的视觉处理得到的实时图像,以便于通过该实时图像确定出当前的位置信息。
步骤102:根据获取到的实时图像和第一地图进行定位,并确定该实时图像的位置信息。
其中,该第一地图为上一次定位中确定的N段地图中的一段地图。
具体地说,由于第一地图在上一次定位中已经确定,也就是说,在获取用于定位的实时图像之前,需要先确定第一地图。一个具体实现过程为:获取初始图像;将该初始图像分别与N段地图进行匹配;其中,N为大于1的正整数;确定N段地图中与该初始图像匹配的地图,并释放N段地图中与该初始图像不匹配的地图;将匹配的地图确定为第一地图。其中,将与初始图像不匹配的地图释放,能够降低地图在存储单元中占有量。
值得一提的是,上述确定第一地图的过程仅是示例性说明,并不具体限定本实施例,可以理解的是,根据上一次确定的第一地图对获取的实时图像进行定位,从而确保每次定位不需要加载全部的N段地图,降低了系统中存储单元的占用量,同时达到降低定位运算量的目的。
一个具体实现中,由于在对初始图像进行定位时,存在N段地图,可预先对地图进行编号,在确定出第一地图之后,获取第一地图的编号以及初始图像在第一地图中的位置信息,如在连续帧图像定位过程中,确定出第一地图的编号,在实时图像定位过程中根据地图编号提取第一地图进行定位。
需要说明的是,初始图像是应用该定位方法的设备开始进行定位或导航时获取的实时图像,并非是数量上的第一帧实时图像。该初始图像与N段地图进行遍历匹配确定出第一地图,此处的遍历匹配是加载全部的N段地图对初始图像匹配定位的过程,在匹配完成之后确定出的第一地图中有初始图像的位置信息,若有必要,可在确定出第一地图之后输出初始图像的位置信息。
具体地说,步骤102的一个具体实现为:提取获取到的实时图像的特征点以及第一地图中的特征点;根据实时图像的特征点以及第一地图中的特征点,确定实时图像的位置信息。若结合vSLAM技术进行定位,则第一地图中的特征点为vSLAM地图的先验信息。且提取实时图像中的特征点和第一地图中的特征点的技术较为成熟,此处不再进行赘述。
其中,第一地图中包括关键帧,关键帧对应第一地图上的位置信息,通过实时图像的特征点与第一地图的特征点进行匹配,确定出与实时图像对应的关键帧,进而通过关键帧对应的位置信息确定出实时图像的位置信息。
具体地说,通过特征点匹配确定出实时图像的位置信息之后,记录并保存实时图像的位置信息。需要说明的是,在根据初始图像确定出第一地图时也可以记录并保存初始地图的位置信息。
值得一提的是,在连续帧的实时图像定位过程中,对上一帧实时图像的位置信息记录并保存之后,有助于下一帧的实时图像的定位。例如,在扫地机器人上应用该定位方法,扫地机器人工作过程中,确定第一地图之后,对获取的实时图像进行定位,通过连续帧的实时图像确定出扫地机器人的运动轨迹,确定扫地机器人的工作范围,具体还可将该定位方法应用于其他的智能机器人或家居类机器人上,此处仅是举例,不做具体限定。
相对于现有技术,本实施例在获取用于定位的实时图像之后,直接根据第一地图对实时图像进行定位,能够直接快速的确定出实时图像的位置信息,且该第一地图是上一次定位中从N段地图确定出的一段地图,避免了从全部的N段地图进行定位时存储单元占用较高的问题,降低了系统中存储单元的占用量,同时也降低了定位的运算量。
本申请的第二实施例涉及一种定位方法,本实施例与第一实施例大致相同,主要区别之处在于,在第二实施例中具体说明了根据特征点确定实时图像的位置信息的实现方式,其实现流程如图2所示。可以理解的是,确定实时图像的位置信息的具体实现过程并不仅限于以下所描述的方式,此处仅为举例说明。
需要说明的是,该定位方法包括如下实施步骤,其中,步骤201与步骤101相同,此处不再赘述。
步骤202:提取获取到的实时图像的特征点以及第一地图中的特征点。
步骤203:将实时图像的特征点与第一地图中的特征点进行匹配,并获取匹配结果
步骤204:判断该匹配结果是否表示实时图像与第一地图匹配;若为是,则执行步骤205,否则,执行步骤206。
步骤205:确定实时图像在第一地图中的位置信息。
步骤206:获取辅助传感器的数据信息,根据辅助传感器的数据信息确定N段地图中的第二地图,并确定实时图像在第二地图中的位置信息。
步骤207:记录并保存实时图像的位置信息。
具体地说,若为连续帧的实时图像,则每次对实时图像定位之后记录并保存位置信息,再获取下一帧的实时图像,进行定位,可循环执行上述图2中的各个实施步骤。
具体地说,步骤206中,根据辅助传感器的数据信息确定实时图像的位置信息中,所获取的实时图像的特征点数量较少时,也会出现无法与地图中的特征点匹配的现象,由于在实时图像进行确定位置信息之后会记录并保存位置信息,因此,需要根据上一帧实时图像的位置信息预测当前的实时图像的位置信息,对于特征点太少的实时图像或其他原因导致特征点匹配失败的实时图像,确定匹配失败的实时图像在第一地图中的相对位置信息的一个具体实现为:根据上一帧实时图像的位置信息以及辅助传感器的数据信息推测出当前的实时图像的位置信息。
值得一提的是,对于实时图像的特征点较少的情况,出现特征点匹配失败的概率较高,因此,在获取到实时图像之后,可先根据实时图像的特征点的数量判断是否直接根据辅助传感器确定位置信息,在进行特征点的匹配确定出实时图像的位置信息,此处仅是举例说明,不做具体限定。
其中,辅助传感器包括但不限于距离传感器和方向传感器。使得在出现提取的实时图像的特征点匹配失败或特征点较少的情况下,能够根据辅助传感器的数据信息确定实时图像的位置信息。
需要说明的是,位置信息中包括坐标位置和方向信息,具体表示为(x,y,θv0)其中,(x,y)对应的是该实时图像在第一地图上的坐标位置,θv0表示应用该定位方法的设备在获取实时图像时在第一地图上的方向角。
具体地说,在根据辅助传感器确定实时图像的位置信息时还需获取上一帧实时图像的位置信息,基于上一帧实时图像的已知位置信息计算出当前实时图像的位置信息,由于根据视觉传感器确定的角度值与其他角度传感器获取的角度值存在一定的偏差,需要先对该实时图像的方向信息进行校正。具体的转换过程通过公式1和公式2表示如下:
θd=θv0-θi0 (1)
θc=θi+θd (2)
其中,θc表示对当前实时图像的方向信息进行校正后的角度值;θd表示上一帧实时图像的位置信息的方向角的偏差角度;θv0表示上一帧实时图像的获取视觉传感器的设备的角度值;θi0表示上一帧实时图像中角度传感器的方向角;θi表示获取当前实时图像时的角度传感器的角度值。
具体的通过辅助传感器的数据信息确定位置信息的转换通过公式3和公式4进行,其中,公式3和公式4表示如下:
x’=x+s*d*cos(θc) (3)
y’=y+s*d*sin(θc) (4)
其中,上述公式3和公式4中(x,y)表示上一帧实时图像的已知位置信息的坐标位置;s表示该第一地图的比例尺,也就是第一地图中每个像素代表的距离值;d代表步长,即距离传感器获取的距离值;θc的表示含义不变。
具体地说,实时图像的特征点与第一地图的特征点不能匹配,则说明第一地图中不存在该实时图像的位置信息,如,第一地图为一段路径,应用该定位方法的设备行驶完成该第一地图中的路径并继续前进,则获取的实时图像不能根据第一地图确定出位置信息,则需要确定出第二地图并进行对实时图像的定位。第一地图可能与至少一个的地图连接,其中,根据该实时图像的辅助传感器信息确定第二地图的一个具体实现为:获取辅助传感器的数据信息中的方向信息确定出与第一地图连接的用于为实时图像定位的第二地图,根据辅助传感器的数据信息中的距离信息确定出实时图像的位置信息。
值得一提的是,上述的定位方式是基于多段地图对实时图像进行定位,该多段地图可能是建图过程中出现中断,进而出现多段地图,也可以是将实际上的一幅地图按照预设的规则分成多段地图,以使对实时图像的定位过程中,降低存储单元的地图存储占比,和降低定位的运算量。
本申请的第三实施例涉及一种定位装置,如图3所示,包括获取模块301和匹配模块302。
获取模块301,用于获取用于定位的实时图像。
匹配模块302,用于根据获取到的实时图像与第一地图进行定位,确定实时图像的位置信息。
其中,第一地图为上一次定位中确定的N段地图中的一段地图。
不难发现,本实施例为与第一或第二实施例相对应的装置实施例,本实施方式可与第一或第二实施例互相配合实施。第一或第二实施例中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本实施例的第四实施例涉及一种电子设备,具体结构如图4所示。包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402。其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行定位方法。
本实施例中,处理器401以中央处理器(Central Processing Unit,CPU)为例,存储器402以可读写存储器(Random Access Memory,RAM)为例。处理器401、存储器402可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中实现环境信息确定方法的程序就存储于存储器402中。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述定位方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个程序模块存储在存储器402中,当被一个或者多个处理器401执行时,执行上述任意方法实施例中的定位方法。
上述产品可执行本申请实施例所提供的定位方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的定位方法。
本申请的第五实施例涉及一种计算机可读存储介质,该可读存储介质为计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令使计算机能够执行本申请第一或第二方法实施例中涉及的定位方法。
需要说明的是,本领域的技术人员能够理解,上述实施例中定位方法是通过程序来指令相关的硬件来完成的,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random-AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。