{
  "version": 1,
  "language": "en",
  "title": "Subtask handoff between two policy levels",
  "description": "A high-level language subtask conditions a separate low-level VLA with current scene and robot state. The two levels receive new observations after action.",
  "caption": "A high-level VLM interprets the instruction and interaction. It supplies a language subtask to a low-level VLA, which also reads the current scene and robot state. Continuous execution gives new observations for the next high-level decision. The author made this explanatory diagram. The playback is an example. Animation time is not measured runtime.",
  "alt": "Hierarchy flow: a VLM supplies a language-subtask proposal. A VLA reads it with the current scene and robot state, acts and returns observations.",
  "sources": [
    {
      "path": "content/blog/2026-05-25_from-pi0-to-pi07-open-pi-series/post.md",
      "description": "Article mechanism and retained citations"
    },
    "https://www.pi.website/research/hirobot"
  ],
  "limitations": [
    "The playback is an example. Playback time is not measured runtime.",
    "This is the separate high-level/low-level Hi-Robot interface. The diagram makes no claim that all π0-family policies use two models.",
    "The trace gives a handoff and an observation update. It is not a recorded robot trial."
  ],
  "targets": {
    "intent": {
      "id": "mechanism-intent",
      "kind": "node",
      "label": "Intent + feedback"
    },
    "vlm": {
      "id": "mechanism-vlm",
      "kind": "node",
      "label": "High-level VLM"
    },
    "subtask": {
      "id": "mechanism-subtask",
      "kind": "node",
      "label": "Language subtask"
    },
    "vla": {
      "id": "mechanism-vla",
      "kind": "node",
      "label": "Low-level VLA"
    },
    "chunk": {
      "id": "mechanism-chunk",
      "kind": "node",
      "label": "Action chunk"
    },
    "robot": {
      "id": "mechanism-robot",
      "kind": "node",
      "label": "Robot + observe"
    },
    "intentVLM": {
      "id": "mechanism-intentVLM",
      "kind": "edge",
      "label": "Interpret instruction and feedback"
    },
    "vlmSubtask": {
      "id": "mechanism-vlmSubtask",
      "kind": "edge",
      "label": "Select language subtask"
    },
    "subtaskVLA": {
      "id": "mechanism-subtaskVLA",
      "kind": "edge",
      "label": "Supply subtask"
    },
    "vlaChunk": {
      "id": "mechanism-vlaChunk",
      "kind": "edge",
      "label": "Generate chunk"
    },
    "chunkRobot": {
      "id": "mechanism-chunkRobot",
      "kind": "edge",
      "label": "Execute commands"
    },
    "observeHigh": {
      "id": "mechanism-observeHigh",
      "kind": "edge",
      "label": "Update high-level observation"
    },
    "observeLow": {
      "id": "mechanism-observeLow",
      "kind": "edge",
      "label": "Update low-level observation"
    }
  },
  "stateLabels": {
    "stage": "Stage",
    "artifact": "Artifact"
  },
  "scenarios": [
    {
      "id": "process",
      "title": "One language-to-action handoff",
      "description": "A language subtask conditions the low-level VLA. The two levels receive new observations after robot action.",
      "initial": {
        "stage": "Prepared",
        "artifact": "Inputs available"
      },
      "unselected": [],
      "steps": [
        {
          "title": "Read instruction and current scene",
          "description": "The two-level system reads the instruction and current scene.",
          "duration": 3000,
          "active": [
            "intent",
            "robot"
          ],
          "paths": [],
          "state": {
            "stage": "Read instruction and current scene",
            "artifact": "Intent and robot observation available"
          }
        },
        {
          "title": "Interpret the next high-level step",
          "description": "The high-level VLM interprets the instruction and feedback.",
          "duration": 3000,
          "active": [
            "vlm"
          ],
          "paths": [
            "intentVLM",
            "observeHigh"
          ],
          "state": {
            "stage": "Interpret the next high-level step",
            "artifact": "High-level context interpreted"
          }
        },
        {
          "title": "Supply a language subtask",
          "description": "The high-level VLM supplies a language subtask.",
          "duration": 3000,
          "active": [
            "subtask"
          ],
          "paths": [
            "vlmSubtask"
          ],
          "state": {
            "stage": "Supply a language subtask",
            "artifact": "Subtask available to the motor policy"
          }
        },
        {
          "title": "Read subtask, scene and robot state",
          "description": "The low-level VLA reads the subtask, current scene and robot state.",
          "duration": 3000,
          "active": [
            "vla"
          ],
          "paths": [
            "subtaskVLA",
            "observeLow"
          ],
          "state": {
            "stage": "Read subtask, scene and robot state",
            "artifact": "Low-level VLA conditions available"
          }
        },
        {
          "title": "Generate continuous commands",
          "description": "The low-level VLA generates a continuous action chunk.",
          "duration": 3000,
          "active": [
            "chunk"
          ],
          "paths": [
            "vlaChunk"
          ],
          "state": {
            "stage": "Generate continuous commands",
            "artifact": "Action chunk generated"
          }
        },
        {
          "title": "Execute and observe again",
          "description": "The robot executes commands and gives new observations.",
          "duration": 3000,
          "active": [
            "robot"
          ],
          "paths": [
            "chunkRobot"
          ],
          "state": {
            "stage": "Execute and observe again",
            "artifact": "New observations"
          }
        },
        {
          "title": "Update the two decision levels",
          "description": "The new observations update the high-level VLM and low-level VLA inputs.",
          "duration": 3000,
          "active": [
            "vlm",
            "vla"
          ],
          "paths": [
            "observeHigh",
            "observeLow"
          ],
          "state": {
            "stage": "Update the two decision levels",
            "artifact": "The two levels receive new observations. No second action occurs in this trace."
          }
        }
      ]
    }
  ]
}
