🤖 全身控制与步态规划:ZMP → WBC → MPC → RL

人形机器人不是"40 个关节各自调好 PID"就能走路的。本页讲清步态规划、全身控制(WBC)、模型预测控制(MPC)与强化学习(RL)四条技术路线的原理、公式直觉与工程分工,适合已完成关节模组学习、想理解"躯干级算法"的读者。
步态规划 WBC 全身控制 MPC 模型预测控制 强化学习
🎯 本页学习目标
1. 能说出人形机器人运动控制的三大难点(欠驱动、多接触、动力学耦合),并解释为什么必须"全身"协同而非"单关节"
2. 能写出 ZMP 的判稳条件与捕获点(CP)公式,说出步态相位与离线/在线步态的区别
3. 能讲清 WBC 的"任务分层 + 逆动力学 + QP 求解"流程,以及它与"每关节独立 PID"的本质区别
4. 能解释 MPC 的"单刚体模型(SRBM)+ 滚动优化"思想,说出 MPC 与 WBC 的分工(MPC 给期望、WBC 给力矩)
5. 能对比"基于模型"与"强化学习"两条路线,知道宇树 H1、unitree_rl_gym 等代表性成果与开源项目
建议用时:约 60~90 分钟(建议配合 MuJoCo 动手练习)

2 人形机器人运动控制:为什么是"全身"问题

从"站得住"到"走得稳"

站立是一个静态/准静态问题:质心(CoM)的水平投影落在支撑多边形(两脚掌围成的凸包)内部,重力与地面反作用力大致共线,机器人就不倒。行走则完全不同——迈步时质心会周期性地"跑出"支撑多边形,机器人利用重力自然前倒,再用下一步的落点"接住"自己。也就是说,步行本质上是受控的不稳定:每一步都是一次"即将摔倒"被成功救回的过程。

全身动作(挥手、抓取、弯腰、转身)会让问题进一步复杂化:手臂挥动时,根据牛顿第三定律,手臂对躯干产生反作用力矩,躯干必须用髋关节、脊柱甚至对侧腿来平衡;弯腰时质心位置改变,支撑脚的受力重新分配。关节之间不是独立的,而是通过连杆动力学强耦合在一起。这就是为什么说人形机器人控制是一个"全身(whole-body)"问题,而不是 40 个独立关节 PID 的简单叠加。

三大难点

难点含义后果
① 欠驱动 (Underactuation) 人形机器人是"漂浮基座"系统:基座(躯干)的 6 个自由度(3 平动 + 3 转动)没有执行器直接驱动,只能通过足底与地面的接触力间接控制 不能像机械臂那样"跟踪关节轨迹就完事";质心与姿态是不稳定的内部动力学,必须靠接触力主动平衡
② 多接触与接触切换 行走中脚掌支撑→摆动→落地,支撑脚数量在 1~2 之间切换;接触是单边约束(只能推、不能拉),受摩擦锥限制,还可能打滑 系统在"单支撑/双支撑"之间切换,是混合系统;接触力未知,需要与关节力矩一起求解;接触点不准确模型就失效
③ 高维动力学耦合 全身 20~40+ 个自由度,质量分布随姿态大幅变化(腿部摆动会明显改变质心与惯量);方程强非线性、耦合项多 全模型实时求解代价高,必须做模型简化(后文 SRBM 就是为此而生);控制器要同时满足平衡、任务、约束
💡 一个直觉类比:骑独轮车。独轮车几乎没有"支撑多边形",平衡全靠身体重心的连续调整——它是典型的欠驱动不稳定系统。人形机器人本质上是一台"有两条腿的独轮车":脚掌只是很小的支撑面,稳定不是默认状态,而是控制器每秒上千次主动维持的结果。你之前做的关节模组(Hdrive)负责的是"执行",本页讨论的是"谁来决策、怎样决策"。

3 步态规划:让"倒"变成"走"

3.1 倒立摆模型与 ZMP(零力矩点)

线性倒立摆(LIPM, Linear Inverted Pendulum Model)是步态规划最经典、最重要的简化:把机器人看成一根"长度不变"的腿顶着一个质点(质心),质点高度恒定为 h,绕脚踝铰接点摆动。它的水平动力学极其简洁:

