canonical_url: https://bebechien.github.io/cozy-corner-future/posts/how-we-built-a-desktop-companion-robot-with-gemma-and-raspberry-pi/
cover_image: https://bebechien.github.io/cozy-corner-future/images/how-we-built-a-desktop-companion-robot.png
description: 我們如何打造 DinoDesk AI 的幕後故事——這是一台以隱私優先為核心、由混合式本地 Gemma 4 與雲端 Gemini 架構驅動的 LEGO 恐龍陪伴機器人。
published: true
tags:

  • RaspberryPi
  • Gemma
  • Gemini
  • Robotics
    title: 我們如何用 Gemma 4 與 Raspberry Pi 打造桌面陪伴機器人

    你是否曾經希望有個小小的桌面夥伴——既有復古遊戲角色那種可愛的觸感魅力,又能跟你聊天、幫你記住桌上的計時器,或在你卡在棘手的 bug 時陪你一起釐清——而且還不需要一台攝影機整天盯著你?

這個想法催生了 DinoDesk AI:我們的 LEGO 恐龍 AI 陪伴機器人。

https://www.youtube.com/watch?v=pXOTjxcNzdQ

dinodesk

我和同事 Shama 開始著手打造一台智慧、低功耗的桌面機器人,將 8 位元音視覺的懷舊感與 LEGO Technic 機械結構,結合現代的 混合式 LLM 切換架構(本地 ↔ 雲端)。透過將桌上的 Raspberry Pi 與一台執行 Gemma 4 的本機 PC 閘道器,以及 Gemini Flash 結合,我們打造出一個提供 100% 視覺隱私(沒有攝影機)、可即時零成本本地聊天,並能按需進行深度雲端推理的陪伴機器人。

以下就是我們從零開始設計、接線並程式化 DinoDesk AI 的完整幕後故事。


1. 混合大腦:本地 Gemma 4 ↔ 雲端 Gemini

打造 AI 硬體陪伴裝置時,最大的難題之一就是要決定大腦放在哪裡。若全部都在雲端運作,每一次隨口問一句 「現在幾點?」 都會消耗 API token、增加網路延遲,還會把你的語音資料傳到網際網路上。反過來說,如果你嚴格限制只能使用小型裝置端模型,當你要它替你龐大的程式碼庫建立新功能,或解釋複雜主題時,機器人就會立刻力不從心。

所以我們決定打造一個 混合式 LLM 架構,並在使用者的主電腦上架設一個 統一的 LLM 閘道器(Router)。桌上的 Raspberry Pi 不論目前啟用哪個引擎,都會透過 Wi-Fi 傳送相同的 OpenAI 相容請求:

 ┌─────────────────────────────────────────────────┐
 │           [ 主電腦 / 本機閘道器 ]               │
 │                                                 │
 │   ┌─────────────────────────────────────────┐   │
 │   │        動態模型路由器 / 切換器          │   │
 │   └────────────────────┬────────────────────┘   │
 │                        │                        │
 │     ┌──────────────────┴──────────────────┐     │
 │     v                                     v     │
 │  [ 本地引擎 ]                [ 雲端引擎 ]         │
 │  LM Studio / Gemma 4          Gemini Flash /     │
 │  (零延遲、私密)             Gemini Live         │
 └────────────────────────┬────────────────────────┘
                          │
                          │ Wi-Fi(統一的 OpenAI 相容串流)
                          v
 ┌─────────────────────────────────────────────────┐
 │              [ DinoDesk AI(RPi) ]             │
 │  - Pirate Audio LCD 與 I2S 蜂鳴喇叭              │
 │  - 按鈕與可選感測器                              │
 └─────────────────────────────────────────────────┘

三種智慧模式

