Real2Sim manipulation studio
A photo in. A robot demo out.
Take a few photos of anything on a table. woros reconstructs it as a real 3D world, drops a Franka Panda arm in front of it, and plans a contact-rich pick or push — simulated with real MuJoCo physics, right in your browser, on your phone or your laptop.
Real MuJoCo physics·Works on your phone or laptop·No CAD models, no install
Live in your browser — drag to orbit, press Plan & Run for a real physics-verified pick.
Real capture
This photo became that scene
No modeling, no manual measuring — a plate and a salt shaker reconstructed straight from a phone camera, ready for a robot to pick up.


Pipeline
01
Capture
Record or take a few photos of a tabletop scene from your phone.
02
Reconstruct
woros estimates each object's shape, scale, mass, and pose.
03
Simulate
A real Franka Panda arm is placed in front of it in MuJoCo physics.
04
Plan
A contact-rich planner picks or pushes your object — watch it replay.
Playground
Or skip the camera — build an environment and write the brain yourself
woros is a free, lightweight MuJoCo simulator you can shape by hand: start from a premade tabletop, drop in boxes, balls, and cylinders, and write your own controller(obs) in JavaScript instead of running CoRAL's planner — it gets every body's position and the object you picked as the target, and returns joint commands, stepped against real physics live in your browser. Good for practicing motion planning, or just watching your own policy actually move an arm.
function controller(obs) {const ctrl = obs.ctrl.slice();const ee = obs.bodies["hand"];const target = obs.bodies[obs.targetId];if (ee && target) {const dx = target.pos[0] - ee.pos[0];const dy = target.pos[1] - ee.pos[1];ctrl[0] += Math.atan2(dy, dx) * 0.01;}return ctrl;}
Under the hood
Nothing here is canned
Every scene on this page — including the one you just ran above — went through the same job API: submit a photo, poll for status, get back a SceneSpec and a MuJoCo world once reconstruction finishes.
curl -X POST https://woros.app/api/jobs \-H "content-type: application/json" \-d '{"photos": [{"contentType":"image/jpeg"}]}'# → job created, upload target(s) returned{"job": { "id": "b37a8764…", "status": "awaiting_upload" }"uploads": [{ … }]}