前言
随着当前智能终端的普及,人们可做的事情变得越来越有趣,比如计步器。传统的计步器一般是一个单独的设备,戴在身体的某个位置,由于必须在用户身上增加一个设备,推广起来有一定阻力。其实,计步器只需要一个3-轴加速度传感器就能做到较高的记步精度,类似三星note3的计步器精度在95%以上。当前智能手机一般都含有加速度传感器,许多人开始在手机上做计步器。可惜目前Android市场上大多数计步器精度都不理想,经本人测试,目前最好的是三星的note3的健康伙伴,更关键的是三星使用了sensorhub的技术,在保持精度的同时,做到了超低功耗。
在手机上做计步器相较于传统的计步器最大的难点在于手机使用时位置不固定,计步器要能适应不同放置位置和不同走路场景,这就要求计步器算法有很好的动态调整能力。
计步器模型介绍
关于人走路的模型,前人[1]已经做了很多研究,不再累赘。总结来讲,人在走路时,加速度传感器会形成一个类似正弦波形图,因此可以根据检测波峰波谷记步。见下图:

算法
概述
- 特征选取
- 滤波
- 基于动态阈值检测步数
- 步数矫正
特征选取
考虑到手机在不同放置情况下传感器的每个轴会有不同表现,因此,取其强度特征可以避免该类问题,即取三轴平方和。
滤波
滤波是一种常见的数据预处理方法,特别是手机上加速度传感器数据存在一定的噪音,经过滤波后能得到较平滑的数据。滤波算法有许多中,常见的有数字滤波,也可以叫中值滤波、高斯滤波、快速傅里叶变换。本人试过几种滤波算法后,发现采用中值滤波即可满足需求,因为算法的瓶颈并不在此。另一个考虑是终端的计算资源有限,过多的计算将造成大量的耗电。
简单来讲,即取一个时间窗做平滑,假设以50HZ的频率采集加速度传感器数值,即在Android中注册Sensor频率为Fastest(不同手机可能会有差异

本文介绍了如何在手机上实现高精度的计步器算法,重点在于动态阈值和步数矫正。通过特征选取、滤波、动态阈值检测和步数矫正等步骤,适应手机在不同位置和走路场景的变化。计步器利用加速度传感器的正弦波形图检测步数,并通过时间戳矫正步数,确保在200-2000ms之间的有效步伐。
最低0.47元/天 解锁文章
1974





