四足机器人强化学习系列 01:四足 RL 到底在学什么

先补理论? 强化学习理论基础已按 MDP → 价值学习 → 策略梯度与 PPO 整理独立阅读顺序,并附完整推导与计算示例。

上一篇整理:00:为什么从 ETH/ANYmal 讲起,以及我准备怎么学

写在前面:这一篇先把“学什么”说清楚

看四足机器人强化学习资料时,我最容易混淆的一点是:

四足 RL 到底是在学什么?

它是在学路径规划吗?是在学识别环境吗?是在学像动物一样思考吗?还是在学电机控制?

如果这个问题没搞清楚,后面看 PPO、reward、observation、Sim2Real 都会有点飘。因为很多资料默认读者已经知道 locomotion policy 是什么,但对刚开始系统整理的人来说,这一步不能跳。

所以这篇笔记先不急着讲 MDP 公式,也不讲 PPO 推导,只先整理一个核心问题:

在四足机器人 locomotion 里,强化学习通常是在学习一个“从机器人当前观测到低层动作”的运动控制策略。

这个策略不一定负责全部智能,它通常只是整套机器人系统中的一个控制模块。

一句话结论

四足 RL 最常见的学习目标,是在仿真里训练一个 policy:输入机器人当前观测和运动命令,输出关节动作或关节目标,让机器人能稳定、鲁棒、省力地完成站立、行走、转向、越障等运动任务。

可以写成一个很短的式子:

observation + command  →  policy  →  action

如果展开到四足机器人里,大概是:

IMU 姿态/角速度 + 关节角/关节速度 + 速度命令 + 上一帧动作
↓
神经网络策略 policy
↓
12 个关节的位置目标偏移 / 力矩 / 控制指令
↓
底层控制器执行
↓
机器人在仿真或真实世界里走一步

这就是最小闭环。

它首先不是在学“大脑”

很多人第一次听到“机器人强化学习”,容易以为机器人是在学一个完整大脑:看环境、理解任务、自己决定去哪、规划路径、控制腿、避障、完成目标。

但在四足 locomotion 这个方向里,很多 RL policy 其实没有那么“高层”。

它更像是一个低层运动控制器:

上层给它一个速度命令:向前 0.5 m/s,向左转 0.2 rad/s
它负责让四条腿协调起来,把这个命令执行出来

也就是说,它通常不负责:

  • 决定今天要去哪。
  • 识别房间语义。
  • 规划全局路径。
  • 理解文字任务。
  • 判断“这是椅子还是桌子”。

这些更像是导航、感知、规划、任务决策或大模型系统要做的事情。

四足 RL locomotion policy 更关心的是:

  • 身体别倒。
  • 速度尽量跟上命令。
  • 动作不要太抖。
  • 能耗不要太大。
  • 脚不要乱滑。
  • 遇到一点扰动还能恢复。
  • 地面有变化时还能走。

这就像人走路时,大脑不用每一步都精确计算每个肌肉怎么发力。高层只想“往前走”,低层运动系统自动协调身体完成动作。四足 RL 训练的 policy,在工程系统里经常扮演类似“低层运动技能”的角色。

它也不等于传统路径规划

四足机器人完整系统里常见分层大概是:

任务层:我要去哪里,做什么任务
导航层:从当前位置到目标点怎么走
局部规划:短时间内避障、选落脚区域或速度命令
运动控制:把速度命令变成身体和腿的动作
电机控制:让关节按目标执行

四足 RL locomotion 通常主要落在“运动控制”这一层。

例如上层导航模块可能输出:

vx = 0.4 m/s
vy = 0.0 m/s
yaw_rate = 0.2 rad/s

RL policy 接到命令后,需要每个控制周期输出动作,让机器人真的按这个速度走。

所以如果问“四足 RL 在学什么”,比较准确的回答不是:

它在学怎么从 A 点走到 B 点

而是:

它在学当上层告诉我一个运动命令时,身体和关节应该怎么协调动作

路径规划当然可以和 RL 结合,但基础 locomotion policy 不是完整导航系统。

最小例子:速度命令跟踪

最常见的四足 RL 入门任务之一,就是速度命令跟踪。

任务可以写成:

给机器人一个目标线速度和角速度,让它尽量跟踪这个命令,同时保持稳定。

比如命令是:

向前速度 vx = 0.5 m/s
侧向速度 vy = 0.0 m/s
转向角速度 yaw_rate = 0.0 rad/s

那机器人应该学会向前走。

如果命令变成:

vx = 0.0 m/s
vy = 0.0 m/s
yaw_rate = 0.4 rad/s

那机器人应该原地转向。

如果命令是:

vx = 0.4 m/s
vy = 0.2 m/s
yaw_rate = -0.2 rad/s

那机器人应该斜着走,同时轻微转向。

这个任务听起来简单,但对四足机器人来说并不简单。因为它必须同时处理:

  • 身体平衡。
  • 四条腿协调。
  • 足端接触切换。
  • 地面摩擦。
  • 电机限制。
  • 动作平滑。
  • 能耗。

强化学习的做法是:在仿真里给机器人各种速度命令,让它不断尝试,表现好的行为得到奖励,表现差的行为被惩罚,最后得到一个能跟踪命令的 policy。

Policy 到底是什么

Policy 可以理解成一个函数。

数学上常写成:

π(a | o)

意思是:给定观测 o,输出动作 a。

在工程里,它通常就是一个神经网络。

比如:

输入:48 维 observation
网络:MLP,几层全连接
输出:12 维 action

为什么 action 常常是 12 维?

因为很多四足机器人有 12 个主动关节:

4 条腿 × 每条腿 3 个关节 = 12 个关节

当然,不同机器人关节数不同,action 维度也会变。

一个简化的 policy 可以想象成:

action = policy(observation)

然后 action 再被转换成关节目标:

target_joint_position = default_joint_position + action_scale * action

底层 PD 控制器再根据目标角度输出力矩。

Observation 里可能有什么

policy 不可能凭空输出动作,它需要知道机器人当前是什么状态。

常见 observation 包括:

1. 机身角速度

例如 roll、pitch、yaw 方向上的角速度。

这能帮助策略知道身体是不是正在快速倾斜或转动。

2. 重力方向投影

很多工程会用 projected gravity,而不是直接给 roll/pitch。

它可以告诉策略:当前机身相对重力方向是正的还是歪的。

3. 速度命令

例如:

vx command
vy command
yaw rate command

没有 command,policy 就不知道上层希望它往哪走。

4. 关节角

机器人每个关节当前角度是多少。

如果关节已经偏得很厉害,policy 应该知道。

5. 关节速度

关节正在以多快速度运动。

这对减少抖动、保持稳定很重要。

6. 上一帧 action

把上一帧 action 放进 observation,可以帮助策略学到更平滑的动作。

7. 地形信息

在复杂地形任务中,可能会加入周围高度采样,或者视觉/深度信息。

但这会让问题复杂很多,基础篇先不展开。

Action 到底是什么

四足 RL 的 action 不一定是“直接给电机多少电流”。

常见几种形式:

1. 关节位置目标偏移

这是很多 locomotion 工程喜欢的方式。

policy 输出一个归一化 action,然后变成目标关节角:

target_q = default_q + action_scale * action

优点是比较稳定,真机部署风险相对小一些。

2. 关节力矩

policy 直接输出 torque。

这种方式自由度更高,但更难训,也更危险。真机上如果没有严格限幅,很容易出问题。

3. 残差控制

传统控制器先给一个基础动作,RL policy 输出修正量。

这种方式常见于“传统控制 + 学习增强”的思路。

对刚开始学习的人来说,先理解“位置目标偏移 + PD”就够用了。

Reward 在这里起什么作用

强化学习不是直接告诉机器人“左前腿先抬,右后腿再抬”。

它更像是给机器人一个评价标准:

你这样走,得分高
你那样走,得分低

例如速度跟踪任务里,reward 可能包括:

  • 实际速度接近命令速度,加分。
  • 身体姿态稳定,加分或少扣分。
  • 力矩太大,扣分。
  • action 变化太快,扣分。
  • 脚打滑,扣分。
  • 机身撞地,扣分或终止。

机器人在仿真中不断试错,最后学到一种能拿高分的运动方式。

这里要注意一个很重要的点:

机器人学到的是 reward 允许的行为,不一定是人脑子里想象的行为。

如果 reward 写得不好,机器人可能会钻空子。

比如只奖励向前速度,不惩罚姿态和碰撞,它可能学会趴着滑、乱扭、用很奇怪的方式刷速度。

所以四足 RL 里 reward 设计非常关键。

为什么强化学习适合四足 locomotion

四足机器人运动控制难,是因为它有几个特点。

1. 接触很复杂

脚一会儿接触地面,一会儿离地。

接触力、摩擦、打滑、冲击都很难精确建模。

2. 动作空间高维

12 个关节同时控制,不是一个简单单输入单输出系统。

一个关节动作会影响整个身体。

3. 稳定性和任务目标耦合

机器人要走得快,但不能摔。

要省力,但不能不动。

要脚抬高,但不能动作夸张。

这些目标互相拉扯。

4. 环境变化很多

不同地面、坡度、台阶、摩擦、扰动都会影响运动。

手写规则很难覆盖所有情况。

