powered by TechFeed
表示モード
Deep Dive

Raspberry Pi+LEGOで作るデスク用AIロボット — カメラなし・プライバシー優先設計と「ハイブリッドLLM自動切り替え」の実装詳解

9月16日、Google AIが「How we built a desktop companion robot with Gemma 4 and Raspberry Pi」と題した記事を公開した。Gemma 4とRaspberry Piを組み合わせたデスク用コンパニオンロボット「DinoDesk AI」の設計・実装について詳しく紹介されている。「一日中カメラに見られたくない」という問いかけを出発点に、プライバシーを最優先しながらローカルとクラウドのLLMを動的に使い分ける設計が特徴だ。

9月16日、Google AIが「How we built a desktop companion robot with Gemma 4 and Raspberry Pi」と題した記事を公開した。Gemma 4とRaspberry Piを組み合わせたデスク用コンパニオンロボット「DinoDesk AI」の設計・実装について詳しく紹介されている。「一日中カメラに見られたくない」という問いかけを出発点に、プライバシーを最優先しながらローカルとクラウドのLLMを動的に使い分ける設計が特徴だ。


カメラなし・プライバシー優先という設計判断

DinoDesk AIにはカメラが搭載されていない。音声入力のみで動作し、ローカルモード時は音声データもネットに出ない。「デスクに置くデバイスに一日中見られたくない」という設計思想が徹底されており、プライバシーを意識したエンジニアが自分用に作るには現実的な構成だ。

この方針はモデル選定にも反映されている。デフォルトではGemma 4(Googleが開発したオープンウェイトの軽量LLM)をローカル実行し、ネットワークを一切経由しない。複雑な推論が必要な場面に限り、クラウド上のGemini Flash(Googleの高速・低コストなクラウドAPIモデル)に自動エスカレートする仕組みだ。Gemma 4はオンデバイス・エッジ向けに設計された軽量モデルであるのに対し、Gemini Flashはより高い推論能力をAPIで提供する——という役割分担がこのハイブリッド構成の根幹にある。


核心は「ハイブリッドLLMアーキテクチャ」

このプロジェクトで最も興味深いのは、ローカルとクラウドを動的に切り替えるHybrid LLM Switching Architectureの実装だ。

AIハードウェア周辺機器を作る際の典型的なジレンマがある。クラウドだけに依存すると、「今何時?」程度の質問でもAPIトークンを消費し、音声データがネットに流れる。一方、小さなオンデバイスモデルだけでは、複雑なコードの説明や数学的推論に限界がある。

Google AIはこの問題を、ユーザーのメインPCをゲートウェイ(ルーター)として機能させる設計で解決した。Raspberry Piはデスク上でWi-Fi経由でメインPCに接続し、OpenAI互換のAPIリクエストを投げるだけ。どのエンジンが動いているかを意識しなくてよい。ローカルエンジンの実行環境には**LM Studio**(GUIでローカルLLMを管理・サーブできるデスクトップアプリ)が使用されており、OpenAI互換エンドポイントをローカルに立てることでRaspberry Pi側のコードを変えずにモデルを差し替えられる。

┌─────────────────────────────────────────────────┐
│           [ Main PC / Local Gateway ]           │
│                                                 │
│   ┌─────────────────────────────────────────┐   │
│   │      Dynamic Model Router / Switch      │   │
│   └────────────────────┬────────────────────┘   │
│                        │                        │
│     ┌──────────────────┴──────────────────┐     │
│     v                                     v     │
│  [ LOCAL ENGINE ]              [ CLOUD ENGINE ] │
│  LM Studio / Gemma 4           Gemini Flash /   │
│  (Zero Latency, Private)       Gemini Live      │
└────────────────────────┬────────────────────────┘
                         │
                         │ Wi-Fi (Unified OpenAI-Compatible Stream)
                         v
┌─────────────────────────────────────────────────┐
│           [ DinoDesk AI (RPi) ]                 │
│  - Pirate Audio LCD & I2S Beep Speaker          │
│  - Push Button & Optional Sensors               │
└─────────────────────────────────────────────────┘

モードは3種類ある。

モード 使用モデル 特徴
🟢 ローカルモード(デフォルト) Gemma 4(LM Studio経由) ゼロコスト・オフライン・完全プライベート。初回トークンまで約200ms
🟡 クラウドモード Gemini Flash / Gemini Live 高度な推論・複雑な問題解決。初回トークンまで約800ms
Auto-Hybridモード 自動ルーティング 通常はGemma 4。「explain」「compare」「write code」などのキーワードを検出すると自動でGemini Flashに昇格

Auto-Hybridモードでクラウドへエスカレートされると、ロボットのインジケーターが🟢 緑から🟡 金色に一時的に切り替わり、どちらのモデルが応答しているか一目でわかる設計になっている。


ハードウェア構成:LEGOとPirate Audio

ロボットの筐体は3DプリンターではなくLEGOブロックとTechnicのリンク機構で作られている。誰でもカスタマイズ・修理できるという思想からだ。主要な部品構成は以下のとおり。

  1. メインコントローラー: Raspberry Pi + 32GB MicroSD
  2. ディスプレイ&オーディオ: Pimoroni Pirate Audio Speaker(1.3インチ 240×240 ST7789 IPS LCD + I2S 1Wスピーカー + 4つのタクタイルボタン)
  3. 音声入力: コンパクトUSBミニマイク
  4. モーション: 首の動きとしっぽの振りを制御するモーター群

4つのハードウェアボタンにはそれぞれ役割がある。ボタンXのダブルクリックでローカル/クラウド切り替え、ボタンYの2秒長押しでビープ音量のサイクル変更といった具合だ。


ロボットの「生命感」を支える5状態FSM

LCDの目の表情、8bitビープ音、モーターの動きを連動させるために、5状態の有限状態機械(Finite State Machine) が実装されている。

┌──────────┐  button     ┌───────────┐   release   ┌──────────┐   stream   ┌──────────┐
│ Sleeping │──────────>  │   Idle    │────────────>│Listening │─────────>  │ Thinking │
└──────────┘  (wake)     └───────────┘   (trigger) └──────────┘  (send)    └──────────┘
                             ^                                                  │
                             │              ┌──────────┐                        │
                             └──────────────│ Speaking │<───────────────────────┘
                               (done)       └──────────┘       (tokens arrive)

各状態の動作は細かく設計されている。Listening状態では目が大きく見開き、首が15度ユーザー側に傾く。Thinking状態では瞳が回転し、首がゆっくり左右に揺れる。Speaking状態ではトークンが届くたびに8bitのタイプライター音が鳴り、テキスト長に合わせてしっぽが振られる。

3分間無操作または部屋が暗くなると自動でSleepingに入るなど、アイドル管理も実装済みだ。


ソースコードと今後の展開

ソースコードはGitHubリポジトリで公開されており、ハードウェア構成から各モードの実装まで一通り参照できる。記事執筆時点ではボイスチャット機能は実装途中とのことで、今後のアップデートが予告されている。ローカルLLMとクラウドLLMのハイブリッド構成をRaspberry Piで実現する実装例として、自作AIデバイスを検討しているエンジニアにとって参考になる内容だ。

詳細はHow we built a desktop companion robot with Gemma 4 and Raspberry Piを参照していただきたい。