恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
人形机器人全身跟踪算法框架与训练范式工程综述
首页
资讯中心
/
人形机器人全身跟踪算法框架与训练范式工程综述
人形机器人全身跟踪算法框架与训练范式工程综述
发布时间:2026/10/11 6:52:15
做机器人现场联调这些年我愈发体会到一件事凡是涉及人形机器人的“全身动作”光看单个关节的跟踪曲线根本说明不了问题。前两天调一台双足加双臂的人形机器人执行“弯腰取物后转身放置”的动作时腿部各关节的跟踪误差始终保持在1度以内看起来非常漂亮但机器人在弯腰到一半时突然重心前移脚底压力出现剧烈波动我下意识地按了急停。这个现象让我再次确认人形机器人真正难的不是“某个关节跟着目标跑”而是全身几十个自由度在动态平衡约束下如何协同。这也正是 General Whole-Body Tracking通用全身跟踪这个方向要回答的核心问题。这篇文章想以综述的形式把自己做全身跟踪算法框架与训练范式积累的研究和工程经验完整梳理一遍。我会从感知、状态估计、规划到控制的分层框架讲起对比基于模型、强化学习、模仿学习这几条训练路线的取舍逻辑再重点展开仿真到真机迁移时踩过的坑、评测指标的设定细节以及现场调试的实操心得。适合正在做人形机器人、足式机器人运动控制或具身智能方向的同学参考无论你刚入门还是已经跑过几版策略应该都能找到能直接用的东西。1. 全身跟踪到底在跟踪什么从“轨迹跟随”到“全身协调”1.1 单点跟踪思维的死角先说说为什么很多做机械臂出身的人一开始做不好人形机器人。机械臂的跟踪问题非常清晰给定末端位姿轨迹用逆运动学把关节角度算出来再用关节位置环去跟本质上就是把一个耦合的多维问题降维成若干独立的单关节跟踪问题。但人形机器人不能这么干。它的双腿本身要负责支撑和行走双臂动作会对质心产生反扰力矩腰部转动会改变上半身的惯量分布甚至头部的转动都会影响视觉稳定。如果只盯“某个关节要跟踪某个角度”稳定性就被完全忽略了动作稍微复杂一点就会摔倒。我理解的 Whole-Body Tracking跟踪对象不是某个末端点而是一个“全身状态向量”每个关节的角度和角速度、整体质心在三轴的位置和速度、身体姿态尤其骨盆姿态、脚底接触状态、甚至全身角动量。目标并不是让所有状态都严格等于参考值而是在满足动态平衡的前提下尽量逼近参考值。这里有个容易被忽略的语义差异——全身跟踪是“有约束的逼近”不是“无约束的跟随”。1.2 自由度爆炸与频率约束人形机器人常见的构型是双腿12个自由度、腰部3个、双臂14个、头部2个加起来接近31个加入灵巧手后会更多。这么多自由度每一条都受重力、接触力、摩擦力和耦合力影响又通过刚性骨架相互耦合。如果把这几十个自由度当成独立回路逐个去调几乎不可能收敛出一套协调动作。实时性要求进一步提高了难度。关节力矩环通常要跑到500Hz到1kHz也就是每1到2毫秒要产生一次全身关节指令规划层相对慢一些30到60Hz已经不错了。直接把全身耦合力计算全部放到控制器里在线求解大多数嵌入式平台的算力都撑不住。“高频控制动作”和“低频规划决策”之间的矛盾直接催生了分层架构。我以前踩过的坑恰恰是不分层把一个高维优化问题整体塞进规划器求解结果真机上单步求解时间超标整个控制循环被彻底打乱。一个比较贴切的类比是骑自行车。你捏刹车时手臂和身体会自然前倾如果双脚和核心不做补偿车就翻了。全身跟踪就是在“捏刹车、转向、避让”这些动作的同时让身体重心和脚底作用力始终落在安全包络里。难点恰恰在于这类补偿动作没法靠手工逐条编排它必须在算法里自动涌现出来。1.3 “General”的两层含义标题特意加了 General这是有理由的。这个词在全身跟踪里有两层内涵。第一层是跟踪目标形式的通用。参考动作可以来自光学动捕系统、惯性动捕服、VR手柄遥操作也可以来自上层大模型生成的运动序列框架应该在不改动主体结构的情况下兼容这些输入。第二层是运动能力的通用。同一个策略不应该只学会走路或者只学会跳舞而应该在一个技能库上共用运动表征。现在不少团队走的是“参考动作通用状态表征”的路线把不同来源的参考动作统一编码成关键点轨迹或关节目标用同一个网络在仿真里训练出能稳定跟踪全身动作的控制策略。这样换任务时不需要重新训练底层平衡控制器只要换参考动作源就行。我判断这是未来两三年内最可能落地的架构之一。2. 通用全身跟踪框架的分层拆解2.1 感知层参考动作从哪里来全身跟踪的第一步是把“要做什么动作”表达成机器人身体坐标系下的参考。常见感知输入有三类。第一类是视觉人体姿态估计。用RGB或RGB-D相机检测人体2D关键点再通过深度信息或多视角三角化恢复3D骨架。这套方案完全无侵入适合远程场景但精度受遮挡、衣着和环境光影响较大手臂交叉时关节容易漂。第二类是光学动捕系统。在人体贴反光标记点用多台高速相机做空间定位。动捕数据精度高是学术数据集的主流来源但需要固定场地、繁琐的标定流程标记点一旦遮挡轨迹会跳变。第三类是遥操作设备。操作员穿惯性动捕服或操控VR手柄实时生成身体参考位姿。这类数据风格和人的习惯高度相关必须做滤波和平滑否则机器人会被操作员的生理性抖动带着走。这里必须提一个极其关键、又容易被新手忽略的环节运动学重定向。人的骨骼长度、关节活动范围和机器人不一样直接把人体关节角度映射到机器人上要么顶到机械限位要么动作严重失真。我见过最简单的可行做法是分层映射先对齐骨盆位置和姿态再用数值优化把人体关键点的笛卡尔位置映射到机器人关节空间同时把关节限位和自碰撞约束放进去。重定向质量直接决定后续训练能多大程度复用参考动作我在项目里甚至为不同体型的人和不同场地维护了好几套重定向参数。2.2 状态估计层先搞清楚“我在哪”有了参考动作控制器还必须知道机器人当前的真实状态。人形机器人的本体状态估计比轮式平台复杂得多——轮式机器人能用轮速计简单推算位移人形机器人是间歇性接触的只有脚底落地时才有可靠的速度观测。常用做法是融合多源传感器关节编码器给出各关节角度IMU给出身体线加速度和角速度六维力传感器或脚底压力传感器判断接触状态再通过扩展卡尔曼滤波在身体模型框架下估计骨盆位置、速度和姿态。接触状态尤其值得单说。全身跟踪要稳定必须先知道哪只脚是支撑脚、脚底有没有打滑。用脚底六维力信号的上升沿下降沿结合关节速度一致性来判断接触是非常实用的小技巧。如果只靠IMU外推脚底打滑那几百毫秒里质心位置观测会快速漂移控制器会把假速度当成真速度去补偿反而加剧抖动。2.3 规划层把参考动作变成动态可行的轨迹规划层的输入是重定向后的参考动作输出是控制层可以执行的全身轨迹同时它必须照顾动态可行性和安全约束。动态可行性最关键是质心。经典判据是零力矩点ZMP必须落在支撑多边形内部更现代的做法是维持一个关于质心和角动量的动力学约束。规划层一般把参考动作的关节轨迹投影到满足这些约束的轨迹空间里投影过程本身就是一个实时优化。在线重规划也很重要。当机器人收到外部推力或者参考动作变化过快时规划层需要局部调整步幅或上身姿态来回收稳定性。现在不少端到端方案已经把调整过程吸收到策略网络内部不再显式规划ZMP轨迹。但即便在端到端方案里把目标质心或目标步幅作为额外网络输入本质上仍然是在做规划。我在观察一些强化学习策略的内部状态时发现它隐含地学会了“质心偏差大就往对应方向迈半步”的规则这和经典步态规划的结论高度一致。理解这一层对理解端到端策略的设计大有帮助。2.4 控制层全身控制的最后一公里控制层工作频率最高任务也最繁重。它接收规划层输出的轨迹参考直接面对物理世界里的摩擦、冲击和模型误差。主流实现是全身控制器在每一个控制周期求解一个带约束的最优化问题通常是二次规划QP。QP里包含几部分目标是让实际关节状态尽快靠近参考轨迹硬约束是关节力矩极限、关节位置极限、脚底摩擦锥和非穿透约束软目标里维持全身角动量在一个小范围内是权重特别高的一项。有些实现会把任务优先级写进权重比如“稳定性优先级永远高于跟踪姿态优先级”否则机器人会为了追手臂动作而牺牲平衡。我特别想强调控制层的鲁棒性设计不能只靠公式漂亮。实测里执行器的力矩带宽、关节静摩擦、减速器回差都会让理论控制器的性能明显打折。我们在真机上调试时通常在QP里加一个针对模型误差的鲁棒项比如对关节加速度做限幅防止控制量过大损坏齿轮。这些细节在仿真里完全看不出来一上真机就全部暴露。3. 主流的训练范式对比每种范式背后的“为什么”3.1 基于模型的最优控制严谨但脆弱基于模型的最优控制是较早实现全身跟踪的路线。核心思路是用系统动力学模型在每个控制周期在线求解轨迹优化问题。线性倒立摆模型是最简化的做法只关注质心适合行走全动力学模型考虑所有关节耦合力更精确但计算量很大。这类方法的好处是可解释性强、稳定性有理论保障、不依赖数据。但它有非常明显的瓶颈——对模型精度要求太高。人形机器人的全身动力学参数极难标定关节摩擦、齿轮回差、线缆弹簧效应这些非线性因素很难建模。模型一旦有偏差优化出来的轨迹再优雅也无法在真机落地。因此现在纯粹用基于模型方法做全身跟踪的团队越来越少更多是把它当作先验或参考生成器来使用。3.2 强化学习当前训练范式的主角深度强化学习是当前全身跟踪训练范式里毫无争议的主角。把全身跟踪定义为一个马尔可夫决策过程状态包括关节角度、关节角速度、身体姿态、参考动作片段动作是关节的目标角度或目标关节力矩奖励函数衡量跟踪质量、平衡稳定性和能耗。PPO是绝大多数团队的首选。核心原因在于它对超参数相对不敏感并且可以并行跑大量环境非常适合人形机器人这种需要大规模探索的问题。我们在项目里会在奖励函数中同时加入关节角度跟踪误差项、关节角速度跟踪误差项、质心位置误差项、全身角动量惩罚项、力矩变化率平滑性惩罚项。这五项权重不是一开始就定死的而是每跑完一轮训练就统计各项奖励的数值量级再做归一化调整。需要提醒的是强化学习训练“看起来美好”实际上坑非常多。最容易翻车的是奖励黑客策略找到了不合理捷径比如通过剧烈抖动上半身来稳定脚底压力读数而不是真正学习协调姿态。我们团队强制自己在训练过程中把策略可视化结果录下来逐帧回看这个习惯帮我们抓住了好几次奖励黑客问题。3.3 模仿学习与数据闭环模仿学习是全身跟踪的另一个重要训练范式尤其在参考动作来源于动捕数据的时候。行为克隆最为直接把参考动作历史和当前状态作为输入让网络输出动作用监督学习方式匹配专家数据。但它有一个老问题——分布偏移。训练时看到的都是专家状态测试时策略一旦把自己带出专家分布就丧失了恢复能力很快失控。现在主流做法是把模仿学习和强化学习结合先用动捕数据预训练一个初始策略再用强化学习在增强奖励的环境里微调同时用参考动作奖励项稳住任务方向。这样做的好处是大幅缩短冷启动探索时间同时保留了对各种干扰的鲁棒性。我们团队在某次搬运任务中把纯强化学习的收敛时间从大约一周缩短到一天半这个提升非常可观。3.4 混合范式当前最具落地价值的答案基于模型的方法、纯强化学习、模仿学习各自都有短板。基于模型的方法受限于模型精度纯强化学习受限于探索效率纯模仿学习受限于分布偏移。把基于模型的方法和强化学习结合是我目前最认可的方向。具体做法可以是用MPC在规划层生成参考质心轨迹和脚底力轨迹把这些轨迹作为额外观测喂给策略网络或者采用残差策略让策略在基础控制器的输出上学习一个修正量。混合范式的核心理念是用模型提供先验用数据修正残余误差既缓解了纯模型的精度瓶颈又减少了纯强化学习的探索负担。我在项目里目前的落地组合是“运动学重定向全身QP控制器RL策略作为参考生成器”。这套组合前前后后推翻过三版最终体会是全身跟踪没有银弹范式选择要匹配具体任务形态、团队算力和现场调试能力不能为了追新推倒原本可用的方案。训练范式数据需求算力需求泛化性真机落地难度基于模型最优控制低几乎不需要数据在线求解开销大受模型精度限制模型不准时高准确时低强化学习高数千万仿真步高需大规模并行较好可跨任务迁移中高迁移问题突出模仿学习中高需要专家数据较低较弱易分布偏移中数据质量决定上线率混合范式中偏重仿真与少量真实数据中高训练优化都有最好兼顾先验与自适应相对低是当前务实选择4. 从仿真到真机的迁移绕不开的几道坎4.1 模型差距到底差在哪仿真里策略跑得飞起、一上真机就原地摔是做全身跟踪最常见的劝退现场。差距主要来自三类执行器差异、传感器差异、接触差异。执行器差异最致命。仿真里电机可以瞬间输出几十牛米的力矩真机电机有电流限制、功率限制、温升限制还有明显的响应延迟。我们做过对比实验同一套策略在仿真里加不加执行器延迟成功率相差接近40个百分点。传感器差异是第二座山IMU噪声、零点漂移、安装位置偏置都会让状态估计失真。接触差异体现在脚底摩擦系数仿真里设的库仑摩擦系数往往和现场地面实际情况差很多大理石地砖和粗糙水泥地的差异根本不是同一套参数能覆盖的。4.2 系统辨识与域随机化的配合对执行器参数做系统辨识是迁移第一步。方法并不复杂给每个关节设计激励轨迹施加不同幅度的力矩记录实际速度和力矩响应拟合简化电机模型参数包括增益、阻尼、摩擦和延迟。把拟合参数放进仿真环境训练出来的策略才不至于过于理想。域随机化则是从数据侧兜底训练时随机化每个关节的PD增益、通信延迟、摩擦系数、负载质量、IMU噪声标准差等。这相当于让策略在“一批不太一样的机器人”上训练最后学到的策略对真机参数波动会变得鲁棒。但需要注意别随机过头否则策略过度保守动作软绵绵跟踪误差大幅上升。我通常把每个参数在合理范围边缘随机然后看策略在标称参数下是否明显恶化如果跟踪误差上升超过10%就缩小随机范围。4.3 把延迟建模进训练真机通信链路中控制指令从CPU出来经过总线、驱动器到执行器再通过编码器反馈回来通常有几毫秒到十几毫秒的随机延迟。仿真里如果没有这部分延迟策略会“过于自信”因为它每次观测都恰好落在动作之后。在训练环境中加入随机动作延迟和观测延迟是成本极低、效果极好的一个改进。小技巧是把延迟建模成随机采样而不是固定值这样策略会隐式学到对延迟的鲁棒。实测中加入5到15毫秒随机延迟训练出来的策略在真机上的跟踪误差比不加延迟训练的策略平均下降约15%。这个数据可以直接参考具体数值还是按实际通信链路来调整。4.4 上真机前的安全清单最后分享一份我们团队一直在用的真机迁移检查清单每一条都是用真金白银换回来的经验关节方向、极性和限位先在零力矩模式下手动拖动每个关节确认编码器正负方向与刹车表现符合预期。PD增益对照仿真和真机的力矩单位是否一致增益是否需要做量级缩放这一步让很多人栽过跟头。指令限幅控制指令先乘以安全系数再下发比如先限制到最大力矩的30%确认稳定后再逐步提高。参考动作渐进暴露不要把动作播放速度直接拉到100%从30%速度开始调每一步确认无异常再加速。紧急停车与悬吊保护真机调试时挂好承重绳急停逻辑必须独立于主控最好是硬件层继电器断电。5. 训练与评测的工程化细节5.1 数据管线和参考动作处理参考动作源越丰富数据管线就越重要。动捕数据本身很不干净有跳变的标记点、遮挡造成的空帧、操作员生理性抖动。清洗管线的第一步是滤波和平滑缺失帧用插值或前后向滤波补上第二步是时间对齐把不同来源的参考动作重采样到机器人控制频率。第三步还是重定向。但这里有个很少被提及的经验不只是离线重定向在线推理阶段也要对参考动作做快速重定向。为了训练和部署完全一致我会把重定向函数做成同一份算法逻辑的Python版本和C版本避免两个实现之间的数值差异被放大到训练过程里。这个问题藏得很深一旦发生会让人误以为是策略问题实际上浪费大量时间。5.2 奖励函数设计的三层误区奖励设计是全身跟踪强化学习里最玄学、也最影响结果的部分。我梳理了三层最常见误区按严重程度排序。第一层只有关节角度误差没有角速度误差。只看角度不看速度策略容易出现“追到位但是速度上硬闯”的情况动作不够平滑对机械结构冲击也大。应该在奖励里同时加入角速度误差项让策略学习平滑到达。第二层只惩罚质心偏移不惩罚角动量。全身跟踪的核心是动态平衡角动量是衡量全身姿态稳定的良好指标。加入全身角动量惩罚项尤其是用支撑脚到质心的相对角动量能明显减少弯腰动作时上半身过度摆动。第三层权重调整靠玄学。我见过不少团队在奖励权重上调一整晚没效果。正确做法是先对各奖励项做量级统计把每一项归一化到相近尺度再用权重去表达重要性优先级而不是让它弥补量级差异。把这一件事想明白调参效率能提升一大截。5.3 评测指标要能回答三个问题评测指标的设计必须回答三个问题跟踪得准不准、保持得稳不稳、能耗顶不顶得住。跟踪准确度方面常用关节角度平均绝对误差、末端位置误差、骨盆位姿误差。我还会额外看一个指标参考动作速度与实际动作速度的相关系数。这个指标比角度误差更早地反映“跟踪是否跟得上”在策略退化早期非常敏感。稳定性方面常用质心投影到支撑多边形的距离余量、角动量标准差、受扰恢复时间。恢复时间要统一口径施加标准脉冲力后机器人回到目标姿态偏差阈值以内所需的时间。这个定义不统一对比实验就没有意义。经济性方面整机能耗、关节力矩变化平均功率、关节电机峰值电流都要统计。对产品化项目来说这个维度尤其重要。全身协调动作如果特别耗能连续作业时长会大受影响运营成本直接上升。5.4 可视化与调试工具组合训练过程的可视化不能只盯着曲线。我们的做法是定期自动保存一批“场景视频策略内部状态叠加”的渲染文件把参考动作、实际动作、质心、脚底受力热力图放在同一画面里。这个习惯非常有价值因为很多问题从曲线里看不出来但动画里一眼就能看到比如脚底打滑时的微小抖动、手臂轨迹与身体在空间里的干涉。另一个容易被低估的工具是奖励分项曲线。PPO训练日志里总奖励一直在涨看起来很舒服但只有把每个奖励项单拎出来才能发现某些项在收敛后是否被其他项压过或者是否出现周期性尖刺。对着分项曲线调权重比对着总曲线盲调高效得多。6. 落地场景与现场调试的个人体会6.1 场景一遥操作全身跟踪遥操作是人形机器人全身跟踪最典型的落地场景。操作员穿戴惯性动捕服做出弯腰、伸手、转身等动作机器人实时复现躯干和手臂动作同时双腿自动保持平衡。这里有两个核心难点一是操作员动作与机器人运动学之间的映射要自然二是在通信延迟下机器人不能跟着操作信号的抖动一起抖。我们的做法是把操作员的上半身动作当作参考下半身交给底层策略自主决策。这样既保留人类意图中“用手臂完成任务”的语义又不必把人类迈步习惯强加给机器人。实测下来操作员的培训时间从原来需要几天缩减到短短几小时。这个差异非常直观。6.2 场景二巡检任务中的全身避障巡检场景里人形机器人需要弯腰钻过管道、侧身通过狭窄通道、低头查看仪表。传统做法是机械臂和腿部分开规划结果在全身避障时机械臂规划的路径和腿部撑开空间经常互相冲突。全身跟踪框架的优势在于把机械臂末端目标、腿部支撑状态和身体姿态放进同一个优化问题里。机器人可以在保持平衡的前提下主动收缩一条腿的步幅给机械臂的操作空间腾位置。这类全身协调能力用分开规划的方式几乎不可能实现也是我认为全身跟踪最不可替代的价值所在。6.3 现场调试的三个心得第一调试节奏从静态到动态。先在机器人完全不移动的情况下验证全身姿态跟踪再逐步加入小幅躯干运动最后才做全身运动加步态切换。每一级都要稳定跑50次以上再进入下一级。第二日志比眼睛可靠得多。真机上一个动作在做坏前的几百毫秒实际上已经出现了质心偏移率异常增大、脚底部分区域压力剧降等特征。把这些指标做成阈值报警比靠人盯着动作及时得多。阈值报警最好做成可配置的因为不同构型机器人的正常指标范围差异很大。第三现场问题定位要能切层。出了诡异问题先判断是感知层、状态估计层、规划层还是控制层的问题再决定要不要重训策略。如果运动学重定向丢掉了参考动作的关键特征策略训练得再好也无济于事。最后再分享一个在我们项目里反复验证过的小技巧在奖励函数里加入“足底合力平滑度惩罚”。具体做法是把左右脚各自的三轴力合成一个标量再对这个标量的时间差分做惩罚。这个项成本很低但它能把策略学到的高水平平衡动作稳定下来显著减少脚底压力突变造成的微小滑动。很多策略在仿真里看着平衡感很好一上真机就输在脚底细微打滑上这个惩罚项对抑制打滑效果明显推荐你试一次。写到这里我最大的感慨是全身跟踪这个方向听起来很高大上实际推进的过程中每一步都在和工程细节博弈。框架图画得再漂亮也不如一次真机实验暴露出的问题来得真实。希望你读完这篇综述后能在自己的机器人和仿真环境里复现出属于自己的版本。如果你在运动学重定向、奖励权重调整或迁移检查清单上有不同经验欢迎在实际跑过之后回来交流。