第二章、Isaaclab强化学习包装器(3):SKRL Wrapper

0 前言

官方文档:https://isaac-sim.github.io/IsaacLab/main/source/api/lab_rl/isaaclab_rl.html#module-isaaclab_rl.skrl
https://skrl.readthedocs.io/en/latest/intro/getting_started.html

在本节中,您将学习如何使用 skrl 库的各种组件来创建强化学习任务。

运行该程序:

  • 进入安装 isaac lab 时创建的conda虚拟环境
  • 在该环境下进入 isaac sim文件夹中运行source setup_conda_env.sh
  • 终端中输入./isaaclab.sh -p scripts/reinforcement_learning/skrll/train.py --task "Isaac-Cartpole-Direct-v0"运行你的代码,进行训练。

在这里插入图片描述

1 gym注册环境

import gymnasium as gym  # 导入Gymnasium库

# 在Gymnasium中注册名为"Isaac-Cartpole-Direct-v0"的自定义环境
gym.register(
    # 环境ID:唯一标识符,遵循Gym命名规范(通常包含版本号v0)
    id="Isaac-Cartpole-Direct-v0",
    
    # entry_point:指定环境类的入口位置
    # f"{__name__} 表示当前模块(文件),cartpole_env是模块内的类定义文件
    entry_point=f"{__name__}.cartpole_env:CartpoleEnv",  
    
    # 禁用Gym内置的环境检查器(适用于特殊环境或加速初始化)
    disable_env_checker=True,  
    
    # 传递给环境构造函数的额外参数(字典形式)
    kwargs={
        # 环境配置类的导入路径(指向CartpoleEnvCfg类)
        "env_cfg_entry_point": f"{__name__}.cartpole_env:CartpoleEnvCfg",
        
        # RL Games库的PPO算法配置文件路径(YAML格式)
        # agents是包含配置文件的子模块,rl_games_ppo_cfg.yaml是配置文件
        "rl_games_cfg_entry_point": f"{agents.__name__}:rl_games_ppo_cfg.yaml",
        
        # RSL-RL库的PPO算法配置类路径
        # rsl_rl_ppo_cfg是模块,CartpolePPORunnerCfg是配置类
        "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:CartpolePPORunnerCfg",
        
        # SKRL库的PPO算法配置文件路径(YAML格式)
        "skrl_cfg_entry_point": f"{agents.__name__}:skrl_ppo_cfg.yaml",
        
        # Stable Baselines3库的PPO算法配置文件路径
        "sb3_cfg_entry_point": f"{agents.__name__}:sb3_ppo_cfg.yaml",
    },
)

2 SKRL Wrapper 包装器

skrl即可以通过包装器创建环境,也可以直接调用skrl库的API创建环境:

## 使用包装器
from isaaclab_rl.skrl import SkrlVecEnvWrapper
env = SkrlVecEnvWrapper(env, ml_framework="torch")  # or ml_framework="jax"
## 使用skrl库
from skrl.envs.torch.wrappers import wrap_env  # for PyTorch, or...
from skrl.envs.jax.wrappers import wrap_env    # for JAX

env = wrap_env(env, wrapper="isaaclab")

skrl的官网中能看到更多的内容:
在这里插入图片描述
由于SKRL Wrapper非常简单,实际上只是把整个包封装好拿来用,因此下述内容是单纯针对skrl的。

3 SKRL

首先我们先来看一下scripts/reinforcement_learning/skrll/train.py中创建强化学习环境并进行训练部分的代码:

# 创建Isaac Gym环境实例
# args_cli.task: 通过命令行参数指定的任务名称(如"Cartpole-v1")
# cfg=env_cfg: 传入预先定义的环境配置参数(如观测/动作空间设置、奖励函数等)
# render_mode: 若args_cli.video为True则启用RGB数组渲染(用于录制视频),否则不渲染以提升性能
env = gym.make(args_cli.task, cfg=env_cfg, render_mode="rgb_array" if args_cli.video else None)
# 使用Skrl库的向量环境包装器对原始环境进行封装
# 目的:将Isaac Gym环境适配到skrl的训练框架中
env = SkrlVecEnvWrapper(env, ml_framework=args_cli.ml_framework)  # same as: `wrap_env(env, wrapper="auto")`
# 创建skrl训练运行器实例,用于管理整个训练流程
# https://skrl.readthedocs.io/en/latest/api/utils/runner.html
runner = Runner(env, agent_cfg)
# 读取模型
if resume_path:
    print(f"[INFO] Loading model checkpoint from: {resume_path}")
    runner.agent.load(resume_path)
# 启动训练流程
runner.run()

关于skrl训练运行器的更详细内容请参考:https://skrl.readthedocs.io/en/latest/api/utils/runner.html
在这里插入图片描述
可以通关官方案例了解更多:https://skrl.readthedocs.io/en/latest/intro/examples.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值