Exemple #1
0
 def _gen_world(self):
     room = self.add_rect_room(min_x=0,
                               max_x=self.size,
                               min_z=0,
                               max_z=self.size)
     self.boxes = []
     for _ in range(self.distractors):
         color = np.random.choice(COLOR_NAMES)
         self.boxes.append(self.place_entity(Box(color=color)))
     self.target_box = self.place_entity(Box(color=self.target_color))
     self.place_agent()
Exemple #2
0
 def _construct(self):
     room = self.add_rect_room(min_x=0,
                               max_x=self.size,
                               min_z=0,
                               max_z=self.size)
     if self.have_goal:
         self.box = self.place_entity(Box(color='red'))
Exemple #3
0
 def _gen_world(self):
     print('bar !')
     room = self.add_rect_room(min_x=0,
                               max_x=self.size,
                               min_z=0,
                               max_z=self.size)
     self.boxes = []
     self.n = np.random.randint(self.min_obj, self.max_obj + 1)
     for _ in range(self.n):
         color = np.random.choice(COLOR_NAMES)
         self.boxes.append(self.place_entity(Box(color=color)))
     self.place_agent()
Exemple #4
0
    def setUp(self):
        name = self.shortDescription()
        reward = 0

        if name == "Empty":  # wird die setUp Methode mit "Empty" aufgerufen,
            self.env = gym.make(
                'MiniWorld-HAWKMaze-v0'
            )  # zuerst wird das HawkMaze Environment erstellt
            self.env.room_size = 100  # der Raum wird auf eine Größe von 100x100 gesetzt
            self.env.anzahl_objs = 0  # wird die Anzahl der Boxen auf 0 gesetzt
            self.env.reset(
            )  # anschließend wird das Environment neugestartet (zur Initialisierung)

        if name == "Boxes":  # wird die setUp Methode mit "Empty" aufgerufen,
            self.env = gym.make(
                'MiniWorld-HAWKMaze-v0'
            )  # zuerst wird das HawkMaze Environment erstellt
            self.env.anzahl_objs = 10  # wird die Anzahl der Boxen auf 10 gesetzt
            self.env.reset(
            )  # anschließend wird das Environment neugestartet (zur Initialisierung)

        if name == "Parameter_Test":  # wird die setUp Methode mit "Place_Agent_on_defined_Position" aufgerufen,
            self.env = gym.make(
                'MiniWorld-HAWKMaze-v0'
            )  # Anfangs wird das hawkmaze Environment erstellt
            self.env.num_rows = 10  # Die Anzahl der Zeilen beträgt 50
            self.env.num_cols = 10  # Die Anzahl der Spalten beträgt 100
            self.env.anzahl_objs = 10  # Es werden 10 Objekte platziert

        if name == "Place_Agent_on_defined_Position":  # wird die setUp Methode mit "Place_Agent_on_defined_Position" aufgerufen,
            self.env = gym.make(
                'MiniWorld-HAWKMaze-v0'
            )  # zuerst wird das HawkMaze Environment erstellt
            self.env.room_size = 5  # Der Raum wird auf eine Größe von 100x100 gesetzt, damit es nicht zu Kollisionen kommt
            self.env.num_rows = 2
            self.env.num_cols = 2
            self.env.anzahl_objs = 0
            self.env.reset()  # das Environment wird neu gestartet
            self.env.place_entity(  # Platzieren einer Box an der Stelle x=15, z=10
                Box(color='red', size=0.9),
                pos=np.array([2, 0, 1]),
                dir=0)
            self.env.place_agent(  # Platzieren des Agents an einer definierten Stelle
                dir=math.pi / 2,
                min_x=1.5,
                max_x=2,
                min_z=3,
                max_z=4)
Exemple #5
0
    def _gen_world(self):
        color_names = list(COLOR_NAMES)
        color_names.pop(2)  # remove grey
        # we can change the textures in the kwargs here
        room = self.add_rect_room(min_x=0,
                                  max_x=self.size,
                                  min_z=0,
                                  max_z=self.size,
                                  wall_height=4.)

        # place agent
        self.place_entity(ent=self.agent,
                          pos=np.array([0.1, 0., 0.1]),
                          dir=-math.pi / 4)

        self.boxes = []
        for i in range(self.n_boxes):
            self.boxes.append(self.place_entity(Box(color=color_names[i])))
Exemple #6
0
    def _gen_world(self):
        rows = []

        # For each row
        for j in range(self.num_rows):
            row = []

            # For each column
            for i in range(self.num_cols):

                min_x = i * (self.room_size + self.gap_size)
                max_x = min_x + self.room_size

                min_z = j * (self.room_size + self.gap_size)
                max_z = min_z + self.room_size

                room = self.add_rect_room(
                    min_x=min_x,
                    max_x=max_x,
                    min_z=min_z,
                    max_z=max_z,
                    wall_tex='brick_wall',
                    #floor_tex='asphalt'
                )
                row.append(room)

            rows.append(row)

        visited = set()

        def visit(i, j):
            """
            Recursive backtracking maze construction algorithm
            https://stackoverflow.com/questions/38502
            """

            room = rows[j][i]

            visited.add(room)

            # Reorder the neighbors to visit in a random order
            neighbors = self.rand.subset([(0, 1), (0, -1), (-1, 0), (1, 0)], 4)

            # For each possible neighbor
            for dj, di in neighbors:
                ni = i + di
                nj = j + dj

                if nj < 0 or nj >= self.num_rows:
                    continue
                if ni < 0 or ni >= self.num_cols:
                    continue

                neighbor = rows[nj][ni]

                if neighbor in visited:
                    continue

                if di == 0:
                    self.connect_rooms(room,
                                       neighbor,
                                       min_x=room.min_x,
                                       max_x=room.max_x)
                elif dj == 0:
                    self.connect_rooms(room,
                                       neighbor,
                                       min_z=room.min_z,
                                       max_z=room.max_z)

                visit(ni, nj)

        # Generate the maze starting from the top-left corner
        visit(0, 0)

        X = (self.num_cols - 0.5) * self.room_size + (self.num_cols -
                                                      1) * self.gap_size
        Z = (self.num_rows - 0.5) * self.room_size + (self.num_rows -
                                                      1) * self.gap_size
        self.box = self.place_entity(Box(color='red'), pos=np.array([X, 0, Z]))

        X = 0.5 * self.room_size
        Z = 0.5 * self.room_size
        self.place_entity(self.agent, pos=np.array([X, 0, Z]), dir=0)
Exemple #7
0
 def _construct(self):
     self.create_room_matrix()
     self.create_doors()
     self.decorate()
     self.create_buildings()
     self.box = self.place_entity(Box(color='red'), room=self.M[5][1])