Gemini Robotics ER 2 簡介

Gemini Robotics ER 是視覺語言模型 (VLM),可讓機器人對實體世界進行進階推論。這個模型會解讀視覺資料、進行空間和時間推論、規劃多步驟工作,以及調度機器人和工具。

模型

Gemini Robotics ER 2 是推論模型的更新版本,可精準推論機器人的實體環境。這項模型專精於具身推論功能,例如機器人的代理協調 (例如使用視覺語言動作 (VLA) 模型)、機器人影片理解 (包括進度理解和成功偵測)、儀器讀取、指向和空間推論。

下列模型目前為預先發布版:

  • gemini-robotics-er-2-preview:以 Gemini 3.5 Flash 為基礎,提升空間推論、影片片段搜尋、影片進度分類、多機器人自動化調度管理,以及多步驟工具使用等能力。如要瞭解技術規格、權杖和配額限制、支援功能、適用區域和定價,請參閱 Gemini Robotics ER 2 模型資訊頁面。

本指南會搭配使用 Google Gen AI SDK 與 Gemini Enterprise Agent Platform。每個範例都會使用 enterprise=True 初始化用戶端,並使用 Google Cloud憑證進行驗證,因此您可以使用自己的 Google Cloud 專案呼叫模型。

機器人功能

下表摘要說明 Gemini Robotics ER 2 的核心功能:

功能 說明 指南
空間推理 指向物件、在影片中追蹤物件、使用定界框偵測物件,以及規劃軌跡。 空間推理
代理式執行程式碼 使用執行程式碼功能縮放/裁剪圖片、讀取儀器,以及為場景加上註解。 代理能力
工作自動化調度管理 結合空間推論與自訂機器人 API,完成長程任務。 工作自動化調度管理
影片解讀 從連續影片動態消息中尋找特定時刻及分類進度。 影片理解

事前準備

Agent Platform 會使用 Google Cloud憑證進行驗證,而非 Gemini API 金鑰。執行範例前,請先完成下列設定:

  1. 安裝 Google Gen AI SDK。

    pip install --upgrade google-genai
    
  2. 在 Google Cloud 專案中啟用 API,並確認您有專案 ID。您可以使用現有專案或建立新專案。

  3. 使用應用程式預設憑證 (ADC) 進行驗證。如要進行本機開發,請執行:

    gcloud auth application-default login
    
  4. 使用 Agent Platform 後端初始化用戶端。本頁的所有 Python 範例都使用下列用戶端,因此請設定自己的專案 ID:

    from google import genai
    
    client = genai.Client(
        enterprise=True,
        project="your-project-id",
        location="global",
    )
    

    或者,您也可以設定 GOOGLE_GENAI_USE_ENTERPRISE=True 環境變數,而不將 enterprise=True 傳遞至用戶端。

開始使用

以下範例會找出圖片中的物件,並傳回正規化的 2D 座標和標籤。您可以將這項輸出內容直接傳遞至機器人 API 或視覺語言動作 (VLA) 模型,生成機器人動作。

Python

from google import genai
from google.genai import types

PROMPT = """
          Point to no more than 10 items in the image. The label returned
          should be an identifying name for the object detected.
          The answer should follow the json format: [{"point": <point>,
          "label": <label1>}, ...]. The points are in [y, x] format
          normalized to 0-1000.
        """
client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

# Load your image
with open("my-image.png", 'rb') as f:
    image_bytes = f.read()

image_response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/png',
        ),
        PROMPT
    ],
    config = types.GenerateContentConfig(
        temperature=1.0,
        thinking_config=types.ThinkingConfig(
            thinking_level=types.ThinkingLevel.HIGH
        ),
    )
)

print(image_response.text)

REST

# First, ensure you have the image file locally.
# Encode the image to base64
IMAGE_BASE64=$(base64 -w 0 my-image.png)

# Set your Google Cloud project and location.
export PROJECT_ID="your-project-id"
export LOCATION="global"
export MODEL="gemini-robotics-er-2-preview"

# For the "global" location, use the aiplatform.googleapis.com host.
# For a regional location, prefix the host with the region, for example:
# https://us-central1-aiplatform.googleapis.com

curl -X POST \
  "https://aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL}:generateContent" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "inlineData": {
              "mimeType": "image/png",
              "data": "'"${IMAGE_BASE64}"'"
            }
          },
          {
            "text": "Point to no more than 10 items in the image. The label returned should be an identifying name for the object detected. The answer should follow the json format: [{\"point\": [y, x], \"label\": <label1>}, ...]. The points are in [y, x] format normalized to 0-1000."
          }
        ]
      }
    ],
    "generationConfig": {
      "temperature": 1.0,
      "thinkingConfig": {
        "thinkingLevel": "HIGH"
      }
    }
  }'

