Tired of projects that release only models but no deployment code? RoboJuDo provides a unified framework that makes policy deployment straightforward and practical.
Our framework highlights:
-
Out-of-the-box: After setting up RoboJudo, multiple policies can be deployed on both simulation and real robots in minutes: Quick Start.
-
Decoupled & Modular Design: With a Python-first design, RoboJuDo makes fast prototyping easy. Environment, Controller, and Policy are modular and freely composable, while minimal code changes allow seamless adaptation across robots and setups: See how we achieve this: Add a new module.
-
Multi-policy switching: Seamlessly switch between different policies during a task. Try this: Multi-Policy Switching.
-
Light-Weight: Our framework is lightweight, after 5 minutes of setup, it runs smoothly onboard. By UnitreeCpp, RoboJuDo runs on Unitree G1 without the need for an Ethernet cable.
|
This repository provides a deployment framework for humanoid robots, supporting the use of different policies across different environments (real robots and simulation).
We decouple the controller, environment, and policy, making it easy for users to add their own policies or environments.
Experiment configurations can be organized through config files.
The main modules of RoboJuDo consist of:
- 🎮 Controller: A collection of control signals. It receives external inputs (e.g., joystick, keyboard, motion sequences) and forwards them as
ctrl_datato the pipeline. - 🤖 Environment: The execution environment (e.g., Mujoco, real robot). It processes actions provided by the policy and sends real-time sensor data as
env_datato the pipeline. - 🌐 Policy: A trained control policy (from various wbc & locomotion works). It generates actions based on information from both the environment and the controller.
Currently, RoboJuDo supports the following policy–environment combinations:
| Policy | Unitree G1 | Unitree H1 | FFTAI gr1t1 | Ref | Doc | Feature & Note |
|---|---|---|---|---|---|---|
| Unitree Official | 🖥️ 🤖 | 🖥️ 🤖 | - | unitree_rl_gym | UnitreePolicy | |
| Unitree Wo Gait | 🖥️ 🤖 | - | - | unitree_rl_lab | UnitreeWoGaitPolicy | no gait |
| Human2Humanoid | 🖥️ 🤖 | 🖥️ 🤖 | 🖥️ | H2H | H2HStudentPolicy | Need PHC submodule |
| Smooth | 🖥️ 🤖 | 🖥️ 🤖 | 🖥️ 🤖 |
Smooth | ||
| AMO | 🖥️ 🤖 | - | - | AMO | AmoPolicy | |
| GMT | 🖥️ 🤖 | - | - | GMT | ||
| HugWBC | 🖥️ 🤖 | 🖥️ 🤖 | - | HugWBC | HugWbcPolicy | |
| BeyondMimic | 🖥️ 🤖 | - | - | whole_body_tracking | BeyondmimicPolicy | With&Wo SE supported |
| ASAP | 🖥️ 🤖 | - | - | ASAP | AsapPolicy | deepmimic & locomotion supported |
| KungfuBot KungfuBot2 |
🖥️ 🤖 | - | - | PBHC | AsapPolicy KungfuBotGeneralPolicy |
Need PHC submodule |
| TWIST | 🖥️ 🤖 | - | - | TWIST | TwistPolicy | |
| ... | ... | ... | ... | ... | ... | ... |
🖥️ means policy is ready for simulation, while 🤖 means policy has been tested on real robot.
RoboJuDo supports multiple platforms, officially tested on Ubuntu and Windows.
Robot onboard PCs are also supported.
Step 1: Clone the repository and create a Python environment
git clone https://github.com/HansZ8/RoboJuDo.git
cd RoboJuDo/
# Example using conda
conda create -n robojudo python=3.11 -y
conda activate robojudoStep 2: Install RoboJuDo
# Optional, install cpu version for speed up
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -e .RoboJuDo is a plug-and-play framework. After a minimal default installation, you can selectively configure and install only the modules you need.
Step 0: [Optional] Install Robot SDK
You can skip this for sim2sim and development.
If you plan to control a real robot, install the corresponding SDK.
For example, see unitree_setup.md for Unitree robots.
Step 1: Configure modules
Edit submodule_cfg.yaml to select modules, by setting install as true.
As default,
mujoco_vieweris selected for sim2sim.
Step 2: Install modules
# Install all required modules
python submodule_install.py
# Or specify modules to install with args
# python submodule_install.py unitree_cppRoboJuDo is a modular framework where tasks can be flexibly defined by composing configuration files.
In the following, we use the deployment on G1 as an example.
Begin your journey with unitree g1 sim2sim.
A Xbox controller is needed for control.
# run the default g1 sim2sim cfg
python scripts/run_pipeline.pyYou can control the motivation using any Xbox controller:
left axesmove forward/backward/lfet/rightright axesturn left/right
Before deployment, you'd better first purchase accident insurance to cover any potential incidents that may occur during real-world operation. Policies could cause
⚠️ violent motions⚠️ when losing balance. Always verify that the emergency stop button (e.g., A for default config) works properly.
Unless you have strong sim-to-real expertise and rigorous safety measures, DO NOT run these models on real robots. They are provided for research only, and we disclaim any responsibility for harm, loss, or malfunction.
Follow our setup guide to set up the robot sdk on your computer or robot.
Open g1_cfg.py and modify the g1_real config.
Edit the env_type and net_if according to your robot sdk setup.
class g1_real(g1):
env: G1RealEnvCfg = G1RealEnvCfg(
env_type="UnitreeEnv", # For unitree_sdk2py
# env_type="UnitreeCppEnv", # For unitree_cpp, check README for more details
unitree=G1UnitreeCfg(
net_if="eth0", # note: change to your network interface
),
)Refer to official guide to prepare and start the robot.
Then start the pipeline on the real robot:
python scripts/run_pipeline.py -c g1_realYour robot should move into default pos. During the preparation, put your robot on the ground.
You can control the real robot using the Unitree controller:
Abutton: Emergency stop. The robot immediately switches to damping mode. Be careful.left axesmove forward/backward/let/rightright axesturn left/right
💡Now you’re familiar with RoboJuDo’s config design, it’s time to experience the amazing variety of policies!
Try the out of box experience of BeyondMimic and ASAP:
python scripts/run_pipeline.py -c g1_beyondmimic
python scripts/run_pipeline.py -c g1_asapcheck documentation BeyondmimicPolicy and AsapPolicy for more details.
g1_switch config in g1_cfg.py is equipped with Multi-Policy Pipeline.
python scripts/run_pipeline.py -c g1_switchXbox Controller:
left axesmove forward/backward/left/right
right axes(left/right)turn left/right
Switch between Unitree Policy and AMO Policy:
RB + Dpad[Down]switch to Unitree PolicyRB + Dpad[Up]switch to AMO Policy
For deploying Motion Mimic Policies with Locomotion as backup, we built LocoMimicPipeline for multi-policy switching with interpolation,
Check g1_locomimic config in g1_cfg.py, and more fancy locomimic configs in g1_loco_mimic_cfg.py.
python scripts/run_pipeline.py -c g1_locomimic_beyondmimic
python scripts/run_pipeline.py -c g1_locomimic_asapWe have the same Keyboard control as ASAP:
[to switch to MotionMimic]to switch to LocoMotion;toggle next mimic policy'toggle prev mimic policy
We also provide config files for other policies, check config_g1 and config_h1 for more details.
In RoboJuDo, we have fully replicated ASAP’s Sim2Real workflow, including all motions.
Please refer to g1_locomimic_asap_full in g1_loco_mimic_cfg.py. This highlights the modular advantages of our framework.
Refer to the documentation on Policy, Controller, Env, create and deploy your own policy in minutes.
(By the way, deploying AMO takes only 30 minutes, and GMT about 1 hour in our framework.)
Or simply create an issue — we will include updates in future releases!
We warmly welcome contributions from the community. Let’s build a strong and open ecosystem for RoboJuDo together!
If you find our work useful, please cite our GitHub repository:
@misc{RoboJuDo,
author = {Hans Zhuang, Dsixy, artpli},
title = {A plug-and-play deploy framework for robots. Just deploy, just do.},
url = {https://github.com/HansZ8/RoboJuDo},
year = {2025}
}or star our repo😁
- Unitree SDK2 Python: used for implementing
UnitreeEnv. - PHC: used for implementing the
MotionCtrlmodule for OmniH2O. - UnitreeCpp: our pybind of
unitree_sdk2used inUnitreeCppEnv. - ZED Proxy: ZED Camera Odometry Service.


