第十三讲、isaaclab中修改工作流的RL环境
0 前言
官方教程:https://isaac-sim.github.io/IsaacLab/main/source/tutorials/03_envs/modify_direct_rl_env.html
Isaacsim+Isaaclab安装:https://blog.csdn.net/m0_47719040/article/details/146389391?spm=1001.2014.3001.5502
在前面的教程中我们已经学习了如何在工作流中创建RL环境并创建任务,在gym中注册环境并基于RL进行训练,现在我们将研究如何对先有任务进行小修改。
在本教程中,我们将对直接工作流 Humanoid 任务进行修改,在不影响原有代码的情况下,将简单的人形模型更改为 Unitree H1 人形机器人。
教程对应的脚本为train.py
在scripts/reinforcement_learning/rl_games
目录下。
运行该程序:
- 进入安装 isaac lab 时创建的conda虚拟环境
- 在该环境下进入 isaac sim文件夹中运行
source setup_conda_env.sh
- 终端中输入
./isaaclab.sh -p scripts/reinforcement_learning/rl_games/train.py --task Isaac-Humanoid-Direct-v0
运行你的代码,可以看到为经过修改的人形机器人的训练情况,后面我们将会将里面的简单人形机器人修改为Unitree H1 人形机器人。
对应的环境文件在
/IsaacLab/source/isaaclab_tasks/isaaclab_tasks/direct/humanoid
中。
1 复制文件并注册新任务
为了避免修改现有任务的代码,我们将复制包含python代码的文件,并在该副本上修改。
STEP1:
复制/IsaacLab/source/isaaclab_tasks/isaaclab_tasks/direct/humanoid/humanoid_env.py
并重命名为h1_env
STEP2:
将HumanoidEnv
及HumanoidEnvCfg
修改为H1Env
及H1EnvCfg
,为了避免在注册环境时导入时出现名称冲突。
STEP3:
修改__init__.py
用来注册Isaac-H1-Direct-v0
。在__init__.py
中添加:
from .h1_env import H1Env, H1EnvCfg
gym.register(id="Isaac-H1-Direct-v0",entry_point="isaaclab_tasks.direct.humanoid:H1Env",disable_env_checker=True,kwargs={"env_cfg_entry_point": H1EnvCfg,"rl_games_cfg_entry_point": f"{agents.__name__}:rl_games_ppo_cfg.yaml","rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:HumanoidPPORunnerCfg","skrl_cfg_entry_point": f"{agents.__name__}:skrl_ppo_cfg.yaml",},
)
2 更换机器人
修改副本/IsaacLab/source/isaaclab_tasks/isaaclab_tasks/direct/humanoid/h1_env.py
STEP1:修改资产
from isaaclab_assets import H1_CFG # 原来的是:from isaaclab_assets import HUMANOID_CFG
robot: ArticulationCfg = H1_CFG.replace(prim_path="/World/envs/env_.*/Robot")
STEP2:修改动作空间和观测维度
action_space = 19
observation_space = 69
STEP3:修改机器人控制参数
joint_gears: list = [50.0, # left_hip_yaw50.0, # right_hip_yaw50.0, # torso50.0, # left_hip_roll50.0, # right_hip_roll50.0, # left_shoulder_pitch50.0, # right_shoulder_pitch50.0, # left_hip_pitch50.0, # right_hip_pitch50.0, # left_shoulder_roll50.0, # right_shoulder_roll50.0, # left_knee50.0, # right_knee50.0, # left_shoulder_yaw50.0, # right_shoulder_yaw50.0, # left_ankle50.0, # right_ankle50.0, # left_elbow50.0, # right_elbow
]
运行该程序:
- 进入安装 isaac lab 时创建的conda虚拟环境
- 在该环境下进入 isaac sim文件夹中运行
source setup_conda_env.sh
- 终端中输入
./isaaclab.sh -p scripts/reinforcement_learning/rl_games/train.py --task Isaac-H1-Direct-v0 --headless
运行你的代码,修改为Unitree H1 人形机器人后的训练。并通过./isaaclab.sh -p scripts/reinforcement_learning/rl_games/play.py --task Isaac-H1-Direct-v0
直接查看结果。