はじめに:AIが「体」を持つ時代
これまでのAIは、主にデジタルの世界で活躍してきました。文章を書いたり、コードを生成したり、質問に答えたりといった作業です。しかし今、AIは急速に「物理的な世界」へと進出しています。ロボットアームが果物をつかみ、四足歩行ロボットが自律的に動き回り、倉庫の複数のロボットが連携して作業をこなす——そんな未来が、すでに現実になりつつあります。
本記事では、AWSが提供するオープンソースSDK「Strands Agents」を中心に、フィジカルAIの最前線を初学者にもわかりやすく解説します。
Strands Agentsとは?
Strands Agentsは、わずか数行のコードでAIエージェントを構築・実行するモデル駆動型アプローチを採用したオープンソースSDKです。
従来のフレームワークでは、複雑なワークフローをいちいち定義しなければなりませんでした。しかしStrands Agentsでは、開発者はプロンプトとツールのリストをコードで定義するだけでエージェントを構築し、ローカルでテストしてクラウドにデプロイできます。
エージェントを構成する3つの要素
エージェントの最もシンプルな定義は、次の3つの要素の組み合わせです。
| 要素 | 役割 |
|---|---|
| モデル | 推論・計画・ツール選択を担うLLM |
| ツール | エージェントが使える機能(API呼び出し、センサー読み取り等) |
| プロンプト | エージェントに与えるタスクや指示 |
なぜ「エッジ×クラウド」が重要なのか?
フィジカルAIの世界では、「すべての処理をクラウドで行う」という考え方は通用しません。
ボールをキャッチするロボットで考える
ロボットアームがボールをキャッチする場面を想像してください。ボールを見てグリッパーの位置を調整する動作は、ミリ秒単位で行わなければなりません。クラウドにリクエストを送って応答を待つ時間的余裕は一切ないのです。
一方で、「複数ロボットの作業を全体的に計画する」「過去のデータから学習する」といった処理は、クラウドの豊富な計算資源を活用したほうが圧倒的に有利です。
この関係は、ノーベル経済学賞受賞者ダニエル・カーネマンの「System 1(速い思考)とSystem 2(遅い思考)」に例えられています。
| 処理場所 | 役割 | 例 |
|---|---|---|
| エッジ(デバイス側) | 速い・本能的な反応 | 障害物を避ける、物をつかむ |
| クラウド | 慎重な推論・長期計画 | タスクの全体計画、フリート全体の学習 |
実際のロボットへの適用事例
SO-101ロボットアーム × NVIDIA GR00T
SO-101という3Dプリント製のロボットアームに、NVIDIA GR00Tというビジョン言語アクションモデル(VLA)を組み合わせた事例があります。
「果物を拾ってバスケットに入れる」と指示するだけで、ロボットはリンゴを識別し、把持し、タスクを完了します。VLAモデルは、カメラ画像・関節位置・言語指示を入力として受け取り、次の関節の動きを直接出力します。途中でリンゴが動かされても、次のカメラフレームで認識し直して自己修正できます。
Boston Dynamics Spot × Strands Agents
四足歩行ロボットのSpotに「センサーを点検する」と指示すると、エージェントはセンサーが下側にあると判断し、自律的に座って横向きになる一連の動作を実行します。
spot_agent = Agent(
model=edge_model,
tools=[stand, sit, battery_change_pose],
system_prompt="You control a Boston Dynamics Spot robot."
)
result = spot_agent("I need to inspect your sensors")
このように、ロボットメーカーのSDKをStrands Agentsの「ツール」としてラップするだけで、自然言語でロボットを制御できます。
エッジからクラウドへ:段階的な構築アプローチ
初学者にとって良いニュースは、「最初から全部やらなくていい」ということです。以下のように段階的に進められます。
ステップ1:エッジでシンプルに始める
まずはデバイス上でローカルモデルを動かすところから始めます。OllamaというツールでQwen3-VLなどのオープンソースモデルをエッジハードウェア上で実行できます。
from strands import Agent
from strands.models.ollama import OllamaModel
edge_model = OllamaModel(
host="http://localhost:11434",
model_id="qwen3-vl:2b"
)
agent = Agent(model=edge_model)
ステップ2:カメラやセンサーを追加する
カメラ画像をエージェントに渡すだけで、物理的な環境を「見て」判断できるようになります。バッテリー残量などのセンサー読み取りもツールとして追加できます。
ステップ3:クラウドと連携する
複雑な計画が必要なときだけクラウドに委任する「agents-as-tools」パターンを使えば、エッジとクラウドの役割を自然に分担できます。
# クラウドエージェントをツールとして定義
@tool
def plan_task(task: str) -> str:
"""複雑な計画をクラウドに委任する"""
return str(cloud_agent(task))
# エッジエージェントは必要に応じてクラウドに相談
edge_agent = Agent(
model=OllamaModel(...),
tools=[plan_task, execute_manipulation]
)
ロボット全体での学習:集合知の活用
複数のロボットが協力して動くことで、
1台のロボットだけでは気づけないパターンが見えてきます。
たとえば倉庫の例では、
多くのロボットが「北側の通路で午後2〜4時にナビゲーション失敗が頻発する」という観察結果を AgentCore Memory に蓄積します。
ロボットの運用を管理するシステムがこのデータを分析すると、
天窓から差し込む日光がビジョンシステムを混乱させていることが判明します。
すると、その問題に対する対策をすぐに実施できますよね。
1)実際の現場にロボットを導入する
2)ロボットの行動データを観察する
3)大規模なシミュレーションで検証する
4)モデルを改善する
5)すべてのロボットに改善内容を反映する
まとめ:今が「作る」最良のタイミング
フィジカルAIを可能にしている技術の収束が、今まさに起きています。
- 強力なマルチモーダル推論モデル(Claude Sonnet 4.5など)
- エッジで動くVLAモデル(NVIDIA GR00T)
- オープンソースのロボティクスハードウェアとライブラリ(Hugging Face LeRobot、SO-101)
- クラウドでの大規模学習基盤(Amazon SageMaker、Bedrock AgentCore)
Strands Agentsはこれらをシンプルなインターフェースでつなぐ接着剤として機能しています。AIエージェント開発の経験があれば、ロボットの制御も「ツールを追加する」感覚で試し始めることができます。
デジタルとフィジカルの境界が溶け始めた今、ぜひ一度コードを動かしてみてはいかがでしょうか。

