四足机器人强化学习系列 00:为什么从 ETH/ANYmal 讲起,以及我准备怎么学

写在前面:为什么这套笔记要从 ETH / ANYmal 讲起

如果想系统学习“四足机器人强化学习”,我觉得不能一上来就讲 PPO 公式,也不能一上来就讲代码怎么跑。更好的起点是先回答一个问题:

为什么最近这些年,四足机器人运动控制会越来越多地往强化学习这条路线靠?

这个问题背后有一条非常重要的线索:ETH Zürich 的 Robotic Systems Lab,也就是经常和 ANYmal 机器人一起出现的那支团队。

当然,强化学习用于机器人控制不是 ETH 第一个想到的,四足机器人也不是只有 ANYmal 一条路线。但如果从“现代四足机器人运动控制工程化”的角度看,ETH / RSL / ANYmal 这条线非常有代表性:

  • 他们不是只在仿真里演示策略,而是持续把学习控制迁移到真实四足机器人上。
  • 他们的研究围绕真实机器人运动能力展开:动态步态、复杂地形、鲁棒性、Sim2Real。
  • 他们后续开源的 legged_gym / rsl_rl,让很多人第一次能比较系统地复现四足 RL locomotion。
  • 他们把 GPU 并行仿真、PPO、奖励函数、课程学习、域随机化这些要素组合成了一套相对清晰的工程路线。

所以这篇 00 笔记,应该先把这条脉络整理清楚:

传统控制能做什么

为什么复杂地形和动态运动会变难

ETH / ANYmal 为什么开始系统推进 learning-based locomotion

PPO + GPU 并行仿真 + Sim2Real 为什么成为常见组合

我们学习时应该按什么顺序切入

这才是一个合适的前言。

一句话结论

四足机器人强化学习不是为了替代所有传统控制,而是为了在复杂接触、复杂地形、扰动和高维动作空间里,用仿真中的大规模试错学出更灵活的运动策略;ETH / ANYmal 这条线把这件事从“论文演示”往“可复现工程路线”推进了一大步。

这句话里有几个关键词:

  • 复杂接触。
  • 高维动作空间。
  • 大规模仿真试错。
  • 可迁移到真实机器人。
  • 可复现工程路线。

后面的系列基本都围绕这些词展开。

传统四足控制已经很强,为什么还需要强化学习

学习强化学习之前,最好先尊重传统控制。

四足机器人不是有了 RL 才会走路。很长一段时间里,四足运动控制主要依赖模型、规划和控制方法,比如:

  • 步态规划。
  • 足端轨迹规划。
  • 质心动力学模型。
  • MPC,Model Predictive Control。
  • WBC,Whole-Body Control。
  • 状态估计。
  • 接触力分配。
  • 关节空间 PD / 力矩控制。

这些方法非常重要,而且今天仍然重要。

传统方法的优势是:

  1. 可解释性强。
  2. 稳定性和约束可以更明确地分析。
  3. 对工程安全更友好。
  4. 在结构化任务里表现很好。

但四足机器人一旦进入复杂场景,问题会迅速变难。

比如:

  • 地面不是平的,有石头、台阶、斜坡、软地面。
  • 接触会频繁切换,脚什么时候接触、什么时候打滑很难精确建模。
  • 机器人要同时保持身体平衡、跟踪速度、控制能耗、避免脚滑。
  • 外界可能推它,传感器有噪声,电机也有延迟。
  • 不同机器人、不同地面、不同负载都会改变动力学。

这时候,如果完全依赖人手工写规则,工作量会非常大,而且策略可能不够灵活。

强化学习的吸引力就在这里:

它允许机器人在仿真里大量试错,让策略自己从奖励中学出动作模式。

ETH / ANYmal 这条线为什么关键

ETH Zürich 的 Robotic Systems Lab 长期研究腿足机器人,ANYmal 是其中非常有代表性的四足平台。

早期很多 RL 控制研究只在仿真里展示,真正上实机很难。难点主要有:

  • 真机试错成本高。
  • 摔倒会损坏机器人。
  • 训练需要大量交互数据。
  • 仿真和真实世界差异很大。
  • 高维连续控制很难稳定训练。

