Android 平台下肌疲劳分析系统设计

2021-04-23 05:50璐,辛
软件导刊 2021年4期
关键词:肌电频域时域

汤 璐,辛 霖

(上海理工大学医疗器械与食品学院,上海 200093)

0 引言

肌肉疲劳是指人体肌肉经过长时间或剧烈运动后产生的酸痛、乏力等不适状态,可使人体肌肉最大自主收缩能力下降[1-2]。疲劳过度会导致肌肉损伤,肌疲劳程度的检测可及时避免肌肉受损。目前,肌疲劳检测已广泛应用于生物力学、临床医学、生理学领域[3-5],用于分析运动过程中肌肉疲劳程度以及诊断神经肌肉疾病。

评估肌肉疲劳的方法主要包括主观体力感等级评定量表、肌氧检测技术[6]、超声图像检测[7]、超声衰减法[8]、肌电信号检测[9]等。肌电信号检测是对运动过程中的表面肌电信号(surface Electromyography,sEMG)进行评估,具有安全、无创、获取方便、即时的优点[9]。因此,本文选取肌电信号检测法评估肌疲劳程度。

目前,基于sEMG 信号的肌疲劳分析大多集中在线下的数据处理与分析,如郭旻[10]在Windows 端通过计算sEMG 信号的积分肌电值和中值频率判断肌肉疲劳状态;糜超等[11]利用sEMG 信号的时域特征值,通过机器学习分类识别肌疲劳与非肌疲劳状态。为改善肌疲劳分析系统穿戴不便的缺点,Heaffey 等[12]设计了一款基于肌肉纤维传导速度评估局部肌疲劳的低功耗可穿戴设备;Chen 等[13]设计了一款基于sEMG 信号频域参数评估肌疲劳的柔性可穿戴设备。该类设备大多应用于医院,价格较高。尽管基于sEMG 信号的肌疲劳分析研究已取得一定进展,但目前实现局部肌肉疲劳实时检测与分析的研究成果较少,且未在日常体育健身和康复领域得到充分使用。

随着5G 网络的发展以及智能手机的高频使用,本文开发了一款基于Android 平台的肌疲劳检测与分析系统。该系统采用32 位STM32 微控制器,实现两通道局部肌肉疲劳检测与分析,同时增加了非线性特征值作为肌疲劳状态分析参数,具有实时检测、携带方便、成本低等特点,在体育运动和日常健身方面具有一定应用前景。

1 系统总体设计

肌疲劳分析系统包括硬件端表面肌电采集系统和软件端肌疲劳分析软件。表面肌电采集系统对采集的信号进行一系列预处理,通过蓝牙模块发送给肌疲劳分析软件进行肌疲劳检测与分析。硬件端主要实现表面肌电信号采集、预处理及传输的功能,软件端主要实现sEMG 信号实时显示、肌疲劳检测与分析及相关数据存储的功能。

2 肌电采集系统

表面肌电采集系统的设计如图1 所示,具体包括表面肌电电极、信号调理电路、主控电路、蓝牙模块。其中,信号调理电路由前置放大电路、右腿驱动电路、信号滤波电路、后级放大电路和反相加法器组成[14]。本系统采取无创无痛、操作简单、抗干扰能力强的纽扣式贴片电极采集微弱的sEMG 信号[15]。由于sEMG 信号电压在几千μV 以下,频率为10~1 000 Hz,因此将信号调理电路幅值增益设置为2 000 倍,采用带通滤波电路,频率范围为10~1 000Hz。主控芯片选用32 位的STM32F103RCT6R,具有高性能、低功耗的特点。为实现主控电路与肌疲劳分析软件端通信,本系统采用传输稳定、收发效率高的HC-05 蓝牙模块。

表面肌电采集系统程序流程包括模数(AD)采样控制、采样增益控制、数据串口收发,如图2 所示。首先对程序进行初始化设置,包括ADC、中断、串口初始化、采样率和采样通道设置。本文采样率设置为1KHz,选取两个通道进行测试。随后表面肌电采集系统等待肌疲劳分析软件发送采集开始指令,若收到采集指令,主控程序开启定时器,定时触发ADC 对表面肌电信号进行采样并以数据帧的格式进行记录,其中数据帧由帧头、帧尾和两个通道的肌电数据组成。当记录的数据写满一个数据帧时,通过蓝牙串口将数据帧发送给肌疲劳分析软件进行处理。当肌电采集系统接收到结束采样指令时,则终止采样。

Fig.1 Design of sEMG acquisition system图1 表面肌电采集系统设计

