人形机器人控制范式演进:从ZMP到强化学习再到世界模型

发布时间:2026/9/18 0:13:06
人形机器人控制范式演进:从ZMP到强化学习再到世界模型 写这篇文章的起因是我看到Science Robotics最近的一篇讨论人形机器人控制范式演进的论文。圈子里都在聊“第三次转向”说实话标题信息量很大从ZMP到强化学习再到世界模型。这条线索串起来的不只是算法迭代更是我们对“机器人到底该怎么学会走路”这个根本问题的认知变化。我自己做过几年双足机器人的控制ZMP时代的论文是一路读过来的后来又被强化学习的端到端结果惊艳过最近半年则开始认真看世界模型相关的思路。这篇文章想把这三个阶段背后的逻辑、实操中的经验和踩过的坑一次性讲清楚。什么样的读者适合看这篇正在做人形机器人、双足控制、足式机器人仿真的工程师想从传统控制切到学习方法的算法同学以及关注机器人行业技术路线的人。我会尽量少堆公式多讲“为什么这么选”和“实际跑起来会碰到什么”。1. 内容整体设计与思路拆解人形机器人控制这件事过去几十年有一条很清晰的暗线我们到底要不要相信一个精确的数学模型ZMP时代答案是“要”。当时的主流思想是人形机器人是一个刚性多体系统只要能算出质心、算出零力矩点就能规划出稳定的步态。这个思路统治了学术界和工业界很久经典程度不亚于自动驾驶里的“感知-规划-控制”三层架构。强化学习给了一个完全相反的答案不要。它不再试图显式建立机器人的动力学方程而是用大量试错、用奖赏函数把“稳定行走”这个目标压进一个神经网络里。训练的时候模型自己发现规律部署的时候一个网络端到端地输出关节力矩。这条路线之所以能兴起和仿真引擎的成熟密不可分也和大算力训练变得便宜有关。世界模型则处在中间同时又往前迈了一步。它不完全抛弃动力学方程而是试图让机器人自己在经验中学会一个“压缩版的物理世界”。在这个内部模型里机器人可以做“脑内模拟”先在想象中试一遍动作看看会不会倒再把试错的成本放到虚拟空间去消化。这个思路直接借鉴了神经科学里“预测性编码”的概念也让控制不再局限于“反应式”——它有了前摄性、有了想象。如果把这三种范式放到一张图里去看本质上是“对物理世界的建模方式”在变化。ZMP用解析公式建模强化学习用黑盒网络隐式建模世界模型则试图显式学一个可部署、可重演的物理预测器。三者并不是替代关系更像是螺旋上升世界模型其实又把“模型”请了回来只是这次模型不是人写的而是自己学出来的。1.1 第三次转向到底“转”在了哪里我理解的“第三次转向”转的是人在控制回路里的角色。ZMP时代人必须从第一性原理出发把机器人结构参数、质心位置、惯量、摩擦锥全部写进模型。整个过程像手工雕刻——慢、精细但难扩展。强化学习阶段人从“写模型”变成“写奖赏”降低了对动力学细节的要求但奖赏设计本身仍然是一项玄学谁调谁知道。到了世界模型阶段人的角色变成了“提供一个学习环境”和“定义想象空间的结构”。机器人不光学策略还学物理规律本身甚至可以预测未来几秒的状态。这个变化带来的直接结果是机器人开始具备“自知之明”它知道自己哪一步可能不稳然后提前修正。所以第三次转向是从“控制算法”转向“学习算法”再转向“学习物理规律”。这比单纯换一个控制架构要深得多。2. 核心细节解析三套体系的运作逻辑要真正理解这次转向不能只看名词和结果得把每套体系的底层逻辑拆开看。我按“建模-决策-执行”三个环节来分析。2.1 ZMP用质心和支撑多边形框定稳定ZMP零力矩点是经典双足控制整个框架的地基。它的物理直觉非常优美地面上总会存在一个点使机器人所有惯性力和重力的合力矩在该点为零。只要这个点落在支撑多边形内部脚底板就不会翻转机器人就“不会倒”。我在早期做仿真时按ZMP规划走路非常机械先规划COM轨迹再算ZMP然后让ZMP落在安全区域。这个方法在平地上很稳ASIMO当年就是靠这一套走出名堂的。但在复杂地形、受外力推搡、上下坡、走楼梯这类场景里ZMP模型的假设很快就撑不住了——它本质上是在“抑制动态不稳定性”而不是“利用动态不稳定性”。另一个问题是参数敏感。机器人腿上任何一个关节的间隙、传感器零点漂移都会让实际ZMP偏离规划值。这个时候你只能靠局部反馈去修比如用踝关节力矩去“追”ZMP误差。修不住就摔倒。这也是为什么那个年代的双足机器人动作看起来都“很机械”因为一切都在小心翼翼地维持一个平衡条件没有余量去自然摆动。2.2 强化学习用奖赏塑形动态行为强化学习跑起来之后我印象最深的一件事是它允许机器人“把跌倒也当作一种学习素材”。在ZMP框架里摔倒意味着控制失败在RL的框架里摔倒只是奖励值很低的样本算法想尽办法去避开它。这套系统里最核心的其实是两件事观测空间的设计和奖赏函数的设计。观测要不失真、包含关键状态关节角、角速度、机身IMU、足底力等奖赏要能引导出你想要的姿态和步态。常见做法是速度跟踪奖励、姿态稳定奖励、能量惩罚项。把所有项加起来再用权重调整。这一段是我的真实体验奖赏权重对最终步态风格的影响远超预期。权重稍微调偏走路姿势就变成蹩脚样重心给高了机器人腿伸不直速度项给太重步子会迈得特别碎。你把奖赏设计当成“隐性动力学约束”来对待调起来才有方向。RL控制器还有一个传统控制羡慕到流口水的优点天然容错。因为策略网络是在大量含噪声的状态里训练出来的所以部署时的传感器噪声、关节延迟反而变成了分布内的问题不太容易“没见过就崩”。这也是为什么后来很多团队能用低成本硬件跑出很惊艳的效果。2.3 世界模型让机器人先在脑中“预演”动作世界模型本身不是新概念早期叫“正向预测模型”“内部动力学模型”但最近随着Transformer和隐空间建模的发展它变成了可以落地的工程结构。核心思路上世界模型把环境状态转移函数学成一个可微分的神经网络然后让策略在这个模型里做交互。落地在人形控制上我能想到的实用场景是这样的机器人面前有两米外的一个台阶ZMP规划要重新解一个全局最优控制问题RL需要直接从这个状态拿出动作。但世界模型可以先在隐空间里“想象”五六种迈步方式各跑一遍看哪一种预测出来的姿态最稳然后只去执行那个相对最好的。规划和学习被统一到了一个框架里。这里有件非常关键的事世界模型学到的不是“机器人应该怎么走”而是“状态的演化规律”。它更像一匹马而不是骑手。策略仍然要做决策但决策过程建立在“对未来的预测”上而不是“对当前反馈的响应”上。这个从反应式到前摄式的转变才是这次转向最值得关注的实质。3. 实操过程与核心环节实现理论说得再多不能落地都是白谈。讲几个我实际操作过的环节以及每个环节里的核心注意点。这里我不区分“传统还是新潮”只说哪些步骤是所有做控制的人必须过的坎。3.1 仿真环境从零到能复现的三要素不管走哪条路线仿真环境永远是第一步。需要明确三件事物理引擎选择、采样频率、模型保真度。物理引擎我实际用下来常用的几种各有脾气带有Stiffness接触模型的引擎适合足底力稳定求解X引擎的并发和渲染友好度高但足底接触容易抖Y引擎关节约束稳定性好但要调的时间步长。一个经验值足式机器人仿真步长最好控制在小步长级否则那些高频接触振荡根本没机会被捕获。控制频率建议不低于500Hz哪怕策略网络部署时是50Hz输出仿真内部仍然要跑高频物理更新。模型保真度这块最容易踩坑。仿真里一把模型导出质量和惯量都是按SolidWorks算的。但实体关节的摩擦、齿轮间隙、电机力矩饱和曲线仿真里默认参数几乎都是理想值。我的习惯是把所有电机力矩上限设成实测值的85%把关节摩擦统一调到标称值的2倍再把足底摩擦系数做一次斜坡扫描测试。这种“悲观标定”能让后面整个管线少翻车。3.2 ZMP控制器的关键标定流程如果还在用ZMP路线我最想强调的就是“质心测量”这一步。很多ZMP控制器跑飞不是因为公式错而是机器人实际质心和模型质心差了那几厘米。早年在仿真里我直接把CAD模型质心拿到初始化里结果推倒一切重来后来学会了用静力台架测量把机器人放在力板上固定姿态记录每个脚的六维力反推出实际质心。另外一个关键标定是支撑多边形扩张系数。理论ZMP稳定区域就是脚底两点的凸包但真实应用中需要在边界内留安全裕度。这个裕度值跟地面摩擦系数、执行器带宽强相关。平地上可以设到8成草地或松软地质我建议直接把最大外接圆缩到六成。不要小看这块“保守”的标定它能让同一个控制器在仿真和实机上的表现差别变得可解释。所有人形机器人都应该在demo前完成这些动作不然再怎么调算法都是在沙滩上盖楼。3.3 训练强化学习策略时的工程细节进入RL训练最重要的是先跑通一个假的随机策略验证数据流和rewire数据管道。没跑通这个后面整个训练都会卡在奇奇怪怪的地方。训练时我建议环境接口统一用成“真实物理频率的异步封装”。什么意思训练里Env.step()的调用速度和实机控制周期解耦这样仿真引擎包括渲染计算慢一点也不会把控制频率拉低。这个看似很小的设计换来的是仿真吞吐的大幅提升。奖励函数阶段别贪多求全。先只给“速度跟踪姿态角限制力矩惩罚”三组项把“站起来走路”这个下限打出来。等策略稳定输出一个难看但能用步态后再逐步加上“足底滑移惩罚”“膝盖朝向自然约束”“能耗项”。一次加太多奖励项会让梯度的信号混合在一起你根本分不清是哪个条件让策略突然退化。还有一点策略的观测空间最好加入“上一时刻动作”这一项。这个看似“作弊”的信息能让策略学出平滑的控制信号避免电机在相邻控制周期里出现抖振输出。实测下来动作变化率的惩罚也能起到类似效果但直接把上一动作作为输入更简洁。3.4 世界模型训练与规划的结合方式世界模型的训练本质上是一个自监督任务给它一段状态-动作序列让它预测下一时刻状态。人形机器人牵涉几十个自由度直接把原始状态向量丢给网络预测误差会大得吓人。实用的处理方式是让模型预测状态的变化量delta state而不是绝对状态同时把机器人本体姿态统一用旋转矩阵或单位四元数表示避开欧拉角的连续性陷阱。预测损失的权重分配也要注意。机器人的平动和转动误差尺度差了好几个数量级如果统一用L2 loss转动这部分基本被淹没。我的做法是分别给平动与转动误差两个独立的损失头再单独调节各自的权重参数。实际操作下来这样能让模型在规划时同时保持位置和姿态的合理性。规划和策略结合时路径搜索这一步不要求像深度搜索一样穷举所有可能性而是用简单的随机采样展开每次从当前隐状态发散出N条动作序列用世界模型做一步推演在N条分支里保留Top-K个再重复迭代。这种方式不需要让策略网络做千万次搜索却能明显提升控制质量。这个模块的训练原理很像早期DeepMind的Dreamer——只是这里的输入输出都变成了关节空间和基座状态的组合而不是像素。对我来说这套系统最大的意义在于它把“规划余地”直接内化在了一个机器学习模型里让机器人真的可以做到“三思而后行”。4. 常见问题与排查技巧实录做控制系统最稀缺的能力是定位问题。这里把我在三种路线上遇到的典型问题整理成速查表按现象、可能原因、排查顺序来写。4.1 问题速查表现象可能原因优先排查项仿真里ZMP落在支撑多边形内但实机走路步子越来越乱质心模型偏差用静力台重新测量质心而不是信CAD数模RL训练中reward曲线不升反降奖励项权重失衡或观测噪声太大把所有奖励项单独画曲线观察哪个项的梯度方向矛盾Sim-to-Real之后步态明显变僵硬仿真摩擦参数与实机差异大用不同摩擦系数做一次仿真-实机对照实验世界模型预测误差爆炸旋转表示不连续导致loss不稳定四元数预测残差检查预测delta state强化学习策略在实机上高频抖动控制频率和策略频率不匹配检查是否缺少“上一动作”输入项或缺少动作平滑约束同一套控制器换场地后性能剧烈下降地面刚度和摩擦系数改变重新做地面参数估计或引入自适应摩擦基础估计这里最常见的坑其实是最后一个场地变了参数就要重新调。很多人默认部署环境是“理想平地”但影响人形机器人控制器鲁棒性的最大单一外部变量就是地面特性。我见过一个团队在防滑垫上demo的时候怎么走怎么稳一换到抛光大理石地面就开始打滑后来发现就是摩擦系数从0.9掉到了0.3左右。对这种变化靠世界里模型的预测能力去“提前减速”比靠即时反馈挽救要靠谱得多。4.2 训练稳定性问题奖励崩塌和梯度爆炸RL训练中reward崩塌是头号敌人。常见场景策略发现一个漏洞比如靠剧烈摆动上半身换取姿态奖励步态变得极其怪异但回报函数值却奇高。这个问题没有银弹我的经验是增加两个上下文观测项上半身姿态的差分项和关节加速度的历史均值。这能让策略网络明感受到“剧烈摆动”这个动作的特征被模型惩罚。梯度爆炸则多半出在世界模型的训练里。因为模型是多步自回归的训练时哪怕一步的预测误差很小在32步递归回放里也会累积成很大误差。做法有两种一是用随时间截断的BPTT比如只看16步二是训练时给每一步的隐状态注入高斯噪声让模型必须对误差有一定宽容度。后者在实测里效果更持久。4.3 计算资源与实时性问题一个绕不开的工程现实是算力。ZMP时代一个嵌入式MPC可能在十几毫秒内就能跑出下一步轨迹RL策略推理的时候用一个轻量MLP基本能跑1kHz以上延迟不是问题但世界模型如果用了扩散模型或者大尺寸Transformer推理延迟很可能变成瓶颈。我的建议是把世界模型当作“慢决策层”在低频5-20Hz做规划推演然后把输出的参考状态交给一个高频500-1000Hz的RL或全传统关节PD控制器去跟踪。这样既能发挥模型的预测想象力又不会因为推理太慢导致机器人失去平衡。简单说世界模型负责“想”下层策略负责“做”中间靠轨迹跟踪器连接。5. 对团队、行业和人形机器人落地的现实影响技术路线的转向最终会体现在团队的技能树和产品落地节奏上。这块聊得比较现实但我觉得比堆一两个demo更能说明趋势。5.1 团队构成的变化以前做人形机器人的核心团队控制组基本一半是做最优控制、一半是做机电调参的老师傅。但现在看国内外的头部团队算法组里占比最大的是强化学习与仿真工程背景控制理论背景的人反而变成少数。世界模型这条路如果继续发展下去模拟学习背景和构建大规模数据管线的工程师会更稀缺。这不代表传统控制专家没用了。恰恰相反如果世界模型的预测不够准最后兜底的那个锚点还是你得对动力学有足够深的理解——比如怎么给模型加物理约束。还有一种明显变化以前团队里仿真工程师地位不高就是“给控制组跑个数据”。现在仿真平台直接决定实验迭代速度和数据多样性世界模型训练更需要大规模分布内采样仿真岗的位置被放到了最核心处。所以如果还在犹豫要不要补仿真能力的团队建议尽早做这个布局。5.2 产品落地现状目前分化比较明显。做室内稳定工况的展厅讲解、工厂巡检ZMP加良好的机械设计和底层PD基本已经能应付核心是可靠性而不是花哨动作。做Dynamic walk、跑跳、受扰恢复的家用人形基本已经被RL方案主导几大头部机器人公司的演示视频里能看到明显的强化学习痕迹。而世界模型在真实产品上还处于实验室验证阶段最接近落地的方向是“复杂地形预判性行走”——先用视觉和触觉输入构建周围环境的隐状态再做步态规划。对创业团队来说我的建议是别被“第三次转向”吓到。转换坐标系不等于全面替换你完全可以在ZMP基础上加入一个RL辅助控制器去处理扰动或者让世界模型做一个离线路径预筛选。真正有价值的是把三套体系的优点按场景混合使用。6. 混合方案一条我现在更推荐的落地路线如果让我给一个“不太偏科”的实操方案我会这么设计整体控制架构这也是我最近在试的混合路线。底层沿用传统PD或Whole-Body Control负责把姿态控制里最基础的“关节力矩 - 实际运动”这层物理闭环搞定。它的带宽高、延迟低在任何一个学习方案中都相当于是“末梢神经”不能丢。中层改成强化学习策略目标是在不同地形、速度命令下生成合适的全身参考轨迹输出给底层跟踪器。RL在这里本质上是“经验丰富的步态生成器”。它不需要懂太多物理公式只需要知道“在这个状态下怎样的关节角度轨迹接下来不容易摔”。顶层用世界模型做“慢速大脑”。它接受周围环境的视觉特征、机器人自身状态以及任务目标在隐空间推演几条可能路径然后把“高风险路径不要走”这个信号作为约束塑形给RL层的奖励函数。其实这一步也可以不参与实时计算而是离线给每个场景预生成不同策略模式然后在线根据场景切换。这个三层的结构每个层级各司其职也能让团队在开发时单独迭代任一模块而不用推翻所有东西。当然这是我个人的偏好——如果你从零开始那么先做一个好的ZMP步态作为baseline再加上RL提升动态性能最后用世界模型做前瞻约束按这个顺序推进会比较稳妥。7. 一些想起什么写什么的个人经验最后不搞总结了只聊几条我自己的体会。世界模型这个名字被炒得有点热但它真正能落地的核心并不是“预测未来”而是“用学习到的物理规律去低成本试错”。换句话说你不需要真的让机器人摔一千次你只需要让它在模型里摔一千次然后避开那些坑。ZMP、强化学习、世界模型其实对应的是三种不同的工程世界观。ZMP重视原理推导强化学习重视行为涌现世界模型则更重视直觉与预测。做控制的这些年最深的感受不要对某一种方法论产生信仰式崇拜。你在仿真里再优雅的ZMP推导也可能被一个0.02mm的机械间隙击垮你再强壮的RL策略也可能被一个训练分布之外的地面摩擦变化击倒。我现在的习惯是所有新思路都先在仿真里跟ZMP baseline做一次对照实验看提升的是什么、牺牲的是什么再从任务需求倒推到底用哪套体系。这个领域真正的门槛其实不在读多少篇论文而在你有没有让机器人跌过足够多的跟头并且真心愿意把“为什么跌倒”这件事搞清楚。不管是ZMP年代还是世界模型时代这件事都不会变。