用于确定用户位置的朝向估计的制作方法

文档序号:11141935阅读:470来源:国知局
用于确定用户位置的朝向估计的制造方法与工艺

在诸如智能手机等移动计算设备上通常包含移动导航与位置跟踪系统。例如,移动计算设备可以用于利用例如移动计算设备上的全球定位系统(GPS)电路系统并且参考地理地图在位置间引导用户。然而,由于网络和/或GPS连接的需要,此类系统经常限于室外应用。室内导航与位置跟踪解决方案经常跟踪移动计算设备的位置,而不依赖于GPS和/或外部传感器。

移动计算设备典型地包括多个惯性传感器,所述惯性传感器采集数据,所述数据可通过例如板上惯性测量单元(IMU)来分析以确定用户的各个环境(context),诸如用户的估计位置。“推算定位(Dead reckoning)”是一种典型的基于先前确定的定位、估计的速度和经过的时间段来计算用户当前定位的过程,其中先前确定的定位、估计的速度和经过的时间段可基于惯性传感器生成的传感器数据来确定。板上惯性传感器如加速度计和磁力计使得移动计算设备能够对用户的迈步进行计数并且取得罗盘读数用于导航目的(即,用于行人推算定位)。行人推算定位(PDR)允许在消耗较少的功率(例如,与GPS导航相比)以及需要较少的先验信息的同时进行室内导航。

附图说明

本文中所描述的概念在附图中是通过举例而不是限制的方式示出的。为了图示的简洁和清晰,在图中示出的元素不一定是按比例绘制的。在认为适当的情况下,附图标记在各图中重复以指示对应的或相似的元素。

图1是用于确定用户位置的移动计算设备的至少一个实施例的简化框图;

图2是图1的移动计算设备的至少一个实施例的简化框图;

图3是用户在各个方位上握持图1的移动计算设备的简化图示;以及

图4-6是可通过图1的移动计算设备执行的用于确定用户位置的方法的至少一个实施例的简化流程图。

具体实施方式

虽然易于得到本公开的概念的各种修改和替代形式,其具体实施例在附图中通过示例的方式示出且将在本文中进行详述。然而,应当理解的是,无意将本公开的概念限于所公开的具体形式,而是相反,意在涵盖所有与本公开和随附权利要求一致的修改方案、等同方案和替代方案。

在说明书中提到“一个实施例”、“实施例”、“示例性的实施例”等表示,所描述的实施例可以包括具体的特征、结构或特性,但是每个实施例可以必然或者可以不必然包括该具体的特征、结构或特性。而且,这些措辞不一定是指同一实施例。此外,当结合实施例来描述具体的特征、结构或特性时,应认为,无论是否明确地说明,与其它实施例相结合实现这些特征、结构或特性在本领域技术人员的知识范围内。另外,应当意识到,呈“A、B和C中的至少一项”的形式的列表中所包含的项可以意指(A);(B);(C):(A和B);(B和C);或者(A,B和C)。类似地,以“A、B或C中的至少一项”的形式列出的项可以意指(A);(B);(C):(A和B);(B和C);或者(A,B和C)。

公开的实施例在一些情况下可以通过硬件、固件、软件或其任意组合来实现。公开的实施例还可以实现为由一个或多个暂态或非暂态机器可读(例如,计算机可读)存储介质载有或者存储的指令,这些指令可以由一个或多个处理器读取和执行。机器可读存储介质可以具体实施为用于存储或传输机器可读形式的信息的任何存储设备、机构或其它物理结构(例如,易失性或非易失性的存储器、介质磁盘或其它介质设备)。

在附图中,按具体的布置和/或顺序显示出了一些结构或方法特征。然而,应当意识到,不要求这些具体的布置和/或顺序。相反,在一些实施例中,这些特征可以按不同于示例性的附图中所示的方式和/或顺序布置。另外,在具体的图中包含结构或方法特征不意在暗示在全部实施例中都需要该特征,在一些实施例中,可能不需要该特征,或者该特征可以不与其它特征结合。

现在参考图1,示出了用于使用行人推算定位技术来确定用户位置的移动计算设备100。在使用时,如下文更详细描述的,移动计算设备100被配置为采集并处理来自移动计算设备100的多个传感器的传感器数据。例如,传感器可以采集与移动计算设备100的加速度、方位和/或其它惯性特性相关联的数据。基于传感器数据的分析,移动计算设备100确定移动计算设备100的用户迈出物理步(physical step)的时间点(即,在步行、慢跑、跑步或具有另一步态的同时)。移动计算设备100确定用户的各种朝向(例如,原始朝向、估计朝向等)、移动计算设备100和用户的方位(例如,相对于彼此和/或相对于先前的方位)以及用户所行进的距离(例如,基于用户的估计步长)。进一步,如下文所论述,在示例性的实施例中,移动计算设备100使用卡尔曼滤波器来估计用户的朝向,并且适当地处理非迈步运动(例如,由用户将移动计算设备100倾斜和旋转)。应当意识到,本文所描述的技术对于室内和室外位置跟踪两者都是有用的且同样适用。

移动计算设备100可以具体实施为能够执行本文所描述的功能的任意类型的计算设备。例如,移动计算设备100可具体实施为智能手机、蜂窝电话、可佩戴计算设备、个人数字助理、移动因特网设备、平板计算机、上网本、笔记本、超级本、膝上型计算机和/或任何其它移动计算/通信设备。如图1所示,示例性的移动计算设备100包括处理器110、输入/输出(“I/O”)子系统112、存储器114、数据存储设备116以及一个或多个传感器118。当然,在其它实施例中,移动计算设备100可包括其它或额外的组件,例如那些常见于典型的计算设备的组件(例如,各种输入/输出设备和/或其它组件)。另外,在一些实施例中,一个或多个示例性的组件可以并入另一组件的一部分或者以其它方式形成另一组件的一部分。例如,在一些实施例中,存储器114或其部分可以并入处理器110中。

