近两年,生命科学及医疗相关的研究逐渐得到了投资界的认可。脑机接口、康复机器人、手术机器人、智能假肢等相关技术蓬勃发展,创业公司也逐渐增多,未来10年整个行业必然会有较大的变革。
表面肌电信号(sEMG)因为可以反应人的运动意图,且和肌力大小相关,所以在康复机器人应用中举足轻重。利用sEMG估计肌力就要求解肌肉激活度,本文介绍了利用原始sEMG信号求解肌肉激活度的方法。
本文的Matlab源代码、sEMG原始数据和最大自主收缩时sEMG信号数据可以从这里下载【肌肉激活度Matlab代码及数据】
1.肌肉激活度求解方法
整个求解肌肉激活度的流程如图所示:
1.1数据预处理
首先对原始sEMG信号进行预处理,预处理主要包括3步:(1)50Hz陷波,去除工频干扰;(2)30Hz零相移高通滤波,去除运动伪迹;(3)全波整流,将信号取绝对值,信号的负半轴会翻转到正半轴。
1.2低通滤波器
低通滤波器采用5Hz零相移低通滤波器,低通滤波器主要是模拟肌肉的低通滤波器特性。
1.3归一化
用同样的方法(数据预处理–>低通滤波器)处理最大自主收缩(MVC)时的sEMG信号,找到最大自主收缩sEMG信号的最大值,将该最大值视为100%肌肉激活度时的信号。
将处理过的(数据预处理–>低通滤波器)正常运动时的肌电信号,除以该最大值,得到归一化后的信号e(t)。
1.4神经激活模型
利用归一化后的肌电信号求解神经激活强度u(t),方程如下:
这是一个递归模型,单次的神经激活强度u(t)和前2次的神经激活强度u(t-1)、u(t-2)有关。电极延迟时间d一般取10ms。
1.5肌肉激活模型
根据神经激活度u(t) 求解肌肉激活度a(t) 的方法有很多种,这里采用比较常用的非线性模型。
A是非线性形状系数,代表神经激活强度u(t) 和肌肉激活强度a(t) 的非线性程度。A可以取-1.5。
到这里就实现了利用原始sEMG信号求解肌肉激活度。
2.实验结果
利用上面提出的方法,计算1次屈肘运动时肱二头肌的肌肉激活度,各步骤得到的结果如图所示:
图中紫色的线是肱二头肌肌肉激活度,肌肉激活度很好地反映了肌肉的收缩状况,其类似于原始肌电信号的包络线,但是比原始肌电信号更加稳定,因此可以用来控制康复机器人等设备。
3.Matlab代码
本文使用的Matlab源代码、sEMG原始数据和最大自主收缩时sEMG信号数据可以从这里下载【肌肉激活度Matlab代码及数据】
是以为记!