信号处理算法(3):肌肉激活度(Muscle Activation)

   近两年,生命科学及医疗相关的研究逐渐得到了投资界的认可。脑机接口、康复机器人、手术机器人、智能假肢等相关技术蓬勃发展,创业公司也逐渐增多,未来10年整个行业必然会有较大的变革。
   表面肌电信号(sEMG)因为可以反应人的运动意图,且和肌力大小相关,所以在康复机器人应用中举足轻重。利用sEMG估计肌力就要求解肌肉激活度,本文介绍了利用原始sEMG信号求解肌肉激活度的方法。
   本文的Matlab源代码、sEMG原始数据和最大自主收缩时sEMG信号数据可以从这里下载【肌肉激活度Matlab代码及数据】

1.肌肉激活度求解方法

   整个求解肌肉激活度的流程如图所示:

信号处理算法(3):肌肉激活度(Muscle Activation)_第1张图片
 1.1数据预处理

   首先对原始sEMG信号进行预处理,预处理主要包括3步:(1)50Hz陷波,去除工频干扰;(2)30Hz零相移高通滤波,去除运动伪迹;(3)全波整流,将信号取绝对值,信号的负半轴会翻转到正半轴。

信号处理算法(3):肌肉激活度(Muscle Activation)_第2张图片
 1.2低通滤波器

   低通滤波器采用5Hz零相移低通滤波器,低通滤波器主要是模拟肌肉的低通滤波器特性

 1.3归一化

   用同样的方法(数据预处理–>低通滤波器)处理最大自主收缩(MVC)时的sEMG信号,找到最大自主收缩sEMG信号的最大值,将该最大值视为100%肌肉激活度时的信号。
   将处理过的(数据预处理–>低通滤波器)正常运动时的肌电信号,除以该最大值,得到归一化后的信号e(t)

 1.4神经激活模型

   利用归一化后的肌电信号求解神经激活强度u(t),方程如下:

信号处理算法(3):肌肉激活度(Muscle Activation)_第3张图片

   这是一个递归模型,单次的神经激活强度u(t)和前2次的神经激活强度u(t-1)、u(t-2)有关。电极延迟时间d一般取10ms。

 1.5肌肉激活模型

   根据神经激活度u(t) 求解肌肉激活度a(t) 的方法有很多种,这里采用比较常用的非线性模型。

信号处理算法(3):肌肉激活度(Muscle Activation)_第4张图片

   A是非线性形状系数,代表神经激活强度u(t) 和肌肉激活强度a(t) 的非线性程度。A可以取-1.5。
   到这里就实现了利用原始sEMG信号求解肌肉激活度。

2.实验结果

   利用上面提出的方法,计算1次屈肘运动肱二头肌的肌肉激活度,各步骤得到的结果如图所示:

信号处理算法(3):肌肉激活度(Muscle Activation)_第5张图片

   图中紫色的线是肱二头肌肌肉激活度,肌肉激活度很好地反映了肌肉的收缩状况,其类似于原始肌电信号的包络线,但是比原始肌电信号更加稳定,因此可以用来控制康复机器人等设备。

3.Matlab代码

   本文使用的Matlab源代码、sEMG原始数据和最大自主收缩时sEMG信号数据可以从这里下载【肌肉激活度Matlab代码及数据】
   是以为记!

你可能感兴趣的:(Algorithm)