robogym/envs/dactyl/face_perpendicular.py [296:316]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    def _default_observation_map(self):
        return {
            "cube_pos": omv({"mujoco": MujocoCubePosObservation}),
            "cube_quat": omv({"mujoco": MujocoCubeRotObservation}),
            "cube_face_angle": omv({"mujoco": MujocoFaceAngleObservation}),
            "qpos": omv({"mujoco": MujocoQposObservation}),
            "qvel": omv({"mujoco": MujocoQvelObservation}),
            "perp_qpos": omv({"mujoco": MujocoQposObservation}),  # Duplicate of qpos.
            "perp_qvel": omv({"mujoco": MujocoQvelObservation}),  # Duplicate of qvel.
            "hand_angle": omv({"mujoco": MujocoShadowhandAngleObservation}),
            "fingertip_pos": omv(
                {"mujoco": MujocoShadowhandRelativeFingertipsObservation}
            ),
            "goal_pos": omv({"goal": GoalCubePosObservation}),
            "goal_quat": omv({"goal": GoalCubeRotObservation}),
            "goal_face_angle": omv({"goal": GoalFaceAngleObservation}),
        }

    @classmethod
    def build_goal_generation(
        cls,
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



robogym/envs/dactyl/full_perpendicular.py [182:202]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    def _default_observation_map(self):
        return {
            "cube_pos": omv({"mujoco": MujocoCubePosObservation}),
            "cube_quat": omv({"mujoco": MujocoCubeRotObservation}),
            "cube_face_angle": omv({"mujoco": MujocoFaceAngleObservation}),
            "qpos": omv({"mujoco": MujocoQposObservation}),
            "qvel": omv({"mujoco": MujocoQvelObservation}),
            "perp_qpos": omv({"mujoco": MujocoQposObservation}),  # Duplicate of qpos.
            "perp_qvel": omv({"mujoco": MujocoQvelObservation}),  # Duplicate of qvel.
            "hand_angle": omv({"mujoco": MujocoShadowhandAngleObservation}),
            "fingertip_pos": omv(
                {"mujoco": MujocoShadowhandRelativeFingertipsObservation}
            ),
            "goal_pos": omv({"goal": GoalCubePosObservation}),
            "goal_quat": omv({"goal": GoalCubeRotObservation}),
            "goal_face_angle": omv({"goal": GoalFaceAngleObservation}),
        }

    @classmethod
    def build_goal_generation(
        cls,
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



