资讯详情

人形机器人通用全身跟踪技术解析:从算法框架到Sim2Real实战

📅 2026/10/12 8:31:15 | 华诺云谱 👁 阅读
人形机器人通用全身跟踪技术解析:从算法框架到Sim2Real实战
人形机器人这两年火到什么程度不用我多说。但真正在实验室里跑过项目、调过真机的人都知道热闹是媒体的活儿是自己的。而所有活儿里最绕不开的一块硬骨头就是 General Whole-Body Tracking——通用全身跟踪。简单讲它要解决的是这样一件事让机器人整个身体从头到脚从关节角到身体姿态从质心位置到脚底接触力都稳定、准确、有节律地跟随一段参考运动。别小看这句话它背后是一整套算法框架和训练范式的组合拳。这篇文章不是教科书也不是某产品的宣传稿而是我基于实际项目里反复试错、反复迭代的经验对全身跟踪的技术脉络做一次系统梳理。如果你正在搞人形机器人的运动控制、强化学习落地或者被 Sim2Real 迁移折磨得睡不着那这篇内容应该能帮你省掉不少弯路。1. 通用全身跟踪为什么说它是基本功里的硬骨头1.1 全身跟踪到底在“跟”什么很多人一听到全身跟踪第一反应就是“让机器人模仿人的动作”。方向没错但不够精确。工程上我们需要定义清楚跟踪的对象到底是什么。首先是关节空间上的跟踪。人形机器人一般有十几个到几十个自由度每个关节的角度、角速度曲线都要尽量贴合参考值。这个层面的跟踪误差最直观但也是最基本的要求。其次是任务空间上的跟踪。比如机器人身体的质心位置、骨盆的高度和朝向、手腕末端的三维坐标、脚掌的姿态这些东西才是真正决定一个动作“像不像样”的关键。第三个层面是力/力矩层面的跟踪。尤其是跑步、跳跃这些动态较大的动作脚底对地面的作用力分布必须和参考运动匹配否则机器人即使形态上看起来“跟上了”实际上早就失去了稳定性。这三个层面是叠加在一起的。关节角度跟上了身体姿态不一定会对身体姿态对了如果接触力不对机器人一样会倒。所以全身跟踪不是单独调某个关节而是在整个机身的所有自由度上同时协调。1.2 “General”里的通用性到底通用在哪里标题里的“General”不是随便加的修饰词它是整套算法框架的一个核心诉求也是最难兑现的部分。这里的通用性至少体现在三个维度上。第一个维度是运动模式的通用。一台人形机器人不能只会走路。它要能走、能跑、能跳、能站起来、能蹲下去、能搬东西、能上下楼梯。这些模式之间差距极大步态周期、动量转移、接触状态都完全不一样。只用一套固定的参考轨迹生成方法很难覆盖这么多模式。第二个维度是平台差异的通用。不同机器人的自由度配置、连杆长度、关节类型、重心布局都不一样。今天在 A 平台上训好的策略换到 B 平台往往就废了。真正的通用框架应该能在一定程度上适应这种平台差异而不是死扣着一组机械参数去工作。第三个维度是任务融合的通用。全身跟踪往往不是孤立存在的它需要和上层的导航、避障、操作动作同时运行。比如机器人一边走路一边伸手抓取物体这时候全身跟踪必须同时兼顾下肢的支撑步态和上肢的末端轨迹还要在两者发生冲突时合理分配优先级。通用性要求的是算法框架本身具备抽象能力和泛化能力而不是把每个场景都当作独立的 case 去硬编码。这也是为什么我们需要一套清晰的、分层的架构而不是一个端到端的黑盒。2. 算法框架全拆解从参考运动到关节扭矩的分层通路2.1 参考运动从哪里来表示与生成的几种路线全身跟踪算法的第一步是要有一条或者一组“参考运动”作为目标。这条参考运动的质量直接决定了后续控制的上限。参考运动的来源大体上可分为三类。第一类是动捕数据重定向。用动捕系统录真人动作再映射到机器人模型上。这个方案的好处是数据自然、丰富度高人类怎么动机器人就往那个方向靠。但问题也很明显人形机器人的自由度配置和人体骨骼结构有差异直接映射会产生关节角度不可达、质心偏移过大、脚部滑动等问题。所以重定向过程往往需要做运动学的后处理修正比如把骨盆的高度做平滑修正、把脚掌设定为不滑动约束。第二类是程序化生成或者叫基于模型的步态生成。典型的是基于线性倒立摆或者质心动力学的步态规划器。这一类方法生成的参考轨迹物理上比较干净适合行走、站立、下蹲这类准静态或周期性的动作。但它对复杂动态动作的覆盖能力有限也不太容易生成“像人”的自然动作。第三类是离线轨迹优化。把全身运动建模成一个动力学最优控制问题用直接配置法或者多重打靶法离线求解一段最优轨迹。这类方法的优点是能够充分考虑机器人的完整动力学生成的轨迹在物理上是可行的。缺点是计算量大、容易陷入局部最优而且一旦任务场景有变化就得重新优化一遍。我在实际项目中更倾向于混合使用先用动捕或者手工设计的方式做初步轨迹再用轨迹优化做一次物理可行性修正最后把修正后的轨迹作为参考输入给控制层。这样兼顾了动作的自然度和物理可行性。2.2 状态估计机器人怎么知道自己“现在在哪”跟踪的前提是“知道自己在哪”。全身状态估计在很多人眼里是个辅助模块但真机跑起来之后你会发现它经常是控制失败的源头。人形机器人一般配备的传感器包括每个关节的编码器、惯性测量单元IMU、脚底的六维力传感器、有时候还有视觉传感器。光靠编码器你只能知道关节相对角度但不知道躯干在全局坐标系下的姿态光靠 IMU你可以获得加速度和角速度但积分出来的位置会快速漂移。所以工程上几乎无例外地采用多传感器融合而最常见的融合手段是扩展卡尔曼滤波或它的变种。融合的思路大概是这样的用 IMU 的角速度积分 加速度来判断姿态的短期变化用关节编码器计算出的运动学结果来约束腿部末端相对身体的位姿再结合脚底力传感器来判断支撑腿处于“稳定接触”还是“摆动”状态。当一只脚踩稳地面时这个脚就可以当作临时的世界坐标系锚点从而大幅抑制漂移。这里有一个非常值得注意的工程细节IMU 数据千万不要直接用来数值积分位置。我在项目里见过不止一次因为 IMU 零偏没完全补偿导致机器人站起来后几秒内就“以为”自己在平移然后控制层拼命去纠正一个根本不存在的位移最后把系统搞到震荡。2.3 控制层怎么做QP、MPC 与学习型策略的取舍当参考运动准备好了当前状态也估计出来了接下来就要算“怎么用力”让机器人从当前状态往参考状态靠近。这一层是整个框架的核心战场。传统的做法是全身控制WBC典型实现是构建一个二次规划问题。目标函数里放着各种任务的跟踪误差——骨盆位置误差、朝向误差、重心位置误差、关节角度误差、上肢末端误差等等约束里则塞入动力学方程、关节力矩极限、关节位置极限、地面反作用力锥约束。求解这个 QP 问题得到关节加速度和接触力再通过逆动力学算出关节力矩。MPC模型预测控制的思路则是在 WBC 的基础上再叠加一个预测时域。它不是只看当前这一步而是把未来几秒内的运动都纳入优化窗口滚动求解一个最优控制序列。MPC 的优势在于它在时间维度上更“有远见”能够提前规避进入不稳定状态的风险。缺点是计算量大而且对动力学模型精度要求很高。学习型策略强化学习走的是另一条路不显式地求解 QP而是训练一个神经网络把当前状态映射成动作指令。端到端的方案听起来很美好但单靠一个网络去拟合“视觉/关节角到关节扭矩”的全过程在真机上往往很难保证安全性和稳定性。所以现在的主流实践是混合架构。我个人比较推荐的一种做法是上层用一个学习型策略去做自动化决策和参考运动的局部调整比如根据地形调整步幅和骨盆高度中下层仍然使用 WBC/QP 来完成精确的全身协调。这样既保留了学习策略的灵活性和适应性又借助 QP 保证了实时性和物理可行性。3. 训练范式强化学习与 Sim2Real 的完整落地路径3.1 仿真环境建模域随机化是迁移动物园里的必备栅栏如果走强化学习这条路线仿真环境的质量几乎决定了结果的上限。第一步是把机器人的模型做准质量、质心位置、转动惯量、关节阻尼、摩擦力、电机饱和特性这些参数都不能拍脑袋。模型参数越偏仿真里训出的策略就越可能在真机上“翻车”。但即便你把参数校得很准仿真和真实世界之间的差异仍然是不可消除的。这就是域随机化存在的原因。域随机化的核心想法是在训练的时候故意把仿真参数在合理范围内随机扰动让策略学会在一堆“不那么准”的模型里仍然能工作。这样当它走到真机上时哪怕真机参数和仿真存在偏差策略也不会突然崩溃。域随机化的维度至少包括物理参数质量比例、摩擦系数、质心偏移、传感器噪声IMU 零偏、编码器噪声、执行器延迟关节响应时延、扭矩饱和、以及外部扰动随机外力推扰。这些随机化的幅度需要根据真实环境的不确定度来设置——太小了没效果太大了策略会变得过于保守。另外一个容易被忽略的点是随机化初始状态。训练时如果总是从同一个初始姿势开始策略会记住这个特殊姿势泛化能力会很差。我常用的做法是让初始关节角在参考位置附近加随机偏置让初始质心速度也带有随机性逼着控制策略学会从偏离状态收敛回参考。3.2 奖励设计把“跟得准”变成可优化的数学信号在强化学习里策略优化的方向完全由奖励函数决定。为了让机器人学会全身跟踪奖励函数需要精确地表达“跟得好”这个抽象概念。最直接的是误差惩罚项关节角误差的平方、骨盆位置误差的平方、质心速度误差的平方、末端轨迹误差的平方。每一项都要乘一个权重。权重怎么设通常是从小到大逐步调试。如果某个项权重太高策略会只顾着压低那个误差其他地方面全乱了权重太低那一项又不被理会。所以奖励权重本质上是一个多目标平衡问题。除了误差项还要加正则项。动作平滑性正则惩罚相邻时刻动作的变化量、能耗正则惩罚大力矩输出、关节位置极限正则惩罚靠近机械极限的关节角。这些正则项是最容易被新手忽略的但少了它们训练出的策略往往动作抖动剧烈真机根本没法执行。我强烈推荐使用课程学习。一开始只跟踪一个非常简单的动作比如站立然后慢慢增加参考运动的幅度和速度最终过渡到跑跳这种高动态动作。课程学习能显著提高训练的稳定性和最终效果。具体做法是把课程的难度参数比如参考运动的速度倍率、扰动幅值作为观测的一部分输给策略网络让同一策略在训练过程中逐渐适应难度提升。3.3 Sim2Real 迁移训练完不等于能跑策略在仿真里拿到高分只能说明它在仿真世界里“会跟”了到真机上能不能复现是另一道大坎。仿真和真机之间的差距来源很多动力学模型不精确、执行器响应比仿真慢、传感器噪声比仿真大、机械结构存在柔性变形。这些差距不会因为你用了域随机化就自动消失只能尽量缩小。我验证一个策略是否适合真机迁移时会先做一轮“仿真内验证”把训练时的随机化全部打开额外施加持续性的外部扰动再观察策略能否保持跟踪稳定。如果这关都过不了真机基本不用想。如果过了接下来我会在仿真中人为引入逐渐增大的执行器延迟看策略在什么延迟尺度上开始失效。这一步可以提前预估真机的可容忍延迟边界。真机部署前的最后一道工序是控制器的“外部包装”。比如在关节命令上加一个限速器、限力矩器防止策略在极端情况下输出危险指令再加入一个安全看门狗一旦检测到机身姿态偏离安全范围立即切换到保护模式。4. 实战排坑实录仿真里稳稳的真机上一个接一个的翻车现场4.1 模型失配与传感器时延最常见的两个滑铁卢我在项目里最常遇到的翻车场景是仿真里同一套策略跑得稳如老狗真机上一上就抖或者迈出两三步之后就往一个方向歪掉。这类问题十有八九可以追溯到两个根源一个是模型失配另一个是传感器时延。模型失配的表现形态是系统性的偏差。比如真机手臂比仿真里重了那么一点点策略在举重物的时候就会多出力或者少出力导致末端跟踪误差有规律地增大。排查方法是分别关闭域随机化、单独在真机模型上重新仿真看误差是否仍然存在。传感器时延的形态则更“鬼魅”。机器人不是卡顿也不是发散而是动作整体慢半拍参考运动已经到第 3 步了它还在追第 2 步。排查时可以先在仿真里手动给所有观测加一个固定延迟如果策略性能显著下降基本就说明问题在时延。解决时延的思路有两类一类是调整训练在训练时故意把观测和动作的时间对齐关系打乱让策略对延迟变得鲁棒另一类是补偿延迟在前端对 IMU 做相位超前校正或者在状态估计里显式加入延迟模型。我个人的经验是两种都要做只做一种的效果都不够彻底。4.2 接触与碰撞问题脚底打滑、自碰撞、地面突变全身跟踪还经常会遇到和“地面”相关的问题。仿真里我们通常会默认地面是无限大、无限平整的平面但真机上的地面可能是软胶垫、是入口处有一点坡度的地面、甚至是贴了防滑漆的环氧树脂地坪。这些细节变化会导致脚底接触摩擦状态发生改变。摩擦系数和仿真设置不一致时最常见的现象是脚底打滑机器人明明在跟踪参考运动但脚下的位置却一点点往后漂。排查时除了检查摩擦参数还要留意脚底的接触面积设置。有的仿真引擎里接触模型是点接触而真机脚底是面接触两者在抗滑性能上的表现差异很大。自碰撞也值得单独说。人形机器人的手臂在行走时自然摆动很容易和躯干发生擦碰。仿真里如果忽略了自碰撞训练出来的步伐可能本身就伴随着手臂与大腿的摩擦。真机上跑起来后轻则磨破外壳重则卡住关节。我的建议是在仿真里一开始就开启自碰撞检测并在奖励函数里加一项自碰撞惩罚让策略主动避免这种恶心的动作。4.3 排障速查表真机全身跟踪问题快速定位指南现象第一怀疑对象快速排查方法解决方案思路机器人站起来就倒状态估计姿态发散检查 IMU 零偏、查看骨盆估计角度是否随静止漂移重新标定 IMU、修复滤波器参数迈步时整体向一侧偏编码器零点偏移对比关节基准位与参考位检查偏移是否随时间累积重新做编码器零点标定动作抖动/高频振颤执行器响应过快或奖励平滑项权重不足降低训练更新的控制频率观察仿真中加延迟后是否恶化加强动作平滑正则、控制器外部限速明显滞后于参考运动观测延迟过大在仿真中人为加延迟复现训练时随机化延迟、补偿估计脚底打滑/位置漂移摩擦参数失配检查真实地面材料、脚底材质的摩擦系数域随机化中加入摩擦系数或更换脚底材质手臂摆动碰身体自碰撞未开启查看仿真中碰撞设置开启自碰撞、奖励加惩罚项高频振荡停了又复发电压不稳/电流限制查看关节扭矩是否频繁到达饱和将饱和特性加入仿真降低力矩权重这张表是我一次次踩坑之后整理出来的不能说覆盖所有问题但基本能覆盖在全身跟踪调试中最常见的一半以上。遇到问题先按表里的方向排查比盲目调参要高效得多。5. 从框架到落地一点掏心窝子的总结这几年的项目做下来我的切身体会是通用全身跟踪真正难的不是某一个算法环节而是整套链条的一致性。控制端的 QP 再精巧如果状态估计发的“当前姿态”是错的一切白搭RL 策略训练得再炫如果仿真从一开始就少建模了一个关节摩擦迁移到真机照样翻车。任何一环掉链子最后都在真机上变成一次物理意义上的“摔跟头”。如果只能给大家三条经验我会这样说。第一先把状态估计做扎实。全身跟踪的第一性原理是“知道自己在哪”这步不稳后面所有算法都成了空转。第二奖励设计不要贪多求全。把最核心的跟踪误差项和最关键的正则项构建好比你堆砌二十项花哨的奖励函数要可靠得多。第三仿真和真机之间的差距要尽早面对。从项目第一天就把延迟、噪声、执行器饱和这些“不完美因素”塞进仿真里宁可让策略在训练时多受点罪也别让它在真机上用摔跟头来教你做事。全身跟踪这条线后面能扩展的方向还很多。比如结合视觉信息的扰动提前感知比如把参考运动生成也并入学习策略形成一个端到端的闭环比如让同一套框架同时支撑轮式、四足、人形多种形态的运动。这些方向都是建立在最基础的“能稳定跟好一套全身动作”之上的。基础打得越牢上层才能搭得越高。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