Multi-project workspace for MuJoCo-based robot manipulation research. Each robot's application sits on a small set of shared libraries, from robot packages and planning to robot-neutral grasping skills.
Built for the Geodude bimanual robot (dual UR5e + Robotiq 2F-140), and for ADA (a Kinova JACO2 with its two-finger hand). The libraries underneath (ssrobot, ssgrasping, sscbirrt, tsr) are robot-neutral.
git clone https://github.com/personalrobotics/robot-code
cd robot-code
./setup.sh # clones all repos, syncs the shared workspace and geodude's and ada_mj's own environments
cd geodude
uv run geodude-recycling --seed 0 --mix 5 # headless
uv run geodude-recycling --seed 0 --mix 5 --viser # browser viewerGeodude 4.0 has its own uv environment, apart from the shared workspace; see the geodude README for its robot API and recycling evaluation. The 3.x console, demos and LLM chat are at its v3.1.0 tag.
ADA's application, ada_mj, also has its own environment: cd ada_mj && uv run ada-lift --seed 0 grasps and lifts a cylinder (see the ada_mj README). The earlier ada_mj, built on mj_manipulator, is at ada_mj's v0.1.0 tag.
Each robot's application (geodude, ada_mj) is built on ssrobot and ssgrasping, pinned by each application's own lock:
| Layer | Owns |
|---|---|
| geodude, ada_mj | Each robot's task: which objects, the scene, the specs passed to each skill, how the run is driven, what counts as success |
| ssgrasping | Grasp, place, and drop skills written against robot-neutral contracts |
| ssrobot | Robot packages, the session and scene, planning contracts, the checked execution boundary, MuJoCo runtimes |
| sscbirrt, sstsr | Planning and timing over sets of starts, goals and constraints; grasp and placement templates |
| geodude_assets, ada_assets, prl_assets | Robot packages and object models |
mj_manipulator, the earlier arm-control library, and its ROS 2 bridge mj_manipulator_ros are retired and archived (mj_manipulator#182); its README maps each capability to its successor.
| Package | Description |
|---|---|
| geodude | Geodude 4.0: recycling, recovery, the robot API |
| ada_mj | ADA's application: grasp and lift in open space |
| ada_assets | MuJoCo models and the ssrobot package for ADA |
| sscbirrt | CBiRRT motion planner with TSR constraints |
| sstsr | Task Space Regions for grasp/place planning (imports as tsr) |
| mj_environment | MuJoCo environment wrapper with object registry |
| prl_assets | Reusable MuJoCo objects (cans, bins, spam cans, pop-tarts) |
| asset_manager | Loads object geometry from meta.yaml files |
| mj_viser | Web-based MuJoCo viewer built on Viser |
| geodude_assets | MuJoCo models for Geodude (UR5e + Robotiq 2F-140) |
# Run tests for a specific package
cd geodude && uv run pytest tests/ -v
# The shared workspace's integration tests
uv run pytest tests/integration -vPlanned in ssrobot's hardware milestone: a ROS 2 runtime (ssrobot#35) and Geodude's hardware profiles (ssrobot#36).