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() 中