Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions judo/controller/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
set_default_caltech_leap_cube_overrides,
set_default_cartpole_overrides,
set_default_cylinder_push_overrides,
set_default_fr3_bimanual_pick_overrides,
set_default_fr3_pick_overrides,
set_default_leap_cube_down_overrides,
set_default_leap_cube_overrides,
Expand All @@ -21,6 +22,7 @@
set_default_caltech_leap_cube_overrides()
set_default_cartpole_overrides()
set_default_cylinder_push_overrides()
set_default_fr3_bimanual_pick_overrides()
set_default_fr3_pick_overrides()
set_default_leap_cube_overrides()
set_default_leap_cube_down_overrides()
Expand Down
4 changes: 2 additions & 2 deletions judo/controller/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
class ControllerConfig(OverridableConfig):
"""Base controller config."""

horizon: float = 1.0
horizon: float = 0.3
spline_order: Literal["zero", "linear", "cubic"] = "linear"
control_freq: float = 20.0
control_freq: float = 5.0
max_opt_iters: int = 1
max_num_traces: int = 5
action_normalizer: Literal["none", "min_max", "running"] = "none"
Expand Down
14 changes: 14 additions & 0 deletions judo/controller/overrides.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,17 @@ def set_default_fr3_pick_overrides() -> None:
"control_freq": 20.0,
},
)


def set_default_fr3_bimanual_pick_overrides() -> None:
"""Sets the default task-specific controller config overrides for the fr3 pick task."""
set_config_overrides(
"fr3_bimanual_pick",
ControllerConfig,
{
"horizon": 1.3,
"spline_order": "linear",
"max_num_traces": 3,
"control_freq": 40.0,
},
)
31 changes: 31 additions & 0 deletions judo/models/xml/fr3_bimanual_pick.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<mujoco model="fr3_bimanual_pick">
<include file="fr3_components/assets.xml" />
<include file="fr3_components/params_and_default_bimanual.xml" />

<worldbody>
<body name="table" pos="0.0 0.0 0.0" quat="1 0 0 0">
<geom name="table" type="box" size="0.75 1.25 0.01" pos="0.5 0 -0.01" rgba="0.8 0.8 0.8 1" class="visual" />
<geom name="table_coll" type="plane" pos="0.5 0 0" size="40 40 40" conaffinity="1" condim="3"/>
</body>
<body name="shelf" pos="0.0 0.0 0.0" quat="1 0 0 0">
<geom name="shelf_0" type="box" size="0.3 0.35 0.05" pos="1.15 0 0.3" rgba="0.8 0.8 0.8 1" />
<geom name="shelf_1" type="box" size="0.3 0.05 0.05" pos="1.15 -0.3 0.4" rgba="0.8 0.8 0.8 1" />
<geom name="shelf_2" type="box" size="0.3 0.05 0.05" pos="1.15 0.3 0.4" rgba="0.8 0.8 0.8 1" />
<geom name="shelf_3" type="box" size="0.05 0.25 0.05" pos="1.40 0 0.4" rgba="0.8 0.8 0.8 1" />
</body>
<body name="object" pos="0.0 0.0 0.0" quat="1 0 0 0">
<inertial mass="10.0" pos="0.0 0.0 0.0" diaginertia="0.3 0.3 0.3"/>
<freejoint name="object_joint"/>
<geom name="cylinder_0" type="cylinder" size="0.175 0.075" pos="0 0 -0.125" rgba="0.68 0.85 0.9 0.9"/>
<geom name="cylinder_1" type="cylinder" size="0.15 0.05" pos="0 0 0" rgba="0.68 0.85 0.9 0.9"/>
<geom name="cylinder_2" type="cylinder" size="0.175 0.075" pos="0 0 0.125" rgba="0.68 0.85 0.9 0.9"/>
<geom name="cylinder_3" type="cylinder" size="0.03 0.03" pos="0 0 0.23" rgba="0.68 0.85 0.9 0.9"/>
</body>
<body name="fr3" pos="0.0 -0.25 0.0" quat="1 0 0 0">
<include file="fr3_components/fr3.xml" />
</body>
<body name="fr3_bis" pos="0.0 0.25 0.0" quat="1 0 0 0">
<include file="fr3_components/fr3_bis.xml" />
</body>
</worldbody>
</mujoco>
4 changes: 2 additions & 2 deletions judo/models/xml/fr3_components/fr3.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
<geom name="hand_3" mesh="hand_3" material="white" class="visual"/>
<geom name="hand_4" mesh="hand_4" material="off_white" class="visual"/>
<geom name="hand_collision" mesh="hand_coll" class="collision"/>
<body name="left_finger" pos="0 0 0.0584">
<!-- <body name="left_finger" pos="0 0 0.0584">
<inertial mass="0.015" pos="0 0 0" diaginertia="2.375e-6 2.375e-6 7.5e-7"/>
<joint name="finger_joint1" class="finger"/>
<geom name="left_finger_0" mesh="finger_0" material="off_white" class="visual"/>
Expand All @@ -102,7 +102,7 @@
<geom name="right_finger_collision_3" class="fingertip_pad_collision_3"/>
<geom name="right_finger_collision_4" class="fingertip_pad_collision_4"/>
<geom name="right_finger_collision_5" class="fingertip_pad_collision_5"/>
</body>
</body> -->
</body>
</body>
</body>
Expand Down
116 changes: 116 additions & 0 deletions judo/models/xml/fr3_components/fr3_bis.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<mujoco model="fr3_bis">
<body name="_base" childclass="fr3">
<body name="_fr3_link0">
<geom name="_link0_0" mesh="link0_0" material="black" class="visual"/>
<geom name="_link0_1" mesh="link0_1" material="white" class="visual"/>
<geom name="_link0_2" mesh="link0_2" material="white" class="visual"/>
<geom name="_link0_3" mesh="link0_3" material="white" class="visual"/>
<geom name="_link0_4" mesh="link0_4" material="white" class="visual"/>
<geom name="_link0_5" mesh="link0_5" material="red" class="visual"/>
<geom name="_link0_6" mesh="link0_6" material="black" class="visual"/>
<geom name="_fr3_link0_collision" mesh="link0_coll" class="collision"/>
<body name="_fr3_link1" pos="0 0 0.333">
<inertial pos="4.128e-07 -0.0181251 -0.0386036" quat="0.998098 -0.0605364 0.00380499 0.0110109" mass="2.92747"
diaginertia="0.0239286 0.0227246 0.00610634"/>
<joint name="_fr3_joint1" axis="0 0 1" range="-2.7437 2.7437" actuatorfrcrange="-87 87"/>
<geom name="_fr3_link1_collision" class="collision" mesh="link1_coll"/>
<geom name="_link1" material="white" mesh="link1" class="visual"/>
<body name="_fr3_link2" quat="1 -1 0 0">
<inertial pos="0.00318289 -0.0743222 0.00881461" quat="0.502599 0.584437 -0.465998 0.434366" mass="2.93554"
diaginertia="0.0629567 0.0411924 0.0246371"/>
<joint name="_fr3_joint2" axis="0 0 1" range="-1.7837 1.7837" actuatorfrcrange="-87 87"/>
<geom name="_link2" material="white" mesh="link2" class="visual"/>
<geom name="_fr3_link2_collision" class="collision" mesh="link2_coll"/>
<body name="_fr3_link3" pos="0 -0.316 0" quat="1 1 0 0">
<inertial pos="0.0407016 -0.00482006 -0.0289731" quat="0.921025 -0.244161 0.155272 0.260745" mass="2.2449"
diaginertia="0.0267409 0.0189869 0.0171587"/>
<joint name="_fr3_joint3" axis="0 0 1" range="-2.9007 2.9007" actuatorfrcrange="-87 87"/>
<geom name="_link3_0" mesh="link3_0" material="white" class="visual"/>
<geom name="_link3_1" mesh="link3_1" material="black" class="visual"/>
<geom name="_fr3_link3_collision" class="collision" mesh="link3_coll"/>
<body name="_fr3_link4" pos="0.0825 0 0" quat="1 1 0 0">
<inertial pos="-0.0459101 0.0630493 -0.00851879" quat="0.438018 0.803311 0.00937812 0.403414"
mass="2.6156" diaginertia="0.05139 0.0372717 0.0160047"/>
<joint name="_fr3_joint4" axis="0 0 1" range="-3.0421 -0.1518" actuatorfrcrange="-87 87"/>
<geom name="_link4_0" mesh="link4_0" material="white" class="visual"/>
<geom name="_link4_1" mesh="link4_1" material="black" class="visual"/>
<geom name="_fr3_link4_collision" class="collision" mesh="link4_coll"/>
<body name="_fr3_link5" pos="-0.0825 0.384 0" quat="1 -1 0 0">
<inertial pos="-0.00160396 0.0292536 -0.0972966" quat="0.919031 0.125604 0.0751531 -0.366003"
mass="2.32712" diaginertia="0.0579335 0.0449144 0.0130634"/>
<joint name="_fr3_joint5" axis="0 0 1" range="-2.8065 2.8065" actuatorfrcrange="-12 12"
armature="0.074" frictionloss="0.763"/>
<geom name="_link5_0" mesh="link5_0" material="white" class="visual"/>
<geom name="_link5_1" mesh="link5_1" material="white" class="visual"/>
<geom name="_link5_2" mesh="link5_2" material="black" class="visual"/>
<geom name="_fr3_link5_collision" class="collision" mesh="link5_coll"/>
<body name="_fr3_link6" quat="1 1 0 0">
<inertial pos="0.0597131 -0.0410295 -0.0101693" quat="0.621301 0.552665 0.510011 0.220081"
mass="1.81704" diaginertia="0.0175039 0.0161123 0.00193529"/>
<joint name="_fr3_joint6" axis="0 0 1" range="0.5445 4.5169" actuatorfrcrange="-12 12"
armature="0.074" frictionloss="0.44"/>
<geom name="_link6_0" mesh="link6_0" material="button_green" class="visual"/>
<geom name="_link6_1" mesh="link6_1" material="white" class="visual"/>
<geom name="_link6_2" mesh="link6_2" material="white" class="visual"/>
<geom name="_link6_3" mesh="link6_3" material="gray" class="visual"/>
<geom name="_link6_4" mesh="link6_4" material="button_red" class="visual"/>
<geom name="_link6_5" mesh="link6_5" material="white" class="visual"/>
<geom name="_link6_6" mesh="link6_6" material="black" class="visual"/>
<geom name="_link6_7" mesh="link6_7" material="button_blue" class="visual"/>
<geom name="_fr3_link6_collision" class="collision" mesh="link6_coll"/>
<body name="_fr3_link7" pos="0.088 0 0" quat="1 1 0 0">
<inertial pos="0.00452258 0.00862619 -0.0161633" quat="0.727579 0.0978688 -0.24906 0.63168"
mass="0.627143" diaginertia="0.000223836 0.000223642 5.64132e-07"/>
<joint name="_fr3_joint7" axis="0 0 1" range="-3.0159 3.0159" actuatorfrcrange="-12 12"
armature="0.074" frictionloss="0.248"/>
<geom name="_link7_0" mesh="link7_0" material="black" class="visual"/>
<geom name="_link7_1" mesh="link7_1" material="white" class="visual"/>
<geom name="_link7_2" mesh="link7_2" material="white" class="visual"/>
<geom name="_link7_3" mesh="link7_3" material="black" class="visual"/>
<geom name="_fr3_link7_collision" class="collision" mesh="link7_coll"/>
<!-- <site name="_attachment_site" pos="0 0 0.107"/> -->
<body name="_hand" pos="0 0 0.107" quat="0.9238795 0 0 -0.3826834">
<site name="_grasp_site" pos="0 0 0.1034"/>

