你有没有想过,为什么那些能模拟人体肌肉运动的AI模型,几乎都只会在平地上走路?
这不是一个小问题。过去几年,研究者们训练出了能驱动几百根虚拟肌肉的控制系统,让数字人能跑、能跳、能做出各种复杂动作。但只要给它们一个台阶,一个斜坡,或者一张椅子,大部分系统就会露馅。它们能模拟人类肌肉如何协同工作,却应付不了人类每天都要面对的楼梯、坡道和椅子。
这背后藏着一个被长期忽视的缺口。全世界的运动捕捉数据库里,记录了无数段人类行走、奔跑、转身的动作数据,但这些数据几乎从不包含对应的地形信息。你看到一个人在做下楼梯的动作,但数据库里没有告诉你楼梯在哪里、有多高、台阶间距是多少。没有地形数据,想让虚拟人学会在复杂地形上行走,就像给一个厨师一份只写了"炒"这个动作的菜谱,却不告诉他锅里有什么食材。
这篇来自EPFL(瑞士洛桑联邦理工学院)的论文,提出了一个叫TERRA的系统,试图把这个缺口补上。它要做的事情说起来简单:只看运动数据本身,就能反推出当时的地形是什么样子,然后把动作和虚拟人体精确对应起来,最后训练出一个能在各种地形上自主行走的肌肉驱动控制器。
这件事到底难在哪
先说说问题本身的复杂程度。
你可能觉得,既然运动捕捉数据记录了人体关节的位置,那地形信息不就能顺理成章地推出来吗?脚踩在哪里,那里应该就是地面。
这个想法听起来合理,但现实要复杂得多。人在走路时脚踝和脚趾的位置,距离真正的地面还有一段距离,这段距离因人而异,因姿势而异。更麻烦的是,人类的动作充满了噪声和模糊性:一个人站着不动,可能是因为踩在平地上,也可能是坐在椅子上,也可能正站在台阶边缘。仅凭几个关节点的轨迹,系统很难分辨这些情况。
骨骼模型*:论文中使用的是MyoFullBody模型,一个包含354根模拟人体肌肉的Hill型肌腱驱动器和83个关节的虚拟人体,用于在物理仿真环境中还原真实的肌肉收缩和关节运动。
再往下看,还有第二层难题:就算你成功推测出了地形,怎么把一段捕捉自真人演员的动作,准确地"套"到这个虚拟的、拥有几百根肌肉的骨骼模型上?这个过程叫做动作重定向,它远不止是把关节角度对齐这么简单。真人演员的身体比例和虚拟模型不一样,演员的脚踩在真实地面上接触得稳稳当当,但重定向之后,虚拟人的脚可能悬空、可能穿透地面、可能在原地打滑却看起来像在走路。这些错误在平地上已经让人头疼,一旦遇到楼梯和斜坡,问题会被放大好几倍,因为地形的每一个细微误差都可能让整段动作变得物理上不可能完成。
动作重定向*:把一段源自真人或动捕设备的动作数据,转换映射到另一个身体结构(比如虚拟骨骼模型或机器人)上的过程,需要同时保持动作的意图和物理上的合理性。
在TERRA出现之前,业内最接近的尝试是一个叫SceneBot的系统,它通过把恒定高度的地形补丁拼接起来重建场景,但这种方法比较粗糙,遇到斜坡这类连续变化的地形就力不从心。另一个叫TIP的系统只能生成局部的地形高度图,精细度有限。而像OmniRetarget这样做动作重定向的方法,虽然考虑了人体和场景之间的交互关系,但它默认你已经有了场景的三维几何模型,这恰恰是运动捕捉数据集里缺失的那一块。换句话说,已有的工具各自解决了拼图的一部分,但没有一个能把"没有地形信息的动作数据"和"精细的肌肉驱动控制"连起来。
从脚印猜地形:TERRA怎么反推出楼梯和斜坡
TERRA解决第一个难题的思路,是先给系统划定一个有限的选择范围,而不是让它天马行空地猜测任意形状的地形。
论文里设定了四种地形原型:独立的台阶或平台、连续倾斜的斜坡、楼梯、还有供人坐的椅子。系统不需要凭空重建一个完整的三维场景,只需要在这四种可能性里挑一个,并确定具体的尺寸参数。
这个设计思路其实很实际。想象你是一个侦探,只看到了几个脚印和一段走路的录像,要还原出犯罪现场的全部细节几乎不可能,但如果你只需要判断"这是平地、斜坡、楼梯还是椅子"这四个选项中的哪一个,再估算个大概尺寸,这件事就变得可操作多了。如果不事先限定这四种类型,系统就要在无穷多种地形形状里搜索,计算量会爆炸,而且更容易把噪声误判成真实地形特征。限定范围是用覆盖面换取了可靠性,这正是论文选择这条路的原因。
具体怎么判断地形呢?TERRA会先找到脚踝和脚趾关节里那些"静止不动"的时间段,这些时间段里脚大概率是踩在某个支撑面上的,这叫正向证据。同时,身体其他部分划过的空间轨迹会告诉系统"这些地方肯定是空的,不可能有地形",这叫负向证据,用来排除错误的可能性。
两类证据结合起来,才能把地形的大致轮廓框出来。
接下来是区分斜坡和台阶这种容易混淆的情况。论文设计了两个巧妙的判断依据:一个是脚踝和脚趾连线的倾斜角度,站在斜坡上和站在平地上,这个角度是不一样的;另一个是两次脚步之间,悬空那只脚抬起落下的轨迹形状,走斜坡的时候这条轨迹接近一条平滑的斜线,走台阶的时候则会有明显的提前抬高或延迟落下。
地形判定公式*:论文用一个对比误差的方式来决定脚更贴合"平地假设"还是"斜坡假设",如果两种假设的误差差距在2度以内(这对应大约7毫米的测量不确定性),就再用脚步抬落的轨迹形状来做二次判断。
这套组合拳打下来,效果相当扎实。论文的实验数据显示,TERRA在判断地形类型这件事上达到了99.9%的准确率,几乎是把斜坡和楼梯精确地分开了。更值得一提的是,论文做了一个对照实验:去掉脚踝方向和脚步轨迹这两个线索,只靠高度信息来判断,准确率立刻从99.9%掉到了73.5%。这个26个百分点的落差说明,单纯看"脚踩的地方有多高"是远远不够的,脚的姿态和运动方式才是区分地形类型的关键信号。
不仅分类准,重建出来的几何细节也相当精细。论文显示,在楼梯高度的还原上,误差能控制在几毫米到一厘米以内;斜坡角度的还原误差不到1度。对比两个基线方法,一个是简单地给四个接触点拟合一个平面,一个是基于体素网格的Voronoi方法,TERRA在几乎所有地形类别上都明显胜出。有一个细节很说明问题:那个简单拟合平面的方法在处理台阶时,误差大到490毫米,几乎完全失效,因为台阶本身就不是一个平面能描述的结构。
地形重建还经过了一轮"压力测试"。研究者往动作数据里加入了不同程度的噪声,模拟真实世界传感器的不精确,还故意删掉一部分支撑点的记录,模拟数据缺失的情况。结果显示,即便加入10毫米的随机噪声,整体准确率依然保持在97%以上;但如果删掉30%的支撑证据,某些地形类型(尤其是用来判断凳子高度的场景)的准确率会明显下滑,降到70%左右。这提示我们,TERRA对噪声比较稳健,但对数据完整性的依赖确实存在上限,这也是这类"从间接证据反推环境"方法共有的脆弱点。
把动作精确套进虚拟骨架:重定向的三重约束
地形重建出来之后,下一步就是把原始动作精确映射到MyoFullBody这个虚拟肌肉骨骼模型上。这一步听起来像是"把动作数据复制粘贴到新模型",但实际操作起来远比想象中精细。
TERRA的做法是在OmniRetarget提出的交互网格概念基础上,加入了更多针对肌肉骨骼模型的专属约束。
交互网格*:一种把人体关键点和周围场景采样点一起构建成三角网格结构的方法,通过保持网格内部点与点之间的相对关系,间接保证人体和环境之间原有的接触关系不被破坏。
单纯依靠交互网格还不够,因为它主要关注几何上的相对关系,却没有考虑到肌肉骨骼模型独有的物理限制。比如,人的膝关节不能反向弯曲,肌腱的拉伸长度有生理极限,左右两条腿不能相互穿插。TERRA额外加入了三类残差项:一类管关节角度是否符合解剖结构的方向性约束,一类管脚和地形之间的接触时机是否对齐,还有一类专门处理肌腱长度的连续性,避免某条肌腱在短时间内被拉伸到不合理的程度又突然弹回。
这里有个很直观的比喻。想象你给一个身材和你完全不同的朋友,传授一套太极拳的动作要领,你不能简单地说"把手抬到我这个高度",因为对方手臂的长度和你不一样,照搬绝对高度只会让动作变形。真正有效的传授方式,是告诉他"手要和肩同宽"、"膝盖不能超过脚尖"这类相对关系和身体力学上的约束。TERRA对虚拟肌肉骨骼模型做的正是这件事:不是死板地复制关节的绝对坐标,而是把运动中蕴含的那些物理规律和解剖限制,重新套用到一个身材比例完全不同的身体上。如果没有这些额外的约束,光靠几何对齐,虚拟人很容易出现脚穿透地板、两腿打结、肌腱长度忽长忽短这类违反人体力学的诡异动作。
整个重定向过程被建模成一个优化问题,用序列二次规划的方法逐帧求解。这里有个很实际的工程细节:当系统检测到某处已经发生了比较严重的穿透(比如脚已经陷进了台阶里),它不会试图一步到位地把这个错误纠正过来,而是设定了每次迭代最多修正10毫米的上限。
这个限制看似保守,实际上是出于稳定性的考虑。如果试图一次性把一个大幅度的穿透错误完全修正,很容易导致求解过程本身变得不稳定,甚至产生新的、更离谱的姿态畸变。一步步小幅修正,就像医生处理严重错位的关节,不会用力一下就把它掰回原位,而是分阶段逐步复位,这样才不会造成二次伤害。
从实验数据看,这套重定向方案的效果相当亮眼。论文把TERRA和三个重定向基线方法做了对比,包括GMR、OmniRetarget,以及MuscleMimic项目里用的MM-MoCap-Body方法。衡量标准包括肌腱连续性破坏的比例、碰撞穿透的比例、脚部打滑和悬空的比例,以及动作中原本应有的接触时机是否被保留下来。
结果显示,TERRA在所有五项物理违规指标上都是表现最好的,其中最夸张的提升是地形穿透率,从没有加入额外约束项时的33.45%,直接降到了0.16%。这意味着,在没有这些专属约束的情况下,差不多每三次动作里就有一次会出现穿透地形的离谱情况,而加上约束之后,这种错误基本消失了。接触时机的保留精度(用F1分数衡量)也从88.49%提升到了93.80%。
让一个控制器学会在四种地形上都不摔倒
有了干净的动作和地形配对数据,接下来就是训练真正的控制器了。
这一步用的是强化学习里经典的PPO算法。PPO*:近端策略优化算法,一种被广泛使用的强化学习训练方法,通过限制每次参数更新的幅度,让训练过程更稳定。
值得强调的是,TERRA训练的不是针对某一种地形的专用控制器,而是一个单一的策略,用9.4小时时长、来自五个不同数据源的动作数据统一训练出来,这个策略需要同时处理斜坡、楼梯、独立平台和椅子这四类完全不同的地形交互任务。这种"一个脑子应付所有情况"的设计思路,某种程度上更贴近真实人类的运动控制方式:我们从来不会为走楼梯单独训练一套肌肉记忆,再为坐椅子训练另一套,这些能力是融合在同一个神经控制系统里的。
控制器的输入包括关节位置和速度、躯干朝向、脚部触觉传感器信号,还有一张以骨盆为中心、11乘11网格的局部高度图,这张高度图相当于给虚拟人装上了一副能"感知脚下地形轮廓"的眼睛。
训练结果显示,TERRA重定向出来的动作数据,训练出的策略在完成率上超过了所有对照方法,达到87.59%。而且按地形类型细分,TERRA在平地、斜坡、独立平台和椅子这四类任务上的完成率都是最高的,唯独在楼梯这一项上,被一个叫TERRA+Voronoi的混合方案小幅超过(81.90%对85.01%)。有意思的是,这个混合方案虽然在楼梯任务上成功率更高,但整体轨迹精度不如完整版TERRA,这提示地形重建的精细程度和下游控制的稳定性之间,并不总是简单的正相关关系,而是存在一些微妙的权衡。
和真实肌电信号对比:虚拟肌肉像不像真人
TERRA还做了一件颇具野心的事:把训练出来的虚拟人肌肉活动信号,和真人在相同动作下记录的肌电信号(EMG)以及地面反作用力数据做对比。
肌电信号*:通过贴在皮肤表面的电极记录下来的肌肉收缩时产生的电活动信号,常用来研究人体在不同动作中各条肌肉的参与程度和时间节奏。
这个对比严格来说不是为了证明TERRA的虚拟肌肉和真人完全一致,论文自己也承认,在平地行走、下斜坡、下楼梯和坐站转换这几类动作里,虚拟策略和真人数据的波形既有相似之处,也存在明显的时间节奏和幅度上的偏差。但这种对比本身的价值在于,它第一次让研究者可以在相同的地形条件下,直接拿虚拟肌肉骨骼系统的输出去对照真实人体的生理数据,这为未来研究人类运动控制机制打开了一个新窗口。
一些有意思的局限和留白
论文在结尾提到了几个还没解决的问题,比如目前的地形都是静态不变的,没有处理移动平台或地形实时变化的场景;地形的几何原型也是预先设定好的四种,还不能在线地、动态地去推断全新的地形形状。
这些留白其实说明了一件事:TERRA解决的是"从没有场景信息的动作数据中,重建出一个可用的静态场景,并让肌肉控制器学会在上面行走"这个相对明确的问题,但距离真实世界里那种随时变化、充满不确定性的复杂地形,还有不少路要走。
Q&A
Q1:TERRA系统主要解决什么问题?
A:TERRA解决的是肌肉驱动的虚拟人体控制系统长期局限在平地行走的问题。它能仅从运动捕捉数据反推出对应的地形几何(比如楼梯、斜坡、平台、椅子),再把动作精确映射到虚拟肌肉骨骼模型上,最终训练出能在多种复杂地形上行走的统一控制器。
Q2:TERRA在地形识别上准确率有多高?
A:论文显示TERRA在区分斜坡、楼梯等地形类型上达到99.9%的准确率。如果去掉脚踝姿态和脚步轨迹这两个关键线索,准确率会明显下降到73.5%,说明这两个线索对判断地形类型至关重要。
Q3:TERRA和此前的SceneBot、OmniRetarget等方法有什么区别?
A:SceneBot用恒定高度补丁拼接地形,精细度有限;OmniRetarget做动作重定向时默认已有场景几何模型。TERRA的不同在于它能从纯动作数据反推出精细地形,并结合肌肉骨骼模型专属的解剖学和接触约束完成重定向,填补了两者之间的空白。