ẍ = (g / h) · x  (其中 x 为质心相对支撑点的水平偏移, g 为重力加速度)

注意这个方程右边没有负号——说明它天然是不稳定的(特征根 ±√(g/h),一个正根):质心一旦偏离支撑点,就会越偏越快。这正是"走路"的动力学本质:不是把摆"稳住",而是利用它的发散趋势,每一步提前"换一个支撑点"。

ZMP(零力矩点, Zero Moment Point)由 Vukobratović 于 1968 年提出,是步态判稳的核心概念:它是地面反作用力合力(含摩擦力)的作用点。直觉上可以这样理解——足底受到的压力分布可以等效为一个合力,这个合力在地面上的作用点就是 ZMP。判稳条件:只要 ZMP 落在支撑多边形内部(两脚时的凸包、单脚时的脚掌),机器人就不会绕支撑边缘翻转。ZMP 与质心的关系(水平方向)为:

p_ZMP = x_com − (h / g) · ẍ_com  (质心投影再减去惯性力修正)

静止时 ẍ=0,ZMP 就是质心投影;加速/减速时 ZMP 会"躲开"质心投影——这正是动态行走区别于静态行走的地方。ZMP 越靠近支撑区中心,稳定性裕度越大;越靠近边缘,一个扰动就可能让 ZMP 越界导致倾倒。

基于 ZMP 的经典规划是 Kajita 的预览控制(Preview Control):不只盯着当前时刻,而是把未来约 1.6 秒的 ZMP 参考轨迹"预览"进来,反解出一条平滑、可执行的质心轨迹。早期人形机器人(如本田 ASIMO)就是这类离线预览轨迹 + 在线反馈修正的代表。

3.2 捕获点(CP)与步态相位

捕获点(Capture Point, Pratt 等 2006)回答"被推了一下怎么办":地面上存在这样一点,只要把支撑点(落脚点)移到那里,机器人就能完全停下来(捕获自身动量)。对 LIPM 而言它有一个漂亮公式:

CP = ξ = x + ẋ / ω,  ω = √(g / h)

直觉:质心位置 x 加上"速度导致的偏移量 ẋ/ω"。静止时 CP = 质心投影;速度越大,CP 越靠前。CP 在 LIPM 中就是那个"发散分量"(数学上称 Divergent Component of Motion, DCM)——它不稳定、会发散,但正因为如此,它把复杂的平衡问题变成了简单的"跟踪 CP"问题。

于是抗扰动策略就变得很直观:被推一下后,先算出新的 CP——

步态相位(gait phase)指一个步态周期内的阶段划分:双腿支撑(起步、终止)→ 单腿支撑(另一腿摆动:抬脚→摆腿→落地缓冲)→ 再次双腿支撑。步行速度 = 步长 × 步频;要快跑就加大步长、提高步频、缩短甚至消除双支撑相。

数值算例:CP 计算与迈步决策(手推)

给定:质心高度 h = 0.8 m,当前质心 x = 0.02 m、速度 ẋ = 0.45 m/s(被向右推了一下);支撑脚踩在原点,单脚支撑区前向半径约 0.12 m(足长 ~0.24 m 的一半)。

第 1 步:算 LIPM 自然频率。ω = √(g/h) = √(9.81/0.8) = √12.26 ≈ 3.50 rad/s

第 2 步:算捕获点。CP = x + ẋ/ω = 0.02 + 0.45/3.50 = 0.02 + 0.129 ≈ 0.149 m

第 3 步:判断——CP 0.149 m 已超出支撑区半径 0.12 m 达 0.029 m,踝策略(靠脚踝力矩把 ZMP 挪到边缘)已无法把发散分量拉回来 → 触发迈步策略。不干预会多快倒?支撑点在原点时 CP 满足 ξ̇ = ω·ξ,即 ξ(t) = 0.149·e^(3.50t) 指数发散,约 0.20 s 后翻倍到 0.30 m(ln(0.30/0.149)/3.50 ≈ 0.20)——这就是"迈步决策窗口只有 ~0.2 s"的定量出处,也解释了为什么步态控制器要跑在 100~500 Hz 这一层。

