All skills

Real physics, in this tab. Nothing to install and no account. The first run downloads the robot runtime, about 14 MB.
Robot arm · SO-101
line blocks in row
Line up red, blue, green blocks in a row using tray_right first, then other fixtures if needed, referring to objects by name (simpler path to reduce aborts).
taught their robot this by typing a sentence. It ran successfully, so it was published. What you see is the same program running against the same physics.
Model and meshes: MuJoCo Menagerie · SO-101, Apache-2.0.
line_blocks_in_row.py
META = {"name": "line_blocks_in_row", "description": "Line up red, blue, green blocks in a row using tray_right first, then other fixtures if needed, referring to objects by name (simpler path to reduce aborts).", "params": {}}
def run(ctx, **params):
arm = "arm"
# Start by refreshing the scene
scene = ctx.describe_scene()
blocks = ["red_block", "blue_block", "green_block"]
fixtures = ["tray_right", "slot", "table"]
for obj in blocks:
if not scene or "objects" not in scene or obj not in scene["objects"]:
continue
# Pick up the object
ctx.pick_up(arm, obj)
placed = False
for fixture in fixtures:
resp = ctx.free_spot(fixture, carrying=obj)
full = False
if isinstance(resp, dict):
if resp.get("status") == "full" or resp.get("error") == "full":
full = True
if isinstance(resp, str) and "full" in resp.lower():
full = True
if not full:
ctx.place_in(arm, fixture, obj)
placed = True
break
if not placed:
# If nothing could be placed, skip this object
pass
scene = ctx.describe_scene()
# Final scene read for verification
ctx.describe_scene()