Instructions to use roboticascent/graspgenx-so101 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use roboticascent/graspgenx-so101 with LeRobot:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
GraspGen-X fine-tuned for the SO-101 gripper
NVIDIA's GraspGen-X, fine-tuned for the gripper of the SO-101 arm: given points on the surface of a thing on a table, it proposes poses of the SO-101's gripper link that grasp it, with a score for each.
Licensed by NVIDIA Corporation under the NVIDIA Open Model License: see NOTICE, and the licence itself in
LICENSE.pdf (as published on
nvidia.com, version of
2025-10-24).
Files
gen/: the generator,config.yamlandepoch_1025.pth.dis/: the discriminator that scores the generator's grasps,config.yamlandepoch_1350.pth.upright.json: the model was trained upright. The points go in a frame whose z is the table's up and whose -x points toward the arm's base, with no rotation augmentation.grasp_frame.json: the SO-101 gripper as GraspGen-X sees it, measured from TheRobotStudio's meshes (so101_new_calib.urdf) with the jaw open at 1.0 rad. GraspGen-X's gripper frame has +Z along the fingers and +X the way the jaws close; it sits 80 mm back along the approach from the jaws (frame_back_m), where the released model places its grasps (itsaboutsays why). Proposed poses are of the gripper link;graspgen_frame_in_gripper_linkconverts.SHA256SUMS: each of the files above with its SHA-256 (sha256sum -c SHA256SUMS).NOTICE,LICENSE.pdf: the licence notice and the licence.
How it was trained
The SO-101 closes one moving jaw onto a fixed one, unlike the grippers with equal fingers the released model was trained on, and the released model's grasps held on 0.1% of tries with it. So the grasps were relabelled for this gripper:
- Candidates: on 562 generated objects (cubes, cylinders, bowls, cups, rods, scoops and the like, sized for a tabletop), the released GraspGen-X's proposals, jittered copies of them, and as many again along the surface's normals, each seated against the fixed jaw.
- Labels: each candidate tried in simulation (Newton with MuJoCo-Warp, 240 Hz) with the SO-101's own gripper (its system-identified jaw servo at the STS3215's 3.35 N·m stall torque, the jaws colliding as their meshes): the object resting on a table in each of its resting poses, the open gripper coming in 6 cm, the jaw closing, a 5 cm lift and a shake. Held means the object came up, moved little in the hand, and the jaw stopped short of closed; an object pushed more than 15 mm or tilted over 15° while the jaw closed counts as failed. Of the held grasps, the deeper, face-on ones are the positives: 313,588 positives on 2,214 placements.
- Training: generator and discriminator both fine-tuned from the released checkpoints, upright, on one-sided views of the objects from 15 to 30 cm above the table, with the gripper encoder's BatchNorm statistics kept as released.
How well it does
On 237 held-out placements, with 2,000 grasps drawn and grouped into grasp families (similar approach, closing axis and fingertips), taking grasps best first as a motion planner would and trying each reachable one in the same simulation: the arm reaches some grasp on 217 placements; the best reachable grasp held on 36% by the labels' rules and 57% by outcome (the object carried up and kept); 52% of all 730 tries held by outcome.
In a desk scene in Isaac Sim (Newton physics), with a simulated SO-101 and the points from stereo cameras, it has held and lifted cubes and bowls (a bowl by its rim). It has not been tried on a real arm yet. It does not grasp thin round rods, 3 cm scoops or an 8 mm bar: none of those held in training either.
Using it
Load it with GraspGen-X (commit b9429097728cb1c430dd78b92edf17ba318aad03) as a model folder: the generator and
discriminator configs and checkpoints from gen/ and dis/, the gripper from grasp_frame.json (a gripper described
by its frame and sweep volume needs no gripper assets). The points must be in the upright frame above. GraspGen-X's
import fetches NVIDIA's released checkpoints and gripper descriptions, which this model doesn't need: block
graspgenx._setup_dependencies before importing it (sys.modules["graspgenx._setup_dependencies"] = None).
Model tree for roboticascent/graspgenx-so101
Base model
adithyamurali/GraspGenXModel