    def __init__(self, **kwargs):
        super().__init__(**kwargs, config=BinEnvConfig)
        self.observation_space["images"] = gym.spaces.Dict(
            {
                "wrist_1": gym.spaces.Box(0, 255, shape=(128, 128, 3), dtype=np.uint8),
                "front": gym.spaces.Box(0, 255, shape=(128, 128, 3), dtype=np.uint8),
            }
        )
        self.task_id = 0  # 0 for forward task, 1 for backward task
        """
        the inner safety box is used to prevent the gripper from hitting the two walls of the bins in the center.
        it is particularly useful when there is things you want to avoid running into within the bounding box.
        it uses the intersect_line_bbox function to detect whether the gripper is going to hit the wall
        and clips actions that will lead to collision.
        """
        self.inner_safety_box = gym.spaces.Box(
            self._TARGET_POSE[:3] - np.array([0.07, 0.03, 0.001]),
            self._TARGET_POSE[:3] + np.array([0.07, 0.03, 0.04]),
            dtype=np.float64,
        )
the inner safety box is used to prevent the gripper from hitting the two walls of the bins in the center.
it is particularly useful when there is things you want to avoid running into within the bounding box.
it uses the intersect_line_bbox function to detect whether the gripper is going to hit the wall
and clips actions that will lead to collision.
serl_robot_infra/franka_env/envs/bin_relocation_env/franka_bin_relocation.py