韩兰侠,徐方超,孙 凤,张一民,贾 潇
(1.沈阳工业大学机械工程学院,辽宁 沈阳 110870;2.北京体育大学运动人体科学学院,北京 100084)
随着国民体质检测的健全和深入,人们对国民体质检测的效率和实用性有了更高的要求。在第5次国民体质检测中将受试人群的年龄增加到79 岁,并为60 ~79 岁的老年人新增了2 min原地高抬腿和30 s坐站指标[1]。针对越来越多的检测指标,各种检测设备的智能化升级也成了亟需解决的问题。随着对可穿戴传感器技术的深入理解,将不断涌现出面向垂直应用领域的新型智能可穿戴设备[2]。可穿戴设备目前应用于各个领域,主要是对各种信号的收集与实时反馈。Attal F 等人[3]应用可穿戴传感器来识别人们生活中的各种动作,为传感器的动作识别领域提供的一些基础。陈航科等人[4]将传感器姿态测量与信号融合做到精准测量姿态角。Sucerquia A 等人[5]设计制造了一种新型可穿戴压敏鞋垫,从鞋垫传感器中获取压力信息,进而分析人的步态情况。Heng W Z等人[6]只使用一个加速度计,通过加速度计测到的数据来判断老年人的跌倒风险。因此,正确使用传感器是实现智能化的基础。
目前被大家熟知的计数算法主要包括零速检测法、自相关分析法、谱分析法、有限状态机法以及波峰检测法等。自相关分析法主要依据所采集数据之间的相关性和阈值设置来判断[7],此种方法容易受到与检测无关的信号的扰动。Cho Y等人[8]根据不同的运动方式设置不同的加速度阈值来实现计算步数的功能,准确率很高。朱庄生等人[9]在设定的时间内设置多个阈值,需要同时满足多条件,才会计一步。王鑫等人[10]利用电容式传感器和卡尔曼滤波实现对纸张的精准计数。以上相关算法大多应用于纸张计数和步数计数,很少涉及到关于体测指标的计数,因此要根据体测的具体情况设计检测算法。
针对以上问题,在峰值检测算法的基础上改进设计一种自适应峰值检测算法,依靠运动时腿部产生的加速度与运动状态之间的关系,分析每一个腿部动作所对应的最大加速度,设置加速度阈值以识别不同的动作,对不同的动作采取不同的峰值检测算法参数进行次数的识别。利用高斯滤波器去除伪波峰,利用膝关节抬高角度确保计次动作为标准动作,根据两项指标的时间限制设置2 min和30 s的时间提醒。通过实验验证表明,该算法能很好地实现不同运动状态下的计次功能,并且所计次数基本为标准动作。
系统结构如图1 所示。实验平台通过蓝牙适配器USB-HID与JY901 传感器模块进行连接。为提高检测的便利性,检测模块使用蓝牙连接方式进行数据传输,所采用的蓝牙传输模块为USB-HID。传感器通过串口与PC 端连接实现实验数据的记录与分析。
图1 信号采集系统结构
姿态角信号采集主要由姿态角传感器、主控芯片、蓝牙模块和电源模块组成。姿态角传感器为JY901,集成了陀螺仪、加速度计和地磁场传感器。工作电压3.3 ~5 V,最高200 Hz数据输出速率。既能高效处理数据,又能降低电池消耗。主控芯片可以持续接收传感器的数据,数据通过蓝牙传输到电脑端。姿态角信号采集模块的尺寸约为51.3 mm×36 mm×15 mm。传感器模块JY901,信号输出丰富,可输出多种信号,包括三轴加速度、三维角速度、三维角度、三维磁场等。加速度范围为±16gn,角速度范围为±2 000°/s,角度范围为±180°。该模块信号输出准确稳定,加速度信号稳定度0. 01gn,角速度信号稳定度为0.05°/s,姿态测量稳定度为0.01°。
将采集到的原始数据通过低通滤波的方式去除因噪声而产生的毛刺,增强数据的实用性和稳定性。Bondan S 等人[11]使用相同的分类算法比较原始数据和低通滤波之后的数据,结果显示:在大部分情况下,滤波后的数据用于分类的系统性能更好。常用的数据预处理方法包括滑动平均滤波器、低通滤波器和卡尔曼滤波器等[12]。选取高斯滤波方法对采集数据进行预处理。高斯滤波器[13]是一个应用范围很广,并在频率领域里效果很显著的低通滤波器,ax(t),ay(t),az(t)分别为t时刻x,y,z轴的加速度信号,记,则高斯滤波公式为
式中G(t)=e(-t2/2σ2)为零均值高斯核,其中,1/σ2=2.25。以高抬腿x轴加速度为例,高斯滤波前和滤波后的波形如图2所示。由图中可以明显地看出,滤波前后的加速度曲线变化,滤波后的曲线图滤除掉大部分干扰信号,让图像变得更光滑。
图2 高斯滤波前后加速度波形
峰值检测算法就是根据人体在做相应动作时产生的加速度的曲线变化特征,这种变化特征存在明显的波峰波谷,1个峰值则记为1 次。用传感器收集数据时,往往会产生部分噪声干扰,容易形成伪波峰和伪波谷。因此,在计次时要能准确识别伪波峰,获取真正的波峰,再进行计次统计。
通过对做高抬腿和坐站动作进行分析,加速度变化为-0.15 ~0.1gn,基于动作特征,波峰检测算法流程如图3所示。
图3 峰值检测算法流程
1)峰值检测算法一般会选取三轴合加速度,但经过合加速度与单轴加速度对比发现,x轴加速度更符合计次要求。因此,选取受试者做高抬腿和坐站动作时的x轴加速度数值。2)选取在2 s 内获得潜在峰值,利用加速度阈值-0.15 ~0.1gn进行初次判断,排除因传感器产生的噪声影响计数正确率。3)根据步骤(2)确定的潜在峰值,对其前后1 s内峰值进行比较,如果潜在峰值最大,则记为1次。
自相关分析算法是根据加速度相邻2个变化周期之间的相关系数来判断是否完成1次动作。当测试人员在做高抬腿和坐站动作时,因腿部运动产生的加速度呈规律性变化,根据其规律性变化实现计次。该算法就是利用当前计次的加速度变化范围和上一计次的加速度变化范围之间的关系,根据其关系的具体大小来判别次数。具体操作过程如下:
1)获得1次周期变化的加速度标准差
式中u为该周期内加速度序列{a1,a2,…,an}的均值。根据不同的人测试过程所展现的加速度序列的差异,经过多次试验确定标准差的阈值设置为0.2。
2)计算2次计次之间的自相关系数
式中μ(m,t)和σ(m,t)分别为加速度序列{a(k),a(k+1),…,a(k+t+1)}的均值和标准差。但即便是相同的动作,不同的人来做所得到的结果也不完全一致。因此,t是一个变化的量。将t的变化范围选定为tmin~tmax,通过将式(4)计算自相关系数ρ(m,t)。当ρ(m,t)达到最大值时,t值为加速度变化一个周期的时间
经过多次计算,分析每次获取加速度自相关系数之间的差异,多次试验后获取阈值0.5 进行计次判断。自相关算法流程如图4所示。
图4 自相关检测算法流程
3.3.1 算法原理
在常规峰值检测算法中,通常利用固定时间窗口、固定加速度阈值达到计次、计数或者计步的要求,但是当动作速度变化周期性不明显且有标准动作要求时,会导致检测的准确率下降。同时人们在做高抬腿和坐站动作时的频率是不一样的,如果只依据加速度来进行计次,会出现计次结果不准确或者将不标准的动作计入总数内的情况。为了判断动作做的标准与否,进行自适应加速度阈值和时间邻域窗口的检测后,加入角度判别,这样在实现计次功能的同时,确保所有计次动作满足标准要求。
3.3.2 阈值设置
将做高抬腿和坐站动作时采集的加速度数据对比可知,两种动作加速度峰值是有差异的(如图5 所示)。对采集到的加速度数据进行统计,如图6所示。统计结果显示:做标准高抬腿动作时,加速度峰值有98%在[0.1,0.5]gn;做标准坐站动作时,加速度峰值有99%在[0,0.1]gn。故此,加速度变化幅值可作为区分2个动作的阈值。另外,根据国家标准,对做高抬腿动作的腿抬高高度设置角度为大于等于80°,此角度阈值同样满足坐站动作的标准需求。根据人体正常做标准高抬腿动作时的频率设置时间阈值为[0.96,1.76]s,而做标准坐站时的频率设置时间阈值为[1.58,3.75]s。
图5 高抬腿与坐站加速度差异
图6 最大加速度分布
3.3.3 自适应峰值检测算法
自适应峰值检测算法根据做高抬腿和坐站动作时的加速度变化与时间频率的不同实现计次,利用角度变化确定动作标准与否。算法流程如图7所示。
图7 自适应峰值检测算法流程
1)利用滑动固定时间窗口确定加速度潜在峰值,限制加速度阈值进行初次判断。峰值小于0.1gn为坐站动作,大于等于0.1gn为高抬腿动作。2)计算潜在峰值与前一峰值的时间差,利用2 个动作的频率不同进行第二次识别。时间差在[0.96,1.76]s内为高抬腿动作;在[1.58,3.75]s内为坐站动作。高抬腿动作的前后邻域设置为1 s,坐站动作的前后邻域设置为2 s,若确定的潜在峰值在前后邻域内为最大值,则进入角度判别。3)判断此时的膝盖弯曲角度是否大于等于80°,如符合要求,则记1 次;如不符合角度阈值设置,则重新计次。4)根据首次判断的动作,设置时间要求为2 min或者30 s,知道提示时间结束,显示总次数,计次完成。
根据国家体质检测对2 min原地高抬腿和30 s坐站的动作标准设计试验过程如下:2 min 原地高抬腿的动作要求,受试者在2 min内快速的进行左右腿交替高抬腿动作,腿抬高角度约为80°(膝盖抬高的高度与受试者同侧髂棘和髌骨垂直距离的中点高度相当),具体动作分解如图8(a)所示。30 s 坐站动作要求,受试者端坐在方箱上,双臂交叉放在胸前,背部保持挺直状态,受试者快速站起呈完全直立姿势后再坐回方箱(高43 cm)上,此时记为1 次坐站,具体动作分解如图8(b)所示。
图8 高抬腿动作和坐站动作分解
为验证检测算法的准确性,每组受试者随机做8 个不标准高抬腿动作。针对以上动作标准结合搭建的系统平台选取4人进行试验,并将采集到的16组数据进行计数统计和算法分析。
根据以上采集的所有数据,分别采用3 种检测方法进行处理,处理结果如表1。图9 为高抬腿和坐站动作计次效果。
表1 高抬腿动作和坐站动作结果对比
图9 高抬腿动作和坐站动作计次效果
由图10可看出,3 种检测算法都能实现对体测指标高抬腿和坐站动作的计次要求,其中峰值检测算法准确率在91.25%左右,自相关检测算法的准确率在92.75%左右,而自适应峰值检测算法的检测正确率可达到98.25%以上。但是,从表1中可以看出,峰值检测算法和自相关检测算法对于不满足标准的动作也计入总数内。因此,以角度为基础的计次,更符合高抬腿和坐站动作需求。由表1 的统计结果可知,自适应峰值检测算法不仅能准确识别动作次数还能自动过滤掉不标准的动作,符合体测的要求。
图10 不同算法计次正确率
针对常规峰值检测算法对人体姿态和动作识别能力差的问题,设计了一种能自适应判断不同运动状态的自适应峰值检测算法,在满足腿部抬高一定角度的标准动作下实现计次。该算法在融合峰值检测算法的基础上对不同动作的加速度有良好的适应性,通过对不同运动状态参数的设置,确定潜在峰值区间、时间阈值、改变邻域窗口实现精准计数。测试结果表明,高抬腿动作计次正确率可达到99.75%,坐站动作计次正确率可达到98.25%以上。为促进体质检测技术集成化和智能化的发展提供了算法基础。