Isaac Lab environments, robot assets, and pretrained checkpoints for BrainCo dexterous manipulation tasks. Including:
- Revo3 in-hand repose
- Revo3 in-hand reorientation
- Revo3 HORA/RMA in-hand ball and cylinder rotation
- Revo3 right-hand lift
- RevoTron dynamic handover
BrainCo-IsaacLab/
├── assets/ # Robot assets, object meshes, and grasp caches
│ ├── usd/ # USD assets grouped by task family
│ └── urdf/ # URDF assets and meshes
├── checkpoints/ # Pretrained checkpoints
├── image/ # Task demo GIFs
├── scripts/rsl_rl # RSL-RL training and evaluation scripts
├── scripts/rl_games # RL-Games training and evaluation scripts
├── scripts/hora # HORA PPO / ProprioAdapt training and export scripts
├── deploy/revo3 # Revo3 sim-to-real deployment package
└── source/BrainCo_DexHand/ # Isaac Lab extension package
- Python 3.10+
- A working Isaac Lab installation
This repository is distributed as an Isaac Lab extension package, not as a standalone simulator fork.
- Install Isaac Lab by following the official Isaac Lab setup for your target version.
- Clone this repository into your workspace.
- Install the BrainCo extension:
cd source/BrainCo_DexHand
pip install -e .We provide a script to easily download all the pretrained checkpoints from our OSS server. Run the following command from the repository root:
./scripts/download-checkpoints.shThis will download the *.pt files directly into the repository's checkpoints/ directory.
The in-hand manipulation environments use RSL-RL. The environments register when BrainCo_DexHand is importable in your Isaac Lab Python environment.
Check registration:
python -c "import BrainCo_DexHand"Train:
python scripts/rsl_rl/train.py --task BrainCo-Direct-Revo3-Repose-Cube-v0 --num_envs 8192 --headless
python scripts/rsl_rl/train.py --task BrainCo-Direct-Revo3-Reorient-Cylinder-v0 --num_envs 4096 --headlessEvaluate:
python scripts/rsl_rl/play.py --task BrainCo-Direct-Revo3-Repose-Cube-v0 --checkpoint checkpoints/BrainCo-Direct-Revo3-Repose-Cube-v0.pt --num_envs 1
python scripts/rsl_rl/play.py --task BrainCo-Direct-Revo3-Reorient-Cylinder-v0 --checkpoint checkpoints/BrainCo-Direct-Revo3-Reorient-Cylinder-v0.pt --num_envs 1The grasping task uses the Dexsuite Revo3 environment with RSL-RL.
Train:
python scripts/rsl_rl/train.py --task BrainCo-Dexsuite-Revo3-Right-Lift-v0 --num_envs 4096 --headlessEvaluate:
python scripts/rsl_rl/play.py --task BrainCo-Dexsuite-Revo3-Right-Lift-Play-v0 --checkpoint checkpoints/BrainCo-Dexsuite-Revo3-Right-Lift-v0.pt --num_envs 1The HORA rotation tasks are integrated as a separate training path because their PPO, ProprioAdapt Stage 2 adapter, and checkpoint format are not RSL-RL-compatible. This integration is adapted from HORA.
Stage 1 PPO teacher training:
python scripts/hora/train.py --algo PPO --task ball --num_envs 16384 --headless
python scripts/hora/train.py --algo PPO --task cylinder --num_envs 16384 --headlessStage 2 ProprioAdapt training from a Stage 1 checkpoint:
python scripts/hora/train.py --algo ProprioAdapt --checkpoint outputs/hora/revo3_right/run_ball/stage1_nn/best.pth --task ball --num_envs 16384 --headless
python scripts/hora/train.py --algo ProprioAdapt --checkpoint outputs/hora/revo3_right/run_cylinder/stage1_nn/best.pth --task cylinder --num_envs 16384 --headlessEvaluate a checkpoint:
python scripts/hora/train.py --algo PPO --task ball --num_envs 32 --test --checkpoint checkpoints/hora/revo3_right_ball_stage1_best.pth
python scripts/hora/train.py --algo PPO --task cylinder --num_envs 32 --test --checkpoint checkpoints/hora/revo3_right_cylinder_stage1_best.pthExport a Stage 2 checkpoint to ONNX:
python scripts/hora/export_onnx.py \
--stage stage2 \
--checkpoint outputs/hora/revo3_right/run_ball/stage2_nn/model_best.ckpt \
--output ball_hora_stage2.onnxDynamic handover uses the RevoTron asset and RL-Games. This task is adapted from dynamic_handover. Run from the repository root with the Isaac Lab Python environment activated.
Train:
python scripts/rl_games/train.py \
--task BrainCo-Dynamic-Handover-Revo3-Cube-v0 \
--num_envs 4096 \
--headlessEvaluate:
python scripts/rl_games/play.py \
--task BrainCo-Dynamic-Handover-Revo3-Cube-Play-v0 \
--num_envs 1 \
--checkpoint checkpoints/dynamic_handover/revotron_handover.pthTo manually switch toss direction during play, pass a command file:
python scripts/rl_games/play.py \
--task BrainCo-Dynamic-Handover-Revo3-Cube-Play-v0 \
--num_envs 1 \
--checkpoint checkpoints/dynamic_handover/revotron_handover.pth \
--command-file /tmp/handover_command.txtThen update the command from another terminal:
echo 'right_throw' > /tmp/handover_command.txt
echo 'left_throw' > /tmp/handover_command.txtBelow is a sim-to-real deployment of BrainCo-Direct-Revo3-HoraRotate-Cylinder-v0. More tasks' sim-to-real deployments will be released in the future.
The Revo3 deployment runtime lives in deploy/revo3. It is a lightweight, ROS-free package for running exported ONNX policies on the real Revo3 hand through the Revo3 Python SDK.
The deploy loop is closed-loop: it reads measured joint positions from hardware, builds the policy observation history, runs ONNX inference, maps policy-order targets to SDK motor order, and sends MIT commands back to the hand. It is not a fixed trajectory replay tool.
Install the deploy package:
cd deploy/revo3
pip install -e .Install the hardware extra when running on the real hand:
pip install -e ".[hardware]"The runtime uses:
policy.onnx: exported policy networkpolicy.yaml: policy I/O contract and metadataconfig/revo3_right.yaml: joint order, joint limits, SDK settings, MIT gains, and sim-to-real offsets
Run a dry-run policy loop without sending commands:
python scripts/run_policy.py \
--onnx artifacts/repose_cube/policy.onnx \
--policy artifacts/repose_cube/policy.yaml \
--profile config/revo3_right.yaml \
--dry-runSee deploy/revo3/README.md for export and hardware run commands.
- The Revo3 tasks IDs follow the
BrainCo-<framework>-<robot>-<task>-v0naming convention. - Checkpoints are provided for reproducibility and evaluation.
- Dynamic handover play supports command-file throw direction overrides:
right_throwandleft_throw.
This repository is released under the MIT License. See LICENSE.
Some files retain upstream Isaac Lab copyright and SPDX headers and remain subject to their original notices. See THIRD_PARTY_NOTICES.md.






