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