ETH / RSL 这条线的重要之处在于,他们不断把学习策略往真实机器人上推,并且把“如何训练、如何迁移、如何让策略鲁棒”这件事做成了一条越来越清楚的路线。

几个关键节点可以这样理解。

1. 2019 左右:ANYmal 实机动态运动技能

公开论文《Learning agile and dynamic motor skills for legged robots》展示了通过强化学习训练腿足机器人动态运动技能,并部署到真实系统上的思路。

这类工作的重要意义不是“机器人会做某个炫酷动作”,而是证明了一件事:

学习出来的低层运动策略,不一定只能停留在仿真里,它可以通过合理训练和迁移进入真实四足机器人。

这对整个方向很重要。

因为四足机器人最难的地方不是仿真视频好看,而是真机能不能稳定、鲁棒、安全地执行。

2. 2020 左右:复杂地形上的学习运动

后续 ANYmal 相关工作进一步面向复杂地形 locomotion。

这让大家看到,强化学习不只是能学平地走路,也可以和地形感知、鲁棒控制结合,处理更复杂的真实环境。

这里的核心变化是:

从“学一个步态”
变成
“学一个在复杂场景中可用的运动策略”

这也是四足机器人真正走向应用时必须面对的问题。

3. 2021:Learning to Walk in Minutes 和 legged_gym

对很多学习者来说,最关键的节点是 2021 年 CoRL 的工作:

Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning

这项工作来自 Robotic Systems Lab, ETH Zurich & NVIDIA。公开页面和 arXiv 摘要里提到,他们使用单工作站 GPU 上的大规模并行仿真训练真实机器人任务;在 ANYmal 上,平地策略可以在数分钟内训练出来,复杂地形也可以在较短时间内训练,并且迁移到真实 ANYmal C 上验证。

更关键的是:他们开源了训练代码 legged_gym。

这对学习者影响非常大。

因为在这之前,你可能只能看论文描述:

我们训练了 PPO policy
我们做了 domain randomization
我们迁移到了真机

但有了 legged_gym / rsl_rl,你可以真正看到:

  • observation 怎么拼。
  • action 怎么映射到关节目标。
  • reward 每一项怎么写。
  • reset 条件怎么判断。
  • terrain curriculum 怎么组织。
  • PPO runner 怎么采样和更新。
  • 日志怎么记录。

这就是从“看热闹”到“能复现”的区别。

为什么 GPU 并行仿真改变了四足 RL

强化学习需要大量试错。

如果只有一个机器人环境,训练会非常慢。

但是 Isaac Gym 这类 GPU 并行仿真让事情发生变化:

不是一个机器人慢慢试
而是几千个机器人同时在仿真里试

比如一个训练任务可以同时跑几千个 env,每个 env 是一个机器人副本。每一步都收集大量数据,然后用 PPO 更新策略。

这个模式让四足机器人 RL 的工程路线变得更实际:

大规模并行仿真

快速收集 rollout

PPO 更新 policy

课程学习逐步增加难度

域随机化提高鲁棒性

迁移到真机

所以现代四足 RL 不是单纯“用了 PPO”,而是几个技术条件同时成熟:

  1. GPU 并行物理仿真。
  2. 稳定的 on-policy 算法,如 PPO。
  3. 合理的 reward 和 reset 设计。
  4. 域随机化和噪声建模。
  5. 真机安全部署流程。
  6. 开源工程让大家能复现。

这套笔记到底要整理什么

这套笔记不是泛泛讲 RL,而是围绕四足 locomotion 的工程闭环:

机器人模型

仿真环境

observation

action

reward

PPO 训练

日志分析

domain randomization

Sim2Real

真机安全

你最终要建立的是这样一种能力:

  • 看到一份四足 RL 代码,知道先看哪里。
  • 看到 obs 维度,知道里面可能有哪些量。
  • 看到 action scale,知道它会影响关节动作幅度。
  • 看到 reward 权重,知道它可能改变什么行为。
  • 看到训练曲线,能判断策略是不是在变好。
  • 看到 sim2real 设置,知道它在防什么问题。
  • 准备上真机前,知道必须检查哪些安全项。