輸出內容會是包含物件的 JSON 陣列,每個物件都有 point (正規化 [y, x] 座標) 和識別物件的 label。

JSON

[
  {"point": [376, 508], "label": "small banana"},
  {"point": [287, 609], "label": "larger banana"},
  {"point": [223, 303], "label": "pink starfruit"},
  {"point": [435, 172], "label": "paper bag"},
  {"point": [270, 786], "label": "green plastic bowl"},
  {"point": [488, 775], "label": "metal measuring cup"},
  {"point": [673, 580], "label": "dark blue bowl"},
  {"point": [471, 353], "label": "light blue bowl"},
  {"point": [492, 497], "label": "bread"},
  {"point": [525, 429], "label": "lime"}
]

下圖是這些點的顯示範例:

顯示圖片中物件點的範例

運作方式

Gemini Robotics ER 2 可接受圖片、影片或音訊輸入,並搭配自然語言提示。這項功能可辨識物件、推論場景背景和空間關係,並傳回座標或定界框等結構化輸出內容。

此外,這項功能也具備代理能力,可將複雜工作拆解為子工作,並透過呼叫機器人函式或執行生成的程式碼來執行這些工作。舉例來說,「把蘋果放進碗裡」會變成一連串的定位、抓取和放置步驟。

如要進一步瞭解 Gemini 呼叫函式的運作方式,請參閱「呼叫函式」頁面。

安全性

Gemini Robotics ER 2 的設計以安全為考量,但您有責任維護機器人周遭環境的安全。生成式 AI 模型可能會出錯,實體機器人也可能造成損害。安全性是首要考量,因此我們研究的一大重點,就是確保生成式 AI 模型與實際機器人搭配使用時安全無虞。詳情請參閱 Google DeepMind 機器人安全頁面。

最佳做法

請遵循下列最佳做法,充分發揮 Gemini Robotics ER 2 的效益:

  1. 使用平實自然的語言。請像對人說話一樣,說明你希望機器人執行的動作。如果某個字詞無法使用,請嘗試常見的同義詞。

  2. 最佳化視覺輸入。請先裁剪或放大細小或模糊的物體,再傳送圖片。光線和低色彩對比度可能會影響偵測。

  3. 將複雜任務拆解成多個步驟。將每個步驟做為個別提示詞傳送,提高各項子任務的準確度。

  4. 針對高精確度工作,多次查詢並計算平均結果。這種共識方法可減少空間輸出的變異。

限制

使用 Gemini Robotics ER 2 開發時,請留意下列限制:

  • 延遲時間與效能:複雜的查詢、高解析度輸入內容或 thinking_level.HIGH,都可能導致處理時間增加。使用 thinking_level.MEDIUM 可在延遲時間和效能之間取得良好平衡。
  • 幻覺:如同所有大型語言模型,Gemini Robotics ER 2 有時也會產生「幻覺」或提供錯誤資訊,尤其是提示語意不明或輸入內容超出分布範圍時。
  • 取決於提示品質:模型輸出內容的品質,高度取決於輸入提示是否清楚明確。如果提示詞含糊不清或結構不佳,結果可能不盡理想。
  • 運算資源:執行模型 (尤其是使用影片輸入或 thinking_level.HIGH) 會消耗額外的運算資源。詳情請參閱「思考」頁面。
  • 輸入類型:如要進一步瞭解各模態的限制,請參閱下列主題:

隱私權聲明

您瞭解本文件提及的模型 (下稱「機器人模型」) 會運用影片和音訊資料,根據您的指令操作及移動硬體。因此,您在操作機器人模型時,機器人模型可能會收集可識別身分者的資料,例如語音、圖像和肖像資料 (「個人資料」)。如果您選擇以收集個人資料的方式操作機器人模型,即表示您同意不允許任何可識別身分者與機器人模型互動,或出現在機器人模型周圍的區域,除非且直到這些可識別身分者已充分知悉並同意收集和使用其個人資料,如適用的代理平台服務條款所述。您應確保該通知允許按照上述條款所述收集及使用個人資料,並應盡商業上合理的努力,盡可能採用臉部模糊處理等技術,以及在不含可識別身分者的區域操作機器人模型,盡量減少收集及散布個人資料。

後續步驟

如要進一步瞭解 Gemini Robotics ER 2,請參閱下列資源: