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
- PolicyCfg (ObsGroup):定义需要观察的信息,比如 actions/joint_pos/joint_vel 等,通过函数形式实现
- TerminationsCfg
- DoneTerm:传入 func,可以自定义
- EventCfg
- EventTerm:传入 func 和 mode,其中 mode 常用的为 reset,即重置时执行随机初始化
- DevicesCfg:遥操作专用
Example
IsaacLab\source\isaaclab_tasks\isaaclab_tasks\manager_based\manipulation\stack\stack_env_cfg.pyStackEnvCfg ├── 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
