打印
[应用相关]

STM32的肌电假肢手控制

[复制链接]
楼主: goodluck09876
手机看帖
扫描二维码
随时随地手机跟帖
41
goodluck09876|  楼主 | 2019-6-28 16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
    ②支持向量机的分类方法
    运用支持向量机的分类方法对数据进行分类,一开始主要是用来解决两类分
类问题。但在实际应用过程中,两类别的分类问题并不常见,更普遍的情况是待解
决的分类问题需要使用多个分类器才能实现。所以支持向量机的分类方法更广泛
的是在多类分类的问题上的应用[f2slf29l,而不是一开始的两类分类问题。对于支持
向量机研究领域中的多类分类的问题,主要使用多对一分和一对一这两种分类方
法,下面将依次进行简单介绍。
    多对一分类方法解决多类分类问题的方式是利用一个分类作为分类器模型,
乘」余分类作为另一个分类器模型,使多类分类变成两类分类,并通过依次对比淘汰,
最终得到分类结果。多对一分类方法随着样本数的增大,训练速度会大幅地下降,
具有分类快速的显著特点。同时,由于训练样本之间存在的不均衡问题,误分、拒
分等情况在所难免。由此可见,多对一分类这种方法泛化能力较差。
    一对一分类法对多类分类问题进行解决方法不同于多对一分类法。其基本过
程是,首先直接在两个类别间构造一个分类器模型,然后再进行对比淘汰,并最终
得到分类结果。所以,一对一分类法是通过构建多个分类器模型来解决多分类问题
的,假设有N类训练样本,则会得到N(N-1)/2个分类器。一对一分类法分类在识
别的效率、分类精度方面远远高于多对一分类方法,速度也不比多对一分类法慢许
多。结合本文中使用的基于表面肌电信号手势识别属于小样本数据的情况和两种
分类方式的优缺点,同时为达到更高的识别速度和识别率,本文支持向量机模式识
别的分类方法最终选择一对一分类法。

使用特权

评论回复
42
goodluck09876|  楼主 | 2019-6-28 16:08 | 只看该作者
    表面肌电信号是人体在自主运动时,位于骨骼肌表面的采集电极记录到的由
神经肌肉活动发出的生物电信号。表面肌电信号是分析肌肉活动、神经系统等人体
活动的有效途径,也是目前最理想的多自由度人工假肢的控制信号源「30,31 ]。肢体不
同的肌群收缩会产生不同的运动模式,而在肌肉表面得到表面肌电信号是伴随肌
肉活动而产生的,因此要想获得肢体相应的运动模式信息,需在不同肌群上对表面
肌电信号进行采集[[30]。要实现手势动作的模式识别必须先对不同手势动作的前臂
肌电信号进行分类器的训练,分类器的训练的流程如图3.1所示。首先使用肌电采
集电极采集不同手势动作下的前臂表面肌电信号,并使用数据采集卡将肌电信号
转换为数字信号保存在PC机中,最后在MATLAB中对这些离线的肌电信号数据
进行处理并进行模式识别分类器的训练。下面简要介绍对各手势动作下前臂表面
肌电信号的采集、基于MATLAB的SVM的手势动作模式识别分类器训练和测试
实现。

使用特权

评论回复
43
goodluck09876|  楼主 | 2019-6-28 16:08 | 只看该作者
    在选取待识别的手势动作时,为便于使用分类器进行识别,主要需要考虑手势
动作模式的系统性以及各手势动作肌肉活动之间的差异性。相关资料显示,人手任
务主要由如图3.2所示的几个动作组成,包括张开、闭合、捏取,钩状和握瓶,这
几个动作约占日常生活的g5%以上「37],且考虑到各个手势之间存在一定的差异,
故本文研制的假肢手控制系统选择这五个动作为待识别的手势动作。

使用特权

评论回复
44
goodluck09876|  楼主 | 2019-6-28 16:10 | 只看该作者
    为实现上述的五个动作的识别,必须选择合适的肌肉和肌电电极进行肌电信
