Skip to main content

What it is

Reinforcement learning (RL) trains a policy by trial and error against a reward, not from demonstrations. On Cyberwave, the world your policy learns in is a real Cyberwave environment exported to MuJoCo, so the scene, twins, joints, and sensors are identical from training to deployment. When the policy is ready, the same Python SDK code that drove it in simulation drives the physical robot.
New to the idea? Train an RL policy in MuJoCo is a step-by-step walkthrough from an empty environment to a policy running on real hardware. This page is the orientation; the tutorial is the details.

When to reach for RL

Most robot learning here starts with imitation: teleoperate, record, and train a VLA. Reach for RL when a demonstration isn’t available or isn’t the point:
  • You have an objective you can score (keep the part centred, cover every viewpoint, minimise energy) but not the exact joint trajectory.
  • The motion is too precise or too tedious to teleoperate: contact-rich insertion, dynamic balancing, full-coverage inspection.
  • You need millions of cheap rollouts, which are free in simulation and impossible on real hardware.

Two ways to train

Bring your own RL stack

Export the environment to MuJoCo and train with any library you like (Gymnasium + Stable-Baselines3, CleanRL, etc.). You own the training loop; Cyberwave provides the scene export and the sim-to-real bridge. Start here if you already have RL code.

Platform-managed RL Tasks

Author actions, observations, and the reward network in the dashboard, then export a runnable mjlab/skrl task built on the open-source cyberwave-rl framework. Start here if you want structure and less boilerplate.

The core idea in code

Whichever path you take, the sim-to-real seam is the same one line. Train and validate against the digital twin:
When you trust the policy, flip one line and the exact same code runs on the physical robot:

The five steps

Approaching RL with Cyberwave is always the same five moves. You build the scene once; everything after reuses it.
1

Set up the environment

Build your world in Cyberwave: the robot twin, any parts it interacts with, and the sensors the policy observes (e.g. a wrist camera).
2

Export to MuJoCo

Download the environment as a self-contained MuJoCo scene (mujoco_scene.xml + meshes) that runs on your laptop, cluster, or CI.
3

Write & train locally

Define a reward, wrap the scene as a training environment, and train on your own machine with MuJoCo and a CPU. Millions of cheap rollouts, no hardware.
4

Mirror to Cyberwave with affect('simulation')

Run the trained policy and stream its joint commands to the digital twin. Nothing touches hardware, so you can watch and validate it safely in the dashboard.
5

Drop affect() → go live

Switch to affect('live') and the same code drives the real robot through its paired Edge Core.
Each step is expanded in Train an RL policy in MuJoCo, with reward design, the Gymnasium environment, PPO training, and sim-to-real notes.

Next steps

Train an RL policy

The full walkthrough: export, train, mirror, deploy.

RL Tasks

Dashboard-authored tasks and the export contract.

Uploading policies

Store a checkpoint on Cyberwave and serve it as a controller.

Simulation

How MuJoCo, Playground, and affect() fit together.

Python SDK

Twins, joints, cameras, and the full SDK surface.

Train a VLA

The imitation-learning counterpart.