<inertial mass="0.73" pos="-0.01 0 0.03" diaginertia="0.001 0.0025 0.0017"/>
<geom name="_hand_0" mesh="hand_0" material="off_white" class="visual"/>
<geom name="_hand_1" mesh="hand_1" material="black" class="visual"/>
<geom name="_hand_2" mesh="hand_2" material="black" class="visual"/>
<geom name="_hand_3" mesh="hand_3" material="white" class="visual"/>
<geom name="_hand_4" mesh="hand_4" material="off_white" class="visual"/>
<geom name="_hand_collision" mesh="hand_coll" class="collision"/>
<!-- <body name="_left_finger" pos="0 0 0.0584">
<inertial mass="0.015" pos="0 0 0" diaginertia="2.375e-6 2.375e-6 7.5e-7"/>
<joint name="_finger_joint1" class="finger"/>
<geom name="_left_finger_0" mesh="finger_0" material="off_white" class="visual"/>
<geom name="_left_finger_1" mesh="finger_1" material="black" class="visual"/>
<geom name="_left_finger_collision_0" mesh="finger_0" class="collision"/>
<geom name="_left_finger_collision_1" class="fingertip_pad_collision_1"/>
<geom name="_left_finger_collision_2" class="fingertip_pad_collision_2"/>
<geom name="_left_finger_collision_3" class="fingertip_pad_collision_3"/>
<geom name="_left_finger_collision_4" class="fingertip_pad_collision_4"/>
<geom name="_left_finger_collision_5" class="fingertip_pad_collision_5"/>
</body>
<body name="_right_finger" pos="0 0 0.0584" quat="0 0 0 1">
<inertial mass="0.015" pos="0 0 0" diaginertia="2.375e-6 2.375e-6 7.5e-7"/>
<joint name="_finger_joint2" class="finger"/>
<geom name="_right_finger_0" mesh="finger_0" material="off_white" class="visual"/>
<geom name="_right_finger_1" mesh="finger_1" material="black" class="visual"/>
<geom name="_right_finger_collision_0" mesh="finger_0" class="collision"/>
<geom name="_right_finger_collision_1" class="fingertip_pad_collision_1"/>
<geom name="_right_finger_collision_2" class="fingertip_pad_collision_2"/>
<geom name="_right_finger_collision_3" class="fingertip_pad_collision_3"/>
<geom name="_right_finger_collision_4" class="fingertip_pad_collision_4"/>
<geom name="_right_finger_collision_5" class="fingertip_pad_collision_5"/>
</body> -->
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</mujoco>
2 changes: 1 addition & 1 deletion judo/models/xml/fr3_components/params_and_default.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<mujoco model="fr3_default">
<compiler angle="radian"/>
<option integrator="implicitfast" timestep="0.004" impratio="10.0"/>
<option integrator="implicitfast" timestep="0.01" impratio="10.0"/>

