{
  "schemaVersion": 1,
  "updated": "2026-10-29",
  "featured": "mems-target-shift-libero-three",
  "feature": {
    "label": "ASTRA × MemS",
    "title": "目标变了，重新找到它。",
    "videoLabel": "MemS 与 Astra 在目标碗被推走后更新记忆并完成抓放"
  },
  "demos": [
    {
      "id": "dimos-astra",
      "title": "把黑碗，放到盘子上",
      "task": "抓取与放置",
      "engine": "MuJoCo",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "仿真真值",
      "poster": "media/dimos-astra-t06-i11.jpg",
      "imageAlt": "MuJoCo 中的 Panda 机械臂将黑碗放在白色盘子上",
      "sourceUrl": "https://github.com/dimensionalOS/dimos",
      "sourceLabel": "dimOS 开源仓库",
      "originalTrialMax": 6,
      "trials": [
        {
          "init": 11,
          "steps": 123,
          "calls": 10,
          "wallSeconds": 174.6,
          "video": "media/dimos-astra-t06-i11.mp4",
          "poster": "media/dimos-astra-t06-i11.jpg",
          "success": true,
          "label": "历史初始状态 11 · 单集验证",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "init": 0,
          "steps": 128,
          "calls": 11,
          "wallSeconds": 175.25,
          "video": "media/dimos-astra_20261022_004549.mp4",
          "poster": "media/dimos-astra_20261022_004549.png",
          "success": true,
          "outcome": "success",
          "label": "扩展批次 v1 · Task 06 · Init 0",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "init": 3,
          "steps": 203,
          "calls": 15,
          "wallSeconds": 221.76,
          "video": "media/dimos-astra_20261022_010420.mp4",
          "poster": "media/dimos-astra_20261022_010420.png",
          "success": true,
          "outcome": "success",
          "label": "扩展批次 v1 · Task 06 · Init 3",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        },
        {
          "init": 4,
          "steps": 190,
          "calls": 15,
          "wallSeconds": 209.39,
          "video": "media/dimos-astra_20261022_010905.mp4",
          "poster": "media/dimos-astra_20261022_010905.png",
          "success": true,
          "outcome": "success",
          "label": "扩展批次 v1 · Task 06 · Init 4",
          "originalTrialNumber": 6,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "dimos",
        "familyTitle": "dimOS · 语言决策与运动规划",
        "summary": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
        "technicalRoute": "通用语言模型 + 逆运动学（IK）+ 路径规划。IK 计算到达目标姿态所需的关节角，规划器再寻找运动路径。",
        "modelRole": "Astra 在运行时反复决策；底层由 dimOS 规划与机器人控制器执行。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "物体位置、尺寸等仿真真值，以及机械臂状态。"
          },
          {
            "label": "决定什么",
            "text": "下一步末端位置、朝向、夹爪开合；规划失败时修改目标。"
          },
          {
            "label": "如何执行",
            "text": "dimOS 的 IK 与路径规划求出关节路径，Panda 控制器在 MuJoCo 中执行。"
          },
          {
            "label": "如何反馈",
            "text": "新的场景状态、执行错误和剩余预算返回模型；由 LIBERO 原生条件判断任务是否完成。"
          }
        ],
        "limitation": "使用真值感知；规划碰撞模型有 FR3 网格近似、固定手指等适配。首次成功即结束，不说明松手后的长期稳定性。",
        "watchFor": "看规划失败后是否换姿态，以及抓住碗后如何补偿碗与指尖的位置偏差。",
        "result": "机械臂选择抓取姿态，将黑碗从桌面搬到盘子上。展示语言决策、IK 与路径规划如何配合完成操作。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
      "description": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
      "cardValue": "4 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时反复决策；底层由 dimOS 规划与机器人控制器执行。"
        },
        {
          "label": "输入信息",
          "value": "仿真真值"
        }
      ],
      "notes": [
        "通用语言模型 + 逆运动学（IK）+ 路径规划。IK 计算到达目标姿态所需的关节角，规划器再寻找运动路径。",
        "使用真值感知；规划碰撞模型有 FR3 网格近似、固定手指等适配。首次成功即结束，不说明松手后的长期稳定性。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "dimos",
      "versionLabel": "初版抓碗放盘"
    },
    {
      "id": "dimos-astra-v2",
      "title": "让抓取过程，可以完整复演",
      "task": "抓取与放置",
      "engine": "MuJoCo",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "仿真真值 + 规划执行反馈",
      "poster": "media/dimos-astra_v2_i0_s42_20261022_012155.png",
      "sourceUrl": "https://github.com/dimensionalOS/dimos",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "init": 0,
          "steps": 205,
          "calls": 20,
          "wallSeconds": 305.84162784999353,
          "video": "media/dimos-astra_v2_i0_s42_20261022_012155.mp4",
          "poster": "media/dimos-astra_v2_i0_s42_20261022_012155.png",
          "success": true,
          "outcome": "success",
          "label": "协议 v2 · Init 0 · Seed 42",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "init": 1,
          "steps": 212,
          "calls": 15,
          "wallSeconds": 386.6983509900165,
          "video": "media/dimos-astra_v2_i1_s42_20261022_013236.mp4",
          "poster": "media/dimos-astra_v2_i1_s42_20261022_013236.png",
          "success": true,
          "outcome": "success",
          "label": "协议 v2 · Init 1 · Seed 42",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "init": 2,
          "steps": 124,
          "calls": 9,
          "wallSeconds": 334.8634320469864,
          "video": "media/dimos-astra_v2_i2_s42_20261022_013905.mp4",
          "poster": "media/dimos-astra_v2_i2_s42_20261022_013905.png",
          "success": true,
          "outcome": "success",
          "label": "协议 v2 · Init 2 · Seed 42",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "dimos",
        "familyTitle": "dimOS · 语言决策与运动规划",
        "summary": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
        "technicalRoute": "通用语言模型 + 逆运动学（IK）+ 路径规划。IK 计算到达目标姿态所需的关节角，规划器再寻找运动路径。",
        "modelRole": "Astra 在运行时反复决策；底层由 dimOS 规划与机器人控制器执行。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "物体位置、尺寸等仿真真值，以及机械臂状态。"
          },
          {
            "label": "决定什么",
            "text": "下一步末端位置、朝向、夹爪开合；规划失败时修改目标。"
          },
          {
            "label": "如何执行",
            "text": "dimOS 的 IK 与路径规划求出关节路径，Panda 控制器在 MuJoCo 中执行。"
          },
          {
            "label": "如何反馈",
            "text": "新的场景状态、执行错误和剩余预算返回模型；由 LIBERO 原生条件判断任务是否完成。"
          }
        ],
        "limitation": "使用真值感知；规划碰撞模型有 FR3 网格近似、固定手指等适配。首次成功即结束，不说明松手后的长期稳定性。",
        "watchFor": "看规划失败后是否换姿态，以及抓住碗后如何补偿碗与指尖的位置偏差。",
        "result": "完成抓碗放盘，并保存完整仿真与控制器状态，逐步核对动作复演。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
      "description": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时反复决策；底层由 dimOS 规划与机器人控制器执行。"
        },
        {
          "label": "输入信息",
          "value": "仿真真值 + 规划执行反馈"
        }
      ],
      "notes": [
        "通用语言模型 + 逆运动学（IK）+ 路径规划。IK 计算到达目标姿态所需的关节角，规划器再寻找运动路径。",
        "使用真值感知；规划碰撞模型有 FR3 网格近似、固定手指等适配。首次成功即结束，不说明松手后的长期稳定性。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "dimos",
      "versionLabel": "完整抓放与状态复演"
    },
    {
      "id": "dimos-spatial-ten-tasks",
      "title": "dimOS · 多种空间关系下的抓碗放盘",
      "task": "抓取与放置",
      "engine": "MuJoCo",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "仿真真值 + 规划执行反馈",
      "poster": "media/dimos-spatial-t02-i0-s42.png",
      "sourceUrl": "https://github.com/dimensionalOS/dimos",
      "originalTrialMax": 10,
      "trials": [
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "taskId": 2,
          "init": 0,
          "steps": 116,
          "calls": 10,
          "wallSeconds": 304.88629288598895,
          "video": "media/dimos-spatial-t02-i0-s42.mp4",
          "poster": "media/dimos-spatial-t02-i0-s42.png",
          "success": true,
          "outcome": "success",
          "label": "Task 02 · Init 0",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "taskId": 7,
          "init": 0,
          "steps": 208,
          "calls": 15,
          "wallSeconds": 429.22890066498076,
          "video": "media/dimos-spatial-t07-i0-s42.mp4",
          "poster": "media/dimos-spatial-t07-i0-s42.png",
          "success": true,
          "outcome": "success",
          "label": "Task 07 · Init 0",
          "originalTrialNumber": 8,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "taskId": 8,
          "init": 0,
          "steps": 190,
          "calls": 18,
          "wallSeconds": 528.5568541759858,
          "video": "media/dimos-spatial-t08-i0-s42.mp4",
          "poster": "media/dimos-spatial-t08-i0-s42.png",
          "success": true,
          "outcome": "success",
          "label": "Task 08 · Init 0",
          "originalTrialNumber": 9,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "环境种子",
          "taskId": 9,
          "init": 0,
          "steps": 147,
          "calls": 14,
          "wallSeconds": 435.5454599210061,
          "video": "media/dimos-spatial-t09-i0-s42.mp4",
          "poster": "media/dimos-spatial-t09-i0-s42.png",
          "success": true,
          "outcome": "success",
          "label": "Task 09 · Init 0",
          "originalTrialNumber": 10,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "dimos",
        "familyTitle": "dimOS · 语言决策与运动规划",
        "summary": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
        "technicalRoute": "通用语言模型 + 逆运动学（IK）+ 路径规划。IK 计算到达目标姿态所需的关节角，规划器再寻找运动路径。",
        "modelRole": "Astra 在运行时反复决策；底层由 dimOS 规划与机器人控制器执行。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "物体位置、尺寸等仿真真值，以及机械臂状态。"
          },
          {
            "label": "决定什么",
            "text": "下一步末端位置、朝向、夹爪开合；规划失败时修改目标。"
          },
          {
            "label": "如何执行",
            "text": "dimOS 的 IK 与路径规划求出关节路径，Panda 控制器在 MuJoCo 中执行。"
          },
          {
            "label": "如何反馈",
            "text": "新的场景状态、执行错误和剩余预算返回模型；由 LIBERO 原生条件判断任务是否完成。"
          }
        ],
        "limitation": "使用真值感知；规划碰撞模型有 FR3 网格近似、固定手指等适配。首次成功即结束，不说明松手后的长期稳定性。",
        "watchFor": "看规划失败后是否换姿态，以及抓住碗后如何补偿碗与指尖的位置偏差。",
        "result": "在不同物体空间关系下，完成寻找目标碗、抓取与放到盘子上的操作。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
      "description": "语言模型选择抓取和放置姿态，运动规划器把目标变成机械臂能够执行的关节运动。",
      "cardValue": "4 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时反复决策；底层由 dimOS 规划与机器人控制器执行。"
        },
        {
          "label": "输入信息",
          "value": "仿真真值 + 规划执行反馈"
        }
      ],
      "notes": [
        "通用语言模型 + 逆运动学（IK）+ 路径规划。IK 计算到达目标姿态所需的关节角，规划器再寻找运动路径。",
        "使用真值感知；规划碰撞模型有 FR3 网格近似、固定手指等适配。首次成功即结束，不说明松手后的长期稳定性。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "dimos",
      "versionLabel": "不同空间关系下的抓放"
    },
    {
      "id": "robo-spider-live",
      "title": "前进、转向，停在目标旁",
      "task": "短程导航",
      "engine": "MuJoCo",
      "route": "navigation",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "自身状态真值 + 目标坐标",
      "poster": "media/spider-live-nav_00_straight.png",
      "sourceUrl": "https://github.com/dimentary/llm-robotics-playground/tree/main/experiments/robo-spider",
      "originalTrialMax": 3,
      "trials": [
        {
          "calls": 4,
          "wallSeconds": 44.670239720027894,
          "video": "media/spider-live-nav_00_straight.mp4",
          "poster": "media/spider-live-nav_00_straight.png",
          "decisions": [
            {
              "number": 1,
              "videoSeconds": 1.0,
              "simulationSeconds": 2.0000000000000013,
              "forward": 0.22,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 28.223378584139468,
              "modelSeconds": 11.619301944010658
            },
            {
              "number": 2,
              "videoSeconds": 2.0,
              "simulationSeconds": 3.999999999999781,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 7.211546667539129,
              "modelSeconds": 14.360251962993061
            },
            {
              "number": 3,
              "videoSeconds": 3.0,
              "simulationSeconds": 5.999999999999561,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 1.63507402553518,
              "modelSeconds": 8.884254878008505
            },
            {
              "number": 4,
              "videoSeconds": 4.0,
              "simulationSeconds": 7.999999999999341,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 1.0301111796280156,
              "modelSeconds": 8.194373264996102
            }
          ],
          "success": true,
          "outcome": "success",
          "label": "目标一 · 前方",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "calls": 7,
          "wallSeconds": 86.24131090799347,
          "video": "media/spider-live-nav_01_left.mp4",
          "poster": "media/spider-live-nav_01_left.png",
          "decisions": [
            {
              "number": 1,
              "videoSeconds": 1.0,
              "simulationSeconds": 2.0000000000000013,
              "forward": 0,
              "turn": 0.4,
              "requestedDuration": 2.0,
              "errorAfterCm": 42.779181399893176,
              "modelSeconds": 12.848563273000764
            },
            {
              "number": 2,
              "videoSeconds": 2.0,
              "simulationSeconds": 3.999999999999781,
              "forward": 0.12,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 38.5225371160893,
              "modelSeconds": 10.05416406900622
            },
            {
              "number": 3,
              "videoSeconds": 3.0,
              "simulationSeconds": 5.999999999999561,
              "forward": 0.12,
              "turn": 0.18,
              "requestedDuration": 2.0,
              "errorAfterCm": 24.183552380443267,
              "modelSeconds": 9.367370297986781
            },
            {
              "number": 4,
              "videoSeconds": 4.0,
              "simulationSeconds": 7.999999999999341,
              "forward": 0.1,
              "turn": 0.12,
              "requestedDuration": 1.5,
              "errorAfterCm": 11.345628257071278,
              "modelSeconds": 11.431671929982258
            },
            {
              "number": 5,
              "videoSeconds": 4.75,
              "simulationSeconds": 9.499999999999842,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 4.387014137535228,
              "modelSeconds": 8.494257648999337
            },
            {
              "number": 6,
              "videoSeconds": 5.75,
              "simulationSeconds": 11.50000000000051,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 1.0,
              "errorAfterCm": 4.092687264739929,
              "modelSeconds": 18.619316147000063
            },
            {
              "number": 7,
              "videoSeconds": 6.25,
              "simulationSeconds": 12.500000000000844,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 0.5,
              "errorAfterCm": 4.099072016241523,
              "modelSeconds": 12.847809803992277
            }
          ],
          "success": true,
          "outcome": "success",
          "label": "目标二 · 左前方",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "calls": 6,
          "wallSeconds": 138.2990622970101,
          "video": "media/spider-live-nav_02_right.mp4",
          "poster": "media/spider-live-nav_02_right.png",
          "decisions": [
            {
              "number": 1,
              "videoSeconds": 1.0,
              "simulationSeconds": 2.0000000000000013,
              "forward": 0,
              "turn": -0.4,
              "requestedDuration": 2.0,
              "errorAfterCm": 44.677897210553006,
              "modelSeconds": 9.558140976994764
            },
            {
              "number": 2,
              "videoSeconds": 2.0,
              "simulationSeconds": 3.999999999999781,
              "forward": 0.12,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 39.355948631689905,
              "modelSeconds": 10.877330724993953
            },
            {
              "number": 3,
              "videoSeconds": 3.0,
              "simulationSeconds": 5.999999999999561,
              "forward": 0.12,
              "turn": -0.18,
              "requestedDuration": 2.0,
              "errorAfterCm": 24.36624262500265,
              "modelSeconds": 14.06765829899814
            },
            {
              "number": 4,
              "videoSeconds": 4.0,
              "simulationSeconds": 7.999999999999341,
              "forward": 0.12,
              "turn": -0.18,
              "requestedDuration": 0.8,
              "errorAfterCm": 17.906777338913436,
              "modelSeconds": 31.321277762996033
            },
            {
              "number": 5,
              "videoSeconds": 4.416666666666667,
              "simulationSeconds": 8.799999999999608,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 3.4409702668409237,
              "modelSeconds": 43.4646529169986
            },
            {
              "number": 6,
              "videoSeconds": 5.416666666666667,
              "simulationSeconds": 10.800000000000276,
              "forward": 0,
              "turn": 0,
              "requestedDuration": 2.0,
              "errorAfterCm": 3.001104316671861,
              "modelSeconds": 26.33423578599468
            }
          ],
          "success": true,
          "outcome": "success",
          "label": "目标三 · 右前方",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "spider",
        "familyTitle": "Robo-Spider · 高层决策与步态",
        "summary": "将移动或搬运目标拆成高层指令，再交给已有步态与机械臂控制器。",
        "technicalRoute": "分层控制：上层负责去哪里、何时操作，下层负责步态和执行。",
        "modelRole": "Astra 在线决策移动方向与时长，已有步态负责底层运动。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "机器人状态真值和任务目标。"
          },
          {
            "label": "决定什么",
            "text": "选择移动方向、距离或操作路径。"
          },
          {
            "label": "如何执行",
            "text": "原有步态和关节控制器在接触与摩擦作用下执行。"
          },
          {
            "label": "如何反馈",
            "text": "读取新状态并检查到达、搬运与碰撞条件。"
          }
        ],
        "limitation": "读取真值状态；固定代码版本运行时不调用语言模型。",
        "watchFor": "对比导航时的转向与停止，以及搬运前增加绕行点后碰撞如何变化。",
        "result": "根据目标位置前进、转向，最后停在目标旁。高层指令与原有步态在闭环中配合。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "将移动或搬运目标拆成高层指令，再交给已有步态与机械臂控制器。",
      "description": "将移动或搬运目标拆成高层指令，再交给已有步态与机械臂控制器。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "短程导航"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线决策移动方向与时长，已有步态负责底层运动。"
        },
        {
          "label": "输入信息",
          "value": "自身状态真值 + 目标坐标"
        }
      ],
      "notes": [
        "分层控制：上层负责去哪里、何时操作，下层负责步态和执行。",
        "读取真值状态；固定代码版本运行时不调用语言模型。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "spider",
      "versionLabel": "在线导航与停稳"
    },
    {
      "id": "bullet-pick-place",
      "title": "拿起方块，送到目标位置",
      "task": "抓取与放置",
      "engine": "PyBullet",
      "route": "vision",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "图像 + 本体状态",
      "poster": "media/bullet_pick_place-s3.jpg",
      "sourceUrl": "https://github.com/TheShiningVampire/astra-manipulation",
      "originalTrialMax": 5,
      "trials": [
        {
          "seed": 3,
          "steps": 28,
          "calls": 7,
          "wallSeconds": 128.47198806899905,
          "video": "media/bullet_pick_place-s3.mp4",
          "poster": "media/bullet_pick_place-s3.jpg",
          "success": true,
          "label": "历史 Seed 3 · 完整回合",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 4,
          "steps": 18,
          "calls": 6,
          "wallSeconds": 211.9851133369957,
          "video": "media/astra_bullet_pick_place_20261022_010305_s4.mp4",
          "poster": "media/astra_bullet_pick_place_20261022_010305_s4.png",
          "success": true,
          "outcome": "success",
          "label": "扩展批次 v1 · Seed 4",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "bullet",
        "familyTitle": "视觉 Agent · 抓取与到达",
        "summary": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
        "technicalRoute": "视觉语言 Agent + 原任务动作接口：保留感知、动作、反馈的逐步闭环。",
        "modelRole": "Astra 在运行时选择动作；物理控制由任务原有控制器承担。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "相机图像和机器人自身状态。"
          },
          {
            "label": "决定什么",
            "text": "接近、抓取、移动、松开等下一步控制目标。"
          },
          {
            "label": "如何执行",
            "text": "动作工具把模型指令交给 Panda 的任务控制器，在物理仿真中推进。"
          },
          {
            "label": "如何反馈",
            "text": "新图像、机器人状态及任务判定返回模型。"
          }
        ],
        "limitation": "少量任务与初始条件的验证；客户端能正常收尾和机器人能完成任务是两个不同结论。",
        "watchFor": "观察接近物体的方向、夹爪闭合时机，以及执行后是否根据图像调整。",
        "result": "根据图像接近方块并将它移入目标位置容差内，展示看图、动作、再观察的控制循环。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
      "description": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时选择动作；物理控制由任务原有控制器承担。"
        },
        {
          "label": "输入信息",
          "value": "图像 + 本体状态"
        }
      ],
      "notes": [
        "视觉语言 Agent + 原任务动作接口：保留感知、动作、反馈的逐步闭环。",
        "少量任务与初始条件的验证；客户端能正常收尾和机器人能完成任务是两个不同结论。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "bullet",
      "versionLabel": "早期图像抓取"
    },
    {
      "id": "bullet-pick-place-v2",
      "title": "视觉闭环下的方块抓取",
      "task": "抓取与放置",
      "engine": "PyBullet",
      "route": "vision",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "图像 + 本体状态",
      "poster": "media/astra_v2_bullet_pick_place_20261022_011147_s0.png",
      "sourceUrl": "https://github.com/TheShiningVampire/astra-manipulation",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 0,
          "steps": 26,
          "calls": 6,
          "wallSeconds": 151.5015601500054,
          "video": "media/astra_v2_bullet_pick_place_20261022_011147_s0.mp4",
          "poster": "media/astra_v2_bullet_pick_place_20261022_011147_s0.png",
          "success": true,
          "outcome": "success",
          "label": "客户端 v2 · Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "steps": 26,
          "calls": 7,
          "wallSeconds": 132.04518390400335,
          "video": "media/astra_v2_bullet_pick_place_20261022_011456_s1.mp4",
          "poster": "media/astra_v2_bullet_pick_place_20261022_011456_s1.png",
          "success": true,
          "outcome": "success",
          "label": "客户端 v2 · Seed 1",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "steps": 25,
          "calls": 7,
          "wallSeconds": 139.39978143302142,
          "video": "media/astra_v2_bullet_pick_place_20261022_011709_s2.mp4",
          "poster": "media/astra_v2_bullet_pick_place_20261022_011709_s2.png",
          "success": true,
          "outcome": "success",
          "label": "客户端 v2 · Seed 2",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "bullet",
        "familyTitle": "视觉 Agent · 抓取与到达",
        "summary": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
        "technicalRoute": "视觉语言 Agent + 原任务动作接口：保留感知、动作、反馈的逐步闭环。",
        "modelRole": "Astra 在运行时选择动作；物理控制由任务原有控制器承担。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "相机图像和机器人自身状态。"
          },
          {
            "label": "决定什么",
            "text": "接近、抓取、移动、松开等下一步控制目标。"
          },
          {
            "label": "如何执行",
            "text": "动作工具把模型指令交给 Panda 的任务控制器，在物理仿真中推进。"
          },
          {
            "label": "如何反馈",
            "text": "新图像、机器人状态及任务判定返回模型。"
          }
        ],
        "limitation": "少量任务与初始条件的验证；客户端能正常收尾和机器人能完成任务是两个不同结论。",
        "watchFor": "观察接近物体的方向、夹爪闭合时机，以及执行后是否根据图像调整。",
        "result": "使用视觉反馈完成方块抓取与目标搬运，展示连续动作调用组成完整操作的过程。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
      "description": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时选择动作；物理控制由任务原有控制器承担。"
        },
        {
          "label": "输入信息",
          "value": "图像 + 本体状态"
        }
      ],
      "notes": [
        "视觉语言 Agent + 原任务动作接口：保留感知、动作、反馈的逐步闭环。",
        "少量任务与初始条件的验证；客户端能正常收尾和机器人能完成任务是两个不同结论。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "bullet",
      "versionLabel": "完整视觉闭环抓取"
    },
    {
      "id": "bullet-reach",
      "title": "十个目标，逐次靠近",
      "task": "到达目标",
      "engine": "PyBullet",
      "route": "vision",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "图像 + 本体状态",
      "poster": "media/bullet_reach-s0.jpg",
      "sourceUrl": "https://github.com/TheShiningVampire/astra-manipulation",
      "originalTrialMax": 10,
      "trials": [
        {
          "seed": 0,
          "steps": 3,
          "calls": 1,
          "wallSeconds": 26.810174670999913,
          "video": "media/bullet_reach-s0.mp4",
          "poster": "media/bullet_reach-s0.jpg",
          "success": true,
          "label": "Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "steps": 3,
          "calls": 1,
          "wallSeconds": 32.36373944300067,
          "video": "media/bullet_reach-s1.mp4",
          "poster": "media/bullet_reach-s1.jpg",
          "success": true,
          "label": "Seed 1",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "steps": 3,
          "calls": 1,
          "wallSeconds": 25.323028769998928,
          "video": "media/bullet_reach-s2.mp4",
          "poster": "media/bullet_reach-s2.jpg",
          "success": true,
          "label": "Seed 2",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "steps": 14,
          "calls": 10,
          "wallSeconds": 187.6394377100005,
          "video": "media/bullet_reach-s3.mp4",
          "poster": "media/bullet_reach-s3.jpg",
          "success": true,
          "label": "Seed 3",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        },
        {
          "seed": 4,
          "steps": 4,
          "calls": 1,
          "wallSeconds": 21.158310050999717,
          "video": "media/bullet_reach-s4.mp4",
          "poster": "media/bullet_reach-s4.jpg",
          "success": true,
          "label": "Seed 4",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        },
        {
          "seed": 5,
          "steps": 2,
          "calls": 1,
          "wallSeconds": 30.662920175998806,
          "video": "media/bullet_reach-s5.mp4",
          "poster": "media/bullet_reach-s5.jpg",
          "success": true,
          "label": "Seed 5",
          "originalTrialNumber": 6,
          "statusLabel": "任务完成"
        },
        {
          "seed": 6,
          "steps": 2,
          "calls": 1,
          "wallSeconds": 29.764647373000116,
          "video": "media/bullet_reach-s6.mp4",
          "poster": "media/bullet_reach-s6.jpg",
          "success": true,
          "label": "Seed 6",
          "originalTrialNumber": 7,
          "statusLabel": "任务完成"
        },
        {
          "seed": 7,
          "steps": 3,
          "calls": 2,
          "wallSeconds": 45.10872466000001,
          "video": "media/bullet_reach-s7.mp4",
          "poster": "media/bullet_reach-s7.jpg",
          "success": true,
          "label": "Seed 7",
          "originalTrialNumber": 8,
          "statusLabel": "任务完成"
        },
        {
          "seed": 8,
          "steps": 3,
          "calls": 1,
          "wallSeconds": 26.523730851999062,
          "video": "media/bullet_reach-s8.mp4",
          "poster": "media/bullet_reach-s8.jpg",
          "success": true,
          "label": "Seed 8",
          "originalTrialNumber": 9,
          "statusLabel": "任务完成"
        },
        {
          "seed": 9,
          "steps": 2,
          "calls": 1,
          "wallSeconds": 24.720312584999192,
          "video": "media/bullet_reach-s9.mp4",
          "poster": "media/bullet_reach-s9.jpg",
          "success": true,
          "label": "Seed 9",
          "originalTrialNumber": 10,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "bullet",
        "familyTitle": "视觉 Agent · 抓取与到达",
        "summary": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
        "technicalRoute": "视觉语言 Agent + 原任务动作接口：保留感知、动作、反馈的逐步闭环。",
        "modelRole": "Astra 在运行时选择动作；物理控制由任务原有控制器承担。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "相机图像和机器人自身状态。"
          },
          {
            "label": "决定什么",
            "text": "接近、抓取、移动、松开等下一步控制目标。"
          },
          {
            "label": "如何执行",
            "text": "动作工具把模型指令交给 Panda 的任务控制器，在物理仿真中推进。"
          },
          {
            "label": "如何反馈",
            "text": "新图像、机器人状态及任务判定返回模型。"
          }
        ],
        "limitation": "少量任务与初始条件的验证；客户端能正常收尾和机器人能完成任务是两个不同结论。",
        "watchFor": "观察接近物体的方向、夹爪闭合时机，以及执行后是否根据图像调整。",
        "result": "机械臂从初始姿态出发，接近不同目标并达到任务规定的位置容差。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
      "description": "模型看图决定下一步动作，执行后再看新画面，逐步接近目标。",
      "cardValue": "10 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "到达目标"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时选择动作；物理控制由任务原有控制器承担。"
        },
        {
          "label": "输入信息",
          "value": "图像 + 本体状态"
        }
      ],
      "notes": [
        "视觉语言 Agent + 原任务动作接口：保留感知、动作、反馈的逐步闭环。",
        "少量任务与初始条件的验证；客户端能正常收尾和机器人能完成任务是两个不同结论。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "bullet",
      "versionLabel": "不同目标的到达"
    },
    {
      "id": "smolvla-libero",
      "title": "同样抓碗，换十种空间关系",
      "task": "抓取与放置",
      "engine": "MuJoCo",
      "route": "vla",
      "source": "vla",
      "model": "SmolVLA / LIBERO 微调",
      "input": "图像 + 机器人状态",
      "poster": "media/smolvla-t00-e0.jpg",
      "sourceUrl": "https://huggingface.co/HuggingFaceVLA/smolvla_libero",
      "sourceLabel": "查看模型与权重",
      "originalTrialMax": 20,
      "trials": [
        {
          "taskId": 0,
          "video": "media/smolvla-t00-e0.mp4",
          "poster": "media/smolvla-t00-e0.jpg",
          "success": true,
          "label": "T00 · 盘子与小烤碗之间的黑碗 · 回合 1",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 1,
          "video": "media/smolvla-t01-e0.mp4",
          "poster": "media/smolvla-t01-e0.jpg",
          "success": true,
          "label": "T01 · 小烤碗旁的黑碗 · 回合 1",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 1,
          "video": "media/smolvla-t01-e1.mp4",
          "poster": "media/smolvla-t01-e1.jpg",
          "success": true,
          "label": "T01 · 小烤碗旁的黑碗 · 回合 2",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 2,
          "video": "media/smolvla-t02-e0.mp4",
          "poster": "media/smolvla-t02-e0.jpg",
          "success": true,
          "label": "T02 · 桌子中央的黑碗 · 回合 1",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 2,
          "video": "media/smolvla-t02-e1.mp4",
          "poster": "media/smolvla-t02-e1.jpg",
          "success": true,
          "label": "T02 · 桌子中央的黑碗 · 回合 2",
          "originalTrialNumber": 6,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 3,
          "video": "media/smolvla-t03-e0.mp4",
          "poster": "media/smolvla-t03-e0.jpg",
          "success": true,
          "label": "T03 · 饼干盒上的黑碗 · 回合 1",
          "originalTrialNumber": 7,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 4,
          "video": "media/smolvla-t04-e0.mp4",
          "poster": "media/smolvla-t04-e0.jpg",
          "success": true,
          "label": "T04 · 木柜顶层抽屉内的黑碗 · 回合 1",
          "originalTrialNumber": 9,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 4,
          "video": "media/smolvla-t04-e1.mp4",
          "poster": "media/smolvla-t04-e1.jpg",
          "success": true,
          "label": "T04 · 木柜顶层抽屉内的黑碗 · 回合 2",
          "originalTrialNumber": 10,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 5,
          "video": "media/smolvla-t05-e0.mp4",
          "poster": "media/smolvla-t05-e0.jpg",
          "success": true,
          "label": "T05 · 小烤碗上的黑碗 · 回合 1",
          "originalTrialNumber": 11,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 5,
          "video": "media/smolvla-t05-e1.mp4",
          "poster": "media/smolvla-t05-e1.jpg",
          "success": true,
          "label": "T05 · 小烤碗上的黑碗 · 回合 2",
          "originalTrialNumber": 12,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 6,
          "video": "media/smolvla-t06-e0.mp4",
          "poster": "media/smolvla-t06-e0.jpg",
          "success": true,
          "label": "T06 · 饼干盒旁的黑碗 · 回合 1",
          "originalTrialNumber": 13,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 6,
          "video": "media/smolvla-t06-e1.mp4",
          "poster": "media/smolvla-t06-e1.jpg",
          "success": true,
          "label": "T06 · 饼干盒旁的黑碗 · 回合 2",
          "originalTrialNumber": 14,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 7,
          "video": "media/smolvla-t07-e1.mp4",
          "poster": "media/smolvla-t07-e1.jpg",
          "success": true,
          "label": "T07 · 炉灶上的黑碗 · 回合 2",
          "originalTrialNumber": 16,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 8,
          "video": "media/smolvla-t08-e0.mp4",
          "poster": "media/smolvla-t08-e0.jpg",
          "success": true,
          "label": "T08 · 盘子旁的黑碗 · 回合 1",
          "originalTrialNumber": 17,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 8,
          "video": "media/smolvla-t08-e1.mp4",
          "poster": "media/smolvla-t08-e1.jpg",
          "success": true,
          "label": "T08 · 盘子旁的黑碗 · 回合 2",
          "originalTrialNumber": 18,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 9,
          "video": "media/smolvla-t09-e0.mp4",
          "poster": "media/smolvla-t09-e0.jpg",
          "success": true,
          "label": "T09 · 木柜上的黑碗 · 回合 1",
          "originalTrialNumber": 19,
          "statusLabel": "任务完成"
        },
        {
          "taskId": 9,
          "video": "media/smolvla-t09-e1.mp4",
          "poster": "media/smolvla-t09-e1.jpg",
          "success": true,
          "label": "T09 · 木柜上的黑碗 · 回合 2",
          "originalTrialNumber": 20,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "smolvla",
        "familyTitle": "SmolVLA · 学习得到的动作策略",
        "summary": "图像、语言任务和机器人状态进入微调策略，直接生成一段连续动作。",
        "technicalRoute": "视觉语言动作模型（VLA）：用 LIBERO 微调过的 SmolVLA，通过官方 LeRobot 流程推理。",
        "modelRole": "运行时是预训练并微调好的策略推理，没有 Astra 逐步发指令。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "相机图像、语言任务和机器人本体状态。"
          },
          {
            "label": "决定什么",
            "text": "SmolVLA 输出一段连续动作序列。"
          },
          {
            "label": "如何执行",
            "text": "LeRobot 按策略统计量还原动作尺度，再交给 LIBERO 的 Panda 控制接口。"
          },
          {
            "label": "如何反馈",
            "text": "执行动作后读取新观察，再生成下一段；原生任务条件验证完成。"
          }
        ],
        "limitation": "使用 LIBERO 任务微调权重，不是原生基础权重的零样本成绩；小样本不代表完整基准排名。",
        "watchFor": "对照不同空间关系下的接近方向、夹爪闭合时机与放置路径。",
        "result": "LIBERO 微调后的 SmolVLA 根据图像、语言与机器人状态生成动作，完成不同空间关系下的抓碗放盘。",
        "model": "SmolVLA / LIBERO 微调",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "图像、语言任务和机器人状态进入微调策略，直接生成一段连续动作。",
      "description": "图像、语言任务和机器人状态进入微调策略，直接生成一段连续动作。",
      "cardValue": "17 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "运行时是预训练并微调好的策略推理，没有 Astra 逐步发指令。"
        },
        {
          "label": "输入信息",
          "value": "图像 + 机器人状态"
        }
      ],
      "notes": [
        "视觉语言动作模型（VLA）：用 LIBERO 微调过的 SmolVLA，通过官方 LeRobot 流程推理。",
        "使用 LIBERO 任务微调权重，不是原生基础权重的零样本成绩；小样本不代表完整基准排名。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "smolvla",
      "versionLabel": "同样抓碗，换十种空间关系"
    },
    {
      "id": "metaworld-baselines",
      "title": "官方控制脚本：到达、推动与抓放",
      "task": "多任务控制",
      "engine": "MuJoCo",
      "route": "control",
      "source": "baseline",
      "controller": "官方脚本 / 随机",
      "input": "仿真状态",
      "poster": "media/metaworld-reach-v3-scripted.jpg",
      "sourceUrl": "https://github.com/Farama-Foundation/Metaworld",
      "originalTrialMax": 6,
      "trials": [
        {
          "seed": 0,
          "seedLabel": "环境重置种子",
          "benchmarkSeed": 42,
          "goalIndex": 0,
          "steps": 500,
          "video": "media/metaworld-reach-v3-scripted.mp4",
          "poster": "media/metaworld-reach-v3-scripted.jpg",
          "success": true,
          "label": "到达 · 官方脚本 · 目标 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "seedLabel": "环境重置种子",
          "benchmarkSeed": 42,
          "goalIndex": 0,
          "steps": 500,
          "video": "media/metaworld-push-v3-scripted.mp4",
          "poster": "media/metaworld-push-v3-scripted.jpg",
          "success": true,
          "label": "推动 · 官方脚本 · 目标 0",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "seedLabel": "环境重置种子",
          "benchmarkSeed": 42,
          "goalIndex": 0,
          "steps": 500,
          "video": "media/metaworld-pick-place-v3-scripted.mp4",
          "poster": "media/metaworld-pick-place-v3-scripted.jpg",
          "success": true,
          "label": "抓取放置 · 官方脚本 · 目标 0",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "metaworld",
        "familyTitle": "MetaWorld · 脚本与随机动作对照",
        "summary": "用官方脚本展示机械臂到达、推动和抓取放置的动作结构。",
        "technicalRoute": "任务专用脚本 + 机械臂控制器：根据当前状态执行明确的接近、操作与结束步骤。",
        "modelRole": "没有语言模型；运行时使用官方任务脚本。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "任务状态。"
          },
          {
            "label": "决定什么",
            "text": "官方脚本根据任务状态计算预设操作。"
          },
          {
            "label": "如何执行",
            "text": "MetaWorld 机械臂控制器推进动作与接触。"
          },
          {
            "label": "如何反馈",
            "text": "官方成功条件记录每次是否完成。"
          }
        ],
        "limitation": "演示使用任务专用脚本与状态信息，没有语言模型；这里展示完成的操作流程。",
        "watchFor": "观察脚本如何组织接近目标、接触操作与结束动作。",
        "result": "官方脚本完成到达、推动与抓取放置，为理解机械臂动作结构提供直观参照。",
        "model": "官方脚本 / 随机",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "用官方脚本展示机械臂到达、推动和抓取放置的动作结构。",
      "description": "用官方脚本展示机械臂到达、推动和抓取放置的动作结构。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "多任务控制"
        },
        {
          "label": "运行方式",
          "value": "没有语言模型；运行时使用官方任务脚本。"
        },
        {
          "label": "输入信息",
          "value": "仿真状态"
        }
      ],
      "notes": [
        "任务专用脚本 + 机械臂控制器：根据当前状态执行明确的接近、操作与结束步骤。",
        "演示使用任务专用脚本与状态信息，没有语言模型；这里展示完成的操作流程。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "metaworld",
      "versionLabel": "官方控制脚本：到达、推动与抓放"
    },
    {
      "id": "pendulum-lqr",
      "title": "让一根杆，保持直立",
      "task": "平衡",
      "engine": "MuJoCo",
      "route": "control",
      "source": "baseline",
      "controller": "LQR / 随机",
      "input": "动力学模型与状态",
      "poster": "media/pendulum-lqr.jpg",
      "sourceUrl": "https://mujoco.readthedocs.io/",
      "sourceLabel": "MuJoCo 官方文档",
      "originalTrialMax": 2,
      "trials": [
        {
          "seed": 0,
          "steps": 1000,
          "video": "media/pendulum-lqr.mp4",
          "poster": "media/pendulum-lqr.jpg",
          "success": null,
          "label": "LQR 平衡控制 · Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "平衡保持完成"
        }
      ],
      "projectBrief": {
        "familyId": "lqr",
        "familyTitle": "LQR · 用反馈保持平衡",
        "summary": "控制器根据杆的偏离持续施力，让倒立摆保持直立。",
        "technicalRoute": "线性二次调节器（LQR）：根据动力学模型与实时状态计算反馈控制力。",
        "modelRole": "没有语言模型或学习策略；这是经典控制参照。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "倒立摆的位置、速度和动力学模型。"
          },
          {
            "label": "决定什么",
            "text": "LQR 根据偏离直立状态的误差计算纠正力。"
          },
          {
            "label": "如何执行",
            "text": "MuJoCo 推进小车与杆的物理运动。"
          },
          {
            "label": "如何反馈",
            "text": "每个控制步重新测量偏差，持续纠正。"
          }
        ],
        "limitation": "使用已知动力学与状态反馈；这是经典控制演示，没有语言模型。",
        "watchFor": "看杆倾斜时，小车如何移动来恢复平衡。",
        "result": "LQR 控制器持续修正倾角，让倒立摆保持直立直到回合时限。",
        "model": "LQR / 随机",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "控制器根据杆的偏离持续施力，让倒立摆保持直立。",
      "description": "控制器根据杆的偏离持续施力，让倒立摆保持直立。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "平衡"
        },
        {
          "label": "运行方式",
          "value": "没有语言模型或学习策略；这是经典控制参照。"
        },
        {
          "label": "输入信息",
          "value": "动力学模型与状态"
        }
      ],
      "notes": [
        "线性二次调节器（LQR）：根据动力学模型与实时状态计算反馈控制力。",
        "使用已知动力学与状态反馈；这是经典控制演示，没有语言模型。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "lqr",
      "versionLabel": "让一根杆，保持直立"
    },
    {
      "id": "fibonacci-writing",
      "title": "把一段程序，写在白板上",
      "task": "接触书写",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "Astra 编写的固定控制器（作者标注）",
      "input": "仿真状态与固定笔画路径",
      "poster": "media/fibonacci-writing.png",
      "sourceUrl": "https://github.com/dimentary/llm-robotics-playground/tree/main/experiments/fibonacci-writing",
      "originalTrialMax": 1,
      "trials": [
        {
          "calls": 0,
          "video": "media/fibonacci-writing.mp4",
          "poster": "media/fibonacci-writing.png",
          "success": true,
          "label": "固定字迹 · 代表轨迹",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "writing",
        "familyTitle": "灵巧手写字 · 固定轨迹与真实接触",
        "summary": "将程序文字拆成笔画，用灵巧手持笔，在物理接触中完成书写。",
        "technicalRoute": "模型事先编写控制程序，运行时按固定笔画目标驱动机械手。",
        "modelRole": "Astra 参与生成控制代码；回放中的执行没有新的模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "机器人状态与预先确定的笔画路径。"
          },
          {
            "label": "决定什么",
            "text": "固定控制器计算当前笔尖应该到达的位置。"
          },
          {
            "label": "如何执行",
            "text": "G1 灵巧手持笔，仿真通过实际笔尖接触产生笔迹。"
          },
          {
            "label": "如何反馈",
            "text": "检查笔画完成、持笔和接触记录。"
          }
        ],
        "limitation": "文字内容和笔画预先给定；不说明在线识字、自由创作或视觉纠错能力。",
        "watchFor": "看落笔、抬笔和换行，区分轨迹目标与实际接触留下的笔迹。",
        "result": "灵巧手持笔完成一段 Fibonacci 程序的全部预定笔画，笔迹来自真实仿真接触。",
        "model": "Astra 编写的固定控制器（作者标注）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "将程序文字拆成笔画，用灵巧手持笔，在物理接触中完成书写。",
      "description": "将程序文字拆成笔画，用灵巧手持笔，在物理接触中完成书写。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "接触书写"
        },
        {
          "label": "运行方式",
          "value": "Astra 参与生成控制代码；回放中的执行没有新的模型调用。"
        },
        {
          "label": "输入信息",
          "value": "仿真状态与固定笔画路径"
        }
      ],
      "notes": [
        "模型事先编写控制程序，运行时按固定笔画目标驱动机械手。",
        "文字内容和笔画预先给定；不说明在线识字、自由创作或视觉纠错能力。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "writing",
      "versionLabel": "把一段程序，写在白板上"
    },
    {
      "id": "geometric-drawing",
      "title": "用多指手，画出圆与螺旋",
      "task": "接触绘画",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "复用作者生成的固定控制器",
      "input": "笔尖状态真值 + 预设几何路径",
      "poster": "media/geometric-circle.png",
      "sourceUrl": "https://github.com/dimentary/llm-robotics-playground/tree/main/experiments/dove-drawing",
      "originalTrialMax": 3,
      "trials": [
        {
          "calls": 0,
          "video": "media/geometric-circle.mp4",
          "poster": "media/geometric-circle.png",
          "success": true,
          "label": "圆",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "calls": 0,
          "video": "media/geometric-square.mp4",
          "poster": "media/geometric-square.png",
          "success": true,
          "label": "方形",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "calls": 0,
          "video": "media/geometric-spiral.mp4",
          "poster": "media/geometric-spiral.png",
          "success": true,
          "label": "螺旋",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "drawing",
        "familyTitle": "灵巧手绘图 · 几何路径控制",
        "summary": "把圆、方形和螺旋变成笔尖路径，由持笔控制器真实画出。",
        "technicalRoute": "预定几何轨迹 + 灵巧手持笔控制 + 物理接触留痕。",
        "modelRole": "运行时是固定控制器；没有在线视觉语言模型创作图形。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "笔尖状态真值与几何路径。"
          },
          {
            "label": "决定什么",
            "text": "计算笔尖沿曲线的下一目标。"
          },
          {
            "label": "如何执行",
            "text": "控制灵巧手持笔运动，以真实接触写入画面。"
          },
          {
            "label": "如何反馈",
            "text": "检查持笔、墨迹和轨迹完成情况。"
          }
        ],
        "limitation": "路径预先指定，状态来自真值；不是自由绘画或视觉生成。",
        "watchFor": "比较直线转角、闭合圆和连续螺旋的持笔稳定性。",
        "result": "灵巧手在持续持笔和接触条件下画出圆、方形与双圈螺旋。",
        "model": "复用作者生成的固定控制器",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "把圆、方形和螺旋变成笔尖路径，由持笔控制器真实画出。",
      "description": "把圆、方形和螺旋变成笔尖路径，由持笔控制器真实画出。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "接触绘画"
        },
        {
          "label": "运行方式",
          "value": "运行时是固定控制器；没有在线视觉语言模型创作图形。"
        },
        {
          "label": "输入信息",
          "value": "笔尖状态真值 + 预设几何路径"
        }
      ],
      "notes": [
        "预定几何轨迹 + 灵巧手持笔控制 + 物理接触留痕。",
        "路径预先指定，状态来自真值；不是自由绘画或视觉生成。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "drawing",
      "versionLabel": "用多指手，画出圆与螺旋"
    },
    {
      "id": "dexjoco-hammer-human-oracle",
      "title": "握住锤子，把钉子敲进去",
      "task": "锤钉与工具使用",
      "engine": "MuJoCo",
      "route": "demonstration",
      "source": "demonstration",
      "model": "人类示范动作（固定序列）",
      "input": "预先记录的动作，无在线感知决策",
      "poster": "media/dexjoco-hammer-human-oracle.png",
      "sourceUrl": "https://github.com/mll-lab-nu/embodied-first-exam/blob/e695c327deacb346fb468564a5cf40b72569cd34/tasks/dexjoco/dexjoco-hammer-nail-i00-privileged/solution/oracle_trajectory.npz",
      "sourceLabel": "查看官方示范来源",
      "originalTrialMax": 1,
      "trials": [
        {
          "seed": 0,
          "seedLabel": "冻结初态种子",
          "steps": 202,
          "calls": 0,
          "video": "media/dexjoco-hammer-human-oracle.mp4",
          "poster": "media/dexjoco-hammer-human-oracle.png",
          "success": true,
          "label": "固定初态 i00 · 代表重放",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "dexjoco",
        "familyTitle": "DexJoCo · 灵巧手敲钉",
        "summary": "在复杂接触任务里，对照人类动作复演与看图决策的模型尝试。",
        "technicalRoute": "人类示范动作序列 + 灵巧手物理控制：复演握锤、摆动与敲击接触。",
        "modelRole": "没有在线模型或感知决策：重复执行预先记录的人类动作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "预先记录的人类动作序列。"
          },
          {
            "label": "决定什么",
            "text": "按示范顺序推进动作，没有在线模型决策。"
          },
          {
            "label": "如何执行",
            "text": "原控制器驱动灵巧手握锤和敲击，物理引擎推进接触。"
          },
          {
            "label": "如何反馈",
            "text": "原生任务条件检查钉子完成状态。"
          }
        ],
        "limitation": "使用同一条人类动作示范与固定初始状态，展示动作复演，不包含在线语言模型决策。",
        "watchFor": "先看锤子的握持和接触方向，再看敲击是否真正改变钉子状态。",
        "result": "通过复演人类示范，灵巧手握住锤子并把钉子敲入，展示复杂工具接触动作。",
        "model": "人类示范动作（固定序列）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "在复杂接触任务里，对照人类动作复演与看图决策的模型尝试。",
      "description": "在复杂接触任务里，对照人类动作复演与看图决策的模型尝试。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "锤钉与工具使用"
        },
        {
          "label": "运行方式",
          "value": "没有在线模型或感知决策：重复执行预先记录的人类动作。"
        },
        {
          "label": "输入信息",
          "value": "预先记录的动作，无在线感知决策"
        }
      ],
      "notes": [
        "人类示范动作序列 + 灵巧手物理控制：复演握锤、摆动与敲击接触。",
        "使用同一条人类动作示范与固定初始状态，展示动作复演，不包含在线语言模型决策。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "dexjoco",
      "versionLabel": "握住锤子，把钉子敲进去"
    },
    {
      "id": "bigym2-published-astra-move-plate",
      "title": "G1 人形机器人搬运盘子",
      "task": "人形机器人全身操作",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "作者标注：GPT-6 Astra生成固定控制器；本机0新调用",
      "input": "机载84×84 RGB + 本体/骨盆状态；无物体真值",
      "poster": "media/bigym2-published-astra-move-plate-seed620002.png",
      "sourceUrl": "https://bigym2.github.io/",
      "sourceLabel": "查看作者项目与发布说明",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 620002,
          "steps": 1392,
          "calls": 0,
          "wallSeconds": 276.77,
          "video": "media/bigym2-published-astra-move-plate-seed620002.mp4",
          "poster": "media/bigym2-published-astra-move-plate-seed620002.png",
          "success": true,
          "outcome": "success",
          "label": "固定策略 v8 · Seed 620002",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "bigym",
        "familyTitle": "BiGym2 · 全身操作复现",
        "summary": "使用作者发布的固定控制程序，复现人形机器人搬盘子。",
        "technicalRoute": "机载视觉与全身控制程序结合，重点检查作者产物能否在本机重复执行。",
        "modelRole": "使用作者标注为 Astra 生成的固定代码；本机运行没有新模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "机载 84×84 RGB、关节与骨盆状态，不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "固定程序选择全身移动与手部操作。"
          },
          {
            "label": "如何执行",
            "text": "BiGym2 中的 G1 控制器推进全身与物体接触。"
          },
          {
            "label": "如何反馈",
            "text": "记录原生成功判定，并核对动作文件是否与作者发布版本一致。"
          }
        ],
        "limitation": "运行时执行作者发布的固定代码，没有新模型调用。所选本机演示与作者参考动作存在差异，不能称精确动作复演。",
        "watchFor": "看走近盘子、保持平衡与双手操作如何协调。",
        "result": "作者发布的固定控制程序在本机完成了一次 G1 人形搬盘任务，展示全身移动与双手操作的协调。",
        "model": "作者标注：GPT-6 Astra生成固定控制器；本机0新调用",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "使用作者发布的固定控制程序，复现人形机器人搬盘子。",
      "description": "使用作者发布的固定控制程序，复现人形机器人搬盘子。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "人形机器人全身操作"
        },
        {
          "label": "运行方式",
          "value": "使用作者标注为 Astra 生成的固定代码；本机运行没有新模型调用。"
        },
        {
          "label": "输入信息",
          "value": "机载84×84 RGB + 本体/骨盆状态；无物体真值"
        }
      ],
      "notes": [
        "机载视觉与全身控制程序结合，重点检查作者产物能否在本机重复执行。",
        "运行时执行作者发布的固定代码，没有新模型调用。所选本机演示与作者参考动作存在差异，不能称精确动作复演。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "bigym",
      "versionLabel": "G1 人形机器人搬运盘子"
    },
    {
      "id": "robomme-pick-count",
      "title": "数清次数，再按下结束按钮",
      "task": "时序计数与抓放",
      "engine": "SAPIEN / PhysX",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "前视历史 + 当前腕部RGB + 本体状态与标定；无物体真值",
      "poster": "media/robomme-pick-count-test0.png",
      "sourceUrl": "https://github.com/jackbjed/embodied-astra-robomme",
      "sourceLabel": "查看作者评测项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 510000,
          "steps": 491,
          "calls": 16,
          "wallSeconds": 368.6409828190226,
          "video": "media/robomme-pick-count-test0.mp4",
          "poster": "media/robomme-pick-count-test0.png",
          "success": true,
          "outcome": "success",
          "label": "Test 0 · 绿方块 · 抓放三次",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 510100,
          "steps": 251,
          "calls": 8,
          "wallSeconds": 252.38962278098916,
          "video": "media/robomme-pick-count-test1.mp4",
          "poster": "media/robomme-pick-count-test1.png",
          "success": true,
          "outcome": "success",
          "label": "Test 1 · 绿方块 · 抓放一次",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 510200,
          "steps": 262,
          "calls": 8,
          "wallSeconds": 206.13411513599567,
          "video": "media/robomme-pick-count-test2.mp4",
          "poster": "media/robomme-pick-count-test2.png",
          "success": true,
          "outcome": "success",
          "label": "Test 2 · 蓝方块 · 抓放一次",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "robomme",
        "familyTitle": "RoboMME · 观察历史与操作记忆",
        "summary": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
        "technicalRoute": "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "modelRole": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "前视历史、当前腕部 RGB、机器人状态与相机标定；不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "识别历史顺序、数量或目标身份，选择末端姿态和夹爪动作。"
          },
          {
            "label": "如何执行",
            "text": "原生 MPLib 规划与 Panda 控制器执行；没有把整段抓放封装成一次工具调用。"
          },
          {
            "label": "如何反馈",
            "text": "执行后的图像、机器人状态与原生任务判定返回。"
          }
        ],
        "limitation": "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。",
        "watchFor": "区分演示阶段与模型操作阶段，看最终选择是否真的依赖过去的画面。",
        "result": "模型记住抓放次数，在满足任务要求后按下结束按钮。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "description": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "时序计数与抓放"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。"
        },
        {
          "label": "输入信息",
          "value": "前视历史 + 当前腕部RGB + 本体状态与标定；无物体真值"
        }
      ],
      "notes": [
        "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "robomme",
      "versionLabel": "抓放次数记忆"
    },
    {
      "id": "robomme-video-unmask-swap",
      "title": "容器换位后，还记得方块在哪吗？",
      "task": "遮挡后的空间记忆",
      "engine": "SAPIEN / PhysX",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "前视历史 + 当前腕部RGB + 本体状态与标定；无物体真值",
      "poster": "media/robomme-video-unmask-swap-test2.png",
      "sourceUrl": "https://github.com/RoboMME/robomme_benchmark/blob/856bc3a189d4172f3f47dbee4424d585f8d78db3/src/robomme/robomme_env/VideoUnmaskSwap.py",
      "sourceLabel": "查看官方遮挡与换位任务",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 550200,
          "steps": 231,
          "calls": 3,
          "wallSeconds": 271.0372265079932,
          "video": "media/robomme-video-unmask-swap-test2.mp4",
          "poster": "media/robomme-video-unmask-swap-test2.png",
          "success": true,
          "outcome": "success",
          "label": "Test 2 · 找到红方块所在容器",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 550300,
          "steps": 510,
          "calls": 9,
          "wallSeconds": 548.2480792869756,
          "video": "media/robomme-video-unmask-swap-test3.mp4",
          "poster": "media/robomme-video-unmask-swap-test3.png",
          "success": true,
          "outcome": "success",
          "label": "Test 3 · 困难初态 · 先绿后蓝",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "robomme",
        "familyTitle": "RoboMME · 观察历史与操作记忆",
        "summary": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
        "technicalRoute": "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "modelRole": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "前视历史、当前腕部 RGB、机器人状态与相机标定；不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "识别历史顺序、数量或目标身份，选择末端姿态和夹爪动作。"
          },
          {
            "label": "如何执行",
            "text": "原生 MPLib 规划与 Panda 控制器执行；没有把整段抓放封装成一次工具调用。"
          },
          {
            "label": "如何反馈",
            "text": "执行后的图像、机器人状态与原生任务判定返回。"
          }
        ],
        "limitation": "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。",
        "watchFor": "区分演示阶段与模型操作阶段，看最终选择是否真的依赖过去的画面。",
        "result": "观察容器换位过程后，模型仍能根据历史画面找到目标方块所在的容器。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "description": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "遮挡后的空间记忆"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。"
        },
        {
          "label": "输入信息",
          "value": "前视历史 + 当前腕部RGB + 本体状态与标定；无物体真值"
        }
      ],
      "notes": [
        "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "robomme",
      "versionLabel": "容器换位与目标记忆"
    },
    {
      "id": "openarm-act-mona-lisa",
      "title": "用 384 次落笔，画出蒙娜丽莎",
      "task": "机械臂绘画",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "作者发布的LeRobot ACT；Astra参与构建，本机0新调用",
      "input": "7关节状态 + 6个真值位姿误差；固定画像目标，无相机输入",
      "poster": "media/openarm-act-mona-lisa-nominal.png",
      "sourceUrl": "https://arena.himrobotics.com/uploads/source_59ffd3291f3623fc498d",
      "sourceLabel": "查看HIM Arena原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 42,
          "seedLabel": "原生扰动RNG种子",
          "steps": 627335,
          "calls": 0,
          "wallSeconds": 2682.8192713450117,
          "video": "media/openarm-act-mona-lisa-nominal.mp4",
          "poster": "media/openarm-act-mona-lisa-nominal.png",
          "success": true,
          "outcome": "success",
          "label": "原始初态 · 384点画像",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "原生扰动RNG种子",
          "steps": 627350,
          "calls": 0,
          "wallSeconds": 2357.130353824992,
          "video": "media/openarm-act-mona-lisa-5mrad.mp4",
          "poster": "media/openarm-act-mona-lisa-5mrad.png",
          "success": true,
          "outcome": "success",
          "label": "关节扰动 0.005 rad · 384点画像",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "原生扰动RNG种子",
          "steps": 627353,
          "calls": 0,
          "wallSeconds": 2318.921248166007,
          "video": "media/openarm-act-mona-lisa-10mrad.mp4",
          "poster": "media/openarm-act-mona-lisa-10mrad.png",
          "success": true,
          "outcome": "success",
          "label": "关节扰动 0.01 rad · 384点画像",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "openarm",
        "familyTitle": "OpenArm · 学习策略与绘画编排",
        "summary": "脚本安排蘸色与画点，训练好的 ACT 策略负责局部关节修正。",
        "technicalRoute": "分层混合：固定绘画流程 + 作者发布的 ACT 动作策略。",
        "modelRole": "ACT 权重负责动作推理；高层画面与顺序由脚本给定，无运行时 Astra。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "7 个关节状态与 6 维目标位姿真值误差。"
          },
          {
            "label": "决定什么",
            "text": "ACT 输出关节修正；脚本决定洗笔、蘸色和 384 个画点。"
          },
          {
            "label": "如何执行",
            "text": "OpenArm 在物理仿真中接触画布并完成预定笔触。"
          },
          {
            "label": "如何反馈",
            "text": "记录接触完成情况，复核物理重放状态与文件哈希。"
          }
        ],
        "limitation": "不是图像输入的 VLA，也不评价作品审美或自由创作能力；本机未训练新策略。",
        "watchFor": "看高层换色流程与低层接近画点的修正如何配合。",
        "result": "固定绘画编排配合 ACT 局部动作策略，完成蘸色、换色和蒙娜丽莎画像的预定接触画点。",
        "model": "作者发布的LeRobot ACT；Astra参与构建，本机0新调用",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "脚本安排蘸色与画点，训练好的 ACT 策略负责局部关节修正。",
      "description": "脚本安排蘸色与画点，训练好的 ACT 策略负责局部关节修正。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "机械臂绘画"
        },
        {
          "label": "运行方式",
          "value": "ACT 权重负责动作推理；高层画面与顺序由脚本给定，无运行时 Astra。"
        },
        {
          "label": "输入信息",
          "value": "7关节状态 + 6个真值位姿误差；固定画像目标，无相机输入"
        }
      ],
      "notes": [
        "分层混合：固定绘画流程 + 作者发布的 ACT 动作策略。",
        "不是图像输入的 VLA，也不评价作品审美或自由创作能力；本机未训练新策略。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "openarm",
      "versionLabel": "用 384 次落笔，画出蒙娜丽莎"
    },
    {
      "id": "robomme-stop-cube",
      "title": "等方块第 N 次经过，再按下按钮",
      "task": "时间推理与按键操作",
      "engine": "SAPIEN / PhysX",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "前视历史＋当前腕部RGB＋本体状态与标定；无物体真值/隐藏时钟",
      "poster": "media/robomme-stop-cube-test3.png",
      "sourceUrl": "https://github.com/RoboMME/robomme_benchmark/blob/856bc3a189d4172f3f47dbee4424d585f8d78db3/src/robomme/robomme_env/StopCube.py",
      "sourceLabel": "查看官方计时按键任务",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 520300,
          "steps": 103,
          "calls": 4,
          "wallSeconds": 307.5913693639741,
          "video": "media/robomme-stop-cube-test3.mp4",
          "poster": "media/robomme-stop-cube-test3.png",
          "success": true,
          "outcome": "success",
          "label": "Test 3 · hard · 原生按键任务成功",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "robomme",
        "familyTitle": "RoboMME · 观察历史与操作记忆",
        "summary": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
        "technicalRoute": "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "modelRole": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "前视历史、当前腕部 RGB、机器人状态与相机标定；不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "识别历史顺序、数量或目标身份，选择末端姿态和夹爪动作。"
          },
          {
            "label": "如何执行",
            "text": "原生 MPLib 规划与 Panda 控制器执行；没有把整段抓放封装成一次工具调用。"
          },
          {
            "label": "如何反馈",
            "text": "执行后的图像、机器人状态与原生任务判定返回。"
          }
        ],
        "limitation": "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。",
        "watchFor": "区分演示阶段与模型操作阶段，看最终选择是否真的依赖过去的画面。",
        "result": "根据方块经过的次数选择按键时机，完成原生动态观察与按钮任务。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "description": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "时间推理与按键操作"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。"
        },
        {
          "label": "输入信息",
          "value": "前视历史＋当前腕部RGB＋本体状态与标定；无物体真值/隐藏时钟"
        }
      ],
      "notes": [
        "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "robomme",
      "versionLabel": "动态计数与按键"
    },
    {
      "id": "dexterous-astra-cube-native",
      "title": "用灵巧手，把魔方转回原样",
      "task": "灵巧手解魔方",
      "engine": "MuJoCo",
      "route": "learned",
      "source": "published_policy",
      "model": "作者 Astra 实验的已发布技能权重；本机0次新Astra调用",
      "input": "仿真状态与已知打乱序列；无相机输入",
      "poster": "media/dexterous-astra-cube-native-learned_seed_5005.png",
      "sourceUrl": "https://github.com/jianglongye/dexterous-astra",
      "sourceLabel": "查看作者项目",
      "originalTrialMax": 4,
      "trials": [
        {
          "seed": 5005,
          "seedLabel": "摩擦与驱动力扰动种子",
          "calls": 0,
          "wallSeconds": 99.08251635398483,
          "video": "media/dexterous-astra-cube-native-learned_seed_5005.mp4",
          "poster": "media/dexterous-astra-cube-native-learned_seed_5005.png",
          "success": true,
          "outcome": "success",
          "label": "学习策略 · Seed 5005",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 5006,
          "seedLabel": "摩擦与驱动力扰动种子",
          "calls": 0,
          "wallSeconds": 97.58838976398692,
          "video": "media/dexterous-astra-cube-native-learned_seed_5006.mp4",
          "poster": "media/dexterous-astra-cube-native-learned_seed_5006.png",
          "success": true,
          "outcome": "success",
          "label": "学习策略 · Seed 5006",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "cube",
        "familyTitle": "双手魔方 · 学习操作与已知解法",
        "summary": "脚本负责拿起魔方，学习策略负责转面与重抓，解法来自已知打乱序列。",
        "technicalRoute": "预训练灵巧操作策略 + 固定取物编排 + 已知打乱的逆序解法。",
        "modelRole": "运行时使用发布权重与脚本，没有新 Astra 调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "仿真状态和已知打乱序列，不靠相机识别未知魔方。"
          },
          {
            "label": "决定什么",
            "text": "预定解法给出转面顺序，学习策略产生转面与重抓动作。"
          },
          {
            "label": "如何执行",
            "text": "双手机器人在简化接触与辅助约束下执行。"
          },
          {
            "label": "如何反馈",
            "text": "检查转面和还原状态；另有脚本对照记录。"
          }
        ],
        "limitation": "不能解释为从图像自主求解未知魔方，辅助物理约束也需纳入结果条件。",
        "watchFor": "区分拿起阶段的脚本动作与转面、重抓阶段的学习策略。",
        "result": "学习到的转面与重抓技能配合固定取物流程，按已知打乱序列的逆解将魔方转回原样。",
        "model": "作者 Astra 实验的已发布技能权重；本机0次新Astra调用",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "脚本负责拿起魔方，学习策略负责转面与重抓，解法来自已知打乱序列。",
      "description": "脚本负责拿起魔方，学习策略负责转面与重抓，解法来自已知打乱序列。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "灵巧手解魔方"
        },
        {
          "label": "运行方式",
          "value": "运行时使用发布权重与脚本，没有新 Astra 调用。"
        },
        {
          "label": "输入信息",
          "value": "仿真状态与已知打乱序列；无相机输入"
        }
      ],
      "notes": [
        "预训练灵巧操作策略 + 固定取物编排 + 已知打乱的逆序解法。",
        "不能解释为从图像自主求解未知魔方，辅助物理约束也需纳入结果条件。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "cube",
      "versionLabel": "用灵巧手，把魔方转回原样"
    },
    {
      "id": "robomme-pattern-lock",
      "title": "看一遍示范，再用小棒复现路径",
      "task": "视觉轨迹记忆与顺序操作",
      "engine": "SAPIEN / PhysX",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "公开前视历史＋当前腕部RGB＋棒尖TCP状态与相机标定；无隐藏路径/目标真值",
      "poster": "media/robomme-pattern-lock-test0.png",
      "sourceUrl": "https://github.com/RoboMME/robomme_benchmark/blob/856bc3a189d4172f3f47dbee4424d585f8d78db3/src/robomme/robomme_env/PatternLock.py",
      "sourceLabel": "查看官方棒尖路径记忆任务",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 650000,
          "steps": 314,
          "calls": 3,
          "wallSeconds": 104.44224218299496,
          "video": "media/robomme-pattern-lock-test0.mp4",
          "poster": "media/robomme-pattern-lock-test0.png",
          "success": true,
          "outcome": "success",
          "label": "Test 0 · easy · 原生任务成功",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 650200,
          "steps": 389,
          "calls": 4,
          "wallSeconds": 137.22109137501684,
          "video": "media/robomme-pattern-lock-test2.mp4",
          "poster": "media/robomme-pattern-lock-test2.png",
          "success": true,
          "outcome": "success",
          "label": "Test 2 · medium · 原生任务成功",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 650300,
          "steps": 564,
          "calls": 6,
          "wallSeconds": 207.97660657099914,
          "video": "media/robomme-pattern-lock-test3.mp4",
          "poster": "media/robomme-pattern-lock-test3.png",
          "success": true,
          "outcome": "success",
          "label": "Test 3 · hard · 原生任务成功",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "robomme",
        "familyTitle": "RoboMME · 观察历史与操作记忆",
        "summary": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
        "technicalRoute": "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "modelRole": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "前视历史、当前腕部 RGB、机器人状态与相机标定；不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "识别历史顺序、数量或目标身份，选择末端姿态和夹爪动作。"
          },
          {
            "label": "如何执行",
            "text": "原生 MPLib 规划与 Panda 控制器执行；没有把整段抓放封装成一次工具调用。"
          },
          {
            "label": "如何反馈",
            "text": "执行后的图像、机器人状态与原生任务判定返回。"
          }
        ],
        "limitation": "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。",
        "watchFor": "区分演示阶段与模型操作阶段，看最终选择是否真的依赖过去的画面。",
        "result": "看过任务示范后，模型用小棒复现对应路径，完成不同难度的图案操作。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "description": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "视觉轨迹记忆与顺序操作"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。"
        },
        {
          "label": "输入信息",
          "value": "公开前视历史＋当前腕部RGB＋棒尖TCP状态与相机标定；无隐藏路径/目标真值"
        }
      ],
      "notes": [
        "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "robomme",
      "versionLabel": "看示范复现路径"
    },
    {
      "id": "so101-block-sorting",
      "title": "SO101 从相机画面分拣三色积木",
      "task": "相机引导的积木分拣",
      "engine": "MuJoCo",
      "route": "control",
      "source": "baseline",
      "model": "固定几何视觉控制器 · 0新模型调用",
      "input": "前视RGB＋关节编码器＋机器人运动学与标定先验",
      "poster": "media/so101-block-raw-v3-repeat2.png",
      "sourceUrl": "https://huggingface.co/buckets/mishig/so101-block-sorting",
      "sourceLabel": "查看作者SO101分拣项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "calls": 0,
          "wallSeconds": 972.4689999999828,
          "video": "media/so101-block-raw-v3-repeat2.mp4",
          "poster": "media/so101-block-raw-v3-repeat2.png",
          "success": true,
          "outcome": "success",
          "label": "同初始状态 · Repeat 2 · raw-only v3",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "calls": 0,
          "wallSeconds": 944.25,
          "video": "media/so101-block-raw-v3-repeat3.mp4",
          "poster": "media/so101-block-raw-v3-repeat3.png",
          "success": true,
          "outcome": "success",
          "label": "同初始状态 · Repeat 3 · raw-only v3",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "so101",
        "familyTitle": "SO101 · 视觉几何与接触绘画",
        "summary": "利用相机标定与几何控制，完成仿真 SO101 的分拣或绘画。",
        "technicalRoute": "固定视觉几何控制：从 RGB 标记或颜色定位，再结合机器人运动学生成动作。",
        "modelRole": "运行时是固定控制器，0 次大模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "RGB、编码器与标定；绘画额外读取模拟颜料与接触状态。"
          },
          {
            "label": "决定什么",
            "text": "固定算法定位目标、规划几何路径并选择操作阶段。"
          },
          {
            "label": "如何执行",
            "text": "SO101 仿真控制器执行动作，接触产生抓取或笔迹。"
          },
          {
            "label": "如何反馈",
            "text": "检查物体分拣或接触绘画是否完成。"
          }
        ],
        "limitation": "这里全部是仿真，不是此前实体 SO101 的部署成果；控制依赖标定与任务先验。",
        "watchFor": "看图像定位怎样转成机械臂坐标，以及接触后结果是否符合目标。",
        "result": "从 RGB 图像定位不同颜色积木，结合标定与运动学完成 SO101 仿真分拣。",
        "model": "固定几何视觉控制器 · 0新模型调用",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "利用相机标定与几何控制，完成仿真 SO101 的分拣或绘画。",
      "description": "利用相机标定与几何控制，完成仿真 SO101 的分拣或绘画。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "相机引导的积木分拣"
        },
        {
          "label": "运行方式",
          "value": "运行时是固定控制器，0 次大模型调用。"
        },
        {
          "label": "输入信息",
          "value": "前视RGB＋关节编码器＋机器人运动学与标定先验"
        }
      ],
      "notes": [
        "固定视觉几何控制：从 RGB 标记或颜色定位，再结合机器人运动学生成动作。",
        "这里全部是仿真，不是此前实体 SO101 的部署成果；控制依赖标定与任务先验。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "so101",
      "versionLabel": "RGB 三色积木分拣"
    },
    {
      "id": "so101-painting",
      "title": "SO101 用接触画笔绘制巴黎",
      "task": "接触画笔与颜料绘画",
      "engine": "MuJoCo",
      "route": "control",
      "source": "baseline",
      "model": "固定几何绘画控制器 · 0新模型调用",
      "input": "RGB画布标记＋关节状态/运动学＋模拟颜料负载、颜色和接触计数",
      "poster": "media/so101-painting-repeat1.png",
      "sourceUrl": "https://huggingface.co/buckets/mishig/so101-painting",
      "sourceLabel": "查看作者SO101绘画项目",
      "originalTrialMax": 2,
      "trials": [
        {
          "calls": 0,
          "wallSeconds": 843.125,
          "video": "media/so101-painting-repeat1.mp4",
          "poster": "media/so101-painting-repeat1.png",
          "success": true,
          "outcome": "success",
          "label": "同初始状态 · Repeat 1",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "calls": 0,
          "wallSeconds": 838.125,
          "video": "media/so101-painting-repeat2.mp4",
          "poster": "media/so101-painting-repeat2.png",
          "success": true,
          "outcome": "success",
          "label": "同初始状态 · Repeat 2",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "so101",
        "familyTitle": "SO101 · 视觉几何与接触绘画",
        "summary": "利用相机标定与几何控制，完成仿真 SO101 的分拣或绘画。",
        "technicalRoute": "固定视觉几何控制：从 RGB 标记或颜色定位，再结合机器人运动学生成动作。",
        "modelRole": "运行时是固定控制器，0 次大模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "RGB、编码器与标定；绘画额外读取模拟颜料与接触状态。"
          },
          {
            "label": "决定什么",
            "text": "固定算法定位目标、规划几何路径并选择操作阶段。"
          },
          {
            "label": "如何执行",
            "text": "SO101 仿真控制器执行动作，接触产生抓取或笔迹。"
          },
          {
            "label": "如何反馈",
            "text": "检查物体分拣或接触绘画是否完成。"
          }
        ],
        "limitation": "这里全部是仿真，不是此前实体 SO101 的部署成果；控制依赖标定与任务先验。",
        "watchFor": "看图像定位怎样转成机械臂坐标，以及接触后结果是否符合目标。",
        "result": "SO101 按几何路径操作接触画笔，在仿真画布上完成巴黎主题绘画。",
        "model": "固定几何绘画控制器 · 0新模型调用",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "利用相机标定与几何控制，完成仿真 SO101 的分拣或绘画。",
      "description": "利用相机标定与几何控制，完成仿真 SO101 的分拣或绘画。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "接触画笔与颜料绘画"
        },
        {
          "label": "运行方式",
          "value": "运行时是固定控制器，0 次大模型调用。"
        },
        {
          "label": "输入信息",
          "value": "RGB画布标记＋关节状态/运动学＋模拟颜料负载、颜色和接触计数"
        }
      ],
      "notes": [
        "固定视觉几何控制：从 RGB 标记或颜色定位，再结合机器人运动学生成动作。",
        "这里全部是仿真，不是此前实体 SO101 的部署成果；控制依赖标定与任务先验。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "so101",
      "versionLabel": "接触画笔绘制巴黎"
    },
    {
      "id": "robomme-video-place-order",
      "title": "记住第几次放置，再找到同一个目标",
      "task": "视觉事件次序与目标记忆",
      "engine": "SAPIEN / PhysX",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求标识）",
      "input": "公开前视历史＋当前腕部RGB＋Panda TCP/真实手指位置与相机标定；无隐藏目标身份或位姿",
      "poster": "media/robomme-video-place-order-test0.png",
      "sourceUrl": "https://github.com/RoboMME/robomme_benchmark/blob/856bc3a189d4172f3f47dbee4424d585f8d78db3/src/robomme/robomme_env/VideoPlaceOrder.py",
      "sourceLabel": "查看官方放置次序记忆任务",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 610002,
          "steps": 1254,
          "calls": 4,
          "wallSeconds": 327.5579669990111,
          "video": "media/robomme-video-place-order-test0.mp4",
          "poster": "media/robomme-video-place-order-test0.png",
          "agentStartSeconds": 53.9,
          "success": true,
          "outcome": "success",
          "label": "Test 0 · easy",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 610203,
          "steps": 1152,
          "calls": 6,
          "wallSeconds": 343.4608812130173,
          "video": "media/robomme-video-place-order-test2.mp4",
          "poster": "media/robomme-video-place-order-test2.png",
          "agentStartSeconds": 46.75,
          "success": true,
          "outcome": "success",
          "label": "Test 2 · medium",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 610300,
          "steps": 1005,
          "calls": 6,
          "wallSeconds": 298.10905242699664,
          "video": "media/robomme-video-place-order-test3.mp4",
          "poster": "media/robomme-video-place-order-test3.png",
          "agentStartSeconds": 38.95,
          "success": true,
          "outcome": "success",
          "label": "Test 3 · hard",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "robomme",
        "familyTitle": "RoboMME · 观察历史与操作记忆",
        "summary": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
        "technicalRoute": "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "modelRole": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "前视历史、当前腕部 RGB、机器人状态与相机标定；不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "识别历史顺序、数量或目标身份，选择末端姿态和夹爪动作。"
          },
          {
            "label": "如何执行",
            "text": "原生 MPLib 规划与 Panda 控制器执行；没有把整段抓放封装成一次工具调用。"
          },
          {
            "label": "如何反馈",
            "text": "执行后的图像、机器人状态与原生任务判定返回。"
          }
        ],
        "limitation": "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。",
        "watchFor": "区分演示阶段与模型操作阶段，看最终选择是否真的依赖过去的画面。",
        "result": "记住演示中的放置顺序，再从当前画面定位对应目标并完成操作。",
        "model": "gpt-6-astra（请求标识）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "description": "先看演示或物体变化，记住历史，再用机械臂完成依赖记忆的任务。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "视觉事件次序与目标记忆"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行时读取历史画面与当前观察，决定下一步操作。"
        },
        {
          "label": "输入信息",
          "value": "公开前视历史＋当前腕部RGB＋Panda TCP/真实手指位置与相机标定；无隐藏目标身份或位姿"
        }
      ],
      "notes": [
        "视觉历史记忆 + 在线语言决策 + 原生机械臂规划执行。",
        "小样本，非完整基准；模型思考期间物理仿真暂停，不能按现实时间理解动态难度。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "robomme",
      "versionLabel": "放置顺序记忆"
    },
    {
      "id": "robouse-astra-drone",
      "title": "让 Astra 驾驶无人机完成三个目标",
      "task": "无人机导航与检查",
      "engine": "MuJoCo",
      "route": "flight",
      "source": "fresh",
      "model": "gpt-6-astra（collaboration元数据）",
      "input": "公开状态与地标＋按需原生RGB；每条轨迹按实际图像查看标识，封面不自动算输入",
      "poster": "media/robouse-astra-drone-waypoint.png",
      "sourceUrl": "https://github.com/benchflow-ai/robouse/tree/19b644846cdc5cac70fb16b866eb08501db8f0cc/tasks/drone",
      "sourceLabel": "查看 RoboUse 原生无人机任务",
      "originalTrialMax": 9,
      "trials": [
        {
          "seed": 0,
          "steps": 214,
          "video": "media/robouse-astra-drone-waypoint.mp4",
          "poster": "media/robouse-astra-drone-waypoint.png",
          "success": true,
          "outcome": "success",
          "label": "飞到指定航点并悬停",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "steps": 385,
          "video": "media/robouse-astra-drone-inspect-mast.mp4",
          "poster": "media/robouse-astra-drone-inspect-mast.png",
          "success": true,
          "outcome": "success",
          "label": "靠近通信塔并观察标记",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "steps": 740,
          "video": "media/robouse-astra-drone-obstacle-wall.mp4",
          "poster": "media/robouse-astra-drone-obstacle-wall.png",
          "success": true,
          "outcome": "success",
          "label": "越过高墙并降落到北侧平台",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "taskId": "drone-waypoint",
          "steps": 214,
          "video": "media/robouse-astra-drone-waypoint-r2.mp4",
          "poster": "media/robouse-astra-drone-waypoint-r2.png",
          "success": true,
          "outcome": "success",
          "label": "重复2 · 飞到指定航点并悬停",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "taskId": "drone-inspect-mast",
          "steps": 415,
          "video": "media/robouse-astra-drone-inspect-mast-r2.mp4",
          "poster": "media/robouse-astra-drone-inspect-mast-r2.png",
          "success": true,
          "outcome": "success",
          "label": "重复2 · 靠近通信塔并观察标记",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "taskId": "drone-obstacle-wall",
          "steps": 711,
          "video": "media/robouse-astra-drone-obstacle-wall-r2.mp4",
          "poster": "media/robouse-astra-drone-obstacle-wall-r2.png",
          "success": true,
          "outcome": "success",
          "label": "重复2 · 越过高墙并降落到北侧平台",
          "originalTrialNumber": 6,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "taskId": "drone-waypoint",
          "steps": 214,
          "video": "media/robouse-astra-drone-waypoint-r3.mp4",
          "poster": "media/robouse-astra-drone-waypoint-r3.png",
          "success": true,
          "outcome": "success",
          "label": "重复3 · 飞到指定航点并悬停",
          "originalTrialNumber": 7,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "taskId": "drone-inspect-mast",
          "steps": 390,
          "video": "media/robouse-astra-drone-inspect-mast-r3.mp4",
          "poster": "media/robouse-astra-drone-inspect-mast-r3.png",
          "success": true,
          "outcome": "success",
          "label": "重复3 · 靠近通信塔并观察标记",
          "originalTrialNumber": 8,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "taskId": "drone-obstacle-wall",
          "steps": 720,
          "video": "media/robouse-astra-drone-obstacle-wall-r3.mp4",
          "poster": "media/robouse-astra-drone-obstacle-wall-r3.png",
          "success": true,
          "outcome": "success",
          "label": "重复3 · 越过高墙并降落到北侧平台",
          "originalTrialNumber": 9,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "drone",
        "familyTitle": "RoboUse · 语言决策与飞行控制",
        "summary": "模型选择飞行目标，原生飞行控制器负责稳定无人机。",
        "technicalRoute": "高层 Agent + 飞行工具：目标选择与低层姿态稳定分开。",
        "modelRole": "Astra 在线选择飞行指令。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "公开状态、地标，以及可选原生 RGB；图像实际调用情况单独记录。"
          },
          {
            "label": "决定什么",
            "text": "航点、悬停、越墙与着陆等飞行目标。"
          },
          {
            "label": "如何执行",
            "text": "原生飞行控制器将目标变成无人机动作。"
          },
          {
            "label": "如何反馈",
            "text": "状态、图像与原任务成绩反馈给模型。"
          }
        ],
        "limitation": "各任务重复使用其规定初始条件，不能据此推断未知场景导航能力。",
        "watchFor": "看接近目标时如何减速与悬停，以及越墙后如何重新定位着陆点。",
        "result": "模型通过飞行工具完成航点悬停、塔上标记与越墙着陆，低层控制器负责飞行稳定。",
        "model": "gpt-6-astra（collaboration元数据）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型选择飞行目标，原生飞行控制器负责稳定无人机。",
      "description": "模型选择飞行目标，原生飞行控制器负责稳定无人机。",
      "cardValue": "9 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "无人机导航与检查"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线选择飞行指令。"
        },
        {
          "label": "输入信息",
          "value": "公开状态与地标＋按需原生RGB；每条轨迹按实际图像查看标识，封面不自动算输入"
        }
      ],
      "notes": [
        "高层 Agent + 飞行工具：目标选择与低层姿态稳定分开。",
        "各任务重复使用其规定初始条件，不能据此推断未知场景导航能力。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "drone",
      "versionLabel": "让 Astra 驾驶无人机完成三个目标"
    },
    {
      "id": "astra-experience-free-s1",
      "title": "Astra 看图按电梯",
      "task": "电梯按钮最终按压",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "fresh",
      "model": "gpt-6-astra · 实际medium",
      "input": "原生RGB＋公开关节状态；无判定真值输入",
      "poster": "media/astra-experience-free-s1.png",
      "sourceUrl": "https://github.com/hesd10/astra-robot-sim2real/tree/e324643f03d05656f49bc4fc575759fd46cb9fe0",
      "sourceLabel": "查看作者电梯按钮实验",
      "originalTrialMax": 3,
      "trials": [
        {
          "init": "S1",
          "video": "media/astra-experience-free-s1-3x.mp4",
          "poster": "media/astra-experience-free-s1.png",
          "success": true,
          "outcome": "success",
          "label": "FREE / S1 · 近按钮状态下按下目标按钮",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "init": "S1",
          "video": "media/astra-experience-free-s1-free03-3x.mp4",
          "poster": "media/astra-experience-free-s1-free03.png",
          "success": true,
          "outcome": "success",
          "label": "重复3 · FREE / S1",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "elevator",
        "familyTitle": "电梯按钮 · 反馈接口如何影响操作",
        "summary": "让同一模型通过不同反馈接口按按钮，观察动作闭环与收尾差异。",
        "technicalRoute": "视觉 Agent 接触操作，对照直接 API、分步反馈和带局部停止规则的接口。",
        "modelRole": "Astra 在线决策；不同接口附带的自动化程度不同。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "原生 RGB 与关节状态，不读取按钮真值。"
          },
          {
            "label": "决定什么",
            "text": "选择接近和按压动作；FREE、STEP、LOOP 允许的工具不同。"
          },
          {
            "label": "如何执行",
            "text": "FREE 直接使用公开控制 API；STEP 脉冲后停止并检查；LOOP 额外使用固定区域红像素停止规则。"
          },
          {
            "label": "如何反馈",
            "text": "新画面、接触与健康检查反馈；分别记录物理成功和程序正常收尾。"
          }
        ],
        "limitation": "接口同时改变了自动化和动作约束，差异不能全部归因于“反馈”一个因素；不是整段乘梯导航。",
        "watchFor": "比较接触按钮后是否及时停止，以及物理成功之后流程能否正常结束。",
        "result": "模型根据原生画面与关节状态接近按钮，通过接触按下按钮并完成流程。",
        "model": "gpt-6-astra · 实际medium",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "让同一模型通过不同反馈接口按按钮，观察动作闭环与收尾差异。",
      "description": "让同一模型通过不同反馈接口按按钮，观察动作闭环与收尾差异。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "电梯按钮最终按压"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线决策；不同接口附带的自动化程度不同。"
        },
        {
          "label": "输入信息",
          "value": "原生RGB＋公开关节状态；无判定真值输入"
        }
      ],
      "notes": [
        "视觉 Agent 接触操作，对照直接 API、分步反馈和带局部停止规则的接口。",
        "接口同时改变了自动化和动作约束，差异不能全部归因于“反馈”一个因素；不是整段乘梯导航。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "elevator",
      "versionLabel": "直接看图按按钮"
    },
    {
      "id": "robot-vllm-astra-sensing",
      "title": "Astra 看图定位四色目标",
      "task": "四色视觉定位与一维目标到达",
      "engine": "MuJoCo",
      "route": "vision",
      "source": "fresh",
      "model": "gpt-6-astra · 实际 medium",
      "input": "仅两阶段原生RGB与公开编号网格；目标真值只供事后原生判定",
      "poster": "media/robot-vllm-astra-sensing-1201.png",
      "sourceUrl": "https://github.com/nssmd/robot-vllm/tree/58b13f422e8c1b58d606e467152d8d711e1c5b3f",
      "sourceLabel": "查看作者 robot-vllm 项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 1201,
          "seedLabel": "目标布局种子",
          "video": "media/robot-vllm-astra-sensing-1201.mp4",
          "poster": "media/robot-vllm-astra-sensing-1201.png",
          "success": true,
          "outcome": "success",
          "label": "Seed 1201 · 两阶段四色定位",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1202,
          "seedLabel": "目标布局种子",
          "video": "media/robot-vllm-astra-sensing-1202.mp4",
          "poster": "media/robot-vllm-astra-sensing-1202.png",
          "success": true,
          "outcome": "success",
          "label": "Seed 1202 · 两阶段四色定位",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1203,
          "seedLabel": "目标布局种子",
          "video": "media/robot-vllm-astra-sensing-1203.mp4",
          "poster": "media/robot-vllm-astra-sensing-1203.png",
          "success": true,
          "outcome": "success",
          "label": "Seed 1203 · 两阶段四色定位",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "robotvllm",
        "familyTitle": "Robot-vLLM · 看图定位的简化操作",
        "summary": "模型在带坐标网格的图像里找到目标，控制器再把选择变成移动。",
        "technicalRoute": "视觉定位 + 一维任务控制，聚焦从图像识别到动作接口的连接。",
        "modelRole": "Astra 在线选择目标颜色所在的列。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "两个阶段的原生 RGB 与公开编号网格。"
          },
          {
            "label": "决定什么",
            "text": "辨认颜色目标并选择对应列。"
          },
          {
            "label": "如何执行",
            "text": "作者的一维控制器完成对应动作。"
          },
          {
            "label": "如何反馈",
            "text": "目标真值仅用于事后原生判定，不作为模型输入。"
          }
        ],
        "limitation": "简化定位任务不能代表复杂六自由度抓取。",
        "watchFor": "看目标颜色改变时，模型选择的网格列是否相应改变。",
        "result": "模型在带编号网格的图像中定位颜色目标，再由原任务控制器执行对应移动。",
        "model": "gpt-6-astra · 实际 medium",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型在带坐标网格的图像里找到目标，控制器再把选择变成移动。",
      "description": "模型在带坐标网格的图像里找到目标，控制器再把选择变成移动。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "四色视觉定位与一维目标到达"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线选择目标颜色所在的列。"
        },
        {
          "label": "输入信息",
          "value": "仅两阶段原生RGB与公开编号网格；目标真值只供事后原生判定"
        }
      ],
      "notes": [
        "视觉定位 + 一维任务控制，聚焦从图像识别到动作接口的连接。",
        "简化定位任务不能代表复杂六自由度抓取。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "robotvllm",
      "versionLabel": "Astra 看图定位四色目标"
    },
    {
      "id": "quackd-astra-microduck",
      "title": "Astra 小鸭找球与踢球",
      "task": "双足机器人找球与踢球",
      "engine": "MuJoCo",
      "route": "navigation",
      "source": "fresh",
      "model": "gpt-6-astra · 实际 medium",
      "input": "头部RGB＋原生位姿／色块方位距离／技能反馈",
      "poster": "media/quackd-astra-microduck-seed0.png",
      "sourceUrl": "https://github.com/rokbenko/quackd/tree/92224c9f3795e1c770e3c8d5043bb607a11890fb",
      "sourceLabel": "查看 Quackd 原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 0,
          "video": "media/quackd-astra-microduck-seed0.mp4",
          "poster": "media/quackd-astra-microduck-seed0.png",
          "success": true,
          "outcome": "success",
          "label": "seed 0 · 找球并踢球",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "video": "media/quackd-astra-microduck-seed1.mp4",
          "poster": "media/quackd-astra-microduck-seed1.png",
          "success": true,
          "outcome": "success",
          "label": "seed 1 · 找球并踢球",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "quackd",
        "familyTitle": "MicroDuck · 高层 Agent 与步行策略",
        "summary": "模型指挥小型双足机器人找球和球门，已有策略负责行走。",
        "technicalRoute": "视觉高层决策 + 预训练 ONNX 步行策略 + 原生任务交互。",
        "modelRole": "Astra 在线选择方向与交互；低层步行由预训练策略承担。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "头部 RGB、原生位姿、色块方位距离与功能反馈。"
          },
          {
            "label": "决定什么",
            "text": "寻找球与球门，决定行走和踢球时机。"
          },
          {
            "label": "如何执行",
            "text": "步行策略驱动双足；原生踢球脚本给球施加冲量。"
          },
          {
            "label": "如何反馈",
            "text": "新视角和原生完成判定返回。"
          }
        ],
        "limitation": "踢球采用脚本冲量，不是学习到的脚部碰撞踢球，不能据此声称端到端足球技能。",
        "watchFor": "区分自主选择接近方向、策略行走与脚本踢球三个环节。",
        "result": "模型指挥小型双足机器人找球、接近球门并触发原生踢球交互。",
        "model": "gpt-6-astra · 实际 medium",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型指挥小型双足机器人找球和球门，已有策略负责行走。",
      "description": "模型指挥小型双足机器人找球和球门，已有策略负责行走。",
      "cardValue": "2 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "双足机器人找球与踢球"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线选择方向与交互；低层步行由预训练策略承担。"
        },
        {
          "label": "输入信息",
          "value": "头部RGB＋原生位姿／色块方位距离／技能反馈"
        }
      ],
      "notes": [
        "视觉高层决策 + 预训练 ONNX 步行策略 + 原生任务交互。",
        "踢球采用脚本冲量，不是学习到的脚部碰撞踢球，不能据此声称端到端足球技能。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "quackd",
      "versionLabel": "Astra 小鸭找球与踢球"
    },
    {
      "id": "maniloop-astra-arx5",
      "title": "Astra 操作 ARX5：双相机抓放",
      "task": "ARX5 抓取与放置",
      "engine": "MuJoCo",
      "route": "vision",
      "source": "fresh",
      "model": "gpt-6-astra · 实际 medium",
      "input": "外部／腕部RGB＋机器人状态＋相机标定与执行反馈",
      "poster": "media/maniloop-astra-arx5-v2-seed2.png",
      "sourceUrl": "https://github.com/Daniel-rmc/ManiLoop/tree/8de9bcb3198cdbdfc5b137da54d49368a98c3e97",
      "sourceLabel": "查看 ManiLoop 原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 2,
          "video": "media/maniloop-astra-arx5-v2-seed2.mp4",
          "poster": "media/maniloop-astra-arx5-v2-seed2.png",
          "success": true,
          "outcome": "success",
          "label": "seed 2 · 原生抓放完成",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "maniloop",
        "familyTitle": "ManiLoop · 多视角机械臂 Agent",
        "summary": "用外部和腕部相机观察，模型逐步发出移动、夹爪与等待指令。",
        "technicalRoute": "多视角视觉语言 Agent + 原生机器人控制与独立任务判定。",
        "modelRole": "Astra 在线选择动作，底层由机器人原有接口执行。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "外部与腕部 RGB、机器人状态、相机标定和执行反馈。"
          },
          {
            "label": "决定什么",
            "text": "下一步末端目标、夹爪、等待或结束。"
          },
          {
            "label": "如何执行",
            "text": "ARX5 使用原生 IK 控制；Panda 开门任务使用 robosuite OSC_POSE 位姿控制。"
          },
          {
            "label": "如何反馈",
            "text": "新观察返回模型，独立判定器检查目标。"
          }
        ],
        "limitation": "使用双相机、机器人状态与标定；底层为 ARX5 原生 IK 控制接口。",
        "watchFor": "看腕部相机如何帮助修正接近位置，以及动作反馈是否导致重新计划。",
        "result": "结合外部与腕部相机观察，模型控制 ARX5 完成抓取操作。",
        "model": "gpt-6-astra · 实际 medium",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "用外部和腕部相机观察，模型逐步发出移动、夹爪与等待指令。",
      "description": "用外部和腕部相机观察，模型逐步发出移动、夹爪与等待指令。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "ARX5 抓取与放置"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线选择动作，底层由机器人原有接口执行。"
        },
        {
          "label": "输入信息",
          "value": "外部／腕部RGB＋机器人状态＋相机标定与执行反馈"
        }
      ],
      "notes": [
        "多视角视觉语言 Agent + 原生机器人控制与独立任务判定。",
        "使用双相机、机器人状态与标定；底层为 ARX5 原生 IK 控制接口。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "maniloop",
      "versionLabel": "Astra 操作 ARX5：双相机抓放"
    },
    {
      "id": "robo-spider-astra-clearance",
      "title": "Astra 修正路径：六足双臂搬运",
      "task": "双臂跨桌搬运",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "Astra生成代码 → 固定控制器",
      "input": "运行时仿真状态真值；不是图像策略",
      "poster": "media/robo-spider-astra-clearance.png",
      "sourceUrl": "https://github.com/dimentary/llm-robotics-playground/tree/5ffdf5803636efa99f1184bb8481ce7cb85908b6/experiments/robo-spider",
      "sourceLabel": "查看原项目",
      "originalTrialMax": 1,
      "trials": [
        {
          "video": "media/robo-spider-astra-clearance.mp4",
          "poster": "media/robo-spider-astra-clearance.png",
          "success": true,
          "outcome": "success",
          "label": "同一初态 · repeat00代表轨迹",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "spider",
        "familyTitle": "Robo-Spider · 高层决策与步态",
        "summary": "将移动或搬运目标拆成高层指令，再交给已有步态与机械臂控制器。",
        "technicalRoute": "分层控制：上层负责去哪里、何时操作，下层负责步态和执行。",
        "modelRole": "Astra 离线修改路径代码；运行时为固定控制器。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "机器人状态真值和任务目标。"
          },
          {
            "label": "决定什么",
            "text": "选择移动方向、距离或操作路径。"
          },
          {
            "label": "如何执行",
            "text": "原有步态和关节控制器在接触与摩擦作用下执行。"
          },
          {
            "label": "如何反馈",
            "text": "读取新状态并检查到达、搬运与碰撞条件。"
          }
        ],
        "limitation": "读取真值状态；固定代码版本运行时不调用语言模型。",
        "watchFor": "对比导航时的转向与停止，以及搬运前增加绕行点后碰撞如何变化。",
        "result": "加入抓取前的绕行点后，固定控制程序完成双臂搬运，并通过严格路径检查。",
        "model": "Astra生成代码 → 固定控制器",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "将移动或搬运目标拆成高层指令，再交给已有步态与机械臂控制器。",
      "description": "将移动或搬运目标拆成高层指令，再交给已有步态与机械臂控制器。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "双臂跨桌搬运"
        },
        {
          "label": "运行方式",
          "value": "Astra 离线修改路径代码；运行时为固定控制器。"
        },
        {
          "label": "输入信息",
          "value": "运行时仿真状态真值；不是图像策略"
        }
      ],
      "notes": [
        "分层控制：上层负责去哪里、何时操作，下层负责步态和执行。",
        "读取真值状态；固定代码版本运行时不调用语言模型。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "spider",
      "versionLabel": "生成代码与双臂搬运"
    },
    {
      "id": "artifactarena-razorwake",
      "title": "Astra 设计机器人：把对手推出擂台",
      "task": "机器人擂台资格测试",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "官方 GPT-6 Astra 生成作品 → 固定控制器",
      "input": "控制器读取仿真观测；运行时无模型调用",
      "poster": "media/artifactarena-razorwake-s0.png",
      "sourceUrl": "https://artifactarena.ai/bots?left=gpt-6-astra__autoresearch__r01_c003",
      "sourceLabel": "官方作品与来源",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 0,
          "video": "media/artifactarena-razorwake-s0.mp4",
          "poster": "media/artifactarena-razorwake-s0.png",
          "success": true,
          "outcome": "success",
          "label": "初始状态 0 · 4.20 秒获胜",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "video": "media/artifactarena-razorwake-s1.mp4",
          "poster": "media/artifactarena-razorwake-s1.png",
          "success": true,
          "outcome": "success",
          "label": "初始状态 1 · 3.82 秒获胜",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "video": "media/artifactarena-razorwake-s2.mp4",
          "poster": "media/artifactarena-razorwake-s2.png",
          "success": true,
          "outcome": "success",
          "label": "初始状态 2 · 4.04 秒获胜",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "arena",
        "familyTitle": "ArtifactArena · 生成机器人设计与控制",
        "summary": "模型先生成机器人结构和控制代码，再把冻结的设计放进物理竞技场测试。",
        "technicalRoute": "具身设计生成：机器人形态与控制程序共同构成产物，运行时直接执行产物。",
        "modelRole": "Astra 参与此前的设计生成；本机复现没有在线大模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "固定控制器读取原生观察。"
          },
          {
            "label": "决定什么",
            "text": "已生成的程序根据观察输出机器人动作。"
          },
          {
            "label": "如何执行",
            "text": "MuJoCo 中的自定义机器人靠接触把对手推出场地。"
          },
          {
            "label": "如何反馈",
            "text": "原生比赛判定与轨迹记录胜负。"
          }
        ],
        "limitation": "当前对手是静态方块，不是智能竞争对手；结果不代表对抗强策略的水平。",
        "watchFor": "看机器人形态、接触位置与控制方式如何共同产生推力。",
        "result": "模型事先生成的 Razorwake 机器人设计与固定控制程序，通过接触将静态方块推出擂台。",
        "model": "官方 GPT-6 Astra 生成作品 → 固定控制器",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型先生成机器人结构和控制代码，再把冻结的设计放进物理竞技场测试。",
      "description": "模型先生成机器人结构和控制代码，再把冻结的设计放进物理竞技场测试。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "机器人擂台资格测试"
        },
        {
          "label": "运行方式",
          "value": "Astra 参与此前的设计生成；本机复现没有在线大模型调用。"
        },
        {
          "label": "输入信息",
          "value": "控制器读取仿真观测；运行时无模型调用"
        }
      ],
      "notes": [
        "具身设计生成：机器人形态与控制程序共同构成产物，运行时直接执行产物。",
        "当前对手是静态方块，不是智能竞争对手；结果不代表对抗强策略的水平。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "arena",
      "versionLabel": "Razorwake 机器人设计"
    },
    {
      "id": "artifactarena-crosscurrent",
      "title": "Astra Design Lab：Crosscurrent 擂台测试",
      "task": "机器人擂台资格测试",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "authored",
      "model": "官方 GPT-6 Astra 生成作品 → 固定控制器",
      "input": "控制器读取仿真观测；运行时无模型调用",
      "poster": "media/artifactarena-crosscurrent-s0.png",
      "sourceUrl": "https://artifactarena.ai/bots?left=gpt-6-astra__open-ended__r03_c002",
      "sourceLabel": "官方作品与来源",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 0,
          "video": "media/artifactarena-crosscurrent-s0.mp4",
          "poster": "media/artifactarena-crosscurrent-s0.png",
          "success": true,
          "outcome": "success",
          "label": "初始状态 0 · 4.51 秒获胜",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "video": "media/artifactarena-crosscurrent-s1.mp4",
          "poster": "media/artifactarena-crosscurrent-s1.png",
          "success": true,
          "outcome": "success",
          "label": "初始状态 1 · 5.02 秒获胜",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "video": "media/artifactarena-crosscurrent-s2.mp4",
          "poster": "media/artifactarena-crosscurrent-s2.png",
          "success": true,
          "outcome": "success",
          "label": "初始状态 2 · 4.90 秒获胜",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "arena",
        "familyTitle": "ArtifactArena · 生成机器人设计与控制",
        "summary": "模型先生成机器人结构和控制代码，再把冻结的设计放进物理竞技场测试。",
        "technicalRoute": "具身设计生成：机器人形态与控制程序共同构成产物，运行时直接执行产物。",
        "modelRole": "Astra 参与此前的设计生成；本机复现没有在线大模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "固定控制器读取原生观察。"
          },
          {
            "label": "决定什么",
            "text": "已生成的程序根据观察输出机器人动作。"
          },
          {
            "label": "如何执行",
            "text": "MuJoCo 中的自定义机器人靠接触把对手推出场地。"
          },
          {
            "label": "如何反馈",
            "text": "原生比赛判定与轨迹记录胜负。"
          }
        ],
        "limitation": "当前对手是静态方块，不是智能竞争对手；结果不代表对抗强策略的水平。",
        "watchFor": "看机器人形态、接触位置与控制方式如何共同产生推力。",
        "result": "Crosscurrent 的机器人形态与固定控制程序在物理仿真中协作，将静态方块推出场地。",
        "model": "官方 GPT-6 Astra 生成作品 → 固定控制器",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型先生成机器人结构和控制代码，再把冻结的设计放进物理竞技场测试。",
      "description": "模型先生成机器人结构和控制代码，再把冻结的设计放进物理竞技场测试。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "机器人擂台资格测试"
        },
        {
          "label": "运行方式",
          "value": "Astra 参与此前的设计生成；本机复现没有在线大模型调用。"
        },
        {
          "label": "输入信息",
          "value": "控制器读取仿真观测；运行时无模型调用"
        }
      ],
      "notes": [
        "具身设计生成：机器人形态与控制程序共同构成产物，运行时直接执行产物。",
        "当前对手是静态方块，不是智能竞争对手；结果不代表对抗强策略的水平。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "arena",
      "versionLabel": "Crosscurrent 机器人设计"
    },
    {
      "id": "worldcoder-luna-learning",
      "title": "WorldCoder · Luna 学规则，再换地图",
      "task": "规则学习与冻结迁移",
      "engine": "MiniGrid",
      "route": "world_model",
      "source": "fresh",
      "model": "gpt-6-luna",
      "input": "完整结构化状态 · 任务文字",
      "poster": "media/worldcoder-luna-learning-00.png",
      "sourceUrl": "https://github.com/haotang1995/WorldCoder",
      "sourceLabel": "查看 WorldCoder 原项目",
      "originalTrialMax": 4,
      "trials": [
        {
          "seed": 0,
          "steps": 18,
          "video": "media/worldcoder-luna-learning-00.mp4",
          "poster": "media/worldcoder-luna-learning-00.png",
          "success": true,
          "outcome": "success",
          "label": "学习 · Empty-5x5 · Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 0,
          "steps": 29,
          "video": "media/worldcoder-luna-learning-01.mp4",
          "poster": "media/worldcoder-luna-learning-01.png",
          "success": true,
          "outcome": "success",
          "label": "学习 · DoorKey-5x5 · Seed 0",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "steps": 7,
          "video": "media/worldcoder-luna-learning-02.mp4",
          "poster": "media/worldcoder-luna-learning-02.png",
          "success": true,
          "outcome": "success",
          "label": "冻结迁移 · DoorKey-5x5 · Seed 1",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "steps": 13,
          "video": "media/worldcoder-luna-learning-03.mp4",
          "poster": "media/worldcoder-luna-learning-03.png",
          "success": true,
          "outcome": "success",
          "label": "冻结迁移 · DoorKey-5x5 · Seed 2",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "worldcoder",
        "familyTitle": "WorldCoder · 学习可执行世界模型",
        "summary": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
        "technicalRoute": "代码形式的世界模型 + 蒙特卡洛树搜索（MCTS）+ 反例驱动修订；属于抽象环境方法参考。",
        "modelRole": "学习阶段调用语言模型生成或修改转移、奖励函数；冻结测试只运行规则与规划。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "完整结构化环境状态与任务描述。"
          },
          {
            "label": "决定什么",
            "text": "语言模型写世界规则；MCTS 在规则内搜索下一步动作。"
          },
          {
            "label": "如何执行",
            "text": "网格环境执行动作，返回真实下一状态。"
          },
          {
            "label": "如何反馈",
            "text": "预测与实际不符时形成反例；学习阶段可改代码，冻结阶段只重新规划。"
          }
        ],
        "limitation": "不是机械臂物理操作或视觉感知；学习成功、规则诊断通过和冻结迁移须分开阅读。",
        "watchFor": "先看规则代码如何修订，再看换地图后是否仍需新模型调用。",
        "result": "Luna 把环境规则写成程序，根据交互反馈修订，再将冻结的规则用于新地图规划。",
        "model": "gpt-6-luna",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
      "description": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
      "cardValue": "4 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "规则学习与冻结迁移"
        },
        {
          "label": "运行方式",
          "value": "学习阶段调用语言模型生成或修改转移、奖励函数；冻结测试只运行规则与规划。"
        },
        {
          "label": "输入信息",
          "value": "完整结构化状态 · 任务文字"
        }
      ],
      "notes": [
        "代码形式的世界模型 + 蒙特卡洛树搜索（MCTS）+ 反例驱动修订；属于抽象环境方法参考。",
        "不是机械臂物理操作或视觉感知；学习成功、规则诊断通过和冻结迁移须分开阅读。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "stages": [
          {
            "title": "规则 v000",
            "description": "10步随机探索后，生成左右转、前进和墙壁阻挡规则，再用这些规则规划。",
            "trialIndex": 0,
            "videoSeconds": 5.0,
            "blocks": [
              {
                "label": "生成的状态转移函数",
                "code": "def transition(state, action):\n    \"\"\"\n    Apply an action to the state and return the resulting state.\n    The state is expected to be an iterable of Entity objects.\n    \"\"\"\n    next_state = deepcopy(state)\n    agents = get_entities_by_name(next_state, \"Agent\")\n    if not agents:\n        return next_state\n    agent = agents[0]\n    if action == \"turn left\":\n        dx, dy = agent.direction\n        agent.direction = (dy, -dx)\n    elif action == \"turn right\":\n        dx, dy = agent.direction\n        agent.direction = (-dy, dx)\n    elif action == \"move forward\":\n        dx, dy = agent.direction\n        new_x, new_y = agent.x + dx, agent.y + dy\n        if not get_entities_by_position(\n            next_state, new_x, new_y\n        ) or all(\n            entity.name != \"Wall\"\n            for entity in get_entities_by_position(next_state, new_x, new_y)\n        ):\n            agent.x, agent.y = new_x, new_y\n    # Other actions, including \"toggle\", leave the state unchanged.\n    return next_state"
              }
            ]
          },
          {
            "title": "规则 v001",
            "description": "换到钥匙门任务，新增奖励函数。但它的参数与实际调用不匹配，执行反馈报告了这个接口错误。",
            "trialIndex": 1,
            "videoSeconds": 0.0,
            "blocks": [
              {
                "label": "新任务的奖励函数",
                "code": "def reward_func(mission, state, action, next_state):\n    \"\"\"\n    Args:\n        mission: mission description (accepted for compatibility with the\n                 environment's call signature)\n        state: the state of the environment\n        action: the action taken\n        next_state: the resulting state\n    Returns:\n        (reward, done)\n    \"\"\"\n    agents = get_entities_by_name(next_state, \"Agent\")\n    goals = get_entities_by_name(next_state, \"Goal\")\n    doors = get_entities_by_name(next_state, \"Door\")\n    # The door must be open in the resulting state, indicating it was unlocked\n    # or opened with the key.\n    door_is_open = any(\n        bool(getattr(door, \"is_open\", getattr(door, \"open\", False)))\n        for door in doors\n    )\n    if door_is_open:\n        for agent in agents:\n            for goal in goals:\n                if agent.x == goal.x and agent.y == goal.y:\n                    return 1.0, True\n    return 0.0, False"
              }
            ]
          },
          {
            "title": "规则 v002",
            "description": "接口修复后，官方规划检查仍无法解题。模型结合任务、初始状态和已有知识，补上拾取钥匙、匹配颜色开门等规则。事后用后续12个真实动作复查：旧规则预测对10个，新规则预测对12个；差异在拾取与开门两步。",
            "trialIndex": 1,
            "videoSeconds": 8.5,
            "blocks": [
              {
                "label": "生成的状态转移函数",
                "code": "def transition(state, action):\n    \"\"\"Apply an action and return a new state.\"\"\"\n    next_state = deepcopy(state)\n    agents = get_entities_by_name(next_state, \"Agent\")\n    if not agents:\n        return next_state\n    agent = agents[0]\n    if action == \"turn left\":\n        dx, dy = agent.direction\n        agent.direction = (dy, -dx)\n        return next_state\n    if action == \"turn right\":\n        dx, dy = agent.direction\n        agent.direction = (-dy, dx)\n        return next_state\n    if action == \"move forward\":\n        new_x, new_y = _front_position(agent)\n        blockers = get_entities_by_position(next_state, new_x, new_y)\n        blocked = False\n        for entity in blockers:\n            name = getattr(entity, \"name\", entity.__class__.__name__)\n            if name in (\"Wall\", \"Box\", \"Lava\"):\n                blocked = True\n            elif name == \"Door\" and not _door_is_open(entity):\n                blocked = True\n        if not blocked:\n            agent.x, agent.y = new_x, new_y\n        return next_state\n    if action == \"pick up\":\n        x, y = _front_position(agent)\n        keys = [\n            entity for entity in get_entities_by_position(next_state, x, y)\n            if getattr(entity, \"name\", entity.__class__.__name__) == \"Key\"\n        ]\n        if keys and getattr(agent, \"carrying\", None) is None:\n            key = keys[0]\n            agent.carrying = key\n            next_state.remove(key)\n        return next_state\n    if action == \"drop\":\n        carried = getattr(agent, \"carrying\", None)\n        if carried is not None:\n            x, y = _front_position(agent)\n            if not get_entities_by_position(next_state, x, y):\n                # Preserve the carried object's properties when possible.\n                if isinstance(carried, Entity):\n                    carried.x, carried.y = x, y\n                    next_state.append(carried)\n                agent.carrying = None\n        return next_state\n    if action == \"toggle\":\n        x, y = _front_position(agent)\n        doors = [\n            entity for entity in get_entities_by_position(next_state, x, y)\n            if getattr(entity, \"name\", entity.__class__.__name__) == \"Door\"\n        ]\n        if not doors:\n            return next_state\n        door = doors[0]\n        door_state = str(getattr(door, \"state\", \"\")).lower()\n        if _door_is_open(door):\n            door.state = \"closed\"\n            if hasattr(door, \"is_open\"):\n                door.is_open = False\n            if hasattr(door, \"open\"):\n                door.open = False\n            return next_state\n        locked = door_state == \"locked\" or bool(getattr(door, \"is_locked\", False))\n        if locked:\n            carried = getattr(agent, \"carrying\", None)\n            if _key_color(carried) == getattr(door, \"color\", None):\n                door.state = \"open\"\n                if hasattr(door, \"is_locked\"):\n                    door.is_locked = False\n                if hasattr(door, \"is_open\"):\n                    door.is_open = True\n                if hasattr(door, \"open\"):\n                    door.open = True\n        else:\n            door.state = \"open\"\n            if hasattr(door, \"is_open\"):\n                door.is_open = True\n            if hasattr(door, \"open\"):\n                door.open = True\n        return next_state\n    # \"nothing\" and any unrecognized action leave the state unchanged.\n    return next_state"
              }
            ]
          },
          {
            "title": "冻结后换地图",
            "description": "在 2 张测试地图中复用同一份规则，学习入口与模型调用均已禁用。成功要求原生环境正奖励且终止。",
            "trialIndex": 2,
            "videoSeconds": 0,
            "blocks": []
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "worldcoder",
      "versionLabel": "Luna 学规则与新地图规划"
    },
    {
      "id": "worldcoder-astra-interrupted-a01",
      "title": "WorldCoder · Astra 生成规则并完成规划",
      "task": "规则学习与冻结迁移",
      "engine": "MiniGrid",
      "route": "world_model",
      "source": "fresh",
      "model": "gpt-6-astra",
      "input": "完整结构化状态 · 任务文字",
      "poster": "media/worldcoder-astra-interrupted-a01-00.png",
      "sourceUrl": "https://github.com/haotang1995/WorldCoder",
      "sourceLabel": "查看 WorldCoder 原项目",
      "originalTrialMax": 17,
      "trials": [
        {
          "seed": 0,
          "steps": 16,
          "video": "media/worldcoder-astra-interrupted-a01-00.mp4",
          "poster": "media/worldcoder-astra-interrupted-a01-00.png",
          "success": true,
          "outcome": "success",
          "label": "学习 · Empty-5x5 · Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "worldcoder",
        "familyTitle": "WorldCoder · 学习可执行世界模型",
        "summary": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
        "technicalRoute": "代码形式的世界模型 + 蒙特卡洛树搜索（MCTS）+ 反例驱动修订；属于抽象环境方法参考。",
        "modelRole": "学习阶段调用语言模型生成或修改转移、奖励函数；冻结测试只运行规则与规划。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "完整结构化环境状态与任务描述。"
          },
          {
            "label": "决定什么",
            "text": "语言模型写世界规则；MCTS 在规则内搜索下一步动作。"
          },
          {
            "label": "如何执行",
            "text": "网格环境执行动作，返回真实下一状态。"
          },
          {
            "label": "如何反馈",
            "text": "预测与实际不符时形成反例；学习阶段可改代码，冻结阶段只重新规划。"
          }
        ],
        "limitation": "这里只展示初版规则完成的学习阶段，不声称完整规则学习或后续迁移已经完成。",
        "watchFor": "先看规则代码如何修订，再看换地图后是否仍需新模型调用。",
        "result": "展示 Astra 生成初版移动与奖励规则，并用这些规则完成首个学习阶段任务。该演示只说明这个已完成阶段。",
        "model": "gpt-6-astra",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
      "description": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "规则学习与冻结迁移"
        },
        {
          "label": "运行方式",
          "value": "学习阶段调用语言模型生成或修改转移、奖励函数；冻结测试只运行规则与规划。"
        },
        {
          "label": "输入信息",
          "value": "完整结构化状态 · 任务文字"
        }
      ],
      "notes": [
        "代码形式的世界模型 + 蒙特卡洛树搜索（MCTS）+ 反例驱动修订；属于抽象环境方法参考。",
        "这里只展示初版规则完成的学习阶段，不声称完整规则学习或后续迁移已经完成。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "stages": [
          {
            "title": "规则 v000",
            "description": "首次生成移动与奖励规则。截至此时发起 3 次模型请求。",
            "trialIndex": 0,
            "videoSeconds": 5.0,
            "blocks": [
              {
                "label": "生成的状态转移函数",
                "code": "def transition(state, action):\n    \"\"\"\n    Args:\n        state: A collection of entities in the environment.\n        action: The action to execute.\n    Returns:\n        A new collection of entities representing the next state.\n    \"\"\"\n    # Copy the entities so the input state is not modified.\n    next_state = [\n        type(entity)(entity.x, entity.y, **{\n            key: value\n            for key, value in entity.__dict__.items()\n            if key not in (\"name\", \"x\", \"y\")\n        })\n        for entity in state\n    ]\n    agents = get_entities_by_name(next_state, \"Agent\")\n    if not agents:\n        return next_state\n    agent = agents[0]\n    if action in (\"turn left\", \"turn right\"):\n        dx, dy = agent.direction\n        if action == \"turn left\":\n            # Rotate counterclockwise in the coordinate convention shown.\n            agent.direction = (dy, -dx)\n        else:\n            agent.direction = (-dy, dx)\n    elif action == \"move forward\":\n        dx, dy = agent.direction\n        target_x, target_y = agent.x + dx, agent.y + dy\n        # Move only if the destination is not occupied by a wall.\n        if not get_entities_by_position(\n            next_state, target_x, target_y\n        ) or all(\n            entity.name != \"Wall\"\n            for entity in get_entities_by_position(next_state, target_x, target_y)\n        ):\n            agent.x, agent.y = target_x, target_y\n    # \"toggle\" has no effect in the demonstrated experiences.\n    return next_state"
              }
            ]
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "worldcoder",
      "versionLabel": "Astra 初版规则与规划"
    },
    {
      "id": "see2act-active-view-bin-picking",
      "title": "See2Act · 换个视角，找到藏着的方块",
      "task": "遮挡场景抓取放置",
      "engine": "PyBullet",
      "route": "active_perception",
      "source": "published_policy",
      "model": "See2Act · 作者任务权重",
      "input": "主动选择的虚拟RGB视角 · 任务嵌入",
      "poster": "media/see2act-active-view-bin-picking-200003.png",
      "sourceUrl": "https://github.com/KuanchengWang/See2Act",
      "sourceLabel": "查看 See2Act 原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 200003,
          "steps": 561,
          "stepLabel": "物理步",
          "video": "media/see2act-active-view-bin-picking-200003.mp4",
          "poster": "media/see2act-active-view-bin-picking-200003.png",
          "agentStartSeconds": 10,
          "success": true,
          "outcome": "success",
          "label": "固定地图 Seed 200003 · 录像复跑",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 200005,
          "steps": 589,
          "stepLabel": "物理步",
          "video": "media/see2act-active-view-bin-picking-200005.mp4",
          "poster": "media/see2act-active-view-bin-picking-200005.png",
          "agentStartSeconds": 10,
          "success": true,
          "outcome": "success",
          "label": "固定地图 Seed 200005 · 录像复跑",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 200007,
          "steps": 793,
          "stepLabel": "物理步",
          "video": "media/see2act-active-view-bin-picking-200007.mp4",
          "poster": "media/see2act-active-view-bin-picking-200007.png",
          "agentStartSeconds": 10,
          "success": true,
          "outcome": "success",
          "label": "固定地图 Seed 200007 · 录像复跑",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "see2act",
        "familyTitle": "See2Act · 主动感知与扩散动作",
        "summary": "策略主动选择有用视角，再迭代调整抓取与放置姿态。",
        "technicalRoute": "主动选视角 + 作者发布的扩散策略 + 固定动作执行原语。",
        "modelRole": "预训练策略推理，无 Astra 调用，也没有本机新训练。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "可主动选择的虚拟 RGB 视角与任务嵌入。"
          },
          {
            "label": "决定什么",
            "text": "通过 100 次观察迭代细化抓取、放置位姿。"
          },
          {
            "label": "如何执行",
            "text": "固定运动原语将策略目标变成机器人动作。"
          },
          {
            "label": "如何反馈",
            "text": "原生位置容差判定结果，录制重跑另行核对一致性。"
          }
        ],
        "limitation": "虚拟相机可直接换视角，不包含真实相机可达性规划；成功容差为 XY<5 cm、Z<10 cm，不等于严格网格容纳。",
        "watchFor": "看策略选了哪些视角，以及位姿估计如何随观察变化。",
        "result": "预训练策略主动选择虚拟视角，迭代调整抓取与放置位姿，完成原生位置容差目标。",
        "model": "See2Act · 作者任务权重",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "策略主动选择有用视角，再迭代调整抓取与放置姿态。",
      "description": "策略主动选择有用视角，再迭代调整抓取与放置姿态。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "遮挡场景抓取放置"
        },
        {
          "label": "运行方式",
          "value": "预训练策略推理，无 Astra 调用，也没有本机新训练。"
        },
        {
          "label": "输入信息",
          "value": "主动选择的虚拟RGB视角 · 任务嵌入"
        }
      ],
      "notes": [
        "主动选视角 + 作者发布的扩散策略 + 固定动作执行原语。",
        "虚拟相机可直接换视角，不包含真实相机可达性规划；成功容差为 XY<5 cm、Z<10 cm，不等于严格网格容纳。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "see2act",
      "versionLabel": "See2Act · 换个视角，找到藏着的方块"
    },
    {
      "id": "irosa-astra-speed",
      "title": "IROSA · 只让这一段慢下来",
      "task": "示范技能参数修改",
      "engine": "PyBullet · DIRECT适配",
      "route": "skill_adaptation",
      "source": "fresh",
      "model": "gpt-6-astra + 原生 IROSA KMP",
      "input": "精确坐标与时间 · 原始示范",
      "poster": "media/irosa-astra-speed-speed-1.png",
      "sourceUrl": "https://github.com/DLR-RM/IROSA",
      "sourceLabel": "查看 IROSA 原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "steps": 1748,
          "stepLabel": "物理步（含接近）",
          "calls": 1,
          "video": "media/irosa-astra-speed-speed-1.mp4",
          "poster": "media/irosa-astra-speed-speed-1.png",
          "agentStartSeconds": 1.5,
          "success": null,
          "outcome": "diagnostic",
          "label": "50% 减速 · 0.55–0.72",
          "originalTrialNumber": 1,
          "statusLabel": "技能改写演示"
        },
        {
          "steps": 1534,
          "stepLabel": "物理步（含接近）",
          "calls": 1,
          "video": "media/irosa-astra-speed-speed-2.mp4",
          "poster": "media/irosa-astra-speed-speed-2.png",
          "agentStartSeconds": 1.5,
          "success": null,
          "outcome": "diagnostic",
          "label": "40% 加速 · 0.15–0.35",
          "originalTrialNumber": 2,
          "statusLabel": "技能改写演示"
        },
        {
          "steps": 1980,
          "stepLabel": "物理步（含接近）",
          "calls": 1,
          "video": "media/irosa-astra-speed-speed-3.mp4",
          "poster": "media/irosa-astra-speed-speed-3.png",
          "agentStartSeconds": 1.5,
          "success": null,
          "outcome": "diagnostic",
          "label": "80% 减速 · 0.35–0.65",
          "originalTrialNumber": 3,
          "statusLabel": "技能改写演示"
        }
      ],
      "projectBrief": {
        "familyId": "irosa",
        "familyTitle": "IROSA · 修改已有动作技能",
        "summary": "不从头生成整条轨迹，让模型按要求改变已有示范的速度、途经点或避障形状。",
        "technicalRoute": "语言修改指令 + 核化运动原语（KMP）：用少量约束重塑旧轨迹。",
        "modelRole": "Astra 决定技能修改参数；原生 IROSA KMP 计算轨迹。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "精确坐标、时间与原始示范。"
          },
          {
            "label": "决定什么",
            "text": "选择时长、途经位置或避障约束。"
          },
          {
            "label": "如何执行",
            "text": "KMP 生成修改轨迹，再由机器人跟踪。"
          },
          {
            "label": "如何反馈",
            "text": "参数、路径和接触诊断分别检查。"
          }
        ],
        "limitation": "展示的是技能时间参数修改；不将参数变化当作完整抓放任务成绩。",
        "watchFor": "对照原轨迹与修改轨迹，看变化是否只发生在指定约束处。",
        "result": "模型给出时间约束，IROSA 修改已有技能的局部速度；展示同一路径如何加速或减速。",
        "model": "gpt-6-astra + 原生 IROSA KMP",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "不从头生成整条轨迹，让模型按要求改变已有示范的速度、途经点或避障形状。",
      "description": "不从头生成整条轨迹，让模型按要求改变已有示范的速度、途经点或避障形状。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "示范技能参数修改"
        },
        {
          "label": "运行方式",
          "value": "Astra 决定技能修改参数；原生 IROSA KMP 计算轨迹。"
        },
        {
          "label": "输入信息",
          "value": "精确坐标与时间 · 原始示范"
        }
      ],
      "notes": [
        "语言修改指令 + 核化运动原语（KMP）：用少量约束重塑旧轨迹。",
        "展示的是技能时间参数修改；不将参数变化当作完整抓放任务成绩。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "技能修改指令",
        "syncWithTrial": true,
        "stages": [
          {
            "title": "指令 1",
            "trialIndex": 0,
            "videoSeconds": 14,
            "description": "目标轨迹准则：通过；实际平均跟踪误差 1.88 cm。查看真实调用、数组指标和物理跟踪图。",
            "blocks": [
              {
                "label": "本次输入与实际工具调用",
                "code": "{\n  \"instruction\": \"Make the robot 50% slower only in normalized time [0.55, 0.72]. Keep every spatial trajectory point and all timing outside that range unchanged. Use the repository speed convention: slower 50% means intervals multiplied by 1.5; faster 50% means divided by 1.5.\",\n  \"actual_tools\": [\n    {\n      \"name\": \"SlowDownRobot\",\n      \"arguments\": {\n        \"slow_down_value\": 50,\n        \"adaptation_start\": 0.55,\n        \"adaptation_end\": 0.72\n      }\n    }\n  ]\n}"
              },
              {
                "label": "目标轨迹与真实执行指标",
                "code": "{\n  \"native_parameter_metrics\": {\n    \"finite\": true,\n    \"max_xyz_change_m\": 0.0,\n    \"before_duration_s\": 25.0,\n    \"after_duration_s\": 27.125,\n    \"timing_unchanged\": false,\n    \"normalized_time_unchanged\": true,\n    \"expected_factor\": 1.5,\n    \"interval_max_error_s\": 0.0,\n    \"selected_points\": 85,\n    \"spatial_unchanged\": true\n  },\n  \"physics_metrics\": {\n    \"samples\": 1628,\n    \"min_ee_sphere_sdf_m\": null,\n    \"min_robot_sphere_distance_m\": null,\n    \"obstacle_contact_samples\": 0,\n    \"any_external_contact_samples\": 0,\n    \"min_via_distance_m\": null,\n    \"tracking_error_mean_m\": 0.018813686403191608,\n    \"tracking_error_max_m\": 0.1160922271021822,\n    \"tracking_error_rms_m\": 0.021370489317499748\n  },\n  \"via_scheduled_sample\": null\n}"
              }
            ]
          },
          {
            "title": "指令 2",
            "trialIndex": 1,
            "videoSeconds": 14,
            "description": "目标轨迹准则：通过；实际平均跟踪误差 2.09 cm。查看真实调用、数组指标和物理跟踪图。",
            "blocks": [
              {
                "label": "本次输入与实际工具调用",
                "code": "{\n  \"instruction\": \"Make the robot 40% faster only in normalized time [0.15, 0.35]. Keep every spatial trajectory point and all timing outside that range unchanged. Use the repository speed convention: slower 50% means intervals multiplied by 1.5; faster 50% means divided by 1.5.\",\n  \"actual_tools\": [\n    {\n      \"name\": \"SpeedUpRobot\",\n      \"arguments\": {\n        \"speed_up_value\": 40,\n        \"adaptation_start\": 0.15,\n        \"adaptation_end\": 0.35\n      }\n    }\n  ]\n}"
              },
              {
                "label": "目标轨迹与真实执行指标",
                "code": "{\n  \"native_parameter_metrics\": {\n    \"finite\": true,\n    \"max_xyz_change_m\": 0.0,\n    \"before_duration_s\": 25.0,\n    \"after_duration_s\": 23.57142857142857,\n    \"timing_unchanged\": false,\n    \"normalized_time_unchanged\": true,\n    \"expected_factor\": 0.7142857142857143,\n    \"interval_max_error_s\": 0.0,\n    \"selected_points\": 100,\n    \"spatial_unchanged\": true\n  },\n  \"physics_metrics\": {\n    \"samples\": 1414,\n    \"min_ee_sphere_sdf_m\": null,\n    \"min_robot_sphere_distance_m\": null,\n    \"obstacle_contact_samples\": 0,\n    \"any_external_contact_samples\": 0,\n    \"min_via_distance_m\": null,\n    \"tracking_error_mean_m\": 0.02085162833516815,\n    \"tracking_error_max_m\": 0.1160922271021822,\n    \"tracking_error_rms_m\": 0.023808104282108694\n  },\n  \"via_scheduled_sample\": null\n}"
              }
            ]
          },
          {
            "title": "指令 3",
            "trialIndex": 2,
            "videoSeconds": 14,
            "description": "目标轨迹准则：通过；实际平均跟踪误差 1.67 cm。查看真实调用、数组指标和物理跟踪图。",
            "blocks": [
              {
                "label": "本次输入与实际工具调用",
                "code": "{\n  \"instruction\": \"Make the robot 80% slower only in normalized time [0.35, 0.65]. Keep every spatial trajectory point and all timing outside that range unchanged. Use the repository speed convention: slower 50% means intervals multiplied by 1.5; faster 50% means divided by 1.5.\",\n  \"actual_tools\": [\n    {\n      \"name\": \"SlowDownRobot\",\n      \"arguments\": {\n        \"slow_down_value\": 80,\n        \"adaptation_start\": 0.35,\n        \"adaptation_end\": 0.65\n      }\n    }\n  ]\n}"
              },
              {
                "label": "目标轨迹与真实执行指标",
                "code": "{\n  \"native_parameter_metrics\": {\n    \"finite\": true,\n    \"max_xyz_change_m\": 0.0,\n    \"before_duration_s\": 25.0,\n    \"after_duration_s\": 31.0,\n    \"timing_unchanged\": false,\n    \"normalized_time_unchanged\": true,\n    \"expected_factor\": 1.8,\n    \"interval_max_error_s\": 0.0,\n    \"selected_points\": 150,\n    \"spatial_unchanged\": true\n  },\n  \"physics_metrics\": {\n    \"samples\": 1860,\n    \"min_ee_sphere_sdf_m\": null,\n    \"min_robot_sphere_distance_m\": null,\n    \"obstacle_contact_samples\": 0,\n    \"any_external_contact_samples\": 0,\n    \"min_via_distance_m\": null,\n    \"tracking_error_mean_m\": 0.01674349514897485,\n    \"tracking_error_max_m\": 0.1160922271021822,\n    \"tracking_error_rms_m\": 0.019287369757216864\n  },\n  \"via_scheduled_sample\": null\n}"
              }
            ]
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "irosa",
      "versionLabel": "局部速度改写"
    },
    {
      "id": "irosa-astra-viapoints",
      "title": "IROSA · 让旧动作经过新位置",
      "task": "示范技能参数修改",
      "engine": "PyBullet · DIRECT适配",
      "route": "skill_adaptation",
      "source": "fresh",
      "model": "gpt-6-astra + 原生 IROSA KMP",
      "input": "精确坐标与时间 · 原始示范",
      "poster": "media/irosa-astra-viapoints-via-1.png",
      "sourceUrl": "https://github.com/DLR-RM/IROSA",
      "sourceLabel": "查看 IROSA 原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "steps": 1620,
          "stepLabel": "物理步（含接近）",
          "calls": 1,
          "video": "media/irosa-astra-viapoints-via-1.mp4",
          "poster": "media/irosa-astra-viapoints-via-1.png",
          "agentStartSeconds": 1.5,
          "success": null,
          "outcome": "diagnostic",
          "label": "途经点 1 · t=0.4",
          "originalTrialNumber": 1,
          "statusLabel": "技能改写演示"
        },
        {
          "steps": 1620,
          "stepLabel": "物理步（含接近）",
          "calls": 1,
          "video": "media/irosa-astra-viapoints-via-2.mp4",
          "poster": "media/irosa-astra-viapoints-via-2.png",
          "agentStartSeconds": 1.5,
          "success": null,
          "outcome": "diagnostic",
          "label": "途经点 2 · t=0.5",
          "originalTrialNumber": 2,
          "statusLabel": "技能改写演示"
        },
        {
          "steps": 1620,
          "stepLabel": "物理步（含接近）",
          "calls": 1,
          "video": "media/irosa-astra-viapoints-via-3.mp4",
          "poster": "media/irosa-astra-viapoints-via-3.png",
          "agentStartSeconds": 1.5,
          "success": null,
          "outcome": "diagnostic",
          "label": "途经点 3 · t=0.6",
          "originalTrialNumber": 3,
          "statusLabel": "技能改写演示"
        }
      ],
      "projectBrief": {
        "familyId": "irosa",
        "familyTitle": "IROSA · 修改已有动作技能",
        "summary": "不从头生成整条轨迹，让模型按要求改变已有示范的速度、途经点或避障形状。",
        "technicalRoute": "语言修改指令 + 核化运动原语（KMP）：用少量约束重塑旧轨迹。",
        "modelRole": "Astra 决定技能修改参数；原生 IROSA KMP 计算轨迹。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "精确坐标、时间与原始示范。"
          },
          {
            "label": "决定什么",
            "text": "选择时长、途经位置或避障约束。"
          },
          {
            "label": "如何执行",
            "text": "KMP 生成修改轨迹，再由机器人跟踪。"
          },
          {
            "label": "如何反馈",
            "text": "参数、路径和接触诊断分别检查。"
          }
        ],
        "limitation": "展示的是轨迹目标改写；实际跟踪仍存在偏差，不声称全机械臂无碰撞。",
        "watchFor": "对照原轨迹与修改轨迹，看变化是否只发生在指定约束处。",
        "result": "模型指定途经位置，IROSA 重塑已有轨迹，展示旧技能如何适应新的路径目标。",
        "model": "gpt-6-astra + 原生 IROSA KMP",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "不从头生成整条轨迹，让模型按要求改变已有示范的速度、途经点或避障形状。",
      "description": "不从头生成整条轨迹，让模型按要求改变已有示范的速度、途经点或避障形状。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "示范技能参数修改"
        },
        {
          "label": "运行方式",
          "value": "Astra 决定技能修改参数；原生 IROSA KMP 计算轨迹。"
        },
        {
          "label": "输入信息",
          "value": "精确坐标与时间 · 原始示范"
        }
      ],
      "notes": [
        "语言修改指令 + 核化运动原语（KMP）：用少量约束重塑旧轨迹。",
        "展示的是轨迹目标改写；实际跟踪仍存在偏差，不声称全机械臂无碰撞。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "技能修改指令",
        "syncWithTrial": true,
        "stages": [
          {
            "title": "指令 1",
            "trialIndex": 0,
            "videoSeconds": 14,
            "description": "目标轨迹准则：通过；实际平均跟踪误差 2.04 cm；执行中离途经点最近 4.39 cm，指定时刻误差 5.05 cm。查看真实调用、数组指标和物理跟踪图。",
            "blocks": [
              {
                "label": "本次输入与实际工具调用",
                "code": "{\n  \"instruction\": \"At normalized time 0.4, pass the inspection point [0.52, 0.35, 0.22] metres. Use orientation quaternion wxyz=[0.057, 0.364, -0.93, 0.028] for the constraint. The learned output has seven dimensions [x,y,z,qw,qx,qy,qz]; supply the full pose. Keep the rest of the demonstrated movement as similar as the KMP allows. Do not change timing.\",\n  \"actual_tools\": [\n    {\n      \"name\": \"AddViaPointsAtTime\",\n      \"arguments\": {\n        \"input_values\": [\n          0.4\n        ],\n        \"output_values\": [\n          [\n            0.52,\n            0.35,\n            0.22,\n            0.057,\n            0.364,\n            -0.93,\n            0.028\n          ]\n        ]\n      }\n    }\n  ]\n}"
              },
              {
                "label": "目标轨迹与真实执行指标",
                "code": "{\n  \"native_parameter_metrics\": {\n    \"finite\": true,\n    \"max_xyz_change_m\": 0.11964965394302544,\n    \"before_duration_s\": 25.0,\n    \"after_duration_s\": 25.0,\n    \"timing_unchanged\": true,\n    \"normalized_time_unchanged\": true,\n    \"sample_index\": 200,\n    \"sample_time\": 0.4008016032064128,\n    \"target_error_m\": 0.0031046028476302426,\n    \"baseline_target_error_m\": 0.12185370025345581,\n    \"quaternion_component_error\": 0.002934475283352891\n  },\n  \"physics_metrics\": {\n    \"samples\": 1500,\n    \"min_ee_sphere_sdf_m\": null,\n    \"min_robot_sphere_distance_m\": null,\n    \"obstacle_contact_samples\": 0,\n    \"any_external_contact_samples\": 0,\n    \"min_via_distance_m\": 0.043941334401441205,\n    \"tracking_error_mean_m\": 0.02038986442133536,\n    \"tracking_error_max_m\": 0.11609222719641027,\n    \"tracking_error_rms_m\": 0.023405859613950978\n  },\n  \"via_scheduled_sample\": {\n    \"index\": 200,\n    \"normalized_t\": 0.4008016032064128,\n    \"arrival_sim_time_s\": 11.55,\n    \"target_error_m\": 0.0031046028476302426,\n    \"actual_ee_error_m\": 0.050501957526671304,\n    \"closest_over_whole_formal_trajectory_m\": 0.043941334401441205\n  }\n}"
              }
            ]
          },
          {
            "title": "指令 2",
            "trialIndex": 1,
            "videoSeconds": 14,
            "description": "目标轨迹准则：通过；实际平均跟踪误差 2.12 cm；执行中离途经点最近 7.17 cm，指定时刻误差 8.02 cm。查看真实调用、数组指标和物理跟踪图。",
            "blocks": [
              {
                "label": "本次输入与实际工具调用",
                "code": "{\n  \"instruction\": \"At normalized time 0.5, pass the inspection point [0.6, 0.3, 0.25] metres. Use orientation quaternion wxyz=[0.0, 0.138, -0.981, 0.127] for the constraint. The learned output has seven dimensions [x,y,z,qw,qx,qy,qz]; supply the full pose. Keep the rest of the demonstrated movement as similar as the KMP allows. Do not change timing.\",\n  \"actual_tools\": [\n    {\n      \"name\": \"AddViaPointsAtTime\",\n      \"arguments\": {\n        \"input_values\": [\n          0.5\n        ],\n        \"output_values\": [\n          [\n            0.6,\n            0.3,\n            0.25,\n            0.0,\n            0.138,\n            -0.981,\n            0.127\n          ]\n        ]\n      }\n    }\n  ]\n}"
              },
              {
                "label": "目标轨迹与真实执行指标",
                "code": "{\n  \"native_parameter_metrics\": {\n    \"finite\": true,\n    \"max_xyz_change_m\": 0.2168394771351372,\n    \"before_duration_s\": 25.0,\n    \"after_duration_s\": 25.0,\n    \"timing_unchanged\": true,\n    \"normalized_time_unchanged\": true,\n    \"sample_index\": 250,\n    \"sample_time\": 0.501002004008016,\n    \"target_error_m\": 0.007221727888574073,\n    \"baseline_target_error_m\": 0.22333066134529805,\n    \"quaternion_component_error\": 0.0029108310343036164\n  },\n  \"physics_metrics\": {\n    \"samples\": 1500,\n    \"min_ee_sphere_sdf_m\": null,\n    \"min_robot_sphere_distance_m\": null,\n    \"obstacle_contact_samples\": 0,\n    \"any_external_contact_samples\": 0,\n    \"min_via_distance_m\": 0.07165775249566886,\n    \"tracking_error_mean_m\": 0.02118140121325916,\n    \"tracking_error_max_m\": 0.12357662387141846,\n    \"tracking_error_rms_m\": 0.025504655204619447\n  },\n  \"via_scheduled_sample\": {\n    \"index\": 250,\n    \"normalized_t\": 0.501002004008016,\n    \"arrival_sim_time_s\": 14.049999999999999,\n    \"target_error_m\": 0.007221727888574073,\n    \"actual_ee_error_m\": 0.08023672955636277,\n    \"closest_over_whole_formal_trajectory_m\": 0.07165775249566886\n  }\n}"
              }
            ]
          },
          {
            "title": "指令 3",
            "trialIndex": 2,
            "videoSeconds": 14,
            "description": "目标轨迹准则：通过；实际平均跟踪误差 2.07 cm；执行中离途经点最近 1.18 cm，指定时刻误差 7.20 cm。查看真实调用、数组指标和物理跟踪图。",
            "blocks": [
              {
                "label": "本次输入与实际工具调用",
                "code": "{\n  \"instruction\": \"At normalized time 0.6, pass the inspection point [0.72, -0.01, 0.22] metres. Use orientation quaternion wxyz=[-0.077, -0.004, -0.989, 0.12] for the constraint. The learned output has seven dimensions [x,y,z,qw,qx,qy,qz]; supply the full pose. Keep the rest of the demonstrated movement as similar as the KMP allows. Do not change timing.\",\n  \"actual_tools\": [\n    {\n      \"name\": \"AddViaPointsAtTime\",\n      \"arguments\": {\n        \"input_values\": [\n          0.6\n        ],\n        \"output_values\": [\n          [\n            0.72,\n            -0.01,\n            0.22,\n            -0.077,\n            -0.004,\n            -0.989,\n            0.12\n          ]\n        ]\n      }\n    }\n  ]\n}"
              },
              {
                "label": "目标轨迹与真实执行指标",
                "code": "{\n  \"native_parameter_metrics\": {\n    \"finite\": true,\n    \"max_xyz_change_m\": 0.13502584222093486,\n    \"before_duration_s\": 25.0,\n    \"after_duration_s\": 25.0,\n    \"timing_unchanged\": true,\n    \"normalized_time_unchanged\": true,\n    \"sample_index\": 299,\n    \"sample_time\": 0.5991983967935871,\n    \"target_error_m\": 0.004510187799630535,\n    \"baseline_target_error_m\": 0.13743278711385426,\n    \"quaternion_component_error\": 0.0009080306728100096\n  },\n  \"physics_metrics\": {\n    \"samples\": 1500,\n    \"min_ee_sphere_sdf_m\": null,\n    \"min_robot_sphere_distance_m\": null,\n    \"obstacle_contact_samples\": 0,\n    \"any_external_contact_samples\": 0,\n    \"min_via_distance_m\": 0.011803223907929603,\n    \"tracking_error_mean_m\": 0.02065895508423857,\n    \"tracking_error_max_m\": 0.11609222710600278,\n    \"tracking_error_rms_m\": 0.02427190790352139\n  },\n  \"via_scheduled_sample\": {\n    \"index\": 299,\n    \"normalized_t\": 0.5991983967935871,\n    \"arrival_sim_time_s\": 16.5,\n    \"target_error_m\": 0.004510187799630535,\n    \"actual_ee_error_m\": 0.07204402268459338,\n    \"closest_over_whole_formal_trajectory_m\": 0.011803223907929603\n  }\n}"
              }
            ]
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "irosa",
      "versionLabel": "途经点与路径改写"
    },
    {
      "id": "worldcoder-luna-frozen6x6",
      "title": "WorldCoder · 冻结规则迁移到更大地图",
      "task": "冻结世界模型跨尺寸迁移",
      "engine": "MiniGrid",
      "route": "world_model",
      "source": "authored",
      "model": "Luna 编写的规则 · 本次0调用",
      "input": "完整结构化状态 · 原生MCTS",
      "poster": "media/worldcoder-luna-frozen6x6-seed0.png",
      "sourceUrl": "https://github.com/haotang1995/WorldCoder",
      "sourceLabel": "查看 WorldCoder 原项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 0,
          "steps": 14,
          "video": "media/worldcoder-luna-frozen6x6-seed0.mp4",
          "poster": "media/worldcoder-luna-frozen6x6-seed0.png",
          "success": true,
          "outcome": "success",
          "label": "冻结规则 · DoorKey 6×6 · Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "steps": 22,
          "video": "media/worldcoder-luna-frozen6x6-seed1.mp4",
          "poster": "media/worldcoder-luna-frozen6x6-seed1.png",
          "success": true,
          "outcome": "success",
          "label": "冻结规则 · DoorKey 6×6 · Seed 1",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "steps": 15,
          "video": "media/worldcoder-luna-frozen6x6-seed2.mp4",
          "poster": "media/worldcoder-luna-frozen6x6-seed2.png",
          "success": true,
          "outcome": "success",
          "label": "冻结规则 · DoorKey 6×6 · Seed 2",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "worldcoder",
        "familyTitle": "WorldCoder · 学习可执行世界模型",
        "summary": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
        "technicalRoute": "代码形式的世界模型 + 蒙特卡洛树搜索（MCTS）+ 反例驱动修订；属于抽象环境方法参考。",
        "modelRole": "规则由 Luna 先前生成；本次全部冻结，运行时 0 次语言模型调用。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "完整结构化环境状态与任务描述。"
          },
          {
            "label": "决定什么",
            "text": "语言模型写世界规则；MCTS 在规则内搜索下一步动作。"
          },
          {
            "label": "如何执行",
            "text": "网格环境执行动作，返回真实下一状态。"
          },
          {
            "label": "如何反馈",
            "text": "预测与实际不符时形成反例；学习阶段可改代码，冻结阶段只重新规划。"
          }
        ],
        "limitation": "不是机械臂物理操作或视觉感知；学习成功、规则诊断通过和冻结迁移须分开阅读。",
        "watchFor": "先看规则代码如何修订，再看换地图后是否仍需新模型调用。",
        "result": "无需再次调用语言模型，将同一份冻结规则复用于更大的地图，通过读取真实状态重新规划并到达目标。",
        "model": "Luna 编写的规则 · 本次0调用",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
      "description": "模型把观察到的规则写成程序，规划器用程序推演，再用真实反馈修正规则。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "冻结世界模型跨尺寸迁移"
        },
        {
          "label": "运行方式",
          "value": "规则由 Luna 先前生成；本次全部冻结，运行时 0 次语言模型调用。"
        },
        {
          "label": "输入信息",
          "value": "完整结构化状态 · 原生MCTS"
        }
      ],
      "notes": [
        "代码形式的世界模型 + 蒙特卡洛树搜索（MCTS）+ 反例驱动修订；属于抽象环境方法参考。",
        "不是机械臂物理操作或视觉感知；学习成功、规则诊断通过和冻结迁移须分开阅读。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "冻结迁移与规则反例",
        "stages": [
          {
            "title": "同一份规则换大地图",
            "description": "直接加载此前 v002。3条轨迹前后规则SHA256完全一致；本次新增模型调用为0。",
            "trialIndex": 0,
            "videoSeconds": 0,
            "blocks": []
          },
          {
            "title": "第8步：丢钥匙预测错误",
            "description": "Seed1丢下钥匙后，真实钥匙留在(3,1)，模型预测中却没有它。此时只记录反例，没有修改冻结规则。",
            "trialIndex": 1,
            "videoSeconds": 4,
            "blocks": []
          },
          {
            "title": "第9–10步：钥匙挡住前进",
            "description": "实际机器人还在(2,1)，前方钥匙阻挡前进；模型预测机器人已到(3,1)。两步都来自旧计划，不是随机动作。",
            "trialIndex": 1,
            "videoSeconds": 4.5,
            "blocks": []
          },
          {
            "title": "第15步：重新规划完成",
            "description": "旧计划执行完后，从真实状态产生第二条计划：转向、拿回钥匙、继续前进。22步完成原生目标；规则漏洞仍保留。",
            "trialIndex": 1,
            "videoSeconds": 7,
            "blocks": []
          }
        ]
      },
      "relatedDemos": [
        {
          "id": "worldcoder-luna-learning",
          "label": "查看此前的规则学习与 v000–v002 修订"
        }
      ],
      "projectId": "worldcoder",
      "versionLabel": "冻结规则复用到大地图"
    },
    {
      "id": "tdmpc2-quadruped-native-three",
      "title": "TD-MPC2 · 学习动力学后每步滚动规划",
      "task": "Quadruped Run 四足前向奔跑",
      "engine": "MuJoCo / DeepMind Control Suite",
      "route": "latent_world_model",
      "source": "published_policy",
      "model": "官方5M预训练 TD-MPC2 · 无本地训练",
      "input": "78维原生状态 · 12维动作 · 不使用相机作为策略输入",
      "poster": "media/tdmpc2-quadruped-native-three-seed0.jpg",
      "sourceUrl": "https://github.com/nicklashansen/tdmpc2",
      "sourceLabel": "TD-MPC2 官方项目与源码",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 0,
          "steps": 500,
          "video": "media/tdmpc2-quadruped-native-three-seed0.mp4",
          "poster": "media/tdmpc2-quadruped-native-three-seed0.jpg",
          "success": null,
          "outcome": "completed",
          "label": "Quadruped Run · Seed 0",
          "originalTrialNumber": 1,
          "statusLabel": "连续运动演示"
        },
        {
          "seed": 1,
          "steps": 500,
          "video": "media/tdmpc2-quadruped-native-three-seed1.mp4",
          "poster": "media/tdmpc2-quadruped-native-three-seed1.jpg",
          "success": null,
          "outcome": "completed",
          "label": "Quadruped Run · Seed 1",
          "originalTrialNumber": 2,
          "statusLabel": "连续运动演示"
        },
        {
          "seed": 2,
          "steps": 500,
          "video": "media/tdmpc2-quadruped-native-three-seed2.mp4",
          "poster": "media/tdmpc2-quadruped-native-three-seed2.jpg",
          "success": null,
          "outcome": "completed",
          "label": "Quadruped Run · Seed 2",
          "originalTrialNumber": 3,
          "statusLabel": "连续运动演示"
        }
      ],
      "projectBrief": {
        "familyId": "tdmpc2",
        "familyTitle": "TD-MPC2 · 学习动力学与滚动规划",
        "summary": "用学到的潜在动力学预测未来，在候选动作中反复搜索，每次只执行第一步。",
        "technicalRoute": "预训练世界模型 + 模型预测控制（MPC）：预测、优化、执行、重规划。",
        "modelRole": "官方 5M 参数 TD-MPC2 权重推理，没有语言模型或本机在线学习。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "78 维原生状态。"
          },
          {
            "label": "决定什么",
            "text": "用潜在动力学与价值预测，搜索 512 个候选、6 轮优化、长度 3 的动作序列。"
          },
          {
            "label": "如何执行",
            "text": "只执行序列的首个 12 维动作，由四足机器人物理环境推进。"
          },
          {
            "label": "如何反馈",
            "text": "获取新状态后再次规划，累计原生回报。"
          }
        ],
        "limitation": "策略使用状态输入和官方预训练权重，本机没有重新训练或在线更新模型。",
        "watchFor": "看运动受扰后是否继续稳定，以及滚动规划如何不断更新动作。",
        "result": "四足机器人利用预训练潜在动力学预测与滚动规划完成连续运动，每步执行后重新优化动作。",
        "model": "官方5M预训练 TD-MPC2 · 无本地训练",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "用学到的潜在动力学预测未来，在候选动作中反复搜索，每次只执行第一步。",
      "description": "用学到的潜在动力学预测未来，在候选动作中反复搜索，每次只执行第一步。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "Quadruped Run 四足前向奔跑"
        },
        {
          "label": "运行方式",
          "value": "官方 5M 参数 TD-MPC2 权重推理，没有语言模型或本机在线学习。"
        },
        {
          "label": "输入信息",
          "value": "78维原生状态 · 12维动作 · 不使用相机作为策略输入"
        }
      ],
      "notes": [
        "预训练世界模型 + 模型预测控制（MPC）：预测、优化、执行、重规划。",
        "策略使用状态输入和官方预训练权重，本机没有重新训练或在线更新模型。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "逐条查看实际物理轨迹与规划估值",
        "syncWithTrial": true,
        "stages": [
          {
            "title": "Seed 0 · 实际执行与世界模型估值",
            "trialIndex": 0,
            "videoSeconds": 0,
            "description": "四足机器人在原生物理环境连续运动，每个控制步从新状态重新规划动作。",
            "blocks": []
          },
          {
            "title": "Seed 1 · 实际执行与世界模型估值",
            "trialIndex": 1,
            "videoSeconds": 0,
            "description": "四足机器人在原生物理环境连续运动，每个控制步从新状态重新规划动作。",
            "blocks": []
          },
          {
            "title": "Seed 2 · 实际执行与世界模型估值",
            "trialIndex": 2,
            "videoSeconds": 0,
            "description": "四足机器人在原生物理环境连续运动，每个控制步从新状态重新规划动作。",
            "blocks": []
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "tdmpc2",
      "versionLabel": "TD-MPC2 · 学习动力学后每步滚动规划"
    },
    {
      "id": "mems-visual-memory-libero-three",
      "title": "MemS + Astra · 把图像变成可修正的空间记忆",
      "task": "奶酪盒放到碗上 · 官方 On 判据 · 三个布局",
      "engine": "MuJoCo / LIBERO",
      "route": "spatial_memory",
      "source": "fresh",
      "model": "gpt-6-astra · 独立上下文逐条执行",
      "input": "双RGB + 相机标定 + 机器人状态 + 匿名接触反馈",
      "poster": "media/mems-visual-memory-libero-three-t00.jpg",
      "sourceUrl": "https://github.com/darthjaja6/MemS",
      "sourceLabel": "MemS 上游项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 42,
          "seedLabel": "相同reset种子；不同官方初态行",
          "init": 0,
          "steps": 251,
          "stepLabel": "原生控制步",
          "wallSeconds": 232.86961446799978,
          "video": "media/mems-visual-memory-libero-three-t00.mp4",
          "poster": "media/mems-visual-memory-libero-three-t00.jpg",
          "success": true,
          "outcome": "success",
          "label": "布局 1 · 官方初态行 0",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "相同reset种子；不同官方初态行",
          "init": 1,
          "steps": 252,
          "stepLabel": "原生控制步",
          "wallSeconds": 232.99305583100067,
          "video": "media/mems-visual-memory-libero-three-t01.mp4",
          "poster": "media/mems-visual-memory-libero-three-t01.jpg",
          "success": true,
          "outcome": "success",
          "label": "布局 2 · 官方初态行 1",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "相同reset种子；不同官方初态行",
          "init": 2,
          "steps": 243,
          "stepLabel": "原生控制步",
          "wallSeconds": 261.3597697169971,
          "video": "media/mems-visual-memory-libero-three-t02.mp4",
          "poster": "media/mems-visual-memory-libero-three-t02.jpg",
          "success": true,
          "outcome": "success",
          "label": "布局 3 · 官方初态行 2",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "mems",
        "familyTitle": "MemS · 可更新的视觉空间记忆",
        "summary": "把图像中的对应点变成可查询空间记忆，再用新观察修正记忆并继续抓放。",
        "technicalRoute": "视觉对应点 + 标定几何重建 + 空间记忆 + 在线 Agent 操作。",
        "modelRole": "Astra 在线选择图像对应点、查询记忆并决定动作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "双 RGB、相机标定、机器人状态与接触反馈；Actor 不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "几何工具从选点拟合物体位置写入记忆；模型据此选择末端与夹爪目标。"
          },
          {
            "label": "如何执行",
            "text": "本地 LIBERO 适配层通过原生 OSC 控制器执行。"
          },
          {
            "label": "如何反馈",
            "text": "新图像与接触信息允许更新记忆，再选择下一步动作。"
          }
        ],
        "limitation": "本地适配不是完整上游 IK/RoboDojo 复现；每集清空上下文与记忆。无记忆消融缺失，不能声称因果提升或跨集学习。",
        "watchFor": "看记忆中的坐标何时变化，以及后续动作是否确实使用新位置。",
        "result": "模型从双相机图像建立可查询的空间记忆，结合几何工具完成抓碗放盘。",
        "model": "gpt-6-astra · 独立上下文逐条执行",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "把图像中的对应点变成可查询空间记忆，再用新观察修正记忆并继续抓放。",
      "description": "把图像中的对应点变成可查询空间记忆，再用新观察修正记忆并继续抓放。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "奶酪盒放到碗上 · 官方 On 判据 · 三个布局"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线选择图像对应点、查询记忆并决定动作。"
        },
        {
          "label": "输入信息",
          "value": "双RGB + 相机标定 + 机器人状态 + 匿名接触反馈"
        }
      ],
      "notes": [
        "视觉对应点 + 标定几何重建 + 空间记忆 + 在线 Agent 操作。",
        "本地适配不是完整上游 IK/RoboDojo 复现；每集清空上下文与记忆。无记忆消融缺失，不能声称因果提升或跨集学习。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "选择布局，查看相应图像与记忆",
        "syncWithTrial": true,
        "stages": [
          {
            "title": "布局 1 · 图像约束与记忆更新",
            "trialIndex": 0,
            "videoSeconds": 0,
            "description": "官方初态行0；251控制步、7次动作；图像拟合反馈用于更新记忆。每条轨迹重新建立记忆。 上方为真实RGB与Agent选点，下方为实际拟合反馈和记忆高度记录；预测点不是物体真值。",
            "blocks": []
          },
          {
            "title": "布局 2 · 图像约束与记忆更新",
            "trialIndex": 1,
            "videoSeconds": 0,
            "description": "官方初态行1；252控制步、7次动作；图像拟合反馈用于更新记忆。每条轨迹重新建立记忆。 上方为真实RGB与Agent选点，下方为实际拟合反馈和记忆高度记录；预测点不是物体真值。",
            "blocks": []
          },
          {
            "title": "布局 3 · 图像约束与记忆更新",
            "trialIndex": 2,
            "videoSeconds": 0,
            "description": "官方初态行2；243控制步、7次动作；图像拟合反馈用于更新记忆。每条轨迹重新建立记忆。 上方为真实RGB与Agent选点，下方为实际拟合反馈和记忆高度记录；预测点不是物体真值。",
            "blocks": []
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "mems",
      "versionLabel": "视觉空间记忆与抓放"
    },
    {
      "id": "mems-target-shift-libero-three",
      "title": "MemS + Astra · 目标碗被推走后会怎样",
      "task": "抓取奶酪盒，目标碗在操作中受到一次侧推",
      "engine": "MuJoCo / LIBERO",
      "route": "spatial_memory",
      "source": "fresh",
      "model": "gpt-6-astra · 三个独立上下文",
      "input": "双RGB + 相机标定 + 机器人状态 + 匿名接触",
      "poster": "media/mems-target-shift-libero-three-t00.jpg",
      "sourceUrl": "https://github.com/darthjaja6/MemS",
      "sourceLabel": "MemS 上游项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 42,
          "seedLabel": "相同reset种子；不同官方初态行",
          "init": 0,
          "steps": 345,
          "stepLabel": "原生控制步",
          "wallSeconds": 304.166703365001,
          "video": "media/mems-target-shift-libero-three-t00.mp4",
          "poster": "media/mems-target-shift-libero-three-t00.jpg",
          "success": true,
          "outcome": "success",
          "label": "布局 1 · 目标碗受到侧推",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "相同reset种子；不同官方初态行",
          "init": 1,
          "steps": 358,
          "stepLabel": "原生控制步",
          "wallSeconds": 290.99402245900274,
          "video": "media/mems-target-shift-libero-three-t01.mp4",
          "poster": "media/mems-target-shift-libero-three-t01.jpg",
          "success": true,
          "outcome": "success",
          "label": "布局 2 · 目标碗受到侧推",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 42,
          "seedLabel": "相同reset种子；不同官方初态行",
          "init": 2,
          "steps": 440,
          "stepLabel": "原生控制步",
          "wallSeconds": 319.8755815660006,
          "video": "media/mems-target-shift-libero-three-t02.mp4",
          "poster": "media/mems-target-shift-libero-three-t02.jpg",
          "success": true,
          "outcome": "success",
          "label": "布局 3 · 目标碗受到侧推",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "mems",
        "familyTitle": "MemS · 可更新的视觉空间记忆",
        "summary": "把图像中的对应点变成可查询空间记忆，再用新观察修正记忆并继续抓放。",
        "technicalRoute": "视觉对应点 + 标定几何重建 + 空间记忆 + 在线 Agent 操作。",
        "modelRole": "Astra 在线选择图像对应点、查询记忆并决定动作。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "双 RGB、相机标定、机器人状态与接触反馈；Actor 不读取物体真值。"
          },
          {
            "label": "决定什么",
            "text": "几何工具从选点拟合物体位置写入记忆；模型据此选择末端与夹爪目标。"
          },
          {
            "label": "如何执行",
            "text": "本地 LIBERO 适配层通过原生 OSC 控制器执行。"
          },
          {
            "label": "如何反馈",
            "text": "新图像与接触信息允许更新记忆，再选择下一步动作。"
          }
        ],
        "limitation": "本地适配不是完整上游 IK/RoboDojo 复现；每集清空上下文与记忆。无记忆消融缺失，不能声称因果提升或跨集学习。",
        "watchFor": "看记忆中的坐标何时变化，以及后续动作是否确实使用新位置。",
        "result": "碗被外力推离原位后，模型重新观察、更新记忆坐标，再使用新目标继续完成抓放。",
        "model": "gpt-6-astra · 三个独立上下文",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "把图像中的对应点变成可查询空间记忆，再用新观察修正记忆并继续抓放。",
      "description": "把图像中的对应点变成可查询空间记忆，再用新观察修正记忆并继续抓放。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取奶酪盒，目标碗在操作中受到一次侧推"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线选择图像对应点、查询记忆并决定动作。"
        },
        {
          "label": "输入信息",
          "value": "双RGB + 相机标定 + 机器人状态 + 匿名接触"
        }
      ],
      "notes": [
        "视觉对应点 + 标定几何重建 + 空间记忆 + 在线 Agent 操作。",
        "本地适配不是完整上游 IK/RoboDojo 复现；每集清空上下文与记忆。无记忆消融缺失，不能声称因果提升或跨集学习。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "切换布局查看完整轨迹",
        "syncWithTrial": true,
        "stages": [
          {
            "title": "布局 1 · 旧位置还能用吗",
            "trialIndex": 0,
            "videoSeconds": 0,
            "description": "官方初态行0；345控制步、9次动作；外力完整施加。新图像后的拟合与后续动作另行核验。 仿真核验：碗水平位移7.91厘米。 已观察到重新拟合、沿用同一形状资产并在后续动作采用新的水平目标。 对照扰动前、扰动后的下一次观察，以及终态；下排是腕部相机。",
            "blocks": []
          },
          {
            "title": "布局 2 · 旧位置还能用吗",
            "trialIndex": 1,
            "videoSeconds": 0,
            "description": "官方初态行1；358控制步、9次动作；外力完整施加。新图像后的拟合与后续动作另行核验。 仿真核验：碗水平位移7.91厘米。 已观察到重新拟合、沿用同一形状资产并在后续动作采用新的水平目标。 对照扰动前、扰动后的下一次观察，以及终态；下排是腕部相机。",
            "blocks": []
          },
          {
            "title": "布局 3 · 旧位置还能用吗",
            "trialIndex": 2,
            "videoSeconds": 0,
            "description": "官方初态行2；440控制步、10次动作；外力完整施加。新图像后的拟合与后续动作另行核验。 仿真核验：碗水平位移7.90厘米。 已观察到重新拟合、沿用同一形状资产并在后续动作采用新的水平目标。 对照扰动前、扰动后的下一次观察，以及终态；下排是腕部相机。",
            "blocks": []
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "mems",
      "versionLabel": "目标移动后的记忆更新与恢复",
      "heroMetrics": [
        {
          "label": "感知与表示",
          "value": "视觉空间记忆"
        },
        {
          "label": "变化后的应对",
          "value": "重新定位目标"
        },
        {
          "label": "执行结果",
          "value": "继续完成抓放"
        }
      ],
      "heroNote": "Astra 根据双相机图像与标定更新空间记忆，碗被推离原位后重新定位，并使用新目标继续抓放。"
    },
    {
      "id": "openrua-astra-skill-reuse-local",
      "title": "Astra × OpenRUA：从操作反馈形成可复用方法",
      "task": "Pick the akita black bowl not between the plate and the ramekin and place it on the plate",
      "engine": "LIBERO-PRO / robosuite / MuJoCo · CPU",
      "route": "skill_reuse",
      "source": "fresh",
      "model": "gpt-6-astra",
      "input": "官方 ROS 多视角 RGB-D、标定与机器人状态",
      "poster": "media/openrua-astra-skill-reuse-local-A.jpg",
      "sourceUrl": "https://github.com/terminalworld/OpenRUA",
      "sourceLabel": "OpenRUA 官方源码",
      "originalTrialMax": 3,
      "trials": [
        {
          "init": 0,
          "steps": 689,
          "stepLabel": "原生控制步",
          "wallSeconds": 877.0373242259993,
          "video": "media/openrua-astra-skill-reuse-local-A.mp4",
          "poster": "media/openrua-astra-skill-reuse-local-A.jpg",
          "success": true,
          "outcome": "completed",
          "label": "A · 获取方法",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "init": 1,
          "steps": 709,
          "stepLabel": "原生控制步",
          "wallSeconds": 740.7827814400007,
          "video": "media/openrua-astra-skill-reuse-local-B0.mp4",
          "poster": "media/openrua-astra-skill-reuse-local-B0.jpg",
          "success": true,
          "outcome": "completed",
          "label": "B0 · 空方法目录",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "init": 1,
          "steps": 689,
          "stepLabel": "原生控制步",
          "wallSeconds": 790.7120040599984,
          "video": "media/openrua-astra-skill-reuse-local-B1.mp4",
          "poster": "media/openrua-astra-skill-reuse-local-B1.jpg",
          "success": true,
          "outcome": "completed",
          "label": "B1 · 冻结方法",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "openrua",
        "familyTitle": "OpenRUA · 将一次操作整理成可复用方法",
        "summary": "先完成操作并形成方法，再将冻结的方法提供给新上下文尝试复用。",
        "technicalRoute": "视觉工具 Agent + 方法提炼 + 冻结技能复用，对照空上下文。",
        "modelRole": "Astra 在线操作；方法由 A 阶段形成，合格后冻结交给 B1。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "ROS 多视角 RGB-D、标定与机器人状态。"
          },
          {
            "label": "决定什么",
            "text": "通过代码工具选择动作，并把经验整理为可调用的方法。"
          },
          {
            "label": "如何执行",
            "text": "原生机器人执行接口运行代码并返回结果。"
          },
          {
            "label": "如何反馈",
            "text": "A 为形成方法阶段，B0 使用空上下文，B1 使用冻结方法；分别记录终态。"
          }
        ],
        "limitation": "A 形成文字方法，B0 独立操作，B1 读取冻结笔记；复用时仍须根据当前场景重新测量。",
        "watchFor": "对照 B0 与 B1 的工具调用过程，看复用改变了哪些步骤。",
        "result": "先从操作反馈形成方法，再在新上下文中读取冻结笔记，结合当前图像重新测量并完成抓放。",
        "model": "gpt-6-astra",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "先完成操作并形成方法，再将冻结的方法提供给新上下文尝试复用。",
      "description": "先完成操作并形成方法，再将冻结的方法提供给新上下文尝试复用。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "Pick the akita black bowl not between the plate and the ramekin and place it on the plate"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线操作；方法由 A 阶段形成，合格后冻结交给 B1。"
        },
        {
          "label": "输入信息",
          "value": "官方 ROS 多视角 RGB-D、标定与机器人状态"
        }
      ],
      "notes": [
        "视觉工具 Agent + 方法提炼 + 冻结技能复用，对照空上下文。",
        "A 形成文字方法，B0 独立操作，B1 读取冻结笔记；复用时仍须根据当前场景重新测量。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "learningReport": {
        "title": "从观察到动作：方法如何工作",
        "controlLabel": "实际轨迹",
        "syncWithTrial": true,
        "stages": [
          {
            "title": "A · 获取方法",
            "trialIndex": 0,
            "videoSeconds": 0,
            "description": "终态成功。从真实执行反馈获取方法。 先从当前 RGB-D 和机器人状态定位碗沿，逐段接近、夹住、抬升并调整放置；遇到轨迹跟踪误差后继续修正。结束后把操作经验写成文字笔记，原样冻结供下一次使用。",
            "blocks": []
          },
          {
            "title": "B0 · 空方法目录",
            "trialIndex": 1,
            "videoSeconds": 0,
            "description": "终态成功。独立新对话；与 B1 使用同一官方初态行。 新对话实际读取的是空方法目录。它自行观察并编写操作程序，利用本轮深度投影确定抓取和放置位置；转移出现已确认的跟踪误差后修正，最终成功。这一条没有获得 A 的笔记。",
            "blocks": []
          },
          {
            "title": "B1 · 冻结方法",
            "trialIndex": 2,
            "videoSeconds": 0,
            "description": "终态成功。独立新对话；仅获得 A 的冻结方法。 新对话先完整读取冻结的文字笔记，再用本轮图像重新测量。可以看到先稳定物体后重观测、分段夹碗沿、抬升检查、按当前抓持偏移放置和最终多视角确认。它没有导入旧控制程序或重放旧轨迹；本次成功也不能单独证明笔记带来了收益。",
            "blocks": []
          }
        ]
      },
      "relatedDemos": [],
      "projectId": "openrua",
      "versionLabel": "Astra × OpenRUA：从操作反馈形成可复用方法"
    },
    {
      "id": "astra-elevator-feedback-comparison",
      "title": "Astra · 用不同反馈接口按下按钮",
      "task": "电梯按钮局部接触与视觉确认",
      "engine": "MuJoCo",
      "route": "coding",
      "source": "fresh",
      "model": "gpt-6-astra · 实际 medium",
      "input": "原生相机 RGB＋公开关节状态；提供的技能接口对照",
      "poster": "media/astra-elevator-feedback-comparison/s1-free/b01b400e5b40ef5e/first.png",
      "sourceUrl": "https://github.com/hesd10/astra-robot-sim2real/tree/e324643f03d05656f49bc4fc575759fd46cb9fe0",
      "sourceLabel": "查看作者电梯按钮实验",
      "originalTrialMax": 6,
      "trials": [
        {
          "init": "S1",
          "steps": 4,
          "stepLabel": "次原生运动命令",
          "video": "media/astra-elevator-feedback-comparison/s1-free/9c4abb8471f48215/preview-3x.mp4",
          "poster": "media/astra-elevator-feedback-comparison/s1-free/b01b400e5b40ef5e/first.png",
          "agentStartSeconds": 25.502000000000418,
          "success": true,
          "outcome": "success",
          "label": "S1-FREE",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "init": "S1",
          "steps": 4,
          "stepLabel": "次原生运动命令",
          "video": "media/astra-elevator-feedback-comparison/s1-step/2ac0f1f6a8c6e2e0/preview-3x.mp4",
          "poster": "media/astra-elevator-feedback-comparison/s1-step/b01b400e5b40ef5e/first.png",
          "agentStartSeconds": 23.541666666657722,
          "success": true,
          "outcome": "success",
          "label": "S1-STEP",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "init": "S1",
          "steps": 4,
          "stepLabel": "次原生运动命令",
          "video": "media/astra-elevator-feedback-comparison/s1-loop/9ec6e7ace882a8db/preview-3x.mp4",
          "poster": "media/astra-elevator-feedback-comparison/s1-loop/b01b400e5b40ef5e/first.png",
          "agentStartSeconds": 19.69333333331767,
          "success": true,
          "outcome": "success",
          "label": "S1-LOOP",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "init": "S2",
          "steps": 6,
          "stepLabel": "次原生运动命令",
          "video": "media/astra-elevator-feedback-comparison/s2-step/764d8bc394601fe3/preview-3x.mp4",
          "poster": "media/astra-elevator-feedback-comparison/s2-step/21c563f0482f192a/first.png",
          "agentStartSeconds": 21.04799999998118,
          "success": true,
          "outcome": "success",
          "label": "S2-STEP",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        },
        {
          "init": "S2",
          "steps": 7,
          "stepLabel": "次原生运动命令",
          "video": "media/astra-elevator-feedback-comparison/s2-loop/6e0f3f369459fe74/preview-3x.mp4",
          "poster": "media/astra-elevator-feedback-comparison/s2-loop/21c563f0482f192a/first.png",
          "agentStartSeconds": 21.58599999998172,
          "success": true,
          "outcome": "success",
          "label": "S2-LOOP",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "elevator",
        "familyTitle": "电梯按钮 · 反馈接口如何影响操作",
        "summary": "让同一模型通过不同反馈接口按按钮，观察动作闭环与收尾差异。",
        "technicalRoute": "视觉 Agent 接触操作，对照直接 API、分步反馈和带局部停止规则的接口。",
        "modelRole": "Astra 在线决策；不同接口附带的自动化程度不同。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "原生 RGB 与关节状态，不读取按钮真值。"
          },
          {
            "label": "决定什么",
            "text": "选择接近和按压动作；FREE、STEP、LOOP 允许的工具不同。"
          },
          {
            "label": "如何执行",
            "text": "FREE 直接使用公开控制 API；STEP 脉冲后停止并检查；LOOP 额外使用固定区域红像素停止规则。"
          },
          {
            "label": "如何反馈",
            "text": "新画面、接触与健康检查反馈；分别记录物理成功和程序正常收尾。"
          }
        ],
        "limitation": "接口同时改变了自动化和动作约束，差异不能全部归因于“反馈”一个因素；不是整段乘梯导航。",
        "watchFor": "比较接触按钮后是否及时停止，以及物理成功之后流程能否正常结束。",
        "result": "展示直接操作、分步反馈与循环反馈接口如何帮助模型接近按钮、执行接触并结束操作。",
        "model": "gpt-6-astra · 实际 medium",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "让同一模型通过不同反馈接口按按钮，观察动作闭环与收尾差异。",
      "description": "让同一模型通过不同反馈接口按按钮，观察动作闭环与收尾差异。",
      "cardValue": "5 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "电梯按钮局部接触与视觉确认"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线决策；不同接口附带的自动化程度不同。"
        },
        {
          "label": "输入信息",
          "value": "原生相机 RGB＋公开关节状态；提供的技能接口对照"
        }
      ],
      "notes": [
        "视觉 Agent 接触操作，对照直接 API、分步反馈和带局部停止规则的接口。",
        "接口同时改变了自动化和动作约束，差异不能全部归因于“反馈”一个因素；不是整段乘梯导航。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [
        {
          "id": "astra-experience-free-s1",
          "label": "查看历史 S1 FREE 三次独立尝试"
        }
      ],
      "projectId": "elevator",
      "versionLabel": "多种执行反馈接口"
    },
    {
      "id": "rekep-mujoco-relational-20261027",
      "title": "ReKep · 用关系约束完成抓取与堆叠",
      "task": "抓取抬升、积木堆叠与目标移位",
      "engine": "MuJoCo / robosuite",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra 生成约束 · ReKep 优化器执行",
      "input": "仿真真值关键点 + 关节状态 + 解析桌面距离场",
      "poster": "media/rekep-stack_s2_20261027_005454.jpg",
      "sourceUrl": "https://github.com/huangwl18/ReKep",
      "sourceLabel": "ReKep 官方项目",
      "originalTrialMax": 6,
      "trials": [
        {
          "seed": 2,
          "steps": 339,
          "wallSeconds": 27.61,
          "video": "media/rekep-stack_s2_20261027_005454.mp4",
          "poster": "media/rekep-stack_s2_20261027_005454.jpg",
          "success": true,
          "outcome": "success",
          "label": "将红色积木叠到绿色积木上",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "steps": 327,
          "wallSeconds": 24.57,
          "video": "media/rekep-stack_s3_20261027_005528.mp4",
          "poster": "media/rekep-stack_s3_20261027_005528.jpg",
          "success": true,
          "outcome": "success",
          "label": "换个摆放位置，再完成堆叠",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 1,
          "steps": 241,
          "wallSeconds": 19.85,
          "video": "media/rekep-shift_s1_20261027_005558.mp4",
          "poster": "media/rekep-shift_s1_20261027_005558.jpg",
          "success": true,
          "outcome": "success",
          "label": "目标移位后重新接近与抓取",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "steps": 238,
          "wallSeconds": 23.51,
          "video": "media/rekep-shift_s2_20261027_005631.mp4",
          "poster": "media/rekep-shift_s2_20261027_005631.jpg",
          "success": true,
          "outcome": "success",
          "label": "重新跟踪移位目标并抬升",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "steps": 244,
          "wallSeconds": 19.28,
          "video": "media/rekep-shift_s3_20261027_005715.mp4",
          "poster": "media/rekep-shift_s3_20261027_005715.jpg",
          "success": true,
          "outcome": "success",
          "label": "另一初始布局中的目标移位",
          "originalTrialNumber": 5,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "steps": 223,
          "wallSeconds": 16.67,
          "video": "media/rekep-lift_s3_20261027_005412.mp4",
          "poster": "media/rekep-lift_s3_20261027_005412.jpg",
          "success": true,
          "outcome": "success",
          "label": "关系约束驱动抓取与抬升",
          "originalTrialNumber": 6,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "rekep",
        "familyTitle": "ReKep · 关系关键点约束",
        "summary": "把“接近、抓取、抬升、叠放”写成关键点之间的几何关系，再通过优化求出动作；目标改变时使用新关键点重新求解。",
        "technicalRoute": "语言模型生成关系约束 → ReKep 子目标与路径优化 → MuJoCo IK → Panda 关节位置控制。",
        "modelRole": "Astra 在运行前生成约束，同一组约束在不同布局复用；执行时由优化器与物理控制器闭环运行，没有逐步请求语言模型。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "仿真真值物体中心、机械臂状态，以及解析桌面距离场。"
          },
          {
            "label": "决定什么",
            "text": "优化器选择满足接近、抓取、离桌高度和叠放关系的末端姿态与中间路径。"
          },
          {
            "label": "如何执行",
            "text": "真实 MuJoCo 雅可比 IK 求解关节角，robosuite 关节控制器执行；夹爪靠物理接触抓住物体。"
          },
          {
            "label": "如何反馈",
            "text": "每个阶段重新读取物体关键点；外力移位后重新优化，最终由原生 Lift / Stack 条件验证完成。"
          }
        ],
        "limitation": "这是明确标注的 MuJoCo 适配：未复现原版 OmniGibson / DINO 感知，使用真值关键点。碰撞仅近似桌面与夹爪或抓持物体点云，未提供完整手臂避障；优化预算也作了本地配置。",
        "watchFor": "看红块如何被抬起、松爪后留在绿块上；再看目标移位后，新的关系约束如何让接近位置随之改变。",
        "result": "完成积木抓取、抬升和堆叠；目标被移位后，重新读取关键点、求解约束，再抓取新位置上的方块。",
        "model": "gpt-6-astra 生成约束 · ReKep 优化器执行",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "把“接近、抓取、抬升、叠放”写成关键点之间的几何关系，再通过优化求出动作；目标改变时使用新关键点重新求解。",
      "description": "把“接近、抓取、抬升、叠放”写成关键点之间的几何关系，再通过优化求出动作；目标改变时使用新关键点重新求解。",
      "cardValue": "6 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓取抬升、积木堆叠与目标移位"
        },
        {
          "label": "运行方式",
          "value": "Astra 在运行前生成约束，同一组约束在不同布局复用；执行时由优化器与物理控制器闭环运行，没有逐步请求语言模型。"
        },
        {
          "label": "输入信息",
          "value": "仿真真值关键点 + 关节状态 + 解析桌面距离场"
        }
      ],
      "notes": [
        "语言模型生成关系约束 → ReKep 子目标与路径优化 → MuJoCo IK → Panda 关节位置控制。",
        "这是明确标注的 MuJoCo 适配：未复现原版 OmniGibson / DINO 感知，使用真值关键点。碰撞仅近似桌面与夹爪或抓持物体点云，未提供完整手臂避障；优化预算也作了本地配置。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "rekep",
      "versionLabel": "ReKep · 用关系约束完成抓取与堆叠"
    },
    {
      "id": "rpent-astra-pi05-20261027",
      "title": "RPent · 大模型指挥 VLA 抓取与几何搬运",
      "task": "抓瓶放篮与双色杯配对入位",
      "engine": "MuJoCo / LIBERO-PRO",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求型号）+ π₀.₅ LIBERO SFT",
      "input": "双相机 RGB-D + 标定 + 机械臂状态 + 冻结经验库",
      "poster": "media/rpent-object_swap2_seed3_a01.jpg",
      "sourceUrl": "https://github.com/RLinf/RPent",
      "sourceLabel": "RPent 官方项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 3,
          "taskId": 2,
          "steps": 323,
          "wallSeconds": 183.9,
          "video": "media/rpent-object_swap2_seed3_a01.mp4",
          "poster": "media/rpent-object_swap2_seed3_a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "视觉定位与 VLA 抓瓶放篮",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "taskId": 2,
          "steps": 469,
          "wallSeconds": 311.3,
          "video": "media/rpent-object_swap2_seed2_a01.mp4",
          "poster": "media/rpent-object_swap2_seed2_a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "调整技能提示，恢复抓取并放入篮子",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "taskId": 4,
          "steps": 1924,
          "wallSeconds": 710.0,
          "video": "media/rpent-10_swap4_seed3_a01.mp4",
          "poster": "media/rpent-10_swap4_seed3_a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "双杯配对入位 · 原生成功时末杯仍持握",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "rpent",
        "familyTitle": "RPent · Agent 与 VLA 技能协作",
        "summary": "语言模型组织任务和观察，VLA 负责短时抓取，几何原语负责搬运；抓取停滞时，根据反馈调整提示或接近位姿。",
        "technicalRoute": "Astra 高层 Agent + π₀.₅ LIBERO SFT 抓取技能 + RGB-D 几何工具 + 冻结操作经验。",
        "modelRole": "Astra 在线决定观察位置、技能提示和搬运目标；π₀.₅ 生成短段抓取动作，几何搬运由官方脚本原语和 OSC 控制器执行。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "外部与腕部相机的 RGB-D 图像、标定信息、末端和夹爪状态，以及预先下载的经验库。"
          },
          {
            "label": "决定什么",
            "text": "选择目标、测量位置、调用或调整抓取技能，并根据抓持偏移规划下一段搬运目标。"
          },
          {
            "label": "如何执行",
            "text": "官方 pi0_pick 调用动作策略；move_to、move_pose 和夹爪原语通过原生 OSC 控制器推进 Panda 仿真。"
          },
          {
            "label": "如何反馈",
            "text": "新图像、深度投影、夹爪开度与工具执行结果返回模型；LIBERO-PRO 原生条件判定任务达成。"
          }
        ],
        "limitation": "π₀.₅ 使用 LIBERO SFT 权重；固定版本官方流程关闭视频示范接口，模型加载、CPU 分割和数据记录作了本地适配。双色杯轨迹在末杯仍被夹持时触发原生成功，不声称松爪后双杯稳定放置。",
        "watchFor": "看模型如何在抓取未完成时改写技能提示，以及如何利用腕部图像测量杯子相对夹爪的偏移，再补偿搬运目标。",
        "result": "模型结合图像与深度测量调用 VLA 抓取，把沙拉酱瓶放入篮子；另展示双色杯配对入位，原生成功在末杯松爪前触发。",
        "model": "gpt-6-astra（请求型号）+ π₀.₅ LIBERO SFT",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "语言模型组织任务和观察，VLA 负责短时抓取，几何原语负责搬运；抓取停滞时，根据反馈调整提示或接近位姿。",
      "description": "语言模型组织任务和观察，VLA 负责短时抓取，几何原语负责搬运；抓取停滞时，根据反馈调整提示或接近位姿。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "抓瓶放篮与双色杯配对入位"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线决定观察位置、技能提示和搬运目标；π₀.₅ 生成短段抓取动作，几何搬运由官方脚本原语和 OSC 控制器执行。"
        },
        {
          "label": "输入信息",
          "value": "双相机 RGB-D + 标定 + 机械臂状态 + 冻结经验库"
        }
      ],
      "notes": [
        "Astra 高层 Agent + π₀.₅ LIBERO SFT 抓取技能 + RGB-D 几何工具 + 冻结操作经验。",
        "π₀.₅ 使用 LIBERO SFT 权重；固定版本官方流程关闭视频示范接口，模型加载、CPU 分割和数据记录作了本地适配。双色杯轨迹在末杯仍被夹持时触发原生成功，不声称松爪后双杯稳定放置。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "rpent",
      "versionLabel": "RPent · 大模型指挥 VLA 抓取与几何搬运"
    },
    {
      "id": "rvicl-astra-video-20261027",
      "title": "RV-ICL · 边看示范，边调整机器人操作",
      "task": "双色杯配对、拉开抽屉与抓瓶入篮",
      "engine": "MuJoCo / LIBERO-PRO",
      "route": "planner",
      "source": "fresh",
      "model": "gpt-6-astra（请求型号）+ π₀.₅ LIBERO SFT",
      "input": "分层示范视频与语义索引 + 当前双相机 RGB-D + 标定 + 冻结经验库",
      "poster": "media/rvicl-10_swap4_seed2_a01.jpg",
      "sourceUrl": "https://github.com/BWR-hhh/rvicl",
      "sourceLabel": "RV-ICL 官方项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 2,
          "taskId": 4,
          "steps": 1909,
          "wallSeconds": 663.0,
          "video": "media/rvicl-10_swap4_seed2_a01.mp4",
          "poster": "media/rvicl-10_swap4_seed2_a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "看示范完成双色杯入位 · 末杯仍持握",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "taskId": 0,
          "steps": 548,
          "wallSeconds": 241.6,
          "video": "media/rvicl-goal_swap0_seed3_a01.mp4",
          "poster": "media/rvicl-goal_swap0_seed3_a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "重看接触片段、调整接近并拉开中层抽屉",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 3,
          "taskId": 2,
          "steps": 345,
          "wallSeconds": 185.1,
          "video": "media/rvicl-object_swap2_seed3_a01.mp4",
          "poster": "media/rvicl-object_swap2_seed3_a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "看抓取与搬运片段，抓瓶入篮 · 松爪前终止",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "rvicl",
        "familyTitle": "RV-ICL · 分层视频示范与操作",
        "summary": "模型先看任务全貌，再按需要回看接近、抓取、接触与放置片段；把示范中的方法用于当前布局，并根据执行反馈调整。",
        "technicalRoute": "分层视频上下文检索 + Astra 在线决策 + π₀.₅ 短时技能 + RGB-D 几何控制。模型权重保持冻结，没有本机训练。",
        "modelRole": "Astra 选择何时看示范、看哪个阶段或关键时刻，再决定当前场景的观察、技能提示与末端目标；不是照抄示范轨迹。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "示范总览、阶段地图与局部片段；索引含原示范的物体/区域语义、末端与夹爪状态。当前观察是双相机 RGB-D、标定和机器人状态，另有冻结经验库。"
          },
          {
            "label": "决定什么",
            "text": "先调用 view_task_video 与 view_task_map，再用 view_demo_clip 回看相关动作；从当前深度重新测量目标，选择抓取或接触技能以及后续搬运目标。"
          },
          {
            "label": "如何执行",
            "text": "RPent 的 pi0_pick / pi0_doubled 调用 π₀.₅；move_to、move_pose 与夹爪原语通过原生 OSC 控制器执行 Panda 的物理操作。"
          },
          {
            "label": "如何反馈",
            "text": "每段执行返回当前图像、深度投影和夹爪状态；不合适时回看示范、重测或换接近方式，最终核对 LIBERO-PRO 原生终止标志。"
          }
        ],
        "limitation": "这是带语义和状态注释的示范上下文，不是纯视频端到端策略；π₀.₅ 已经 LIBERO 微调。保留官方任务补丁，并作 CPU 分割、低内存加载与记录器适配。抓瓶与双杯在末物体仍被夹持时触发成功，不能声称松爪后的稳定放置；抽屉演示碰倒了旁边的瓶子。未做隔离视频作用的因果对照，也不声称精确全状态重演。",
        "watchFor": "先看双色杯：模型发现盘子倾斜后抬起重测，并放弃不适用的旧偏移修正；再看抽屉：最初技能方向不对，回看片段并重新接近后拉开中层。",
        "result": "模型按需要回看示范片段，结合当前 RGB-D 测量完成双色杯入位、拉开中层抽屉和抓瓶入篮；抓放演示在末物体松爪前触发原生成功。",
        "model": "gpt-6-astra（请求型号）+ π₀.₅ LIBERO SFT",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型先看任务全貌，再按需要回看接近、抓取、接触与放置片段；把示范中的方法用于当前布局，并根据执行反馈调整。",
      "description": "模型先看任务全貌，再按需要回看接近、抓取、接触与放置片段；把示范中的方法用于当前布局，并根据执行反馈调整。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "双色杯配对、拉开抽屉与抓瓶入篮"
        },
        {
          "label": "运行方式",
          "value": "Astra 选择何时看示范、看哪个阶段或关键时刻，再决定当前场景的观察、技能提示与末端目标；不是照抄示范轨迹。"
        },
        {
          "label": "输入信息",
          "value": "分层示范视频与语义索引 + 当前双相机 RGB-D + 标定 + 冻结经验库"
        }
      ],
      "notes": [
        "分层视频上下文检索 + Astra 在线决策 + π₀.₅ 短时技能 + RGB-D 几何控制。模型权重保持冻结，没有本机训练。",
        "这是带语义和状态注释的示范上下文，不是纯视频端到端策略；π₀.₅ 已经 LIBERO 微调。保留官方任务补丁，并作 CPU 分割、低内存加载与记录器适配。抓瓶与双杯在末物体仍被夹持时触发成功，不能声称松爪后的稳定放置；抽屉演示碰倒了旁边的瓶子。未做隔离视频作用的因果对照，也不声称精确全状态重演。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "rvicl",
      "versionLabel": "RV-ICL · 边看示范，边调整机器人操作"
    },
    {
      "id": "gensim-astra-task-generation-20261027",
      "title": "GenSim · 模型写出任务，机器人搭出台阶",
      "task": "模型生成桌面任务与目标，脚本专家执行抓放",
      "engine": "PyBullet / CLIPort",
      "route": "coding",
      "source": "fresh",
      "model": "gpt-6-astra medium（任务程序生成）",
      "input": "GenSim 任务描述、资产列表、API 提示和参考程序；oracle 使用仿真真值",
      "poster": "media/gensim-staircase-20261027-a01-seed33.jpg",
      "sourceUrl": "https://github.com/liruiw/GenSim",
      "sourceLabel": "GenSim 官方项目",
      "originalTrialMax": 3,
      "trials": [
        {
          "seed": 33,
          "steps": 6,
          "stepLabel": "次 oracle 抓放动作",
          "video": "media/gensim-staircase-20261027-a01-seed33.mp4",
          "poster": "media/gensim-staircase-20261027-a01-seed33.jpg",
          "success": true,
          "outcome": "success",
          "label": "生成彩色台阶任务 · 六次抓放搭成三层",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 11,
          "steps": 10,
          "stepLabel": "次 oracle 抓放动作",
          "video": "media/gensim-staircase-20261027-a01-seed11.mp4",
          "poster": "media/gensim-staircase-20261027-a01-seed11.jpg",
          "success": true,
          "outcome": "success",
          "label": "复用同一份生成程序 · 换一组散落布局",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 22,
          "steps": 15,
          "stepLabel": "次 oracle 抓放动作",
          "video": "media/gensim-staircase-20261027-a01-seed22.mp4",
          "poster": "media/gensim-staircase-20261027-a01-seed22.jpg",
          "success": true,
          "outcome": "success",
          "label": "另一组初始布局 · 调整落点后完成台阶",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "gensim",
        "familyTitle": "GenSim · 生成可执行的机器人任务",
        "summary": "把“搭出彩色台阶”写成物体、目标和 Python 任务程序，再由机器人专家在物理仿真中完成。",
        "technicalRoute": "语言模型生成场景与任务代码 → 官方任务 API 验证 → CLIPort 脚本专家执行 → 核对物理结果。",
        "modelRole": "Astra 负责设计任务和编写程序；机器人动作由官方 oracle 决定。本演示没有策略训练。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "生成阶段读取任务要求、资产清单、API 说明与参考代码；执行阶段由 oracle 读取真值物体状态和目标。"
          },
          {
            "label": "决定什么",
            "text": "先定义六个方块的颜色、尺寸、随机初始布局和六个放置目标，再写出创建场景与登记目标的任务类。"
          },
          {
            "label": "如何执行",
            "text": "模型完成程序后停止决策。CLIPort oracle 选择抓放位姿，UR5 吸盘原语通过 PyBullet 物理推进运动与放置。"
          },
          {
            "label": "如何反馈",
            "text": "官方逐目标奖励检查是否完成，另核对最终方块坐标、层高和完整录像；不同随机布局复用同一份生成程序。"
          }
        ],
        "limitation": "这是模型生成任务的实验，不是模型在线操控或策略泛化成绩。动作依赖脚本专家、真值状态与吸盘约束；SDK 接口、依赖兼容和显式种子作了适配，物理为 240Hz。依次达成的目标存在毫米级后续漂移，不声称所有方块在最后一帧仍精确满足最紧容差。",
        "watchFor": "先看六个散落方块如何搭成红色一层、绿色两层、蓝色三层；切换布局，看同一份生成任务如何再次执行。",
        "result": "模型把台阶要求写成场景与目标程序；官方 oracle 在不同随机布局中完成抓放，搭出一、二、三层彩色台阶。",
        "model": "gpt-6-astra medium（任务程序生成）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "把“搭出彩色台阶”写成物体、目标和 Python 任务程序，再由机器人专家在物理仿真中完成。",
      "description": "把“搭出彩色台阶”写成物体、目标和 Python 任务程序，再由机器人专家在物理仿真中完成。",
      "cardValue": "3 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "模型生成桌面任务与目标，脚本专家执行抓放"
        },
        {
          "label": "运行方式",
          "value": "Astra 负责设计任务和编写程序；机器人动作由官方 oracle 决定。本演示没有策略训练。"
        },
        {
          "label": "输入信息",
          "value": "GenSim 任务描述、资产列表、API 提示和参考程序；oracle 使用仿真真值"
        }
      ],
      "notes": [
        "语言模型生成场景与任务代码 → 官方任务 API 验证 → CLIPort 脚本专家执行 → 核对物理结果。",
        "这是模型生成任务的实验，不是模型在线操控或策略泛化成绩。动作依赖脚本专家、真值状态与吸盘约束；SDK 接口、依赖兼容和显式种子作了适配，物理为 240Hz。依次达成的目标存在毫米级后续漂移，不声称所有方块在最后一帧仍精确满足最紧容差。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "gensim",
      "versionLabel": "GenSim · 模型写出任务，机器人搭出台阶"
    },
    {
      "id": "pyrualean-astra-cells-20261028",
      "title": "PyRUA-Lean · 用代码组织机器人动作",
      "task": "编写 Python 单元，观察反馈并完成桌面操作",
      "engine": "MuJoCo / LIBERO-PRO",
      "route": "coding",
      "source": "fresh",
      "model": "gpt-6-astra medium + π₀.₅ LIBERO SFT",
      "input": "双相机 RGB-D、标定、机器人自身状态；SAM3 分割与工具返回值",
      "poster": "media/pyrualean-object2-seed4-20261028-a01.jpg",
      "sourceUrl": "https://github.com/DAGroup-PKU/PyRUA-Lean",
      "sourceLabel": "PyRUA-Lean 官方项目",
      "originalTrialMax": 4,
      "trials": [
        {
          "seed": 4,
          "taskId": 2,
          "steps": 205,
          "stepLabel": "个原生控制步",
          "wallSeconds": 108.59,
          "video": "media/pyrualean-object2-seed4-20261028-a01.mp4",
          "poster": "media/pyrualean-object2-seed4-20261028-a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "沙拉酱入篮 · 松爪后原生完成",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        },
        {
          "seed": 2,
          "taskId": 7,
          "steps": 395,
          "stepLabel": "个原生控制步",
          "wallSeconds": 223.19,
          "video": "media/pyrualean-spatial7-seed2-20261028-a01.mp4",
          "poster": "media/pyrualean-spatial7-seed2-20261028-a01.jpg",
          "success": true,
          "outcome": "success",
          "label": "抓碗放盘 · 原生终止时夹爪仍在碗边",
          "originalTrialNumber": 2,
          "statusLabel": "任务完成"
        },
        {
          "seed": 4,
          "taskId": 0,
          "steps": 754,
          "stepLabel": "个原生控制步",
          "wallSeconds": 160.7,
          "video": "media/pyrualean-goal0-seed4-20261028-a03.mp4",
          "poster": "media/pyrualean-goal0-seed4-20261028-a03.jpg",
          "success": true,
          "outcome": "success",
          "label": "拉开中层抽屉 · 技能未成后改用几何抓拉",
          "originalTrialNumber": 3,
          "statusLabel": "任务完成"
        },
        {
          "seed": 4,
          "taskId": 7,
          "steps": 70,
          "stepLabel": "个原生控制步",
          "wallSeconds": 35.88,
          "video": "media/pyrualean-goal7-seed4-20261028-a02.mp4",
          "poster": "media/pyrualean-goal7-seed4-20261028-a02.jpg",
          "success": true,
          "outcome": "success",
          "label": "打开炉灶 · 模型选择接触技能",
          "originalTrialNumber": 4,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "pyrualean",
        "familyTitle": "PyRUA-Lean · 在代码单元中操作机器人",
        "summary": "模型把观察、测量、动作和检查写成 Python 单元；单元执行后返回新画面，再决定下一段代码。",
        "technicalRoute": "Astra 在线编写 Python 单元 → 官方沙箱与 robo API → π₀.₅ 技能、几何原语与 MuJoCo 物理 → 图像和原生判定反馈。",
        "modelRole": "Astra 组织代码和局部检查；π₀.₅ LIBERO SFT 生成短段动作，SAM3 按需要分割目标。全部模型权重冻结，没有本机策略训练。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "外部与腕部 RGB-D 图像、相机标定、末端和夹爪状态，以及显式工具查询结果。"
          },
          {
            "label": "决定什么",
            "text": "在一个单元里组合分割、深度投影、技能提示、搬运与条件检查；根据新反馈修改下一段程序。"
          },
          {
            "label": "如何执行",
            "text": "官方 cells 沙箱执行模型写出的代码；pi0_pick / pi0_doubled 调用 VLA，move_to、move_pose 与夹爪原语经原生 OSC 控制器推进 Panda 仿真。"
          },
          {
            "label": "如何反馈",
            "text": "代码输出、工具执行结果与新图像回到模型；最终核对 LIBERO-PRO 原生终止条件和完整录像。"
          }
        ],
        "limitation": "这里运行 LIBERO-PRO MuJoCo 适配，没有复现 RoboDojo 排名，也未使用 Coder 4B。采用 Pi0.5 LIBERO 微调权重、SAM3 CPU 与低峰值加载；每集 30 工具轮次、1200 秒、3000 控制步。首次原生成功即终止，抓放任务可能仍夹持物体；具体末态在演示标签说明。录像为逐控制步的 20fps 回放，不等于模型实时速度，也不声称逐物理步完整状态重演。",
        "watchFor": "看一个 Python 单元如何组合多次动作，再看模型是否根据抓取、位置或接触反馈修改下一段代码；留意末帧夹爪与目标的关系。",
        "result": "模型在线编写 Python 单元，完成抓瓶入篮、抓碗放盘、拉开中层抽屉和打开炉灶；完整录像保留技能尝试、几何抓拉与动作修正，末态限制在标签中说明。",
        "model": "gpt-6-astra medium + π₀.₅ LIBERO SFT",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "模型把观察、测量、动作和检查写成 Python 单元；单元执行后返回新画面，再决定下一段代码。",
      "description": "模型把观察、测量、动作和检查写成 Python 单元；单元执行后返回新画面，再决定下一段代码。",
      "cardValue": "4 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "编写 Python 单元，观察反馈并完成桌面操作"
        },
        {
          "label": "运行方式",
          "value": "Astra 组织代码和局部检查；π₀.₅ LIBERO SFT 生成短段动作，SAM3 按需要分割目标。全部模型权重冻结，没有本机策略训练。"
        },
        {
          "label": "输入信息",
          "value": "双相机 RGB-D、标定、机器人自身状态；SAM3 分割与工具返回值"
        }
      ],
      "notes": [
        "Astra 在线编写 Python 单元 → 官方沙箱与 robo API → π₀.₅ 技能、几何原语与 MuJoCo 物理 → 图像和原生判定反馈。",
        "这里运行 LIBERO-PRO MuJoCo 适配，没有复现 RoboDojo 排名，也未使用 Coder 4B。采用 Pi0.5 LIBERO 微调权重、SAM3 CPU 与低峰值加载；每集 30 工具轮次、1200 秒、3000 控制步。首次原生成功即终止，抓放任务可能仍夹持物体；具体末态在演示标签说明。录像为逐控制步的 20fps 回放，不等于模型实时速度，也不声称逐物理步完整状态重演。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "pyrualean",
      "versionLabel": "PyRUA-Lean · 用代码组织机器人动作"
    },
    {
      "id": "roboicl-panda-memory-lift-20261029",
      "title": "RoboICL · Panda 视觉记忆抓取",
      "task": "看图接近、夹住红色方块并保持抬升",
      "engine": "MuJoCo / robosuite",
      "route": "vision",
      "source": "fresh",
      "model": "gpt-6-astra medium（在线动作决策）",
      "input": "三路 RGB、机器人状态、相机标定、真实历史图像与动作回执",
      "poster": "media/roboicl-panda-lift-dev211-20261029.jpg",
      "sourceUrl": "https://github.com/Mosi-AI/RoboICL",
      "sourceLabel": "RoboICL 官方记忆组件的本地 Panda 适配",
      "originalTrialMax": 1,
      "trials": [
        {
          "seed": 211,
          "steps": 131,
          "stepLabel": "个控制步",
          "calls": 16,
          "video": "media/roboicl-panda-lift-dev211-20261029.mp4",
          "poster": "media/roboicl-panda-lift-dev211-20261029.jpg",
          "success": true,
          "outcome": "success",
          "label": "抓起红色方块并持续夹持 · 零示范开发场景",
          "originalTrialNumber": 1,
          "statusLabel": "任务完成"
        }
      ],
      "projectBrief": {
        "familyId": "roboicl",
        "familyTitle": "RoboICL · 视觉历史与动作记忆",
        "summary": "把真实历史画面和已执行动作留在上下文中，让模型连续接近、抓取并保持红色方块。",
        "technicalRoute": "当前图像与机器人状态 + 官方 LiveTrajectoryMemory 历史 → 冻结语言模型生成短动作序列 → 原生 OSC 控制器 → 新图像与执行回执。",
        "modelRole": "Astra 在线决定归一化位移、转动和夹爪动作；没有预训练 VLA 或脚本专家代替模型求解任务。",
        "controlLoop": [
          {
            "label": "看到什么",
            "text": "外部、前方和腕部三路 RGB、相机标定、末端与夹爪状态；历史中保留真实图像、动作与执行区间，并标明省略的片段。"
          },
          {
            "label": "决定什么",
            "text": "根据画面分段靠近方块、闭合夹爪、向上抬升，再用后续观察确认并持续保持。"
          },
          {
            "label": "如何执行",
            "text": "本地单 Panda 对话端口核对待执行动作，逐步送入 robosuite 原生 OSC 控制器；每步保存实际执行记录与仿真状态。"
          },
          {
            "label": "如何反馈",
            "text": "新图像和执行回执返回模型；原生任务判定仅用于离线验收，未进入模型请求。记录中第 43 步达到抬升条件，并持续到末步。"
          }
        ],
        "limitation": "这是单 Panda 的零示范 DEVELOPMENT 场景，复用原版 LiveTrajectoryMemory，其他对话与传输接口做了本地移植。未实例化原版双臂 Model，尚未加入 TRAIN 示范或验证未见 TEST 迁移。16 次模型调用后按预算正常收尾，共 131 个控制步；132 帧完整录像按 20fps 回放，不含等待模型的墙钟时间。日志覆盖模型输入、最终回答与实际动作，不含 SDK 内部事件。",
        "watchFor": "先看接近过程中的位置修正，再看手指闭合、方块离桌以及最后持续夹持；不要把短片播放速度当作模型实时控制速度。",
        "result": "模型结合当前三路画面与真实动作历史，逐步接近、夹住并抬升红色方块；末步仍保持夹持，完整录像保留全部控制过程。",
        "model": "gpt-6-astra medium（在线动作决策）",
        "displayNote": "本页精选已完成的成果演示，用于探索技术路线与模型能力。",
        "schema": "project-explanation/1"
      },
      "shortDescription": "把真实历史画面和已执行动作留在上下文中，让模型连续接近、抓取并保持红色方块。",
      "description": "把真实历史画面和已执行动作留在上下文中，让模型连续接近、抓取并保持红色方块。",
      "cardValue": "1 段演示",
      "cardLabel": "精选成果回放",
      "metrics": [
        {
          "label": "展示内容",
          "value": "看图接近、夹住红色方块并保持抬升"
        },
        {
          "label": "运行方式",
          "value": "Astra 在线决定归一化位移、转动和夹爪动作；没有预训练 VLA 或脚本专家代替模型求解任务。"
        },
        {
          "label": "输入信息",
          "value": "三路 RGB、机器人状态、相机标定、真实历史图像与动作回执"
        }
      ],
      "notes": [
        "当前图像与机器人状态 + 官方 LiveTrajectoryMemory 历史 → 冻结语言模型生成短动作序列 → 原生 OSC 控制器 → 新图像与执行回执。",
        "这是单 Panda 的零示范 DEVELOPMENT 场景，复用原版 LiveTrajectoryMemory，其他对话与传输接口做了本地移植。未实例化原版双臂 Model，尚未加入 TRAIN 示范或验证未见 TEST 迁移。16 次模型调用后按预算正常收尾，共 131 个控制步；132 帧完整录像按 20fps 回放，不含等待模型的墙钟时间。日志覆盖模型输入、最终回答与实际动作，不含 SDK 内部事件。"
      ],
      "playbackNote": "精选成果录像；播放时间可能省略模型等待，实际输入与执行方式见项目解读。",
      "relatedDemos": [],
      "projectId": "roboicl",
      "versionLabel": "Panda 零示范视觉记忆抓取"
    }
  ],
  "projects": [
    {
      "id": "mems",
      "title": "MemS + Astra · 空间记忆",
      "summary": "从图像建立可更新的空间记忆，完成抓取，并在目标被推走后重新定位、继续操作。",
      "representativeId": "mems-target-shift-libero-three",
      "memberIds": [
        "mems-visual-memory-libero-three",
        "mems-target-shift-libero-three"
      ],
      "demoCount": 6,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/mems-target-shift-libero-three-t00.jpg",
        "video": "media/mems-target-shift-libero-three-t00.mp4",
        "start": 0,
        "alt": "MemS + Astra · 目标碗被推走后会怎样 仿真画面"
      }
    },
    {
      "id": "robomme",
      "title": "RoboMME · 视觉操作记忆",
      "summary": "记住次数、顺序、遮挡换位和示范路径，再依据历史观察完成操作。",
      "representativeId": "robomme-pattern-lock",
      "memberIds": [
        "robomme-pick-count",
        "robomme-video-unmask-swap",
        "robomme-stop-cube",
        "robomme-pattern-lock",
        "robomme-video-place-order"
      ],
      "demoCount": 12,
      "scope": "embodied",
      "previewTrialNumber": 3,
      "preview": {
        "poster": "media/robomme-pattern-lock-test3.png",
        "video": "media/robomme-pattern-lock-test3.mp4",
        "start": 0,
        "alt": "看一遍示范，再用小棒复现路径 仿真画面"
      }
    },
    {
      "id": "openrua",
      "title": "OpenRUA 操作经验",
      "summary": "先完成操作并形成方法，再将冻结的方法提供给新上下文尝试复用。",
      "representativeId": "openrua-astra-skill-reuse-local",
      "memberIds": [
        "openrua-astra-skill-reuse-local"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/openrua-astra-skill-reuse-local-A.jpg",
        "video": "media/openrua-astra-skill-reuse-local-A.mp4",
        "start": 0,
        "alt": "Astra × OpenRUA：从操作反馈形成可复用方法 仿真画面"
      }
    },
    {
      "id": "drone",
      "title": "RoboUse 无人机",
      "summary": "模型选择飞行目标，原生飞行控制器负责稳定无人机。",
      "representativeId": "robouse-astra-drone",
      "memberIds": [
        "robouse-astra-drone"
      ],
      "demoCount": 9,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/robouse-astra-drone-waypoint.png",
        "video": "media/robouse-astra-drone-waypoint.mp4",
        "start": 0,
        "alt": "让 Astra 驾驶无人机完成三个目标 仿真画面"
      }
    },
    {
      "id": "see2act",
      "title": "See2Act 主动感知",
      "summary": "策略主动选择有用视角，再迭代调整抓取与放置姿态。",
      "representativeId": "see2act-active-view-bin-picking",
      "memberIds": [
        "see2act-active-view-bin-picking"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/see2act-active-view-bin-picking-200003.png",
        "video": "media/see2act-active-view-bin-picking-200003.mp4",
        "start": 10,
        "alt": "See2Act · 换个视角，找到藏着的方块 仿真画面"
      }
    },
    {
      "id": "dimos",
      "title": "dimOS + Astra",
      "summary": "语言决策结合 IK 与路径规划，完成抓碗放盘；详情收录初版、完整复演与多场景操作。",
      "representativeId": "dimos-astra-v2",
      "memberIds": [
        "dimos-astra",
        "dimos-astra-v2",
        "dimos-spatial-ten-tasks"
      ],
      "demoCount": 11,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/dimos-astra_v2_i0_s42_20261022_012155.png",
        "video": "media/dimos-astra_v2_i0_s42_20261022_012155.mp4",
        "start": 0,
        "alt": "让抓取过程，可以完整复演 仿真画面"
      }
    },
    {
      "id": "rvicl",
      "title": "RV-ICL · 分层视频示范与操作",
      "summary": "模型先看任务全貌，再按需要回看接近、抓取、接触与放置片段；把示范中的方法用于当前布局，并根据执行反馈调整。",
      "representativeId": "rvicl-astra-video-20261027",
      "memberIds": [
        "rvicl-astra-video-20261027"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/rvicl-10_swap4_seed2_a01.jpg",
        "video": "media/rvicl-10_swap4_seed2_a01.mp4",
        "start": 0,
        "alt": "RV-ICL · 边看示范，边调整机器人操作 仿真画面"
      }
    },
    {
      "id": "roboicl",
      "title": "RoboICL · 视觉历史与动作记忆",
      "summary": "复用官方历史记忆组件，在单 Panda 上看图生成短动作序列，完成抓取与持续抬升；当前展示零示范开发版本。",
      "representativeId": "roboicl-panda-memory-lift-20261029",
      "memberIds": [
        "roboicl-panda-memory-lift-20261029"
      ],
      "demoCount": 1,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/roboicl-panda-lift-dev211-20261029.jpg",
        "video": "media/roboicl-panda-lift-dev211-20261029.mp4",
        "start": 0,
        "alt": "RoboICL · Panda 视觉记忆抓取 仿真画面"
      }
    },
    {
      "id": "rpent",
      "title": "RPent · Agent 与 VLA 技能协作",
      "summary": "语言模型组织任务和观察，VLA 负责短时抓取，几何原语负责搬运；抓取停滞时，根据反馈调整提示或接近位姿。",
      "representativeId": "rpent-astra-pi05-20261027",
      "memberIds": [
        "rpent-astra-pi05-20261027"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/rpent-object_swap2_seed3_a01.jpg",
        "video": "media/rpent-object_swap2_seed3_a01.mp4",
        "start": 0,
        "alt": "RPent · 大模型指挥 VLA 抓取与几何搬运 仿真画面"
      }
    },
    {
      "id": "pyrualean",
      "title": "PyRUA-Lean · 代码单元中的机器人闭环",
      "summary": "模型把观察、测量、动作和检查写成 Python 单元；单元执行后返回新画面，再决定下一段代码。",
      "representativeId": "pyrualean-astra-cells-20261028",
      "memberIds": [
        "pyrualean-astra-cells-20261028"
      ],
      "demoCount": 4,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/pyrualean-object2-seed4-20261028-a01.jpg",
        "video": "media/pyrualean-object2-seed4-20261028-a01.mp4",
        "start": 0,
        "alt": "PyRUA-Lean · 用代码组织机器人动作 仿真画面"
      }
    },
    {
      "id": "rekep",
      "title": "ReKep · 关系关键点约束",
      "summary": "把“接近、抓取、抬升、叠放”写成关键点之间的几何关系，再通过优化求出动作；目标改变时使用新关键点重新求解。",
      "representativeId": "rekep-mujoco-relational-20261027",
      "memberIds": [
        "rekep-mujoco-relational-20261027"
      ],
      "demoCount": 6,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/rekep-stack_s2_20261027_005454.jpg",
        "video": "media/rekep-stack_s2_20261027_005454.mp4",
        "start": 0,
        "alt": "ReKep · 用关系约束完成抓取与堆叠 仿真画面"
      }
    },
    {
      "id": "smolvla",
      "title": "SmolVLA",
      "summary": "图像、语言任务和机器人状态进入微调策略，直接生成一段连续动作。",
      "representativeId": "smolvla-libero",
      "memberIds": [
        "smolvla-libero"
      ],
      "demoCount": 17,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/smolvla-t00-e0.jpg",
        "video": "media/smolvla-t00-e0.mp4",
        "start": 0,
        "alt": "同样抓碗，换十种空间关系 仿真画面"
      }
    },
    {
      "id": "maniloop",
      "title": "ManiLoop 双相机操作",
      "summary": "用外部和腕部相机观察，模型逐步发出移动、夹爪与等待指令。",
      "representativeId": "maniloop-astra-arx5",
      "memberIds": [
        "maniloop-astra-arx5"
      ],
      "demoCount": 1,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/maniloop-astra-arx5-v2-seed2.png",
        "video": "media/maniloop-astra-arx5-v2-seed2.mp4",
        "start": 0,
        "alt": "Astra 操作 ARX5：双相机抓放 仿真画面"
      }
    },
    {
      "id": "irosa",
      "title": "IROSA · 技能改写",
      "summary": "通过语言指定速度或途经点约束，改写已有动作技能，探索示范的可编辑性。",
      "representativeId": "irosa-astra-viapoints",
      "memberIds": [
        "irosa-astra-speed",
        "irosa-astra-viapoints"
      ],
      "demoCount": 6,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/irosa-astra-viapoints-via-1.png",
        "video": "media/irosa-astra-viapoints-via-1.mp4",
        "start": 1.5,
        "alt": "IROSA · 让旧动作经过新位置 仿真画面"
      }
    },
    {
      "id": "tdmpc2",
      "title": "TD-MPC2 潜在动力学",
      "summary": "用学到的潜在动力学预测未来，在候选动作中反复搜索，每次只执行第一步。",
      "representativeId": "tdmpc2-quadruped-native-three",
      "memberIds": [
        "tdmpc2-quadruped-native-three"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/tdmpc2-quadruped-native-three-seed0.jpg",
        "video": "media/tdmpc2-quadruped-native-three-seed0.mp4",
        "start": 0,
        "alt": "TD-MPC2 · 学习动力学后每步滚动规划 仿真画面"
      }
    },
    {
      "id": "cube",
      "title": "灵巧手魔方",
      "summary": "脚本负责拿起魔方，学习策略负责转面与重抓，解法来自已知打乱序列。",
      "representativeId": "dexterous-astra-cube-native",
      "memberIds": [
        "dexterous-astra-cube-native"
      ],
      "demoCount": 2,
      "scope": "embodied",
      "previewTrialNumber": 2,
      "preview": {
        "poster": "media/dexterous-astra-cube-native-learned_seed_5005.png",
        "video": "media/dexterous-astra-cube-native-learned_seed_5005.mp4",
        "start": 0,
        "alt": "用灵巧手，把魔方转回原样 仿真画面"
      }
    },
    {
      "id": "worldcoder",
      "title": "WorldCoder · 可执行世界模型",
      "summary": "把观察到的规则写成程序，根据反馈修订，再将冻结规则复用于新地图。",
      "representativeId": "worldcoder-luna-learning",
      "memberIds": [
        "worldcoder-luna-learning",
        "worldcoder-astra-interrupted-a01",
        "worldcoder-luna-frozen6x6"
      ],
      "demoCount": 8,
      "scope": "reference",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/worldcoder-luna-learning-00.png",
        "video": "media/worldcoder-luna-learning-00.mp4",
        "start": 0,
        "alt": "WorldCoder · Luna 学规则，再换地图 仿真画面"
      }
    },
    {
      "id": "gensim",
      "title": "GenSim · 生成可执行的机器人任务",
      "summary": "把“搭出彩色台阶”写成物体、目标和 Python 任务程序，再由机器人专家在物理仿真中完成。",
      "representativeId": "gensim-astra-task-generation-20261027",
      "memberIds": [
        "gensim-astra-task-generation-20261027"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/gensim-staircase-20261027-a01-seed33.jpg",
        "video": "media/gensim-staircase-20261027-a01-seed33.mp4",
        "start": 0,
        "alt": "GenSim · 模型写出任务，机器人搭出台阶 仿真画面"
      }
    },
    {
      "id": "quackd",
      "title": "MicroDuck 小鸭",
      "summary": "模型指挥小型双足机器人找球和球门，已有策略负责行走。",
      "representativeId": "quackd-astra-microduck",
      "memberIds": [
        "quackd-astra-microduck"
      ],
      "demoCount": 2,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/quackd-astra-microduck-seed0.png",
        "video": "media/quackd-astra-microduck-seed0.mp4",
        "start": 0,
        "alt": "Astra 小鸭找球与踢球 仿真画面"
      }
    },
    {
      "id": "bullet",
      "title": "PyBullet · 视觉机械臂操作",
      "summary": "从图像反馈到抓取与目标到达，观察模型如何逐步组织机械臂动作。",
      "representativeId": "bullet-pick-place-v2",
      "memberIds": [
        "bullet-pick-place",
        "bullet-pick-place-v2",
        "bullet-reach"
      ],
      "demoCount": 15,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/astra_v2_bullet_pick_place_20261022_011147_s0.png",
        "video": "media/astra_v2_bullet_pick_place_20261022_011147_s0.mp4",
        "start": 0,
        "alt": "视觉闭环下的方块抓取 仿真画面"
      }
    },
    {
      "id": "elevator",
      "title": "Astra · 电梯按钮操作",
      "summary": "看图接近并按下按钮，详情展示直接操作与不同反馈接口的完成过程。",
      "representativeId": "astra-experience-free-s1",
      "memberIds": [
        "astra-experience-free-s1",
        "astra-elevator-feedback-comparison"
      ],
      "demoCount": 7,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/astra-experience-free-s1.png",
        "video": "media/astra-experience-free-s1-3x.mp4",
        "start": 0,
        "alt": "Astra 看图按电梯 仿真画面"
      }
    },
    {
      "id": "robotvllm",
      "title": "Robot-vLLM 视觉定位",
      "summary": "模型在带坐标网格的图像里找到目标，控制器再把选择变成移动。",
      "representativeId": "robot-vllm-astra-sensing",
      "memberIds": [
        "robot-vllm-astra-sensing"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/robot-vllm-astra-sensing-1201.png",
        "video": "media/robot-vllm-astra-sensing-1201.mp4",
        "start": 0,
        "alt": "Astra 看图定位四色目标 仿真画面"
      }
    },
    {
      "id": "openarm",
      "title": "OpenArm ACT 绘画",
      "summary": "脚本安排蘸色与画点，训练好的 ACT 策略负责局部关节修正。",
      "representativeId": "openarm-act-mona-lisa",
      "memberIds": [
        "openarm-act-mona-lisa"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/openarm-act-mona-lisa-nominal.png",
        "video": "media/openarm-act-mona-lisa-nominal.mp4",
        "start": 0,
        "alt": "用 384 次落笔，画出蒙娜丽莎 仿真画面"
      }
    },
    {
      "id": "spider",
      "title": "Robo-Spider · 六足双臂机器人",
      "summary": "高层导航与生成代码搬运：同一机器人通过步态、双臂操作与路径修订完成不同目标。",
      "representativeId": "robo-spider-astra-clearance",
      "memberIds": [
        "robo-spider-live",
        "robo-spider-astra-clearance"
      ],
      "demoCount": 4,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/robo-spider-astra-clearance.png",
        "video": "media/robo-spider-astra-clearance.mp4",
        "start": 0,
        "alt": "Astra 修正路径：六足双臂搬运 仿真画面"
      }
    },
    {
      "id": "arena",
      "title": "ArtifactArena · 机器人设计",
      "summary": "模型生成机器人形态与固定控制程序，再在物理擂台上推动静态方块，探索设计与控制的配合。",
      "representativeId": "artifactarena-crosscurrent",
      "memberIds": [
        "artifactarena-razorwake",
        "artifactarena-crosscurrent"
      ],
      "demoCount": 6,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/artifactarena-crosscurrent-s0.png",
        "video": "media/artifactarena-crosscurrent-s0.mp4",
        "start": 0,
        "alt": "Astra Design Lab：Crosscurrent 擂台测试 仿真画面"
      }
    },
    {
      "id": "bigym",
      "title": "BiGym2 人形搬盘",
      "summary": "使用作者发布的固定控制程序，复现人形机器人搬盘子。",
      "representativeId": "bigym2-published-astra-move-plate",
      "memberIds": [
        "bigym2-published-astra-move-plate"
      ],
      "demoCount": 1,
      "scope": "embodied",
      "previewTrialNumber": 3,
      "preview": {
        "poster": "media/bigym2-published-astra-move-plate-seed620002.png",
        "video": "media/bigym2-published-astra-move-plate-seed620002.mp4",
        "start": 0,
        "alt": "G1 人形机器人搬运盘子 仿真画面"
      }
    },
    {
      "id": "writing",
      "title": "Fibonacci 白板书写",
      "summary": "将程序文字拆成笔画，用灵巧手持笔，在物理接触中完成书写。",
      "representativeId": "fibonacci-writing",
      "memberIds": [
        "fibonacci-writing"
      ],
      "demoCount": 1,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/fibonacci-writing.png",
        "video": "media/fibonacci-writing.mp4",
        "start": 0,
        "alt": "把一段程序，写在白板上 仿真画面"
      }
    },
    {
      "id": "drawing",
      "title": "灵巧手几何绘图",
      "summary": "把圆、方形和螺旋变成笔尖路径，由持笔控制器真实画出。",
      "representativeId": "geometric-drawing",
      "memberIds": [
        "geometric-drawing"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 3,
      "preview": {
        "poster": "media/geometric-spiral.png",
        "video": "media/geometric-spiral.mp4",
        "start": 0,
        "alt": "用多指手，画出圆与螺旋 仿真画面"
      }
    },
    {
      "id": "so101",
      "title": "SO101 · 分拣与接触绘画",
      "summary": "从 RGB 几何定位到接触画笔控制，展示 SO101 仿真分拣和绘画两种操作。",
      "representativeId": "so101-painting",
      "memberIds": [
        "so101-block-sorting",
        "so101-painting"
      ],
      "demoCount": 4,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/so101-painting-repeat1.png",
        "video": "media/so101-painting-repeat1.mp4",
        "start": 0,
        "alt": "SO101 用接触画笔绘制巴黎 仿真画面"
      }
    },
    {
      "id": "dexjoco",
      "title": "DexJoCo 锤击",
      "summary": "在复杂接触任务里，对照人类动作复演与看图决策的模型尝试。",
      "representativeId": "dexjoco-hammer-human-oracle",
      "memberIds": [
        "dexjoco-hammer-human-oracle"
      ],
      "demoCount": 1,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/dexjoco-hammer-human-oracle.png",
        "video": "media/dexjoco-hammer-human-oracle.mp4",
        "start": 0,
        "alt": "握住锤子，把钉子敲进去 仿真画面"
      }
    },
    {
      "id": "metaworld",
      "title": "MetaWorld 基线",
      "summary": "用官方脚本展示机械臂到达、推动和抓取放置的动作结构。",
      "representativeId": "metaworld-baselines",
      "memberIds": [
        "metaworld-baselines"
      ],
      "demoCount": 3,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/metaworld-reach-v3-scripted.jpg",
        "video": "media/metaworld-reach-v3-scripted.mp4",
        "start": 0,
        "alt": "官方控制脚本：到达、推动与抓放 仿真画面"
      }
    },
    {
      "id": "lqr",
      "title": "倒立摆 LQR",
      "summary": "控制器根据杆的偏离持续施力，让倒立摆保持直立。",
      "representativeId": "pendulum-lqr",
      "memberIds": [
        "pendulum-lqr"
      ],
      "demoCount": 1,
      "scope": "embodied",
      "previewTrialNumber": 1,
      "preview": {
        "poster": "media/pendulum-lqr.jpg",
        "video": "media/pendulum-lqr.mp4",
        "start": 0,
        "alt": "让一根杆，保持直立 仿真画面"
      }
    }
  ],
  "curation": {
    "mode": "capability_highlights",
    "description": "精选已完成的能力探索演示；页面聚焦做成了什么与采用什么技术路线。"
  }
}
