计步器算法是如何实现的
计步算法可以分为四大类,一是峰值检测算法,二是变换域算法,三是滤波算法,四是模式识别算法。根据所设计的计步器在人体上布放的位置不同,如腕部、腰部、鞋底等,可以选择不同的计步算法。以应用最为广泛的峰值检测算法为例:
1、获取运动轨迹
用户在运动中,可能把设备放置于口袋或者包中,亦或拿在手中,所以设备的放置方向不确定。那么首先,我们通过计算三个加速度的矢量长度,可以获得一条步行运动的正弦曲线轨迹。
2、峰值检测
我们记录了上次矢量长度和运动方向,通过矢量长度的变化,可以判断当前加速度的方向,并和上一次保存的加速度方向进行比较。如果是相反的,即是刚过峰值状态,则进入计步逻辑进行计步,否则就舍弃这段。通过对峰值次数的累加,那我们就可得计算得到用户步行的步数。
3、去噪音(干扰)
手机或智能手表等手持设备会有一些低幅度和快速的抽动状态,即我们俗称的手抖,或者某个用户想通过短时快速反复摇动设备来模拟人走路,这些干扰数据如果不剔除,会影响记步的准确值,对于这种干扰,我们可以通过给检测加上阈值和步频判断来过滤。
目前人类最快的跑步频率为5HZ(当然不排除人类借助其它设备跑步频率超过这个频率),也就是说相邻两步的时间间隔的至少大于0.2秒,如图中的计步时间,若两次计步之间的时间间隔小于0.2秒,则不计步。这样我们就过滤了高频噪声,即步频过快的情况。同时我们通过和上次加速度大小进行比较,设置一定的阈值Threshold来判断运动是否属于有效(如图中的绿线),有效运动才可进行记步。
4、推算运动状态
如果已知步行和跑步的步数,那么再通过人体身高,体重及性别就可以大致知道此人的步长,改进后即可变成一个测距离及测速计。通过三轴加速度传感器,我们可以知道用户的运动状态。除了计步,还可以利用加速度传感器与陀螺仪及磁传感器融合进行步行航迹推算,防止出现误计步的现象。
智能计步器算法思想详解
1、运动阈值
运动加速度一般呈现正弦变化,当运动速度提升,最大值与最小值抬高时候,平均值也应当跟着轨迹变化。因此,运动阈值是一个动态值,具有自适应性,并且足够快。
加速度计不断的更新三轴数据,采集滤波,判断最大值与最小值。我们以采样50次为一组更新一次阈值。平均值(max min)/2做为“运动阈值”。动态精度由自己划分,把运动变化量划分等级,随着运动阈值大小判定当前精度值。
2、迈步判断
(1)步伐迈出的条件定义:当加速度曲线跨过动态阀值上方时或者当加速度曲线跨过动态阀值下方时加速度的变化为正值或者为负值。
(2)利用线性位移寄存器和动态阀值和动态精度一起判断个体是否迈出有效的一步。建立两个寄存,new寄存器和old寄存器;当前数据采集到后判断是否移入new寄存器,满足移入条件:加速度变化量大于当前的动态精度。就把当前采集的数据移入new寄存器,否则new保持不变。每当新数据到来时候,new寄存器的值无条件移入old寄存器。这样,就能够避免高频噪声的影响,提高判断精度。
(3)三轴加速度同时检测,可以但是只要一个轴的加速度变化最大,可以利用该轴当为运动方向,其他轴忽略不计。
3、具体程序
(1)采样滤波,求出3轴的平均值,求出加速度的最大,最小值。
(2)每采样50次,求出峰值,然后设置门限。
(3)计算精度。
(4)对采样滤波的平均值进行处理然后将其与精度进行比较(通过移位寄存器来消除高频噪声,使值更精确)。
(5)动态门限判定,对数值进行比较,然后将步数加1。
声明:以上方法源于程序系统索引或网民分享提供,仅供您参考使用,不代表本网站的研究观点,证明有效,请注意甄别内容来源的真实性和权威性。申请删除>> 纠错>>