Notes

基于 Manager 的环境

须知

  • 如上图所示,一个 Task 的组件包括:
    • Interactive Scene:导入 usd 文件
    • Action Manager:控制机器人关节位置
    • Observation Manager:定义环境的返回值
    • Termination Manager:定义任务完成的情况
    • Event Manager:定义事件发生时的行动,比如说环境重置时如何初始化
  • Task 存放在 IsaacLab\source\isaaclab_tasks\isaaclab_tasks
  • 在该目录下创建 custom 文件夹以创建自己的项目 可自定义名称
    • 在此之下有 mdp 文件夹:IsaacLab 的 MDP(Markov Decision Process)实现层,定义环境的行为
  • @ 在 custom 文件夹下创建 __init__.py 文件,登记任务
import gymnasium as gym
# 导入你的配置类
from .microwave_env_cfg import MicrowaveEnvCfg
 
# 注册 task 到 gym registry
gym.register(
    id="Isaac-Microwave-Franka-v0",
    entry_point="isaaclab.envs:ManagerBasedRLEnv",   # 所有 manager-based env 的入口都是这个
    disable_env_checker=True,
    kwargs={
        "env_cfg_entry_point": "isaaclab_tasks.custom.microwave_env_cfg:MicrowaveEnvCfg"
    },
)

代码

  • InteractiveSceneCfg
    • AssetBaseCfg:环境
    • ArticulationCfg:机器人
  • ActionsCfg
    • JointPositionActionCfg:对 arm action
    • BinaryJointPositionActionCfg:对 gripper action
    • DifferentialInverseKinematicsActionCfg:遥操作专用,传入一个控制器
  • ObservationsCfg
    • PolicyCfg (ObsGroup):定义需要观察的信息,比如 actions/joint_pos/joint_vel 等,通过函数形式实现
      • ObsTerm:传入 func,可以自定义,返回信息在 env 中的相应变量
    • ? RGBCameraPolicyCfg (ObsGroup):定义摄像头
    • SubtaskCfg (ObsGroup):定义不同任务阶段需要用到的信息,比如 grasp、stack
  • TerminationsCfg
    • DoneTerm:传入 func,可以自定义
  • EventCfg
    • EventTerm:传入 func 和 mode,其中 mode 常用的为 reset,即重置时执行随机初始化
  • DevicesCfg:遥操作专用

Example

IsaacLab\source\isaaclab_tasks\isaaclab_tasks\ manager_based\manipulation\stack\stack_env_cfg.py

StackEnvCfg
├── scene (ObjectTableSceneCfg)
│     ├── robot: ArticulationCfg
│     ├── ee_frame: FrameTransformerCfg
│     ├── table
│     ├── plane
│     ├── light
│
├── observations (ObservationsCfg)
│     ├── policy (PolicyCfg)
│     ├── rgb_camera (RGBCameraPolicyCfg)
│     └── subtask_terms (SubtaskCfg)
│
├── actions (ActionsCfg)
│     ├── arm_action: JointPositionActionCfg
│     └── gripper_action: BinaryJointPositionActionCfg
│
├── terminations: TerminationsCfg
├── rewards = None  (NOT RL)
├── events = None
├── commands = None
├── curriculum = None

Reference