Task Components
较为繁琐的说法
- Setting up the Task Class
- Loading (Robots, Assets, Sensors, etc.) (run once)
- Episode initialization / Randomization (run every env.reset)
- Success/Failure Condition (run every env.step)
- Extra Observations (run every env.step)
- (Optional) Dense Reward Function (run every env.step)
- (Optional) Setting up cameras/sensors for observations and rendering/recording (run once)

env.step
负责根据 Action,然后在物理仿真,模拟无理式解的变化,并计算 Reward。

简单来说,一个类包含这些元素:
@register_env()
方便外部调用class CustomEnv(BaseEnv)
使用继承,快速开发新 Testcase- (成员变量)
SUPPORTED_ROBOTS = []
定义该 Testcase 里使用的 Robot - (成员变量)
agent: Union[...]
Robot,也即 Agent
Environment Class
首先,我们定义一个类继承 BaseEnv
,这个类是我们初始化 Environment 的入口。同时需要调用 mani_skill.utils.registeration.register_env()
函数进行“注册”(主要是定义名称和限定最大迭代步数)
1 |
|
然后我们在这个环境里定义我们需要的 Agent
定义物体
位置与朝向
建议在 _load_scene()
的时候就设置一次位置与朝向,然后在 _initialize_episode()
中