This repository supports several user shapes from one codebase. Pick the smallest profile that matches the robot stack you need; move up only when you need another subsystem.
Profiles control Python dependencies. Runtime model/controller assets still come from git submodules, so start with a lightweight clone and initialize only the ones listed for your profile:
git clone --depth 1 https://github.com/correlllab/rh56_controller.git
cd rh56_controller
git submodule update --init --recursive --depth 1 <submodule> ...Use git submodule update --init --recursive --depth 1 with no path only when
you intentionally want the maintainer/full checkout.
| Goal | Profile | Python | Extra groups | Required submodules | First command |
|---|---|---|---|---|---|
| Minimal sim imports / CI smoke test | sim-core |
3.12 | none | h1_mujoco for viewers |
uv run python -m rh56_controller.grasp_viz --no-mink |
| Floating RH56 hand planner with Mink comparison | sim-hand |
3.12 | sim-hand |
h1_mujoco, mink |
uv run python -m rh56_controller.grasp_viz |
| UR5 + RH56 MuJoCo viewer | sim-ur5 |
3.12 | sim-ur5 |
h1_mujoco, mink |
uv run python -m rh56_controller.grasp_viz --robot |
| H1-2 + RH56 MuJoCo viewer | sim-h12 |
3.12 | sim-h12 |
h1_mujoco |
uv run python -m rh56_controller.grasp_viz --h12 |
| H1-2 and UR5 sim workflows | sim-h12-ur5 |
3.12 | sim-h12-ur5 |
h1_mujoco, mink, magpie_control |
uv run python -m rh56_controller.grasp_viz --h12 |
| Real RH56 hand only | real-hand |
3.12 | real-hand |
h1_mujoco for visualizers |
uv run python -m rh56_controller.hand_mirror --port /dev/ttyUSB0 |
| Real RH56 hand + real UR5, no ROS | real-ur5 |
3.12 | real-ur5 |
h1_mujoco, mink, magpie_control |
uv run python -m rh56_controller.grasp_viz --robot --real-robot --ur5-ip 192.168.0.4 --port /dev/ttyUSB0 |
| Real RH56 hand + UR5 with ROS2 bridge | real-ur5-ros |
3.10 | real-ur5-ros, ros |
h1_mujoco, mink, magpie_control |
ros2 launch rh56_controller grasp_viz_ros.launch.py ur5_ip:=192.168.0.4 serial_port:=/dev/ttyUSB0 |
| Real H1-2 arm, no RH56 serial hand | real-h12-ros |
3.10 | real-h12-ros, ros |
h1_mujoco; external h12_ros2_controller sourced |
uv run python -m rh56_controller.grasp_viz --h12 --real-h12 |
| Real H1-2 + real RH56 hand | real-h12-hand-ros |
3.10 | real-h12-hand-ros, ros |
h1_mujoco; external h12_ros2_controller sourced |
uv run python -m rh56_controller.grasp_viz --h12 --real-h12 --port /dev/ttyUSB0 |
| Maintainer/dev environment | dev-full |
3.10 or 3.12 | dev-full, ros |
all submodules | use the workflow-specific command above |
full and real-robot are kept as backward-compatible aliases for
dev-full and real-ur5.
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone --depth 1 https://github.com/correlllab/rh56_controller.git
cd rh56_controller
# Example: sim hand planner
git submodule update --init --recursive --depth 1 h1_mujoco mink
tools/setup_uv_env.sh --profile sim-hand --python 3.12 --env .venv312
source .venv312/bin/activate
python tools/check_profile_imports.py --profile sim-handROS2 Humble workflows should use Python 3.10 and source ROS before running ROS commands:
source /opt/ros/humble/setup.bash
tools/setup_uv_env.sh --profile real-h12-hand-ros --python 3.10 --env .venv310 --telemetry
source .venv310/bin/activateList all profiles:
python tools/check_profile_imports.py --listValidate one profile's Python imports and required local paths:
python tools/check_profile_imports.py --profile sim-ur5If you only want to check Python imports, skip path checks:
python tools/check_profile_imports.py --profile sim-ur5 --no-pathsIf you only want to check that submodules/assets are present, skip imports:
python tools/check_profile_imports.py --profile all --paths-onlyRun the main sim install checks end-to-end:
tools/validate_profiles.shThis sets up and validates sim-hand, sim-ur5, and sim-h12 in separate
envs matching the README examples: .venv312, .venv312-ur5, and
.venv312-h12. To reuse existing envs:
tools/validate_profiles.sh --check-onlyBase dependencies cover the common numerical and MuJoCo viewer stack:
numpy, scipy, matplotlib, and mujoco.
Optional groups add only their subsystem:
| Group | Adds |
|---|---|
hand / real-hand |
pyserial for RH56 hardware |
mink |
Mink differential IK comparison |
ur5 |
magpie_control and spatialmath-python for real UR5 control |
h12 |
Pinocchio, PINK, DAQP/QPSolvers, Meshcat for H1-2 simulation/control |
ros |
Semantic marker only; ROS Python packages come from ROS/apt/colcon |
telemetry |
rerun-sdk |
When adding a dependency, add it to the narrowest group that needs it, then
update this guide, tools/setup_uv_env.sh, and
tools/check_profile_imports.py in the same change.