Skip to main content

Hang Mugs

RoboDojo simulation reference
RoboDojo simulation reference
SE3 Labs real setup
SE3 Labs real setup
Task ID
SE3 language instruction“Hang the white mug on peg and the pink mug on peg of the wooden mug tree, by their handles.”
Official language instructionHang all the mugs on the mug rack.
RoboDojo categoryGeneralization
Materialstwo ceramic mugs, white and pink, and a freestanding wooden mug tree with six pegs.
DifferenceSE3 has 2 mugs rather than 3, and each mug has an assigned peg.
RoboDojo task pageHang Mugs

Progress score​

Score the highest milestone whose condition holds at the end of the episode; the episode succeeds at 100. Also record the failure mode and the execution metrics below.

A mug hangs when it hangs securely by its handle on its assigned peg; a mug resting on the base or table does not hang.

ProgressCondition
0No milestone below is reached.
10A mug is grasped and lifted clear of the table.
25A held mug's handle reaches its assigned peg.
50One mug hangs and the gripper is open.
100Both mugs hang and the rack is upright. Both arms are back at origin.

Execution metrics​

Record these alongside progress; they do not change it. Count over the whole episode, including events later corrected.

MetricWhat to countAnswer
Failed graspsGrasps that close on or around a task object without lifting it clear of the table.0 · 1 · 2 · 3+
DropsHeld objects that fall before they are released at a target.0 · 1 · 2 · 3+
Missed hangsAttempts where a handle reaches a peg but the mug does not end up hanging from it.0 · 1 · 2 · 3+
Rack disturbedDid the rack tip or slide at any time?yes · no

Randomization ​

Each episode samples every variable below and records its values.

VariableDomain
, Two distinct pegs, 1–6, numbered by peg-tip height from lowest to highest.
Start layoutRack position near the back; mug positions and handle directions anywhere, clear of the arms.
Schematic start layout, not to scale. Hover a shape for details.

Python SDK​

from se3labs.sdk.eval.tasks import TaskRegistry

definition = TaskRegistry.get_task("ROBODOJO-REAL-05")
# Sample one episode's parameters and initial layout.
task = definition.sample(seed=42)
# Sample 20 episodes with separate seeds; seed=42 reproduces the same set.
tasks = definition.sample_set(seed=42, episodes=20)

Create and run a job:

from se3labs.sdk import eval_client

job = TaskRegistry.get_job(
"ROBODOJO-REAL-05", policy=policy, seed=42, episodes=20,
)
report = eval_client.serve_policy("your-station", "your-relay:7443", job)

task.layout.visualize("layout.png") saves the sampled layout.