基于Android系统的计步器开发与算法研究



本文均为原创,转载请注明出处,需要了解文章详细请联系原作者邮箱,谢谢。

(张优劲、罗福亚、石振辉)

电子科技大学 生命科学与技术学院、生物医学工程

摘要:利用安卓手机自带的加速度传感器来采集人体运动的加速度信号,去除噪声和坏值。建立数学模型,对模型进行验证,然后获得判据。最后再由Android手机软件实现对信号的全部处理,实现计步功能。

1、信号采集的实现

使用java的编译软件eclipseGoogle提供的SDK包进行编写Android程序。设计一个Service后台用于监听传感器的变化并记录数据,设计一个SQLite的简单数据库用于记录行走步数与时间。

在采集信号的过程当中,就是人体正在运动当中。为了能够更好的反映人体的实际运动情况,我们软件要求将手机软件启动后放在大腿口袋内跟随人体一起运动,结束时取出手机停止软件的计步。

2建立模型:

首先分析人步行的过程,在人体行进的过程当中会有脚踩下与脚抬起的两个幅度比较大的动作。我们的模型采集的数据是以把手机放在大腿口袋随人体运动为前提采集到的数据。固采集到的加速度在理论上一个周期内会有一个最小值和最大值的出现,并且两个最值的方向夹角应该在符合人体运动规律的合理角度范围之内。但是在实际当中,由于受到各种噪声的影响,最值将可能以极值的方式出现,角度的范围也将有所变化。据此结合对实际的数据分析,我们提出如下的模型:加速度信号在时间域上出现的那些满足阀值条件的极值点,并且满足极值夹角在一定范围内的,就是判断人体步数的记步判据。具体分析实际数据、建模过程如下:



特征信号的提取:

将预处理后的三轴加速度进行矢量合成,得出预处理后加速度大小的波形图,如图8所示:(其中横线是重力加速度的值)


模型总结:

该模型对加速度信号进行滤波、特征提取,最后再由大量的统计数据获得了上、下限阀值和角度范围的两个判据。虽然对人体的实际步数判断会有一定的误差,但是已经达到了比较好的效果。对于正常人体的一次适量运动步数,这些误差都是在可以接受的范围内!

3.1、具体实现算法:

FFT利用蝶形运算公式将数据进行排列、乘系数、相加,可以得到FFT运算的结果。

IFFT利用蝶形运算公式将数据进行排列、乘相反的系数、相加,可以得到IFFT运算的结果。

滤波器:我们设置好截止频率,可以将其他频率的信息置零,这样可以得到一个简单的理想的滤波器。


实现结果:在Android环境下采集数据和使用滤波器之后的结果:(数据导出后使用matlab查看)

滤波前:


滤波后:



3软件实现结果分析与评价:

整个android程序独立的实现了由信号采集,到信号滤波处理、加工,再到最后成功计算出人体运动的步数!实现了计步器的基本功能,但是由于java的效率比较低,设备的运算速度受到限制,特别在fft与ifft运算部分的消耗大量运算时间造成的数据损失,这样有可能会造成一定步数的判断失误。不过后续对软件的测试表明,软件的稳定性相当可靠,计步误差在5%以内。整体性能良好!

5、总结:

通过对人体运动的数学建模和模型的特征提取,进而以安卓系统为平台,开发出具有实用价值的计步器。目前市场上已有的一些记步器app采用比较简单角度判断,没有进行运动特征的捕抓和匹配,所以造成了计步的不够准确。此外我们的app还有后台支持,可以实时传送数据到网络后台进行保存,并且进行分析和实时监控。并且还集成了测心率的功能。相信这次开发的计步器将会很好的为人们的健康服务!


关键词:android计步器;加速度信号处理;数字滤波


联系人邮箱:devinzhang91@gmail.com

本文均为原创,转载请注明出处,需要了解文章详细请联系原作者邮箱,谢谢。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值