号的采集,并从采集的肌电信号中提取恰当的特征值,才能使用分类器将这五种动
作识别出来。
    表面肌电信号不仅非常微弱,而且容易受到周边环境和各种因素的干扰。所以
电极的选取和放置位置的选择,是决定能否采集得到有效的信号的关键。侵入式电
极和无创电极,是表面肌电信号采集中常用的两种电极。电极定位简单、信号准确
清晰的侵入式电极,具有较大的创伤和痛苦、不利于反复操作等缺点。而无创的贴
片电极放置于皮肤表面,难免会受到皮肤表面杂质以及其他干扰源等的影响。但无
创的贴片电极在位置放置正确,皮肤处理得当的条件下,获取到高信噪比的表面肌
电信号亦不是难事。更为重要的一点是,这种方式对于患者而言不会像侵入式电极
那样会给使用者带来创伤。因此本文选择的表面肌电信号采集电极为无创的表面
电极。
    利用表贴式的电极片引入采集表面肌电信号,这种临床中常用的肌电采集方
式,其缺点主要是采集仪器庞大,不能用于肌电假手的实时控制系统表面肌电信号
采集。另外一种国内外肌电假肢手常用的表面肌电信号采集方式是利用独立式干
电极模块(Active electrode ),其将采集电极片、信号放大、滤波屏蔽等电路等集中
在较小模块中,可直接输出经过处理过后的表面肌电信号[[38]。所以,本文选择使用
丹阳假肢厂生产的独立式的表面肌电信号采集电极完成表面肌电信号的采集,其

使用特权

评论回复
45
goodluck09876|  楼主 | 2019-6-28 16:13 | 只看该作者

使用特权

评论回复
46
goodluck09876|  楼主 | 2019-6-28 16:13 | 只看该作者
    为简化后期肌电信号的处理的难度,使用的电极采集到的肌电信号己进行过
积分处理即得到的信号为肌电信号的包络。在实验室中发现,使用该电极检测出来
的表面肌电信号包络较为干净,噪声较小,且包络信号频率较低。为更好的实现实
时性,直接使用该信号进行特征值提取。如图3.3所示为使用该电极采集得到的某
段肌电信号的包络。

使用特权

评论回复
47
goodluck09876|  楼主 | 2019-6-28 16:14 | 只看该作者

使用特权

评论回复
48
goodluck09876|  楼主 | 2019-6-28 16:14 | 只看该作者
    肌电采集电极在前臂肌肉表面上的放置位置,对后续手势动作的模式识别十
分的关键。在人手从静息状态下切换到执行动作时,主要是利用手臂的外侧伸肌对
各个手指位置进行调整。为了更好地记录前臂肌肉的活动,本文将电极片放置在肌
腹的中心位置。本文在指总伸肌、小指固有伸肌和指浅屈肌等三块肌肉上布置4枚
电极,其中指总伸肌、小指固有伸肌各布置一枚、指浅屈肌上布置两枚,如图3.4
所示。

使用特权

评论回复
49
goodluck09876|  楼主 | 2019-6-28 16:15 | 只看该作者

使用特权

评论回复
50
goodluck09876|  楼主 | 2019-6-28 16:15 | 只看该作者
    对于前臂表面肌电信号肌电信号的采集,本文使用实验室前期搭建的肌电信
号采集平台实现。
    肌电信号采集平台采集平台使用NI USB6351数据采集卡将电极采集到的表
面肌电信号转换为数字信号,并传输到PC机,同时利用Labwindows编写到上位
机肌电信号采集交互界面,将采集得到的信号进行显示和存储。NI USB6351数据
采集卡和上位机界面如图3.6所示。

使用特权

评论回复
51
goodluck09876|  楼主 | 2019-6-28 16:15 | 只看该作者

使用特权

评论回复
52
goodluck09876|  楼主 | 2019-6-28 16:16 | 只看该作者
    本文主要是采集实验者在做五个手势动作下的所选择的前臂肌肉的肌电信号
实验者每个动作的持续3}_SS,再休息3}_SS,如此循环,最终采集到20000个以上
的有效数据。本实验需选择身体健康、右利手的被试者,并在实验前告知实验的目
的和方法。
    为减小皮肤阻抗,以及环境噪声的影响,采集时必须先用酒精擦拭受试者手臂
