基于LSTM神经网络的仿人机器人循环步态的生成方法

2020-12-21 09:55于建均左国玉阮晓钢
北京工业大学学报 2020年12期
关键词:步态步行神经网络

于建均, 李 晨, 左国玉, 阮晓钢, 王 洋

(北京工业大学信息学部, 北京 100124)

双足机器人相较于轮式机器人具有良好的环境适应性且因其具有类人的结构可以代替人类在危险、复杂的场景中工作. 因此双足机器人被广泛应用在抢险救灾、生活服务等场景下. 但因其双足式结构的不稳定性在移动时易产生晃动甚至摔倒等问题,在双足机器人研究领域中,循环步态规划使机器人能完成长时间稳态步行,因而成为该领域中主要的研究方向之一.

人类在完成一系列步行动作时的平衡性好且能长时间稳定步行,其姿态、各个关节的角度、零力矩点(zero moment point,ZMP)等数据均被认为最优. 因此,模仿人体步行动作的方式被广泛使用到仿人机器人的步态规划中. 目前,人体步行的示教数据大多采用体感摄影机(如Kinect、Wil)的方式采集[1-3],但这种方式受到拍摄视野的限制,无法采集多个步态周期的人体示教数据. 在机器人完成长时间的步行动作时由多个单步态周期循环(或拼接)得到的关节角度序列会使机器人在运动过程中出现震动或摔倒的情况. 因此,双足机器人的循环步态规划是机器人完成长时间稳态步行任务的基础. 左国玉等[4]将仿袋鼠机器人简化为倒立摆模型,并使用混合粒子群算法优化线性二次型完成机器人的站立平衡控制,但其模型简单,迁移至仿人机器人中不能保证机器人动作的拟人性;Ibrahim等[5]通过对人体步行过程中单脚支撑(single support phase,SSP)和双脚支撑(double support phase,DSP)2个关键过程的分析(通过Kinect采集示教数据)以及反馈线性化的方式,使用多项式拟合关节角度轨迹函数的方式完成双足机器人的步态循环,但由于线性拟合在SSP和DSP过程中会出现拟合误差大,导致机器人产生晃动的问题;Kao-Shing 等[6]利用强化学习的方式学习Kinect体感采集器捕捉的人体步行动作的关键帧,完成各个关节角度的规划,使仿人机器人实现长时间稳定步行,但是由于其采取的是无监督的强化学习的方法,步行动作的自然性和拟人性有所不足. 因此,需采取模仿精度更高的循环步态规划方法使双足机器人完成步行任务. 由于人体在步行运动过程中的关节角度序列是时间序列,考虑通过采集多个单个人体步态周期的时间序列数据并对其进行学习,对时间序列进行多个步态周期的准确预测实现双足机器人的步态循环. 长短期记忆(long short-term memory,LSTM)网络由Sepp等[7]提出,解决了传统时间序列预测工具循环神经网络(recurrent neural network,RNN)的梯度消失和梯度爆炸问题,因此可以对RNN无法预测10个以上时间点的序列进行准确预测[8-9]. Wang等[10]利用2个LSTM神经网络分别完成对人体运动的识别和预测生成; Chellali等[11]利用LSTM神经网络对仿人机器人上肢各个关节的位置进行预测,进而对上肢动作姿态预测,完成“拍手游戏”; Dickson等[12]使用LSTM神经网络对6个动作进行上肢10个关节角度的联合学习和分类模仿.

从目前的研究现状可以看出,虽然体感摄影机Kinect受到视野限制出现采集示教数据不充足的问题,但其成本较低且Kinect-V2所采集的25个骨骼点信息,能充分满足一般仿人机器人(如NAO机器人)的自由度控制要求,因此若可解决示教数据不足的问题,Kinect仍是一种能有效采集人体动作示教数据的方式,依然可以在模仿学习的领域被研究和应用.

本文考虑通过LSTM神经网络预测生成多个步态周期的仿人机器人步行关节角度序列,从而得到仿人机器人的循环步态. 首先,通过Kinect体感采集器获取多次人体步行动作的时间序列数据,并经拼接和平滑处理过后,得到原始样本集. 其次,由于初始样本集为一维时间序列,但仿人机器人在步行时各个关节受多种因素影响,因此只通过目标值对关节角度序列进行长时间预测,序列的细节很难被学习,且精确度不足. 通过C-C方法得到相空间重构的时间延迟和嵌入维数,进行相空间重构,可得到一维关节角度序列的多维特征值,与目标值一起构成样本集,可明显提升关节角度预测的准确性. 最后,使用此样本集对基于LSTM神经网络的仿人机器人步行动作关节序列预测模型进行训练,使其预测生成多个步态周期的关节角度时间序列.

