robogym/envs/dactyl/goals/face_cube_solver.py [19:39]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    def __init__(
        self,
        mujoco_simulation,
        success_threshold: typing.Dict[str, float],
        face_geom_names: typing.List[str],
        num_scramble_steps: int,
    ):
        """
        Create new FaceCubeSolverGoalGenerator object

        :param success_threshold: Dictionary of threshold levels for cube orientation and face
            rotation, for which we consider the cube "aligned" with the goal
        """
        self.success_threshold = success_threshold
        super().__init__(
            mujoco_simulation=mujoco_simulation,
            face_geom_names=face_geom_names,
            num_scramble_steps=num_scramble_steps,
        )

    def _is_goal_met(self, current_face_state, threshold):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



robogym/envs/dactyl/goals/unconstrained_cube_solver.py [18:35]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    def __init__(
        self,
        mujoco_simulation,
        success_threshold: typing.Dict[str, float],
        face_geom_names: typing.List[str],
        num_scramble_steps: int,
    ):
        """
        Creates new UnconstrainedCubeSolver object
        """
        self.success_threshold = success_threshold
        super().__init__(
            mujoco_simulation=mujoco_simulation,
            face_geom_names=face_geom_names,
            num_scramble_steps=num_scramble_steps,
        )

    def _is_goal_met(self, current_face_state, threshold):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



