(RoboBrain) ── subgoals + constraints (text/JSON風) │ 例: {"Logical":...,"Spatial":...,"Temporal":...} │ (Pythonパーサで数値引数に変換) ▼ Motion Primitives (Python関数) MOVE/GRASP/LIFT/ALIGN/PRESS(...params) │ └─ 目標姿勢(SE3)・接触点・進入方向・速度など ▼ Trajectory Generator (Python) 目標の離散軌道: waypoints → action 列 形式: trajectory ∈ ℝ^[T × (8 × N_agents)] # Franka=7関節+gripper=1 │ ▼ Simulator (ManiSkill / SAPIEN) step(action_t) at t=1..T ── obs_t 入力 action_t: ℝ^[8×N] (float32) 出力 obs_t: - RGB画像: uint8 [H×W×3](例 320×240) - 状態: q∈ℝ^7, qd∈ℝ^7, gripper∈ℝ^1(float32) - (任意)接触/衝突フラグ等 │ ▼ RoboChecker (Python + GPT-4oでCheckCode生成) テキスト制約 + obs + trajectory → 物理インターフェースで検証 VI=Validate_Interaction(接触点) VD=Validate_Direction(進入方向/姿勢) VSO=Validate_Spatial_Occupancy(3D占有/衝突) VS=Validate_Scheduling(同時/順序) 出力: {valid: bool, reason: str} ├─ valid=false → reason を Feedback として RoboBrain に戻して再計画 └─ valid=true → 次ステップ/次サブゴールへ 概念フロー •RoboBrain(GPT-4o) • 入力:タスク指示(text)、観測(画像/要約)、前回の違反理由(text) • 出力:subgoals(text/JSON風)、constraints={Logical/Spatial/Temporal}(text) • テキスト→(Pythonパーサ)→ モーションプリミティブ( MOVE/GRASP/LIFT/ALIGN/PRESS(...))呼び出し → 暫定軌道を合成 •Trajectory / Action • 形式:trajectory ∈ float32 [T, 8×N_agents](Franka:7関節+gripper=8 ) • 実行時(Gym)はマルチアームなら {uid: action8} の辞書を渡す実装もあり (保存は連結形が多い) •Simulator(ManiSkill / SAPIEN) • 入力:action_t ∈ float32 [8×N] • 出力(Observation):画像 uint8[H,W,3](+必要なら Depth/Seg)、 状態(q, qd, gripper など float32) •RoboChecker(Python + GPT-4oでCheckCode生成) • テキスト制約+obs+trajectory → 物理インターフェースで検証 • VI(接触点)/VD(進入方向)/VSO(3D占有)/VS(同時・順序) • 出力:{valid: bool, reason: str} (false なら理由を RoboBrain に返し再計画) 要点:計画・制約生成=GPT-4o(テキスト)/実行=数値アクション。 RoboCheckerがテキスト制約を数値の判定に写像し、検証→再計画で安全・効率に収束。