RL Tasks
The entity and editor tabs this script automates.
Scene Sensors
Wiring the wrist depth camera and contact sensors.
Uploading Policies
Upload the trained checkpoint and run it.
Online Controllers
Deploy the policy against a simulated or live robot.
The scene
Four twins make up the task. Each maps to one mjlab scene entity:The catalog assets (
enactic/openarm, cyberwave/generic_cube, intel/realsensed455) must already exist in your workspace’s catalog. On a local stack they are added by make seed.Prerequisites
Step 1 — Scaffold workspace, project, and environment
Step 2 — Compose the scene
Add the four twins to the environment. The arm is fixed-base, the cube is free, and the camera is docked to the arm’s wrist link.Step 3 — Create the RL task
Link the task to the environment and declare the entrypoint files Cyberwave will generate or expect.Step 4 — Assign scene entities
Tell Cyberwave which twin is which mjlab entity, whether it is articulated, and which actuators the arm exposes. The wrist depth camera is attached as a sensor on therobot entity.
Step 5 — Author actions, observations, and the network
This walkthrough uses PPO with a small shared MLP to stay readable. For a vision policy you would author a CNN backbone that consumes the
wrist_depth term — the network builder supports graph topologies for exactly this. See the Network builder section.Step 6 — Generate files and export
env_cfg.py inside the export. Cyberwave generates everything else (scene_cfg.py, scene_bindings.py, the spec wrappers, the MuJoCo assets).
Step 7 — Train
Drop the exported folder intocyberwave-rl/tasks/ and train it like any other task:
logs/<task>/<run>/checkpoints/. The best one is typically best_agent.pt.
Step 8 — Upload the trained policy
Step 9 — Deploy the policy
Publish the checkpoint as anrltask online controller, then assign it to the arm twin and run it. The controller runs in its own controller host and drives the plant over MQTT, so the same policy works against a simulated or a live OpenArm.
controller_uuid to the openarm twin and start a simulation — see Online Controllers for assigning and running it, including the CPU/GPU compute choice.
Alternatively, run a quick cloud inference loop without publishing a controller:
What you authored vs what Cyberwave generated
Where to go next
RL Tasks
Full reference for the editor tabs and export contract.
Uploading Policies
Checkpoint upload, publish, and inference in depth.
Online Controllers
Run the deployed policy against a simulated or live robot.