Skip to content

强化学习基础与控制概念对照 ​

本页以人形机器人仿真中的 PPO 实验为例,介绍观测、动作、奖励、策略与训练过程,并用控制系统中的对应概念辅助说明。

更新:2026-10-19。本页保留控制到 RL 的基础翻译。我们已经做过 T1 速度跟踪及小桥动作训练;当前动手顺序看 roadmap.md,实际经过看 实验记录,日志与收敛看 训练与验收。不必把本页当作需要从零重做的任务清单。


先对一张表 ​

控制里你写的是控制器 (u = K(y)) 或 (u = -Kx)。RL 里换了几个名字,东西还是「测到什么 → 算出输入 → 对象动一步」。

控制概念RL 术语小桥上的含义
对象 / 被控过程环境 environment仿真里的机器人 + 地面;真机就是本体
状态 (x)(完整内部量)状态 (s)质心、接触力、所有连杆速度……仿真里上帝可见,真机没有
输出 (y)、传感器读数观测 (o) 或 observationIMU、关节角、关节速度、手柄给的速度命令
控制量 (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 后才能迁移”的限制。


过关检查 ​

能不看笔记回答:

  1. 观测和状态差在哪?真机走路为什么只能用观测?
  2. 为什么动作常常是目标关节角,而不是力矩?
  3. 奖励和 LQR 的 (Q,R) 是什么关系?
  4. mjlab、robot_lab、rl_sar 三个仓库各管哪一段?

结合自己跑过的配置回答,再读与当前问题直接相关的论文。理论查阅和动手可以交替进行。

dqx46 · Robotics / 算法工程项目与技术记录