前言

四足机器人运动控制经历了从"模型驱动"到"学习驱动"的范式转变。本文以云深处绝影 Lite3 为载体,系统梳理运动控制的底层原理、SDK 接口和 AI 策略部署方法,帮助开发者从零建立完整的知识框架。


一、运动控制的分层架构

四足机器人的运动控制可以抽象为四层结构,每一层解决不同的问题:

┌─────────────────────────────────────────────┐
│  任务层(Task)                                │
│  "去厨房"、"跟随主人"                          │
├─────────────────────────────────────────────┤
│  策略层(Policy)                               │
│  速度指令 → 步态选择 → 步态相位                  │
│  MPC/WBC(模型型)  或  RL Policy(学习型)      │
├─────────────────────────────────────────────┤
│  执行层(Execution)                            │
│  12 关节力矩/位置/速度指令                       │
│  关节 PD 控制器(~1kHz)                        │
├─────────────────────────────────────────────┤
│  硬件层(Hardware)                             │
│  电机、减速器、IMU、关节编码器、力传感器            │
└─────────────────────────────────────────────┘

关键认知:开发者通常工作在策略层和执行层之间。Lite3 的 Motion SDK 开放了执行层接口,RL SDK 开放了策略层接口。


二、传统控制:MPC + WBC

2.1 为什么需要分层

四足机器人有 12 个自由度(每条腿 3 个关节),同时有 4 个脚与地面接触,接触状态随步态切换而变化。直接求解 12 个关节的力矩是一个高维、非凸、带切换约束的优化问题,在线求解极其困难。

分层思路:把问题拆成两个规模更小、凸性更好的子问题。

2.2 MPC:高层优化器

MPC 使用简化模型(通常是单刚体模型,把整个机器人看作一个质点+刚体),在有限时域内预测未来运动并求解最优的地面反作用力。

单刚体动力学方程:

$$m\ddot{\mathbf{r}} = \sum_{i=1}^{4}\mathbf{f}_i + m\mathbf{g}$$

$$\mathbf{I}\dot{\boldsymbol{\omega}} = \sum_{i=1}^{4}(\mathbf{r}_i - \mathbf{r}) \times \mathbf{f}_i$$

其中 $\mathbf{f}_i$ 是第 $i$ 条腿的地面反作用力,$\mathbf{r}_i$ 是接触点位置。

MPC 的工作流程:

  1. 接收期望速度/姿态指令
  2. 读取当前状态(IMU + 关节编码器)
  3. 在未来 100~300ms 内滚动优化,求解 12 维力向量 $\mathbf{f}_1, \ldots, \mathbf{f}_4$
  4. 约束条件:摩擦锥、接触力非负、关节力矩上限
  5. 只执行第一个时间步的解,下一周期重新优化

频率:30~100 Hz

2.3 WBC:底层执行器

WBC 拿到 MPC 给出的地面反作用力后,用完整多体动力学模型求解 12 个关节的具体力矩。

核心方程(浮基多体动力学):

$$\mathbf{M}(\mathbf{q})\ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}}) + \mathbf{g}(\mathbf{q}) = \mathbf{S}^T\boldsymbol{\tau} + \mathbf{J}_c^T\mathbf{f}_c$$

WBC 通常用任务优先级二次规划求解:

优先级任务说明
P0接触力约束支撑腿不打滑、不穿透地面
P1躯干姿态/加速度不摔倒
P2摆腿轨迹跟踪足端沿期望轨迹运动
P3接触力跟踪实现 MPC 给出的期望力
P4关节正则化避免奇异位形

频率:500~1000 Hz

2.4 完整闭环

期望速度(0.3 m/s 前进)
        ↓
状态估计(IMU + 关节编码器,EKF 融合)
        ↓
步态发生器(确定哪条腿支撑、哪条腿摆动)
        ↓
MPC(~50 Hz)→ 求解 4×3=12 维地面反作用力
        ↓
WBC(~1 kHz)→ 求解 12 关节力矩 τ
        ↓
关节 PD 控制 → 电机执行
        ↓
传感器反馈 → 回到状态估计

三、学习型控制:RL 策略

3.1 基本思想

RL 策略不显式求解优化问题,而是训练一个神经网络 $\pi_\theta$,直接映射状态到动作:

$$\mathbf{a}t = \pi\theta(\mathbf{s}_t)$$

其中状态 $\mathbf{s}_t$ 通常包含:本体感知(关节角度/速度、IMU、脚接触状态)+ 历史观测;动作 $\mathbf{a}_t$ 通常是关节位置偏移或力矩。

3.2 训练框架

Sim-to-Real + Teacher-Student 是当前主流范式:

┌──────────────────────────────────────────────┐
│  仿真环境(Isaac Gym / Isaac Lab)              │
│  ├── 大规模并行(~4096 个环境同时跑)            │
│  ├── 域随机化(摩擦、质量、延迟、噪声)           │
│  └── PPO 算法训练 Teacher Policy               │
└──────────────────────────────────────────────┘
                    ↓ 蒸馏
┌──────────────────────────────────────────────┐
│  Student Policy(仅用本体感知,不依赖特权信息)   │
│  ↓ 部署到真机                                   │
└──────────────────────────────────────────────┘

