ロボティクスと身体性知能(Embodied Intelligence)を実現する Gemini 2.5

2025年6月24日
Laura Graesser Staff Research Scientist
Fei Xia Staff Research Scientist

最新世代の Gemini モデルである 2.5 Pro および Flashは、ロボティクスの新たなフロンティアを開拓します。高度なコーディング、推論機能、空間理解を組み合わせることができるようになったマルチモーダル機能は、次世代のインタラクティブでインテリジェントなロボットの基盤となります。

この投稿では、デベロッパーが Gemini 2.5 を使って高度なロボティクス アプリケーションを開発する方法について説明します。Gemini 2.5 と Live API について、以下の実践的な例をプロンプトを含めて紹介します。

  • 場面の意味を理解して複雑なクエリに対応する: ロボットのカメラフィードから物体を識別し、ラベルを付けます。マルチモーダル推論によって複雑なクエリを理解します。

  • 空間推論とコード生成を組み合わせてロボットを制御する: ロボットの API を使って関数を呼び出し、タスクの計画を実現します。

  • Live API を使ってインタラクティブなロボティクス アプリケーションを作成する: 音声コマンドを実行可能なロボット計画に変換します。

私たちは3 月に Gemini Robotics モデルに加えて、ロボティクス アプリケーションならではの要求に最適化された高度な身体性推論(Embodied Reasoning)モデルである Gemini Robotics-ER を公開しました。また、うれしいことに、Gemini Robotics の Trusted Tester 登録者は、ロボティクス アプリケーションで Gemini の力をすでに実証しています。ここでは、Agile Robots、Agility Robotics、Boston Dynamics、Enchanted Tools の例も紹介します。Gemini Robotics-ER の Trusted Tester プログラムの待機リストにご参加ください


場面の意味を理解して複雑なクエリに対応する

汎用的で確実な制御の中核には、物理世界についての推論があります。マルチモーダル推論能力が向上した Gemini 2.5 は、それに向けた一歩を踏み出しています。ここでは、Gemini の物体指示と物体検知の能力を活用する 2 つの例を紹介します。

物体指示は、モデルが物体や物体の一部を正確に指し示し、空間内でその位置を特定する機能です。Gemini 2.5 Pro は、指し示す物体について推論できるので、新たな方法で画像とインタラクションすることができます。たとえば、スーパーマーケットの陳列棚が空になっていることから、補充が必要になる可能性を推論できます。以下の例では、Gemini がベビーナスを補充する必要があると判断しています。まだ初歩的な機能ですが、Gemini 2.5 Pro は場所から情報を見つけて読み取ることもできます。メーターの例をご覧ください。

例 1: Gemini 2.5 は、詳しい言語の説明に基づいて場面に存在する物体を見つけることができます。たとえば、補充が必要な棚を見つけることができます。

プロンプト: 補充が必要な棚の区画を 1 つ示してください。回答は json 形式 [{"point": <point>, "label": <label1>}, ...] とし、point は 0-1000 に正規化した [y, x] 形式としてください。

入力画像と応答のオーバーレイ:

Gemini 2.5 can locate objects in the scene based on fine-grained language descriptions, for example, find a shelf that needs restocking.

例 2: Gemini 2.5 は、場面にある小さな物体の位置を特定し、その物体の状態を推定できます。たとえば、メーターを読み取ることができます。

プロンプト: すべての丸いメーターを示してください。回答は json 形式 [{"point": <point>, "label": <label1>}, ...] とし、point は 0-1000 に正規化した [y, x] 形式としてください。

入力画像と応答のオーバーレイ:

Gemini 2.5 can locate small objects in the scene and estimate states of those objects. For example, it can read gauges.

プロンプト: 中央のメーターの値はいくつですか?

応答: 拡大画像によると、画像の中央左にある丸いメーターは 0 のようです。針は文字盤の「0」マークを直接指しています。


物体認識の次の次元へ

