def parameter_bounds()

in robogym/robot/shadow_hand/mujoco/parameter_manager.py [0:0]


    def parameter_bounds(self, actuator: str):
        assert actuator in ACTUATORS

        bounds = {}

        actuator_id = self.mj_sim.model.actuator_name2id(actuator)
        bounds["actuator_gainprm_kp"] = [
            0.25 * self.mj_sim.model.actuator_gainprm[actuator_id][0],
            4 * self.mj_sim.model.actuator_gainprm[actuator_id][0],
        ]
        bounds["actuator_gainprm_ti"] = [
            0.25 * self.mj_sim.model.actuator_gainprm[actuator_id][1],
            4 * self.mj_sim.model.actuator_gainprm[actuator_id][1] + 10.0,
        ]
        bounds["actuator_gainprm_iclamp"] = [
            0.25 * self.mj_sim.model.actuator_gainprm[actuator_id][2],
            4 * self.mj_sim.model.actuator_gainprm[actuator_id][2] + 10.0,
        ]
        bounds["actuator_gainprm_td"] = [
            0.25 * self.mj_sim.model.actuator_gainprm[actuator_id][3],
            4 * self.mj_sim.model.actuator_gainprm[actuator_id][3] + 0.1,
        ]
        bounds["actuator_gainprm_dsmooth"] = [
            0.0,
            0.2,
        ]
        bounds["actuator_gainprm_error_deadband"] = [
            0,
            0.03,
        ]
        # Note that force range min is equal to minus force range max,
        # thus we will be optimizing only one parameter.
        bounds["actuator_forcerange"] = [
            0.25 * self.mj_sim.model.actuator_forcerange[actuator_id][1],
            4 * self.mj_sim.model.actuator_forcerange[actuator_id][1],
        ]

        if self._has_spring_tendon(actuator):
            tendon = self._spring_tendon_name(actuator)
            tendon_id = self.mj_sim.model.tendon_name2id(tendon)
            bounds["tendon_stiffness"] = [
                0.25 * self.mj_sim.model.tendon_stiffness[tendon_id],
                4 * self.mj_sim.model.tendon_stiffness[tendon_id],
            ]
            bounds["tendon_lengthspring"] = [0.035, 0.075]
            bounds["tendon_range"] = [
                0.75 * self.mj_sim.model.tendon_range[tendon_id][1],
                1.25 * self.mj_sim.model.tendon_range[tendon_id][1],
            ]

            for joint in ACTUATOR_JOINT_MAPPING[actuator]:
                geom = f"coupling_{joint}_pulley"
                geom_id = self.mj_sim.model.geom_name2id(geom)
                bounds[f"{joint}_tendon_geom_0"] = [
                    0.5 * self.mj_sim.model.geom_size[geom_id][0],
                    1.5 * self.mj_sim.model.geom_size[geom_id][0],
                ]

        for joint in ACTUATOR_JOINT_MAPPING[actuator]:
            joint_id = self.mj_sim.model.joint_name2id(joint)
            bounds[f"{joint}_dof_damping"] = [0.01, 0.75]
            bounds[f"{joint}_jnt_range_0"] = [
                self.mj_sim.model.jnt_range[joint_id][0] - 0.25,
                self.mj_sim.model.jnt_range[joint_id][0] + 0.25,
            ]
            bounds[f"{joint}_jnt_range_1"] = [
                self.mj_sim.model.jnt_range[joint_id][1] - 0.25,
                self.mj_sim.model.jnt_range[joint_id][1] + 0.25,
            ]
        return bounds