Positronic provides unified data collection for simulation (MuJoCo) and hardware (Franka, Kinova, SO101, DROID). All demonstrations are recorded as immutable raw datasets that can be projected to any model format using codecs.
uv run positronic-data-collection sim \
--output_dir=~/datasets/stack_cubes_raw \
--sound=None \
--webxr=.iphone \
--operator_position=.BACKLoads MuJoCo scene, starts DearPyGui visualization, launches WebXR server for phone teleoperation (port 5005), and records to ~/datasets/stack_cubes_raw. Press Ctrl+C to stop.
uv run positronic-data-collection sim \
--output_dir=~/datasets/my_task \
--webxr=.iphoneInstall XR Browser or WebXR Viewer on iPhone. The script prints the URL in console. Open in browser, tap Enter AR, grant permissions. Hold phone upright (reticle = virtual controller). Use HUD: Track (start/stop positional tracking), Record (start/stop episode), Reset (abort/reset scene), Gripper slider (0-1).
uv run positronic-data-collection sim \
--output_dir=~/datasets/my_task \
--webxr=.androidUse Chrome browser (WebXR built-in). Connect to https://<host-ip>:5005, enter AR, control as above.
Troubleshooting: If "Enter AR" doesn't appear, try different browser or toggle --webxr.use_https=True/False. For jittery tracking, ensure good lighting and hold phone steady when pressing Track. Check firewall allows port 5005 if server is unreachable.
uv run positronic-data-collection sim \
--output_dir=~/datasets/my_task \
--webxr=.oculusOpen Oculus Browser, navigate to https://<host-ip>:5005/. Browser shows "Dangerous connection" warning (expected with self-signed certificates) – click Advanced → Proceed. Click "Enter AR" and approve permissions.
Controls: Right B (start/stop recording), Right A (toggle tracking), Right stick press (abort/reset), Right trigger (gripper).
Press Track (or Right A) to enable controller. Press Record (or Right B) to start episode. Perform task (e.g., grasp cube, move, place). Press Record again to save. Press Reset (or Right stick press) to randomize scene and start next episode. Press Reset during recording to abort and discard.
Best practices: Record calibration runs first and review in Positronic server (uv run positronic-server --dataset.path=~/datasets/my_task). Collect 50+ demonstrations for single-task scenarios (minimum 30, multi-task needs 100-500+). Randomize object positions, vary approach angles, keep episodes short (10-30s), demonstrate successful and near-failure cases (not catastrophic failures).
uv run positronic-data-collection real \
--output_dir=~/datasets/franka_logistics \
--webxr=.oculusRequires Franka Panda with FCI, gripper, cameras. Install extras: uv sync --frozen --extra hardware (Linux only). Configure network connection and udev rules (see Drivers).
- Kinova Gen3: Add
--robot_arm=@positronic.cfg.hardware.roboarm.kinova - SO101: Use
positronic-data-collection so101(bimanual setup) - DROID: Use
positronic-data-collection droid(joint-space control)
| Parameter | Description | Example |
|---|---|---|
--output_dir |
Dataset location | ~/datasets/my_task, s3://bucket/datasets/task |
--webxr |
Teleoperation | .iphone, .android, .oculus, None |
--sound |
Audio feedback | None (disable), default (enable) |
--operator_position |
Camera viewpoint | .FRONT, .BACK, .LEFT, .RIGHT |
S3 support: Positronic relies on pos3 for S3 integration. Data is cached locally and synced automatically.
Custom configs: Add hardware configs in positronic/cfg/hardware/, reference with --robot_arm=@positronic.cfg.hardware.roboarm.my_custom_arm.
Launch viewer:
uv run positronic-server \
--dataset.path=~/datasets/my_task \
--port=5001Open http://localhost:5001 to browse episodes, view camera feeds, check timestamps. Delete low-quality episodes manually: rm -rf ~/datasets/my_task/000000000000/000000000042/.
After collection: Review data in server → Curate by removing failures → Convert with codecs (Training Workflow) → Train policy (Model Selection) → Evaluate (Inference Guide).
- Training Workflow – Converting and training
- Codecs Guide – Format projection
- Inference Guide – Policy deployment
- Dataset Library – Raw storage
- Drivers – Hardware integration