1 基于相空间重构的示教数据预处理

Kinect-V2是一款成本较低的人机交互设备,所采集的人体步行动作的示教信息可以很好地满足仿人机器人的自由度控制要求(Kinect:25个,仿人机器人:20~25个),但由于其视野有限,对于人体步行动作(同一个示教者,步幅相同,步态周期相同)只能采集1.0~1.5个步态周期的示教数据. 考虑采集多次人体步行示教数据,经过仿人机器人步态平衡模型映射,并使用拼接平滑的方式(直接循环)进行仿人机器人步态循环,但由于这种方法存在2次采集过渡阶段关节角度序列出现震荡的问题,因此,需要对关节角度序列进行预测生成来解决此问题. 考虑通过上述直接循环得到的关节角度序列作为初始样本集,但直接使用它作为样本集进行预测,由于只有目标值无其他特征值,预测精度不足以控制仿人机器人完成长时间稳定步行动作,因此,利用相空间重构的方法获取样本的更多特征值,以提高预测模型的精度.

1.1 多次人体示教数据采集

使用Kinect 2.0在其视野范围内对人体的步行动作进行捕捉,得到人体全身25个骨骼点的轨迹,并记录其三维坐标(x,y,z). 由于Kinect是一款非专业的体感摄影机,因此需要对其记录的骨骼点轨迹进行平滑处理. 通过空间向量法对人体骨骼点进行计算得到示教步行动作的各个关节角度的时间序列. 利用先前的研究成果[13]可以直接泛化得到使仿人机器人NAO稳定步行的关节驱动角度序列. 将得到的多次采集的示教数据进行映射泛化,获取机器人驱动关节角度进行拼接并平滑处理得到的关节角度,以在步行过程中对平衡性影响最大的髋关节俯仰角和踝关节滚动角为例,见图1、2.

从图2中可以看出,虽然直接拼接并进行平滑处理的方法可以得到多个步态周期循环的关节角度序列,然而在拼接处(红圈标注)会出现明显的震荡. 由于采集2次示教数据时,第1次采集的终止点非下一次的起始点,因此使用这样的关节角度序列驱动仿人机器人完成步行动作容易令机器人在拼接处出现晃动甚至摔倒的现象. 因此要使仿人机器人完成长时间的稳定步行,需对关节角度序列进行预测并解决相邻2次数据采集过渡处的波动问题.

1.2 基于相空间重构的数据预处理

关节角度序列本身受无奇异位姿、ZMP判据、运动协调关系和关节角度范围等多种因素影响,采集到的仿人机器人步行关节角度时间序列是一维时间序列.

x1={x1(1),x1(2),…,x1(500)}x2={x2(1),x2(2),…,x2(500)}

(1)

式中:x1为图1中仿人机器人在行走时直接循环左脚踝关节滚动角的时间序列;x2为图2中的仿人机器人在行走时直接循环左腿髋关节时间序列(分别有500个时间步骤). 因此在对关节角度进行预测之前,需要对该关节角度的一维时间序列进行逆推即相空间重构的预处理,从而得到关节角度序列的其他特征值,提高模型预测准确性.

根据相空间重构理论[13]的嵌入定理可知,对一维时间序列(Kinect采集的仿人机器人步行动作的关节角度数据即为一维时间序列)嵌入合适的维数m和时间延迟τ,重构后的相空间与原系统具有相同的动力学结构.

由于m和τ具有较强的关联性,二者的选择不应相互独立,且m和τ的确定很大程度上影响了之后模型预测的准确度,一般采用C-C方法[14]来同时计算合适的嵌入维数和时间延迟,首先定义关联积分

(2)

式中:N为关节角度序列长度即500;M=N-(m-1)t是相空间重构后相空间中的状态点的个数;t为子序列个数;s为序列标号.