模式 啟用模型 優勢與主要用途 切換方式
🟢 本地模式 (預設) Gemma 4(透過 LM Studio) 零成本、離線、100% 私密。 可提供約 200 毫秒的首 token 延遲,適合閒聊、桌面計時器與快速狀態查詢。 雙擊 Pirate Audio 按鈕 X、對電容觸控感測器長按 3 秒,或語音指令(「切換到雲端模式」
🟡 雲端模式 Gemini Flash / Gemini Live 高推理能力與複雜問題解決。 適合程式開發協助、複雜數學、深入解釋或語言教學(首 token 約 800 毫秒)。 同上
⚡ 自動混合模式 自動路由 預設先使用 本地 Gemma 4。當複雜度分類器偵測到多步推理關鍵字(「解釋」「比較」「寫程式碼」)時,會自動將提示詞升級到 Gemini Flash 自動系統路由

當自動混合模式把問題升級到雲端時,機器人的指示燈會在回答期間暫時從 🟢 穩定綠色 變成 🟡 穩定金色,然後再回到綠色——所以你一眼就能知道目前是哪一個大腦在回應。


2. 硬體與觸覺機構:LEGO 與 Pirate Audio 的結合

我們希望 DinoDesk AI 不是冷冰冰的智慧喇叭,而是像一個實體玩具。與其 3D 列印一個密封的塑膠外殼,我們改用 基本 LEGO 積木與 Technic 槓桿機構 來打造機身,讓任何人都能自行客製化或維修。

核心材料清單(BOM)

  1. 主控制器: Raspberry Pi + 32GB MicroSD
  2. 顯示與音訊擴充板: Pimoroni Pirate Audio Speaker(1.3 吋 240×240 ST7789 IPS LCD + I2S 1W 喇叭 + 4 顆觸覺按鈕)
  3. 紅色按鈕: 一個迷你按鍵開關,按下時會有令人滿足的觸覺回饋,可開始或停止語音擷取
  4. 音訊輸入: 小巧的 USB Mini 麥克風
  5. 動作系統: 驅動頸部動作與尾巴搖擺的馬達

在打造完整機身之前,我先用 Raspberry Pi 和一組簡單的 LEGO 積木做了邏輯原型。

<img src=https://bebechien.github.io/cozy-corner-future/images/dinodesk-prototype1.gif width=480>
<img src=https://bebechien.github.io/cozy-corner-future/images/dinodesk-prototype2.gif width=480>

實體按鈕控制

即使有語音與感測器觸發,專用硬體按鈕仍然帶來很棒的即時實體控制感:

  • 按鈕 A(GPIO 5)— 取消 / 靜音: 立即停止目前的回應串流、關閉音訊,並讓機器人回到 Idle
  • 按鈕 B(GPIO 6)— 回到中間: 將所有伺服馬達重設到中立的中心位置,不會中斷目前狀態。
  • 按鈕 X(GPIO 16)— 表情與引擎切換: 單擊可手動循環切換表情;雙擊可切換 本地 ↔ 雲端模式
  • 按鈕 Y(GPIO 24)— 尾巴測試與音量: 單按會啟動一段尾巴搖擺序列,以確認機械對位;長按 2 秒可循環切換蜂鳴音量(Low → Medium → High → Mute)。

3. 讓恐龍活起來:5 狀態有限狀態機

陪伴機器人只有在眼睛、聲音與身體同步運作時,才會讓人感覺真的活著。我們設計了一個 5 階段的 有限狀態機(FSM),來協調 240×240 LCD 眼神表情、8 位元蜂鳴聲與馬達動作:

┌──────────┐  按鈕     ┌───────────┐   放開   ┌──────────┐   串流   ┌──────────┐
│ 睡眠中   │────────>  │   待命    │────────>│ 聆聽中   │────────>  │ 思考中   │
└──────────┘  (喚醒) └───────────┘  (觸發)└──────────┘  (送出) └──────────┘
                             ^                                                  │
                             │              ┌──────────┐                        │
                             └──────────────│ 說話中   │<───────────────────────┘
                               (完成)     └──────────┘       (token 抵達)
狀態 進入條件 Pirate Audio LCD 表情 8 位元音效回饋 馬達動作(頸部 / 尾巴)
1. 睡眠中 閒置 3 分鐘或房間變暗 (- _ -)<br>閉眼 + zzz 無聲(或可選的輕微打呼聲) 馬達放鬆;頭部稍微下垂
2. 待命 預設待機 (• •)<br>自動眨眼 偶爾的喚醒/眨眼提示音 頭部置中;頸部緩慢擺動
3. 聆聽中 按鈕點擊或感測器觸發 (O O)<br>眼睛睜大、發亮 「Beep-Boop!」 漸升音調 頭部朝使用者方向傾斜 15°
4. 思考中 音訊已送出;路由器正在推理 (º º)<br>旋轉瞳孔 + 模式徽章 不規則的處理滴答聲(tick-teek-poh 頸部緩慢左右擺動
5. 說話中 接收到 SSE token 串流 有表情的眨眼 + 捲動字幕 每個 token 對應一聲 8 位元打字機音效 尾巴依文字長度同步搖擺

打造 DinoDesk AI 讓我們再次體會到,AI 不一定要被鎖在瀏覽器分頁或雲端資料中心裡。當你替像 Gemma 4 這樣的開放模型裝上像素眼睛、8 位元聲音、會扭動的 LEGO 尾巴,並且在需要時還能呼叫 Gemini 協助處理較重的任務,整張桌子立刻就變得活潑多了。🦖✨

它目前還在持續開發中,還沒完全完成,但我很快就會回來分享完整實作的語音聊天功能!在那之前,請先享受每次按下按鈕時那些可愛的 8 位元音效吧。Beep-Boop!

在這裡複製專案: https://github.com/google-gemma/dinodesk-ai-companion/

也歡迎留言分享你打算做些什麼。


原文出處:https://dev.to/googleai/how-we-built-a-desktop-companion-robot-with-gemma-4-and-raspberry-pi-2oke


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝62   💬1  
818
🥈
NewsData
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登