第 4 步:选落点并复核新 CP。落点取 CP 投影略前方 0.16 m(比 CP 多迈 1 cm,留一点向前的调整预算)。落步瞬间 CP 不突变(它由质心位置和速度决定,不会因为脚落地就跳变),新支撑中心在 0.16 m,CP 相对新支撑中心的偏移 = 0.149 − 0.16 = −0.011 m,即 CP 落在新支撑中心后方 1.1 cm 处——回到 0.12 m 半径以内,稳定裕度从 −0.029 m 恢复到 0.12 − 0.011 = 0.109 m,机器人被"接住"。此后质心在 0.16 m 支撑点下做新的 LIPM 摆动,控制器继续监视 CP 等待下一步。

📌 自检:把数字换成你的电机参数重算一遍(提示:先按你的质心高度重算 ω = √(g/h),再代入实测的 x、ẋ 算 CP,最后对照你的足底尺寸判断该用踝策略还是迈步)。

3.3 离线步态 vs 在线调整

对比项离线步态(经典)在线调整(现代)
生成时机事先一次性算好整段轨迹运行中每周期重规划
对扰动无感知,靠底层反馈硬扛实时修正落脚点/步频/相位
对地形只适合平坦地面可结合感知适应台阶、斜坡
代表预览控制 + 轨迹跟随MPC 滚动优化、CP/DCM 反馈迈步
代价实现简单、实时性压力小需要实时求解器 + 状态估计
💡 记住这条主线:ZMP 回答"稳不稳"(判稳条件)→ CP/DCM 回答"往哪迈"(稳定分量)→ 预览控制/MPC 回答"接下来整条轨迹怎么走"(滚动规划)。三者层层递进,后面的 WBC/MPC 都建立在"先把稳定判据想清楚"的基础上。

3.x 交互实验:重心(CoM)与零力矩点(ZMP)

双足直立(正面视角):拖动"侧移摆幅"与"摆动频率",看 CoM(重心)ZMP(零力矩点)如何联动。核心关系(线性倒立摆 LIPM):

ZMP_{x} = CoM_{x} - rac{z_c}{g}\,\ddot{CoM}_{x}

摆得越快,惯性项越大,ZMP 摆幅超过 CoM;一旦 ZMP 跑出脚掌支撑范围(红色区域),机器人就倾覆——这正是步态规划要"压住 ZMP"的原因。

4 全身控制(WBC):一个 QP 算出所有关节力矩

核心思想:任务分层

WBC(Whole-Body Control)的基本思路是:不把每个关节当作独立的 PID 回路,而是把机器人当作一个整体,把"想让机器人做什么"表达成一系列任务(task)——质心加速度、身体姿态、手的位置、脚的落点、角动量……然后在一个统一的优化问题里,同时解出所有关节力矩和接触力。任务按优先级分层:

优先级任务层内容
最高接触与动力学约束支撑脚不滑动、不穿透地面、接触力落在摩擦锥内;动力学方程必须严格满足
平衡任务质心加速度、姿态角、角动量跟踪——保证不倒
末端任务摆动脚轨迹、手的位置/朝向、躯干高度等(用户真正想做的事)
零空间/正则项关节角速度最小化、避奇异、避免无效内部运动

分层实现的两种方式:硬优先级(严格分层,高优先级任务在低优先级任务的零空间中执行,即任务空间分层 WBC,Sentis & Khatib 经典框架)与软优先级(把所有任务加权放进一个 QP,权重越大越优先)。工程上常用软优先级,因为实现简单、数值稳定、可以通过权重连续调节"平衡 vs 任务"的取舍。

逆动力学 + QP 求解

WBC 的核心是全身逆动力学:已知期望的任务加速度,反解所需的关节力矩。刚体动力学方程:

M(q)·q̈ + C(q,q̇)·q̇ + G(q) = τ + Σ Jᵢᵀ·fᵢ

其中 M 为惯量矩阵,C 为科氏/离心项,G 为重力项,τ 为关节力矩,Jᵢᵀfᵢ 为第 i 个接触点的接触力(通过雅可比映射到关节空间)。注意 τfᵢ 都是未知数——所以 WBC 把"力矩"和"接触力"放在同一个优化里解,保证解出来的力矩真的能把脚"压"在地面上且不打滑。

