用肌电信号识别人体行走步态周期的方法转让专利

申请号 : CN201010589304.8

文献号 : CN102133103B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨鹏周丽红陈玲玲张腾宇

申请人 : 河北工业大学

摘要 :

本发明用肌电信号识别人体行走步态周期的方法,涉及测量人体肢体运动的方法,其特征是基于分段积分算法,所用设备包括单片机、肌电信号传感器和三点式差动输入心电电极,由肌电信号传感器将心电电极采集的肌电信号记录下来并进行处理,得到正电平非平稳信号,再由单片机进行转换、移动平均滤波和采用峰-谷分段积分算法或其简化算法峰-谷线性插值分段积分算法进行计算,得到人体行走步态周期,在克服人体运动信号的信号传感器易磨损的同时,又克服了肌电信号传感器的零点漂移问题,还克服了现有步态周期识别方法复杂、设备价格高,且计算量较大的缺点。本发明方法仅需单通道信号作为信息源,且每个人有多块肌肉作为选择,提高了应用的广泛性。

权利要求 :

1.用肌电信号识别人体行走步态周期的方法,其特征在于:是基于分段积分算法的用肌电信号识别人体行走步态周期的方法,具体步骤如下:第一步,所用设备及其安装

所用设备包括单片机、肌电信号传感器和心电电极,其中所述的心电电极为三点式差动输入电极,由正输入电极、负输入电极和参考地极构成;单片机、肌电信号传感器和心电电极之间用导线连接;心电电极贴于人体腿部的肌肉表面,以其正输入电极和负输入电极所在直线顺着人体腿部的肌肉纤维的方向放置贴在肌腹处,参考地极则贴在与正输入电极和负输入电极的距离均等处,正输入电极、负输入电极和参考地极中任意两个电极的距离均相等,肌电信号传感器安置在心电电极上,通过导电扣将心电电极的三个电极同肌电信号传感器连接在一起,又通过导线将肌电信号传感器与单片机相连接,并将单片机贴附在假肢或助行器上;

第二步,信号的采集与处理

在第一步的基础上,由肌电信号传感器将心电电极的正输入电极、负输入电极和参考地极所采集的肌电信号记录下来并进行低噪声前置放大、高通滤波、50Hz工频滤波、可变增益放大、低通滤波、和有效值电路处理,最终得到正电平非平稳信号;

第三步,识别步态周期的算法计算

由第二步得到的正电平非平稳信号通过上述单片机的I/O口进行A/D转换、移动平均滤波和采用分段积分算法进行计算,最终得到人体行走步态周期;

通过单片机识别步态周期的主程序流程是:

开始→I/O口初始化→算法处理参数初始化→定时器初始化→是否结束?:是→结束;

否→进入低功耗、使能总中断→返回是否结束?

通过单片机识别步态周期的中断程序流程是:

进入中断→保护现场→采样、滤波→计算信号幅值变化率k1→根据k1和k2,波峰/波谷?→波谷,则记录该时刻tt及刻时刻信号幅值vt;波峰,则记录该时刻tp及刻时刻信号幅值vp;都不是→趋势计数n加1→n是否等于趋势周期T*?:否→则转至记录本次变化率k2=k1和记录本次采样周期信号幅值;是→计算趋势幅值变化率K1→根据k1和k2,波峰/波谷?:①波谷→则记录tk=tt,v1=vt;②波峰→则计算tk时刻特征值S(tk)→S(tk)>阈值?:否→转至记录本次趋势幅值变化率K2=K1;是→步态周期Tk=tk-tk-1和步态周期数k=k+1→记录本次趋势幅值变化率K2=K1;③都不是→记录本次趋势幅值变化率K2=K1→记录本次变化率k2=k1和记录本次采样周期信号幅值→中断返回;

信号的计算方法采用峰-谷分段积分算法或采用峰-谷线性插值分段积分算法,具体算法如下:采用峰-谷分段积分算法,是以所得波谷t1特征值为以波谷t1幅值为基准,信号从波谷t1到波峰t2幅值的积分值S1,所得波峰t2特征值为以波谷t3为基准,信号从波峰t2到波谷t3幅值的积分值S2,为负值,具体过程是:包括波谷位置的正相特征值S1,即记录信号上升过程和波峰位置的负相特征值S2,即记录信号下降过程两部分;所述S1是以波谷t1时刻的信号幅值f(t1)为基准,从t1到t2时刻信号的积分值,其计算公式如下:如果f(tk+1)>f(tk)且t=tk (1)