<default>
<default class="fr3">
Expand Down
124 changes: 124 additions & 0 deletions judo/models/xml/fr3_components/params_and_default_bimanual.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<mujoco model="fr3_default">
<compiler angle="radian"/>
<option integrator="implicitfast" timestep="0.01" impratio="10.0"/>

<default>
<default class="fr3">
<!-- Overwritten in joints 5, 6, and 7. -->
<joint damping="0.21" armature="0.195" frictionloss="1.137"/>
<position inheritrange="1"/>

<!-- constraint stiffness -->
<geom solimp="0.98 0.99 0.01 0.001 1" solref="0.001 1" friction=".5"/>

<default class="finger">
<joint axis="0 1 0" type="slide" range="0 0.04"/>
</default>

<default class="visual">
<geom type="mesh" group="2" contype="0" conaffinity="0"/>
</default>
<default class="collision">
<geom type="mesh" group="3" mass="0" density="0" friction="0.5 0 0" priority="6"/>
<default class="fingertip_pad_collision_1">
<geom type="box" size="0.0085 0.004 0.0085" pos="0 0.0055 0.0445"/>
</default>
<default class="fingertip_pad_collision_2">
<geom type="box" size="0.003 0.002 0.003" pos="0.0055 0.002 0.05"/>
</default>
<default class="fingertip_pad_collision_3">
<geom type="box" size="0.003 0.002 0.003" pos="-0.0055 0.002 0.05"/>
</default>
<default class="fingertip_pad_collision_4">
<geom type="box" size="0.003 0.002 0.0035" pos="0.0055 0.002 0.0395"/>
</default>
<default class="fingertip_pad_collision_5">
<geom type="box" size="0.003 0.002 0.0035" pos="-0.0055 0.002 0.0395"/>
</default>
</default>
<site size="0.001" rgba="0.5 0.5 0.5 0.3" group="4"/>
</default>
</default>

<!-- <equality>
<joint joint1="finger_joint1" joint2="finger_joint2" polycoef="0 1"/>
</equality>
<equality>
<joint joint1="_finger_joint1" joint2="_finger_joint2" polycoef="0 1"/>
</equality> -->

<actuator>
<position class="fr3" name="fr3_joint1" joint="fr3_joint1" kp="135" kv="45"/>
<position class="fr3" name="fr3_joint2" joint="fr3_joint2" kp="135" kv="45"/>
<position class="fr3" name="fr3_joint3" joint="fr3_joint3" kp="105" kv="35"/>
<position class="fr3" name="fr3_joint4" joint="fr3_joint4" kp="105" kv="35"/>
<position class="fr3" name="fr3_joint5" joint="fr3_joint5" kp="60" kv="20"/>
<position class="fr3" name="fr3_joint6" joint="fr3_joint6" kp="60" kv="20"/>
<position class="fr3" name="fr3_joint7" joint="fr3_joint7" kp="60" kv="20"/>
<!-- <position class="fr3" name="fr3_hand" joint="finger_joint1" ctrllimited="true" kp="500" kv="10" inheritrange="2.0"/> -->
</actuator>

