Skip to content

HansZ8/RoboJuDo

Repository files navigation

RoboJuDo 🤖

A plug-and-play deploy framework for robots. Just deploy, just do.

release platform multi-robot pre-commit license

demo

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.

📓Content

🗺️Roadmap

  • [2025.04] Initialized project
  • [2025.05] Add support for Unitree G1
  • [2025.05] Add support for Unitree H1, FFTAI Gr1T1
  • [2025.06] Integrated Unitree C++ SDK
  • [2025.08] Add support for beyondmimic
  • [2025.09] RoboJuDo Opensource 🎉
  • [2025.10] Add support for ASAP
    • Implement deepmimic and locomotion, check AsapPolicy!
    • Preserve original keyboard and joystick mappings
    • Support for KungfuBot
  • Add policy-switch pipeline with interpolation, check LocoMimic Example!
  • [2025.11] Add support for KungfuBot2 ✨, check KungfuBotGeneralPolicy!
  • [2025.11] Add support for TWIST ✨, check TwistPolicy!
  • Release code for HugWBC
  • Release code for GMT
  • Upcoming policies...
working

📄Introduction

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_data to 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_data to 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.

🛠️Easy Setup

RoboJuDo supports multiple platforms, officially tested on Ubuntu and Windows.

Robot onboard PCs are also supported.

1️⃣ Basic Installation

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 robojudo

Step 2: Install RoboJuDo

# Optional, install cpu version for speed up
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -e .

2️⃣ Install Optional Modules

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_viewer is 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_cpp

📖Quick Start

RoboJuDo 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.

  1. Run Sim2Sim
  2. Run Sim2Real
  3. Deploy More Policies✨

Run RoboJuDo on Simulation

Begin your journey with unitree g1 sim2sim.

A Xbox controller is needed for control.

# run the default g1 sim2sim cfg
python scripts/run_pipeline.py

You can control the motivation using any Xbox controller:

  • left axes move forward/backward/lfet/right
  • right axes turn left/right

Run RoboJuDo on Real Robot 🤖

Alert & Disclaimer ⚠️⚠️⚠️

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.

Robot Setup

Follow our setup guide to set up the robot sdk on your computer or robot.

Start RoboJuDo

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_real

Your 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:

  • A button: Emergency stop. The robot immediately switches to damping mode. Be careful.
  • left axes move forward/backward/let/right
  • right axes turn left/right

Deploy More Policies

💡Now you’re familiar with RoboJuDo’s config design, it’s time to experience the amazing variety of policies!

BeyondMimic & ASAP

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_asap

check documentation BeyondmimicPolicy and AsapPolicy for more details.

Multi-Policy Switch

g1_switch config in g1_cfg.py is equipped with Multi-Policy Pipeline.

python scripts/run_pipeline.py -c g1_switch

Xbox Controller:

  • left axes move forward/backward/left/right
  • right axes(left/right) turn left/right

Switch between Unitree Policy and AMO Policy:

  • RB + Dpad[Down] switch to Unitree Policy
  • RB + Dpad[Up] switch to AMO Policy

Loco-Mimic Policy Switch with Interpolation

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_asap

We have the same Keyboard control as ASAP:

  • [ to switch to MotionMimic
  • ] to switch to LocoMotion
  • ; toggle next mimic policy
  • ' toggle prev mimic policy
locomimic_asap

More Policies

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.

🧩Develop and Contribute

Add a new module

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!

Contribute to our project

We warmly welcome contributions from the community. Let’s build a strong and open ecosystem for RoboJuDo together!

🔗Citation

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😁

🔗 Related Repo

  • Unitree SDK2 Python: used for implementing UnitreeEnv.
  • PHC: used for implementing the MotionCtrl module for OmniH2O.
  • UnitreeCpp: our pybind of unitree_sdk2 used in UnitreeCppEnv.
  • ZED Proxy: ZED Camera Odometry Service.