7月3日、MarkTechPostが「NVIDIA AI Introduces ASPIRE: A Self-Improving Robotics Framework Reaching 31% Zero-Shot on LIBERO-Pro Long Tasks」と題した記事を公開した。NVIDIAらが開発したロボット制御の自己改善フレームワーク「ASPIRE」について詳しく紹介されている。
「タスクが失敗した」しか分からない問題
ロボット制御にLLMを活用する「Code-as-Policy」アプローチは、ロボットの挙動をコードとして記述できるため、検査・編集・デバッグが容易という利点がある。しかし既存のロボットコーディングエージェントには構造的な弱点がある。
タスクが失敗しても、なぜ失敗したのかが分からない。知覚(Perception)なのか、モーション計画なのか、把持なのか、長期的な動作の調整なのか——原因の切り分けができない。さらに致命的なのは、タスクが終わると発見した修正知識が捨てられる点だ。100個目のタスクを解くエージェントが、1個目と同じ経験値しか持っていない状態が続く。
この問題に対し、NVIDIA・ミシガン大学・UIUC・UCバークレー・CMUの研究チームが提案したのが ASPIRE(Agentic Skill Programming through Iterative Robot Exploration) だ。
ASPIREの構造:3つのコアコンポーネント
ASPIREはオープンエンドな継続学習ループとして設計されており、コーディネーター・アクター構成を採る。中央のコーディネーターが共有スキルライブラリを管理し、アクター(コーディングエージェント)をタスクに割り当てる。アクター間でやり取りされるのは、チャット履歴や生のトラジェクトリではなく、蒸留されたスキルのみだ。
1. クローズドループ実行エンジン
従来のタスクレベルのフィードバックを、プリミティブ(基本操作)単位のマルチモーダルトレースに置き換える。知覚・計画・制御の各呼び出しについて、入出力・リターンステータス・RGBキーフレーム・把持候補・物体姿勢・モーション計画結果を記録する。エージェントは失敗に関与した呼び出しだけを検査し、故障を特定したうえで再実行で修正を検証する。
2. スキルライブラリ
検証済みの修正知識を再利用可能な形で蓄積する。保存される内容はタスクプログラム全体ではなく、局所化ヒューリスティック・知覚プロンプト・把持制約・デバッグワークフローといった異種の修正パターンだ。各スキルは「失敗シグネチャ」「適用条件」「修正戦略」「コードスケッチ」をコンパクトにまとめたものであり、デバッグ検証とAPIポリシーチェックを通過したパターンのみが登録される。
3. 進化的探索
トレース誘導デバッグだけでは、同じ失敗戦略をひたすらパッチし続けるローカルループに陥りがちだ。これを防ぐため、ASPIREは各ラウンドでK個の候補プログラムを提案する。候補は上位の過去プログラムと残存する失敗トレースを条件として生成され、一つの解を洗練するのではなく異なる戦略を探索する。
シミュレーション環境では、コーディングエージェントとしてClaude Opus 4.6(100万トークンコンテキスト)を搭載したClaude Codeを使用する。※編集部の考察:「Claude Opus 4.6」は本稿執筆時点で公式リリースが確認できないモデル名であり、元記事の記述をそのまま反映している。プログラムはMuJoCo Playgroundベースのオープンソースフレームワーク「CaP-X」(Code-as-Policy拡張フレームワーク。MuJoCoシミュレーター上でロボットAPIをコードとして記述・実行するための実行基盤)で記述される。物理エンジンのグラウンドトゥルースや.bddl/.xml/.urdfファイルへのアクセスは禁止されており、「実機ロボットがカメラで実行できること」のみが許可される。
具体例:Multi-Angle Approachスキルの生成
BEHAVIOR-1K(Stanfordが公開した1000種類の日常タスクを含む大規模ロボットベンチマーク)のタスクで、ロボットがテーブル近くのラジオを掴もうとした場面を例に挙げる。知覚はラジオの姿勢を正常に返すが、navigate_to_poseが繰り返し失敗する。目標位置がテーブル端から約20cmの位置に落ちており、衝突回避バッファ内に入るため、モーション計画ライブラリ「cuRobo」(NVIDIAが開発したGPU並列化対応のロボットモーション計画ライブラリ)がPLANNING_ERRORを返す状態だ。
エージェントはトレースから「原因は知覚でも把持でもなく、目標位置の実行不可能性」と特定し、以下の修正を生成する。
# radio_pos, safe_navigate() and dist_to() are provided by ASPIRE's robot API
for angle_deg in [180, -90, 90, -45, 45]:
angle = np.radians(angle_deg)
tx = radio_pos[0] + 0.7 * np.cos(angle) # standoff 0.7 m from the radio
ty = radio_pos[1] + 0.7 * np.sin(angle)
face_yaw = np.arctan2(radio_pos[1] - ty, radio_pos[0] - tx)
moved = safe_navigate([tx, ty, face_yaw], f"ang_{angle_deg}")
if moved and dist_to(radio_pos[:2]) < 0.8: # reached a pose within 0.8 m
break
複数の角度からアプローチを試み、ある方向が塞がれていれば別方向を探す。この例では180度位置がバッファをクリアし、検証済みの「ナビゲーションリカバリースキル」としてライブラリに登録される。
ベンチマーク結果
評価は3つのベンチマーク群で実施された。LIBERO-Proはロボット操作の長期タスクを中心とした継続学習ベンチマーク、RobosuiteはMuJoCoベースの多関節ロボット操作シミュレーター群だ。
| 比較軸 | End-to-end VLA(OpenVLA, π0, π0.5) | CaP-Agent0 | ASPIRE |
|---|---|---|---|
| タスク間経験の引き継ぎ | なし(重み固定) | タスク終了後に破棄 | スキルライブラリに蒸留 |
| 失敗フィードバック | なし | シーンレベルの粗い概要 | プリミティブ単位のマルチモーダルトレース |
| LIBERO-Pro 総合 | 0〜13% | 18% | 72% |
| LIBERO-Pro Long ゼロショット | 0〜5% | 約4% | 約31% |
LIBERO-Proでは最強ベースライン比でObjectスイートで最大77ポイント、Goalで41.5ポイント、Spatialで42.5ポイントの改善。Robosuiteの両腕ハンドオーバーは20%から**92%に向上。BEHAVIOR-1Kのラジオ把持は56%から88%**に改善した。
ゼロショット転移の結果が特に目を引く。LIBERO-90で蓄積したスキルを再利用し、未経験のLIBERO-Pro Longタスクで約31%を達成。既存手法(CaP-Agent0)が約4%で頭打ちになるのと対照的だ。なお、冒頭タイトルで「8倍」と表現される場合があるが、本文中の数値的根拠は「約4%→約31%」であり、元記事に「8倍」という明示的な記述はない点に留意されたい。
実機ロボットへのスキル転移
シミュレーションで発見した3つのスキルを、実機の双腕「YAMステーション」でテストした。YAMステーションはNVIDIAが開発した双腕ロボット実験プラットフォームであり、シミュレーションとは異なる実機エンボディメントおよびAPIを持つ。実機のコーディングエージェントはOpenAI Codex GPT-5.5を使用している。※編集部の考察:「GPT-5.5」も本稿執筆時点で公式リリースが確認できないモデル名であり、元記事の記述をそのまま反映している。
シミュレーションとはエンボディメントもAPIも異なるにもかかわらず、スキルの転移はデバッグコストを大幅に削減した。ソーダ缶の持ち上げは13/20から19/20に改善し、使用トークン数は約10分の1に。引き出し開けは0/20から11/20へ——スキルなしのベースラインでは一度も成功しなかったタスクだ。
詳細はNVIDIA AI Introduces ASPIRE: A Self-Improving Robotics Framework Reaching 31% Zero-Shot on LIBERO-Pro Long Tasksを参照していただきたい。