外观
强化学习基础与控制概念对照
本页以人形机器人仿真中的 PPO 实验为例,介绍观测、动作、奖励、策略与训练过程,并用控制系统中的对应概念辅助说明。
更新:2026-10-19。本页保留控制到 RL 的基础翻译。我们已经做过 T1 速度跟踪及小桥动作训练;当前动手顺序看 roadmap.md,实际经过看 实验记录,日志与收敛看 训练与验收。不必把本页当作需要从零重做的任务清单。
先对一张表
控制里你写的是控制器 (u = K(y)) 或 (u = -Kx)。RL 里换了几个名字,东西还是「测到什么 → 算出输入 → 对象动一步」。
| 控制概念 | RL 术语 | 小桥上的含义 |
|---|---|---|
| 对象 / 被控过程 | 环境 environment | 仿真里的机器人 + 地面;真机就是本体 |
| 状态 (x)(完整内部量) | 状态 (s) | 质心、接触力、所有连杆速度……仿真里上帝可见,真机没有 |
| 输出 (y)、传感器读数 | 观测 (o) 或 observation | IMU、关节角、关节速度、手柄给的速度命令 |
| 控制量 (u) | 动作 (a) 或 action | 通常是各关节的目标位置(内环还是 PD,像串级) |
| 性能指标 / 代价 (J) | 奖励 (r)(要最大化,相当于 (r \approx -c)) | 「按命令走了」「没倒」「别耗扭矩」加权求和 |
| 控制器 (K) | 策略 (\pi(a \mid o)) | 神经网络:输入观测向量,输出动作 |
| 有限时域代价-to-go | 价值函数 (V(s)) / (Q(s,a)) | 从现在起还能攒多少奖励的估计 |
| 采样周期 (T_s) | 一步 step | 常见 50–200 Hz 策略,电机环更快 |
| 一次实验从复位到结束 | 回合 episode | 摔倒 / 超时就 reset |
| 离线优化控制器参数 | 训练 | 用环境交互优化网络权重,不等于辨识机械参数 |
| 调好的 (K) 下到 PLC | 部署 | 导出 ONNX,板上前向推理 |
关键句:观测不是状态。
状态是对象真实长什么样;观测是你装得上的传感器拼出来的向量。LQR 假设 (x) 都能用;真机走路只能用 (y)。RL 论文里有人把观测也写成 (s),那是图省事,默认「观测已经够当状态用」。
策略可将 IMU、关节、上一拍动作、命令等拼成观测,某些方案还使用历史、循环网络或显式状态估计器。输入拼接本身并不保证网络完成了 Kalman 滤波或可靠的接触力/速度估计;真机上要核对哪些量可测、哪些来自估计、哪些只在仿真 critic 中使用。
观测,用走路任务说一遍
阶段 1 的速度跟踪,一步里机器人收到一个向量,例如:
o = [
基座角速度 (IMU), # 传统:陀螺
重力在机体系的投影, # 传统:由加速度计估计的倾角
各关节 q, dq, # 传统:编码器
上一拍动作 a_{t-1}, # 有点像把执行器状态纳入反馈
命令 [vx, vy, yaw_rate] # 传统:外环参考
]很多任务的网络输出 a 还需要比例与偏置,才得到关节目标。简化结构为:
q_des = q_default + action_scale * a
τ = kp * (q_des - q) - kd * dq # 之后还受执行器限制也就是 RL 只当外环,PD 当内环。这和「位置环套电流环」是同一结构。所以观测里经常要包含 q:外环得知道内环跟没跟上。
奖励不是「对」或「错」一个标量那么简单,是手写的一堆项,很像你加权 LQR 的 (Q,R):
- 速度跟命令接近 → 正奖励(跟踪误差)
- 高度太低 / 倾角太大 → 负奖励或直接结束回合(约束)
- 扭矩、动作平滑 → 负奖励(控制能量、执行器限制)
PPO 不会替你发明这些。 奖励函数 = 你以前写的指标,只是用采样优化而不是 Riccati。
和 LQR / MPC 差在哪(心里有数就行)
| LQR / MPC | 我们要用的 RL(PPO) | |
|---|---|---|
| 模型 | 要 (A,B) 或预测模型 | 训练时有仿真当模型;部署时策略不再解模型 |
| 输出 | 往往线性 / 在线优化 | 非线性网络,离线训好,在线只做矩阵乘法 |
| 接触、落地 | 模型很难写对 | 仿真里撞了就撞了,靠采样 |
| 保证 | 有稳定性讨论 | 几乎没有证书;靠域随机和真机试 |
| 调什么 | (Q,R)、约束 | 观测里塞什么、奖励权重、域随机范围 |
你不需要先接受「RL 更先进」。阶段 1 选它,是因为开源人形走路几乎全是这条,仿真接触好写,部署是一张网。
不要从哪开始
- 通读 Sutton & Barto 再动手:太慢,前面大量赌徒机、格子世界,和关节 PD 对不上。当词典查「MDP / 回报 / 策略」即可。
- DQN、Rainbow、Atari:离散按键,不是连续关节。
- 直接读 GMT / SONIC / PPO 原文:你还没有「观测向量 × 策略网络」的手感。
- 从零实现 PPO:当使用者,训练器跟 mjlab 走。
- rl_sar 当第一份代码: 那是部署仓,看不到奖励和 PPO 更新。
我们实际使用的项目
- mjlab:最初从 G1 velocity 理解环境。已有
/home/z/robotics/mjlab,不重复克隆。 - BoosterT1mjlab:后来使用的社区 T1 locomotion/tracking,独立
.venv固定 mjlab 1.3.0 等依赖;原版复现与本地头部奖励分别记录。 /home/z/bridge/rl/bridge_tracking/:当前小桥模型、PPO tracking、重定向、完整评估和动态回放。- robot_lab:Isaac Lab 训练扩展;rl_sar:部署参照,和训练任务区分。
实际入口、版本和命令见 workspace.md 与 实验记录。4096 环境已经在本机小桥舞蹈任务验证,不把这个规模当作所有相机/机器人任务的硬件保证。
带着已有实验继续读 PPO
策略是带参数的控制器;采样得到奖励和价值估计,用优势估计判断动作相对预期是否有利,再更新策略。PPO 的裁剪目标限制了部分更新激励,不是严格稳定性或每次更新步长的保证。
参考 Policy Gradients 和 PPO。先对照代码里的 rollout、value、advantage、policy loss,再补公式。
现在已经可以结合 tracking 看:参考如何进入观测,姿态/速度误差怎样变为奖励,为什么缺少头部约束会偏头,为什么修复有问题的参考比盲目增加训练轮数更有效。下一项学习由当前实验需要决定,不继续沿用旧笔记“tracking 现在禁止”“等官方 URDF 后才能迁移”的限制。
过关检查
能不看笔记回答:
- 观测和状态差在哪?真机走路为什么只能用观测?
- 为什么动作常常是目标关节角,而不是力矩?
- 奖励和 LQR 的 (Q,R) 是什么关系?
- mjlab、robot_lab、rl_sar 三个仓库各管哪一段?
结合自己跑过的配置回答,再读与当前问题直接相关的论文。理论查阅和动手可以交替进行。