def _get_sim(self, seed): ''' Calls build_world_step and then modify_sim_step for each module. If a build_world_step failed, then restarts. ''' world_params = WorldParams(size=(self.floor_size, self.floor_size, 2.5), num_substeps=self.n_substeps) successful_placement = False failures = 0 while not successful_placement: if (failures + 1) % 10 == 0: logging.warning( f"Failed {failures} times in creating environment") builder = WorldBuilder(world_params, seed) floor = Floor() builder.append(floor) self.placement_grid = np.zeros((self.grid_size, self.grid_size)) successful_placement = np.all([ module.build_world_step(self, floor, self.floor_size) for module in self.modules ]) failures += 1 sim = builder.get_sim() for module in self.modules: module.modify_sim_step(self, sim) return sim
def _get_new_sim(self, seed): world_params = WorldParams(size=(self.floorsize, self.floorsize, 2.5), num_substeps=self.n_substeps) builder = WorldBuilder(world_params, seed) floor = Floor() builder.append(floor) # Walls wallsize = 0.1 wall = Geom('box', (wallsize, self.floorsize, 0.5), name="wall1") wall.mark_static() floor.append(wall, placement_xy=(0, 0)) wall = Geom('box', (wallsize, self.floorsize, 0.5), name="wall2") wall.mark_static() floor.append(wall, placement_xy=(1, 0)) wall = Geom('box', (self.floorsize - wallsize*2, wallsize, 0.5), name="wall3") wall.mark_static() floor.append(wall, placement_xy=(1/2, 0)) wall = Geom('box', (self.floorsize - wallsize*2, wallsize, 0.5), name="wall4") wall.mark_static() floor.append(wall, placement_xy=(1/2, 1)) # Add agents obj = ObjFromXML("particle", name="agent0") floor.append(obj) obj.mark(f"object0") # Add food sites for i in range(self.n_food): floor.mark(f"food{i}", (.5, .5, 0.05), rgba=(0., 1., 0., 1.)) sim = builder.get_sim() # Cache constants for quicker lookup later self.food_ids = np.array([sim.model.site_name2id(f'food{i}') for i in range(self.n_food)]) return sim
def get_sim(seed): world_params = WorldParams(size=(10., 6., 4.5)) builder = WorldBuilder(world_params, seed) floor = Floor() builder.append(floor) obj = ObjFromXML("particle_hinge") floor.append(obj) floorsize = 4. # Walls wallsize = 0.1 wall = Geom('box', (wallsize, floorsize, 0.5), name="wall1") wall.mark_static() floor.append(wall, placement_xy=(0, 0)) wall = Geom('box', (wallsize, floorsize, 0.5), name="wall2") wall.mark_static() floor.append(wall, placement_xy=(1, 0)) wall = Geom('box', (floorsize - wallsize * 2, wallsize, 0.5), name="wall3") wall.mark_static() floor.append(wall, placement_xy=(1 / 2, 0)) wall = Geom('box', (floorsize - wallsize * 2, wallsize, 0.5), name="wall4") wall.mark_static() floor.append(wall, placement_xy=(1 / 2, 1)) # Add agents obj = ObjFromXML("particle", name="agent0") floor.append(obj) obj.mark("object") floor.mark("target", (.5, .5, 0.05)) return builder.get_sim()
def get_sim(seed): world_params = WorldParams(size=(4., 4., 2.5)) builder = WorldBuilder(world_params, seed) floor = Floor() builder.append(floor) obj = ObjFromXML("particle_hinge") floor.append(obj) obj.mark("object") floor.mark("target", (.5, .5, 0.05)) return builder.get_sim()