PolaRiS¶
Eden ports the six DROID scenes of PolaRiS, a real-to-sim evaluation suite in
which a Franka with a Robotiq 2F-85 works in front of a Gaussian-splat capture of a real scene. Read this page to
run the scenes, score a policy with PolaRiS's rubrics, or generate demonstrations. The code is in
eden/tasks/polaris/.
The tasks¶
Each scene is registered twice: a single-env task for teleoperation and policy inference, and a *_batched
variant that renders many envs at once.
Task (--task) |
Batched variant | Instruction | Rubric (success) |
|---|---|---|---|
polaris_block_stack_kitchen |
polaris_block_stack_kitchen_batched |
"Place and stack the blocks on top of the green tray" | both cubes put in the tray, then the green cube over the wood cube |
polaris_food_bussing |
polaris_food_bussing_batched |
"Put all the foods in the bowl" | the ice cream and the grapes put in the bowl |
polaris_pan_clean |
polaris_pan_clean_batched |
"Use the yellow sponge to scrub the blue handle frying pan" | the sponge put in the pan |
polaris_move_latte_cup |
polaris_move_latte_cup_batched |
"put the latte art cup on top of the cutting board" | the cup put on the cutting board |
polaris_organize_tools |
polaris_organize_tools_batched |
"put the scissor into the large container" | the scissor put in the large container |
polaris_tape_into_container |
polaris_tape_into_container_batched |
"put the tape into the container" | the tape put in the container |
- Single-env tasks are
EdenSplatConfigs (built as aSplatEnvBase): one env, no rewards or terminations beyond the episode length, for teleoperation and policy inference. - Batched tasks are
EdenSplatRLConfigs (built as aSplatRLEnvBase): four envs by default, the gs-madrona batch renderer with a soft two-light rig, and every env's splat rendered and composited under it. They reuse the single-env task's objects, splat, instruction and rubric verbatim. Their reward and termination managers are empty for now: they are RL-typed scaffolding that renders batched but has nothing to train against yet.env_options.num_envsandsplat_options.minibatchtrade VRAM for throughput.
Scoring: PolaRiS's rubrics¶
PolaRiS scores each task with a rubric: criteria built from three checkers, each counted once it has ever passed,
some only after others have. Success is every criterion reached; progress is the fraction reached. Every Polaris task,
batched or not, carries one success metric, rubric (a RubricMetricTerm), built in eden/tasks/polaris/rubric.py:
| PolaRiS checker | Eden criterion |
|---|---|
reach(obj, 0.2) |
EeNearEntity: the gripper's base link (PolaRiS's ee_frame, the Robotiq base_link) within 20 cm of the object |
lift(obj, h) |
object_bottom_above_height: the object's lowest point h above the table |
is_within_xy(a, b, fraction) |
the gripper open (left_driver_joint < 0.1 rad, PolaRiS's finger_joint test) and object_a_within_b_xy |
Most tasks are one put_in(object, container) chain: reach, lift, then let go over the container (80 % of the
object's footprint over the container's).
Lift is measured from the table, not from the spawn height
PolaRiS compares the object's origin with its spawn height. The scanned assets put their origins anywhere, and
Eden drops its objects onto the table at reset, so the height is measured from the table top (z = 0 in every
scene) to the object's lowest point instead.
The robot and the scene¶
- Robot.
PolarisDroid: a gravity-compensated Franka arm and a Robotiq 2F-85, welded at the arm'sattachmentlink. It differs from Eden'sDroidin its home pose (calibrated to the splat cameras) and in a 2 cm torsional friction patch on the pads, without which a pair of scissors pinched across its middle pivots and slips out once lifted. The gripper is the pad-only DROID gripper: a full-collision gripper penetrates mesh objects and ejects them on contact. - Physics.
sim_dt=0.004with 4 substeps, so the substep is 1 ms and the 2F-85's closed loop stays stiff, and torsional friction on. Graspable objects are stiffened per object (default_geoms_sol_params), never through a global constraint time constant, which ejects mesh objects on contact. - Control.
decimation=5: 50 Hz, aDifferentialIKControlleronattachment(ee_controller) and a binary gripper on the two driver joints (gripper_controller). The episode is 30 s. - Cameras.
external_cameraandwrist_camera, with intrinsics written for a 1280 × 720 image, each compositing the splat behind the rendered scene (SplatComposite, the ground plane drawn by the splat). - Splats and objects. Each scene's splat (
<scene>/assets/.../splat.ply) and its objects (eden.options.objects.polaris) download on first use from theeden_polarisdataset intopolaris/under the asset directory.
Requirements¶
Splat rendering goes through gsplat, which JIT-compiles a CUDA extension on first import, so the CUDA toolkit
(nvcc) must be installed.
The batched tasks also need gs-madrona, the CUDA-only batch renderer, installed separately. See Installation and Sensors and rendering.
Evaluating a DROID policy¶
The DROID-family remote-policy clients (PiPolicy with policy_setup="droid" or "droid_jointpos",
Gr00tPolicy with "oxe_droid_relative_eef_relative_joint", Cosmos3Policy, MolmoAct2Policy and
GalaxeaVlaPolicy with "droid_franka") target this rig. Replace the config's observation and action options with
the client's, as on the SIMPLER page.
Set the env to DROID's 15 Hz first
Every DROID checkpoint's action row is one 1/15 s step (DROID's RobotEnv.control_hz), and the DROID clients
check the env's control rate when they are constructed. Eden's PolaRiS tasks step every 20 ms (50 Hz), which would replay each chunk 3.3× too fast. Set the
timing PolaRiS itself uses (droid_cfg.py: sim.dt = 1/120, decimation = 8), with sim_substeps=9 to keep
the Robotiq's substep under 1 ms:
See Remote policies for the DROID setups and their checks.
Scripted demonstrations¶
Every *_batched task has an eden datagen demonstrator (eden/tasks/polaris/scripted_demos.py): the put-on
tool routine on the DROID rig, one put-on per object the rubric scores, reading object footprints off the collision
meshes (privileged). They are registered on the batched tasks because eden datagen needs episode ends and many
envs, which the single-env tasks do not have.
What each demonstrator does and its success rates are in Scripted demonstrations.
See also¶
- SIMPLER, the WidowX counterpart
- Scenes and terrains for Gaussian-splat scenes
- Remote policies
- Task suites overview