基于加速度传感器的运动步数检测算法研究

2016-11-21 01:19邓海琴
电子器件 2016年5期
关键词:步数跑步峰值

魏 芬,邓海琴

(南京航空航天大学金城学院教学实验中心,南京211156)

基于加速度传感器的运动步数检测算法研究

魏芬*,邓海琴

(南京航空航天大学金城学院教学实验中心,南京211156)

为解决人体运动过程中手腕摆动对步数检测干扰的影响,提出了一种区域峰值步数检测算法。该算法根据人体运动时的加速度信号特征,使用高斯滤波去除噪声对加速度信号的影响,基于三轴合加速度数据采用区域峰值检测方法判定有效步伐,同时利用提取的加速度信号幅值的变化量作为特征值,准确实现了稳定状态下的跑步、走路两种动作的自动识别,并根据人体不同的运动状态自动调整采样速率,有效降低了系统功耗。实验结果表明,区域峰值算法相比于动态阀值和单一峰值的算法具有更高的步数检测精确度,可达到95%以上。

传感器应用;步数检测;信号矢量幅值;区域峰值检测;加速度传感器

随着人们对健康体育锻炼的越来越重视,对日常运动量进行量化就成为了一个关键因数。计步器是一种可以定量监测人体运动量的热门户外设备,通过内含的加速度传感器计算人体行走的步数,进而计算出运动距离和消耗的卡路里数,方便人们准确把握自身的运动情况。

加速度传感器采集的是三轴加速度的数据,有文献建议把加速度变化最大的那个轴作为有效轴来表征人体运动状态,然后利用有效轴的数据进行分析和计算步数[1],但是由于加速度的有效轴在运动过程中会不停的变换[2],从而导致计步的不准确。本文在对加速度传感器的三轴数据进行融合的基础上,提出了一种区域峰值检测方法来计算有效步数,该算法可以有效提高腕式计步器步数检测的精确度,给上位机软件在计算用户消耗的能量时提供更加详细、准确的数据,为用户提供更加优质的体验。

1 三轴加速度数据预处理

人体在跑步或走路运动时会产生3个方向(侧向、前向和竖向)的加速度分量,这3个加速度分量相互正交,对应加速度传感器3个轴—x、y、z轴上的加速度[3],图1所示为一次跑步运动时x、y、z轴上测得的波形。

图1 三轴加速度数据曲线图

由于获得的三轴加速度信号中包含着许多不同类型复杂的噪声信号和手腕抖动产生的噪声,本文首先采用高斯滤波器[4]对信号进行预处理,去除噪声。高斯滤波器在频率域是一个十分有效的低通滤波器,用ax(t)、ay(t)、az(t)分别表示t时刻x轴、y轴、z轴的加速度信号,记A(t)=[ax(t),ay(t),az(t)],则高斯滤波公式为

图2 高斯滤波前后加速度波形

2 三轴数据合一方法选取

对于腕式穿戴的计步器,由于运动过程中手腕的翻转而导致加速度数据的有效轴不停的变换,单纯的提取某一个轴的加速度数据不足以表示真正的运动特征。但是,无论如何穿戴计步器,x、y、z 3轴中总有至少一个轴具有相对较大的周期性加速度变化。因此,本文采用三轴合一的方法,计算三轴加速度的信号矢量幅值SVM(Signal Vector Magnitude)[5-6]来确定加速度,以提高计步的准确性,计算公式如下:

其中,ax(t)、ay(t)、az(t)分别为t时刻加速度传感器在x、y、z轴所测得的数据。图3为跑步状态时测得的三轴SVM输出,从图3可以看出,三轴合一后的SVM数据波形与实际步数相对应,一个波峰的变化正好对应一个步伐。

图3 三轴合一SVM输出

3 步数检测算法

