定位方法、装置、存储介质及电子设备
技术领域
本公开涉及定位技术领域,具体地,涉及一种定位方法、装置、存储介质及电子设备。
背景技术
机器人、无人机、无人车等设备在配送、物流等各个领域的应用越来越广泛。机器人等设备依靠于高精度的定位技术支撑,相关技术中,机器人等设备一般采用视觉定位技术进行定位,视觉定位技术即通过设备中集成的相机采集设备所处环境的图像,通过图像以获得位置信息的定位方式。如果定位精度不高,设备便无法准确判断自身当前所处的位置,这样就无法保证设备的安全精准运行。
发明内容
本公开的目的是提供一种定位方法、装置、存储介质及电子设备,可以提高定位的精准度。
为了实现上述目的,第一方面,本公开提供一种定位方法,所述方法包括:获取相机在当前时刻在地图坐标系下的第一位姿信息;其中,所述地图坐标系为预先建立的点云地图的坐标系,所述点云地图包括所述相机当前所处环境的地图;获取所述相机在所述当前时刻采集到的当前图像在所述地图坐标系下的第一点云数据;根据所述第一位姿信息,从所述点云地图中提取出局部点云地图;根据所述第一点云数据和所述局部点云地图,确定所述相机的位姿变化信息;根据所述位姿变化信息对所述第一位姿信息进行修正,以得到所述相机在所述当前时刻的目标位姿信息,并根据所述目标位姿信息对所述相机进行定位。
第二方面,本公开提供一种定位装置,所述装置包括:位姿信息获取模块,被配置成用于获取相机在当前时刻在地图坐标系下的第一位姿信息;其中,所述地图坐标系为预先建立的点云地图的坐标系,所述点云地图包括所述相机当前所处环境的地图;点云数据获取模块,被配置成用于获取所述相机在所述当前时刻采集到的当前图像在所述地图坐标系下的第一点云数据;提取模块,被配置成用于根据所述第一位姿信息,从所述点云地图中提取出局部点云地图;确定模块,被配置成用于根据所述第一点云数据和所述局部点云地图,确定所述相机的位姿变化信息;定位模块,被配置成用于根据所述位姿变化信息对所述第一位姿信息进行修正,以得到所述相机在所述当前时刻的目标位姿信息,并根据所述目标位姿信息对所述相机进行定位。
第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面提供的所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面提供的所述方法的步骤。
通过上述技术方案,根据相机在当前时刻在地图坐标系下的第一位姿信息,从预先建立的点云地图中提取出局部点云地图,该局部点云地图可以是相机当前所在位置周围的某一区域,从而避免点云地图中其他区域对定位产生干扰。之后,根据相机采集到的当前图像在地图坐标系下的第一点云数据和该局部点云地图,确定相机的位姿变化信息。由于相机在当前时刻的目标位姿信息是通过该位姿变化信息对第一位姿信息进行修正之后得到的,因此该目标位姿信息更为精确,根据该目标位姿信息,可以对相机进行更为精准的定位,有效提高定位的精确度,使得集成有该相机的机器人等设备能够准确判断自身当前的姿态以及所处的位置,从而保证设备的安全精准运行。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种定位方法的流程图。
图2是根据一示例性实施例示出的一种获取相机在当前时刻在地图坐标系下的第一位姿信息的方法的流程图。
图3是根据一示例性实施例示出的一种获取相机在当前时刻采集的当前图像在地图坐标系下的第一点云数据的方法的流程图。
图4是根据一示例性实施例示出的一种预先建立点云地图的方法的流程图。
图5是根据一示例性实施例示出的一种定位装置的框图。
图6是根据一示例性实施例示出的一种电子设备的框图。
图7是根据另一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
本公开提供的定位方法可以应用于机器人、无人机、无人车等终端设备,也可应用于服务器,如定位管理服务器、云服务器等。当该定位方法应用于服务器时,终端设备可将采集到的图像等数据发送至服务器,由服务器进行后续处理以对终端设备进行定位,并将定位信息返回至终端设备。
值得说明的是,由于相机是集成在机器人等终端设备上,因此,本公开在以下介绍中,当提及相机的位姿信息,也可理解为是集成有该相机的终端设备的位姿信息,以及,当提及对相机进行定位,也可理解为是对集成有该相机的终端设备进行定位。
图1是根据一示例性实施例示出的一种定位方法的流程图。如图1所示,该定位方法可包括S101~S105。
在S101中,获取相机在当前时刻在地图坐标系下的第一位姿信息。
其中,地图坐标系为预先建立的点云地图的坐标系,该点云地图可包括相机当前所处环境的地图。通常情况下,机器人等设备需要预先建立点云地图来认知周围环境,并根据该点云地图进行路径规划,因此,需要获取到设备当前在点云地图中的位置,这样设备才能按照规划的路径继续移动。在一实施例中,该点云地图可通过相机在历史时刻采集到的图像来预先建立。
相机在当前时刻在地图坐标系下的第一位姿信息可包括相机当前在预先建立的点云地图中的位置信息和姿态信息。其中,该位置信息可包括相机在地图坐标系下的三维坐标信息,该姿态信息可包括相机分别相对于地图坐标系的三个坐标轴的偏转角度。
在S102中,获取相机在当前时刻采集到的当前图像在地图坐标系下的第一点云数据。
相机可以实时采集视野内的图像,相机的视野即为相机所能拍摄到的环境范围。相机在当前时刻采集到的当前图像即为相机当前所处的环境的图像。
其中,图像中特征点的集合可称之为点云。本公开涉及到的点云数据可以为三维点云数据,当前图像在地图坐标系下的第一点云数据可以包括当前图像中的所有特征点在地图坐标系下的三维坐标信息。
值得说明的是,对于S101和S102的执行顺序,本公开不做具体限定,例如也可先执行S102,再执行S101,也可二者同时执行。图1仅示出了S101在S102之前执行的示例,但并不构成对本公开实施方式的限制。
在S103中,根据第一位姿信息,从点云地图中提取出局部点云地图。
其中,S101中获取到的第一位姿信息可包括相机当前在点云地图中的位置信息。根据该第一位姿信息从点云地图中提取出局部点云地图,指的是提取出相机当前所在位置周围的某一区域。由于点云地图的范围比较大,因此,提取出该局部点云地图,可以避免其他区域对定位产生干扰。
对于提取出的局部点云地图的范围大小,可预先设定,本公开不做具体限制,只要该局部点云地图中包括相机当前所在的位置即可。示例地,例如以相机当前在点云地图中的位置信息为中心,以预设距离为半径构成的区域,作为该局部点云地图。
在S104中,根据第一点云数据和局部点云地图,确定相机的位姿变化信息。
该步骤中,可将该第一点云数据和局部点云地图,进行几何配准,由于局部点云地图范围较小,仅包括相机当前所在位置周围的某一区域,因此能够实现更精确的特征点配准。示例地,例如采用ICP(Iterative Closest Point,迭代最近点)几何配准的方式,确定相机的位姿变化信息。该位姿变化信息可以指的是相对于第一位姿信息的位姿变化增量,以用于对第一位姿信息进行修正。
在S105中,根据位姿变化信息对第一位姿信息进行修正,以得到相机在当前时刻的目标位姿信息,并根据目标位姿信息对相机进行定位。
该步骤中,由于得到的相机在当前时刻的目标位姿信息是通过对第一位姿信息进行修正之后得到的,因此该目标位姿信息更为精确,也即是得到了更为精确的相机当前在地图坐标系下的位置信息和姿态信息。这样,根据该目标位姿信息对相机进行定位,定位精度更高,从而能够保证集成有该相机的机器人等设备的安全精准运行。
通过上述技术方案,根据相机在当前时刻在地图坐标系下的第一位姿信息,从预先建立的点云地图中提取出局部点云地图,该局部点云地图可以是相机当前所在位置周围的某一区域,从而避免点云地图中其他区域对定位产生干扰。之后,根据相机采集到的当前图像在地图坐标系下的第一点云数据和该局部点云地图,确定相机的位姿变化信息。由于相机在当前时刻的目标位姿信息是通过该位姿变化信息对第一位姿信息进行修正之后得到的,因此该目标位姿信息更为精确,根据该目标位姿信息,可以对相机进行更为精准的定位,有效提高定位的精确度,使得集成有该相机的机器人等设备能够准确判断自身当前的姿态以及所处的位置,从而保证设备的安全精准运行。
图2是根据一示例性实施例示出的一种获取相机在当前时刻在地图坐标系下的第一位姿信息的方法的流程图。如图2所示,上述S101可包括S201~S206。
在S201中,获取相机在当前时刻在世界坐标系下的第二位姿信息。
机器人等终端设备中通常还集成有视觉惯性测程VIO(Visual-InertialOdometry)模块,该VIO模块中集成有惯性测量单元IMU(InertialMeasurementUnit)。VIO模块可根据相机采集到的当前图像,计算出相机在当前时刻在世界坐标系下的第二位姿信息,该第二位姿信息可包括相机当前在世界坐标系下的位置信息和姿态信息。
在S202中,根据当前图像以及点云地图进行视觉重定位。
由于VIO模块仅是根据当前图像计算相机的位姿信息,每一时刻定位产生的误差会不断累积,存在误差累积的过程。为了保证相机的位姿信息的准确性,机器人等设备中通常还集成有视觉重定位模块。视觉重定位模块可根据相机采集到的当前图像和预先建立的点云地图进行视觉重定位,例如首先从点云地图中检测与当前图像一致的回环候选帧,之后将该回环候选帧中的特征点与当前图像的特征点进行匹配,以得到相机当前的位姿信息,能一定程度上避免误差累积的现象。
然而,视觉重定位也有一定的局限性,例如,在实际应用场景中,相机采集到的图像受光线等环境因素的影响较大,如果采集到的图像噪声较大,或者图像本身特征点较少,都较难检测出回环候选帧。并且,即便检测出回环候选帧,能够进行匹配的特征点也较少。这样,就可能会出现未获取到视觉重定位结果的情况。
值得说明的是,对于S201和S202的执行顺序,本公开不做具体限制,图2仅为示例性说明,例如S202也可在S201之前执行,或二者同时执行。
在S203中,判断是否获取到视觉重定位结果。在未获取到的情况下,执行S204;在获取到的情况下,执行S205和S206。
在S204中,根据当前存储的世界坐标系与地图坐标系的坐标系转换信息,对第二位姿信息进行坐标转换,以得到第一位姿信息。
在未获取到视觉重定位结果的情况下,由于VIO模块计算出的第二位姿信息是相机在世界坐标系下的位姿信息,因此,为了得到相机在地图坐标系下的第一位姿信息,需要对该第二位姿信息进行坐标转换。该步骤中,可根据当前存储的世界坐标系与地图坐标系的坐标系转换信息,对该第二位姿信息进行坐标转换。该坐标系转换信息可表征世界坐标系与地图坐标系之间的位姿关系。示例地,可通过如下公式(1)得到该第一位姿信息:
T_G_I=T_M_I*T_G_M (1)
其中,T_G_I表示相机在当前时刻在地图坐标系下的第一位姿信息,T_M_I表示相机在当前时刻在世界坐标系下的第二位姿信息,T_G_M表示当前存储的世界坐标系与地图坐标系的坐标系转换信息。T_G_I、T_M_I和T_G_M都可以矩阵的形式来表示。
在S205中,根据视觉重定位结果确定第一位姿信息。
在获取到视觉重定位结果的情况下,由于视觉重定位模块是根据当前图像和点云地图进行视觉重定位,能够直接获取到相机在点云地图中的位置信息和姿态信息,因此,视觉重定位结果中可包括相机在当前时刻在地图坐标系下的第一位姿信息。
在S206中,根据第一位姿信息和第二位姿信息,更新坐标系转换信息。
为了保证坐标系转换信息的准确性,该坐标系转换信息并不是固定不变的,在能够获取到视觉重定位结果的情况下,在根据视觉重定位结果确定第一位姿信息之后,还可对该坐标系转换信息进行更新。其中,根据视觉重定位结果可确定相机在地图坐标系下的第一位姿信息,VIO模块能够输出相机在世界坐标系下的第二位姿信息。示例地,根据该第一位姿信息和该第二位姿信息,可通过如下公式(2),得到更新后的坐标系转换信息:
T_G_M'=T_G_I*T_M_I-1 (2)
其中,T_G_M'表示更新后的坐标系转换信息。
在上述技术方案中,如果未获取到视觉重定位结果,则可通过对相机当前在世界坐标系下的第二位姿信息进行坐标转换来获取该第一位姿信息。如果能够获取到视觉重定位结果,则可直接根据该视觉重定位结果获取到该第一位姿信息,并可对世界坐标系与地图坐标系的坐标系转换信息进行更新,以保证该坐标系转换信息的准确性。
图3是根据一示例性实施例示出的一种获取相机在当前时刻采集的当前图像在地图坐标系下的第一点云数据的方法的流程图。如图3所示,上述S102可包括S301和S302。
在S301中,获取当前图像在世界坐标系下的第二点云数据。
VIO模块根据相机采集到的当前图像,除了可计算出相机在世界坐标系下的第二位姿信息外,还可输出当前图像在世界坐标系下的第二点云数据。该第二点云数据可包括当前图像中所有特征点在世界坐标系下的三维坐标信息。
在S302中,将第二点云数据投影到地图坐标系中,得到第一点云数据。
该步骤中,例如可对第二点云数据进行坐标转换,以将第二点云数据投影到地图坐标系中。这样,可得到相机采集到的当前图像在地图坐标下的第一点云数据。
本公开中,上述S105中,根据位姿变化信息对第一位姿信息进行修正,以得到相机在当前时刻的目标位姿信息的示例性实施方式可以为:
根据位姿变化信息和第一位姿信息的乘积,确定该目标位姿信息。
例如可将该位姿变化信息与该第一位姿信息的乘积,确定为该目标位姿信息。示例地,可通过如下公式(3)确定该目标位姿信息:
T_Gi_I=T_Gi_G*T_G_I (3)
其中,T_Gi_I表示目标位姿信息,T_Gi_G表示位姿变化信息。
本公开中,预先建立的点云地图可通过相关技术中任一种方式进行建立,也可通过本公开以下介绍的建立点云地图的方式进行建立。图4是根据一示例性实施例示出的一种预先建立点云地图的方法的流程图。如图4所示,该方法可包括S401~S404。
在S401中,获取相机在历史时刻在世界坐标系下的第三位姿信息。
其中,VIO模块可根据相机在历史时刻采集到的图像,计算相机在世界坐标系下的第三位姿信息。该第三位姿信息可包括相机在历史时刻在世界坐标系下的位置信息和姿态信息。
在S402中,根据第三位姿信息,得到相机在历史时刻采集到的图像在世界坐标系下的第三点云数据。
在建立点云地图的过程中,相机采集到的图像的点云数据是在相机坐标系下的点云数据。该步骤中,可根据相机在世界坐标系下的第三位姿信息,对相机坐标系下的点云数据进行坐标转换,得到相机在历史时刻采集到的图像在世界坐标系下的第三点云数据。该第三点云数据可包括相机在历史时刻采集到的图像中的特征点在世界坐标系下的三维坐标信息。
在S403中,对第三点云数据进行滤波处理,得到滤波处理后的第四点云数据。
对第三点云数据进行滤波处理,可以得到更为精确的滤波处理后的第四点云数据。本公开对滤波处理的方式不做具体限制。示例地,可采用体素滤波处理的方式,通过创建三维体素栅格,在三维体素栅格中对第三点云数据进行降采样等处理,得到体素滤波处理后的第四点云数据。
在S404中,根据滤波处理后的第四点云数据,生成点云地图。
该步骤中,可通过相关技术中同步定位与建图技术(Simultaneous Localizationand Mapping,SLAM),根据滤波处理后的第四点云数据生成预先建立的点云地图。
基于同一发明构思,本公开还提供一种定位装置。图5是根据一示例性实施例示出的一种定位装置的框图,如图5所示,该定位装置500可包括:
位姿信息获取模块501,被配置成用于获取相机在当前时刻在地图坐标系下的第一位姿信息;其中,所述地图坐标系为预先建立的点云地图的坐标系,所述点云地图包括所述相机当前所处环境的地图;
点云数据获取模块502,被配置成用于获取所述相机在所述当前时刻采集到的当前图像在所述地图坐标系下的第一点云数据;
提取模块503,被配置成用于根据所述第一位姿信息,从所述点云地图中提取出局部点云地图;
确定模块504,被配置成用于根据所述第一点云数据和所述局部点云地图,确定所述相机的位姿变化信息;
定位模块505,被配置成用于根据所述位姿变化信息对所述第一位姿信息进行修正,以得到所述相机在所述当前时刻的目标位姿信息,并根据所述目标位姿信息对所述相机进行定位。
通过上述技术方案,根据相机在当前时刻在地图坐标系下的第一位姿信息,从预先建立的点云地图中提取出局部点云地图,该局部点云地图可以是相机当前所在位置周围的某一区域,从而避免点云地图中其他区域对定位产生干扰。之后,根据相机采集到的当前图像在地图坐标系下的第一点云数据和该局部点云地图,确定相机的位姿变化信息。由于相机在当前时刻的目标位姿信息是通过该位姿变化信息对第一位姿信息进行修正之后得到的,因此该目标位姿信息更为精确,根据该目标位姿信息,可以对相机进行更为精准的定位,有效提高定位的精确度,使得集成有该相机的机器人等设备能够准确判断自身当前的姿态以及所处的位置,从而保证设备的安全精准运行。
可选地,所述位姿信息获取模块501可包括:第一获取子模块,被配置成用于获取所述相机在所述当前时刻在世界坐标系下的第二位姿信息;视觉重定位子模块,被配置成用于根据所述当前图像以及所述点云地图进行视觉重定位;坐标转换子模块,被配置成用于在所述视觉重定位子模块未获取到视觉重定位结果的情况下,根据当前存储的所述世界坐标系与所述地图坐标系的坐标系转换信息,对所述第二位姿信息进行坐标转换,以得到所述第一位姿信息。
可选地,所述位姿信息获取模块501还可包括:第二获取子模块,被配置成用于在所述视觉重定位子模块获取到所述视觉重定位结果的情况下,根据所述视觉重定位结果确定所述第一位姿信息。
可选地,所述装置500还可包括:更新模块,被配置成用于根据所述第一位姿信息和所述第二位姿信息,更新所述坐标系转换信息。
可选地,所述点云数据获取模块502被配置成用于获取所述当前图像在世界坐标系下的第二点云数据;将所述第二点云数据投影到所述地图坐标系中,得到所述第一点云数据。
可选地,所述定位模块505被配置成用于根据所述位姿变化信息和所述第一位姿信息的乘积,确定所述目标位姿信息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种电子设备600的框图。如图6所示,该电子设备600可以包括:处理器601,存储器602。该电子设备600还可以包括多媒体组件603,输入/输出(I/O)接口604,以及通信组件605中的一者或多者。
其中,处理器601用于控制该电子设备600的整体操作,以完成上述的定位方法中的全部或部分步骤。存储器602用于存储各种类型的数据以支持在该电子设备600的操作,这些数据例如可以包括用于在该电子设备600上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器602可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件603可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器602或通过通信组件605发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口604为处理器601和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件605用于该电子设备600与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件605可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的定位方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的定位方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器602,上述程序指令可由电子设备600的处理器601执行以完成上述的定位方法。
图7是根据另一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器,如上述的定位管理服务器、云服务器等。参照图7,电子设备700包括处理器722,其数量可以为一个或多个,以及存储器732,用于存储可由处理器722执行的计算机程序。存储器732中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器722可以被配置为执行该计算机程序,以执行上述的定位方法。
另外,电子设备700还可以包括电源组件726和通信组件750,该电源组件726可以被配置为执行电子设备700的电源管理,该通信组件750可以被配置为实现电子设备700的通信,例如,有线或无线通信。此外,该电子设备700还可以包括输入/输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作***,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的定位方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器732,上述程序指令可由电子设备700的处理器722执行以完成上述的定位方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的定位方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。