强化学习的优势是,可以在仿真里生成大量情况,让策略通过试错学出相对鲁棒的行为。

强化学习和传统控制是什么关系

我不应该把它理解成“RL 取代传统控制”。

更合理的理解是:

传统控制提供结构、约束、安全边界
强化学习提供复杂行为的自动优化能力

实际系统里,经常是混合的。

比如:

  • RL policy 输出关节目标。
  • 底层还是 PD 控制。
  • 状态估计还是传统算法。
  • 安全保护还是工程规则。
  • 上层导航还是规划模块。
  • 真机部署还要限幅、急停和保护逻辑。

所以学习四足 RL,不是把传统控制扔掉,而是理解它在系统里接哪一层。

和模仿学习有什么区别

另一个容易混淆的是 imitation learning。

模仿学习通常是:

给机器人示范数据,让它模仿专家动作

强化学习通常是:

给机器人 reward,让它自己试错优化

两者可以结合。

比如先用动物运动数据、MPC 轨迹、人类设计步态做预训练,再用 RL 微调。

但基础 locomotion 里,很多经典工程是直接通过 reward 训练,而不是给每一步专家关节轨迹。

和大模型有什么区别

现在很容易把所有 AI 都往大模型上联想,但四足 locomotion policy 和语言大模型不是一回事。

语言大模型处理的是 token 序列,擅长语言、推理、知识组织。

四足 locomotion policy 处理的是连续控制信号,输出的是机器人动作。

当然,未来完整机器人系统里可能是:

大模型理解任务
导航模块规划路线
RL locomotion policy 负责身体运动
底层控制器执行关节动作

但在这套笔记里,重点先放在 locomotion policy 上。

一个具体闭环:从命令到走一步

假设机器人当前收到命令:向前走 0.4 m/s。

一次控制周期可能是:

  1. IMU 读取身体角速度和姿态相关信息。
  2. 编码器读取 12 个关节角和关节速度。
  3. 系统拼接 observation。
  4. 把 observation 输入 policy 网络。
  5. policy 输出 12 维 action。
  6. action 乘以 action_scale,加到默认关节角上。
  7. 得到 12 个目标关节角。
  8. PD 控制器计算力矩。
  9. 仿真器或真实电机执行。
  10. 机器人身体移动一点。
  11. 根据速度、姿态、能耗等计算 reward。
  12. 训练时用这些数据更新 policy;部署时则不更新,只继续执行。

训练和部署的区别也很重要:

  • 训练时:会计算 reward,会更新 policy。
  • 部署时:只执行 policy,不再根据 reward 更新。

训练时学到的东西长什么样

policy 学到的不是一条固定步态轨迹。

它更像一个反馈控制规律:

如果身体往左歪,就调整腿部动作把它拉回来
如果命令速度变大,就改变步频和步幅
如果某个关节位置偏了,就输出相应修正
如果上一帧 action 太大,就尽量平滑过渡

这也是为什么 observation 重要。没有反馈,机器人就只能执行固定动作;有了 observation,policy 才能根据当前状态调整动作。

我读代码时应该盯什么

有了这篇的概念后,后面读 legged_gym / Isaac Lab 这类代码,我应该优先找这些东西。

1. obs_buf 在哪里构造

看看 observation 里到底拼了哪些量。

2. actions 怎么处理

看看 action 是否被 clip、scale,最后如何变成 target joint position 或 torque。

3. commands 怎么采样

看看训练时给机器人什么速度命令,范围多大。

4. reward 函数有哪些项

看看它到底在奖励什么、惩罚什么。

5. reset 条件是什么

看看机器人什么情况下算失败。

这五个位置,比一开始看 PPO loss 更重要。

这一篇先记住的重点

我给自己总结成 8 条:

  1. 四足 RL locomotion 通常学的是低层运动策略,不是完整机器人“大脑”。
  2. 最小闭环是 observation → policy → action。
  3. policy 常常是一个神经网络,输入 obs,输出 action。
  4. action 很多时候不是直接力矩,而是关节位置目标偏移。
  5. reward 决定机器人会努力学成什么样。
  6. 强化学习适合四足,是因为接触复杂、动作高维、环境变化多。
  7. RL 不等于取代传统控制,实际系统往往是混合架构。
  8. 读代码时先看 obs、action、command、reward、reset。

最后

如果用一句话描述这篇笔记:

四足 RL 最常见的目标,是训练一个能根据机器人当前状态和运动命令,实时输出关节动作的低层运动策略。

下一篇我准备整理 MDP,也就是强化学习最基础的抽象:状态、动作、奖励、转移、终止到底在四足机器人里分别对应什么。


下一篇整理:02:用四足机器人理解 MDP

知识共享许可协议