فهرست منبع

Removed "advice" from observations. Randomized GoToDoor room size.

Maxime Chevalier-Boisvert 7 سال پیش
والد
کامیت
3d0c94f876
5فایلهای تغییر یافته به همراه23 افزوده شده و 35 حذف شده
  1. 1 2
      gym_minigrid/envs/fetch.py
  2. 15 14
      gym_minigrid/envs/gotodoor.py
  3. 1 19
      gym_minigrid/envs/gotoobject.py
  4. 4 0
      gym_minigrid/rendering.py
  5. 2 0
      standalone.py

+ 1 - 2
gym_minigrid/envs/fetch.py

@@ -86,8 +86,7 @@ class FetchEnv(MiniGridEnv):
 
         obs = {
             'image': obs,
-            'mission': self.mission,
-            'advice' : ''
+            'mission': self.mission
         }
 
         return obs

+ 15 - 14
gym_minigrid/envs/gotodoor.py

@@ -11,6 +11,7 @@ class GoToDoorEnv(MiniGridEnv):
         self,
         size=5
     ):
+        assert size >= 5
         super().__init__(gridSize=size, maxSteps=10*size)
 
         self.reward_range = (-1000, 1000)
@@ -19,17 +20,14 @@ class GoToDoorEnv(MiniGridEnv):
         self.waitEnds = True
 
     def _genGrid(self, width, height):
-        assert width == height
+        # Create the grid
+        grid = Grid(width, height)
 
-        # Randomize the player start position and orientation
-        self.startPos = self._randPos(
-            1, width-1,
-            1, height-1
-        )
-        self.startDir = self._randInt(0, 4)
+        # Randomly vary the room width and height
+        width = self._randInt(5, width+1)
+        height = self._randInt(5, height+1)
 
-        # Create a grid surrounded by walls
-        grid = Grid(width, height)
+        # Generate the surrounding walls
         for i in range(0, width):
             grid.set(i, 0, Wall())
             grid.set(i, height-1, Wall())
@@ -37,6 +35,13 @@ class GoToDoorEnv(MiniGridEnv):
             grid.set(0, j, Wall())
             grid.set(width-1, j, Wall())
 
+        # Randomize the player start position and orientation
+        self.startPos = self._randPos(
+            1, width-1,
+            1, height-1
+        )
+        self.startDir = self._randInt(0, 4)
+
         # Generate the 4 doors at random positions
         doorPos = []
         doorPos.append((self._randInt(2, width-2), 0))
@@ -75,8 +80,7 @@ class GoToDoorEnv(MiniGridEnv):
 
         obs = {
             'image': obs,
-            'mission': self.mission,
-            'advice' : ''
+            'mission': self.mission
         }
 
         return obs
@@ -94,14 +98,11 @@ class GoToDoorEnv(MiniGridEnv):
         # Don't let the agent open any of the doors
         if action == self.actions.toggle:
             done = True
-            reward = -1
 
         # Reward waiting in front of the target door
         if action == self.actions.wait:
             if (ax == tx and abs(ay - ty) == 1) or (ay == ty and abs(ax - tx) == 1):
                 reward = 1
-            else:
-                reward = 0
             done = self.waitEnds
 
         obs = self._observation(obs)

+ 1 - 19
gym_minigrid/envs/gotoobject.py

@@ -72,23 +72,6 @@ class GoToObjectEnv(MiniGridEnv):
         self.targetPos = objPos[objIdx]
 
         descStr = '%s %s' % (self.targetColor, self.targetType)
-
-        """
-        # Generate the mission string
-        idx = self._randInt(0, 5)
-        if idx == 0:
-            self.mission = 'get a %s' % descStr
-        elif idx == 1:
-            self.mission = 'go get a %s' % descStr
-        elif idx == 2:
-            self.mission = 'fetch a %s' % descStr
-        elif idx == 3:
-            self.mission = 'go fetch a %s' % descStr
-        elif idx == 4:
-            self.mission = 'you must fetch a %s' % descStr
-        assert hasattr(self, 'mission')
-        """
-
         self.mission = 'go to the %s' % descStr
         #print(self.mission)
 
@@ -101,8 +84,7 @@ class GoToObjectEnv(MiniGridEnv):
 
         obs = {
             'image': obs,
-            'mission': self.mission,
-            'advice' : ''
+            'mission': self.mission
         }
 
         return obs

+ 4 - 0
gym_minigrid/rendering.py

@@ -64,6 +64,10 @@ class Window(QMainWindow):
             keyName = 'SPACE'
         elif e.key() == Qt.Key_Return:
             keyName = 'RETURN'
+        elif e.key() == Qt.Key_Alt:
+            keyName = 'ALT'
+        elif e.key() == Qt.Key_Control:
+            keyName = 'CTRL'
         elif e.key() == Qt.Key_Escape:
             keyName = 'ESCAPE'
 

+ 2 - 0
standalone.py

@@ -38,6 +38,8 @@ def main():
             action = env.actions.forward
         elif keyName == 'SPACE':
             action = env.actions.toggle
+        elif keyName == 'CTRL':
+            action = env.actions.wait
         elif keyName == 'RETURN':
             env.reset()
         elif keyName == 'ESCAPE':