|
@@ -2,10 +2,9 @@ from gym_minigrid.minigrid import *
|
|
|
from gym_minigrid.register import register
|
|
|
from operator import add
|
|
|
|
|
|
-
|
|
|
class DynamicObstaclesEnv(MiniGridEnv):
|
|
|
"""
|
|
|
- Empty grid environment with moving obstacles
|
|
|
+ Single-room square grid environment with moving obstacles
|
|
|
"""
|
|
|
|
|
|
def __init__(
|
|
@@ -68,39 +67,34 @@ class DynamicObstaclesEnv(MiniGridEnv):
|
|
|
for i_obst in range(len(self.obstacles)):
|
|
|
old_pos = self.obstacles[i_obst].cur_pos
|
|
|
top = tuple(map(add, old_pos, (-1, -1)))
|
|
|
+ self.grid.set(*old_pos, None)
|
|
|
self.place_obj(self.obstacles[i_obst], top=top, size=(3,3), max_tries=100)
|
|
|
- self.grid.set(old_pos[0], old_pos[1], None)
|
|
|
if np.array_equal(self.obstacles[i_obst].cur_pos, self.agent_pos):
|
|
|
reward = -1
|
|
|
done = True
|
|
|
- return obs, reward, done, info
|
|
|
|
|
|
+ return obs, reward, done, info
|
|
|
|
|
|
class DynamicObstaclesEnv5x5(DynamicObstaclesEnv):
|
|
|
def __init__(self):
|
|
|
super().__init__(size=5, n_obstacles=2)
|
|
|
|
|
|
-
|
|
|
class DynamicObstaclesRandomEnv5x5(DynamicObstaclesEnv):
|
|
|
def __init__(self):
|
|
|
super().__init__(size=5, agent_start_pos=None, n_obstacles=2)
|
|
|
|
|
|
-
|
|
|
class DynamicObstaclesEnv6x6(DynamicObstaclesEnv):
|
|
|
def __init__(self):
|
|
|
super().__init__(size=6, n_obstacles=3)
|
|
|
|
|
|
-
|
|
|
class DynamicObstaclesRandomEnv6x6(DynamicObstaclesEnv):
|
|
|
def __init__(self):
|
|
|
super().__init__(size=6, agent_start_pos=None, n_obstacles=3)
|
|
|
|
|
|
-
|
|
|
class DynamicObstaclesEnv16x16(DynamicObstaclesEnv):
|
|
|
def __init__(self):
|
|
|
super().__init__(size=16, n_obstacles=8)
|
|
|
|
|
|
-
|
|
|
register(
|
|
|
id='MiniGrid-Dynamic-Obstacles-5x5-v0',
|
|
|
entry_point='gym_minigrid.envs:DynamicObstaclesEnv5x5'
|
|
@@ -129,4 +123,4 @@ register(
|
|
|
register(
|
|
|
id='MiniGrid-Dynamic-Obstacles-16x16-v0',
|
|
|
entry_point='gym_minigrid.envs:DynamicObstaclesEnv16x16'
|
|
|
-)
|
|
|
+)
|