【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的定位方法的流程示意图。如图1所示,该方法包括:
101、终端设备接收无线网络中的基站发送的初始定位点的坐标信息。
本实施例的终端设备可以是任何具有能力实施本实施例提供的定位方法的设备,例如可以是智能手机、笔记本电脑、ipad等。
在本实施例中,无线网络中的基站可以获取终端设备的信号强度,并采用三角定位算法对持有终端设备的用户进行定位。本实施例所述的定位是指提供用户当前位置的坐标信息。考虑到基站获取终端设备的信号强度需要时间,导致基站定位存在延迟,所以本实施例提供了一种将基站定位与终端设备定位相结合的定位方法,该方法是以终端设备定位为主,以无线网络中的基站定位为辅。
当需要对用户进行定位时,终端设备从基站获取初始定位点的坐标信息。终端设备由于可以向用户提供定位服务,所以相应的还可以具有供用户选择是否定位的功能。例如,终端设备可以配置用于触发定位的物理按钮(或按键),这样用户通过操作该物理按钮(或按键)就可以发出定位指令。又例如,终端设备还可以允许用户以菜单方式或语音等其他方式发出定位指令。终端设备接收到定位指令后,从基站获取初始定位点的坐标信息。
例如,终端设备可以向基站发送位置获取请求,基站根据该位置获取请求将终端设备当前位置(即初始定位点)的坐标信息发送给终端设备。
在此说明,本实施例所述的坐标信息可以包括东南西北四个方向的坐标值,也可以包括其中任意两个方向的坐标值。优选的,本实施例所述的坐标信息包括东向位置坐标和北向位置坐标。
102、终端设备以上述初始定位点作为起始点,实时对持有终端设备的用户进行计步处理,并根据计步信息和初始定位的坐标信息,实时计算标识用户当前位置的第一坐标信息。
在获得初始定位点的坐标信息之后,终端设备就可以确定定位的起始点,为了实现对持有终端设备的用户的定位,终端设备以该初始定位点作为起始点,实时的对持有终端设备的用户进行计步处理,获得计步信息;然后根据计步信息和初始定位点的坐标信息,实时计算用户当前位置的坐标信息。
对于用户当前位置,终端设备会计算一个标识用户当前位置的坐标信息,无线网络中的基站也会根据终端设备的信号强度也会计算出一个标识用户当前位置的坐标信息,为了便于区分,本实施例将终端设备计算的标识用户当前位置的坐标信息称为第一坐标信息,将无线网络中的基站计算的标识用户当前位置的坐标信息称为第二坐标信息。
在一可选实施方式中,步骤102的实施方式包括:终端设备以上述初始定位点为起始点,分别在时域和频域实时对终端设备的加速度值进行分析,确定用户自初始定位点开始移动的步数、步长和航向角度;当确定用户移动一步时,终端设备根据公式(1)和公式(2),获得标识用户当前位置的第一坐标信息。
XE(k+1)=XE(k)+λsin(ψk+1) (1)
XN(k+1)=XN(k)+λcos(ψk+1) (2)
其中,ψk+1表示用户移动了k+1步时偏离基准方向的航向角度,基准方向是东向和北向中的一个。XE(k)表示用户移动了k步时第一坐标信息中的东向位置坐标,XE(k+1)表示用户移动了k+1步时第一坐标信息中的东向位置坐标,其中,XE(0)为初始定位点的坐标信息中的东向位置坐标。XN(k)表示用户移动了k步时第一坐标信息中的北向位置坐标,XN(k+1)表示用户移动了k+1步时第一坐标信息中的北向位置坐标其中,XN(0)为初始定位点的坐标信息中的北向位置坐标。上述公式中的k=0,1,2,...。上述λ为用户移动一步的步长。值得说明的是,用户每次移动一步的步长可以相同也可以不相同。
在一可选实施方式中,上述终端设备以初始定位点为起始点,分别在时域和频域实时对终端设备的加速度值进行分析,确定用户自初始定位点开始移动的步数、步长和航向角度的过程包括以下步骤:
1021、终端设备实时获取终端设备的加速度值;
例如终端设备可以通过其内置的惯性传感器实时获取终端设备的加速度值,所述惯性传感器可以是但不限于加速度计。
1022、在获得加速度值后,终端设备确定上述加速度值中的极大值和极小值;
在该步骤中,终端设备使用加速度值的绝对值来确定极大值和极小值。也就是说,这里的极大值和极小值都是指加速度值的绝对值。具体的,终端设备可以按照以下方式计算加速度值中的极大值和极小值,即如果ak-1>ak且ak+1>ak,则确定k时刻的加速度值是极小值;如果al-1<al且al+1<al,则确定l时刻的加速度值是极大值。其中,a表示加速度值的绝对值,a的下角标表示加速度值对应的时刻,举例说明,ak-1是k-1时刻的加速度值,ak是k时刻的加速度值,al-1是l-1时刻的加速度值,al+1是l+1时刻的加速度值,等等。
1023、当相邻极大值和极小值之差大于加速度阈值时,对包括该相邻极大值和极小值中的极大值的两个相邻极大值或包括该相邻极大值和极小值中的极小值的两个相邻极小值之间的加速度值进行频域变换,获得两个相邻极大值或两个相邻极小值对应时间内的步行频率;
在确定上述加速度值中的极大值和极小值之后,将相邻极大值和极小值之差与加速度阈值进行比较,根据比较结果初步判断持有终端设备的用户在该包括这里涉及的“相邻极大值和极小值”中的极大值的两个相邻极大值或包括这里涉及的“相邻极大值和极小值”中的极小值的两个相邻极小值对应时间内是否可能发生移步。该判断主要是从时域角度进行的初步判断。
在此说明,包括上述“相邻极大值和极小值”中的极大值的两个相邻极大值是指上述“相邻极大值和极小值”中的极大值,以及与上述“相邻极大值和极小值”中的极大值相邻的另一个极大值。为便于描述,本实施例以下将包括上述“相邻极大值和极小值”中的极大值的两个相邻极大值,简称为两个相邻极大值。
相应的,包括上述“相邻极大值和极小值”中的极小值的两个相邻极小值是指上述“相邻极大值和极小值”中的极小值,以及与上述“相邻极大值和极小值”中的极小值相邻的另一个极小值。为便于描述,本实施例以下将包括上述“相邻极大值和极小值”中的极小值的两个相邻极小值,简称为两个相邻极小值。
举例说明,上述步骤1022中的al和ak是相邻的极大值和极小值,则将al-ak与加速度阈值R进行比较,根据比较结果初步判断持有终端设备的用户在两个相邻极大值或两个相邻极小值对应时间内是否可能发生移步。
1判断出相邻极大值和极小值之差大于上述加速度阈值时,即al-ak>R,说明持有终端设备的用户在两个相邻极大值或两个相邻极小值对应时间内可能发生移步;当判断出相邻极大值和极小值之差不大于上述加速度阈值时,即al-ak≤R,说明持有终端设备的用户在两个相邻极大值或两个相邻极小值对应时间内不可能发生移步。
当持有终端设备的用户在两个相邻极大值或两个相邻极小值对应时间内可能发生移步时,终端设备进一步根据加速度值的频域信息来从频域来判断持有终端设备的用户在上述两个相邻极大值或两个相邻极小值对应时间内是否会发生移步。具体的,终端设备将上述两个相邻极大值或两个相邻极小值之间的加速度值进行频域变换,获得上述两个相邻极大值或两个相邻极小值对应时间内的步行频率。步行频率是指对上述两个相邻极大值或两个相邻极小值之间的加速度值进行频域变换得到的频域里的频率。
可选的,上述频域变换可以是离散傅里叶变换(Discrete Fourier Transform,DFT),也可以使用小波变换等其他频率提取信息,但不限于此。例如,可以根据公式对上述两个相邻极大值或两个相邻极小值之间的加速度值进行DFT。其中,a(n)表示由两个相邻极大值或两个相邻极小值之间的加速度值构成的序列,k表示步行频率,A(k)表示步行频率对应的幅值。
在此说明,在该步骤中,可以使用两个相邻极大值,也可以使用两个相邻极小值。
上述两个相邻极大值对应时间是指两个极大值对应的时刻之间的时间;两个相邻极小值对应时间是指两个极小值对应的时刻之间的时间。
1024、如果上述两个相邻极大值或两个相邻极小值对应时间内的步行频率大于预设频率阈值,则确定持有终端设备的用户在上述两个相邻极大值或两个相邻极小值对应时间内移动一步,将步数加1;
在获得两个相邻极大值或两个相邻极小值对应时间内的步行频率后,将其中该步行频率与预设频率阈值进行比较,如果该步行频率大于预设频率阈值,说明用户的动作幅度较大,应该是发生了移步,因此,确定持有终端设备的用户在上述两个相邻极大值或两个相邻极小值对应时间内移动一步,将步数加1,实现对用户的计步。
进一步,在将相邻极大值和极小值之差与加速度阈值进行比较之后,终端设备还可以计算第一时间内的加速度值的方差,将上述加速度阈值更新为该方差。其中,第一时间是指从第一时间点到当前时刻且长度等于第一指定时长的时间。例如,第一时间可以是当前时刻之前N秒,N是自然数。该步骤的目的主要是利用过去一段时间内的加速度值对加速度阈值进行更新,以使加速度阈值动态变化,更加适应用户当前的运动状态,进而提高使用加速度阈值做出的比较结果的精度,为提高计步精度做出贡献。
1025、在用户移动一步的情况下,终端设备还对第二时间内的加速度值进行频域变换,获得第二时间内的步行频率,第二时间是从第二时间点到当前时刻且长度等于第二指定时长的时间;根据第二时间内的步行频率计算用户的步长;
这里的步长指的是用户的平均步长。
1026、在用户移动一步的情况下,终端设备获取终端设备的航向角度;
具体得,终端设备内置有陀螺,终端设备可以通过陀螺和地磁测量最终获得的终端设备的航向角度。其中,终端设备通过陀螺和地磁测量获得航向角度的过程属于现有技术,例如像使用安卓、苹果等操作系统的终端设备都可以通过调用系统程序来获取航向值,详细流程在此不再赘述。
103、终端设备接收基站发送的用于标识用户当前位置的第二坐标信息。
具体的,当需要进行定位操作时,基站会不停的向终端设备提供标识用户当前位置的第二坐标信息。
可选的,终端设备可以定期向基站发送位置获取请求,基站根据终端设备定期发送的位置获取请求,向基站返回标识用户当前位置的第二坐标信息。基站具体可以采用三角定位算法实时计算用户所在位置的坐标。
或者,基站可以定期向终端设备发送标识用户当前位置的第二坐标信息。
或者,基站可以在每次用户位置发生变化后,向终端设备发送标识用户当前位置的第二坐标信息。其中,基站根据基站自身计算出的标识用户所在位置的坐标信息可以判断出用户位置是否发生变化。
104、终端设备利用上述第二坐标信息对上述第一坐标信息进行修正,获得标识用户当前位置的第三坐标信息,以实现对用户的定位。
终端设备接收到基站发送的标识用户当前位置的第二坐标信息后,利用第二坐标信息对第一坐标信息进行修正,获得修正后的坐标信息,即第三坐标信息,作为最终确定的用户当前位置的坐标信息,从而实现对用户的定位。
由于基站的计算能力远大于终端设备的计算能力,所以基站采用三角定位算法计算出的坐标信息在精度上要高于终端设备计算出的坐标信息,因此,终端设备利用基站计算的第二坐标信息对终端设备自身计算出的第一坐标信息进行修正可以提高坐标信息的精度。而终端设备是用户每移动一步就实时计算用户当前位置的坐标信息,不存在传输有关信息导致的时间延迟,因此,终端设备计算的坐标信息实时性较高。
在一可选实时方式中,终端设备利用第二坐标信息对第一坐标信息进行修正,获得标识用户当前位置的第三坐标信息,以实现对用户的定位的实施方式包括:终端设备将第二坐标信息作为观测量,对第一坐标信息进行滤波处理,获得第一坐标信息的误差;之后,利用该误差对第一坐标信息进行修正,获得第三坐标信息,以实现对用户的定位。
举例说明,假设第一坐标信息包括东向位置坐标和北向位置坐标,则第一坐标信息的误差也相应包括东向位置坐标的误差和北向位置坐标的误差,则利用误差对第一坐标信息进行修正,获得第三坐标信息的过程包括:根据公式(3)和(4)对第一坐标信息进行修正,获得第三坐标信息。
其中,XE(k+1)表示用户移动了k+1步时(即用户当前位置的)第一坐标信息中的东向位置坐标;表示第三坐标信息中的东向位置坐标(即修正后的第一坐标信息中的东向位置坐标);表示东向位置坐标的误差;
XN(k+1)表示用户移动了k+1步时(即用户当前位置的)第一坐标信息中的北向位置坐标其中;表示第三坐标信息中的北向位置坐标(即修正后的第一坐标信息中的北向位置坐标);表示北向位置坐标的误差。
进一步,终端设备将上述第二坐标信息作为观测量,对第一坐标信息进行滤波处理,获得第一坐标信息的误差的实施过程包括:将上述第二坐标信息作为观测量,对第一坐标信息进行卡尔曼滤波处理,获得第一坐标信息的误差。
更进一步,终端设备将上述第二坐标信息作为观测量,对第一坐标信息进行卡尔曼滤波处理,获得第一坐标信息的误差的实施过程包括:
终端设备根据上述第一坐标信息和上述第二坐标信息的差值,建立系统状态方程和观测方程Z=HX+r;
终端设备利用卡尔曼滤波算法,对上述系统方程和上述观测方程进行离散化,建立状态预测方程Xk+1|k=Φk+1Xk、状态预测协方差更新方程更新方程Xk+1=Xk+1|k+Kk+1(Zk+1-HXk+1|k)、滤波增益更新方程和估计协方差后验更新方程Pk+1=(I-Kk+1Hk+1)Pk+1|k;
终端设备对上述状态预测方程、状态预测协方差更新方程、更新方程、滤波增益更新方程和估计协方差后验更新方程进行求解,获得第一坐标信息的误差。
其中,X=[δxE δxN Δ]T,δxE为东向位置坐标的误差,δxN为北向位置坐标的误差,Δ为时间延迟;
q为过程噪声,q~N(0,Q),q=[qE qN qΔ]T;
F为系统矩阵,且
是第一坐标信息中的东向位置坐标与第二坐标信息中的东向位置坐标的差值;是第一坐标信息中的北向位置坐标与第二坐标信息中的北向位置坐标的差值;
H观测矩阵, SE是用户自上一位置移动到当前位置时在东向位置上的移动距离,SN是用户自上一位置移动到当前位置时在北向位置上的移动距离,ΔT是本次接收到第二坐标信息距离上一次接收到第二坐标信息的时间,即本次无线网络定位到上一次无线网络定位的时间;
r观测噪声,r~N(0,R),r=[rE rN]T;
Xk+1表示第一坐标信息的误差。可选的,Xk+1包括东向位置坐标的误差和北向位置坐标的误差。
在本实施例中,终端设备接收无线网络中的基站发送的初始定位点的坐标信息,之后终端设备以该初始定位点作为起始点,实时的对持有终端设备的用户进行计步处理,并根据计步信息和上述初始定位点的坐标信息,实时计算标识用户当前位置的第一坐标信息,由于不需要向无线网络中的基站上传信息再由基站计算坐标信息,因此,获得第一坐标信息的实时性较高;进一步,终端设备还接收无线网络中的基站发送的标识当前位置的第二坐标信息,利用第二坐标信息对第一坐标信息进行修正,获得标识当前位置的第三坐标信息,实现对用户的最终定位,由于基站计算能力远大于终端设备,所以基站计算的标识用户当前位置的第二坐标信息的精度要比第一坐标信息的精度高,利用第二坐标信息对第一坐标信息进行修正,可以提高定位精度。由此可见,本实施例相当于提供了一种将无线网络定位与终端设备定位相结合的定位方法,充分利用了无线网络定位精度高和终端设备定位实时性高的优点,与现有技术相比,在保证定位精度的基础上,提高了定位的实时性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本发明一实施例提供的终端设备的结构示意图。如图2所示,该终端设备包括:接收模块21、计步处理模块22和修正定位模块23。
接收模块21,用于接收无线网络中的基站发送的初始定位点的坐标信息。
计步处理模块22,与接收模块21连接,用于以接收模块21接收的初始定位点作为起始点,实时对持有终端设备的用户进行计步处理,并根据计步信息和接收模块21接收的初始定位点的坐标信息,实时计算标识用户当前位置的第一坐标信息。
接收模块21还用于,接收基站发送的用于标识用户当前位置的第二坐标信息。
修正定位模块23,与接收模块21和计步处理模块22连接,用于利用接收模块21接收的第二坐标信息对计步处理模块22计算的第一坐标信息进行修正,获得标识用户当前位置的第三坐标信息,以实现对用户的定位。
在一可选实施方式中,如图3所示,计步处理模块22的一种实现结构包括:计步单元221和获取单元222。
计步单元221,与接收模块21连接,用于以接收模块21接收的初始定位点为起始点,分别在时域和频域实时对终端设备的加速度值进行分析,确定用户自初始定位点开始移动的步数、步长和航向角度。
获取单元222,与计步单元221连接,用于在计步单元221确定用户移动一步时,根据公式(1)和(2),获得第一坐标信息。关于公式(1)和(2)的描述可参见方法实施例的描述,在此不再赘述。
在一可选实施方式中,如图3所示,修正定位模块23的一种实现结构包括:滤波单元231和定位单元232。
滤波单元231,与接收模块21和获取单元222连接,用于将接收模块21接收的第二坐标信息作为观测量,对获取单元222获得的第一坐标信息进行滤波处理,获得第一坐标信息的误差。
定位单元232,与滤波单元231连接,用于利用滤波单元231获得的误差修正第一坐标信息,获得第三坐标信息,以实现对用户的定位。
进一步,滤波单元231具体可用于将第二坐标信息作为观测量,对第一坐标信息进行卡尔曼滤波,获得第一坐标信息的误差。
更进一步,滤波单元231具体可用于根据所述第一坐标信息和所述第二坐标信息的差值,建立系统状态方程和观测方程Z=HX+r;利用卡尔曼滤波算法,对所述系统方程和所述观测方程进行离散化,建立状态预测方程Xk+1|k=Φk+1Xk、状态预测协方差更新方程更新方程Xk+1=Xk+1|k+Kk+1(Zk+1-HXk+1|k)、滤波增益更新方程和估计协方差后验更新方程Pk+1=(I-Kk+1Hk+1)Pk+1|k;对所述状态预测方程、状态预测协方差更新方程、更新方程、滤波增益更新方程和估计协方差后验更新方程进行求解,获得所述第一坐标信息的误差;
其中,X=[δxE δxN Δ]T,δxE为东向位置坐标的误差,δxN为北向位置坐标的误差,Δ为时间延迟;
q为过程噪声,q~N(0,Q),q=[qE qN qΔ]T;
F为系统矩阵,且
是所述第一坐标信息中的东向位置坐标与所述第二坐标信息中的东向位置坐标的差值;是所述第一坐标信息中的北向位置坐标与所述第二坐标信息中的北向位置坐标的差值;
H观测矩阵, SE是所述用户自上一位置移动到当前位置时在东向位置上的移动距离,SN是所述用户自上一位置移动到当前位置时在北向位置上的移动距离,ΔT是本次接收到所述第二坐标信息距离上一次接收到所述第二坐标信息的时间;
r观测噪声,r~N(0,R),r=[rE rN]T;
Xk+1表示所述第一坐标信息的误差。
本实施例提供的终端设备,接收无线网络中的基站发送的初始定位点的坐标信息,之后终端设备以该初始定位点作为起始点,实时的对持有终端设备的用户进行计步处理,并根据计步信息和上述初始定位点的坐标信息,实时计算标识用户当前位置的第一坐标信息,由于不需要向无线网络中的基站上传信息再由基站计算坐标信息,因此,获得第一坐标信息的实时性较高;进一步,本实施例提供的终端设备还接收无线网络中的基站发送的标识当前位置的第二坐标信息,利用第二坐标信息对第一坐标信息进行修正,获得标识当前位置的第三坐标信息,实现对用户的最终定位。其中,由于基站计算能力远大于本实施例提供的终端设备,所以基站计算的标识用户当前位置的第二坐标信息的精度要比第一坐标信息的精度高,本实施例提供的终端设备利用第二坐标信息对第一坐标信息进行修正,可以提高定位精度。由此可见,本实施例提供的终端设备可以将无线网络定位与终端设备定位相结合,充分利用了无线网络定位精度高和终端设备定位实时性高的优点,与现有技术相比,基于本实施例提供的终端设备进行定位可以在保证定位精度的基础上,提高定位的实时性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。