explaingit

ruoyiqiao/mjlab_hand

Analysis updated 2026-05-18

22PythonAudience · researcherComplexity · 4/5Setup · hard

TLDR

Simulation environments built on mjlab for training multi-fingered robotic hands to grasp objects and rotate them in place using GPU-accelerated reinforcement learning.

Mindmap

mindmap
  root((mjlab_hand))
    What it does
      Grasp objects
      In-hand rotation
      GPU parallel training
    Tech stack
      Python
      mjlab
      uv
    Use cases
      Grasping research
      ContactExplorer rewards
      Custom objects
    Audience
      RL researchers
      Robotics labs

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Train a simulated robotic hand to grasp and lift a variety of objects.

USE CASE 2

Train a policy to keep spinning an object continuously without dropping it.

USE CASE 3

Test the ContactExplorer reward signals to encourage broader contact exploration during training.

USE CASE 4

Swap in custom objects from the ContactDB dataset to test grasping generalization.

What is it built with?

Pythonmjlabuv

How does it compare?

ruoyiqiao/mjlab_handagno-agi/agent-platform-railwayalexantaluo0/acot-vla-wm
Stars222222
LanguagePythonPythonPython
Setup difficultyhardmoderatehard
Complexity4/54/55/5
Audienceresearcherdeveloperresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires Python 3.13+, the uv package manager, and GPU hardware for simulation training.

In plain English

This repository contains simulation environments for training robotic hands to grasp objects and spin them in place. It is built on top of mjlab, a framework for running robot-learning experiments on GPU hardware. The hands it supports are Allegro, LEAP, Shadow, Sharpa, and Wuji, each of which is a different design of multi-fingered robotic hand used in research. The two core tasks are grasping, where the hand must pick up an object without dropping it, and in-hand rotation, where the hand must keep spinning an object continuously. Training is done by running many simulated copies of the task at once, thousands of environments at a time, to collect experience quickly. You point it at a task name and a hand model, set how many parallel environments to run, and let it train for a set number of iterations. The repository also implements a method called ContactExplorer. It adds two extra reward signals on top of the basic task reward. One reward encourages the hand to make contact with parts of the object it has not touched before. The other guides the fingers toward under-explored regions of the object before contact is made. Together these signals are meant to help the hand discover a wider variety of contact strategies rather than converging on one narrow grip early in training. You can swap in custom objects from a dataset called ContactDB, which includes shapes like cups, mugs, hammers, and game controllers. Not all objects have been tested, and the README notes that some may need extra tuning to learn successfully. Once training is done, you can watch a trained policy interact with objects in an interactive viewer or run batch evaluation that prints a success-rate metric and optionally logs results to Weights and Biases. Installation requires Python 3.13 or later and uses the uv package manager. The robot hardware models come from publicly available collections of robot description files.

Copy-paste prompts

Prompt 1
Help me set up mjlab_hand with a Shadow hand model and run the grasping task across thousands of parallel environments.
Prompt 2
Explain how the ContactExplorer reward signals work and how they differ from the base grasping and rotation rewards.
Prompt 3
Show me how to swap in a custom object from ContactDB and evaluate a trained policy's success rate.
Prompt 4
Walk me through installing mjlab_hand with uv and Python 3.13, then running the interactive viewer on a trained policy.

Frequently asked questions

What is mjlab_hand?

Simulation environments built on mjlab for training multi-fingered robotic hands to grasp objects and rotate them in place using GPU-accelerated reinforcement learning.

What language is mjlab_hand written in?

Mainly Python. The stack also includes Python, mjlab, uv.

How hard is mjlab_hand to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is mjlab_hand for?

Mainly researcher.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.