drcl-deploy/vibe_ws

ros2 workspace for transfering vibe policies

C++

2

54 commits

updated Oct 15, 2026

See the code

README

vibe_ws

Project Training

deployment workspace for ViBe trackers to unitree_mujoco and the Unitree G1 hardware

requirements

  • Ubuntu 22.04 + ROS 2 Humble (tested)
  • NVIDIA GPU with a working driver (nvidia-smi)
  • Git + Git LFS

install

From a fresh shell:

git clone https://github.com/drcl-deploy/vibe_ws
cd vibe_ws
./install.sh --system  # fetch, generate scenes, build

[!NOTE] For custom models, use absolute paths or place it under artifacts/.

usage

Run from the workspace root in each terminal, with a gamepad connected.

without planner

# terminal 1: simulator
sample=walk  # walk | parkour | repose | uolm
./unitree_mujoco/simulate/build/unitree_mujoco \
  -s "$PWD/generated/$sample/scene.xml"
# terminal 2: encoder + tracker
source setup_local.sh
sample=walk  # walk | parkour | repose | uolm
ros2 launch cpp_control g1_vibe_sonic.launch.py \
  policy_path:="models/$sample/policy.onnx" \
  encoder_path:=encoders/theia-tiny.onnx \
  motion_path:="$PWD/data/sample/$sample/motion.npz"
  • RB stand → L1 prep → A run · Y damping.
  • Use the same sample in both terminals; the scene, motion and policy follow it.
SampleDemo
walkGrail curbs
parkourOmRe climb
reposeDouble cube frontflip
uolmSuitcase

with planner (cube repose)

# terminal 1: simulator + cube
./unitree_mujoco/simulate/build/unitree_mujoco \
  -s "$PWD/generated/repose/g1_repose.xml"
# terminal 2: encoder + tracker
source setup_local.sh
ros2 launch cpp_control g1_vibe_sonic.launch.py \
  policy_path:=models/repose/policy.onnx \
  encoder_path:=encoders/theia-tiny.onnx \
  planner:=true \
  stand_yaw_teleop:=true stand_walk_teleop:=true \
  stand_walk_motion:="$PWD/cyclonedds_ws/install/sledgehammer/share/sledgehammer/data/sys1_walk/walk_forward_amateur_001__A001/motion.npz"
# terminal 3: planner + console
source setup_local.sh
ros2 launch sledgehammer planner.launch.py env:=sim
  • Gamepad: RB stand/disarm · A arm · Y damping.
  • Console: 0–5 or r/o/g/y/b/p target · R new trial · q quit. Select a target before arming.
  • Restart the tracker after restarting the planner.

to visualize the learnt attention maps , run in another terminal:

source setup_local.sh
bash cyclonedds_ws/src/cpp_control/scripts/vibe/stream_vibes.sh

docs

drcl-deploy/vibe_ws

ros2 workspace for transfering vibe policies

C++

2

54 commits

updated Oct 15, 2026

See the code

README

vibe_ws

Project Training

deployment workspace for ViBe trackers to unitree_mujoco and the Unitree G1 hardware

requirements

  • Ubuntu 22.04 + ROS 2 Humble (tested)
  • NVIDIA GPU with a working driver (nvidia-smi)
  • Git + Git LFS

install

From a fresh shell:

git clone https://github.com/drcl-deploy/vibe_ws
cd vibe_ws
./install.sh --system  # fetch, generate scenes, build

[!NOTE] For custom models, use absolute paths or place it under artifacts/.

usage

Run from the workspace root in each terminal, with a gamepad connected.

without planner

# terminal 1: simulator
sample=walk  # walk | parkour | repose | uolm
./unitree_mujoco/simulate/build/unitree_mujoco \
  -s "$PWD/generated/$sample/scene.xml"
# terminal 2: encoder + tracker
source setup_local.sh
sample=walk  # walk | parkour | repose | uolm
ros2 launch cpp_control g1_vibe_sonic.launch.py \
  policy_path:="models/$sample/policy.onnx" \
  encoder_path:=encoders/theia-tiny.onnx \
  motion_path:="$PWD/data/sample/$sample/motion.npz"
  • RB stand → L1 prep → A run · Y damping.
  • Use the same sample in both terminals; the scene, motion and policy follow it.
SampleDemo
walkGrail curbs
parkourOmRe climb
reposeDouble cube frontflip
uolmSuitcase

with planner (cube repose)

# terminal 1: simulator + cube
./unitree_mujoco/simulate/build/unitree_mujoco \
  -s "$PWD/generated/repose/g1_repose.xml"
# terminal 2: encoder + tracker
source setup_local.sh
ros2 launch cpp_control g1_vibe_sonic.launch.py \
  policy_path:=models/repose/policy.onnx \
  encoder_path:=encoders/theia-tiny.onnx \
  planner:=true \
  stand_yaw_teleop:=true stand_walk_teleop:=true \
  stand_walk_motion:="$PWD/cyclonedds_ws/install/sledgehammer/share/sledgehammer/data/sys1_walk/walk_forward_amateur_001__A001/motion.npz"
# terminal 3: planner + console
source setup_local.sh
ros2 launch sledgehammer planner.launch.py env:=sim
  • Gamepad: RB stand/disarm · A arm · Y damping.
  • Console: 0–5 or r/o/g/y/b/p target · R new trial · q quit. Select a target before arming.
  • Restart the tracker after restarting the planner.

to visualize the learnt attention maps , run in another terminal:

source setup_local.sh
bash cyclonedds_ws/src/cpp_control/scripts/vibe/stream_vibes.sh

docs