上一章节我们介绍了机械臂的底层驱动相关内容,这一节开始,我们来简单介绍肌电的处理。

1.肌电的基础人体生理知识

    当我们进行运动的时候,不同肌肉之间的神经元会产生放电现象,通过置于人体皮肤的电极可以捕捉到这种运动过程中的神经元放电,这就叫做表面肌电(SEMG)采集。

    人的一条胳膊中有很多块肌肉,不同肌肉负责的运动部位可以参考这篇博客;通过采集不同肌肉对应部位的肌电(EMG)特征,可以大致还原出某个肌肉控制的肢体的运动状态,如下图(图片来源于这篇博客)红色地方的肌肉是控制肘部的,那么我们把主要电极放在那里,就可以还原我们肘部的一个大致状态(注意是大致,原因后边再说):

    现在,假如我们想通过肌电特征来获取我们各个手指头的运动状态;我们该怎么做呢?

    首先,我们查到,控制手指的肌肉分布如下(我们也可以做一个小实验,用左手握住右手小臂,然后活动手指,你会发现小臂上的各个肌肉发生了明显的运动状态,而大臂上的肌肉就不会)。所以,如果想获取我们指头的运动状态,采样的电极最好是放在我箭头指的地方(伸指肌)附近。

2. 使用放大器来进行肌电采集

    市面上有很多肌电放大器,当然,各种脑电放大器也可以用来做肌电采集。

    我这里有一款SSVEP级别的8通道EEG/EMG通用放大器【购买链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.7f602e8dtBLdgR&id=616457457749&_u=9pkdq33ae93】,我们可以使用它来进行肌电采集。

    首先,这套设备上含有10个电极插槽(一般的8通道放大器也是一样的),其中8个为有效数据通道,一个为公共极(类似于地线),一个参考极(相当于采样的“刻度表”)。

   

    公共极是所有电极的基底,简单来说,如果我们把整个肌电采集比作用尺子量一个东西的长度,那么公共极代表的就是我们所用尺子的“”零刻度“;而参考电极(BIAS)就为我们标记了尺子中”1cm“的位置(参考单位)。因为零刻度和参考单位总与我们要测量的物体无关,所以,我们要把参考和地都置于与目标肌肉运动无关的区域,如下图:

   

    当我们运动手指的时候,伸指肌进行收缩,这个时候就会产生特征性的肌肉电信号,这种信号的产生入下面这种动图:

   

    肌肉紧缩与肌肉舒张的状态下的电信号如下图所示,可以看到在肌肉紧张的状态下,肌电信号中产生了较为明显的高峰值,高频率波形。简单来讲,每一个肌肉块对应了人体某一个部位的运动特征;我们可以在肌电的采集之前研究一下哪一块肌肉对应哪一个部位的运动,那么当这一块肌肉紧张时,身体的目标部位一定会发生变化。例如,我们尝试运动小拇指,然后握住下臂,就会发现下臂的肌肉在运动。而这种运动就会产生肌电,通过对肌电的分析,就能够大致得到小拇指的紧张/舒张状态。

3. 肌电数据的简单处理

    我们首先来看一个四通道的肌肉电(EMG)数据,当处于静息态时,这四个通道的原始波形是一个幅值比较低的数值,而当我们做出一些动作导致肌肉紧张时(例如握拳),在肌肉紧张的那一个瞬间,可以发现EMG幅度突然就变得很高,这个时候我们就可以使用肌肉相对能量来描述一组肌肉的运动。

     肌肉相对能量指的是某一个很短时间段内肌肉电压特征的积分,它实际上可以被描述为肌肉运动过程中向我们采集电极“溢出”的总能量。它的处理大致分为以下四个过程:

3.1 肌电的滤波降采样以及平方计算

    首先,使用我们的设备采集的肌电信号为250Hz,为了防止基线漂移(简单来讲就是由于电阻抗等问题,导致肌电波形的中线不是0了),我们需要对肌电进行高通滤波。滤波前后的肌电数据如下图(上图为原始信号,下图为滤波后特征信号):

原始肌肉电信号

滤波均之后的肌电信号

    肌肉波形的数值有正有负,所以如果直接对每个点采集的电压相加,那结果整体应该都是趋近于0,并不能很好反应肌肉的整体输出功率,所以我们需要使用功率计算方法来还原肌肉的输出功率,而不是电压。根据公式:

    P=U^2/R

    来计算,功率跟电压的平方呈现二次方关系;所以应当将每一个点的电压进行二次方化,来取得这个点的肌肉瞬间功率。这样的话,我们就将密密麻麻的波形曲线变为了由0到正无穷的功率曲线。

3.2 肌电的时间窗平滑及积分

    我们现在计算了肌电在每一个时刻的瞬间功率,但是这个瞬间功率还是比较杂乱,如下图;在第6-8秒的时候,我们握紧了拳头,但是肌肉激活状态却并不是很平滑。为了实现采样率很高造成的数据波动误差,我们就需要用滑动时间窗:

    滑动时间窗是使用一个滑动的“窗口”,在计算某一个时刻的肌电功率时,我们会将这个时刻“窗口”内所有的肌电进行相加,并获得这个时间段内整个肌电活动的总和。然后我们将这个窗口向后滑动100ms,再用相同方法获得下一个时间点下的肌电活动总和。

    关于滑动时间窗的具体远离我们会在后面介绍。

    在滑动时间窗处理后,我们的肌电特征变得如下图所示,可以看到此时的肌电变得平滑了很多,明显可以识别到在第6-8秒我们的肌电特征发生了明显变化:

    

下节提示

    本小节就介绍到这里了,下一小节我们继续介绍肌电处理以及肌肉电与三轴加速度计数据的卡尔曼滤波融合,来实现对我们手臂运动的有效还原~

联系作者