处理器110可以具体实施为能够执行本文所描述的功能的任意类型的处理器。例如,处理器可以具体实施为单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,存储器114可以具体实施为能够执行本文所描述的功能的任何类型的易失性或非易失性的存储器或数据存储设备。在操作中,存储器114可以存储在移动计算设备100操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动器。存储器114可以经由I/O子系统112与处理器110通信耦合,I/O子系统112可以具体实施为便利于移动计算设备100的处理器110、存储器114和其它组件的输入/输出操作的电路系统和/或组件。例如,I/O子系统112可以具体实施为或者以其它方式包括存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(即,点对点链路、总线链路、电线、线缆、光导、印刷电路板迹线等)和/或便利于输入/输出操作的其它组件和子系统。在一些实施例中,I/O子系统112可以形成片上系统(SoC)的一部分,且与处理器110、存储器114和移动计算设备的其它组件一起并入到单个集成电路芯片上。

数据存储设备116可具体实施为任意类型的一个或多个设备,其配置为用于数据的短期或长期存储,诸如例如存储器器件和电路、存储器卡、硬盘驱动器、固态驱动器或其它数据存储设备。在示例性的实施例中,数据存储设备116和/或存储器114可以存储用户迈步模型130、传感器数据、取得的数据(例如,用户位置路经点)、和/或在移动计算设备100的操作期间有用的其它各种数据,如下文结合图2所论述的。

在示例性的实施例中,传感器118能够采集与移动计算设备100的加速度、方位和/或其它惯性特性相关联的数据。当然,在一些实施例中,传感器118可以采集可由移动计算设备100在执行本文所描述的功能时所使用的其它数据。在各个实施例中,传感器118可以具体实施为或者以其它方式包括例如惯性传感器、接近度传感器、光学传感器、光传感器、音频传感器、温度传感器、运动传感器、压电传感器、压力传感器和/或其它类型的产生可用于确定计算设备100的用户的位置的数据的传感器,如下文更详细论述。例如,在示例性的实施例中,传感器118包括加速度计124、陀螺仪126和磁力计128。当然,在其它实施例中,传感器118可以包括多个加速度计、陀螺仪和/或磁力计和/或如上文所述的其它传感器。加速度计124可以具体实施为被配置为测量移动计算设备100的加速度和/或其它运动(例如,沿着移动计算设备100的三维轴线中的每一个)的任何传感器、电路系统和/或其它组件。陀螺仪126可以具体实施为被配置为测量移动计算设备100相对于预定义坐标系的角方位的任何传感器、电路系统和/或其它组件。也即,陀螺仪126可以测量移动计算设备100的侧倾、俯仰和/或横摆。磁力计128可以具体实施为被配置为测量可用于确定移动计算设备100所指向(例如,相对于正北)的方向的磁场和/或其它信息的任何传感器、电路系统和/或其它组件(例如,罗盘)。当然,移动计算设备100还可以包括被配置为便利于传感器118的使用的组件和/或设备(例如,惯性测量单元)。

在一些实施例中,计算设备100还可以包括通信电路系统120。通信电路系统120可具体实施为能够实现移动计算设备100与其它远程设备之间经由网络(未示出)的通信的任何通信电路、设备或其组合。通信电路系统120可被配置为根据例如网络类型使用任意一个或多个通信技术(例如,无线或有线通信)以及关联的协议(例如,以太网(Ethernet)、WiMAX等)来实现此类通信,网络可具体实施为能够便利于移动计算设备100与远程设备之间的通信的任何类型的通信网络。

在一些实施例中,计算设备100还可以包括一个或多个外围设备。外围设备122可以包括任意数量的附加的外围设备或接口设备。外围设备122中所包含的具体的设备可取决于例如移动计算设备100的类型和/或期望用途。

现在参考图2,在使用中,移动计算设备100建立了用于确定用户位置的环境200。如下文所论述,移动计算设备100估计用户的朝向,并且基于用户的估计朝向、用户的估计步长以及用户的先前位置(例如,在迈出迈步之前用户的位置,用户的朝向是针对该迈步而计算的)来确定用户的估计位置。应当意识到,在一些实施例中,移动计算设备100可以响应于用户的每个物理步(physical step)而确定用户的朝向和/或估计用户的位置。如下文更详细描述的,对于用户的一个或多个迈步的确定朝向和/或用户的确定的位置可以基于各种标准被忽略或以其它方式细化(refine)。

移动计算设备100的示例性的环境200包括传感器处理模块202、朝向确定模块204和位置确定模块206。另外,传感器处理模块202包括迈步检测模块208和惯性测量模块210,并且朝向确定模块204包括原始朝向估计模块212、运动管理模块214和卡尔曼滤波器模块216。此外,位置确定模块206包括步长估计模块218和位置细化模块220。环境200的各个模块可具体实施为硬件、软件、固件或其组合。另外,在一些实施例中,一个或多个示例的模块可以是独立的模块或者形成另一模块的一部分。例如,在一些实施例中,位置细化模块220可与位置确定模块206分离。

传感器处理模块202分析或处理由传感器118所采集的数据。具体地,迈步检测模块208检测用户何时迈出物理步。例如,在一些实施例中,迈步检测模块208基于从加速度计124所采集的传感器数据来判定用户是否已经迈出物理步(例如,通过分析移动计算设备100的加速度的大小的变化)。在其它实施例中,迈步检测模块208可以基于另一组传感器118所采集的传感器数据来检测用户的物理步。应当意识到,在一些实施例中,迈步检测模块208可具体实施为步程计或类似模块。

惯性测量模块210被配置为处理与移动计算设备100的惯性特性相关联的传感器数据。例如,惯性测量模块210可以将传感器数据转换成能够由朝向确定模块204使用的格式。在一些实施例中,惯性测量模块210可具体实施为惯性测量单元(IMU),其被配置为处理移动计算设备100的加速度计124、陀螺仪126、磁力计128和/或其它传感器118所采集到的数据以确定移动计算设备100的运动特性,诸如例如加速度、倾斜角和方位。应当意识到,惯性测量模块210可具体实施为独立的模块或者形成移动计算设备100的一个或多个其它模块的一部分。

朝向确定模块204分析各种数据以估计用户的朝向,这可被位置确定模块206用来确定和/或跟踪用户的位置。如上所论述,在示例性的实施例中,朝向确定模块204包括原始朝向估计模块212、运动管理模块214和卡尔曼滤波器模块216。

原始朝向估计模块212基于所感测的移动计算设备100的惯性特性和/或已处理的传感器数据(例如,来自惯性测量模块210)以及用户已经迈出物理步的指示(例如,来自迈步检测模块208)来确定移动计算设备100的“原始(raw)”朝向。在示例性的实施例中,原始朝向估计模块212基于例如所感测的移动计算设备100的惯性特性来确定移动计算设备100和/或用户的方向朝向以及相对于移动计算设备100的先前方位的移动计算设备100的方位。例如,原始朝向估计模块212可以确定移动计算设备100在当前迈步处的方位相对于移动计算设备100在先前步(例如,用户的紧接上一步)处的方位的变化。如下文所描述,在一些实施例中,原始朝向估计模块212将所感测的移动计算设备100的加速度转换到地球参照系且对加速度进行积分以确定移动计算设备100的方向速度(directional velocity)。应当意识到,在一些情形下,原始朝向估计模块212假设移动计算设备100和用户以相同的速度行进,并且因此移动计算设备100的速度的大小和/或方向的估计可近似用户的速度的大小和/或方向。在示例性的实施例中,移动计算设备100的方向朝向被确定为移动计算设备100的所确定的速度的方向,或者以其它方式基于移动计算设备100的所确定的速度的方向。然而,在其它实施例中,移动计算设备100的所确定的速度的大小还可用于确定移动计算设备100的方向朝向(directional heading)。

在一些情况下,用户可以将移动计算设备100握持在她的前方,使得移动计算设备100被保持在相对于用户固定的方位。在那些情形下,移动计算设备100的运动通常限于迈步运动(即,与用户的迈步运动有关)。然而,在典型的情形下,用户可以通过随意的方式握持移动计算设备100,使得安装定位(即,移动计算设备100被握持的方位)可以随时间而变化。例如,用户可以将移动计算设备100从纵向方位(即,相对于用户为零度)转变成横向方位(即,相对于用户为九十度),将移动计算设备100置于她的衣袋中,倾斜移动计算设备100(例如,向前/下或者向后/上),和/或以其它方式重新定位移动计算设备100。应当意识到典型的PDR实现方式在处置这些非迈步运动同时最小化/减少误差(即,当与地面实况相比时)方面有难度。

运动管理模块214负责那些非迈步运动(例如,由用户倾斜以及旋转移动计算设备100)以使得朝向确定模块204能够更精确地估计用户的朝向。为这样做,运动管理模块214可以检测用户的手的运动。具体地,在示例性的实施例中,如果运动管理模块214检测到移动计算设备100相对于在先前步处移动计算设备100的方位的倾斜(即,在非水平面中旋转),则运动管理模块214将检测到的物理步忽略。如下文所述,移动计算设备100利用卡尔曼滤波器来估计用户的朝向。因此,换言之,运动管理模块214防止与检测到的迈步相关联的数据被卡尔曼滤波器处理,或者卡尔曼滤波器以其它方式拒绝该数据。如果移动计算设备100在后续的步中没有相对的倾斜,则运动管理模块214可再次允许数据发送到卡尔曼滤波器且由其处理。应当意识到,在一些实施例中,运动管理模块214可以建立相对倾斜阈值量,要将迈步忽略则运动必须超过该阈值量。这些实施例可以负责到与例如迈步运动和/或不影响朝向估计的精确度的运动所共有的少量倾斜。在一些实施例中,如果不进行如上文所述的补偿,则这些引起移动计算设备100倾斜的运动会导致状态转换误差εk,其不近似于高斯噪声或白噪声。

运动管理模块214还负责沿水平面的旋转运动。应当意识到,移动计算设备100沿水平面的大的旋转移动可以或者可以不与用户的移动相关联并且因此可以或者可以不与用户的朝向相关联。例如,大的旋转移动(例如,九十度)可与用户转弯相关联,与用户将移动计算设备100相对于她自身自旋相关联,或者与那些移动的组合相关联。如果不存在与水平旋转相关联的倾斜和/或存在不超过基准阈值的倾斜,则运动管理模块214不能阻止数据被如上所述卡尔曼滤波器处理。

应当意识到,如果以其他方式不予负责,则移动计算设备100相对于用户的移动会导致对用户做出不精确的朝向估计。在示例性的实施例中,如果水平旋转运动超过基准阈值(例如,七十五度,九十度,一百度等),则运动管理模块214不再信任与如下文所述的移动计算设备100的相对方位(Ok-Ok-1)相关联的测量。在一个具体的实施例中,基准阈值是九十度旋转,因为在单个物理步中九十度转弯是不自然的且因此是不常见的。因此,运动管理模块214将卡尔曼滤波器重新初始化并且通过增大该滤波器的状态协方差P来增大卡尔曼滤波器的误差容限。换言之,运动管理模块214可以充当至少部分地处置下文所述的卡尔曼滤波器的初始化和参数的自适应控制器。应进一步意识到,在一些情形下,运动管理模块214可以不负责(或者可以不完全负责)移动计算设备100的非迈步运动。

卡尔曼滤波器模块216基于移动计算设备100的原始朝向和移动计算设备100的方位变化(即,移动计算设备100的方位相对于先前步处的方位)应用卡尔曼滤波器,来确定用户的朝向。如上所述,卡尔曼滤波器模块216可以拒绝来自卡尔曼滤波器的各种数据(例如,与运动管理模块214相结合)并且可以在各个时间点将卡尔曼滤波器初始化(例如,在用户的第一个测量/检测到的步之前)和/或重新初始化。在示例性的实施例中,卡尔曼滤波器模块216应用卡尔曼滤波器来基于下面参考图3所描述的示例性的PDR模型估计用户的实时朝向。

现在参考图3,用户300被示出以各种朝向(Hk-1,Hk,Hk+1)在不同的物理步302、304、306处且在相对于参照系的各个方位(Ok-1,Ok,Ok+1)握持移动计算设备100。在示例性的步骤302、304、306中,应当意识到,Ok是在步k处移动计算设备100在水平面中的方位,Hk是在步k处用户的朝向,并且Rk是在步k处设备方位与用户的朝向之间的相对角。更具体地,在第一步302中,用户300具有相对于参照系为零度的朝向Hk-1,移动计算设备100具有零度的方位Ok-1,限定在它们之间的相对角Rk-1是零度。在第二步304中,用户300具有零度的朝向Hk,移动计算设备100具有九十度的方位Ok,并且相对角Rk是九十度。进一步,在第三步306中,用户300具有四十五度的朝向Hk+1,移动计算设备100具有135度的方位Ok+1,相对角Rk+1是九十度。

应当意识到,在步k处,Hk=Ok+Rk,并且可以在根据Hk-Hk-1=(Ok-Ok-1)+(Rk-Rk-1)的PDR模型中计算在步k处用户的朝向变化。在示例的PDR模型中,Ok-Ok-1表示在步k处移动计算设备100的方位的变化(即,相对于步k-1),并且可通过惯性测量模块210基于所感测的移动计算设备100的惯性特性来确定。此外,Rk-Rk-1表示在步k处用户300与移动计算设备100之间的相对角的变化(即,相对于步k-1)。在多数情形下,Rk-Rk-1是零,因为在PDR期间大多数用户不频繁地改变移动计算设备100的安装定位/方向。

应当意识到,可应用卡尔曼滤波器来基于定义的状态转换函数和测量函数yk来估计滤波器状态xk。在示例的实施例中,滤波器状态xk被定义为用户的朝向Hk。换言之,xk=Hk。基于上述的PDR模型,状态转换函数被定义为xk=xk-1+Ok-Ok-1k,其中εk是在步k处的状态转换误差。另外地,如上所述,xk是在步k处用户的确定的朝向,并且Ok是在步k处移动计算设备100的方位。在示例性的实施例中,状态转换误差包括与确定Ok-Ok-1相关联的测量误差以及移动计算设备100的定位/方向改变误差Rk-Rk-1。应当意识到,在示例性的实施例中,卡尔曼函数假设Rk-Rk-1=0(例如,为确保滤波器的稳定性)。然而,因为可能并不是这样,所以运动管理模块214处置Rk-Rk-1≠0的情形,如上所述。另外地,测量函数yk可定义为yk=xkk,其中yk是如上所述的移动计算设备100的原始朝向,并且δk是与移动计算设备100的加速度的积分相关联的测量误差。

返回图2,在示例性的实施例中,卡尔曼滤波器模块216通过应用具有如上所述的状态转换函数xk=xk-1+Ok-Ok-1k和测量函数yk=xkk的线性卡尔曼滤波器来确定用户的估计朝向。在其它实施例中,卡尔曼滤波器模块216可以应用卡尔曼滤波器的其它变形来确定用户的朝向。例如,在一些实施例中,卡尔曼滤波器模块216可以应用具有状态转换函数xk=Hk-Hk-1=Ok-Ok-1k和测量函数yk=xk+Hk-1k的卡尔曼滤波器,其中Hk是在步k处用户的估计朝向,xk是在步k处估计的朝向变化,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处移动计算设备的确定的方向朝向(例如,方向速度),并且δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。在另外的实施例中,卡尔曼滤波器模块216和/或朝向确定模块204可以另外地或者可选地基于上述PDR模型而应用另一滤波器(例如,用于估计的另一离散滤波器)。

位置确定模块206基于用户的确定的朝向、用户的估计步长以及在先前物理步处用户的位置来确定用户的估计位置。例如,位置确定模块206可以确定,用户位于沿用户的确定的朝向的方向远离先前位置一段与用户步长对应的距离。如上所述,在示例性的实施例中,位置确定模块206包括步长估计模块218和位置细化模块220。

步长估计模块218基于用户迈步模型130来确定用户的估计步长。根据具体的实施例,用户迈步模型130可以是用于估计用户的步长的一般模型(例如,通用模型),或者用户迈步模型130可以是用户特定模型。在一些实施例中,多于一个的用户迈步模型130可用来估计用户的步长(例如,一般模型与用户特定模型的组合)。此外,在一些实施例中,可以生成用户特定的用户迈步模型130,或者在用户的“训练期间(training period)”后,适配一般模型。例如,移动计算设备100可请求用户迈出某数量的步且测量所行进的距离。另外,在一些实施例中,用户迈步模型130可包括各种步长,取决于用户是在步行、慢跑、跑步或以其它方式迈步,这可以基于传感器118所采集的传感器数据的分析来确定。在其它实施例中,步长估计模块218可以基于移动计算设备100的传感器118所采集的数据来确定用户的估计步长(例如,使用或者不使用用户迈步模型130)。

位置细化模块220被配置为基于各种因素来对用户的估计位置进行细化。如上所述,可通过运动管理模块214和/或卡尔曼滤波器模块216来将卡尔曼滤波器重新初始化(例如,响应于移动计算设备100的旋转运动超过对于水平旋转运动的基准阈值)。应当意识到,在重新初始化之后,卡尔曼滤波器需要一定时间段来收敛且变得稳定。因此,在其中卡尔曼滤波器正在收敛中的时间点所确定的用户位置可能取决于用户的移动而是不精确的。

因此,在示例性的实施例中,位置细化模块220响应于确定卡尔曼滤波器已经重新初始化且已经收敛,而对用户的所确定的估计位置进行细化。例如,一旦用户在卡尔曼滤波器重新初始化后已经迈出阈值量的步数(例如,两步、三步、五步、十步、二十步、五十步等),位置细化模块220可以针对重新初始化后的一个或多个迈步而对用户的估计位置进行细化。在示例性的实施例中,位置细化模块220“反推(backstep)”用户的位置,这是通过在重新初始化后从最新的步(例如,阈值步)返回到第一步重新计算用户的朝向以对用户的朝向进行更新,以及通过用从重新初始化后的第一步到用户所迈出的最后一步(例如,阈值步)的已更新的用户的朝向来重新计算用户的位置。在反推一次或多次后,卡尔曼滤波器稳定化(即,除非其再次被重新初始化)。应意识到,在其它实施例中,位置细化模块220可以其它方式对用户的确定的朝向和/或位置进行细化。

现在参考图4-6,在使用时,移动计算设备100可以执行用于确定用户的位置(例如,使用PDR)的方法400。示例性的方法400开始于图4的框402,其中移动计算设备100判定是否跟踪用户的定位/位置(即,是否开始PDR)。如果是这样,则移动计算设备100在框406中初始化跟踪。例如,在框406中,移动计算设备100基于如上所述的适当的参数、状态转换函数和测量函数来初始化卡尔曼滤波器。当然,在初始化期间,移动计算设备100可以从存储器114或数据存储设备116取回用户迈步模型130,初始化移动计算设备100的传感器118以及一个或多个模块(例如,惯性测量模块210),和/或执行其它初始化和配置程序。

在框408中,移动计算设备100感测移动计算设备100的惯性和/或其它特性。例如,如上所述,移动计算设备100可以感测移动计算设备100的加速度、角方位(例如,侧倾、俯仰和横摆)、磁场和/或其它惯性、方向或其它特性(例如,与PDR分析相关的特性)。在框410中,移动计算设备100分析所采集的传感器数据(例如,通过IMU)以检测例如用户何时迈出物理步。传感器数据可被进一步分析以确定如上文所描述的各种特性(例如,移动计算设备100的原始朝向)。

在框412中,移动计算设备100判定移动计算设备100的用户是否已迈出物理步。如果为否,则方法400返回框408,其中移动计算设备100继续从移动计算设备100的传感器118采集数据。换言之,移动计算设备100等待直至用户的步被检测到。如果移动计算设备100判定出用户已经迈步,则移动计算设备100在框414中确定用户的原始朝向(即,移动计算设备100的方向朝向)。如上所述,在这样做时,移动计算设备100可以基于所感测的移动计算设备100的加速度来确定移动计算设备100的水平速度。

特别地,移动计算设备100通过如上所述的传感器118来感测移动计算设备100的加速度。应当意识到,所感测的加速度是相对于移动计算设备100的参照系或者对移动计算设备100的加速度进行感测的传感器118的参照系来定义的。在示例性的实施例中,移动计算设备100借助于定义了两个参照系之间的映射的旋转矩阵,将所感测的加速度从移动计算设备100的参照系转换成地球参照系。例如,地球参照系中的新加速度aet可以根据aet=Atat来确定,其中At是旋转矩阵,at是移动计算设备的所感测的加速度。应当意识到,旋转矩阵可利用任何适合的算法或技术来计算。

在示例性的实施例中,移动计算设备100通过将地球参照系中的加速度在短时间段上积分(或求和)来确定移动计算设备100的速度(即,向量)。将意识到,在较长的时间段内的积分或求和通常将引入大的误差δk,如上所述。因此,在一些实施例中,移动计算设备100在极小的时间段Δt上对加速度求和,以试图近似移动计算设备100的瞬时速度且最小化误差的引入。地球参照系中的速度vet可根据vet=∑aetΔt来确定。在示例性的实施例中,移动计算设备100将地球参照系中的速度投影到水平面(例如,与用户已经迈步的表面相符的水平面)以确定移动计算设备100沿用户已迈步的方向的水平速度。将意识到,在示例性的实施例中,所确定的水平速度是如本文所述的原始朝向。如上所表明,在一些实施例中,移动计算设备100的方向朝向可以忽略所确定的水平速度的大小。

在框418中,移动计算设备100判定是否检测到倾斜(即,非水平旋转)。如果是,则移动计算设备100在框420中忽略检测到的步,并且方法400随后返回到框408,在框408中,移动计算设备100等待直至检测到另一步。如上所述,应当意识到,移动计算设备100可使用基准阈值并且仅当倾斜量超过基准阈值才忽略用户的步。

如果没有检测到倾斜或者倾斜没有超过基准阈值,则方法400前进到图5的框422,其中移动计算设备100判定是否已经检测到大的旋转。如果是,则移动计算设备100在框424中将卡尔曼滤波器重新初始化。在这样做时,移动计算设备100可以在框426中修正滤波器参数。例如,如上所述,移动计算设备100可以增大卡尔曼滤波器的状态协方差以增大卡尔曼滤波器的误差容限。如上所述,移动计算设备100可以对于构成“大的”旋转的水平旋转运动量建立基准阈值。换言之,如果移动计算设备100旋转了超过阈值的量,则移动计算设备100将卡尔曼滤波器重新初始化,然而,如果移动计算设备100没有旋转超过阈值的量,则移动计算设备100在框426中不将卡尔曼滤波器重新初始化。如上文所述,移动计算设备100如此充当自适应控制器,其可以根据移动计算设备100的旋转运动来调节卡尔曼滤波器的参数。

无论移动计算设备100是否将卡尔曼滤波器重新初始化,移动计算设备100在框428中估计用户的朝向。如上所述,要这样做,在框428中,移动计算设备100可基于移动计算设备100的确定的方位变化Ok-Ok-1、移动计算设备100的确定的原始朝向yk以及滤波器参数(例如,基于卡尔曼滤波器是否已经重新初始化的状态协方差)来应用卡尔曼滤波器。特别地,分别如框432和424所示,移动计算设备100可以应用具有状态转换函数xk=xk-1+Ok-Ok-1k以及测量函数yk=xkk的卡尔曼滤波器,如上所述。应当意识到,卡尔曼滤波器的输出是状态xk,其被定义为用户的朝向,如上所述。此外,在一些实施例中,移动计算设备100可应用不同的滤波器用于确定用户的朝向(例如,上述卡尔曼滤波器的变种)。

在框436中,移动计算设备100确定用户的步长(即,用户的步幅在水平方向上的长度)。例如,移动计算设备100可以基于如上所述的用户迈步模型132来确定用户的步长。在图6的框438中,移动计算设备100基于用户的朝向和用户的步长来确定用户的位置。在一些实施例中,移动计算设备100可以确定用户位于沿用户的朝向的方向远离用户在先前步处的用户先前确定的位置一段距离(即,迈步长度)。

在框440中,移动计算设备100判定是否细化用户的位置。如上所述,响应于检测到移动计算设备100的大量的水平旋转,可以将卡尔曼滤波器重新初始化。在那些情形下,卡尔曼滤波器可能花费一定量的时间/步数再次收敛且变得稳定。因此,移动计算设备100可以确定将用户的确定的位置细化(例如,反推)在卡尔曼滤波器重新初始化之后的阈值步数。在框442中,移动计算设备100细化用户的位置。在示例性的实施例中,移动计算设备100通过反推用户的朝向和位置计算来这样做。例如,在框444中,移动计算设备100可以反推(backstep)用户的位置且计算新位置。特别地,移动计算设备100可以在重新初始化后从最后的一步返回到第一步来重新计算用户的朝向,以更新用户的朝向。另外地,移动计算设备100可以借助于从重新初始化后的第一步到用户所迈出的最后一步(例如,阈值步)的已更新的用户的朝向,来重新计算用户的位置。方法400返回图4的框408,其中移动计算设备100等待检测用户的下一步。

如本文所描述的,移动计算设备100使用朝向估计、卡尔曼滤波器和用于用户的非迈步运动(例如,倾斜和大的旋转)的自适应控制,在逐步的基础上跟踪用户的位置。响应于检测到用户的迈步,基于用户的先前位置、估计的用户的朝向以及用户的估计步长来计算用户的新位置。计算设备100的与用户的迈步运动(移动计算设备100相对于用户的倾斜和旋转)无关的移动,由移动计算设备100适当地处置。此外,在一些情形下,移动计算设备100可以如上所述细化用户的确定的位置。

示例

下面提供了本文公开的技术的示例性的示例。技术的实施例可以包括下面所描述的任意一个或多个示例以及示例的任意组合。

示例1包括用于确定用户的位置的移动计算设备,所述移动计算设备包括:多个惯性传感器,其感测所述移动计算设备的惯性特性;传感器处理模块,其基于所述多个惯性传感器感测到的所述移动计算设备的惯性特性来检测所述移动计算设备的用户已经沿一方向迈出物理步;原始朝向估计模块,其基于感测到的惯性特性来确定所述移动计算设备沿所述方向的方向朝向以及所述移动计算设备的方位相对于在所述用户的先前物理步处所述移动计算设备的先前方位的变化;卡尔曼滤波器模块,其应用卡尔曼滤波器以基于所确定的方向朝向以及所述移动计算设备的方位的变化来确定所述用户的朝向;以及位置确定模块,其基于所确定的用户的朝向、用户的估计步长以及在先前物理步处用户的先前位置来确定用户的估计位置。

示例2包括示例1的主题,并且其中检测所述用户已经迈出物理步、确定所述移动计算设备的方向朝向以及所述移动计算设备的方位的变化、应用卡尔曼滤波器以确定所述用户的朝向以及确定所述用户的估计位置包括:针对所述用户迈出的多个相继物理步处的每一个物理步,检测所述用户已经迈出物理步、确定所述移动计算设备的方向朝向以及所述移动计算设备的方位的变化、应用卡尔曼滤波器以确定所述用户的朝向、以及确定所述用户的估计位置。

示例3包括示例1和示例2中的任一个的主题,并且进一步包括运动管理模块,其(i)响应于检测到用户已经迈出物理步而判定所述移动计算设备是否已经沿非水平方向倾斜,以及(ii)响应于判定出所述移动计算设备已经沿所述非水平方向倾斜而忽略所检测到的物理步。

示例4包括示例1-3中的任一个的主题,并且进一步包括运动管理模块,其(i)判定所述移动计算设备是否已经沿水平面旋转了超过基准阈值的量,以及(ii)响应于判定出所述移动计算设备已经沿所述水平面旋转了超过所述基准阈值的量而将所述卡尔曼滤波器重新初始化。

示例5包括示例1-4中的任一个的主题,并且其中所述基准阈值是九十度旋转。

示例6包括示例1-5中的任一个的主题,并且其中将所述卡尔曼滤波器重新初始化包括:增大所述卡尔曼滤波器的状态协方差以增大所述卡尔曼滤波器的误差容限。

示例7包括示例1-6中的任一个的主题,并且进一步包括位置细化模块,其响应于判定出如下项而对用户的确定的估计位置进行细化:(i)卡尔曼滤波器已经重新初始化,以及(ii)在卡尔曼滤波器重新初始化后用户所迈出的物理步数目超过基准阈值。

示例8包括示例1-7中的任一个的主题,并且其中对确定的估计位置进行细化包括:响应于判定出在重新初始化后用户所迈出的物理步数目已达到基准阈值,基于在用户达到基准阈值所在的步时的所确定的朝向来更新在重新初始化后直至用户达到基准阈值所在的步为止的每个物理步的用户的朝向;以及基于用户的更新后的朝向来重新计算用户的估计位置。

示例9包括示例1-8中的任一个的主题,并且其中应用卡尔曼滤波器包括应用具有状态转换函数xk=xk-1+Ok-Ok-1k以及测量函数yk=xkk的线性卡尔曼滤波器,其中:xk是在步k处所确定的用户的朝向,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处所确定的移动计算设备的方向朝向,以及δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。

示例10包括示例1-9中的任一个的主题,并且其中应用卡尔曼滤波器包括应用具有状态转换函数xk=Hk-Hk-1=Ok-Ok-1k以及测量函数yk=xk+Hk-1k的线性卡尔曼滤波器,其中:Hk是在步k处用户的估计朝向,xk是在步k处的估计的朝向变化,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处所确定的移动计算设备的方向朝向,以及δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。

示例11包括示例1-10中的任一个的主题,并且其中在多个相继物理步处的第一物理步之前,卡尔曼滤波器模块将卡尔曼滤波器初始化。

示例12包括示例1-11中的任一个的主题,并且其中确定所述移动计算设备沿所述方向的方向朝向包括确定所述移动计算设备沿所述方向的速度。

示例13包括示例1-12中的任一个的主题,并且其中确定所述移动计算设备沿所述方向的速度包括:通过所述多个惯性传感器中的惯性传感器来感测所述移动计算设备的加速度;将所感测的来自所述惯性传感器的参照系的加速度转换成地球参照系的加速度;以及基于所述地球参照系的加速度来确定所述移动计算设备沿所述方向的速度。

示例14包括示例1-13中的任一个的主题,并且其中确定所述移动计算设备沿所述方向的速度包括:确定将所述惯性传感器的参照系映射到地球参照系的旋转矩阵;将所确定的旋转矩阵应用于所感测的加速度以确定所述移动计算设备在地球参照系中的加速度;对地球参照系中的加速度进行积分以确定在地球参照系中的速度;以及将所确定的地球参照系中的速度投影到用户在其上物理地迈步的水平面上。

示例15包括示例1-14中的任一个的主题,并且其中位置确定模块基于用户迈步模型来确定用户的估计步长。

示例16包括在移动计算设备上确定用户位置的方法,所述方法包括:通过所述移动计算设备且基于感测到的所述移动计算设备的惯性特性来检测所述移动计算设备的用户已经沿一方向迈出物理步;通过所述移动计算设备,基于感测到的惯性特性来确定所述移动计算设备沿所述方向的方向朝向以及所述移动计算设备的方位相对于在用户的先前物理步处所述移动计算设备的先前方位的变化;通过所述移动计算设备应用卡尔曼滤波器,以基于所确定的用户的方向朝向以及所述移动计算设备的方位的变化来确定用户的朝向;以及通过所述移动计算设备基于所确定的用户的朝向、所述用户的估计步长以及在先前物理步处用户的先前位置来确定所述用户的估计位置。

示例17包括示例16的主题,并且其中检测所述用户已经迈出物理步、确定所述移动计算设备的方向朝向以及所述移动计算设备的方位的变化、应用卡尔曼滤波器以确定所述用户的朝向以及确定所述用户的估计位置包括:针对所述用户迈出的多个相继物理步处的每一个物理步,检测所述用户已经迈出物理步、确定所述移动计算设备的方向朝向以及所述移动计算设备的方位的变化、应用卡尔曼滤波器以确定所述用户的朝向、以及确定所述用户的估计位置。

示例18包括示例16和17的主题,并且进一步包括:通过所述移动计算设备,响应于检测到所述用户已经迈出所述物理步而判定所述移动计算设备是否已经沿非水平方向倾斜;以及通过所述移动计算设备,响应于判定出所述移动计算设备已经沿所述非水平方向倾斜而忽略检测到的物理步。

示例19包括示例16-18的主题,并且进一步包括:通过所述移动计算设备,判定所述移动计算设备是否已经沿水平面旋转了超过基准阈值的量;以及通过所述移动计算设备,响应于判定出所述移动计算设备已经沿着所述水平面旋转了超过所述基准阈值的量而将所述卡尔曼滤波器重新初始化。

示例20包括示例16-19的主题,并且其中预定阈值是九十度旋转。

示例21包括示例16-20的主题,并且其中将所述卡尔曼滤波器重新初始化包括增大所述卡尔曼滤波器的状态协方差以增大卡尔曼滤波器的误差容限。

示例22包括示例16-21的主题,并且进一步包括:通过所述移动计算设备,响应于判定出如下项而对所确定的所述用户的估计位置进行细化:(i)卡尔曼滤波器已经重新初始化,以及(ii)在卡尔曼滤波器重新初始化后用户所迈出的物理步的数目超过基准阈值。

示例23包括示例16-22的主题,并且其中对所确定的估计位置进行细化包括:响应于在重新初始化后用户所迈出的物理步的数目达到所述基准阈值,基于在用户达到所述基准阈值所在的步时的所确定的朝向来更新在重新初始化后直至用户达到基准阈值所在的步为止的每个物理步的用户的朝向;以及基于用户的更新后的朝向来重新计算用户的估计位置。

示例24包括示例16-23的主题,并且其中应用卡尔曼滤波器包括应用具有状态转换函数xk=xk-1+Ok-Ok-1k以及测量函数yk=xkk的线性卡尔曼滤波器,其中:xk是在步k处所确定的用户的朝向,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处所确定的移动计算设备的方向朝向,以及δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。

示例25包括示例16-24的主题,并且其中应用卡尔曼滤波器包括应用具有状态转换函数xk=Hk-Hk-1=Ok-Ok-1k以及测量函数yk=xk+Hk-1k的线性卡尔曼滤波器,其中:Hk是在步k处用户的估计朝向,xk是在步k处的估计的朝向变化,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处所确定的移动计算设备的方向朝向,以及δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。

示例26包括示例16-25的主题,并且进一步包括:通过移动计算设备,在多个相继物理步中的第一物理步之前,初始化卡尔曼滤波器。

示例27包括示例16-26的主题,并且其中确定所述移动计算设备沿所述方向的方向朝向包括确定所述移动计算设备沿所述方向的速度。

示例28包括示例16-27的主题,并且其中确定所述移动计算设备沿所述方向的速度包括:通过所述移动计算设备的惯性传感器来感测所述移动计算设备的加速度;确定将所述惯性传感器的参照系映射到地球参照系的旋转矩阵;将所确定的旋转矩阵应用于所感测的加速度以确定所述移动计算设备在地球参照系中的加速度;对地球参照系中的加速度进行积分以确定地球参照系中的速度;以及将所确定的地球参照系中的速度投影到用户在其上物理地迈步的水平面上。

示例29包括示例16-28的主题,并且其中确定所述移动计算设备沿所述方向的速度包括:确定将所述惯性传感器的参照系映射到地球参照系的旋转矩阵;将所确定的旋转矩阵应用于所感测的加速度以确定所述移动计算设备在地球参照系中的加速度;对地球参照系中的加速度进行积分以确定在地球参照系中的速度;以及将所确定的地球参照系中的速度投影到用户在其上物理地迈步的水平面上。

示例30包括示例16-29的主题,并且进一步包括:通过移动计算设备,基于用户迈步模型来确定用户的估计步长。

示例31包括计算设备,包括:处理器;以及存储器,其中存储有多条指令,所述指令当通过处理器执行时使得所述计算设备执行示例16-30中任一示例所述的方法。

示例32包括一个或多个机器可读存储介质,包括存储于其中的多条指令,所述指令响应于被执行使得计算设备执行示例16-30中任一示例所述的方法。

示例33包括用于确定用户的位置的移动计算设备,所述移动计算设备包括:用于基于感测到的所述移动计算设备的惯性特性来检测所述移动计算设备的用户已经沿一方向迈出物理步的单元;用于基于感测到的惯性特性来确定所述移动计算设备沿所述方向的方向朝向以及所述移动计算设备的方位相对于在所述用户的先前物理步处所述移动计算设备的先前方位的变化的单元;用于应用卡尔曼滤波器以基于所确定的方向朝向以及所述移动计算设备的方位的变化来确定所述用户的朝向的单元;以及用于基于所确定的用户的朝向、用户的估计步长以及用于在先前物理步处用户的先前位置来确定用户的估计位置的单元。

示例34包括示例33的主题,并且其中用于检测所述用户已经迈出物理步的单元、用于确定所述移动计算设备的方向朝向以及所述移动计算设备的方位的变化的单元、用于应用卡尔曼滤波器以确定所述用户的朝向的单元以及用于确定所述用户的估计位置的单元包括:针对所述用户迈出的多个相继物理步中的每一个物理步,用于检测所述用户已经迈出物理步的单元、用于确定所述移动计算设备的方向朝向以及所述移动计算设备的方位的变化的单元、用于应用卡尔曼滤波器以确定所述用户的朝向的单元、以及用于确定所述用户的估计位置的单元。

示例35包括示例33和34中的任一个示例的主题,并且进一步包括:用于响应于检测到用户已经迈出物理步而判定所述移动计算设备是否已经沿非水平方向倾斜的单元,以及用于响应于判定出所述移动计算设备已经沿所述非水平方向倾斜而忽略所检测到的物理步的单元。

示例36包括示例33-35中的任一个示例的主题,并且进一步包括:用于判定所述移动计算设备是否已经沿水平面旋转了超过基准阈值的量的单元;以及用于响应于判定出所述移动计算设备已经沿所述水平面旋转了超过所述基准阈值的量而将所述卡尔曼滤波器重新初始化的单元。

示例37包括示例33-36中的任一个示例的主题,并且其中预定阈值是九十度旋转。

示例38包括示例33-37中的任一个示例的主题,并且其中用于将所述卡尔曼滤波器重新初始化的单元包括:用于增大所述卡尔曼滤波器的状态协方差以增大所述卡尔曼滤波器的误差容限的单元。

示例39包括示例33-38中的任一个示例的主题,并且进一步包括用于响应于判定出如下项而对用户的确定的估计位置进行细化的单元:(i)卡尔曼滤波器已经重新初始化,以及(ii)在卡尔曼滤波器重新初始化后用户所迈出的物理步数目超过基准阈值。

示例40包括示例33-39中的任一个示例的主题,并且其中用于对确定的估计位置进行细化的单元包括:用于响应于判定出在重新初始化后用户所迈出的物理步数目已达到基准阈值,基于在用户达到基准阈值所在的步时的所确定的朝向来更新在重新初始化后直至用户达到基准阈值所在的步为止的每个物理步的用户的朝向的单元;以及用于基于用户的更新后的朝向来重新计算用户的估计位置的单元。

示例41包括示例33-40中的任一个示例的主题,并且其中用于应用卡尔曼滤波器的单元包括用于应用具有状态转换函数xk=xk-1+Ok-Ok-1k以及测量函数yk=xkk的线性卡尔曼滤波器的单元,其中:xk是在步k处所确定的用户的朝向,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处所确定的移动计算设备的方向朝向,以及δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。

示例42包括示例33-41中的任一个示例的主题,并且其中用于应用卡尔曼滤波器的单元包括用于应用具有状态转换函数xk=Hk-Hk-1=Ok-Ok-1k以及测量函数yk=xk+Hk-1k的线性卡尔曼滤波器的单元,其中:Hk是在步k处用户的估计朝向,xk是在步k处的估计的朝向变化,Ok是在步k处移动计算设备的方位,εk是在步k处的状态转换误差,yk是在步k处所确定的移动计算设备的方向朝向,以及δk是在步k处与移动计算设备的加速度的积分相关联的测量误差。

示例43包括示例33-42中的任一个示例的主题,并且进一步包括用于在多个相继物理步的第一物理步之前初始化卡尔曼滤波器的单元。

示例44包括示例33-43中的任一个示例的主题,并且其中用于确定所述移动计算设备沿所述方向的方向朝向的单元包括用于确定所述移动计算设备沿所述方向的速度的单元。

示例45包括示例33-44中的任一个示例的主题,并且其中用于确定所述移动计算设备沿所述方向的速度的单元包括:用于通过移动计算设备的惯性传感器来感测所述移动计算设备的加速度的单元;用于将所感测的来自所述惯性传感器的参照系的加速度转换成地球参照系的加速度的单元;以及用于基于所述地球参照系的加速度来确定所述移动计算设备沿所述方向的速度的单元。

示例46包括示例33-45中的任一个示例的主题,并且其中用于确定所述移动计算设备沿所述方向的速度的单元包括:用于确定将所述惯性传感器的参照系映射到地球参照系的旋转矩阵的单元;用于将所确定的旋转矩阵应用于感测加速度以确定所述移动计算设备在地球参照系中的加速度的单元;用于对地球参照系中的加速度进行积分以确定在地球参照系中的速度的单元;以及用于将所确定的地球参照系中的速度投影到用户在其上物理地迈步的水平面上的单元。

示例47包括示例33-46中的任一个示例的主题,并且进一步包括用于基于用户迈步模型来确定用户的估计步长的单元。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1