C-C方法的本质[15]是计算嵌入维数m后与原序列的差值并求得最小值(最小化重构后的多维序列的关联性和原序列的关联性的差异). 从而求得最佳的嵌入维数m和时间延迟τ,具体步骤为:

将仿人机器人的步行动作关节角度序列分为t个子序列,表达式为

{x(1),x(1+t),…,x(1+(m-1)t)} {x(2),x(2+t),…,x(2+(m-1)t)} ⋮ {x(t),x(2t),…,x(mt)}

(3)

定义目标函数

(4)

定义差量

ΔS(m,N,r,t)= max{S(m,N,r,t)}-min{S(m,N,r,t)}

(5)

该量度量了关于半径r的最大偏差,它的最小值对应了S的零点(由于实际的时间序列有限长,各个子序列非独立同分布,因此实际求取到的S难以求得对所有半径r的零点及它们所对应的m和τ).

(6)

通过C-C方法,确定关节角度序列的m和τ后,可以完成仿人机器人步行动作关节角度的1维时间序列进行相空间重构,从而得到5维的时间序列,其中1维是关节角度的目标值,剩余4维是重构后的特征,踝关节重构的相空间表达式为

Y1(ti)=x(ti),x(ti+4),x(ti+8),…,x(ti+20),i=1,2,…

(7)

髋关节重构后的相空间表达式为

Y2(ti)=x(ti),x(ti+8),x(ti+16),…,x(ti+40),i=1,2,…

(8)

式中Y(ti)为m维相空间的第i个相点.

相空间重构后的5维时间序列构成最终样本集,对时间预测模型进行训练,由于特征增多可以明显提升模型预测精度.

2 仿人机器人步行动作关节角度序列预测模型的建立

获取仿人机器人步行动作的关节角度序列及其特征序列构成的样本集后,搭建结构合理、精度较高且能预测多个时间步骤(长时间)的关节角度序列的模型成为使仿人机器人能够完成长时间平稳步行的主要问题,对关节角度序列的长时间准确预测可以解决直接循环方法在2次采集过渡阶段出现的不平滑而使机器人在动作中出现晃动和摔倒的问题.

2.1 LSTM神经网络的基本原理

LSTM神经网络解决了RNN梯度消失和梯度爆炸的问题,使该结构的神经网络能学习到时间序列的长期依赖,其神经元结构见图5.

其中,遗忘门的结构表达式为

ft=σ(Wf·([ht-1,xt]+bf))

(9)

(10)

(11)

式中:Wc为细胞状态权值;bc为细胞状态偏置;it为输入门的输出;ht为LSTM神经元输出.

细胞状态和遗忘门结构的引进,解决了传统RNN的梯度消失和爆炸问题. 这样的前向结构是LSTM 神经网络对多维时间序列的前后关系进行学习的必要条件.

由于仿人机器人步行动作关节角度序列需要精准控制,希望LSTM神经网络尽可能准确地生成多个步态周期的关节角度时间序列(但不能过拟合导致学习到过渡阶段的波动). 而预测序列的准确性则是由训练神经网络时的误差随时间反向传播机制决定.

因此定义神经网络的目标函数为误差函数E,定义

E=ht-yt

(12)

式中yt为样本集中序列的真实值.

(13)

得到各个门结构及细胞状态各个时刻的偏差后,可以根据其定义,得到各个权重的偏差

(14)

通过上述误差往回传播的方法可以使LSTM在训练过程中通过自己预测的值与真实值之间的偏差去更新权值,使网络可以精准地学习时间序列并进行预测.

2.2 基于LSTM神经网络的仿人机器人步行动作关节角度序列预测模型

针对仿人机器人步行动作关节角度序列的预测问题,LSTM神经网络可以学习关节角度时间序列的各种特征,并根据这些特征对关节角度序列做出多个时间步骤的预测,从而实现仿人机器人步态循环的目的.

LSTM神经网络是通过分析时间序列的前后关系的原理对序列进行预测的. 因此对于类似股价这样无周期性规律的时间序列预测效果并不理想. 从图1、2中可以看出,仿人机器人在步行时,关节角度曲线呈现明显周期性. 因此,对于步行动作的关节角度序列,经过1个周期以上的样本的训练,在预测时LSTM网络可以准确预测生成出多个步态周期的关节角度序列. 除周期性外,关节角度序列的前后关系明显,在进行预测时也能够提升网络的预测效果,且预测生成的序列利用神经网络的泛化能力,忽略了在2次测量过渡阶段的抖动. 基于以上3点,使用LSTM神经网络进行关节角度序列的预测,可以保证仿人机器人在平地能进行平稳、长时间步行.