所述tk是指每一个波峰波谷的时刻,以采样周期为单位,波峰波谷是相邻的,即如果t1是波谷,则t2是波峰,t3是波谷,则t4是波峰,以此类推;所述S2是以波谷t3时刻的信号幅值f(t3)为基准,从t2到t3时刻信号的积分值,其计算公式如下:如果f(tk+1)<f(tk)且t=tk (2)

所述t≠tk的非波峰波谷时刻的特征值S(t)=0,保证所有波谷位置的特征值均大于

0,而波峰位置的特征值均小于0。

采用峰-谷线性插值分段积分算法,是以所得波谷t1特征值为以波谷t1幅值为基准,在波谷t1与波峰t2之间线性插值,波谷t1到波峰t2插值后幅值的积分值S3,所得波峰t2特征值为以波谷t3幅值为基准,在波峰t2与波谷t3之间线性插值,波峰t2到波谷t3插值后幅值的积分值S4,为负值,具体过程是:包括波谷位置的正相特征值S3,即记录信号上升变化和波峰位置的负相特征值S4,即记录信号下降变化两部分;所述S3是以波谷t1时刻的信号幅值f(t1)为基准,在t1到t2时刻之间线性插值,从t1到t2时刻的插值信号的积分值,所述S4是以波谷t3时刻的信号幅值f(t3)为基准,在t3到t4时刻之间线性插值,从t3到t4时刻的插值信号的积分值,其计算公式如下:如果t=tk (3)

所述t≠tk的非波峰波谷时刻的特征值S’(t)=0,这样既可保证所有波谷位置的特征值均大于0,而波峰位置的特征值均小于0。

说明书 :

用肌电信号识别人体行走步态周期的方法

技术领域

[0001] 本发明的技术方案涉及测量人体肢体运动的方法,具体地说是用肌电信号识别人体行走步态周期的方法。

背景技术

[0002] 经过文献检索发现,目前国内外对于步态周期的识别主要采用视频检测技术。CN101477618视频中行人步态周期自动提取方法,公开了通过一种利用频率域分析的理论,对视频中行人目标的步态周期特征进行自动提取的方法,但是在假肢、助行器和康复训练评价等领域中通过这些方法获得步态周期信息使得设备的价格太高,并且计算量较大。何乐生等人于2006年在《数据采集与处理》杂志上发表的论文《一种基于肌电信号的动作起始时刻识别方法》,文中介绍到通过自组织人工神经网络来对动作起始时刻进行识别,该方法较为复杂,并且存在对非特定动作的误判断问题。
[0003] 现有技术对人体行走步态周期进行分析研究,是通过人体运动信号作为信息源。但是,由于人体运动信号的信号传感器存在易磨损的问题,长时间使用会影响识别效果。

发明内容