于是每个控制周期(典型 500~1000Hz)求解一个二次规划(QP):

min Σ wᵢ · ‖任务误差ᵢ‖²   s.t.  动力学方程、f_z ≥ 0(只能推)、摩擦锥、τ_min ≤ τ ≤ τ_max

QP 是凸优化,有成熟的高速求解器(如 OSQP、qpOASES、HPIPM),在毫秒甚至亚毫秒级可解——这就是为什么 WBC 能跑到 1kHz 的实时率。解出的 τ 直接下发给关节,接触力 f 用于校核和状态估计。

与"每关节独立 PID"的区别

对比项每关节独立 PID全身控制 WBC
控制对象各关节角度/速度全身任务:质心、姿态、角动量、末端
耦合处理不建模,靠高增益硬扛(增益大了互相打架)统一动力学建模,显式解耦
接触力不显式考虑与力矩联合优化,保证接触可行
扰动响应被扰动后才反应(反馈)模型预测 + 任务重分配(前馈+反馈)
调参每个关节一组增益,几十个参数少量任务权重,物理意义明确
算力关节 MCU 即可需要躯干级高性能控制器(工控机/SoC)
💡 类比:独立 PID 像 40 个乐手各吹各的谱子,即使每个都"调得完美",合奏必然乱;WBC 像一位指挥,根据总谱(任务与约束)统一分配每个人的演奏。你的关节模组在全身系统里的角色是"乐手":忠实、快速、低延迟地执行指挥(躯干控制器)给的手指动作(力矩指令)。

5 模型预测控制(MPC):用简化模型"想三步,走一步"

为什么需要 MPC

步态是一个"规划 + 控制"耦合的问题:落点选在哪、步频多快、质心怎么走,本身就是决策。PID/单步反馈只能"事后反应",而 MPC(模型预测控制)让控制器"向前看":每一周期用一个模型预测未来 1~2 秒的系统演化,在当前时刻解出一个最优控制序列,只执行第一步,然后滚动重解。预测 + 滚动 = 既有前瞻性,又能持续用最新状态修正,天然对扰动和模型误差鲁棒。

单刚体模型(SRBM):把 40 个关节"折叠"成 1 块

全动力学模型(几十个自由度)做滚动优化太慢。工程界的经典妥协是 单刚体模型(Single Rigid Body Model, SRBM):把整个机器人看成一块具有质量 m、惯量 I 的刚体,几十个关节全被"折叠"掉,只保留质心的平动和本体姿态的转动,并假设"关节执行足够快、内部动量足够小、关节质量可忽略"。动力学只剩两条:

m·a_com = Σ fᵢ + m·g (质心平动:合外力 = 接触力之和 + 重力)
Ḣ = Σ (rᵢ − r_com) × fᵢ (角动量变化 = 接触力相对质心的力矩之和)

状态只有十几维(位置、姿态、线速度、角速度、接触状态),却抓住了人形平衡最本质的东西:接触力怎么分配。SRBM 最早在 MIT 四足(Cheetah)上大放异彩,后来被广泛移植到人形机器人(H1、Talos、Atlas 研究平台等)的步态 MPC 中。

滚动优化与鲁棒性

MPC 每周期(典型 30~100Hz)求解一个时域最优控制问题:状态 xk+1 = f(xk, uk),决策变量包括质心轨迹、身体姿态、未来每一步的落脚点和步态时序。解出来后只执行第一个控制量,下一周期用最新的状态估计重新求解。正因为落点本身是决策变量,MPC 具备"推一下自动迈一步"的能力——这就是它比固定步态规划鲁棒的根本原因。