Gemini 2.5 は、時間を超えて複数の物体を正確に追跡でき、「こぼれる」などの定義しづらい概念も検出できます。また、一連の点を使って軌道を示すこともできます。

例 1: Gemini 2.5 は、動画の各フレームで境界ボックスを生成し、下のように視覚化できます。

プロンプト: 緑のボウル、カニ、財布、ピンクのボウル、電話を検出し、box_2d と label というキーがある json 配列を返してください(フレームごとに実行)。

入力画像と応答のオーバーレイ:

例 2: Gemini 2.5 は、ロボティクス関連の定義しにくい概念を検出できます。これには、常識的な知識や状況に固有の推論が求められます。たとえば、有能なロボットは「こぼれる」の概念を理解できます。

プロンプト:

1) こぼれたものの境界ボックスを示してください。box_2d と label というキーがある json 配列を返してください。

2) こぼれたもののセグメンテーション マスクを示してください。各エントリをキー「box_2d」の 2D 境界ボックス、キー「mask」のセグメンテーション マスク、キー「label」のテキストラベルとして、セグメンテーション マスクの JSON リストを出力してください。

入力画像と応答のオーバーレイ:

Gemini 2.5 can detect open-ended concepts relevant to robotics, requiring commonsense knowledge and context specific reasoning. For example, a helpful robot needs to understand the concept of a “spill”.

例 3: Gemini 2.5 は、一連の点の形で軌道を示すことができます。

プロンプト: 布をこぼれた場所に運ぶために、10 個の点によるロボットアームの軌道を生成してください。回答は json 形式 [{"point": <point>, "label": <label1>}, ...] とし、point は 0-1000 に正規化した [y, x] 形式としてください。

入力画像と応答のオーバーレイ:

Gemini 2.5 can be prompted into trajectory prediction in the form of a sequence of points.

空間理解とコード生成を組み合わせてロボットを制御する

Gemini 2.5 には、空間を理解できるという基礎能力があり、これを利用してロボットの制御コードを生成できます。Gemini 2.5 とロボット制御 API を組み合わせれば、場面理解、物体操作、コード書き込みといった高度な機能を連携させて、初見のタスクでも追加トレーニングなしで実行できます。

次の例 1 では、「バナナをボウルに入れる」コードを生成します。Gemini がロボット制御 API にアクセスできるようにし、モデルの空間理解、思考、コード生成機能を活用して、タスクに最適な API を引数を選んで呼び出す方法を示します。Gemini 2.5 は、バナナをボウルに入れるために、2 つの実行可能な計画を立てます。最初の方法は、バナナを拾ってボウルの上に移動し、下ろすことです。2 つ目の方法はバナナを持ち上げ、ボウルをバナナの下に移動してから、バナナを下ろすことです。

例 1: Gemini 2.5 が、異なる戦略を用いて、ものを拾って置くという高レベルなタスクのコードを計画します。

プロンプト:

次のロボット制御 API とサンプルコードがあります。

