RIO
RIO is a real-time control library for cross-embodiment robot manipulation, supporting the full robot learning workflow.
Cross-Embodiment
Support for XArm, UR5, Franka, SO100, Leap Hand, XHand β configure any robot with a single dataclass.
Teleoperation
Collect demonstrations with Spacemouse, gamepad, keyboard, or Gello leader arms. Record trajectories automatically.
Policy Deployment
Export data to LeRobot/DROID format and fine-tune pi0 policies with the openpi training pipeline.
Closed-Loop Deployment
Run fine-tuned VLA policies on real hardware at up to 250 Hz with action chunking and automatic re-planning.
Architecture¶
RIO is split into two packages:
- RIO β utilities and abstractions for robot learning: data collection, format conversion, policy interfaces, and orchestration.
- RIO_HW β backend code and hardware interfaces: real-time control loops, driver bindings, and communication middleware.
Everything is wired together through a station config which is a Python dataclass that declares every node in your setup (arms, grippers, cameras, recorders, policy servers). See Station Configuration for details.
Installation¶
Recommended System Setup
RIO should work on any Linux system. For replicating exact tested setup, see Ubuntu RT Setup for instructions.
# clone the repo
git clone git@github.com:cmubig/rio.git
cd rio
# install openpi (third-party policy server)
mkdir third_party && cd third_party
git clone git@github.com:Physical-Intelligence/openpi.git
cd ..
# install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# create venv and install dependencies
uv venv --python 3.10
source .venv/bin/activate
uv sync --all-extras