1. 引言
近年来越来越多的研究者将目光聚集在人形机器人上,在控制领域,强化学习成为机器人控制的一个热点[1]-[7]。强化学习通过与环境的互动来学习控制策略,以满足复杂的机器人任务。Benbrahim等对双足机器人动态行走进行研究,开发了Self Scaling Reinforcement (SSR)强化学习算法和一种学习架构,对输入数据进行预训练,提高了双足机器人行走的学习效率[8]。Singh等通过让机器人在少量成功的图像数据中学习,设计了一种端到端的物品抓取放置机器人[9]。通过从示教数据中学习策略,以达到控制目的,该类控制框架的基础是足够多的运动数据。因此需要捕捉人体运动数据,并将数据映射至人形机器人上。然而,动捕数据通常是多行为的长序列,因此需进行动作序列分割。J. Barbic等提出了基于高斯混合模型的分割方法,用高斯混合模型来模拟整条运动序列,根据两连续的帧数集属于不同的高斯分布的概率进行动作序列分割[10]。P. Schäfer等人提出了一种时间序列分割方法,通过在所有可能的分割点训练二元时间序列分类器来确定每个分割点[11]。张奕等提出一种基于最大方差展开(MVU)的人体运动片段分割方法,选取残差值的幅度跳变点作为分割点[12]。但是这些方法均从检测分割点的角度出发,并未考虑数据本身存在的时间、空间规律[13]。
陈思喜等提出一种基于核主成分分析的运动数据分割方法,使用核主成分分析进行降维,构建特征函数获得投影误差的导数,根据斜率变化自动确定分割点[14]。胡晓雁等提出一种基于谱聚类的运动捕获数据分割,首先建立相似度矩阵,其次用谱聚类算法将其转换为相应的拉普拉斯矩阵,最后使用k均值算法获得聚类结果,进而实现自动分割[15]。本文受该论文启发,从运动数据出发,提出一种基于运动数据时空特征提取的人类运动片段分割方法,将原始运动数据中所难以体现的动态运动信息、步态周期性信息等有利于判断运动类型的时空信息进行提取,充实到原始运动数据中,为运动分割的计算提供更加精准的信息。然后,采用概率主成分分析(Probabilistic Principal Component Analysis, PPCA)方法进行运动分割。本文的创新点如下:
1) 人类运动的动态运动信息即质心的速度、加速度与简化倒立摆的摆角能够直接揭示人类运动速度与身体动态平衡信息,为PPCA算法提供动态时空特征的分类维度信息;
2) 人类运动中的步态差异是一个重要分类维度,且步态参数具有周期性规律,其在不同运动片段的分割点有明显的变化。本文基于原始数据,提取了人类运动的步态时空参数,将其加入到原始运动数据中,为PPCA算法提供了步态参数的分类维度信息。
2. 人类运动数据预处理
2.1. 原始运动数据介绍
本文所选取的人类运动数据,其对应的数字人结构如图1所示,下肢骨骼包括:Root hip (根骨)、Buttock (臀部)、Thigh (大腿)、Shin (胫骨)、Foot (脚),上肢骨包括Abdomen (腹部)、Chest (胸部)、Neck (脖颈)、Shlder (肩部)、Forearm (肘部)、Hand (手部)每一部分所占总体重的百分比如表1所示[16]。骨骼由关节进行连接,并通过关节旋转实现运动,其中肩关节、髋关节、踝关节具有三自由度,肘关节、膝关节具有一自由度,颈关节具有二自由度。运动数据包含根骨的位置信息及上述18个节点的旋转信息,保存在BVH文件中。
Figure 1. Diagram of human node
图1. 人体节点图
Table 1. Relative mass of body segments
表1. 各体段相对质量
体段名称 |
头颈 |
上躯干 |
下躯干 |
大腿 |
小腿 |
上臂 |
前臂 |
手/足 |
相对质量 |
8.62% |
16.82% |
27.23% |
14.19% |
3.67% |
22.43% |
1.25% |
0.64%/1.48% |
BVH文件的内容如图2所示,包含骨骼的层次关系结构(HIERARCHY)及动作序列数据(MOTION)。骨骼的层次关系结构决定了整个骨架的信息,以HIERARCHY为标识符,ROOT为根关节标识,JOINT为子关节标识,末端节点以End Site结束。且每一节段点包含两部分信息:OFFSET和CHANNELS。OFFSET代表该节点相对于父节点的偏移量,通常表现为在父关节坐标系下的XYZ分量。CHANNELS则代表运动数据的处理方式和通道数量。
Figure 2. BVH document HIERARCHY and MOTION section
图2. BVH文件HIERARCHY及MOTION部分
2.2. 数据预处理
足端的运动状态是时空特征描述的关键信息,基于原始运动数据,将足端在根节点坐标系的位置坐标转换到世界坐标系下,从而方便步态参数的提取。下肢各节点父代与子代的层次关系如图3所示。前一级为后一级的父代。从BVH文件中直接读取的各关节姿态均为欧拉角形式(Z, X, Y),其中,ROOT hip处于最高层,无父代,此处的欧拉角信息表示hip坐标系相对于世界坐标系的姿态。每个欧拉角表示子代骨骼相对于父代骨骼坐标系的旋转信息,描述为
,其中i表示父节点,i + 1表示子节点。
Figure 3. Hierarchical diagram of the joints of the lower limbs
图3. 下肢各关节层次关系图
子代坐标系相对于父代坐标系的表达通过构造进行平移和旋转的算子T来表述:
(1)
式中,
表示为I + 1关节在i关节坐标系下的位置坐标,
代表第i + 1关节坐标系相对于第i关节坐标系的旋转矩阵,由关节处欧拉角按公式2转换得到,即欧拉角顺序为ZYX时,旋转矩阵为:
(2)
式中
,
,
,
,
,
。
选取脚踝处的坐标为足端位置,脚踝坐标系相对于世界坐标系的表达为:
(3)
式中,
、
、
、
、
分别表示当前坐标系相对于上一级坐标系的表达。且世界坐标系为右手坐标系,X轴为前进方向,Z轴指向重力相反方向。
根据公式1则可得到足端在世界坐标系下的位置
,推导可得:
(4)
式中,offsetF、offsetS、offsetT、offsetB分别为Foot、Shin、Thigh、Buttock节点坐标系相对于上一节点坐标系的偏移,由BVH文件获得。最终,得到左足端位置
与右足端的位置
。
依据公式4,能够得到左右足端与左右腕关节相对于世界坐标系的位置分别记作
、
、
、
,以及每一段骨骼的位置。假设人体各段骨骼的质心处于几何中心处,利用以下公式确定人体各段骨骼的质心位置。
(5)
式中,
为第i段骨骼质心所处位置,
为第i段骨骼末端位置,
第i段骨骼顶端位置。即当前节点为该骨骼的顶端及上一段骨骼的末端。
依据表1中各个体段所占体重比例,可计算得到人体质心位置
:
(6)
式中,
为各段骨骼的质量,依据运动数据提供者的体重以及表1计算得到。
3. 运动数据的时空特征提取
原始运动数据仅反应各骨骼间的平移与旋转关系,无法直接描述运动的特征,本节进行质心动态平衡时空特征以及步态周期性时空特征提取,将原始数据中的运动特征直观化,为运动分割提供依据。
3.1. 质心动态平衡时空特征提取
人类的运动如奔跑、跳跃、快速行走等均为动态平衡运动,仅对各体段的位置蕴含的信息进行分析,无法表现出运动的动态特征,而动态特征是对不同动作进行分割与判别的重要特征。在此对位置数据进行微分,得到质心的速度
及加速度
。
动态平衡运动不存在静态稳定裕度,为了实现动态平衡,简化倒立摆模型的倾斜角度会随质心加速度的变化而变化,因此,分析简化倒立摆模型的实时状态能够有效的对运动序列进行动态平衡特征提取。将公式6计算得到的质心位置与触地点脚踝进行连接,形成一个质心负载倒立摆,即简化倒立摆,其在矢状面的示意图如图4所示。
倒立摆的摆杆长度用r表示,每一帧运动的摆杆长度随当前各体段位置的变化而实时变化,其计算方式如下:
(7)
式中,
,
分别为支撑足的x与z位置坐标,下标I = l或r或m,通过判断与选取支撑足来确定,当支撑足为左足时,
,
分别选取左足脚踝位置坐标;当支撑足为右足时,
,
分别选取右足脚踝位置坐标;若支撑状态处于双足支撑或无支撑状态时,计算时选择两脚踝连线的中心坐标作为
,
。
Figure 4. Inverted pendulum model
图4. 倒立摆模型
简化倒立摆的摆角
表示身体质心相对于垂直方向的倾斜角度,用来衡量身体的前后倾斜,在倾斜角的提取中,只考虑倒立摆在人体矢状面上的倾角,即XOZ平面上的倾角,计算公式如下:
(8)
将质心速度、加速度、倒立摆摆长、倒立摆倾角作为已知信息加入运动的原始数据中,其中,速度能够直观的反应人类运动的快与慢,加速度与倒立摆倾角能够直观反应人类运动的动平衡情况,摆杆长度直接反应了人类蹲起与跳跃的情况。
3.2. 步态周期性时空特征提取
人类的不同运动中,步态的特征是一个重要判断标准,且步态一般具有周期性规律,而运动分割点必然处在不同步态的交替点,因此,在原始数据中对步态周期性时空特征进行提取,能够为运动分割提供重要的信息。
1) 双足支撑状态判别
将运动过程中的支撑状态分为:双足支撑、左足支撑、右足支撑、无支撑,分别由0、1、2、3表示。根据足端运动数据,确定双足支撑状态时左右足在竖直方向的最大值,作为阈值。由于传感器精度问题,双足支撑状态时,左右足竖直方向的数据并不一致,因此设置两个阈值,分别记作
、
。当
,且
时,右足是支撑足,左足为摆动足,记作2;当
,且
时,左足是支撑足,右足为摆动足,记作1;当
,且
时,处于无支撑状态,记作3;当
,且
时,处于双足支撑状态,记作0。
2) 步态周期计算
运动分割点必然处在步态周期的切换点,因此步态周期为一个重要的运动分割参考因素,对步态周期进行计算作为运动分割的参考数据。
步态周期定义为从一侧足着地到此侧足再次着地的时长。首先,在一定时间内根据足端位置确定摆动足与支撑足,其次在运动数据中正向寻找该支撑足转为摆动足后再次成为支撑足所在帧数,依此确定步态周期。然而并不是所有周期均为步态周期,无步态行为时,则通过质心速度曲线确定,每生成一个波形记为一个周期。其中产生的未标记周期则平均分配给该段的前后两个周期。
3) 步态占空比计算
将占空比定义为:步态周期中,人体所有腿支撑状态时间和整个步态周期的比值。因此步态占空比的计算可以通过累加实时占空比求平均获得。
第i帧数据的实时占空比计算公式如下:
(9)
其中,
为第i帧数据所对应运动的支撑足数量。
将同一周期内的每一帧所计算得到的占空比
相加,并平均为每一帧的数据,计算公式如下:
(10)
通过计算,同一周期内的所有帧会有一个相同的占空比,更加直观地说明了周期更迭。
4) 步长确定
步长定义为行走时一侧足跟着地到对侧足跟着地所行进的距离。因此需计算双足均为支撑足时的位置差,当既存在支撑足也存在摆动足时,则维持上一时刻的数据。
由运动数据预处理可得左右足在世界坐标系下的位置数据Plf,与Prf。此时人体沿世界坐标系的Z轴进行运动,运动步长h则为每时刻左右足端Z方向位置差,计算公式如下:
(11)
不同周期步长h的变化有助于描述运动的动态渐进过程。
5) 步幅(跨步长)计算
步幅(跨步长)定义为:行走时,一侧足跟着地到该侧足跟再次着地所进行的距离。因此需计算支撑足变为摆动足再变为支撑足时,两时刻该足位置差。两时刻中间部分,则维持上一时刻的数据。
由于同一步态周期内,左右足的步幅处于一致状态,因此,仅计算一侧足的步幅即可。首先,依据支撑状态,确定行走时首先处于支撑状态的腿,若步行开始时,支撑状态为1,即左腿为支撑腿,计算跨步长时就以左腿为基础。计算公式如下所示:
(12)
式中:
为支撑状态序列中第n次出现连续的状态1序列时,左足在Z轴上的数据,
为支撑状态序列中第n + 1次出现连续的状态1序列时,左足在Z轴上的数据,n等于1、2、3……。
6) 步高计算
步高定义为:一个步态周期中,足端的最高点。
由于足端位置选取的是脚踝处的位置数据,则将初始帧时脚踝处的高度设为地面高度,记作
,计算公式如下:
(13)
式中,
为足端在y轴上的位置数据。
在一个步态周期中,计算出每时刻足端高度后,以最大值记为该步步高,更新到本步态周期的所有帧。
3.3. 基于时空特征的运动数据构建
通过动作捕获获得的原始数据中,每一帧有18维数据,将所提取的质心动态平衡时空特征以及步态周期性时空特征与原始数据结合,组成新的运动数据集,每一帧变为69维,以一帧为例:
m帧69维的数据组成最终的运动数据矩阵
。该运动数据为利用PPCA算法进行运动序列分割提供了更加直观且丰富的运动时空特征。
4. 运动序列分割
概率主成分分析及马氏距离方法是常见的基于概率的主成分分析方法,其引入了对噪声的处理,因此,对数据的平滑度要求较低,而马氏距离的处理方法用于多维数据的分析能够消除各个特征之间的尺度差异。人类运动与捕获过程均会引入噪声,同时,用于表现运动的数据并非同一尺度,因此,选择了PPCA算法来进行运动序列分割。其基本思想如下:首先初始化一个向前的运动片段k,使用概率主成分分析来估计运动数据的分布,将该片段建模为高斯分布,其次计算运动帧k + 1到k + T的马氏距离H来估算该片段属于上一片段定义的高斯分布的可能性,示意图如图5所示,整体而言,H先递减,随后产生一个波谷,继而上升,然后再递减,形成一个波峰。当1到k帧和k到k + T帧属于同一种运动时,H递减。随着k的增加,算法对该运动的分布估计更为准确,最终形成了波谷。当新的运动进入第k+1帧到第k + T帧时,H就会开始递增。当新运动开始在第1帧到第k帧中出现时,H又开始递减,此时分布开始适应新运动。因而,可以把波峰处作为分割帧,此时1到k帧是旧的运动,k + 1到k + T帧是新运动的前T帧。
构造的矩阵维度较高,因此需要进行降维处理。首先定义运动中心为:
(14)
根据公式15,将运动序列中的每一帧减去运动中心,使数据居中,
(15)
然后根据公式16构造矩阵Y,并对其进行奇异值分解。奇异值分解形式如公式17所示:
(16)
(17)
其中,Y矩阵可分解为U、S、V三个矩阵,U和V的列是正交单位向量,S是一个对角矩阵,均由
的特征值及特征向量决定,且S对角线上的是特征值
。
(18)
此时,投影维度s可由公式18决定,通过设定某一值
,令
来确定能代表运动序列的维度s。此时,将运动序列从q维降至s维,投影后的数据矩阵T则可以表示为:
(19)
式中,
为V的前s列
利用s维以外的奇异值作为噪声,并构建一个高斯分布,其中平均值等于运动中心,噪声的平均平方可以由以下公式表示:
(20)
并且协方差矩阵C由以下公式决定:
(21)
(22)
式中,
为对角矩阵S左上角矩阵,大小为s × s。
随后,计算从k帧到k + T帧与前k帧的平均马氏距离,来预估第k帧到k + T帧服从前k帧运动数据生成的高斯分布的程度,设T = 300。平均马氏距离计算公式如下:
(23)
此时以一定的帧距不断地向前拓展,对相应的前k帧进行重复的分布估计,不断计算平均马氏距离,得到一条平均马氏距离序列。
Figure 5. Plot of the variation of the mean martensitic distance for a motion sequence
图5. 某运动序列平均马氏距离变化图
5. 实验结果
为验证所提方法的有效性,本文采用Xsens MVN Analyze设备进行人类运动数据捕获,如图6所示。Xsens MVN Analyze设备共有17个惯性传感器分别穿戴于被采集人的头部、腰部、四肢(如图6左所示)。所采集的运动数据会呈现为Xsens MVN Analyze软件中数字人的运动(如图6右所示)。捕获一段人类运动进行测试,该运动数据中包含的运动种类有下蹲、踢脚、原地跳、慢走、跑步等8类,共6274帧,运动序列如图7所示。
首先,对该运动序列进行时间–空间运动特征提取,利用公式4计算左右侧足端相对于世界坐标系X方向(前进方向)轨迹如图8所示。其中世界坐标系如图1中所示。由图可见,运动大致可分为两类:原地运动、前向运动。其中两曲线重合,且前进方向无位移时表明,该状态处于双足支撑阶段,有位移时,则处于双足摆动状态。两曲线不重合时,则处于单足支撑阶段。
利用速度、加速度公式计算质心的三轴速度与加速度如图9、图10所示,可见4000帧之前,前进轴方向速度加速度几乎为0,为原地动作,4000帧之后,前进轴方向速度加速度发生变化,人体发生前向运动。蹲起及跳跃状态时,质心速度仅在站高方向变化;摆腿时,质心速度无明显变化;步行时,质心在前进方向速度变化较为明显,水平及站高方向无明显波动;前向跳跃及跑步时,质心在前进及站高方向速度变化较为明显,水平方向无明显波动。
Figure 6. Xsens MVN Analyze appliances
图6. Xsens MVN Analyze设备
Figure 7. Sample campaigns
图7. 示例运动
Figure 8. X-direction (forward) trajectory of the left and right feet in the world coordinate system
图8. 世界坐标系下左右足X方向(前进方向)轨迹
Figure 9. Three-axis velocity profile of the centre of mass in the world coordinate system
图9. 世界坐标系下质心三轴速度曲线
Figure 10. Triaxial acceleration profile of the centre of mass in the world coordinate system
图10. 世界坐标系下质心三轴加速度曲线
利用公式6、公式7、公式12计算得到虚拟倒立摆的质心、倒立摆摆杆长度与倾斜角,其倒立摆变化如图11~13所示,可见当人体处于蹲起、跳跃状态时,质心倒立摆杆长先减小后增大,速度加速度仅在站高方向变化;当人体处于踢腿状态时,质心倒立摆杆长、速度加速度无明显变化,倾斜角发生变化以保持平衡;当人体处于行走、跑步状态时,质心倒立摆杆长无明显变化,倾斜角发生变化以保持平衡,其中跑步时质心倒立摆倾斜角变化更为迅速。
Figure 11. Connecting rod length change
图11. 连杆长度变化
Figure 12. Tilt angle change
图12. 倾斜角变化
Figure 13. Inverted pendulum variations
图13. 倒立摆变化
然后,对运动数据的步态参数进行提取,设定左腿的支撑 − 摆动切换阈值 = 5,对每一帧数据的左右足高度进行判断,得到左右足的支撑与摆动状态如图14所示。可见左右足均为支撑状态时,人体下肢无运动。在一定时间段内,左右足均为摆动状态时,人体做跳跃。左右脚支撑状态出现交替时,人体处于走路或奔跑状态。
Figure 14. Left and right foot status changes
图14. 左右脚状态变化
根据质心变化曲线及步态周期定义,确定未发生行走行为时与发生行走行为时的运动周期,运动周期如表2所示:
Table 2. System resulting data of standard experiment
表2. 运动序列中的周期
周期数 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
帧数范围 |
0~300 |
301~1400 |
1401~1950 |
1951~2400 |
2401~2735 |
2736~3222 |
3223~3739 |
时间(s) |
1.250 |
4.580 |
2.290 |
1.871 |
1.392 |
2.025 |
2.150 |
周期数 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
帧数范围 |
3740~4127 |
4128~4500 |
4501~4800 |
4801~5510 |
5511~5895 |
5896~6136 |
6137~6274 |
时间(s) |
1.623 |
1.550 |
1.246 |
2.954 |
1.600 |
1.00 |
0.571 |
当步态周期与相位变化相继确定后,利用公式10计算一个周期内的占空比如图15所示,可见,当站立时,占空比为1跳跃时占空比约为0.4,踢腿时占空比约为0.75,跑步时占空比约为0.45。由于周期确立时,周期内包含一些过渡状态,即包含双足均为支撑状态的时刻,因此拉高了该周期的步态占空比。
Figure 15. Duty cycle change
图15. 占空比变化
利用公式11计算得到运动周期内的步长,其步长变化如图16所示。由图可见人体在站立、摆腿、原地跳时,步长均为0,行走或跑步时,步长在一定区间浮动,并不为固定值。
Figure 16. Step length change
图16. 步长变化
利用公式12计算得到运动周期内的步幅,其步幅变化如图17所示。由图可见步幅变化与步长变化类似,步行和跑步时,其步幅约为步长的两倍。
Figure 17. Change in stride length (stride length)
图17. 步幅(跨步长)变化
利用公式13计算得到运动中的实时步高,其步高变化如图18所示。由于足端位置选取的位置为脚踝处,因此初始步高并不为0。可见步高呈周期性变化,人体处于步行和跑步状态时,步高较低且变化迅速,其余状态则变化缓慢。
通过以上数据处理流程,得到原始运动数据的时空特征,与原始信息共同组成BVH矩阵,实验中,设置不同的阈值,发现将阈值τ设为0.9时,此时既能保证降维的目的,又可以保留足够的信息,当分割阈值R = 60,000时,此时可以取得较好的分割效果。实验结果如表3所示。其余参数为固定值,T = 300、k = T、l = 10。
文献10中,直接选取人体各关节的四元数数据,并将其转换为欧拉角,构造旋转矩阵,然后利用马氏距离进行分割。本文方法与文献10方法的对比结果如图19所示。
Figure 18. Walk taller in real time
图18. 实时步高
Table 3. Comparison of results with different parameters
表3. 不同参数下结果比较
R |
τ |
T |
l |
P |
R |
10,000 |
0.9 |
300 |
10 |
52.38% |
100% |
60,000 |
0.9 |
300 |
10 |
88.8% |
100% |
80,000 |
0.9 |
300 |
10 |
76.92% |
83.3% |
60,000 |
0.8 |
300 |
10 |
71.43% |
83.33% |
Figure 19. Comparison of segmentation effects
图19. 分割效果比较
在评估分割效果时,引入了查准率(P)与查全率(R),结果如表4所示。
(24)
(25)
Table 4. Comparison of the results of this paper’s method with other methods
表4. 本文方法与其他方法结果比较
|
A |
Q |
M |
P |
R |
文献10方法 |
8 |
10 |
12 |
80% |
66.7% |
本文方法 |
12 |
14 |
12 |
88.8% |
100% |
通过比较可以看出,本文方法可以在保证查准率的基础上,大大提升检测的查全率。
6. 结论
基于原始运动数据进行人类运动分割时,由于数据特征不明确,导致难以准确定位运动起始帧、结束帧及分割帧。本文提出了一种基于运动数据时空特征提取的运动分割方法。基于原始数据提取人体质心速度、加速度以及简化倒立摆的摆角,作为动态平衡时空特征加入运动数据中;提取步长、步高、步频、触地状态等步态参数,作为运动的周期性时空特征加入运动数据中,从而构造出具有时空特征的运动数据集。利用概率主成分分析方法分别基于原始运动数据进行运动分割,基于具有时空特征的运动数据集进行运动分割,对分割帧的查找结果进行查准率与查全率计算,结果表明,基于具有时空特征的运动数据进行运动分割,其所定位的分割帧具有更高的查准率与查全率。
分割完成后的运动片段经动作映射至机器人上,继而导出所需数据,可用于强化学习。因此下一步工作要着重于分割数据在强化学习上的应用。
基金项目
国家自然科学基金青年项目(62203278);山东省自然科学基金青年项目(ZR2024QF270);山东省青年科技人才托举工程(SDAST2024QTB015)。