前言
在人形机器人运动控制领域,强化学习(RL)已成为核心方案之一。而将算法落地到仿真或真机,则是一个完整的工程体系。其中,经典强化学习框架 RSL-RL 因其模块化设计和高效性,被广泛引用和复用。
本文将系统梳理 RSL-RL 的架构设计,并深入其 PPO 算法实现细节,同时对比分析宇树开源的 unitree_rl_gym 及 unitree_sdk2_python 在部署中的角色,帮助开发者理解从算法训练到工程部署的关键路径。
RSL-RL 框架架构概览
RSL-RL 主要包含三大组件:Runners、Algorithms 和 Networks。

- Runner:管理环境步进和智能体学习的调度器,如
on_policy_runner.py。 - Networks:供算法使用的网络结构,包括 MLP、Transformer 等变体。
- Algorithms:具体的强化学习算法实现,目前主要支持 PPO 和类似 DAgger 的 BC 算法。
此外,框架还封装了环境接口(env)和模型模块(modules),支持多种输入数据格式,如关节状态、深度图像等。
代码结构
rsl_rl/
├── config/ # 配置文件
├── algorithms/ # 强化学习算法实现,如 PPO
├── env/ # 环境封装
├── modules/ # 模型组件
│ ├── actor_critic.py # 基础 Actor-Critic 网络
│ ├── actor_critic_recurrent.py # 循环神经网络版
│ └── ...
├── runners/ # 训练运行器
├── storage/ # 数据存储
└── utils/ # 工具函数
这个模块定义了强化学习的核心组件,包括不同版本的 Actor-Critic 网络架构、PPO 算法实现以及训练运行器。
PPO 算法核心实现
RSL-RL 的核心在于 algorithms/ppo.py。这里实现了近端策略优化(Proximal Policy Optimization)算法。
初始化配置
构造函数接收网络模型及一系列超参数,如学习周期、小批量数量、裁剪参数、折扣因子等。
import torch
import torch.nn as nn
import torch.optim as optim
from rsl_rl.modules import ActorCriticTransformer
from rsl_rl.storage import RolloutStorage
class PPO:
def __init__(self,
actor_critic,
num_learning_epochs=1,
num_mini_batches=,
clip_param=,
gamma=,
lam=,
value_loss_coef=,
entropy_coef=,
learning_rate=,
max_grad_norm=,
use_clipped_value_loss=,
schedule=,
desired_kl=,
device=):
.device = device
.desired_kl = desired_kl
.schedule = schedule
.learning_rate = learning_rate
.storage =
.optimizer = optim.Adam(actor_critic.parameters(), lr=.learning_rate)