从文献中分析,现有的步数检测算法大致有2种:一种是文献[1]中提出的动态阀值判断方法[1],该方法通过检测加速度曲线从上往下跨过动态阀值,加速度曲线的斜率为负时判定为有效步伐。但这种算法在判断走路的有效步伐时会出现漏检的现象,如图4所示,由于走路时手臂向前摆动时加速度幅值变化较大,而向后摆动时幅值变化较小,动态阀值不能有效捕捉到所有小幅值变化的波形,如图中圆圈所示处,导致漏检步伐。另一种是文献[7]提出的峰值检测方法,当加速度曲线斜率由正到负变化时出现峰值[7],但是单纯地依靠峰值判断有效步伐要求加速度波形非常平滑,否则任何干扰所引起的微小波动都会导致找到的峰值远远大于实际步伐数,引起误判。

图4 动态阀值漏检步伐示意图

为解决以上2种步数检测算法的不足,本文基于峰值检测的方法提出一种综合性的区域峰值判断方法,从以下3种特征进行判决,只有同时满足了这3种特征,才判定为有效步伐。

(1)区域峰值检测设人体运动时采集到的加速度传感器数据经过三轴合一和滤波处理后的加速度为a(t),则定义u=a(t)-a(t-1),v=a(t+1)-a(t),u和v为有正负值的标量,当u或v为正时,表示斜率为正,加速度数据呈现上升趋势;当u或v为负时,表示斜率为负,加速度数据呈现下降趋势。因此,当在t时刻,u>0且v<0时,加速度数据曲线斜率由正变为负,出现数据转折点,但仅凭斜率的变化来判断峰值会太过敏感,容易受到一些小尖刺干扰信号的影响。本文对其进行改进,采用区域峰值检测方法,即设置滑动查找窗口,窗口设置过大,会导致漏检峰值信号;窗口设置过小,容易将干扰信号误判为峰值信号[8],经过实际多次分析测试,本文把滑动窗口设置为7,即在t时刻的左右各取3个采样点,当(a(t-1)>a(t-2)>a(t-3)且a(t+1)>a(t+2)>a(t+3))时,可以正确判断出峰值。综上所述,当在t时刻加速度a(t)同时满足

时,则确定当前t时刻为峰值点,否则,则为干扰信号。用类似的方法可以查找出波谷。当查找到一对峰谷值时认为出现一个步伐,该步伐是否为有效步伐则需根据幅度阀值和时间窗口阀值进一步判定。

(2)在检测出峰谷值后,提取加速度数据a(t)的相邻波峰和波谷值的差作为特征值,记为CSVM(Change of SVM),计算公式如下:

其中ap(t)为t采样时刻波峰值,av(t-k)为t-k采样时刻波谷值,k为相邻波峰波谷值之间的采样点数。为消除由于人体运动过程中的因手腕抖动等原因而导致的无效峰谷值数据,经过多次测试确定,当CSVM>0.2 gn时,为一次有效峰谷值数据,否则,予以丢弃。

(3)当系统由于非正常运动状态的原因而快速或缓慢地振动时,也会被误认为是有效步伐。利用时间窗口可以排除这种无效振动。一般人体最快跑步速度为每秒5步,最慢走路为每2 s 1步[9],两个有效步伐的时间间隔在[0.2 s~2.0 s]之间,当采样率为50 Hz时,两个有效步伐的采样点次数间隔值在[10~100]之间;当采样率为25 Hz时,有效步伐采样点次数间隔值在[5~50]之间。系统实时更新两步之间的采样点次数,如果落在有效间隔值范围之外,则视为无效扰动,不计入步数寄存器。

4 运动步态识别