由1.2节的内容可知,仿人机器人关节角度的1维时间序列通过相空间重构后得到5维的关节角度序列,即2.1节中时间序列的xt,并结合步行动作的关节角度的目标值即2.1节中样本集的真实值yt,构成LSTM神经网络的样本集,并通过该样本集训练仿人机器人步行动作关节角度序列预测模型,使之能完成关节角度的预测任务.

分别以单层、双层、三层的LSTM层数及每层不同的神经元的网络结构预测仿人机器人步行动作的关节角度序列,其实验结果如表1所示.

表1 不同结构的LSTM预测仿人机器人步行动作关节角度误差对比

从表1中可以看出,使用LSTM神经网络预测仿人机器人步行动作关节角度序列时,网络层数为2时误差最小,准确度最高,且随每层神经元数量的增加,预测精度明显提高. 但在实验中发现,在每层神经元数量增加到300及以上时,会出现过拟合现象,见图6. 因此,仿人机器人步行动作关节角度序列预测模型选取的LSTM神经网络结构为:每层200个神经元的两层网络.

在每层LSTM层后加入Dropout层有效起到了防止过拟合的作用. 误差过大会导致各个关节角度之间不能协同动作,导致机器人在步行时出现动作不协调、晃动摔倒的现象. 而过拟合则会将样本集拼接处的特征也学习到,这样生成的关节角度序列就失去了意义(与样本集拼接的方式无差异).

训练优化算法为Adam算法,它结合了适应梯度算法(为每一个参数保留一个学习率)和均方根传播(将每一个参数的学习率进行自适应)的特性,计算梯度的指数移动指数,既控制过拟合现象的发生又增加网络预测序列的准确性. 损失函数为MSE函数(均方误差函数)与权重衰减项的组合. MSE函数提高预测的准确性,加入权重衰减项则是防止了过拟合现象的发生,其整体结构如图7所示.

经上述过程构建出的仿人机器人步行动作关节角度预测模型,经过示教数据的训练,可准确预测仿人机器人多个步态周期的步行动作关节角度,驱动仿人机器人完成长期稳定的步行动作,实现仿人机器人的步态循环.

3 实验和结果分析

为了验证上述方法的有效性,设计实验步骤和环境如下:

1)使用Kinect多次采集人体步行动的示教数据并利用仿人机器人步态平衡模型泛化出仿人机器人的步行关节角度序列数据,并将多次采集泛化得到的机器人关节角度序列进行拼接和平滑处理,得到各个关节角度序列的原始样本集.

2)使用相空间重构的方法对原始样本集进行进一步预处理,从原始样本集的1维机器人步行动作的关节角度时间序列中提取更多特征值,构成最终的样本集.

3)用样本集中的5维时间序列(第1列为关节角度序列的目标值,其余4列为相空间重构后得到的特征值)对搭建好的LSTM神经网络进行20个时期的训练,并在训练完成后,对之后的多个步态周期的关节角度序列进行预测.

4)将本文方法和不经过相空间重构的方法以及单层LSTM神经网络、三层神经网络(多层)的效果进行对比,体现本文方法的优越性.

5)使用预测得到的各个关节角度的时间序列在WEBOTS仿真平台中驱动NAO仿人机器人完成长时间的稳定步行,体现本文方法的有效性. 整体结构流程图如图8所示.

3.1 用于仿人机器人步行动作关节角度序列预测的LSTM神经网络的训练与测试

选择仿人机器人在步行过程中对人体平衡最重要的髋关节俯仰角和踝关节滚动角作为研究对象,由于人体(仿人机器人同样)左右对称因此以左腿髋关节俯仰角和左脚踝关节滚动角为例. 采集10次的人体步行动作的关节角度的时间序列,并通过仿人机器人步态平衡模型泛化得到仿人机器人步行动作的关节角度数据,经拼接和平滑处理后2个关节角度各自有500个时间步骤的时间序列作为初始样本集. 通过1.2节中所述的相空间重构的方法获取4维的特征值序列(加入关节角度目标值序列后共5维),时间延迟τ为4,组成最终的样本集. 前75%作为训练集,后25%作为测试集. 对LSTM神经网络进行训练,通过20个时期的训练,以其中1个关节角度(左脚踝关节滚动角)为例,LSTM神经网络的均方误差变化曲线如图9所示.