3 肌疲劳分析软件设计

3.1 总体设计方案

肌疲劳分析软件设计采用MVC(Model View Controller)框架模式,其中M 为模型层,V 为视图层,C 为控制层。控制层和视图层的相关操作可在Activity 组件中进行,降低了系统各层之间的耦合,具体设计如图3 所示。本文模型层包括蓝牙通信的设计、登录信息数据和采集评估数据的保存以及肌疲劳评估模块的设计;视图层包括用户登录注册界面、肌电显示界面以及肌疲劳评估分析界面;控制层包括蓝牙相关设置和肌电评估的相关控制[16]。

3.2 登录注册

登录注册界面设计流程如图4 所示,包括用户登录界面和用户注册界面,其作用是管理用户,保证安全使用。登录注册界面的设计使用SharePreference 保存用户名和密码,以XML 文件格式保存数据。用户注册界面通过设计两次输入程序,确保用户正确输入密码,同时对输入的密码进行加密运算,保证用户安全使用。已注册的用户可直接在用户登录界面输入用户名和匹配的密码进行登录。

Fig.4 Login registration interface flow图4 登录注册界面流程

3.3 肌电信号实时显示

sEMG 信号实时显示界面可以保存并实时显示原始sEMG 信号。Android 端接收肌电采集端蓝牙发送来的数据,检验数据帧的帧头,提取每帧数据中的sEMG 信号并实时显示在手机界面。SurfaceView 类具有双缓冲机制和更新界面速度快的优点,利用一个同时继承SurfaceView 类和实现SurfaceHolder.Callback 接口的自定义控件可实时显示sEMG 信号[17],具体步骤为:①绘制前通过SurfaceHolder 的lockCanvas()方法锁定画布;②在Canvas 上绘制坐标系、坐标刻度及sEMG 信号;③通过调用SurfaceHolder 的unlock-CanvasAndPost()方法解锁画布并将绘制的sEMG 信号显示在最上层以实现实时肌电显示。

3.4 蓝牙通信

蓝牙通信实现表面肌电采集系统与肌疲劳分析软件的通信。肌疲劳分析软件通过蓝牙接受肌电采集端发送的数据并进行解析保存。手机蓝牙(服务端)与肌电采集系统(客户端)蓝牙模块间通信协议采用TCP 协议的Socket通信模式[18]。蓝牙通信设计如图5 所示,包括蓝牙的开启、扫描、配对、连接和通信。蓝牙设计前要对其权限进行设置,随后获取蓝牙适配器并判断设备是否支持蓝牙。开发过程中,首先对蓝牙进行开启操作,确保手机蓝牙可扫描周围蓝牙设备和被搜索。手机端通过广播的方式接受周围蓝牙扫描的结果,如果扫描到肌电采集端蓝牙设备,关闭蓝牙扫描并进行配对。配对的蓝牙需建立线程进行通信,服务端设计了一个继承Thread 类的AcceptThread 子类,用作连接等待的线程,通过蓝牙适配器的listenUsingRfcommWithServiceRecord()方法获取BluetoothServerSocket 的实例对象,用来监听客户端的请求信号,请求成功并连接后方可进行通信[19]。

Fig.5 Bluetooth design flow图5 蓝牙设计流程

3.5 肌疲劳分析

肌疲劳分析界面实现肌疲劳检测与分析,流程如图6所示。sEMG 信号通过5 阶的巴特沃斯带通滤波器获得20~500Hz 的信号[20]。设计帧长为64,步进为32 的窗对滤波后的信号进行分帧处理,根据式(1)和式(2)计算每帧的短时能量En和短时过零率Zn,再利用双门限法对各帧的En和Zn进行判决,提取信号的活动段[21]。按活动段计算信号的频域、时域和非线性的特征值。

其中N 为帧长,En为第n 帧的短时能量。

Fig.6 Flow of sEMG signal analysis图6 sEMG 信号分析流程

时域特征值选取积分肌电值(Integrated Electromyogram,iEMG)和均方根值(Root Mean Square,RMS),其表达如式(3)和式(4)所示,iEMG 值和RMS 值随着运动过程中肌疲劳程度的加深而变大。频域分析特征值为中位频率(Median Frequency,MF)和平均功率频率(Mean Power Frequency,MPF),其表达如式(5)和式(6)所示,MF 和MPF 两个特征值随着运动过程中肌疲劳程度的加深而逐渐减小[22]。

其中EMG(t)为t 时刻的sEMG 信号幅值。