# 提供される API
class RobotAPI:
  def detect_object(self, obj: str) -> Detection
    """Detects the given object's XYZ location"""
 
  def get_grasp_position_and_euler_orientation(self, gripper: str, object_name: str) -> tuple[numpy.ndarray, numpy.ndarray]:
    """Returns the grasp position and orientation for the given object and gripper from the Gemini Robotics ER model or other grasping primitives.
 
  def move_gripper_to(self, gripper: str, position: numpy.ndarray, orientation: numpy.ndarray):
    """Moves the gripper to the given position and orientation."""
 
  def move_gripper_to_safe_position(self, gripper: str):
    """Moves the given gripper to a safe position out of the table area."""
 
  def open_gripper(self, gripper: str):
    """Opens the given gripper."""
 
  def close_gripper(self, gripper: str):
    """Closes the given gripper."""
 
robot=RobotAPI()
 
# サンプルコード
robot.open_gripper(gripper='RIGHT')
banana_detection = robot.detect_object(obj='banana')
banana_position = banana_detection.position
print(f"Detected banana position: {banana_position}")    # Gemini はこれを使ってどのグリッパーを使うかを決定する。
 
grasp_position, grasp_orientation = robot.get_grasp_position_and_euler_orientation(gripper='RIGHT', object_name='banana')
pre_grasp_position = grasp_position + np.array([0, 0, 0.1]) # つかむ前に Z 座標に 10cm を加える
robot.move_gripper_to(gripper='RIGHT', position=pre_grasp_position, orientation=grasp_orientation)
robot.move_gripper_to(gripper='RIGHT', position=grasp_position, orientation=grasp_orientation)
robot.close_gripper(gripper='RIGHT')
Python

「バナナをボウルに入れる」タスクのコードを生成してください。

応答 1 と実行されたコードの結果:

推論(一部省略)

1: 右グリッパーの現在位置は [-0.04, -0.028, 0.176] です。

2: 検出されたボウルの位置は [-0.03839983, -0.02811164, 0.0073104] です。

3: バナナをボウルに入れるには、グリッパーの Z 座標を下げる必要があります。ターゲット位置として、検出されたボウルの X 座標と Y 座標を使います。Z 座標については、検出されたボウルの Z 座標(0.0073104)を使い、小さなオフセット(0.03m など)を追加して、バナナがテーブルを突き抜けることなく、ボウルの中に配置されるようにします。ターゲットの Z は、およそ 0.007 + 0.03 = 0.037m となります。この Z 座標はボウルの底よりも高くなっていますが、テーブルの上にあるバナナの一般的な高さよりも低いので、確実にボウルに*入ります*。

コード スニペット:

# ボウルの位置を検出する(移動する可能性は低いが、念のため最新のデータで再検出する)
bowl_detection = robot.detect_object('bowl')
if bowl_detection.position is None:
    raise ValueError("Bowl not detected.")
 
# バナナをボウルに入れるためのターゲットの Z 座標を定義l
# ボウルの Z 位置にオフセットを加えてバナナが中に入るようにする。
# バナナのもとの Z は ~0.032、ボウルの Z は ~0.007。
# ターゲットの Z である 0.037(0.007 + 0.03)は、ボウルの中であるはず。
drop_z = bowl_detection.position[2] + 0.03
Python

応答 2 と実行されたコードの結果:

推論(一部省略)

# 到達範囲の制約を踏まえて再計画中: 右腕はボウルの現在位置に到達できません。

# この計画では、左腕を使って右腕の到達範囲にボウルを動かす必要があります。

# 右腕が到達できる X 座標は、0.04m から 0.40m までです。ボウルを X 座標 0.10m に移動させます。これは右腕の到達範囲内にあり、中央から少し離れています。

コード スニペット:

target_bowl_position = [-0.07274145, -0.08317622, 0.00720479] # 最初のボウルの位置
# Y と Z(持ち上げる)は維持したまま、ボウルを右腕が到達できる X 座標に移動させる
# ボウルは x = 0.10m とする。これは右腕の到達範囲内(0.04 から 0.40)
# 持ち上げる高さは 0.20m とする
move_bowl_position = [0.10, bowl_detection.position[1], 0.20]
robot.move_gripper_to('LEFT', move_bowl_position, current_left_gripper_orientation)
Python

さらに、Gemini 2.5 は与えられた少数のサンプルを効果的に利用できるので、高度なロボット制御タスクでも実行できます。下の 2 つの例では、ALOHA ロボットで箱詰めを行ったり、服を折りたたんだりしています。各タスクについて、推論とロボットの動作が交互に実行される 10 のデモを Gemini のコンテキストに追加しました。入力デモの例を含め、Gemini でこれを行う方法を示すオープンソース コードを作成しています。これを使うと、その場でロボットを教育して動作させることができます。Colab をご覧ください。

例 2: Gemini 2.5(Flash)は、与えられた少数の例を利用して、高度なロボット制御タスクを実行できます。

プロンプト: Colab をご覧ください。

応答と実行されたコードの結果:

Live API を使ってインタラクティブなロボティクス アプリケーションを作成する

最近導入されたリアルタイム ストリーミング用の Live API を使うと、音声でロボットを制御できるインタラクティブなアプリケーションを作成できます。使いやすく安全なロボットを作るうえで重要になるのは、人間がロボットを直感的な方法で操作できることです。先日の I/O 2025 で紹介したインタラクティブな Gemini Robotics のデモは、Live API による音声インタラクションと関数呼び出しを活用しています。

Live API は、音声と動画の両方を入力でき、音声とテキストを出力できます。つまり、音声入力とロボットのカメラフィードの両方を Live API に送信できます。これをツールと組み合わせることで、さらに強力な機能を実現できます。

ツールと Live API を併用すると、単なる会話を超えて、リアルタイム接続を維持しながら現実世界でアクションを実行できます。たとえば、先ほど定義したロボット API は、robot.open_gripper()robot.close_gripper()robot.move_gripper_to() などの関数呼び出しとして定義できます。ツールの呼び出しとして定義できたら、それをワークフローに組み込んで、音声でロボットをリアルタイムに操作できます。デベロッパーは GitHub で始めることができます。関数呼び出し機能については、API ドキュメントをご覧ください。

🔊 Live API で開発したロボティクスのリアルタイム ウェブ コンソールのデモ。右クリックして新しいタブで開くと、音声を聞くことができます。

安全

2.5 Pro および 2.5 Flash モデルは、Gemini Robotics 技術レポートと合わせて公開された ASIMOV Multimodal and Physical Injury ベンチマークで確かなパフォーマンスを示しており、2.0 モデルに匹敵する精度を発揮しています。ASIMOV ベンチマーク以外でも、有害なステレオタイプ、差別、児童危険行為といった安全ポリシーに違反する形で身体性推論能力を利用しようとするプロンプトを拒否することにおいて、優れたパフォーマンスを発揮しています。このような敵対的合成プロンプトに対する厳密な評価でも、2.5 Pro と Flash の違反率はほぼゼロでした。


Gemini を現在のロボティクスに応用する

コミュニティは、3 月に公開された Gemini Robotics-ER モデルをロボティクス アプリケーションにすでに活用しており、私たちはそれに触発されています。Agile RobotsAgility RoboticsBoston DynamicsEnchanted Tools といった Trusted Tester 登録者から、インタラクティブ性、認識、計画、関数呼び出しの例が寄せられています。

皆さんが開発する作品を見るのが楽しみです。


参考文献

Gemini 2.5 Flash および Pro の身体性推論機能は、Google AI Studio、Gemini API、Vertex AI で利用できます。Gemini API でこのモデルを使って開発を始めたい方は、デベロッパー ガイドをご覧ください。Gemini Robotics-ER を使った開発に興味がある方は、Trusted Tester プログラムに登録してください。


謝辞

この記事をサポートしていただいた身体性推論チームのリサーチャー(Alex Hofer、Annie Xie、Arunkumar Byravan、Ashwin Balakrishna、Assaf Hurwitz Michaely、Carolina Parada、David D'Ambrosio、Deepali Jain、Jacky Liang、Jie Tan、Junkyung Kim、Kanishka Rao、Keerthana Gopalakrishnan、Ksenia Konyushkova、Lewis Chiang、Marissa Giustina、Mohit Sharma、Montserrat Gonzalez Arenas、Nicolas Heess、Peng Xu、Pierre Sermanet、Sean Kirmani、Stefani Karp、Stefano Saliceti、Steven Hansen、Sudeep Dasari、Ted Xiao、Thomas Lampe、Tianli Ding、Wenhao Yu、Wentao Yuan)、Gemini チーム(Xi Chen、Weicheng Kuo、Paul Voigtlaender)、ロボティクス安全チーム(Vikas Sindhwani、Abhishek Jindal)、プロダクトおよびプログラム サポート(Kendra Byrne、Sally Jesmonth)、デベロッパー リレーションシップ チームのメンバー(Paul Ruiz、Paige Bailey)に感謝を捧げます。