刘今越,李慧宇,贾晓辉,李佳蕊
(河北工业大学 机械工程学院,天津 300401)
人体运动步态识别在外骨骼机器人运动控制、医疗检查等领域应用广泛[1-3]。助力型外骨骼机器人主要用于部队后勤、抢险救灾等场景,必须及时感知人体运动状态,使外骨骼机器人更精准地与人体协同运动,达到助力效果[4]。在医疗康复领域,准确的步态识别技术可以检测运动状态,对帕金森病症中的步态功能障碍进行预警,避免可能发生的跌倒损伤等危险[5]。
运动状态识别的关键是准确采集人体运动信息并进行特征提取。国内外学者在该领域开展了广泛研究。表面肌电信号方法(surface ElectroMyoGraphy,sEMG)采用非侵入方式将传感器电极连接到人体表面皮肤,通过采集表面肌电信号、分析神经肌肉和步态相位的相关性[6-7]以检测人体运动信息。由于肌电信号比较微弱复杂,电极的连接状态易受皮肤表面出汗等因素影响,不能稳定采集人体运动信息,而且导线会对人体运动产生一定的阻碍作用。另外,使用Kniect深度相机[8]或光学运动捕捉系统动态捕捉人体高精度三维位置与运动姿态信息,可检测并识别步态[9],但是使用场景限制较大。目前,基于机器学习的人体运动步态识别方法应用较广[10]。Weigand等[11]使用压力传感器和惯性测量单元(Inertial Measurement Unit,IMU)分别测定步态周期起止位置以及小腿的运动变量,并结合k-最近邻(k-Nearest Neighbor,kNN)和人工神经网络方法识别步态,但未对步态进行细分,无法准确得知当前的运动状态。Su等[12]将IMU 分别布置在大腿、小腿与脚踝处,将测量出的运动数据组成“图像”并输入深度卷积神经网络(Convolutional Neural Network,CNN),可实现多个步态相位的识别,但使用的传感器个数较多且布置复杂,不利于人体自由运动。赵飞[13]将IMU 布置在足跟部位采集运动数据,将4 个薄膜压力传感器放置于足底采集足底压力数据,采用支持向量机识别不同步态模式,虽然减少了对人体运动的影响,但因压力传感器分辨率低且只能采集4 个测量点的足底压力数据,容易丢失关键的压力信息。
针对步态检测受场景限制、传感器布置复杂以及压力传感器分辨率低等问题,本文提出一种基于人体模型约束的步态动态识别方法。识别流程如图1 所示,首先,利用AMS(Anybody Modeling System)软件建立人体仿真模型,进行运动学和动力学分析,得到足底压力、足部运动位移仿真数据以及对应的姿势,并划分运动过程中的步态相位,构建真实数据与仿真数据间的映射模型;然后,应用柔性压力传感器采集行走过程的足底压力数据,动态判断支撑相步态相位;应用IMU 采集足部运动数据,运用零速修正算法消除累积误差获得足部运动位移量,根据位移规律确定摆动相步态相位;最后,使用CNN 训练行走步态数据,以准确识别步态。
图1 步态识别流程Fig.1 Flow of gait recognition
在人体运动过程中,完整采集足底压力分布与足部运动特征可获取运动关键信息。本文结合足底压力传感器与IMU 搭建足部运动数据采集系统。如图2 所示,采集高分辨率足底压力与足部运动数据。足底压力传感器选用电容式柔性压力传感器[14],结构及工作原理如图3 所示。
图2 传感器布局Fig.2 Sensor layout
图3 压力传感器结构及工作原理Fig.3 Structure and operation principle of pressure sensor
传感器中上电极层铺设32 行、下电极层铺设16 列相互平行的条状电极,上下电极层的条状电极垂直布置,各导电电极相互交叉,共形成512 个交叉点阵列分布,每一个电极交叉点即为一个电容单元。当有压力作用于传感器表面时,受压区域的电容单元电介质层发生变形导致电容值改变,实现足底相应区域压力数据的高分辨率采集,以保证足底压力数据的完整性。IMU 选用包含3 个单轴加速度计和3 个单轴陀螺仪的6 轴IMU,其中:3 个加速度计分别输出物体在载体坐标系下的3 个线性加速度;3 个陀螺仪分别输出载体相较于导航坐标系的3 个角速度。
AMS 软件可用于人体动力学和运动学仿真分析。本文修改软件内置模型库中的模型参数,搭建了身高1.78 m、体重75 kg 的肌肉骨骼模型,模型空间坐标系设定为X方向指向人体右侧,Y方向指向人体前进方向,Z方向由右手坐标系确定。按照AMS 中模型标记点的布置规则,将光学标记点粘贴在捕捉对象的相应位置,应用OptiTrack 运动捕捉设备采集捕捉对象上光学标记点的空间位置,将数据保存为C3D格式,导入AMS 中进行运动学与逆动力学仿真。
本文在模型足底创建了24 个测力点,分8 行排列,列数随足底形状不规则分布,最宽处为4 列。根据实际IMU 的安装位置,在人体模型对应部位设置测量点,记录步态过程中的位移数据,如图4(a)所示。在逆动力学仿真过程中,当测力点接触地面时,产生使模型保持平衡所需要的支反力,将它作为足底压力仿真数据。采用自然邻点插值算法将足底压力仿真数据拓展为与真实足底压力数据相等的32 行16 列并处理成脚印形状,如图4(b)所示。
图4 足部测量点分布与足底压力仿真结果Fig.4 Distribution of measurement points in foot and plantar pressure simulation results
步态周期指行走过程中两个相同事件发生的时间间隔,以右足足跟触地为步态周期分界点,一个步态周期包括支撑相和摆动相两部分,分别占整个步态周期的60%和40%[15]。本文分析足底压力数据与模型步态特征,将支撑相的压力数据步态相位细分为足跟触地(Heel Contact,HC)、足弓触地(Arch Contact,AC)、足平放(Stance,ST)、足跟离地(Heel Off,HO)、足前支撑(Forefoot Support,FS)五种状态。
在运动过程中,足部位移数据的步态特征相较于加速度或角速度数据更加明显。因此,根据模型运动规律及仿真位移曲线可以分析行走过程中下肢的步态特征。由于足部位移数据无法区分除足平放之外的其他支撑相状态,故将足跟离地、足前支撑状态合并为预摆动;将足跟触地、足弓触地状态合并为预支撑。沿Z轴方向的仿真位移曲线如图5 所示,将整个步态周期划分为6 个区域。其中:Ⅰ为预摆动;Ⅱ为足尖离地至位移曲线第1 高点,设为摆动初期(Initial Swing,IS);Ⅲ为小腿开始摆动至位移曲线最低点,设为摆动中期(Mid Swing,MS);Ⅳ为小腿继续摆动直至足跟触地,设为摆动末期(Terminal Swing,TS);Ⅴ为预支撑;Ⅵ为足平放。
图5 行走运动的仿真位移曲线Fig.5 Simulated displacement curve of walking action
对仿真数据进行步态划分以确定真实数据支撑相的步态特征。本文应用多元线性回归方法建立真实压力数据与仿真压力数据之间映射模型以确定对应关系。多元线性回归模型的矩阵形式为:
选取支撑相内2 000 帧真实压力数据训练映射模型回归系数,建立映射模型,将仿真数据输入模型,获得映射数据。
本文利用运动过程产生的动态信息,将足底压力数据按照不同步态相位进行分割。足底接触面积占全足底接触面积的百分比与足底各区域压强峰值、冲量随着受试者身体质量指数(Body Mass Index,BMI)的增加而增大[16]。因此,需对不同BMI 人群的足底压力数据进行泛化处理。为避免使用单一数据特征造成的压力数据区分不明显,首先,利用高分辨率压力传感器,得到足底压力图像面积、压力均值以及方差特征;然后,分别求取这三种特征在运动状态与站立状态的比例关系,通过计算特征比例的模值进行特征融合,得到不同BMI 人群足底压力数据特征的统一描述,公式表示为:
其中:Sk、Mk、Vk分别表示运动过程中k时刻足底与地面接触面积、足底压力平均值、足底压力方差。运动从站立状态开始,故S1、M1、V1为第1 时刻站立状态下的三种特征。
为描述运动中足底压力的变化过程,以确定不同的步态相位,基于足底的结构和形状特点将足底按照1∶2∶1∶2 的比例分为趾骨、跖骨、足弓、跟骨区域四个区域,如图6 所示。
图6 足底压力区域划分Fig.6 Plantar pressure area division
行走过程中的足底压力连续变化,因此,通过各区域特征值的动态变化信息提取步态相位。本文使用当前帧特征值与前一帧特征值的差异比例表示足底压力数据的动态变化信息,可表示为:
分析映射数据在步态相位转换时4 个区域动态信息fk的变化情况,以确定每个步态相位的判断条件,如表1 所示。表1 中,fk=-inf 表示前一帧数据为0,当前帧数据不为0;fk<0 表示前一帧数据小于当前帧数据;fk=0 表示前一帧数据与当前帧数据相等;fk>0 表示前一帧数据大于当前帧数据;fk=1 表示前一帧数据不为0,当前帧数据为0。
表1 步态相位判断条件Tab.1 Gait phase judgment conditions
使用基于卡尔曼滤波的零速修正算法消除捷联式导航系统工作时产生的累积位移误差,获得足部运动位移。设卡尔曼滤波系统模型为惯性导航系统,状态量为速度与位移的估计误差,测量值为零速状态下IMU 的输出数据。
零速检测失败会使位移累积误差增大。通过固定阈值判断加速度特征进而确定零速区间的方法,对于不同个体需要重新选取阈值,因为不同人的下肢摆动加速度不同[17]。本文基于足底压力传感器动态检测步态,可获取不同速度下足平放步态相位,根据人体运动规律可以判定,当足平放时足部为零速状态。
本文使用的IMU 可直接输出校准后的欧拉角和四元数。考虑到四元数法计算量小且精度较高[18],因此利用四元数法对线性加速度进行坐标系转换,即:
其中:aN为导航坐标系下的线性加速度;aB为IMU 坐标系下的线性加速度;q为四元数,q*为四元数的共轭。
将9 维的误差状态向量xk=[ ΔψkT,ΔpkT,ΔvkT]设为卡尔曼滤波的状态量,其中:Δψk、Δpk和Δvk分别为三维姿态角、位移和速度估计。因此,状态方程表示为:
测量方程表示为:
其中:Zk为测量误差;H=[ 0,0,I]为测量矩阵;I为3×3 的单位矩阵;nk为协方差Rk=E(nk·nkT)的测量噪声。
图7 为通过上述方法获得的真实足部在Z轴的位移与速度曲线。依据人体模型得到的摆动相划分规律,确定图中位移曲线A 点为摆动中期相位起始帧,对应速度曲线上的C点,为一个步态周期内速度曲线上第1 个零点;位移曲线B点为摆动末期相位起始帧,对应速度曲线上的D 点,为一个步态周期内速度曲线上第2 个零点。因此可通过判断速度曲线零点的方法确定摆动中期与摆动末期的相位起始帧,其他摆动相位可通过压力数据判断。
图7 足部Z轴位移与速度Fig.7 Z-axis displacement and velocity of foot
将带有步态标签的压力与位移数据组合成34×16 的完整足部运动数据图像,其中:32 行为足底压力数据,2 行为IMU 位移数据。将位移数据转化为灰度值显示在足底压力云图下方,不同步态相位的足部运动数据图像如图8 所示。
图8 足部运动数据图像Fig.8 Foot motion data images
利用CNN 训练数据,以检测步态相位。CNN 的网络结构如图9 所示,各层参数如表2 所示。输入层为足部运动数据图像,通过CNN 提取图像的有效特征;池化层采用最大池化,激活函数采用ReLU(Rectified Linear Unit)函数;全连接层和输出层作为网络的分类器,将经过卷积降采样提取出的特征映射到标记空间,计算每一类的概率值并采用Softmax分类器进行分类。
图9 CNN结构Fig.9 Structure of CNN
表2 CNN参数Tab.2 Parameters of CNN
数据采集系统由压力传感器、数据采集卡、IMU 和数据采集显示程序组成,如图10 所示。IMU 型号为LPMS-B2,为避免行走过程中鞋面变形造成的IMU 安装误差,选用鞋面较硬的鞋,将IMU 安装于鞋面足尖位置;将足底压力传感器布置在鞋内。数据采集显示程序用LabVIEW 软件编写,将压力传感器和IMU 采集到的数据通过蓝牙传输到上位机,采用形态学滤波方法去除压力数据的底层噪声和边缘噪声,然后进行二维线性插值得到足底压力图像;调用Matlab 编写的惯性导航算法对足部运动加速度数据进行处理,得到足部运动位移的结果,并采用卡尔曼滤波对轨迹进行修正。
图10 足部运动数据采集系统Fig.10 Foot motion data acquisition system
选取4 名不同BMI 的实验对象,利用足部运动数据采集系统分别采集站立状态下跟骨区域的压力数据各100 帧,计算融合特征值并进行泛化效果测试,结果如图11 所示。由图11 可知,4 种BMI 对象站立状态跟骨区域的压力融合特征值与标准值1.732 1 的误差绝对值最大约为0.048,不同BMI对象之间的最大误差绝对值约为0.066,误差较小。表明本采集系统中压力传感器与数据处理方法对不同BMI 人群足底压力数据的泛化处理具有普适性。
图11 站立状态的特征值误差Fig.11 Eigenvalue error of standing state
招募12 名体重范围为52~86 kg,BMI 范围为17.2~26.5的实验对象,采集他们平地行走动作的支撑相内的HC、AC、ST、HO、FS 五种步态相位以及摆动相中IS、MS、TS 三个步态相位,各2 000 帧数据,将足底压力数据与足部位移数据组合为足部运动数据,并按照6∶2∶2 的比例关系划分为训练集、验证集与测试集。将训练集输入至CNN 进行训练,识别准确率如图12(a)所示。可以看出,在整个步态周期内,平均识别准确率为94.58%。
图12 行走步态识别Fig.12 Walking gait recognition
随机选定一名实验对象进行行走步态识别实验,实验对象穿戴实验设备,行走10 个步态周期,双足共产生646 帧数据。步态识别效果如图12(b)所示,可以看出,识别错误一般出现在两个相邻步态转换时,主要因为两个相邻步态衔接过程的足部运动数据图像较为相似。
应用本文方法对上、下楼梯两种运动步态进行识别。通过人体模型的上、下楼梯动作仿真可知,上楼梯过程中,足底与地面接触、分离的过程与行走状态一致,因此支撑相划分与行走一致。下肢摆动动作为向斜上跨越动作,分为加速与减速阶段,因此可将摆动相划分为以足底压力消失为起始帧的摆动初期和以Z轴速度曲线最大值点为起始帧的摆动末期。下楼梯过程中,足底与地面接触过程为趾骨与跖骨先触地,设定为足前触地状态(Forefoot Contact,FC);继而足弓与地面开始接触,设定为足弓触地状态;当跟骨部位产生压力时,为足平放状态,离地过程与行走一致。摆动相足部运动过程为向斜下跨越,可分为以足底压力消失为起始帧的摆动初期和以Z轴速度曲线最小值点为起始帧的摆动末期。
采集12 名实验对象的上、下楼梯的足部运动数据各2 000 帧。将足底压力数据与足部运动速度数据组合为足部运动数据图像,输入至CNN 训练。另选1 名实验对象进行上、下楼梯步态识别实验,两种动作各进行10 个步态周期,通过CNN 进行识别,步态相位的识别准确率如图13 所示。
图13 上下楼梯步态识别Fig.13 Gait recognition of going upstairs and downstairs
上楼梯过程中因足弓触地状态持续时间较短,足底压力图像特征不明显,导致识别准确率较低,约为90.12%。摆动相步态识别准确率较行走过程更高,主要原因为上楼梯时摆动初期与摆动末期特征分别为加速与减速,特征区分明显。下楼梯时,触地过程中的足前触地状态、足弓触地状态压力云图特征分别与离地过程中的足前支撑状态与足跟离地状态特征相似,因此,主要以足部速度特征进行区分,导致下楼梯过程中足弓触地相位识别准确率较低,约为89.32%。
为了验证本文通过动态分割压力数据,并结合位移数据组成足部运动数据图像进行识别方法的有效性,使用未经动态分割的足底压力数据进行CNN 训练并通过步态识别实验作为对比。识别准确率如表3 所示,本文方法的步态识别准确率明显更高。本文方法的行走动作步态识别准确率为94.58%,而上、下楼梯的步态识别准确率分别为93.21%和94.64%。相较于未经动态分割足底压力数据的步态识别,本文方法的行走、上楼梯与下楼梯动作的步态识别准确率分别提高了11.34、12.19 和16.03 个百分点。这是由于在人体模型约束下进行动态分割后的数据集可准确分割相邻步态相位的压力数据,更加客观准确,且足部运动数据图像包含足部位移数据,在不同步态但是压力图像相似的情况下也可以正确识别。
表3 不同数据的步态识别准确率 单位:%Tab.3 Gait recognition accuracy of different data unit:%
本文将足底压力数据、足部运动数据和人体仿真数据相结合,构建了一种适用于不同运动的步态识别方法。采用电容式柔性压力传感器和IMU 分别采集真实足底压力数据及足部运动数据。通过人体模型进行人体运动过程的运动学和动力学仿真分析,根据仿真压力与位移数据划分步态相位,采用回归映射方法建立真实数据与仿真数据对应关系。根据真实压力数据帧间差异比例,动态判断步态相位。基于零速修正算法获得足部运动学特征后,利用速度特征点判断运动数据步态相位。将足底压力数据与足部运动数据组合,利用CNN 对行走过程人体步态相位进行识别,平均识别准确率达到94.58%。另外,对上楼梯和下楼梯动作进行步态相位识别实验,上、下楼梯的平均识别准确率为93.21%、94.64%,表明本文方法对于上、下楼梯的步态相位识别也是适用的。下一步工作是对方法进行改进,使其能识别区分不同运动,提前感知不同运动变化,进行人体运动意图感知。