in bisk/tasks/hurdleslimbo.py [0:0]
def reset_state(self):
super().reset_state()
self.max_obstacles_cleared = 0
xpos = 1
intervals = self.np_random.uniform(3, 6, size=(self.n_obstacles,))
assert self.n_obstacles % 2 == 0
if self.fixed_height:
bar_heights = np.zeros(self.n_obstacles // 2) + self.min_bar_height
hurdle_heights = (
np.zeros(self.n_obstacles // 2) + self.max_hurdle_height
)
else:
bar_heights = self.np_random.uniform(
self.min_bar_height,
self.min_bar_height + 0.3,
size=(self.n_obstacles // 2,),
)
hurdle_heights = self.np_random.uniform(
0.1, self.max_hurdle_height, size=(self.n_obstacles // 2,)
)
self.obstacle_pos = []
self.obstacle_type = []
nm = self.p.named.model
for i in range(self.n_obstacles):
xpos += intervals[i]
self.obstacle_pos.append(xpos)
self.obstacle_type.append(i % 2)
if i % 2 == 0:
nm.geom_size[f'hurdle-{i}'][2] = hurdle_heights[i // 2]
nm.geom_pos[f'hurdle-{i}'][0] = xpos
nm.geom_pos[f'hurdle-{i}'][2] = (
hurdle_heights[i // 2] / 2 + 0.01
)
else:
nm.geom_pos[f'bar-{i}'][0] = xpos
nm.geom_pos[f'bar-{i}'][2] = (
bar_heights[i // 2] + nm.geom_size[f'bar-{i}'][0]
)
nm.geom_rgba[f'bar-{i}'] = [0.8, 0.9, 0.8, 1]
self.bar_hit = [False] * self.n_obstacles
self.new_bars_hit = set()