def _set_field()

in robogym/wrappers/cube.py [0:0]


    def _set_field(self, sim):
        cube_geom_idxs = [sim.model.geom_name2id("cube:middle")]
        if "cube:top" in sim.model.geom_names:
            cube_geom_idxs += [
                sim.model.geom_name2id(name) for name in ["cube:top", "cube:bottom"]
            ]
        random_state = self.unwrapped._random_state
        scale = random_state.uniform(
            self._cube_size_range[0], self._cube_size_range[1], size=[1]
        )
        val = self._orig_value["cube_size"] * scale
        for cube_geom_idx in cube_geom_idxs:
            sim.model.geom_size[cube_geom_idx] = val

        # For face cube, we have to move bodies for rescaling to work.
        if "cube:top" in sim.model.body_names:
            for name in ["cube:top", "cube:bottom"]:
                idx = sim.model.body_name2id(name)
                sim.model.body_pos[idx] = self._orig_value[name] * scale

        return OrderedDict([("cube_size", val.copy())])