其中,p(f)是sEMG 信号的功率谱密度函数。

非线性分析选择模糊熵计算特征值。模糊近似熵(Fuzzy Approximate Entropy,fApEn)可用来衡量一个时间序列的复杂度,熵值和复杂度呈正相关,可有效分析肌肉疲劳的状态,随着肌肉逐渐达到疲劳状态,模糊熵值逐渐减小[23]。模糊熵的表达如式(7)所示,利用长为m 的比较窗将N 点时间序列划分成N-m+1 个m 维序列,计算每个序列除自身外与所有序列的距离,并利用模糊隶属度函数计算距离的模糊隶属度,再求出除自身外的所有模糊隶属度的平均值φm,增长窗m 为m+1,求φm+1,由式(7)求取N 点的模糊熵值[24]。

时域、频域和非线性特征值结果保存在SQLite 数据库中,对数据库中的各参数值进行不同阶数拟合,可绘制肌疲劳分析结果曲线。用户可分别进入时域、频域和非线性分析界面查看相关分析结果,实现不同拟合曲线阶数下的分析结果。分析界面绘制过程使用开源的GraphView,布局文件中分析曲线控件的显示需要调用com.jjoe64.graphview.GraphView,分析组件的onCreate()函数中初始化相关控件及参数,在确认按钮点击事件中实现分析参数点和拟合曲线的绘制。

4 软件功能测试

本系统对募集的6 名受试者(性别:男,年龄:23.0±1.2岁)进行肌疲劳实验测试。受试者无肌肉疾病,近期肌肉未受过伤,未进行超负荷运动。受试者正坐在椅子上,惯用手正握哑铃,固定上臂位置,以肘关节为支点,前臂掌心向上匀速做曲前臂、曲肘向上臂弯举运动,测量最大负重。休息10min,将表面肌电电极置于肱二头肌和肱三头肌表面,调整负重为最大负重的60%左右,直至不能达到最高固定位。

受试者在进行实验测试期间,使用本文研制的设备对肱二头肌和肱三头肌同步采集sEMG 信号,分析sEMG 信号肌疲劳特征值并加以保存。以其中一名受试者为例,其运动过程中肱二头肌和肱三头肌的原始sEMG 信号如图7 所示。两块肌肉各活动段对应的时域、频域和非线性肌疲劳参数及二次拟合分析结果如图8、图9、图10 所示(彩图扫OSID 码可见)。

Fig.7 Real-time sEMG signal display图7 实时sEMG 信号显示

Fig.8 Time domain analysis图8 时域分析

其中,随着肌疲劳程度加深,时域参数拟合曲线呈现上升趋势,而频域参数和非线性参数拟合曲线呈现下降趋势;肱二头肌的模糊熵变化率为76.41%,肱三头肌的模糊熵值变化率为66.06%,肱二头肌相较于肱三头肌变化更加明显。运动结束后,肌疲劳分析软件读取保存在外置存储卡中txt 文件的sEMG 信号,绘制出整个运动过程的原始sEMG 信号,如图11 所示。

Fig.9 Frequency domain analysis图9 频域分析

Fig.10 Nonlinear analysis图10 非线性分析

Fig.11 sEMG signal display during fatigue process图11 疲劳过程sEMG 信号显示

5 结语

本文设计了一款基于Android 平台的肌疲劳分析系统,并对6 名受试者进行了肌疲劳分析实验。实验结果表明,该系统可对运动过程中的sEMG 信号进行实时显示和保存,同时可在时域、频域和非线性方面对肌疲劳进行分析。本文研制的肌疲劳分析系统弥补了目前市场上肌疲劳分析设备昂贵、不便携带的缺点,适用于体育运动和日常健身领域。然而本系统在设计过程中仍存在一定不足,未来可在实时分析肌疲劳程度这一功能方面进一步完善。

猜你喜欢
肌电频域时域
大型起重船在规则波中的频域响应分析
盆底肌电刺激联合盆底肌训练治疗自然分娩后压力性尿失禁的临床观察
基于时域信号的三电平逆变器复合故障诊断
频域稀疏毫米波人体安检成像处理和快速成像稀疏阵列设计
基于极大似然准则与滚动时域估计的自适应UKF算法
经皮神经肌电刺激治疗上肢周围神经损伤的疗效
基于改进Radon-Wigner变换的目标和拖曳式诱饵频域分离
基于时域逆滤波的宽带脉冲声生成技术
基于频域伸缩的改进DFT算法
基于时域波形特征的输电线雷击识别