这比单独背 PPO 推导更重要。

为什么不要一开始就啃 PPO 公式

PPO 当然重要。

但对四足机器人学习来说,一开始只啃公式很容易跑偏。

因为真实训练效果通常由一整套东西决定:

  • observation 设计。
  • action 表示。
  • reward shaping。
  • reset 条件。
  • command 分布。
  • 地形课程学习。
  • PD 参数。
  • action delay。
  • domain randomization。
  • 仿真步长和控制频率。

同样是 PPO,如果 reward 写得不好,机器人可能趴着滑;如果 action scale 太大,动作会暴力;如果 obs 顺序部署时错了,真机直接乱动。

所以更好的学习顺序是:

先理解四足 RL 工程闭环
再理解 obs / action / reward
再理解 PPO 在里面负责什么
最后再补公式细节

这套笔记的文章长度标准

这里明确一下后续整理笔记的标准。

我说的“短篇”,不是几百字小卡片,而是:

  • 每篇只整理一个明确主题。
  • 单篇尽量控制在 1 万字以内,方便自己回看。
  • 前因后果要整理清楚。
  • 概念、例子、工程注意点都要保留。
  • 不写成几十万字的大报告。
  • 用很多篇笔记连成一套自己的学习路径。

也就是说:短是相对超长报告而言,内容不能空;毕竟这是给自己以后反复看的。

学习路线总览

我建议把四足强化学习分成 6 个阶段学。

阶段 1:建立问题意识

先理解四足 RL 到底在学什么。

你要知道:

  • 它不是让机器人“像人一样思考”。
  • 它通常是在学习一个低层运动策略。
  • 输入是机器人当前观测。
  • 输出是关节控制相关的动作。
  • 奖励函数塑造步态。
  • 仿真环境提供试错场。

这一阶段对应笔记 01~02。

阶段 2:理解 Observation、Action、Reward

这是最核心的三件套。

Observation

机器人策略真正能看到什么?

常见包括:

  • 机身角速度。
  • 重力方向投影。
  • 速度命令。
  • 关节角。
  • 关节速度。
  • 上一帧 action。
  • 地形高度采样。

Action

策略输出什么?

很多工程不是直接输出力矩,而是输出关节位置目标偏移:

target_q = default_q + action_scale * action

Reward

机器人为什么会学会走?

因为 reward 告诉它:速度跟踪准、身体稳、能耗低、动作平滑、脚不乱滑,这些行为更好。

这一阶段对应笔记 03~07。

阶段 3:理解 PPO 的工程角色

PPO 负责用采样数据更新策略。

你需要知道:

  • policy 输出 action。
  • value 估计状态好坏。
  • rollout 收集经验。
  • advantage 判断动作比预期好还是差。
  • clipping 防止策略更新太猛。

这一阶段对应笔记 08。

阶段 4:读懂训练工程

开始看 legged_gym / rsl_rl / Isaac Lab 时,不要先钻算法文件。

先找:

  1. 环境类。
  2. 配置文件。
  3. observation 拼接。
  4. action mapping。
  5. reward 函数。
  6. reset 条件。
  7. terrain curriculum。
  8. domain randomization。
  9. train / play 脚本。

这一阶段对应笔记 09~10。

阶段 5:理解 Sim2Real

仿真能走,不代表真机能走。

要理解:

  • 为什么仿真和现实不同。
  • 域随机化在防什么。
  • 观测噪声和动作延迟为什么重要。
  • 真机部署前要检查什么。

这一阶段对应笔记 11~13。

阶段 6:做自己的复现实验

最后要从阅读走向实验。

比如:

  • 跑通一个现成环境。
  • 改一个 reward 权重。
  • 比较训练曲线。
  • 记录机器人行为变化。
  • 做一个小消融实验。

这一阶段对应笔记 14 以及后续实践篇。

当前系列目录

