Maxime Chevalier-Boisvert 7 роки тому
батько
коміт
2995425674

+ 20 - 0
gym_minigrid/envs/register.py

@@ -0,0 +1,20 @@
+from gym.envs.registration import register as gymRegister
+
+envSet = set()
+
+def register(
+    id,
+    entry_point,
+    reward_threshold=900
+):
+    assert id.startswith("MiniGrid-")
+
+    # Register the environment with OpenAI gym
+    gymRegister(
+        id=id,
+        entry_point=entry_point,
+        reward_threshold=reward_threshold
+    )
+
+    # Add the environment to the set
+    envSet.add(id)

+ 4 - 0
gym_minigrid/envs/rendering.py

@@ -62,6 +62,10 @@ class Window(QMainWindow):
             keyName = 'DOWN'
         elif e.key() == Qt.Key_Space:
             keyName = 'SPACE'
+        elif e.key() == Qt.Key_Return:
+            keyName = 'RETURN'
+        elif e.key() == Qt.Key_Escape:
+            keyName = 'ESCAPE'
 
         if keyName == None:
             return

+ 6 - 11
gym_minigrid/envs/simple_envs.py

@@ -1,5 +1,5 @@
-from gym.envs.registration import register
 from gym_minigrid.envs.minigrid_env import *
+from gym_minigrid.envs.register import register
 
 class EmptyEnv(MiniGridEnv):
     """
@@ -15,14 +15,12 @@ class EmptyEnv6x6(EmptyEnv):
 
 register(
     id='MiniGrid-Empty-8x8-v0',
-    entry_point='gym_minigrid.envs:EmptyEnv',
-    reward_threshold=1000.0
+    entry_point='gym_minigrid.envs:EmptyEnv'
 )
 
 register(
     id='MiniGrid-Empty-6x6-v0',
-    entry_point='gym_minigrid.envs:EmptyEnv6x6',
-    reward_threshold=1000.0
+    entry_point='gym_minigrid.envs:EmptyEnv6x6'
 )
 
 class DoorKeyEnv(MiniGridEnv):
@@ -60,14 +58,12 @@ class DoorKeyEnv16x16(DoorKeyEnv):
 
 register(
     id='MiniGrid-Door-Key-8x8-v0',
-    entry_point='gym_minigrid.envs:DoorKeyEnv',
-    reward_threshold=1000.0
+    entry_point='gym_minigrid.envs:DoorKeyEnv'
 )
 
 register(
     id='MiniGrid-Door-Key-16x16-v0',
-    entry_point='gym_minigrid.envs:DoorKeyEnv16x16',
-    reward_threshold=1000.0
+    entry_point='gym_minigrid.envs:DoorKeyEnv16x16'
 )
 
 class Room:
@@ -441,6 +437,5 @@ class FetchEnv(MiniGridEnv):
 
 register(
     id='MiniGrid-Fetch-8x8-v0',
-    entry_point='gym_minigrid.envs:FetchEnv',
-    reward_threshold=900.0
+    entry_point='gym_minigrid.envs:FetchEnv'
 )

+ 21 - 0
run_tests.py

@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+
+import random
+import gym
+from gym_minigrid.envs.register import envSet
+
+print('%d environments registered' % len(envSet))
+
+for envName in sorted(envSet):
+    #print(envName)
+
+    # Load the gym environment
+    env = gym.make(envName)
+    env.reset()
+    env.render('rgb_array')
+
+    numActions = env.action_space.n
+    for i in range(500):
+        action = random.randint(0, numActions - 1)
+        env.step(action)
+        env.render('rgb_array')

+ 8 - 2
standalone.py

@@ -2,6 +2,7 @@
 
 from __future__ import division, print_function
 
+import sys
 import numpy
 import gym
 import time
@@ -38,12 +39,17 @@ def main():
             action = MiniGridEnv.ACTION_FORWARD
         elif keyName == 'SPACE':
             action = MiniGridEnv.ACTION_TOGGLE
+        elif keyName == 'RETURN':
+            env.reset()
+        elif keyName == 'ESCAPE':
+            sys.exit(0)
         else:
-            "unknown key"
+            print("unknown key %s" % keyName)
+            return
 
         obs, reward, done, info = env.step(action)
 
-        print('reward=%s' % reward)
+        print('step=%s, reward=%s' % (env.stepCount, reward))
 
         if done:
             print('done!')