层级典型频率模型输出运行位置
MPC 步态层30~100HzSRBM 简化模型期望质心/姿态/落点轨迹躯干控制器
WBC 全身层500~1000Hz全身动力学 + QP各关节期望力矩 τ躯干控制器
关节执行层1~10kHz单关节(电流/速度/位置环)逆变器 PWM关节 MCU(你的 Hdrive)
💡 一句话分工(本页最重要的结论):MPC 用简化模型决定"该往哪走",WBC 用全身模型决定"每个关节给多少力矩",关节环负责"把力矩做出来"。上层"想得粗但看得远",下层"想得细但看得近"——频率逐层升高,模型逐层变细,这是整个现代人形机器人控制栈的统一范式。

6 强化学习(RL)步态:让策略自己学走路

思路与流程

强化学习(RL)路线不手工建模、不手工调 PID:定义好奖励函数(速度、姿态、能耗、平滑性、不摔倒……),在仿真里让一个策略网络(通常是 PPO 训练的 MLP)通过试错学会"给每个关节多大的目标位置/力矩"。由于在真实机器人上试错太危险、太慢,工程核心是 sim-to-real:在大规模并行仿真(Isaac Gym / MuJoCo)里训练数千个并行环境,再用领域随机化(随机化质量、摩擦、延迟、噪声)让策略在真实世界也稳健。

与基于模型方法的对比

对比项基于模型(MPC / WBC)强化学习(RL)
动力学知识显式建模,可解释、可分析隐式从数据中学,黑盒
接触/复杂地形需要显式建模与调参,困难自动隐式学习,擅长复杂接触
开发成本动力学建模 + 求解器 + 调权重奖励设计 + 大规模并行仿真训练
运行时算力每周期解优化,算力高部署是神经网络前向,非常轻(50~100Hz)
可解释/安全性约束可审计,便于保证安全难审计,需大量域随机化与测试
当前主力场景实验室与高端平台(研究、验证)产业落地(宇树、Figure 等商业产品)

代表性结果(已核实)

⚠️ 冷静看待 RL:RL 步态不是"不需要动力学"——它只是把动力学"藏"进了仿真和网络权重里。sim-to-real 鸿沟(仿真与现实差异)是最大工程难点,领域随机化、策略蒸馏、真机安全边界缺一不可。而且 RL 策略是黑盒,出问题难定位,因此高端研究平台(如 MIT、IHMC)仍以 MPC/WBC 为主。两条路线都要学,本页就是帮你打好模型路线的底子。

7 实际工程:频率分层、状态估计与摔倒保护

控制频率:每一层都有自己的节奏

层级频率说明
任务规划 / 感知10~50Hz视觉、导航、任务决策,慢而粗
步态 / RL 策略50~100Hz落点、步频、质心目标(RL 前向推理)
MPC30~100Hz滚动优化,时域 1~2s
WBC500~1000Hz全身 QP 逆动力学
关节环(速度/位置)1~5kHz关节控制器(位置/力矩环)
电流环(FOC)10~40kHz电机电流闭环,由关节 MCU 承担

这个"金字塔"决定了通信总线的选型:WBC 每毫秒要给 30+ 个关节发一次力矩指令——这正是上一页(EtherCAT 125μs~1ms 周期、SPE 高带宽)存在的根本原因。你的 RS485 轮询架构在单关节调试时够用,一旦接入全身系统,总线延迟和抖动会直接成为上层算法的瓶颈。

状态估计:一切算法的"眼睛"

MPC 和 WBC 都需要"全身状态":浮动基座的位置/姿态/速度、各关节角、接触力。工程上这些都无法直接测到——用 IMU(角速度/加速度)+ 关节编码器 + 足底力传感器 做融合估计(扩展卡尔曼滤波 EKF、互补滤波、滑动窗口估计)。其中"浮动基座位姿"尤其难:没有固定参考系,全靠积分+观测校正。状态估计误差是全身控制工程的第一大坑——模型再准、QP 解得再快,状态估错 1 厘米、1 度,平衡任务都会失真。

为什么电流环要到 10~40kHz,而 WBC 只要 1kHz?
电流环闭环的是电机电感—电阻回路,时间常数在亚毫秒级,必须高频采样才能稳定控制电流(也是力矩的来源);而 WBC 控制的是"几十公斤的刚体运动",惯量大、动态慢,1kHz 已足够。频率要和被控对象的动态特性匹配,不是越高越好——高频层吃算力、吃总线带宽,能低则低。

