引言
足式机器人与轮式机器人最根本的区别在于「接触是离散的、欠驱动的、可选择的」。轮式机器人永远有确定的支撑,而足式机器人每一步都要决定「脚落在哪、什么时候落、落下去之后如何保持平衡」。这个「接触序列」的规划与执行构成了足式控制的核心难题。
工程上的第一个难点是欠驱动。足式机器人的执行器数量少于自由度(浮动基座有 6 个未驱动的自由度),无法像机械臂那样直接指定所有关节轨迹。控制必须通过「支撑腿与地面的接触力」间接影响躯干,这要求控制器同时处理接触约束与动力学。
第二个难点是接触的不连续。走路时支撑脚会切换,接触状态在「有接触」与「无接触」之间跳变,动力学方程在切换点突变。控制器必须在切换瞬间保持稳定,而切换的时机本身也是决策变量。
第三个难点是状态估计。足式机器人的躯干会大幅晃动,IMU 的加速度含大量运动分量,需要从含噪的 IMU、关节编码器、足端接触中估计出准确的躯干位姿与速度。第三个难点是仿真到真机的差距:腿式系统的接触模型复杂,仿真里的完美接触在真机上有柔性、有打滑、有延迟。本文按「平衡判据 → 步态规划 → 全身控制 → 状态估计 → 落脚点 → 学习步态 → 恢复 → 迁移」的顺序展开,通用动力学与控制基础见机器人动力学与控制基础 。
目录
- 足式控制的层次结构
- 平衡判据:ZMP 与支撑多边形
- 捕获点与线性倒立摆
- 步态生成:启发式与优化
- 凸 MPC 与全身动力学 MPC
- 全身控制 WBC 与任务优先级
- 状态估计与接触检测
- 落脚点规划与地形适应
- 强化学习步态概览
- 平衡恢复与摔倒保护
- 执行器、力控关节与硬件
- 仿真到真机的迁移与调参
1. 足式控制的层次结构
足式控制通常组织成三层,自上而下时间尺度递减、频率递增。
三层结构:
1. 任务与步态层(~1~10 Hz)
决定走还是停、往哪走、用什么步态(行走/小跑/跳跃)
输入:导航目标、地形、操作员指令
输出:期望速度、步态时序、落脚点序列
2. 全身控制层 WBC / MPC(~50~500 Hz)
在动力学与接触约束下求解关节力矩与接触力
输入:期望躯干轨迹、足端轨迹、接触状态
输出:关节力矩指令、期望接触力
3. 关节伺服层(~1~4 kHz)
关节级的位置/速度/力矩闭环
输入:关节力矩/位置指令
输出:电机电流
分层的意义是「解耦」:任务层不需要懂动力学,关节层不需要懂平衡。中间层(WBC/MPC)是足式控制的智力核心,它把「保持平衡」翻译成具体的关节力矩。这一层的时间尺度选择很关键:太快(1 kHz)算力不够,太慢(20 Hz)跟不上接触切换,通常取 100~500 Hz。
2. 平衡判据:ZMP 与支撑多边形
ZMP(零矩点)是足式机器人最经典的平衡判据,用于判断机器人是否会绕脚边翻倒。
ZMP(Zero Moment Point)定义:
地面上使机器人所受重力和惯性力的合力矩水平分量为零的点
若 ZMP 落在支撑多边形(支撑脚构成的凸多边形)内,机器人不翻倒
支撑多边形:
单脚支撑:一只脚与地面的接触面
双脚支撑:两只脚的接触面 + 两脚之间的凸包
判据:ZMP 越靠近支撑多边形中心越稳,越靠近边缘越危险
简化计算(忽略角动量变化):
ZMP_x = (Σ m_i (ẍ_i + g) x_i - Σ m_i ẍ_i z_i) / (Σ m_i (ẍ_i + g))
常用质心近似:ZMP ≈ 质心在地面的投影 - (z_c/g) · 质心水平加速度
ZMP 判据的局限很重要:它假设机器人不离开地面,因此不能判断「会不会离地飞出去」,对跑步、跳跃、快速行走这些有腾空相的运动无效。此外 ZMP 是准静态判据,对高动态运动(如双足跑)过于保守。这也是为什么现代足式控制更多用「捕获点」与「角动量」而不是纯 ZMP。
3. 捕获点与线性倒立摆
捕获点是比 ZMP 更现代、更适用于动态运动的判据,它的核心问题是「给定当前状态,脚要落在哪才能停住」。
线性倒立摆(LIPM)模型:
假设质心高度恒定,腿部无质量,接触力可任意分配
ẍ = ω² (x - p),其中 ω = √(g/z_c),p 为 ZMP
这是一组解耦的线性微分方程,有解析解
捕获点(Capture Point, CP):
ξ = x + ẋ / ω
含义:若把脚落在 ξ 处并保持,机器人最终会停下
推广为发散分量(DCM):ξ = x + ẋ/ω,是 LIPM 的「不稳定模态」
N 步捕获点(N-step CP):
若当前 CP 在支撑多边形外,需要走 N 步才能停下
每步的落脚点是下一步的 CP,形成落脚点序列
LIPM 的价值与局限:
价值:解析解、计算便宜、能在线求解落脚点,是 MPC 的常用模型
局限:假设质心高度恒定、忽略角动量、忽略腿部动力学
适用:平地行走、中等速度;不适用:剧烈运动、复杂地形
捕获点给出了「该往哪迈脚」的直觉,是落脚点规划的理论基础。工程上的用法是:实时计算当前 CP,若它在支撑多边形内则安全,若在外则规划落脚点序列把它「收」回支撑区。CP 超过支撑多边形边缘意味着即将翻倒,这是触发恢复行为的信号。
4. 步态生成:启发式与优化
步态生成决定「脚什么时候抬、抬多高、往哪落」,有启发式与优化两大类。
常见步态(按支撑相数量):
行走(Walk):任意时刻至少三脚着地,始终静态稳定
小跑(Trot):对角腿同步,两脚着地,动态稳定,最常用
踱步(Pace):同侧腿同步
奔跑(Bound):前后腿同步
疾驰(Gallop):非对称,最快
跳跃(Jump):四脚同时离地,有腾空相
启发式步态生成(早期/简单场景):
用正弦曲线或样条指定足端轨迹(贝塞尔曲线最常见)
用固定的时序切换支撑相
优点:简单、可预测;缺点:不适应地形、速度受限
代表:MIT Cheetah 早期、多数四足的基础步态
足端轨迹参数化(摆动相):
用三次或五次贝塞尔曲线连接起点与落脚点
抬脚高度:典型 0.05~0.15 m(地形越复杂越高)
摆动时间:典型 0.2~0.4 s(速度越快越短)
落地速度:垂直落地速度不能为零(否则「踩空感」),典型 0.1~0.3 m/s
贝塞尔控制点决定轨迹形状,可调「抬脚快、落地慢」的非对称性
落地速度是容易被忽视的细节。垂直落地速度设为零会让足端「悬停」然后突然接触,接触力冲击大;设一个小的正向落地速度能让接触更自然,减少冲击。这个值是调出来的经验参数,通常在 0.1~0.3 m/s。
5. 凸 MPC 与全身动力学 MPC
模型预测控制(MPC)是现代足式步态生成的主流,它把落脚点、接触力、躯干轨迹统一在一个优化问题里。
凸 MPC(基于 LIPM 的简化模型):
状态:质心位置与速度(水平面),或加上 DCM
控制:ZMP 位置、落脚点
约束:ZMP 在支撑多边形内、步长/步时上限
目标:跟踪期望速度 + 最小化控制量 + 平滑
优点:凸问题,求解快(毫秒级),可在 100+ Hz 在线求解
代表:MIT Cheetah 3 的凸 MPC、多数四足商业产品
全身动力学 MPC(完整模型):
状态:浮动基座位姿 + 关节角 + 速度(约 36 维,四足)
控制:关节力矩 + 接触力
约束:完整动力学、摩擦锥、接触力上限
目标:跟踪 + 能耗 + 平滑
优点:精度高、能利用角动量;缺点:非凸、求解慢(几十毫秒到秒)
代表:MIT Cheetah 的 kino-dynamic MPC、ANYmal 的 NMPC
MPC 的关键参数:
预测时域:0.5~1.5 s(覆盖 2~5 步)
控制步长:0.02~0.05 s
求解频率:凸 MPC 100~500 Hz,NMPC 20~100 Hz
热启动:用上一步的解初始化,能大幅加速求解
摩擦锥约束:μ·f_z ≥ √(f_x² + f_y²),μ 取 0.5~0.8
凸 MPC 与全身 MPC 的分工是「快与准」。凸 MPC 用简化模型换取高频求解,适合平坦地形的快速行走;全身 MPC 用完整模型换取精度,适合复杂地形与动态动作。工业产品常组合使用:凸 MPC 做步态与落脚点,WBC 做关节级力矩分配。
6. 全身控制 WBC 与任务优先级
全身控制(Whole-Body Control)在满足动力学与接触约束的前提下,把多个控制目标按优先级分配给关节力矩。
WBC 的问题形式(分层 QP):
最小化:Σ w_i ||J_i q̈ + J̇_i q̇ - a_i^des||² (各任务的跟踪误差)
约束:
动力学方程:M q̈ + C q̇ + g = S^T τ + Σ J_ci^T f_i
接触约束:J_ci q̈ + J̇_ci q̇ = 0(支撑脚不滑动)
摩擦锥:μ f_z ≥ √(f_x² + f_y²)
力矩上限:τ_min ≤ τ ≤ τ_max
分层(Hierarchical QP):
高优先级任务(如保持平衡)的解空间内,再优化低优先级任务(如跟踪速度)
典型优先级:接触约束 > 躯干姿态 > 速度跟踪 > 手臂动作 > 能耗
// WBC 的求解骨架(伪码,实际用 qpOASES / OSQP / Goldfarb)
// 决策变量:q̈(关节加速度)+ f(接触力)
// 第一层:硬约束下的最优,保证平衡
solve_qp(H1, g1, A_eq, b_eq, A_ineq, b_ineq, x0);
// 第二层:在第一层的零空间内优化次级任务
solve_qp_in_nullspace(H2, g2, x_opt_layer1, ...);
// 最终输出:关节力矩 τ = M q̈ + C q̇ + g - Σ J_ci^T f_i(通过动力学方程反解)
WBC 与 MPC 的区别常被混淆:MPC 是「预测未来、决定参考」(落脚点、质心轨迹),WBC 是「当前时刻、分配力矩」(满足约束、跟踪参考)。两者串联使用:MPC 输出期望的躯干轨迹与接触力,WBC 把它们翻译成关节力矩。WBC 的求解频率更高(500 Hz~1 kHz),因此求解器必须极快,分层 QP 是标准做法。
7. 状态估计与接触检测
足式机器人的状态估计比轮式难得多,因为躯干大幅晃动、足端接触离散。
需要估计的量:
浮动基座位姿(躯干在世界系的位姿)——最关键也最难
浮动基座速度
各关节角与角速度(编码器直接给,准)
接触状态(哪只脚着地)与接触位置
地面法向与坡度
传感器:IMU(加速度+角速度)、关节编码器、足端力/力矩传感器、
关节力矩(电流估计)、可选的视觉/激光
状态估计的两条路线:
1. 基于 IMU + 运动学(无外部传感器)
用腿部运动学估计躯干速度(支撑脚的关节运动反推)
用 IMU 积分姿态,用接触足的位置修正漂移
代表:MIT Cheetah 的状态估计器
优点:不依赖环境特征;缺点:长期会漂移
2. 融合 IMU + 腿部运动学 + 外部传感器(视觉/激光)
用视觉或激光提供绝对位置修正
代表:ANYmal 的视觉惯性里程计
优点:无长期漂移;缺点:复杂、依赖环境
接触检测的三种方法:
1. 阈值法:足端力 > 阈值判定为接触
简单但需处理噪声与「轻触」
2. 概率法:用接触概率模型 + 贝叶斯滤波
更鲁棒,能处理接触的模糊状态
3. 基于动力学一致性:比较实际关节力矩与「假设无接触」的预测
差异大说明有接触,不依赖足端传感器
IMU 的姿态估计必须处理「加速度含运动分量」的问题。静态时可以用加速度计估计俯仰与横滚,但运动时加速度含大量运动分量,会污染姿态估计。对策是「只在支撑相、且加速度接近重力时用加速度计修正」,或者干脆只信任角速度积分并用足端接触做长期修正。
8. 落脚点规划与地形适应
落脚点是足式机器人独有的自由度,也是它在复杂地形上优于轮式的根本原因。
落脚点规划的目标:
在可行区域(平坦、可支撑)内选择落脚点
满足运动学约束(腿长、关节限位)
满足动力学约束(ZMP/CP 可达)
优化稳定裕度、能耗、步长
地形感知:
用深度相机/激光建局部高程图(elevation map)
每个格子存高度与地形粗糙度
可行区域 = 坡度小 + 粗糙度低 + 无悬空
地形适应策略:
1. 被动:落脚点选在可行区域,腿部顺应地形
2. 主动:根据高程图规划足端轨迹,落地后估计接触面法向
3. 反应式:接触后检测滑移,触发抬脚重落
高程图的参数:
分辨率:0.02~0.05 m(太粗漏掉小障碍,太细计算量大)
更新频率:10~30 Hz
高度估计:融合多帧观测,处理动态障碍(人腿)
可行坡度:通常 < 30°~40°,取决于足端摩擦与机器人能力
落脚点规划与机器人视觉与抓取 中的点云处理有相通之处:都需要从带噪的深度数据中提取几何结构。差别是足式要的是「可站立性」而非「可抓取性」,判据从力闭合变成坡度与支撑。
9. 强化学习步态概览
强化学习(RL)近年成为足式控制的重要路线,尤其在传统控制难以建模的场景。
RL 路线的两种范式:
1. 端到端:策略直接输出关节目标位置/力矩
输入:本体感受(IMU、关节)+ 可选的感知
输出:关节位置或力矩指令
训练:大规模并行仿真(Isaac Gym / Isaac Lab),PPO 为主
代表:ANYmal 的 RL 控制器、Unitree 的 RL 步态
2. 分层:高层 RL 出参考,底层传统控制器跟踪
优点:结合 RL 的适应性与传统控制的稳定性
训练的关键要素:
奖励设计:跟踪速度 + 姿态 + 能耗 + 平滑 + 足端高度
域随机化:质量、摩擦、延迟、传感器噪声、地形
课程学习:从平地到复杂地形逐步加难
并行:数千个环境同时训练,数小时到数天
RL 与模型控制的取舍:
模型控制:可解释、可证明稳定、调参有理论依据、依赖模型精度
RL:适应性强、能处理未建模效应、但难解释、稳定性无保证、需要大量算力
工程现实:多数商业产品用「模型控制打底 + RL 做特定技能」
行走与平衡用 MPC/WBC,跳跃、跑酷、摔倒起身用 RL
RL 的仿真训练依赖高质量并行仿真,这一部分见机器人仿真 中的 GPU 加速与域随机化。RL 的 sim-to-real 差距比传统控制更大,因为策略会「利用」仿真器的建模误差。
10. 平衡恢复与摔倒保护
平衡恢复是足式机器人的安全底线,必须独立于正常的行走控制。
平衡恢复的分级策略:
1. 踝策略(Ankle Strategy)
小幅扰动,用踝关节力矩把质心推回支撑区
适用:扰动小、支撑面大(如双脚站立)
2. 髋策略(Hip Strategy)
中等扰动,用髋关节摆动快速调整角动量
3. 迈步策略(Stepping Strategy)
大幅扰动,迈出一步重新建立支撑
用捕获点计算落脚点
4. 手臂策略(人形)
摆动手臂产生反作用角动量,辅助平衡
摔倒保护(不可恢复时):
1. 判定不可避免(CP 远离支撑区且无法迈步)
2. 主动收腿、降低重心、保护头部与关键部件
3. 触地后进入「摔倒起身」流程或安全停机
恢复行为的触发与执行:
触发:CP 超出支撑多边形 / IMU 检测到异常加速度 / 接触丢失
执行:切换控制模式(从速度跟踪切到平衡优先)
关键:模式切换要平滑,避免控制量突变导致的二次扰动
摔倒保护不能省。足式机器人摔倒的冲击可能损坏关节与传感器,人形机器人还有安全风险。正确做法是「宁可主动倒地,不可失控摔倒」:检测到不可避免时,主动收腿、降低重心、以受控方式倒地。这一逻辑与机器人部署、实时性与安全 中的安全停机设计是同一套思想。
11. 执行器、力控关节与硬件
足式机器人的硬件特性深刻影响控制方案,控制设计必须理解硬件。
执行器类型的取舍:
1. 位置控制关节(准直驱/谐波减速)
优点:控制简单、刚度高、能承受大负载
缺点:无法直接力控,柔顺性差,碰撞冲击大
代表:早期双足、部分四足
2. 串联弹性执行器(SEA)
电机与负载间有弹性元件,可测力矩
优点:天然柔顺、力控精确、抗冲击
缺点:带宽低(弹性限制)、复杂
代表:ANYmal、早期 Cheetah
3. 准直驱(Quasi-Direct Drive, QDD)
低减速比 + 大扭矩电机,电流估计力矩
优点:高带宽、力控好、抗冲击、成本低
缺点:需要大电流、散热难
代表:MIT Mini Cheetah、Unitree、宇树
关节级控制的层次:
电流环(10~20 kHz):控制电机电流,对应力矩
速度环(1~4 kHz):控制关节速度
位置环(1~4 kHz):控制关节位置
WBC 输出的是关节力矩或位置目标,由关节伺服执行
关键硬件指标:
力矩密度(Nm/kg):决定动态能力
带宽(Hz):决定力控与顺应能力
背隙(backlash):影响精度与接触检测
关节柔性与共振频率:影响控制带宽上限
QDD 的普及改变了足式控制的生态:低减速比让关节可以「反驱」(外力能推动关节),这既带来了天然柔顺,也带来了新的控制挑战(重力下会「塌」)。现代足式控制普遍用「力矩控制 + 重力补偿」而非纯位置控制,正是因为 QDD 的特性。
12. 仿真到真机的迁移与调参
足式系统的 sim-to-real 差距是最大的工程挑战之一。
差距的主要来源:
1. 接触模型:仿真的接触是刚性的、无延迟的;真机有柔性、有延迟、有打滑
2. 执行器模型:仿真的力矩是理想的;真机有力矩常数误差、有摩擦、有带宽限制
3. 传感器:仿真的 IMU 无噪声无偏置;真机有偏置、有温漂、有量化
4. 延迟:真机的传感-计算-执行总延迟通常 5~20 ms,仿真里常被忽略
5. 通信与计算:真机的控制周期有抖动,仿真里是理想的
对策:
1. 域随机化:训练/调参时随机化摩擦、质量、延迟、噪声
2. 系统辨识:实测执行器带宽、摩擦、延迟,建立更准的模型
3. 延迟补偿:把已知的延迟建模进控制器(如预测性补偿)
4. 鲁棒控制:设计对模型误差不敏感的控制器(如 MPC 加约束裕度)
5. 渐进迁移:先在仿真调好,再上台架(腿悬空),再上真机
上机调参的顺序:
1. 单腿台架:验证关节力控、重力补偿、单腿弹跳
2. 悬挂站立:验证平衡控制(不承重)
3. 承重站立:验证支撑与接触力分配
4. 原地踏步:验证接触切换与状态估计
5. 慢速行走:验证步态与落脚点
6. 逐步提速与加地形:验证动态能力与鲁棒性
每步都必须有急停与保护绳,绝不可跳过台架直接上真机
一个实用原则:控制器的安全裕度应随不确定性增大而增大。仿真里摩擦锥可以用 μ=0.8 的极限,真机上应留到 μ=0.5;仿真里 MPC 的约束可以贴着边界,真机上要留 20%~30% 余量。这个裕度看起来「浪费性能」,但它是不摔倒的保险。
权衡取舍
| 决策 | 选 A | 选 B |
|---|---|---|
| 平衡判据 | ZMP:经典、静态、保守 | 捕获点:动态、适合快速运动 |
| 步态模型 | LIPM:解析、快、简化 | 全身动力学:精确、慢、复杂 |
| 控制架构 | 凸 MPC + WBC:高频、鲁棒 | NMPC:精确、低频、算力高 |
| 控制方法 | 模型控制:可解释、可证明 | RL:适应强、难解释 |
| 执行器 | SEA:柔顺、力控准、带宽低 | QDD:高带宽、抗冲击、散热难 |
| 状态估计 | 纯本体感受:无环境依赖、漂移 | 加视觉:无漂移、复杂 |
| 落脚点 | 启发式:简单 | 优化/学习:适应地形 |
核心原则:分层解耦,各司其职。任务层管「去哪」,MPC 管「怎么迈步与保持平衡」,WBC 管「力矩怎么分」,关节伺服管「电流怎么给」。任何一层试图包办全部,都会在工程上失控。
常见坑清单
- 用 ZMP 判据控制跑步,忽略腾空相导致误判——高动态运动用捕获点与角动量。
- 里程计式的「姿态纯积分」,IMU 漂移无修正——用足端接触做长期修正。
- 运动时用加速度计估姿态,运动分量污染估计——只在准静态时用加速度计。
- 落地速度设为零,接触冲击大且不自然——设 0.1~0.3 m/s 的正向落地速度。
- WBC 求解频率过低(< 50 Hz),跟不上接触切换——WBC 应 500 Hz 以上。
- 分层 QP 的优先级设置错误,次要任务牺牲了平衡——接触与平衡必须是最高优先级。
- 摔倒保护缺失,失控摔倒损坏关节——检测到不可避免时主动收腿降低重心。
- 域随机化范围过窄,策略在真机上「利用」仿真误差——随机化要覆盖真实的参数分布。
- 仿真里约束贴着边界,真机因模型误差越界摔倒——约束留 20%~30% 安全裕度。
- 跳过台架直接上真机,调试代价极高且危险——必须按台架→悬挂→承重逐级验证。
小结
足式控制的核心是「在离散接触与欠驱动约束下维持平衡」。ZMP 与捕获点提供了平衡的判据,LIPM 与 MPC 提供了步态生成的方法,WBC 提供了力矩分配的框架,状态估计提供了控制所需的反馈。这四块各自成熟,难点在于把它们在有限算力下实时地、鲁棒地组合起来。
下一步建议阅读机器人动力学与控制基础一篇,理解刚体动力学、阻抗控制与接触稳定的数学基础,这是 WBC 与力控的前置;机器人仿真一篇讲清 GPU 并行仿真与域随机化,是 RL 步态训练的载体;传感器融合与状态估计一篇是躯干状态估计的数学工具。
最后一句经验:足式的所有问题最终都会表现为「站不稳」。排查顺序永远是「硬件与执行器 → 状态估计 → 控制器参数」,因为状态估计错了,再好的控制器也是在错误的前提上做最优决策。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。