<actuator>
<position class="fr3" name="_fr3_joint1" joint="_fr3_joint1" kp="135" kv="45"/>
<position class="fr3" name="_fr3_joint2" joint="_fr3_joint2" kp="135" kv="45"/>
<position class="fr3" name="_fr3_joint3" joint="_fr3_joint3" kp="105" kv="35"/>
<position class="fr3" name="_fr3_joint4" joint="_fr3_joint4" kp="105" kv="35"/>
<position class="fr3" name="_fr3_joint5" joint="_fr3_joint5" kp="60" kv="20"/>
<position class="fr3" name="_fr3_joint6" joint="_fr3_joint6" kp="60" kv="20"/>
<position class="fr3" name="_fr3_joint7" joint="_fr3_joint7" kp="60" kv="20"/>
<!-- <position class="fr3" name="_fr3_hand" joint="_finger_joint1" ctrllimited="true" kp="500" kv="10" inheritrange="2.0"/> -->
</actuator>

<sensor>
<!-- sensors from hand to object -->
<!-- <distance name="left_finger_obj" cutoff="1.0" body1="left_finger" body2="object"/>
<distance name="right_finger_obj" cutoff="1.0" body1="right_finger" body2="object"/> -->

<!-- sensors from hand to table -->
<!-- <distance name="left_finger_table" cutoff="1.0" body1="left_finger" body2="table"/>
<distance name="right_finger_table" cutoff="1.0" body1="right_finger" body2="table"/> -->


<!-- sensors for the arm/hand -->
<framezaxis name="ee_z" objtype="body" objname="hand"/>


<!-- sensors from hand to object -->
<!-- <distance name="_left_finger_obj" cutoff="1.0" body1="_left_finger" body2="object"/>
<distance name="_right_finger_obj" cutoff="1.0" body1="_right_finger" body2="object"/> -->

<!-- sensors from hand to table -->
<!-- <distance name="_left_finger_table" cutoff="1.0" body1="_left_finger" body2="table"/>
<distance name="_right_finger_table" cutoff="1.0" body1="_right_finger" body2="table"/> -->

<!-- sensors for the arm/hand -->
<framezaxis name="_ee_z" objtype="body" objname="_hand"/>

<!-- sensor from object to table -->
<distance name="obj_table" cutoff="1.0" body1="object" body2="table"/>

<!-- traces -->
<framepos name="trace_object" objtype="body" objname="object"/>
<framepos name="trace_grasp_site" objtype="site" objname="grasp_site"/>
<framepos name="_trace_grasp_site" objtype="site" objname="_grasp_site"/>


<!-- collision avoidance -->
<framepos name="fr3_link1_pos" objtype="body" objname="fr3_link1"/>
<framepos name="fr3_link2_pos" objtype="body" objname="fr3_link2"/>
<framepos name="fr3_link3_pos" objtype="body" objname="fr3_link3"/>
<framepos name="fr3_link4_pos" objtype="body" objname="fr3_link4"/>
<framepos name="fr3_link5_pos" objtype="body" objname="fr3_link5"/>
<framepos name="fr3_link6_pos" objtype="body" objname="fr3_link6"/>
<framepos name="fr3_link7_pos" objtype="body" objname="fr3_link7"/>

<framepos name="_fr3_link1_pos" objtype="body" objname="_fr3_link1"/>
<framepos name="_fr3_link2_pos" objtype="body" objname="_fr3_link2"/>
<framepos name="_fr3_link3_pos" objtype="body" objname="_fr3_link3"/>
<framepos name="_fr3_link4_pos" objtype="body" objname="_fr3_link4"/>
<framepos name="_fr3_link5_pos" objtype="body" objname="_fr3_link5"/>
<framepos name="_fr3_link6_pos" objtype="body" objname="_fr3_link6"/>
<framepos name="_fr3_link7_pos" objtype="body" objname="_fr3_link7"/>

</sensor>
</mujoco>
Loading
Loading