经过训练后,利用样本集中的25%的测试集对LSTM神经网络的效果进行评估,为了验证本文方法的优越性,使用本文搭建的LSTM神经网络对原始数据集(不经过相空间重构)进行预测,对比2种方法的效果,2种方法的预测效果如表2所示,没有经过相空间重构的LSTM神经网络预测曲线如图10、11所示,经相空间重构后的关节角度曲线如图12、13所示.

表2 LSTM预测仿人机器人步行动作关节角度误差

NAO机器人髋关节俯仰角变化范围为-1.770~0.484,踝关节滚动角变化范围为-0.769~0.398. 从表2中可以看出,经LSTM神经网络预测得到多个步态周期的关节角度的时间序列,与没有经过相空间重构相比,由于获取了更多的特征值,均方误差有了明显下降,预测精度更高.

从图10~11可以看出对没有经过相空间重构的关节角度序列,由于是1维时间序列,预测精度不足,对关节角度序列的一些细节不能很好地学习,而经过相空间重构后,由于有了更多特征值,对关节角度序列的一些细节也能够充分学习. 使用LSTM神经网络预测多个步态周期的关节角度序列,LSTM记忆关节角度序列的特性使直接循环关节角度序列所出现2次测量过渡时的起始点非终止点的问题得到解决(预测得到的时间序列不存在拼接处不平滑问题),关节角度序列在步态周期的过渡阶段平滑连接,使仿人机器人在长时间的步行动作中不会出现晃动或摔倒的问题.

与传统的基于人体示教数据的仿人机器人步态规划算法[16]相比,本文提出的基于LSTM神经网络的仿人机器人循环步态生成方法能有效增加机器人模仿人体步行动作的周期数,且不会出现直接循环单次采集的人体示教数据产生的拼接处不平滑的问题(如图12、13所示). 从而保证机器人能够完成长时间稳定步行的任务.

3.2 WEBOTS平台下的仿人机器人步行仿真

为了验证本文方法的有效性,使用上述方法得到的各个关节角度的时间序列(主要为下肢的10个关节角度,左右腿各5个分别为:膝关节俯仰角,踝关节俯仰角和滚动角,髋关节俯仰角和滚动角)去驱动WEBOTS仿真平台中的NAO机器人使其进行长时间的步行动作,其零力矩点信息(判定机器人是否动态稳定的判据)如图14所示,其动作姿态如图15、16所示.

从NAO机器人的姿态可以看出,NAO机器人在长时间的步行过程中,机器人姿态稳定,不会出现晃动或摔倒的情况,使用本文方法预测得到仿人机器人步行动作的关节角度的时间序列能有效地驱动NAO机器人进行长时间稳定步行动作.

4 结论

1) 通过相空间重构对多次采集的人体步行动作关节角度序列(经过仿人机器人步态平衡模型泛化得到仿人机器人的关节角度序列)处理,得到仿人机器人完成步行动作时关节角度时间序列的更多特征值.

2) 使用双层LSTM神经网络(每层200个神经元)进行预测,可以得到多个步态周期的关节角度的时间序列,解决了由于Kinect摄影机视野限制导致的、仿人机器人不能模仿人体完成长时间稳定步行动作任务的问题.

3) 通过对比经过相空间重构和不经过相空间重构的样本集进行预测的效果以及使用预测得到的机器人关节序列在WEBOTS平台上驱动NAO机器人,观察其运动效果,验证本文方法的有效性和优越性.

4) 下一步的工作希望利用LSTM联合多个序列联合分类学习的功能[17],对多种步态示教动作的各个关节角度信息进行联合学习,进行分类以及模仿完成各种步态的长时间稳定步行以完善仿人机器人对人体步行动作的学习任务[18-19].

猜你喜欢
步态步行神经网络
基于步态参数分析的老年跌倒人群步态特征研究
基于神经网络的船舶电力系统故障诊断方法
特别策划《步态分析研究综述》
魔方小区
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
步行回家
基于神经网络的中小学生情感分析
步态识人