[0004] 本发明所要解决的技术问题是:提供用肌电信号识别人体行走步态周期的方法,是基于分段积分算法的肌电信号识别人体行走步态周期的方法,采用以波谷幅值为基准的信号幅值进行分析,因此本发明方法在克服了现有技术中人体运动信号的信号传感器存在易磨损的同时,又克服了肌电信号传感器的零点漂移问题,仅需单通道信号作为信息源,且每个人有多块肌肉作为选择,提高了应用的广泛性,还克服了现有步态周期识别方法复杂和设备价格太高,并且计算量较大的缺点。
[0005] 本发明解决该技术问题所采用的技术方案是:用肌电信号识别人体行走步态周期的方法,是基于分段积分算法的用肌电信号识别人体行走步态周期的方法,具体步骤如下:
[0006] 第一步,所用设备及其安装
[0007] 所用设备包括单片机、肌电信号传感器和心电电极,其中所述的心电电极为三点式差动输入电极,由正输入电极、负输入电极和参考地极构成;单片机、肌电信号传感器和心电电极之间用导线连接;心电电极贴于人体腿部的肌肉表面,以其正输入电极和负输入电极所在直线顺着人体腿部的肌肉纤维的方向放置贴在肌腹处,参考地极则贴在与正输入电极和负输入电极的距离均等处,正输入电极、负输入电极和参考地极中任意两个电极的距离均相等,肌电信号传感器安置在心电电极上,通过导电扣将心电电极的三个电极同肌电信号传感器连接在一起,又通过导线将肌电信号传感器与单片机相连接,并将单片机贴附在假肢或助行器上;
[0008] 第二步,信号的采集与处理
[0009] 在第一步的基础上,由肌电信号传感器将心电电极的正输入电极、负输入电极和参考地极所采集的肌电信号记录下来并进行低噪声前置放大、高通滤波、50Hz工频滤波、可变增益放大、低通滤波、和有效值电路处理,最终得到正电平非平稳信号;
[0010] 第三步,识别步态周期的算法计算
[0011] 由第二步得到的正电平非平稳信号通过上述单片机的I/O口进行A/D转换、移动平均滤波和采用分段积分算法进行计算,最终得到人体行走步态周期;
[0012] 通过单片机识别步态周期的主程序流程是:
[0013] 开始→I/O口初始化→算法处理参数初始化→定时器初始化→是否结束?:是→结束;否→进入低功耗、使能总中断→返回是否结束?
[0014] 通过单片机识别步态周期的中断程序流程是:
[0015] 进入中断→保护现场→采样、滤波→计算信号幅值变化率k1→根据k1和k2,波峰/波谷?→波谷,则记录该时刻tt及刻时刻信号幅值vt;波峰,则记录该时刻tp及刻时刻信号幅值vp;都不是→趋势计数n加1→n是否等于趋势周期T*?:否→则转至记录本次变化率k2=k1和记录本次采样周期信号幅值;是→计算趋势幅值变化率K1→根据k1和k2,波峰/波谷?:①波谷→则记录tk=tt,v1=vt;②波峰→则计算tk时刻特征值S(tk)→S(tk)>阈值?:否→转至记录本次趋势幅值变化率K2=K1;是→步态周期Tk=tk-tk-1和步态周期数k=k+1→记录本次趋势幅值变化率K2=K1;③都不是→记录本次趋势幅值变化率K2=K1→记录本次变化率k2=k1和记录本次采样周期信号幅值→中断返回;
[0016] 信号的算法计算方法如下:
[0017] 采用分段积分算法,包括波谷位置的正相特征值S1,即记录信号上升过程和波峰位置的负相特征值S2,即记录信号下降过程两部分;所述S1是以波谷t1时刻的信号幅值f(t1)为基准,从t1到t2时刻信号的积分值,其计算公式如下:
[0018] 如 果 f(tk+1) > f(tk) 且 t = tk(1)
[0019] 所述tk是指每一个波峰波谷的时刻,以采样周期为单位,波峰波谷是相邻的,即如果t1是波谷,则t2是波峰,t3是波谷,则t4是波峰,以此类推;所述S2是以波谷t3时刻的信号幅值f(t3)为基准,从t2到t3时刻信号的积分值,其计算公式如下:
[0020] 如果f(tk+1)<f(tk)且t=tk(2)
[0021] 所述t≠tk的非波峰波谷时刻的特征值S(t)=0,保证所有波谷位置的特征值均大于0,而波峰位置的特征值均小于0。
[0022] 上述采用分段积分算法,在实施时是采用峰-谷分段积分算法或采用峰-谷线性插值分段积分算法,具体算法如下:
[0023] 采用峰-谷分段积分算法,是以所得波谷t1特征值为以波谷t1幅值为基准,信号从波谷t1到波峰t2幅值的积分值S1,所得波峰t2特征值为以波谷t3为基准,信号从波峰t2到波谷t3幅值的积分值S2,为负值,具体过程是:
[0024] 包括波谷位置的正相特征值S1,即记录信号上升过程和波峰位置的负相特征值S2,即记录信号下降过程两部分;所述S1是以波谷t1时刻的信号幅值f(t1)为基准,从t1到t2时刻信号的积分值,其计算公式如下:
[0025] 如果f(tk+1)>f(tk)且t=tk (1)
[0026] 所述tk是指每一个波峰波谷的时刻,以采样周期为单位,波峰波谷是相邻的,即如果t1是波谷,则t2是波峰,t3是波谷,则t4是波峰,以此类推;所述S2是以波谷t3时刻的信号幅值f(t3)为基准,从t2到t3时刻信号的积分值,其计算公式如下:
[0027] 如 果f(tk+1)< f(tk) 且t =tk(2)
[0028] 所述t≠tk的非波峰波谷时刻的特征值S(t)=0,保证所有波谷位置的特征值均大于0,而波峰位置的特征值均小于0;
[0029] 采用峰-谷线性插值分段积分算法,是以所得波谷t1特征值为以波谷t1幅值为基准,在波谷t1与波峰t2之间线性插值,波谷t1到波峰t2插值后幅值的积分值S3,所得波峰t2特征值为以波谷t3幅值为基准,在波峰t2与波谷t3之间线性插值,波峰t2到波谷t3插值后幅值的积分值S4,为负值,具体过程是:
[0030] 包括波谷位置的正相特征值S3,即记录信号上升变化和波峰位置的负相特征值S4,即记录信号下降变化两部分;所述S3是以波谷t1时刻的信号幅值f(t1)为基准,在t1到t2时刻之间线性插值,从t1到t2时刻的插值信号的积分值,所述S4是以波谷t3时刻的信号幅值f(t3)为基准,在t3到t4时刻之间线性插值,从t3到t4时刻的插值信号的积分值,其计算公式如下:
[0031] 如果t=tk (3)
[0032] 所述t≠tk的非波峰波谷时刻的特征值S’(t)=0,这样既可保证所有波谷位置的特征值均大于0,而波峰位置的特征值均小于0。
[0033] 上述峰-谷分段积分算法的英文是Peak-valley piecewise integrator,简称PVPI;峰-谷线性插值分段积分算法的英文是Peak-valley linear interpolation piecewise integrator,简称PVLI&PI。
[0034] 上述用肌电信号识别人体行走步态周期的方法,其中所用单片机的型号是MSP430系列型号为F2274,肌电信号传感器的型号是MyoScan-Pro,心电电极是附有不干涸导电凝胶的一次性使用的三点式差动输入心电电极,这些设备均可以商购获得。
[0035] 本发明的有益效果是:
[0036] (1)本发明用肌电信号识别人体行走步态周期的方法的原理是:
[0037] 肌电信号是中枢神经系统支配肌肉活动时伴随的电变化。肌电信号处理是一种在体表无创检测肌肉活动的重要方法。研究表明,人体行走步速与肌肉活动存在必然的联系,随着人体行走步速的不同,肌电信号幅值有明显变化。由于人体行走步态周期与人体行走步速存在反比关系,所以人体行走步态周期与下肢肌肉动作也存在必然联系。用肌电信号作为信息源对人体行走步态周期进行分析研究,不会存在信号传感器易磨损的问题,并且其直接反映了人的活动意识,比人体运动信号更加准确地表达人体行走步态信息。
[0038] (2)本发明用肌电信号识别人体行走步态周期的方法的显著进步是:
[0039] 1)本发明方法通过被测一侧的足跟着地前肌肉动作起始时刻对人体行走步态周期进行划分,提出了识别动作起始时刻的峰-谷分段积分算法和峰-谷线性插值分段积分算法。根据趋势判断提取信号的波峰和波谷时刻,与阈值法相结合提取步态周期划分点,得到人体行走步态周期,该算法避免了肌电信号传感器的零点漂移现象的同时,提高了步态周期的识别率,仅需要单通道信号作为信息源,且不同人有多块肌肉可供选择,增加了该方法使用的广泛性。
[0040] 2)本发明方法能够更加简便的将人体行走步态周期识别出来,并且所采用的信号源为肌电信号,它能够更加直接地表达人体运动意图。主要通过单通道的肌电信号作为信号源,通过识别肌肉动作的起始时刻来划分人体行走步态周期的,而本发明中所设计的算法能够更加可靠、精确的将肌肉动作起始时刻识别出来。
[0041] 3)肌电信号传感器安置在心电电极上,通过导电扣将心电电极的三个电极同肌电信号传感器连接在一起,又通过导线将肌电信号传感器与单片机相连接,并将单片机贴附在假肢或助行器上。这样肌电信号传感器被牢固地附在人体肌肉上,保证了信号采集的稳定性,所有设备的安装简单,牢靠和便携,既克服了现有技术中人体运动信号的信号传感器存在易磨损的问题,又克服了现有步态周期识别方法复杂和设备价格太高,并且使用不方便的缺点。
[0042] 4)本发明方法能够应用于假肢、助行器和康复训练评价等领域。