关键技巧:

  • 域随机化:在仿真中随机化物理参数,让策略学会鲁棒性
  • 特权信息:训练时给 Teacher 看地形高度图、摩擦系数等真机拿不到的信息,再蒸馏给 Student
  • 奖励整形:精心设计 reward function(跟踪速度、低能耗、平滑动作、不摔倒)

3.3 与传统控制的对比

维度MPC/WBCRL 策略
控制方式在线求解优化(QP)神经网络前向推理
可解释性高(每步可检查约束)低(黑盒)
硬约束保证摩擦锥、力矩上限严格满足只能放进 reward 尽量满足
复杂地形适应需要手工建模自动学习
高动态动作需要精细调参训练数据足够即可
开发门槛动力学 + 优化功底仿真 + RL 调参经验
频率MPC ~50Hz, WBC ~1kHz推理 ~50~200Hz

四、Lite3 的 SDK 接口

4.1 三层接口总览

接口开放层级用途
自智巡平台 HTTP 接口任务层路径规划、建图、导航
Motion SDK(UDP)策略层 + 执行层步态切换、轴指令、关节读写
RL SDK策略层部署自定义 RL 策略、进入 AI 状态

4.2 Motion SDK 核心流程

低速前进的完整命令流:

  1. 心跳保活:0x21040001,≥2 Hz,全程不断
  2. 起立:0x21010202,等待 basic_state == 6(力控站立)
  3. 切移动模式:0x21010D06
  4. 切低速步态:0x21010300
  5. 持续发前进轴指令:0x21010130,正值且 > 6553(死区),≥20 Hz
  6. 停车:轴指令归零或停发 >250ms

状态机流转:

上电趴下(1) → 力控站立(6) → 移动模式 → 低速步态 → 持续轴指令前进
                                        ↓
                              AI状态(16) ← 0x21010528
                              (RL 策略接管)

4.3 AI 状态切换

进入 AI 状态后,常规步态/动作指令失效,只能用 AI 专属指令:

指令指令码说明
进入 AI0x21010528从力控站立进入
退出 AI0x2101052B回到力控站立
AI 基础步态0x2101052A常规行走
AI 跳跃步态0x21010529用于跳跃/空翻
AI 站立步态0x2101052C用于倒立等位姿调整
AI 极速步态0x2101052E高速奔跑

注意:轴指令(0x21010130/31/35)在 AI 状态下仍然有效,作为高层速度命令喂给策略网络。


五、动手实践路线

路线 A:理解传统控制(MPC/WBC)

  1. 理论基础

    • 《Robotics, Vision and Control》第 7 章(浮基动力学)
    • MIT 6.832 Underactuated Robotics(MPC 章节)
    • Carlo Mastalli 的 Crocoddyl 教程
  2. 开源项目

  3. 在 Lite3 上实践

    • 用 Motion SDK 读取关节状态和 IMU
    • 尝试自己实现一个简单的 WBC(先做单腿阻抗控制)
    • 接入开源 MPC 求解器(如 OSQP)

路线 B:训练自己的 RL 策略

  1. 理论基础

    • Sutton & Barto《Reinforcement Learning: An Introduction》
    • PPO 算法原论文
    • Isaac Lab 官方文档
  2. 开源项目

  3. 在 Lite3 上实践

    • 用 RL SDK 读取真机关节状态
    • 在 Isaac Lab 中搭建 Lite3 URDF 仿真环境
    • 用 PPO 训练基础行走策略
    • 通过 RL SDK 部署到真机,进入 AI 状态验证

路线 C:混合架构(前沿)

  • RL 调 MPC 参数:用策略网络输出 MPC 的权重矩阵
  • 模仿学习 + RL 微调:先用行为克隆学 MPC 专家数据,再用 RL 在复杂地形上微调
  • 感知-运动闭环:融合深度相机做 perceptive locomotion

六、总结

Lite3 的运动控制架构是当前四足机器人技术发展的一个缩影:

  • 底层:MPC/WBC 提供可解释、硬约束保证的安全兜底
  • 上层:RL 策略提供地形自适应和高动态动作能力
  • 接口:轴指令作为统一的高层命令,屏蔽底层实现差异
  • 趋势:从"二选一"走向"分层融合",大脑(任务规划)+ 小脑(运动控制)协同

对于开发者而言,建议两条路线并行:用 RL 快速上手做出能动的策略,同时深入理解 MPC/WBC 为什么能提供安全保证。两者结合,才能真正掌握四足机器人运动控制的全貌。


附录:关键指令速查表

功能指令码类型说明
心跳0x210400010≥2 Hz 持续
起立/趴下0x210102020切换
移动模式0x21010D060非 AI 状态
原地模式0x21010D050非 AI 状态
低速步态0x210103000非 AI 状态
中速步态0x210103070非 AI 状态
高速步态0x210103030非 AI 状态
前后轴指令0x210101300移动/AI 状态,>6553 前进
左右轴指令0x210101310移动/AI 状态
偏航轴指令0x210101350移动/AI 状态
进入 AI0x210105280需力控站立
退出 AI0x2101052B0回力控站立
软急停0x21020C0E0任意时刻
速度指令0x01401自主模式,double 值 m/s

需要我继续展开哪一部分?比如:

  • MPC 单刚体方程的详细推导
  • WBC 任务优先级 QP 的数学形式
  • Isaac Lab 训练四足策略的完整代码示例
  • Motion SDK 的 UDP 数据包打包示例(C++/Python)
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