利用加速度传感器的输出估计人体运动的能量消耗已经被广泛接收,对人体运动步态的自动识别在对能量进行精确估计时能提供有价值的信息[10]。人体在做周期性动作的时候,波峰波谷的差值呈现规律性,当速度快的时候加速度幅度变化比较大,而速度慢的时候加速度变化比较小,不同状态下SVM的幅值变化稳定在一定的范围之内。图5为实验中跑步-走路-静止站立的加速度SVM和CSVM的效果图,本文以CSVM为特征值自主进行运动步态识别。从图中可知,当人体静止站立时,加速度的幅值变化(CSVM)很小,趋近于0。算法中设定以2 s为一个判断周期,当CSVM的值稳定在>1.2 gn范围内时判定人体为跑步状态,当CSVM的值稳定在0.2 gn~1.2 gn范围内时判定为走路状态,当CSVM的值稳定在<0.2 gn范围内时判定为静止站立状态。

图5 加速度SVM和CSVM波形图

5 自适应采样速率调整

系统采用区域峰值判断方法进行步数检测,在此基础上,为有效减少系统的功耗,算法中采用了根据人体的运动状态(跑步或走路)自适应调节数据采样率的方法[2],当处于跑步这种高速运动时,采用高采样率以保证计数的准确性,当处于走路这种低速运动时,采用较低的采样率。

自适应采样速率调整是指根据前期对人体运动状态(跑步或走路)的判定,动态地调整采样速率。自适应采样速率步数检测方法的流程图如图6所示。由于人体运动时身体的振动频率范围在0~20 Hz之间[11],初始化时采用50 Hz的高速采样速率,每秒采集50个数据,即初始化时默认系统处于跑步的运动状态。然后,根据CSVM的特征值对人体的运动状态进行判定,当系统判定为处于走路状态时,则认为当前为低速运动状态,在下一个周期内将加速度采样率设置为25 Hz;当系统判断为跑步状态时,则认为处于高速运动状态,在下一周期内将采样率设置为50 Hz。如此循环往复,不断根据人体的运动状态实时调整采样率,以达到降低系统功耗、节省系统资源的目的。

图6 步数检测流程图

6 实验测试与结果分析

6.1测试平台

实验测试平台采用STM32F103C8为CPU,传感器选用MPU-6050模块,外加HM-11蓝牙模块和LED显示屏组成。MPU6050内集成了三轴MEMS陀螺仪和三轴MEMS加速度计,加速度计可选量程为±2 gn,±4 gn,±8 gn,±16 gn[12],实验时选用量程±4 gn。MPU6050和CPU之间采用I2C的总线接口,系统工作时,由MPU6050实时采集x、y、z 3轴上的加速度数据,经过计步算法处理后得到人体运动数据,接着将数据打包后通过蓝牙模块传输给Android智能手机,Android手机上安装有上位机软件程序,上位机采用Java编写显示界面,将接收到的数据进行处理整合后显示人体运动数据。系统的硬件结构和显示界面如图7所示。

图7 系统的硬件结构与显示界面

6.2实验结果分析

实验抽取多名测试者作为实验对象(记为A、B、C、…),实验时将计步器戴于手腕上,按照如下连续动作进行:静止站立—跑步—走路—静止站立,分别测试一个连续动作中跑步和走路的步数。测试时将本文的区域峰值步数检测方法、动态阀值方法和单一峰值检测方法依次烧写到CPU中,分别进行步数检测。测试结果如表1所示。

表1 测试算法比较

表中计步精确度计算公式为:

从表1测试结果可知,对于跑步运动来说,3种计步算法的精确度都比较高;而当走路的时候,动态阀值和单一峰值的计步方法精确度较低,这是因为动态阀值的方法会出现如图4中的情形,导致步数漏检,而单一峰值的方法会将一些微小的振动干扰也记入步数中,导致测试结果不准确。对比测试结果发现,利用本算法设计的腕式计步器在走路和跑步两种状态下的测量值与其真值的接近程度较高,步数检测的误差在可以接收的范围内,进一步说明了本文设计算法的可行性和准确性。

7 结论

本文设计了一套腕式计步器步数检测方法,根据三轴加速度的信号幅值SVM及其变化量CSVM来实时自动判断人体处于跑步/走路的运动状态,并分别进行步数检测。实验结果表明,该算法在腕式计步器的步数检测平均精确度在95%以上,具有准确度高、抗干扰能力强和低功耗等优点。

