1. はじめに

弊社では、Makuake のクラウドファンディングを通じて AI・AR スマートグラス「Rokid Glasses」(型番:RV101)を入手しました。
届いてすぐ、弊社が提供する AI 対話サービス「Up-Agent Guide」の Rokid Glasses 版の開発に着手し、実機で動かすところまで進めました。

本記事では、その開発の過程で得た知見を共有します。

Rokid Glasses では、Android をベースとした OS「YodaOS-Sprite」が稼働しており、動作するアプリは通常の Android アプリとして開発できます。
そのため、専用の SDK に依存しなくても、標準的な Android の仕組み(Bluetooth 通信など)だけでアプリを作ることができます。
本記事を読むと、次のことが分かります。

  • グラス単体でできること・できないこと
  • Rokid Glasses でアプリが動く仕組みと、スマートフォンと役割分担する理由
  • AI 対話アプリを成立させた全体のアーキテクチャ

2. グラス単体で何ができるのか ― できること・できないこと

まず、「グラス単体で何ができるのか」を整理しておきます。
実際に開発するなかで確認できたのは、次のとおりです。

できること

  • Android アプリの実行:Android アプリを、グラス単体(スタンドアロン)でインストールして動かせる
  • カメラ:標準の Android API(CameraX)でアクセスできる
  • マイク:標準の API で音声を取得できる
  • スピーカー:音声を出力できる
  • タッチパッド:ツル(テンプル)部分にタッチパッドがあり、スワイプやタップといった既定のジェスチャが成立すると、Android の KeyEvent としてアプリで取得できる
  • 画面表示:ディスプレイは緑色モノトーンの表示で、View に置いた要素は自動的に緑の濃淡(グレースケール相当)に変換されて表示される
  • Bluetooth 通信:標準の Android API で通信できる

できないこと・すべきでないこと

  • 重い処理:チップはスマートグラス向けに省電力を優先した Qualcomm Snapdragon AR1 Gen 1、メモリは 2GB(公式スペック)。この構成とバッテリーの制約(次節)をふまえると、負荷の高い処理を担わせ続ける設計は避けるべき
  • 常時ネットワーク接続:4G・5Gなどのセルラー通信はなく、Wi-Fi 接続は可能ですが、バッテリーの制約から常時つなぎっぱなしで通信し続ける使い方は現実的ではない

マイク・スピーカー・画面・タッチ入力・Bluetooth と、アプリに必要な入出力は一通りそろっている一方、重い演算と常時のネットワーク接続は苦手です。
その理由と補い方を、次節で見ていきます。

3. なぜ「重い処理はスマートフォン」なのか

Rokid Glasses は、重量わずか 49g という超軽量の AI・AR グラスです。
この軽さを成立させるために、バッテリー容量は 210mAh と非常に小さく抑えられています
(参考までに、最近のスマートフォンは 4,000〜5,000mAh 程度)。

Rokid Glasses は Wi-Fi 6 を内蔵しており、OS アップデートなどはグラス単体で Wi-Fi につないで行います。

Wi-Fi が使えるなら、グラス単体でクラウドと通信するアプリも作れそうに思えます。
しかし「グラス単体で、常時 Wi-Fi をつなぎながら重い処理まで自前でこなす」のは、
この小さなバッテリーでは現実的ではありません。
公式のバッテリー持ち関連の情報を確認すると、その制約の厳しさが分かります。


使い方

持続時間の目安
通常使用※約 8〜10 時間
ディスプレイ常時表示約 2 時間
連続動画撮影約 45 分

※『通常使用』は、表示・音声・待機などが混ざった一般的な使い方

通常使用ならほぼ一日もつ一方で、高負荷な処理を連続させると一気に数十分〜2時間まで落ち込みます。
つまり、AI 処理や常時通信のような重い処理をグラスに載せると、すぐにバッテリーが切れてしまうわけです。

そこで採られているのが、グラス単体で完結させるのではなく、重い処理と通信はスマートフォンに任せるという役割分担です。
実際、Rokid の公式 SDK(CXR)も、スマートフォン側を処理のハブ、グラス側を表示・入力の端末とする構成になっています。
本記事で紹介する構成も、これを踏襲しています。

具体的には、重い演算やネットワーク接続を担うアプリをスマートフォン側に別途用意し、グラスとは Bluetooth でつなぎます。
Wi-Fi でのデータ送受信よりも Bluetooth Classic(SPP)でのデータ送受信の方が消費電力を大幅に抑えられるため、この方法ならば常時接続が実現できます。
この分担は今回のアプリに限った話ではなく、このデバイス向けにアプリを作るうえでの基本形になると考えています。

次節では、この分担を実際のアーキテクチャとしてどう組んだかを見ていきます。

4. 全体のアーキテクチャ

今回の構成は、大きく3つのレイヤに分かれます。

  • Rokid Glasses:マイク・スピーカー・ディスプレイを持つ入出力の端末。それらにアクセスするためのAndroid アプリが動作する。
  • スマートフォン:グラスとクラウドの間をつなぐハブ。音声の変換や通信を担うための Android アプリが動作する。
  • OpenAI のリアルタイム API:実際の AI 処理を行うクラウド

音声のやり取りは、次のように流れます。

  1. グラスのマイクで拾った音声を、Bluetooth でスマートフォンに送る
  2. スマートフォンが、その音声を WebRTC で OpenAI のリアルタイム API に送る
  3. OpenAI からの応答音声を、スマートフォンが受け取る
  4. スマートフォンが、その音声を Bluetooth でグラスに返し、スピーカーで再生する

グラスは「質問の音声を拾い、回答を表示・再生する」ことに徹し、通信と処理はスマートフォンが引き受ける、という分担です。

5. まとめ

Rokid Glasses は Android ベースであるため、標準の Bluetooth 通信だけで AI 対話アプリを成立させられました。

次回の記事では、この構成の実装詳細に踏み込みます。
グラスとスマートフォンをつなぐ Bluetooth 通信、音声を OpenAI とやりとりする WebRTC まわりの実装、そしてそこでぶつかった帯域の制約を紹介します。



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる