发明名称 基于单轴陀螺仪的计步及里程推算方法
摘要 本发明公开了一种基于单轴陀螺仪的计步及里程推算方法,该方法的步骤如下:运动模型参数的标定;单轴陀螺仪数据的采集;根据单轴陀螺仪数据的角速度周期性进行计步;利用补偿算法对计步步数进行补偿和修正;利用运动模型根据步频f获得该段时间内平均步长和运动距离;最后路程累加计算出运动里程。本发明基于人运动时身体会绕垂直地面轴呈现一定程度的周期性摆动的特性,利用垂直安装的单轴陀螺仪来实现对该周期的检测,从而获得人体运动的步数以及步频。并利用人体运动模型,从步频估计出平均的步长,从而实现人的运动计步和里程计算。本发明具有使用传感器数目少,成本低,可靠性高,轻小方便,实用和推广性高等特点。
申请公布号 CN102353383B 申请公布日期 2013.04.17
申请号 CN201110162782.5 申请日期 2011.06.16
申请人 浙江大学 发明人 项志宇;齐保振
分类号 G01C22/00(2006.01)I;G01C22/02(2006.01)I 主分类号 G01C22/00(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 林怀禹
主权项 1.一种基于单轴陀螺仪的计步及里程推算方法,其特征在于该方法的步骤如下:步骤(1)运动模型参数的标定;步骤(2)单轴陀螺仪数据的采集;步骤(3)根据单轴陀螺仪数据的角速度周期性进行计步;步骤(4)利用补偿算法对计步步数进行补偿和修正;步骤(5)利用运动模型根据步频f获得该段时间内平均步长和运动距离;步骤(6)最后路程累加计算出运动里程;所述步骤(1)运动模型参数的标定为:人体运动时步长和步频的关系为l=Cf<sup>b</sup>,其中l为步长,f为步频,C和b为待定的模型参数;不同人的运动状态参数是不一样的,同一个人在走路或者跑步时的模型参数也是不一样的,因此在使用前必须经过标定;假设走路参数为(C<sub>w</sub>,b<sub>w</sub>),跑步参数为(C<sub>r</sub>,b<sub>r</sub>);具体标定方法如下:取一段长度为L的路程,使用者分别用慢走和快走两种方式走完距离为L这段路程,两种方式所走的步数和用时分别为(N<sub>1</sub>,T<sub>1</sub>)和(N<sub>2</sub>,T<sub>2</sub>);由下式得出走路模型参数:<maths num="0001"><![CDATA[<math><mrow><msub><mi>b</mi><mi>w</mi></msub><mo>=</mo><mfrac><mrow><mi>lg</mi><mrow><mo>(</mo><msub><mi>N</mi><mn>2</mn></msub><mo>/</mo><msub><mi>N</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow><mrow><mi>lg</mi><mrow><mo>(</mo><msub><mi>N</mi><mn>1</mn></msub><msub><mi>T</mi><mn>2</mn></msub><mo>/</mo><msub><mi>N</mi><mn>2</mn></msub><msub><mi>T</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msub><mi>C</mi><mi>w</mi></msub><mo>=</mo><mfrac><mrow><mi>L</mi><mo>/</mo><msub><mi>N</mi><mn>1</mn></msub></mrow><msup><mrow><mo>(</mo><msub><mi>N</mi><mn>1</mn></msub><mo>/</mo><msub><mi>T</mi><mn>1</mn></msub><mo>)</mo></mrow><msub><mi>b</mi><mi>w</mi></msub></msup></mfrac><mo>=</mo><mfrac><mrow><mi>L</mi><mo>/</mo><msub><mi>N</mi><mn>2</mn></msub></mrow><msup><mrow><mo>(</mo><msub><mi>N</mi><mn>2</mn></msub><mo>/</mo><msub><mi>T</mi><mn>2</mn></msub><mo>)</mo></mrow><msub><mi>b</mi><mi>w</mi></msub></msup></mfrac></mrow></math>]]></maths>同理获得跑步模型参数(C<sub>r</sub>,b<sub>r</sub>),并根据下式获得走路和跑步状态的步频临界点f<sub>t</sub>如下:<maths num="0003"><![CDATA[<math><mrow><msub><mi>f</mi><mi>t</mi></msub><mo>=</mo><mfrac><mrow><msup><msub><mi>C</mi><mi>w</mi></msub><mfrac><mn>1</mn><mrow><msub><mi>b</mi><mi>w</mi></msub><mo>+</mo><mn>1</mn></mrow></mfrac></msup><msup><mn>1.9444</mn><mfrac><mn>1</mn><mrow><msub><mi>b</mi><mi>w</mi></msub><mo>+</mo><mn>1</mn></mrow></mfrac></msup><mo>+</mo><msup><msub><mi>C</mi><mi>r</mi></msub><mfrac><mn>1</mn><mrow><msub><mi>b</mi><mi>r</mi></msub><mo>+</mo><mn>1</mn></mrow></mfrac></msup><msup><mn>1.9444</mn><mfrac><mn>1</mn><mrow><msub><mi>b</mi><mi>r</mi></msub><mo>+</mo><mn>1</mn></mrow></mfrac></msup></mrow><mn>2</mn></mfrac><mo>;</mo></mrow></math>]]></maths>所述步骤(2)单轴陀螺仪数据的采集为:单轴陀螺仪装置捆绑置于人的腰部正中朝前,单轴陀螺仪的轴方向竖直向上放置,并以该装置为原点建立坐标系,沿人体竖直向上为坐标系的Z轴正方向,人的正前方为坐标系的Y轴的正方向,人的正右侧且同时垂直于Y,Z轴的方向为X轴的正方向,此时单轴陀螺仪测的是人向左向右的角速度,其中向左的角速度为正,向右的角速度为负;所述步骤(3)根据单轴陀螺仪数据的角速度周期性进行计步为:由于人体走路时是左右摆动的,所以单轴陀螺仪测得的角速度也是周期性的波形,由于人体走路每走两步完成一次摆动周期,所以每个周期波形对应两步;首先对单轴陀螺仪的原始数据进行带通滤波,滤除部分高频噪声和毛刺,然后通过检测波形上升沿或下降沿的个数来确定正弦波的个数M,则运动步数N=2M;所述步骤(4)利用补偿算法对计步步数进行补偿和修正为:根据单轴陀螺仪的数据计算出每个波形的时间,该时间即为该摆动周期两步的时间;由于一般人走路的摆动频率在一定范围内,也即是每个摆动周期在一定范围之内设为(T<sub>min</sub>,T<sub>max</sub>),超出这个正常范围则认为不是正常的运动摆动周期;造成检测非正常摆动的原因基本有两种情况,第一种是由于噪声和毛刺,使得把高频噪声的上升沿或下降沿算成了一个摆动周期,这样使得该摆动周期小于T<sub>min</sub>;另一种情况是当人急转弯时使得角速度瞬间变大,从而产生一个幅度很大,时间很长的波形,该摆动周期大于T<sub>max</sub>,这样使得一个摆动周期淹没在其中;对于第一种情况要进行负补偿,即从总摆动周期个数里减掉该噪声摆动;对于第二种情况补偿方法如下,把该大于T<sub>max</sub>摆动周期t除于正常摆动周期的平均值,得一个数值m,对m进行四舍五入处理得整数M,最后的总运动摆动周期数补偿为再加上(M-1),而最后的总步数为总摆动周期个数的2倍;所述步骤(5)利用运动模型根据步频f获得该段时间内平均步长和运动距离为:利用运动参数模型中步频和步长的关系,根据步频来求出某段短时间内的平均步长<img file="FSB00000995165600021.GIF" wi="37" he="50" />然后平均步长与步数相乘计算出改时间内的运动距离Δs;在运动参数模型中,走路和跑步的参数是不同的,当检测到步频大于步骤(1)中的运动状态频率阀值f<sub>t</sub>时,就判定为跑步,运动模型中就采用跑步模型参数,反之则判定为走路,运动模型中采用走路模型参数;所述步骤(6)最后路程累加计算出运动里程为:根据以上步骤得到运动距离后,对运动距离累加得到运动里程,根据个人需要,每段时间进行一次运动距离计算和里程更新的方法,首先根据该段时间的步数ΔN计算出该段时间的平均步长,然后再根据运动模型计算出该段时间内的平均步长为<img file="FSB00000995165600022.GIF" wi="37" he="52" />则该短时间的运动距离<img file="FSB00000995165600023.GIF" wi="245" he="51" />最后再与上个时刻的运动里程累加就得到当前的运动里程,设第i-1次里程更新时人的运动里程为S<sub>i-1</sub>,则第i次里程更新的运动里程S<sub>i</sub>为:S<sub>i</sub>=S<sub>i-1</sub>+Δs<sub>i</sub>从而依次推算出人的运动运动里程,如果使用者需要将运动里程清零重新推算运动里程,则按清零按钮使运动里程回归到S<sub>0</sub>=0的状态。
地址 310027 浙江省杭州市西湖区浙大路38号
您可能感兴趣的专利