[1]Neil Zhao.Full-Featured Pedometer Design Realized with 3-Axis Digital Accelerometer[J].Analog Dialogue,2010,44(2):17-21.

[2]李越,黄凯,张晓濛,等.基于加速度传感器的无按键计步腕表低功耗算法[J].传感器与微系统,2015,34(3):144-147.

[3]卓丛彬,杨龙频,周林,等.基于MPU6050加速度传感器的跌倒检测与报警系统设计[J].电子器件,2015,38(4):821-825.

[4]薛洋.基于单个加速度传感器的人体运动模式识别[D].广州:华南理工大学,2011.

[5]Ermes M,Parka J,Mantyjarvi J,et al.Detection of Daily Activities and Sports with Wearable Sensors in Controlled and Uncontrolled Conditions[J].IEEE Transactions on Information Technology in Biomedicine.2008,2(1):20-26.

[6]刘鹏,卢潭城,吕愿愿,等.基于MEMS三轴加速度传感器的摔倒检测[J].传感技术学报,2014,27(4):570-574.

[7]Khalil A,Glal S.StepUp:A Step Counter Mobile Application to Promote Healthy Lifestyle[C]//IEEE International Conference on the Current Trends in Information Technology,2009:1-5.

[8]谢如花.步数检测方法及在手腕式计步器中的应用研究[D].兰州:兰州交通大学,2013.

[9]韩文正,冯迪,李鹏,等.基于加速度传感器LIS3DH的计步器设计[J].传感器与微系统,2012,31(11):97-99.

[10]朱国忠,韦彩虹,潘敏.基于三维加速度传感器的人体运动能耗检测算法的研究[J].传感技术学报,2011,24(8):1217-1222.

[11]李娜.基于人体运动状态识别的可穿戴健康监测系统研究[D].北京:北京工业大学,2013.

[12]谷丽华,崔畅,高松巍,等.基于MPU-6050的步态信号采集系统[J].沈阳工业大学学报,2015,37(2):176-182.

魏芬(1978-),女,汉族,江苏南京人,南京航空航天大学金城学院,讲师,硕士,主要从事电子信息通信、嵌入式系统方面的研究,wfen1229@126.com。

Research of Motion Step Detection Algorithm Based on Acceleration Sensor

WEI Fen*,DENG Haiqin
(Teaching Experiment Center,Nanjing University of Aeronautics and Astronautics Jincheng College,Nanjing 211156,China)

A new area peak step detection algorithm was presented to decrease the interference of wrist swing to the step detection in the human motion.It was based on the characteristics of the acceleration signal of human motion,using Gaussian filter to cut down the noise effect on acceleration signal,and applying area peak detection to determine the effective step on the basis of the data of triaxial resultant acceleration.Besides,the variation of the amplitude of the acceleration signal was used as the eigenvalue,making realization of the automatic recognition of steady-state walk and run as well as the automatic adjustment of the sampling rate on various motional state,effectively reducing power dissipation.The experimental results show that,compared with dynamic threshold algorithm and single peak algorithm,the area peak step detection algorithm has highly precision in step detection,up to more than 95%.

sensors application;step detection;signal vector magnitude;area peak detection;acceleration sensor

TP212.9

A

1005-9490(2016)05-1175-05

2015-11-15修改日期:2015-12-15

EEACC:7230;7320E10.3969/j.issn.1005-9490.2016.05.031

猜你喜欢
步数跑步峰值
“四单”联动打造适龄儿童队前教育峰值体验
做到七点跑步不伤膝
跑步穿什么
楚国的探索之旅
微信运动步数识人指南
国人运动偏爱健走
带表跑步
宽占空比峰值电流型准PWM/PFM混合控制
基于峰值反馈的电流型PFM控制方法
跑步为何让人如此痴迷?跑了就懂!