摔倒保护:最后一层防线

再好的算法也会遇到极端扰动,所以量产人形机器人必须有完整的摔倒保护链条:

⚠️ 对关节模组设计者的提醒:摔倒时足底/关节会承受数倍体重甚至带冲击的过载,关节需要具备力矩限幅、过流保护、机械缓冲;同时"柔顺性"(阻抗/力矩环响应快)比"刚度"更能吸收落地冲击。你的 Hdrive 在全身系统里的验收标准,不只是"跟得上指令",还有"跟得上 + 摔不坏 + 抗得住冲击"。

8 代表开源项目:从哪下手读代码

项目出身/定位技术栈难度适合用途
OCS2
(github.com/leggedrobotics-usp/ocs2)
苏黎世联邦理工 RSL + 马普所,"Optimal Control for Switched Systems" C++/ROS2,MPC + HPIPM 求解器,切换系统(接触模式)最优控制 ★★★★ 高 研究人形/四足 MPC 步态、接触切换;四足 ANYmal 与多个人形示例
Crocoddyl
(github.com/loco-3d/crocoddyl)
法国 LAAS-CNRS,"接触-丰富轨迹优化" Python/C++,差分动态规划(DDP/FDDP) ★★★★ 高 全身运动规划、多接触动作(人形 Talos、四足 Solo);论文复现首选
Drake
(github.com/RobotLocomotion/drake)
MIT/CMU/丰田研究院联合,"基于模型的机器人设计验证" Python/MATLAB/C++,自带 ZMP 规划器与 Atlas 平衡/步行示例 ★★★ 中 学 ZMP 预览控制与全身控制的教科书级代码;文档最全、最友好
unitree_rl_gym
(github.com/unitreerobotics/unitree_rl_gym)
宇树官方,"RL 训练-仿真-真机部署"全家桶 Isaac Gym + MuJoCo,PPO/legged_gym 架构,支持 H1/G1/Go2 ★★★ 中 入门 RL sim-to-real 全流程;配真机教程,产业路线首选
OpenLoong-Dyn-Control
(github.com/loongOpen/OpenLoong-Dyn-Control)
国产开源人形机器人"青龙"的全身动力学控制软件包 Python/C++,全身动力学控制(动力学建模、控制与仿真) ★★★★ 高 国产全链路参考:从 URDF/动力学到全身控制
tosr_ts 社区盘点中与 OCS2/Crocoddyl 并列出现的人形控制 MPC 相关仓库(见参考来源的视频盘点) ★ 待核实 该名称在主流代码平台检索结果极少、公开资料不足,建议以官方仓库为准,谨慎参考
💡 读代码顺序建议:Drake(学 ZMP 预览控制,文档好)→ 再 OCS2(学 MPC 步态框架)→ 最后 Crocoddyl(学接触轨迹优化);想快速体验产业路线则直接跑 unitree_rl_gym 的 H1 例程。切忌一上来就啃全代码,先跑通示例、再改参数、最后读核心求解器。

9 入门路线:一步一步走到 WBC/MPC

1单腿倒立摆
先写一个 1D/2D LIPM 仿真:调 ω、看质心如何发散;实现 ZMP 判稳与 CP 公式,感受"不稳定动力学"
2MuJoCo 里让 H1 站住
用 mujoco_menagerie 的 H1 模型,先跑通状态估计(IMU+编码器),再调关节 PD 让它站住不倒
3简单步态
实现离线 ZMP 预览步态,先走平地;再加踝策略/迈步策略应对小扰动
4MPC 步态
跑通 OCS2 或参考 SRBM-MPC 实现:理解"滚动优化 + 落点决策"
5WBC 全身层
实现一个 QP 逆动力学(OSQP 即可),把 MPC 的期望轨迹转成关节力矩
6RL 与真机
用 unitree_rl_gym 训练 H1 步态,再理解 sim-to-real;回到你的关节模组做执行层联调
⚠️ 常见掉坑点:跳过第 1 步直接上 WBC/MPC,会被"为什么不稳"折磨很久;而只做仿真不碰真实关节,又会低估执行层延迟/带宽对上层算法的影响。建议每一层都在"仿真 + 你的 Hdrive 实物"两侧同时验证。

