Dockerized ROS 2 stack for controlling and interfacing with the humanoid robot, plus Isaac Lab / MuJoCo simulation, teleop, and imitation learning.
Published docs: https://watonomous.github.io/humanoid-docs/index.html
- Copy config and pick a module:
cp watod-config.sh watod-config.local.sh
# edit ACTIVE_MODULES and MODE_OF_OPERATION="develop"- Build and run:
./watod build
./watod up -d
./watod -t <service>_dev # shell into a develop containerACTIVE_MODULES |
What it runs |
|---|---|
samples |
Reference ROS 2 pub/sub pipeline |
interfacing |
CAN / hardware interfacing |
perception |
Perception (cameras, GPU) |
behaviour |
joint_command, voxel_grid |
simulation_isaac |
Isaac Lab 2.3.2 — SO101 IL, HumanoidRL, Quest teleop |
simulation_mj |
MuJoCo / mjlab RL (mjlabs service) |
Isaac Lab sim (recommended): see docker/simulation/isaac_lab/QUICKSTART.md.
humanoid
├── watod # Compose orchestrator
├── watod-config.sh # Defaults (copy → watod-config.local.sh)
├── watod_scripts/ # Dev-env / Docker helpers
├── modules/ # docker-compose.<module>.yaml
├── docker/ # Dockerfiles per stack
│ ├── base/
│ ├── samples/
│ ├── interfacing/
│ ├── perception/
│ ├── behaviour/
│ └── simulation/
│ ├── isaac_lab/ # Isaac Lab + LeRobot (primary sim)
│ └── mjlabs/ # MuJoCo / mjlab
├── autonomy/
│ ├── samples/ # ROS 2 coding patterns
│ ├── wato_msgs/ # Shared messages
│ ├── interfacing/ # CAN, DBC, aggregator
│ ├── perception/
│ ├── behaviour/ # joint_command, voxel_grid, octo_map
│ ├── simulation/ # Isaac tasks, teleop, HumanoidRL
│ ├── teleop/ # Quest / rosbridge packages
│ └── il/ # Imitation learning recording
├── assets/lerobot/ # SO101 USD / vial-task assets
├── docs/ # Doc conventions + architecture map
├── embedded/ # STM32, ESP32S3 firmware
├── utils/ # Package scaffolding helpers
└── camera/ # Host RealSense utility
| Stack | Module | Docs |
|---|---|---|
| Isaac Lab 2.3.2 / Sim 5.1 (SO101 IL, HumanoidRL, Quest) | simulation_isaac |
QUICKSTART · full README |
| MuJoCo / mjlab | simulation_mj |
mjlabs_setup.md |
| SO101 vial Gym envs | (inside simulation_isaac) |
so101_vial_task |
| Quest bimanual teleop | (inside simulation_isaac) |
quest_isaac_teleop |
| Other teleop variants | host or container | Teleop.md |
Isaac Lab needs Linux, NVIDIA GPU, Docker GPU passthrough, and X11 (xhost +local:docker).
| Area | Start here |
|---|---|
| ROS node patterns | autonomy/samples/README.md |
| Imitation learning | autonomy/il/README.md · Isaac QUICKSTART |
| CAN / hardware | autonomy/interfacing/can/README.md |
| Messages | autonomy/wato_msgs/common_msgs/README.md |
| New ROS package | utils/README.md |
| Doc conventions | docs/README.md |
| WATO infra (external) | wato_monorepo/docs/dev |
If you are talking to the robot over CANable, install host udev rules:
./autonomy/interfacing/can/scripts/can_udev.sh install- Ubuntu ≥ 22.04 (WSL / macOS may work for non-GPU stacks)
- Docker + watod (
./watod) - NVIDIA GPU + drivers for Isaac Lab, perception, and mjlab