附图说明

[0043] 下面结合附图和实施例对本发明进一步说明。
[0044] 图1为本发明方法的肌电信号趋势判断示意图。
[0045] 图2为本发明方法的峰-谷分段积分算法原理示意图。
[0046] 图3为本发明方法的峰-谷线性插值分段积分算法原理示意图。
[0047] 图4为本发明方法的峰-谷分段积分算法识别肌肉动作起始时刻示意图。
[0048] 图5为本发明方法的峰-谷线性插值分段积分算法识别肌肉动作起始时刻示意图。
[0049] 图6为本发明方法的峰-谷分段积分算法识别人体行走步态周期示意图。
[0050] 图7为本发明方法的峰-谷线性插值分段积分算法识别人体行走步态周期示意图。
[0051] 图8为本发明方法通过单片机识别步态周期的主程序流程框图。
[0052] 图9为本发明方法通过单片机识别步态周期的中断程序流程框图。
[0053] 图10为本发明方法所用设备连接和流程示意图。
[0054] 图中,1.心电电极的正输入电极,2.心电电极的负输入电极,3.心电电极的参考地极。

具体实施方式

[0055] 图10表明本发明所用设备包括单片机、肌电信号传感器和心电电极。其中所用单片机是MSP430F2274单片机,肌电信号传感器是Thought Technology公司的MyoScan-Pro肌电信号传感器,心电电极是附有不干涸导电凝胶的一次性使用的三点式差动输入心电电极,该心电电极被贴于人体腿部的肌肉表面,以正输入电极1和负输入电2极所在直线顺着人体腿部的肌肉纤维的方向放置贴在肌腹处,参考地极则3贴在与正输入电极和负输入电极的距离均等处,正输入电极1、负输入电极2和参考地极3中任意两个电极的距离均相等;由上述心电电极采集的肌电信号被传递到MyoScan-Pro肌电信号传感器,MyoScan-Pro肌电信号传感器对采集的肌电信号进行低噪声前置放大、高通滤波、50Hz工频滤波、可变增益放大、低通滤波和有效值电路处理,最终得到正电平非平稳信号;正电平非平稳信号通过MSP430F2274单片机的I/O口进行A/D转换、移动平均滤波和峰-谷分段积分算法算法(PVPI算法)或峰-谷线性插值分段积分算法(PVLI&PI)进行计算,最终得到人体行走步态周期。
[0056] 图1表明本发明方法的算法首先通过趋势判断的方式将所有肌肉动作的起始时刻识别出来,横坐标为时间轴,单位为秒,纵坐标为信号的幅值,单位为mv,所述趋势判断时* *刻包括q1、q2、q3、q4、q5、q6,趋势变化率计算公式为KN=(f(t)-f(t-T))/T,所述KN为第N*
个趋势判断点的趋势变化率,f(t)序列为肌电离散数字信号经过滤波后的结果,T 为趋势判断周期,识别原则为:
[0057] ①如果a<=KN<=b,则KN=KN-1;
[0058] ②如果KN>0,且KN-1<0,则趋势开始上升;
[0059] ③如果KN<0,且KN-1>0,则趋势开始下降;
[0060] 所述a为趋势变化率下限,b为趋势变化率上限;根据所述肌电信号的非平稳特*性,在识别目标波谷t1时(q2时刻前)采用周期较小的采样周期T =T’,当识别出目标波*
谷t1(肌肉动作起始时刻tup)后(q2到q5时刻),将采样周期变为T =T”(T”>T’)识别*
目标波峰t2,当识别出波峰t2后(q5之后),再将采样周期还原为T =T’识别目标波谷t3,如此循环识别;所述波峰与波谷根据信号的变化kn=f(t)-f(t-T)来判断,T为肌电信号采样周期,判断原则为:
[0061] ①如果kn>=0,且kn-1<0,则该时刻为信号波谷;
[0062] ②如果kn<=0,且kn-1>0,则该时刻为信号波峰;
[0063] 所述t1、t3、t5时刻为滤波后信号f(t)波谷,t2、t4时刻为滤波后信号f(t)波峰;趋势判断到q2点时,信号趋势开始上升,则之前的t1为目标波谷(肌肉动作起始时刻),趋势判断到q5点时,信号趋势开始下降,则之前的t2为目标波峰,依次循环判断;趋势判断在q3到q4时刻为上升的,则波峰t4、波谷t5时刻均忽略不考虑,视为干扰特征点。
[0064] 图2表明本发明方法中的峰-谷分段积分算法,包括波谷位置的正相特征值S1,即记录信号上升过程和波峰位置的负相特征值S2,即记录信号下降过程两部分,横坐标为时间,单位为秒,左边的主纵坐标为肌电信号的幅值f(t),单位为mv,右边的次纵坐标为特征值的幅值S(t);所述S1是以波谷t1时刻的信号幅值f(t1)为基准,从t1到t2时刻信号的积分值,即图中S1部分的面积值,所述S2是以波谷t3时刻的信号幅值f(t3)为基准,从t2到t3时刻信号的积分值,即图中S2部分面积值的负值。
[0065] 图3表明本发明方法中的峰-谷线性插值分段积分算法,它是峰-谷分段积分算法的简化算法,包括波谷位置的正相特征值S3,即记录信号上升变化和波峰位置的负相特征值S4,即记录信号下降变化两部分,横坐标为时间,单位为秒,左边的主纵坐标为肌电信号的幅值f(t),单位为mv,右边的次纵坐标为特征值的幅值S’(t);所述S3是以波谷t1时刻的信号幅值f(t1)为基准,在t1到t2时刻之间线性插值,从t1到t2时刻的插值信号的积分值,即图中点划线所围成的S3三角形面积值,如此将时间转化为采样点数,利于单片机处理,所述S4是以波谷t3时刻的信号幅值f(t3)为基准,在t3到t4时刻之间线性插值,从t3到t4时刻的插值信号的积分值,即图中点划线所围成的S4三角形面积值。
[0066] 图4表明本发明方法中的峰-谷分段积分算法识别肌肉动作起始时刻仅包括正相特征值S1,即记录信号上升过程和特征值为0两个部分,横坐标为时间,单位为秒,左边的主纵坐标为肌电信号的幅值f(t),单位为mv,右边的次纵坐标为特征值的幅值S”(t);所述S1是以波谷t1时刻的信号幅值f(t1)为基准,从t1到t2时刻信号的积分值,即图中S1部分的面积值,
[0067] 图5表明本发明方法中的峰-谷线性插值分段积分算法识别肌肉动作起始时刻仅包括正相特征值S3,即记录信号上升过程和特征值为0两个部分,横坐标为时间,单位为秒,左边的主纵坐标为肌电信号的幅值f(t),单位为mv,右边的次纵坐标为特征值的幅值S’”(t);所述S3是以波谷t1时刻的信号幅值f(t1)为基准,在t1到t2时刻之间线性插值,从t1到t2时刻的插值信号的积分值,即图中点划线所围成的S3三角形面积值,如此将时间转化为采样点数,利于单片机处理。
[0068] 图6表明本发明方法的峰-谷分段积分算法在识别肌肉动作起始时刻,对其特征值选取合适阈值,将每个周期内特征值较大的肌肉动作起始时刻识别出来;所述步态周期划分点tup为特征值较大的波谷时刻t1、t4、t5、t6,则相邻两个步态周期划分点之间的时间差即为所述步态周期,令tupk=t4,tupk+1=t5,则步态周期Tcyclek=tupk+1-tupk;所述波峰t7为支撑期到摆动期过度过程中出现的肌肉小幅度动作造成的,其幅值较小,通过选取合适的阈值可以将其忽略;所述干扰特征点波谷时刻t8与波峰时刻t9是由于人体行走过程中肌肉不可预测的动作造成的,由于波峰t9幅值较小,且波谷t8与波峰t9之间的时间较短,所以t8时刻特征值较小,通过选取合适的阈值可以将此干扰忽略。
[0069] 图7表明本发明方法的峰-谷线性插值分段积分算法在识别肌肉动作起始时刻,对其特征值选取合适阈值,将每个周期内特征值较大的肌肉动作起始时刻识别出来;所述步态周期划分点tup为特征值较大的波谷时刻t1、t4、t5、t6,则相邻两个步态周期划分点之间的时间差即为所述步态周期,令tupk=t4,tupk+1=t5,则步态周期Tcyclek=tupk+1-tupk;所述波峰t7为支撑期到摆动期过度过程中出现的肌肉小幅度动作造成的,其幅值较小,通过选取合适的阈值可以将其忽略;所述干扰特征点波谷时刻t8与波峰时刻t9是由于人体行走过程中肌肉不可预测的动作造成的,由于波峰t9幅值较小,且波谷t8与波峰t9之间的时间较短,所以t8时刻特征值较小,通过选取合适的阈值可以将此干扰忽略。
[0070] 参比图6和7可见,本发明方法的峰-谷分段积分算法和峰-谷线性插值分段积分算法,这两种识别肌肉动作起始时刻的方法,其结果相同,所不同的是所述波谷时刻特征值大小;峰-谷分段积分算法识别的t6、t8时刻特征值比峰-谷线性插值分段积分算法识别的结果小一些,但是阈值选取的范围变化不大,因此不影响识别结果;所述特征值的阈值是通过大量数据统计分析的结果,阈值的选择不具备唯一性,而是在一个范围内都可取,使得识别结果的可靠性有所提高。
[0071] 上述分段积分算法中,所述步态周期划分点通过对特征值选取合适阈值得到。
[0072] 图8表明本发明方法通过单片机识别步态周期的主程序流程是:
[0073] 开始→I/O口初始化→算法处理参数初始化→定时器初始化→是否结束?:是→结束;否→进入低功耗、使能总中断→返回是否结束?
[0074] 所述I/O口的初始化包括设定I/O口的输入模式初始化、AD转换使能初始化;所述算法处理参数初始化包括峰-谷分段积分算法算法或峰-谷线性插值分段积分算法在处理信号时所设计到的滤波周期大小、信号幅值变化率阈值、信号趋势判断周期选取,趋势变化率阈值选取;所述定时器初始化是用来定时进行采样的,从而可以保证采样周期的一致性;所述进入低功耗、使能总中断是一个死循环程序,用于等待定时中断发生,未进入中断前处于低功耗的状态。
[0075] 图9表明本发明方法通过单片机识别步态周期的中断程序流程是:
[0076] 进入中断→保护现场→采样、滤波→计算信号幅值变化率k1→根据k1和k2,波峰/波谷?→波谷,则记录该时刻tt及刻时刻信号幅值vt;波峰,则记录该时刻tp及刻时刻信号*幅值vp;都不是→趋势计数n加1→n是否等于趋势周期T ?:否→则转至记录本次变化率k2=k1和记录本次采样周期信号幅值;是→计算趋势幅值变化率K1→根据k1和k2,波峰/波谷?:①波谷→则记录tk=tt,v1=vt;②波峰→则计算tk时刻特征值S(tk)→S(tk)>阈值?:否→转至记录本次趋势幅值变化率K2=K1;是→步态周期Tk=tk-tk-1和步态周期数k=k+1→记录本次趋势幅值变化率K2=K1;③都不是→记录本次趋势幅值变化率K2=K1→记录本次变化率k2=k1和记录本次采样周期信号幅值→中断返回;
[0077] 所述保护现场是对中断前程序中的寄存器或变量进行存储,以免中断结束返回后出现变更;所述采样、滤波是指通过I/O口对信号进行采集,并进行A/D转换,将模拟量转换为数字量以供微处理器处理,微处理器对转换后的数字信号进行移动平均滤波;所述计算信号幅值变化率k1是根据公式kn=f(t)-f(t-T)计算得来的,并如前面所述方法根据k1、上一个采样值的幅值变化率k2判断该时刻是波峰、波谷或非波峰波谷时刻,当判断到该时刻为波峰或波谷时刻,如果是波谷,则将该时刻信号幅值vt及该时刻时间计数值tt记录下来,如果是波峰,则将该时刻信号幅值vp及该时刻时间计数值tp记录下来,如果不是波峰或者波谷时刻则直接执行下一步;以上计算过程为信号幅值变化判断。所述趋势计数n加1*是用来对采样点数进行累加计算,从而可以保证相隔趋势判断周期T 处进行趋势判断;所*
述趋势计数n达到T 时,即可以进行趋势判断,所述计算趋势幅值变化率K1根据公式KN=* *
(f(t)-f(t-T))/T 计算得出,用来记录本次趋势判断的趋势幅值变化率,并如前面所述方法根据K1及上一个趋势周期幅值变化率K2判断该时刻是趋势波峰、波谷或非波峰波谷时刻,如果是波谷时刻,则将该时刻时间计数值tt赋值给波谷寄存值tk,记录该时刻信号幅值v1=vt,如果是波峰时刻,则根据前面所述的峰-谷分段积分算法算法或峰-谷线性插值分段积分算法计算波谷时刻tk的特征值S(tk)并与阈值相比,如果大于阈值则通过相邻两次波谷寄存值之差计算步态周期,即步态周期Tk=tk-tk-1,并将步态周期计数值k加1,如果不是趋势波峰或者波谷则直接进行下一步;所述记录本次趋势幅值变化率K2=K1是为了下一个趋势判断做准备;以上为信号趋势判断流程。所述记录本次变化率k2=k1是为判断下一个采样值是信号的波峰还是波谷做准备,所述记录本次采样周期信号幅值是为了下一个采样周期计算信号幅值变化率做准备;最终完成以上计算过程,则中断返回。
[0078] 实施例1
[0079] 第一步,所用设备及其安装
[0080] 按图10所示,将附有不干涸导电凝胶的一次性使用的三点式差动输入心电电极贴于人体腿部的肌肉表面,以正输入电极1和负输入电2极所在直线顺着人体腿部的肌肉纤维的方向放置贴在肌腹处,参考地极则3贴在与正输入电极和负输入电极的距离均等处,正输入电极1、负输入电极2和参考地极3中任意两个电极的距离均相等;将Thought Technology公司的MyoScan-Pro肌电信号传感器安置在上述心电电极上,通过导电扣将上述心电电极的三个电极同MyoScan-Pro肌电信号传感器连接在一起,又通过导线将MyoScan-Pro肌电信号传感器与MSP430F2274单片机相连接,并将MSP430F2274单片机贴附在假肢或助行器上。
[0081] 第二步,信号的采集与处理
[0082] 测试开始后,由上述心电电极所采集的肌电信号传递到MyoScan-Pro肌电信号传感器,MyoScan-Pro肌电信号传感器对采集的肌电信号进行低噪声前置放大、高通滤波、50Hz工频滤波、可变增益放大、低通滤波和有效值电路处理,最终得到正电平非平稳信号;
[0083] 第三步,识别步态周期的算法计算
[0084] 由第二步得到的正电平非平稳信号通过MSP430F2274单片机的I/O口进行A/D转换、移动平均滤波和峰-谷分段积分算法算法(PVPI算法),最终得到人体行走步态周期。
[0085] 通过单片机识别步态周期的主程序流程是:
[0086] 开始→I/O口初始化→算法处理参数初始化→定时器初始化→是否结束?→是,结束;否,进入低功耗、使能总中断→是否结束?→是,结束;否,进入低功耗、使能总中断→是否结束?
[0087] 通过单片机识别步态周期的中断程序流程是:
[0088] 进入中断→保护现场→采样、滤波→计算信号幅值变化率k1→根据k1和k2,波峰/波谷?→波谷,则记录该时刻tt及刻时刻信号幅值vt;波峰,则记录该时刻tp及刻时刻信*号幅值vp;都不是→趋势计数n加1→n是否等于趋势周期T ?→否,则转至记录本次变化率k2=k1和记录本次采样周期信号幅值;是,计算趋势幅值变化率K1→根据k1和k2,波峰/波谷?→①波谷,则记录tk=tt,v1=vt;②波峰,则计算tk时刻特征值S(tk)→S(tk)>阈值→否,转至记录本次趋势幅值变化率K2=K1;是,步态周期Tk=tk-tk-1和步态周期数k=k+1③都不是→记录本次趋势幅值变化率K2=K1→记录本次变化率k2=k1和记录本次采样周期信号幅值→中断返回;
[0089] 信号的算法计算方法如下:
[0090] 采用峰-谷分段积分算法,是以所得波谷t1特征值为以波谷t1幅值为基准,信号从波谷t1到波峰t2幅值的积分值S1,所得波峰t2特征值为以波谷t3为基准,信号从波峰t2到波谷t3幅值的积分值S2,为负值,具体过程是:
[0091] 包括波谷位置的正相特征值S1,即记录信号上升过程和波峰位置的负相特征值S2,即记录信号下降过程两部分;所述S1是以波谷t1时刻的信号幅值f(t1)为基准,从t1到t2时刻信号的积分值,其计算公式如下:
[0092] 如果f(tk+1)>f(tk)且t=tk (1)
[0093] 所述tk是指每一个波峰波谷的时刻,以采样周期为单位,波峰波谷是相邻的,即如果t1是波谷,则t2是波峰,t3是波谷,则t4是波峰,以此类推;所述S2是以波谷t3时刻的信号幅值f(t3)为基准,从t2到t3时刻信号的积分值,即图2中S2部分面积值的负值,其计算公式如下:
[0094] 如 果f(tk+1)< f(tk) 且t =tk(2)
[0095] 所述t≠tk的非波峰波谷时刻的特征值S(t)=0,保证所有波谷位置的特征值均大于0,而波峰位置的特征值均小于0;
[0096] 实施例2
[0097] 除了信号的计算方法峰-谷线性插值分段积分算法(PVLI&PI)进行计算之外,其他步骤方法均同实施例1。
[0098] 采用述峰-谷线性插值分段积分算法,是以所得波谷t1特征值为以波谷t1幅值为基准,在波谷t1与波峰t2之间线性插值,波谷t1到波峰t2插值后幅值的积分值S3,所得波峰t2特征值为以波谷t3幅值为基准,在波峰t2与波谷t3之间线性插值,波峰t2到波谷t3插值后幅值的积分值S4,为负值,具体过程是:
[0099] 包括波谷位置的正相特征值S3,即记录信号上升变化和波峰位置的负相特征值S4,即记录信号下降变化两部分;所述S3是以波谷t1时刻的信号幅值f(t1)为基准,在t1到t2时刻之间线性插值,从t1到t2时刻的插值信号的积分值,即图3中S3三角形面积值,将时间转化为采样点数,利于单片机处理,所述S4是以波谷t3时刻的信号幅值f(t3)为基准,在t3到t4时刻之间线性插值,从t3到t4时刻的插值信号的积分值,即图中S4三角形面积值,将时间转化为采样点数,利于单片机处理,其计算公式如下:
[0100] 如果t=tk (3)
[0101] 所述t≠tk的非波峰波谷时刻的特征值S’(t)=0,这样既可保证所有波谷位置的特征值均大于0,而波峰位置的特征值均小于0。
[0102] 上述实施例中,所用单片机的型号是MSP430系列型号为F2274,肌电信号传感器的型号是MyoScan-Pro,心电电极是附有不干涸导电凝胶的一次性使用的三点式差动输入心电电极,这些设备均可以商购获得。