厉害了计步器是如何记下你的步数的 厉害了计步器是如何记下你的步数的厉害了计步器是如何记下你的步数的

厉害了计步器是如何记下你的步数的

随着社会的发展,很多朋友越来越注重自己的健康,跑步成为一种方便而又有效的锻炼方式。但是如何知道自己跑了多少步,多远的路程?计步器可以帮助人们实时掌握锻炼情况。它的主要功能是检测步数,通过步数和步幅可计算行走的路程。步幅信息可通过行走固定的距离来计算或是直接输入,高级的计步器还可以计算人体消耗的热量。

但这些计算的主要依据是步数的检测。那么一个小小的手环或手机APP是如何知道你每天运动的步数的呢?今天,我们就一起来看一看,计步器是怎么工作的。

你知道吗?计步器最早是由意大利的伦纳德·达芬奇酝酿的,但现存的最早的计步器是在达芬奇之后150年,即1667年制作的。

在日本,计步器已经使用了40多年,主要用于体育运动和分析记录行走步调。最初的计步器通常利用百种原理作为记步技术,利用加重的机械开关检测步伐,并带有一个简单的计数器。如果晃动这些装置,就可以听到有一个金属球来回滑动,或者一个摆钟左右摆动敲响当块。现在,这种机械式的计步器早已淡出历史,取而代之的是电子式的计步器。

计步器的工作原理

路,是一步一步走出来的。即使看似匀速的闲庭信步,对我们携带的设备来说(如手机、运动手环),每一步都经历了过山车般的“加速度”变化。

一般来说,抬腿迈出一步的时候,加速度是最大的。我们把它放到一个坐标轴上,加速度的变化看起来就像一个cos波形。

两个波峰之间,可以被认为是一步。如果连续出现了8个(不同硬件厂商有不同标准)波峰,就可以基本确定这个人在运动状态。

设备就开始把这些前面的波动以及后面的波动,算成步数。这就是最基本的计步原理了。

在实际场景中,算法还要去掉一系列的“噪音”。比如我们走路时,手机放兜里会上下抖动,产生不同方向的加速度。这时算法就要判断并去掉“噪音”,只留下最主要的运动特征。

计步器种类

目前,市面上的计步器主要分为两大类:机械式计步器和电子计步器。

机械式计步器主要通过感应手臂或腰部的抖动来计步。机械式计步器通常设有一个运动门限,当运动的加速度大于这个门限则能够被内部的机械装置感应到,进而开始计步。由于运动门限不可调,机械式计步器在某些情况下无法计步,如走路较慢时手臂甩动幅度较小,不会产生计步。另外,非走路状态下运动幅度大也会产生计步,如抬手挠头等动作会产生误计。

电子计步器通常内置一个加速度传感器(Accelerometer)和一个运算单元(MCU),通过加速度传感器感应用户的加速度变化,然后通过MCU来估算行走的步数。电子式计步器通常采用三轴加速度传感器,可以感应用户在三维方向上的运动,且内置较为复杂的计步算法。

相对于机械式计步器,电子计步器计步精度更高,抗干扰能力更强。目前智能手机和某些非智能手机都内置了加速度传感器,只需要增加相应的软件即可实现计步,无需增加硬件成本。智能手表,智能手环类产品也都内置加速度传感器和计步算法,方便用户监控自己的运动量。

以放置在手腕处的加速度传感器为例。用户在水平步行运动中,手腕处的加速度会收到重力加速度和甩手加速度的双重影响。如下图所示,红色箭头表示重力加速度,绿色箭头表示甩手加速度。

在步行过程中,重力加速度始终垂直与大地,甩手动作带来的加速度呈周期性变化。反映到图表中,可以看到,在步行运动中,垂直和前进产生的加速度与时间大致为一个周期性信号。

通过对轨迹的峰值进行检测计算和加速度阀值决策,即可实时计算用户运动的步数,还可依此进一步估算用户步行距离。

计步器的计步算法

计步算法可以分为四大类,一是峰值检测算法,二是变换域算法,三是滤波算法,四是模式识别算法。根据所设计的计步器在人体上布放的位置不同,如腕部、腰部、鞋底等,可以选择不同的计步算法。

峰值检测类算法原理简单,易于实现,应用较为广泛。这里简单介绍峰值检测类算法。用户在运动中,可能把设备放置于口袋或者包中,亦或拿在手中。所以设备的放置方向不确定。那么首先,我们通过计算三个加速度的矢量长度,可以获得一条步行运动的正弦曲线轨迹。

