发明内容
本发明的实施例提供一种定位方法、终端和服务器,用于精确地进行全局定位。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种定位方法,包括:
将当前位置的第一全局坐标发送给服务器;
从所述服务器接收与所述第一全局坐标相对应的局部地图数据以及与所述局部地图数据对应的映射参数,所述映射参数用于指示全局坐标与局部坐标之间的映射关系;
根据所述局部地图数据和所述当前位置的周围环境信息得到所述当前位置的局部坐标;
根据所述当前位置的局部坐标和所述映射参数得到当前位置的第二全局坐标。
第二方面,提供了一种定位方法,包括:
从终端接收当前位置的第一全局坐标;
根据所述第一全局坐标查找相对应的局部地图数据以及与所述局部地图数据对应的映射参数,所述映射参数用于指示全局坐标与局部坐标之间的映射关系;
将所述局部地图数据和映射参数发送给所述终端。
第三方面,提供了一种终端,包括:
发送单元,用于将当前位置的第一全局坐标发送给服务器;
接收单元,用于从所述服务器接收与所述第一全局坐标相对应的局部地图数据以及与所述局部地图数据对应的映射参数,所述映射参数用于指示全局坐标与局部坐标之间的映射关系;
获取单元,用于根据所述局部地图数据和所述当前位置的周围环境信息得到所述当前位置的局部坐标;
所述获取单元,还用于根据所述当前位置的局部坐标和所述映射参数得到当前位置的第二全局坐标。
第四方面,提供了一种服务器,包括:
接收单元,用于从终端接收当前位置的第一全局坐标;
获取单元,用于根据所述第一全局坐标查找相对应的局部地图数据以及与所述局部地图数据对应的映射参数,所述映射参数用于指示全局坐标与局部坐标之间的映射关系;
发送单元,用于将所述局部地图数据和映射参数发送给所述终端。
第五方面,提供了一种计算机存储介质,用于储存为终端所用的计算机软件指令,其包含执行第一方面所述的定位方法所设计的程序代码。
第六方面,提供了一种计算机程序产品,可直接加载到计算机的内部存储器中,并含有软件代码,所述计算机程序经由计算机载入并执行后能够实现第一方面所述的定位方法。
第七方面,提供了一种终端,包括:存储器、通信接口和处理器,所述存储器用于存储计算机执行代码,所述处理器用于执行所述计算机执行代码控制执行第一方面所述定位方法,所述通信接口用于所述终端与外部设备的数据传输。
第八方面,提供了一种计算机存储介质,用于储存为服务器所用的计算机软件指令,其包含执行第二方面所述的定位方法所设计的程序代码。
第九方面,提供了一种计算机程序产品,可直接加载到计算机的内部存储器中,并含有软件代码,所述计算机程序经由计算机载入并执行后能够实现第二方面所述的定位方法。
第十方面,提供了一种服务器,包括:存储器、通信接口和处理器,所述存储器用于存储计算机执行代码,所述处理器用于执行所述计算机执行代码控制执行第二方面所述定位方法,所述通信接口用于所述服务器与外部设备的数据传输。
本发明实施例提供的定位方法、终端和服务器,服务器根据终端发送来的第一全局坐标,此时获取的全局坐标精度较低,查找相匹配的局部地图数据和映射参数并发送给终端,由终端根据实时获取的当前位置的周围环境信息来从局部地图数据中进行定位,得到该当前位置的周围环境信息对应的局部坐标,此时获取的局部坐标精度较高,再由获取的局部坐标根据映射参数转换成当前位置的第二全局坐标,由于第二全局坐标是由精度较高的局部坐标转换而来,因此其精度也较高,实现了精确地进行全局定位。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种定位系统,参照图1中所示,包括:位于现场的终端11和位于云端的服务器12,终端11通过全局传感器获取当前的全局坐标数据,发送至云端的服务器12进行检索匹配,然后服务器12将对应的局部地图数据发送给终端11,由终端11将当前局部传感器所采集的信息与局部地图数据进行比对,从而完成精确全局定位。
本发明实施例所述的终端11可以是导盲头盔、机器人等智能设备,参照图2中所示,该终端11可以包括传感器1101、处理器1102、存储器1103和通信接口1104,它们通过总线方式进行连接。其中,存储器1103用于存储供处理器1102执行的代码以及数据等,由处理器1102控制传感器1101采集当前位置的周围环境信息后经过初步处理,然后通过通信接口1104以有线或无线方式发送给服务器12。
本发明实施例所述的服务器12,参照图3中所示,可以包括通信接口1201、处理器1202和存储器1203,它们通过总线方式进行连接。其中,存储器1203用于存储供处理器1202执行的代码以及地图数据等,由处理器1202控制通信接口1201以有线或无线的方式从终端11接收当前位置的周围环境信息,然后经过处理后将地图数据通过通信接口1201发送回终端11。
本发明实施例所述的局部坐标包括通过视觉、红外、超声、激光雷达和IMU(inertial measurement unit,惯性测量单元)等传感器获取的局部地理范围的相对坐标;全局坐标是在全球地理范围内的绝对坐标。局部坐标和全局坐标均可以为图4中所示的二维平面坐标或图5中所示的三维空间坐标。通过GNSS卫星定位(例如GPS(global positionsystem,全球定位系统))、WIFI(wireless-fidelity,无线保真)定位、基站定位等方式获取的平面坐标为二维平面坐标,其可以包括经度和纬度信息,一般用于机器人、自动驾驶汽车、轮船等在陆地或海洋上运行的设备。在二维平面坐标基础上,增加了通过超声传感器或高度传感器等获取的高度信息即构成三维空间坐标,一般用于无人机、飞机、热气球等在空中运行的设备。
本发明实施例提供的定位方法、终端和服务器,在定位时先由服务器根据终端提供的全局数据进行粗略定位,获取对应的局部地图数据,再由终端根据局部地图数据和实时获取的当前位置的周围环境信息进行精确全局定位,可有效降低地图定位的运算量,另外,由于多种处理和存储工作均在云端完成,有效降低了终端侧的资源需求、功耗和成本。
本发明实施例所述的定位方法,首先需要在服务器上创建地图数据库,参照图6中所示,具体包括:
S101、终端获取当前位置的第三全局坐标和对应的局部地图数据。
终端沿特定轨迹行进过程中同时记录全局坐标和对应的局部地图数据,并令二者形成数据对(即一一对应),并且全局坐标的维数与局部地图数据中的局部坐标的维数相同。
示例性的,本发明实施例以全局坐标为GPS经纬度坐标,局部地图数据为vSLAM(visual simultaneous localization and mapping,视觉即时定位与地图构建)地图数据(即包括对应的图像帧帧号和对应的局部坐标)为例,进行说明。
对于全局坐标和局部坐标为二维平面坐标时,示例性的,可以通过GPS传感器采集全局坐标(经纬度);同时以第一帧摄像机的光心为原点,通过视觉传感器采集环境的图像,并且对采集的图像进行vSLAM地图创建运算,输出与全局坐标对应的vSLAM帧和对应的二维局部坐标,此时的二维局部坐标为画面的横纵轴方向坐标。
对于全局坐标和局部坐标为三维空间坐标时,示例性的,还可以同时通过超声传感器或高度传感器等获取的高度信息,并且将二维平面坐标和高度信息共同作为全局坐标;同时以第一帧摄像机的光心为原点,通过视觉传感器采集环境的图像,并且对采集的图像进行vSLAM地图创建运算,输出与全局坐标对应的图像帧帧号和对应的三维局部坐标,此时的三维局部坐标为画面的横纵轴方向坐标和光轴方向坐标。
为了提高检索效率,参照图7中所示,进行vSLAM地图创建过程中还可以输出关键帧帧号和对应的关键帧局部坐标,每个关键帧用于代表采集的图像中一段连续图像帧。
因此,局部地图数据为vSLAM地图数据时包括:与全局坐标对应的图像帧帧号和局部坐标,以及关键帧帧号和关键帧局部坐标。
本领域技术人员还可以想到,采用其他方式获取的全局坐标和局部地图数据同样适用于本发明。
S102、终端将当前位置的第三全局坐标和对应的局部地图数据发送给服务器。
S103、服务器从终端接收当前位置的第三全局坐标和对应的局部地图数据。
S104、服务器根据公式Y=(RX+T)/s求解出映射参数R、T和s。
其中,Y为N*1矩阵,表示全局坐标;X为N*1矩阵,表示与全局坐标对应的局部地图数据中的局部坐标;映射参数指示全局坐标与局部坐标之间的映射关系,具体表示将局部坐标向全局坐标映射过程中所使用的变换参数,R为N*N矩阵,T为N*1矩阵,R和T表示平移旋转参数,s为缩放因子,N为全局坐标或局部坐标的维数。每组全局坐标和对应的局部地图数据计算出的映射参数R、T和s是相同的。
具体的,可以使用最小二乘法根据上述公式来求解出映射参数R、T和s,其中,X可以为一组局部地图数据中的所有局部坐标,Y为对应的全局坐标,此时计算出的映射参数由于数据更多因此结果更准确但是耗费较多计算资源;或者,X可以为一组局部地图数据中的关键帧局部坐标,Y为对应的全局坐标,此时计算出的映射参数准确度降低但是耗费较少计算资源。
为了提高检索效率和节省存储空间,对于全局坐标和局部坐标均为二维平面坐标时,可以形成如表1中所示的地图数据映射表格:
表1
对于全局坐标和局部坐标均为三维平面坐标时,可以形成如表2中所示的地图数据映射表格:
表2
本发明实施例提供的定位方法,参照图8中所示,具体包括:
S201、终端将当前位置的第一全局坐标发送给服务器。
终端通过GNSS卫星定位、WIFI定位、基站定位等方式获取的当前位置的全局坐标如果未经处理,其误差在米级别,称其为第一全局坐标。并且第一全局坐标可以是二维平面坐标或者三维空间坐标。
S202、服务器从终端接收当前位置的第一全局坐标。
S203、服务器根据第一全局坐标查找相对应的局部地图数据以及与局部地图数据对应的映射参数R、T和s。
当第一全局坐标为二维平面坐标时,服务器可以查询表1的全局坐标一列,找到欧式距离最近的全局坐标,同时就找到了对应的一组局部地图数据和映射参数R、T和s。示例性的,假设找到欧式距离最近的全局坐标为40.0016370000,116.4854780000,则对应的局部地图数据为“vSLAM地图1”,映射参数为R1,T1,s1。
当第一全局坐标为三维平面坐标时,服务器可以查询表2的全局坐标一列,同样找到欧式距离最近的全局坐标,同时就找到了对应的局部地图数据和对应的映射参数R、T和s。
S204、服务器将与第一全局坐标对应的局部地图数据以及与局部地图数据对应的映射参数R、T和s发送给终端。
S205、终端从服务器接收与第一全局坐标相对应的局部地图数据以及与局部地图数据对应的映射参数R、T和s。
S206、终端根据局部地图数据和当前位置的周围环境信息得到当前位置的局部坐标。
具体的,以局部地图数据为vSLAM地图数据,当前位置的周围环境信息为视觉传感器获取的当前图像帧为例,终端根据当前图像帧以及vSLAM地图数据进行vSLAM定位运算得到的坐标作为所述当前图像帧对应的局部坐标。
S207、终端根据当前位置的局部坐标和映射参数R、T和s得到当前位置的第二全局坐标。
具体的,终端根据Y=(RX+T)/s求解出当前位置的第二全局坐标,其中,X为N*1矩阵,表示当前位置的局部坐标;Y为N*1矩阵,表示当前位置的第二全局坐标。
本发明实施例提供的定位方法,服务器根据终端发送来的第一全局坐标,此时获取的全局坐标精度较低,查找相匹配的局部地图数据和映射参数并发送给终端,由终端根据实时获取的当前位置的周围环境信息来从局部地图数据中进行定位,得到该当前位置的周围环境信息对应的局部坐标,此时获取的局部坐标精度较高,再由获取的局部坐标根据映射参数转换成当前位置的第二全局坐标,由于第二全局坐标是由精度较高的局部坐标转换而来,因此其精度也较高,实现了精确地进行全局定位。
本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对终端进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出了上述实施例中所涉及的终端的一种可能的结构示意图,终端11包括:接收单元1111、获取单元1112、发送单元1113。接收单元1111用于支持终端执行图8中的过程S205;获取单元1112用于支持终端执行图6中的过程S101,图8中的过程S206、S207;发送单元1113用于支持终端执行图6中的过程S102,图8中的过程S201。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图10示出了上述实施例中所涉及的终端的一种可能的结构示意图。终端11包括:处理模块1122和通信模块1123。处理模块1122用于对终端的动作进行控制管理,例如,处理模块1122用于支持终端执行图6中的过程S101,图8中的过程S206、S207。通信模块1113用于支持终端与其他实体的通信,例如与图1中示出的功能模块或网络实体之间的通信。终端11还可以包括存储模块1121,用于存储终端的程序代码和数据。
其中,处理模块1122可以是处理器或控制器,例如可以是中央处理器(centralprocessing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1123可以是收发器、收发电路或通信接口等。存储模块1121可以是存储器。
当处理模块1122为处理器,通信模块1123为收发器,存储模块1121为存储器时,本发明实施例所涉及的终端可以为图11所示的终端。
参阅图11所示,该终端11包括:处理器1132、收发器1133、存储器1131以及总线1134。其中,收发器1133、处理器1132以及存储器1131通过总线1134相互连接;总线1134可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。本发明实施例还提供一种存储介质,该存储介质可以包括存储器1131,用于储存为终端所用的计算机软件指令,其包含执行定位方法所设计的程序代码。具体的,软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read only memory,ROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于终端中。当然,处理器和存储介质也可以作为分立组件存在于终端中。
本发明实施例还提供一种计算机程序,该计算机程序可直接加载到存储器1131中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述的定位方法。
在采用对应各个功能划分各个功能模块的情况下,图12示出了上述实施例中所涉及的服务器的一种可能的结构示意图,服务器12包括:接收单元1211、获取单元1212、发送单元1213。接收单元1211用于支持服务器执行图6中的过程S103,图8中的过程S202;获取单元1212用于支持服务器执行图6中的过程S104,图8中的过程S203;发送单元1213用于支持服务器执行图8中的过程S204。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图13示出了上述实施例中所涉及的服务器的一种可能的结构示意图。服务器12包括:处理模块1222和通信模块1223。处理模块1222用于对服务器的动作进行控制管理,例如,处理模块1122用于支持服务器执行图6中的过程S104,图8中的过程S203。通信模块1213用于支持服务器与其他实体的通信,例如与图1中示出的功能模块或网络实体之间的通信。服务器12还可以包括存储模块1221,用于存储服务器的程序代码和数据。
其中,处理模块1222可以是处理器或控制器,例如可以是中央处理器(centralprocessing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1223可以是收发器、收发电路或通信接口等。存储模块1221可以是存储器。
当处理模块1222为处理器,通信模块1223为收发器,存储模块1221为存储器时,本发明实施例所涉及的服务器可以为图14所示的服务器。
参阅图14所示,该服务器12包括:处理器1232、收发器1233、存储器1231以及总线1234。其中,收发器1233、处理器1132以及存储器1231通过总线1234相互连接;总线1234可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。本发明实施例还提供一种存储介质,该存储介质可以包括存储器1231,用于储存为服务器所用的计算机软件指令,其包含执行定位方法所设计的程序代码。具体的,软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read only memory,ROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
本发明实施例还提供一种计算机程序,该计算机程序可直接加载到存储器1231中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述的定位方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。