All skills
SO-101 in the simulation

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()