目前先按下面这些基础笔记整理:

  • 00:为什么从 ETH / ANYmal 讲起,以及我准备怎么学。
  • 01:四足 RL 到底在学什么。
  • 02:用四足机器人理解 MDP。
  • 03:Observation 里面到底放什么。
  • 04:Action 为什么常用关节位置目标。
  • 05:Reward 是在塑造行为。
  • 06:速度跟踪奖励。
  • 07:能耗和平滑惩罚。
  • 08:PPO 的核心直觉。
  • 09:一次训练流程长什么样。
  • 10:代码先看哪里。
  • 11:Sim2Real 为什么难。
  • 12:域随机化。
  • 13:真机安全检查。
  • 14:八周练习路线。

后续可以继续展开:

  • 15:地形课程学习。
  • 16:足端接触与脚滑惩罚。
  • 17:command curriculum。
  • 18:RMA 快速运动自适应。
  • 19:privileged observation 和 teacher-student。
  • 20:视觉强化学习。
  • 21:轮足机器人强化学习。
  • 22:Unitree Go2 / Isaac Lab 复现路线。
  • 23:训练日志如何分析。
  • 24:策略上真机前的检查表。

推荐阅读材料

后面会逐步展开,但 00 篇先列出几个关键入口。

ETH Robotic Systems Lab

Robotic Systems Lab 是理解 ANYmal 和很多腿足机器人学习控制工作的关键入口。

https://rsl.ethz.ch/

Learning agile and dynamic motor skills for legged robots

这篇工作展示了学习动态运动技能并部署到腿足机器人真实系统上的路线。

https://arxiv.org/abs/1901.08652

Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning

这篇是很多人接触现代四足 RL 工程路线的重要入口。它强调单机 GPU 上的大规模并行仿真、快速策略训练、课程学习,并在 ANYmal C 上验证。

https://arxiv.org/abs/2109.11978

legged_gym

对应上面工作开源出的训练环境,适合学习四足 locomotion 工程结构。

https://leggedrobotics.github.io/legged_gym/

https://github.com/leggedrobotics/legged_gym

rsl_rl

与 legged_gym 常配合使用的 PPO / on-policy RL 实现。

https://github.com/leggedrobotics/rsl_rl

Isaac Lab

NVIDIA Isaac 生态下更现代的机器人学习训练框架,后续复现和扩展可以重点关注。

https://github.com/isaac-sim/IsaacLab

学到什么程度算入门

如果你能做到下面这些,就算进入四足 RL 的门了:

  1. 能解释为什么 ETH / ANYmal 这条线对四足 RL 很重要。
  2. 能画出“obs → policy → action → simulator → reward → PPO update”的闭环。
  3. 能说清 obs 里常见量的作用。
  4. 能说清 action 为什么常用关节位置目标而不是直接力矩。
  5. 能读懂 reward 的主要项。
  6. 能跑通一个开源训练工程。
  7. 能看训练曲线判断是否在变好。
  8. 能做一个小的 reward 消融实验。
  9. 知道 Sim2Real 的主要风险。
  10. 知道真机部署前必须有安全检查。

这比单纯背强化学习公式更接近真实四足机器人项目。

最后

四足机器人强化学习不是一个孤立算法,而是一套系统工程:

机器人模型 + 仿真环境 + observation + action + reward + PPO + 日志分析 + 随机化 + 真机安全

ETH / ANYmal 这条线之所以值得从一开始讲,是因为它把这些要素比较系统地串了起来,并通过公开论文、真实机器人验证和开源工程,让后来者有了可以学习和复现的路径。

后面的笔记就沿着这条路径展开:先不急着推公式,先把四足 RL 的工程世界看清楚。

下一篇整理:四足 RL 到底在学什么

algorithms axis-angle bode calibration chrome cmake cmakelists colcon conan control cpp d435i data_struct db dots eigen fcpx figure forge fov gazebo gdb git gnu ibus interest isaac gym isaaclab kdl latex launch legged locomotion life linux mac math matlab matrix memory mlp motor moveit ode operator optimal algorithm ppo python qos realsense robot robotics ros ros2 rtb shell simulation stl thread tools twist ubuntu uml unitree urdf valgrind vcxsrv velocity vim web work wsl 中文输入 交叉编译 依赖管理 分支管理 四足机器人 强化学习 机器人视觉 构建系统 深度相机 点云 版本控制 输入法 配置类
知识共享许可协议