10 常见误区

❌ 误区 1:"把每个关节 PID 调好,机器人自然就会走路"
平衡是系统级问题,不是关节级问题。关节 PID 再好,也解决不了"质心该往哪去、接触力怎么分"——这正是 WBC/MPC 存在的意义。

❌ 误区 2:"ZMP 落在支撑多边形内就一定不会倒"
ZMP 判稳是必要条件,不是充分条件:动态行走中 ZMP 必须留出裕度;姿态角速度、角动量、模型误差都会让"理论稳定"变成"实际摔倒"。经典准静态判断不能外推到动态。

❌ 误区 3:"MPC 模型越复杂越好"
相反,SRBM 的成功恰恰在于"砍掉所有非本质自由度"。模型复杂 → 求解慢 → 频率低 → 反应慢。工程的核心是"用最简模型抓住本质(接触力分配)"。

❌ 误区 4:"有了 RL,动力学和 WBC 都没用了"
RL 把动力学藏进仿真与权重,但部署后一样要面对状态估计、延迟、安全边界;当前产业主流是混合架构,且 RL 策略仍常由 WBC/底层环来执行。两条腿走路。

❌ 误区 5:"关节越硬(增益越高)越稳"
高增益 = 低柔顺:落地冲击、足底打滑、结构共振都会被放大。人形关节需要"执行快 + 柔顺可调",这与你的关节模组设计(力矩环、阻抗)直接相关。

11 小结与思考

📌 本节小结:人形机器人控制是"全身"问题,源于欠驱动、多接触、动力学耦合三大难点;步态规划以 LIPM 为基础,ZMP 判稳、CP 决定落脚点,离线轨迹 + 在线调整构成完整框架;WBC 用"任务分层 + 逆动力学 QP"一揽子解出全部关节力矩;MPC 用 SRBM 简化模型滚动优化,给出期望轨迹;两者分工是"MPC 给期望、WBC 给力矩、关节环做执行";RL 步态以 sim-to-real 为核心,已由宇树 H1 等产品验证,并与模型方法走向融合;工程上频率分层、状态估计与摔倒保护是落地成败关键。
🤔 思考题: 1. 如果去掉 MPC 层,直接用 WBC 跟踪离线步态,被横向猛推一下会发生什么?为什么?(提示:落点不是决策变量)
2. SRBM 假设"关节质量可忽略、内部动量小"。如果机器人手臂快速挥舞重物,这个假设还成立吗?工程上如何补救?
3. 你的 Hdrive 关节模组要在全身系统中"合格",除了跟踪精度,还需要哪些指标?(提示:延迟、带宽、力矩环带宽、柔顺性、冲击耐受)

12 本节自测

1. 人形机器人被称为"欠驱动"系统,主要指?
💡 解析:欠驱动指"执行器数量少于自由度":基座没有电机直接驱动,质心与姿态只能通过足底接触力间接控制,这是人形机器人区别于机械臂的根本点。选 B。
2. 关于 ZMP(零力矩点)的判稳条件,下列说法正确的是?
💡 解析:A 正确。ZMP 是地面反作用力合力的作用点,必须落在支撑多边形内;B 错:加速/减速时 ZMP ≠ CoM 投影(差惯性力修正);C 错:越靠边缘裕度越小;D 错:CoM 投影判稳只是准静态近似,动态行走需考虑 ZMP 与裕度。选 A。
3. 在现代人形机器人控制栈中,MPC 与 WBC 的正确分工是?
💡 解析:C 正确,这是本页核心结论"MPC 给期望、WBC 给力矩"。A 说反了;B 错,两者模型与频率都不同;D 错,WBC 恰恰把接触力与力矩联合优化。选 C。
4. 机器人被横向猛推一下,若新的捕获点(CP)已超出当前支撑多边形,正确的应对是?
💡 解析:D 正确。CP 超出支撑区说明踝策略已失效(无法靠脚内发力接住),必须迈步把支撑点移到 CP 处。A 靠增益硬扛在强扰动下必倒;B 只适用于 CP 仍在支撑区内的情形。选 D。

13 参考来源