的皮肤,确保表面肌电电极与皮肤接触良好,减小噪声。然后,在所选定的前臂肌
肉表面,将电极按上节所述方式进行固定。在完成实验过程中,被试者保持正坐姿
势,手臂被微微垫起并平放在桌面上。采集到数据后保存在文本中供后期模式识别
分类器的训练使用,如图3.7所示为实验者作闭合动作时采集到的肌电信号包络。

使用特权

评论回复
53
goodluck09876|  楼主 | 2019-6-28 16:16 | 只看该作者

使用特权

评论回复
54
goodluck09876|  楼主 | 2019-6-28 16:20 | 只看该作者

使用特权

评论回复
55
goodluck09876|  楼主 | 2019-6-28 16:21 | 只看该作者

使用特权

评论回复
56
goodluck09876|  楼主 | 2019-6-28 16:21 | 只看该作者

使用特权

评论回复
57
goodluck09876|  楼主 | 2019-6-28 16:22 | 只看该作者
    为对模式识别分类算法的泛化能力进行评估,本文使用十折交叉验证方法进
行模式识别分类器的训练。交叉验证方法基本原理是首先将离线数据分为训练集
和验证集两组,然后使用训练集对分类器进行训练,并利用验证集来测试训练得到
的模型,以此来评价分类器的性能。本文将每种手势动作肌电信号获得的1000组
特征值,每次将其中900组作为训练集,其余100组作为验证集。
    SVM分类器的训练主要使用到的语句如下所示:
  CSVMStruct=svmtrain(X, Y,' autoscale', true,' LinearFunction}} linear',' Method,'SMO');
    其中X和Y是提取离线数据特征值后得到的不同两类训练特征值向量的集
合。同时这里使用linear内核,并以SMO方式完成训练,训练程序如下所示:
      multiSVMStruct=multiSVMTrain(trainl, train_labels1,5,0.0001,0.2);
    经过训练得到了分类器的模型参数,并存储结构体multiS VM Struct中,结构
如图3.9所示。结构体内部共有十个分类器以CSVMStruct{m} {n}的形式进行保存,
其具体含义是:第m个和第n个手势动作之间的分类器的模型参数。CSVMStruct
的内部参数如图3.10所示,这些参数将用于后期模式识别时分类器的构建。

使用特权

评论回复
58
goodluck09876|  楼主 | 2019-6-28 16:22 | 只看该作者

使用特权

评论回复
59
goodluck09876|  楼主 | 2019-6-28 16:23 | 只看该作者

使用特权

评论回复
60
goodluck09876|  楼主 | 2019-6-28 16:24 | 只看该作者
    分类器的训练完成以后,还要利用验证集的数据对得到的分类器模型进行验
证。使用multiSVMClassify()完成对测试集的手势动作的模式的识别,程序如下所
不:
    class=multiSVMClassify(test, multiSVMStruct);
    multiSVMClassify其内部主要实现程序如下所示,每两类别之间的分类计算调
用Svmclassify函数完成,在一对一的分类完成以后,利用投票策略,得到票数最
多的类别作为模式识别的结果。
      for iIndex=1:nClass一1
      for jIndex=iIndex+1:nClass
        classes=svmclassify(CASVMStruct{iIndex}{jIndex}, TestFace);
        Voting(:,iIndex)=Voting(:,iIndex)+(classes==1);
        Voting(:,jIndex)=Voting(:,jIndex)+(classes==0);
          end
      end
    将得到的验证结果进行统计,获得本次训练的识别率。改变训练集和验证集的
数据样本后,重复上述训练验证过程,完成十折交叉验证,最终得到不同训练集下
各次的识别率,如图3.11所示。由图可知,每次验证的识别率均在8_5%以上,大
部分时候都超过90 070,证明所设计的分类器能较好的完成五种手势动作的模式识
别。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则