Cartpole 代码是如何工作的
使用 Isaac Lab 进行强化学习时,任务如何被注册?配置中的奖励、终止条件、观测数据在哪里生效?训练脚本如何将环境与 PPO 算法连接起来?本文顺着从注册到训练的流程,解析 Cartpole 项目中的代码逻辑。
执行以下指令:
python scripts/rsl_rl/train.py --task Template-Cartpole-v0 --num_envs 4096
该指令会执行训练 Cartpole 任务(Template-Cartpole-v0),同时调用 4096 个并行环境进行 PPO 训练。背后大致包含以下步骤:
- 启动 Isaac Sim
- 解析命令行参数
- 根据任务名找到「环境配置」和「算法配置」(Cartpole 的 MDP 和 PPO 超参)
- 用这份配置创建 Gym 环境(多个 Cartpole 并行仿真)
- 用 RSL-RL 的 PPO Runner 收集数据、更新策略,循环直到达到迭代数
一、任务识别与 Gym 注册
文件路径:source/Cartpole/Cartpole/tasks/manager_based/cartpole/__init__.py
import gymnasium as gym
from . import agents
gym.register(
id="Template-Cartpole-v0",
entry_point="isaaclab.envs:ManagerBasedRLEnv",
disable_env_checker=True,
kwargs={
"env_cfg_entry_point": f"{__name__}.cartpole_env_cfg:CartpoleEnvCfg",
"rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:PPORunnerCfg",
},
)
- id:环境的名字。Gym 通过 id 定位环境。
- entry_point:指向「用哪个模块里的哪个类」的字符串。
- kwargs:
- env_cfg_entry_point:指定环境配置类
CartpoleEnvCfg的路径。 - rsl_rl_cfg_entry_point:指定 PPO 配置类
PPORunnerCfg的路径。
- env_cfg_entry_point:指定环境配置类
gym.register 将名字、通用环境类以及两个配置类的路径绑定在一起。
二、环境配置 CartpoleEnvCfg
当执行 gym.make("Template-Cartpole-v0", cfg=env_cfg) 时,Isaac Lab 会根据 env_cfg_entry_point 加载 。这个类定义了 Cartpole 的场景结构、交互方式、奖励计算及终止条件。