第二步就是峰值检测,我们记录了上次矢量长度和运动方向,通过矢量长度的变化,可以判断当前加速度的方向,并和上一次保存的加速度方向进行比较。如果是相反的,即是刚过峰值状态,则进入计步逻辑进行计步,否则就舍弃这段。通过对峰值次数的累加,那我们就可得计算得到用户步行的步数。

最后,就是去噪音(干扰)。手机或智能手表等手持设备会有一些低幅度和快速的抽动状态,即我们俗称的手抖,或者某个用户想通过短时快速反复摇动设备来模拟人走路,这些干扰数据如果不剔除,会影响记步的准确值,对于这种干扰,我们可以通过给检测加上阀值和步频判断来过滤。目前人类最快的跑步频率为5HZ(当然不排除人类借助其它设备跑步频率超过这个频率),也就是说相邻两步的时间间隔的至少大于0.2秒,如图中的计步时间,若两次计步之间的时间间隔小于0.2秒,则不计步。这样我们就过滤了高频噪声,即步频过快的情况。同时我们通过和上次加速度大小进行比较,设置一定的阀值Threshold来判断运动是否属于有效(如图中的绿线),有效运动才可进行记步。

如果已知步行和跑步的步数,那么再通过人体身高,体重及性别就可以大致知道此人的步长,改进后即可变成一个测距离及测速计。通过三轴加速度传感器,我们可以知道用户的运动状态。除了计步,还可以利用加速度传感器与陀螺仪及磁传感器融合进行步行航迹推算。

计步器的典型工作设计方案

步数识别系统

步数识别系统是指运行在移动手机上,能够监视用户走了多少步的应用程序。它一般由以下3个部分构成:

传感器模块,用来采集传感器数据;

特征提取模块,处理和分析原始数据,并进行特征提取、建立模型;

步数识别模块,把所提取的特征用来识别步数。

硬件设备

重力传感器(G-Sensor)又称为加速度传感器,用来感知加速度的变化,它使用三维方向的加速度分量来表示。G-Sensor被用在很多智能设备当中,比如一些高端笔记本电脑内置了G-Sensor,在发生剧烈的拉动时(如跌落),立即启动硬盘保护,避免硬盘损害。再如Apple的iPhone使用G-Sensor来感知手机屏幕的方向,当在观看视频时手机横放,屏幕自动跟着旋转,这使得用户体验大大增加。

方案实现

日常生活当中,人们使用手机一般是拿在手上,放在裤兜里,女士也经常把它放在包里。因为手机外界环境总是很复杂的,裤兜有松有紧,放在松裤兜的手机比放在紧的更容易抖动,产生的噪音也更多。为了使该算法尽可能的适用于不同的应用环境,需要对大部分的使用环境进行测试。首先,由4个人(8个或更多也可以)各自对不同手机使用环境进行数据收集,因为人们在同样的场合使用手机的习惯是不一样的。其次,对采集来的这些数据分别进行特征提取。最后,使用提取的特征模型进行识别检验。

数据采集

G-Sensor提供的数据如表1所示。

我们的算法采用的采样频率为20HZ,采样环境有:慢走、快走、跑步、骑自行车、坐的士、坐公交、坐电梯(上/下)、坐地铁、上下楼梯。其中,有走路的采集走100步的数据(慢走、快走等),不是走路的采集1分钟的数据。由于开始和结束的时候放置手机(放口袋、包里)会有一些波动,不是我们想要的,因此这两个时间段的数据可以删去,或不考虑。手机放在口袋,收集的原始Length字段数据,在Excel2007上绘制波形图如图1。横轴为每个采样点的索引,纵轴为Length值大小,也就是加速度大小,值在9.8附近变化。

图1.Length字段波形图

特征提取

由于收集的数据包含有噪声,特别是在两个动作切换之间Length字段值的波动比较大,比如慢走和上楼梯的过程。这里使用快速傅里叶变换(FFT)来处理Length字段的数据,波形图如图2。纵轴已向下平移9.8。

图2.经过FFT处理的Length字段波形图

我们发现上面经过FFT处理的波形表现出一定的规则,就是在一定的时间间格内总有一个波谷,我们称这个点为“踩点”(如图3中的1、2、3、4点),也就是加速度最小的时刻(脚往下踩,手机相对有一个往下“掉”的过程)。另外,图3上A点也是波谷,但这一点是一个波动点,需要排除。所以踩点还必须小于一定的值-Threshold。当脚抬起来的时候(“起点”),身体对手机的作用力会增大,加速度也增大。所以起点必须大于Threshold,大于Threshold的都称为起点,因为我们只关心状态的变化。通常地,走路的时候步与步之间的有一定的时间间隔,走快些间隔小,走慢些间隔大。如果是跑的话,人类的极限是1秒种跑5步,也就是1步0.2秒。从起点到踩点状态变化1次就是走了1步。所以,我们建立包含如下2个要素的模型M:

1.Length满足一定阀值,比如–Threshold

2.两个连续踩点的时间间隔必须在Timespan(200~2000毫秒)之内

图3.模型满足的条件

步数识别

我们把建立的模型用来检验在坐的士环境下所采集的数据,波形图如图4.

图4.用模型检验的士环境下的数据

我们可以看到后面的一段时间是比较平稳的,前面有一些波动,这些波动导致了错误的识别,识别为走路。我们可以改进这个模型,增加一个约束条件:在监视了连续k(比如3)个踩点后才开始计步,所以从图3上标号为4的点开始计步。这样的约束就可以把大部分的抖动给去掉。把最终的模型用来检验所采集的不同环境下的数据得到的计步结果还是比较准确的。

关于日常计步器应用中的问题答疑

现在我们已经对计步的基本原理有了一定了解。顿时觉得好简单!那么就让我们看一看下面几个简单的问题吧。

问:原地踏步会计步吗?

答:算啊,跟走路一样的。因为你原地踏步,虽然没有相对于地面的位移,但加速度是存在的。同理,在跑步机上跑步,放心,步数都记着呢。

问:坐着抖腿呢?

答:这与你抖腿的幅度和频率都有关,且看少年你骨骼惊奇还是手机厂商算法高深。任何震动会被采集到,但不同硬件厂商算法对这些场景处理可能不一样。

问:绑狗身上行吗?

答:既然你这么问了,那我恐怕只能说这与狗狗的性格有关。文静一些的,或者幼犬,走路比较慢的话,他/她迈步产生的加速度不一定有人那么高,达不到算法的阀值。性格活泼的,或者大一些的狗狗,运动加速度特征与人相似,“骗过”算法的可能性较高。不同手机厂商也有不同的算法优化方案。

问:我生活三点一线,一天就几千步,如果有机会坐火车,是不是可以狠狠刷一把步数?

答:计步的基本原理不是采集距离,也不是采集速度,而是采集加速度。不管火车走多远、跑多快,大多数情况是匀速(或匀加减速)运动,加速度变化不显著,且无法形成与走路相似的波形。火车上,如果你不走路的话,计算步数的可能性是非常小的。

追问:那在火车上摇手机呢?

答:摇也可以啊,因为有一个纵向加速度,在纵向上会产生波纹。但这与火车无关,和原地抖腿没有本质区别。

问:为什么我坐公交车就算步数了呢?

答:对,公交上被计算步数的概率是比较高的。路况有一定影响,繁忙路段行驶时,走走停停都会产生加速度的变化。还和司机的开车习惯有关,如果司机不停地刹车,或者颠得厉害,加速度影响就大。如果遇上开车开得平稳又熟悉路况的本地老司机,车上乘客比较不容易计步。

问:厂商各有算法,不同设备用户在微信运动上一起排名,如何公平呢?

答:实际上,在抖腿、公交之外,走路、跑步才是日常运动最主要的场景。这些基本场景的算法,业界是较为统一的。微信对主要场景也有一套测试流程,确保不同设备计入的步数差距不大。对极端场景,也会持续优化算法。

最后还有你们一直想问的,作弊问题。

其实可以作弊的地方有很多。特别是安卓,作为一个开源的系统,人为变更上报数据都是可能的。微信有一套反作弊机制,比如在用户手机端对速度做简单的合法性校验。假如一秒钟就走了10步,这种数据就可能被系统直接抹掉。而且还给他暂停计步,让他觉得作弊没用。

如你所想,抖腿、绑狗,小小“作弊”,完全杜绝是不太可能的。对于严重、明显的连续作弊,微信会请他进入黑名单,他的数据不会再被别人看到,就只能自嗨了。

分享一条链接:传感器原理和应用大合集

版权申明: 本站文章来源于网络或网友自行上传,如果有侵权行为请联系站长及时删除。

赞 ( 1) 打赏

评论

9+4=

此站点使用Akismet来减少垃圾评论。 了解我们如何处理您的评论数据