OpenAI gym 自定义环境注册方法
因为要自己搭一个机器人环境,要借鉴一下Fetch-PickAndPlace-v1的环境,在它的基础上改进,所以就用它来注册一个新的环境来改。
方法
写好myenv.py
这里我直接复制粘贴一下pick_and_place.py,然后把类的名字改成MyEnv.py即可。
放置
放置可以有三种方式:
将myenv.py放置到
~/anaconda3/envs/torch/lib/python3.6/site-packages/gym/envs/robotics
中;- 放到
~/anaconda3/envs/torch/lib/python3.6/site-packages/gym/envs/robotics/fetch
中; - 自己在
~/anaconda3/envs/torch/lib/python3.6/site-packages/gym/envs/robotics
位置新建一个文件夹myenv,然后放到~/anaconda3/envs/torch/lib/python3.6/site-packages/gym/envs/robotics/myenv
中。建立文件夹的目的是为了放一些xml和texture文件。
注册
注册分这样几步:
- 修改
~/anaconda3/envs/torch/lib/python3.6/site-packages/gym/envs/robotics/
下的__init__.py,根据上一步的放置方式,添加一行即可。我用的是文件夹的方式,故添加:
from gym.envs.robotics.myenv.myenv import MyEnv
- 修改
~/anaconda3/envs/torch/lib/python3.6/site-packages/gym/envs/
下的__init__.py,添加一个register。由于我是完全在pick and place环境上面改的,我就在该文件的pick and place 的register下面照猫画虎添加了,即:
register(
id='MyEnv{}-v0'.format(suffix),
entry_point='gym.envs.robotics:MyEnv',
kwargs=kwargs,
max_episode_steps=50,
)
然后就ok啦!
import gym
env = gym.make('MyEnv-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action
参考:
https://github.com/openai/gym/blob/master/docs/creating-environments.md