Leap Hand Description (MJCF)
Important
Requires MuJoCo 3.1.3 or later.
Overview
This package contains a simplified robot description (MJCF) of the (left and right) LEAP Hand developed by Carnegie Mellon University. It is derived from the publicly available URDF description.
URDF → MJCF derivation steps
Right Hand
- Start with the right-handed LEAP hand URDF from dexsuite (hash: 2ee2f70cfd549857f56ffe13c61fa939f4cb50ba)
- Run it through drake's fix_inertia tool (v. 1.30.0)
- Add the following mujoco block to the urdf under
<robot>
:<mujoco> <compiler balanceinertia="true" discardvisual="false" fusestatic="false"/> </mujoco>
- Open the file in the mujoco viewer using
python -m mujoco.viewer --mjcf=<name_of_inertia_fixed_urdf>.urdf
- Save the xml out of the viewer by clicking the "Save xml" button. From now on, modifications are referring to the saved xml.
- Delete the auxiliary body "base" created by not fusing static bodies.
- Rename bodies and joints according to the following:
- palm_lower -> palm
- mcp_joint -> base
- pip -> proximal
- dip -> medial
- fingertip -> distal
- white_tip -> tip
- Give names to all geoms according to visual or collision status.
- Create default classes for joints and assign all joints to their appropriate class.
- Delete the actuatorfrcrange field for all joints.
- Add actuators for all the joints.
- Add collision filters.
- Create the visual default group + add the material black.
- Adjust actuator defaults and solref to increase realism of joints.
- Use the implicitfast integrator, elliptic friction cone, and high impratio.
- Create a geom class default for fingertips with high friction.
- Delete unnecessary "tip_head" bodies.
- Simplify the fingertip meshes using open3d:
Replace the old obj files with the simplified ones.import open3d as o3d mesh = o3d.io.read_triangle_mesh("tip.obj") mesh_smp = mesh.simplify_quadric_decimation(target_number_of_triangles=100) o3d.io.write_triangle_mesh("tip_smp.obj", mesh_smp) mesh = o3d.io.read_triangle_mesh("thumb_tip.obj") mesh_smp = mesh.simplify_quadric_decimation(target_number_of_triangles=100) o3d.io.write_triangle_mesh("thumb_tip_smp.obj", mesh_smp)
- Add sensors for each of the fingers.
- Change the "pos" field of "thumb_mp_collision" to "-0.0075 -0.0002 -0.011" in order to fix incorrect orientation of thumb collision geometry.
Left Hand
The steps for creating the left hand are mostly the same, except for the following:
- we use the
dexsuite
hash6eeda17435d46dde5915a16fd37b248bd8bb468e
, because there are edits for making the left handed LEAP URDF more consistent with the right - there was no correction of the "thumb_mp_collision" field, but the associated visual mesh is different (thumb_mp_left.obj)
License
This model is released under an MIT License.
Publications
The LEAP Hand is described in the following publication:
@article{shaw2023leaphand,
title = {LEAP Hand: Low-Cost, Efficient, and Anthropomorphic Hand for Robot Learning},
author = {Shaw, Kenneth and Agarwal, Ananye and Pathak, Deepak},
journal = {Robotics: Science and Systems (RSS)},
year = {2023}
}