3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Frameとは

image.png

Brilliant Lab社が販売しているARグラスです。お値段は$349(約53,00円)ドル。対角視野はおよそ20度。重さは40g。通常のメガネが30g程度なので、かなり本当のメガネに近い重さです。

どんなことができるかというと、いわゆるChatGPTの問い合わせができます。また、本体にカメラが乗っているため、目の前の風景について問い合わせたりすることができます。

このARグラスは単体で稼働するものではなく、無線でスマホと連携して動くタイプです。
Noaというスマホアプリがあり、その説明によると

Noa は、フレーム AR グラス上で実行されるように設計されたパーソナル AI アシスタントです。 GPT を利用したチャット、Web 検索、翻訳を備えています。フレームをタップして、Noa に何でも質問してください。 Noa はフレーム上で応答し、チャット履歴をアプリに保存します。

となっています。

オープンソースハードウェア

FrameのFAQには面白いことが書いてあります。

明るいマイクロ OLED が薄い幾何学プリズム光学系に接着され、約 20 度の対角視野を表示します。フレームは完全にオープンソースで、設計ファイルとコードは Github にあります。

ほぼすべての仕様データがGithubで公開されています。この公開データを用いて、Frameの原価やアーキテクチャについて詳しく見ていこう。 という記事になっています。

原価計算について

使っているパーツや回路図はHardwareというページにあります。

image.png

image.png

回路図
https://docs.brilliant.xyz/frame/frame-schematics.pdf

これらのデータをまとめて算出したのが以下の表になります。1ドル=150円となっています。

役割 詳細 部品の型番 単価 数量 合計 リンク
バッテリー 105mAhバッテリー 推定 ¥262 2 ¥524 リンク
バッテリー保護 GLF73910 記載 ¥239 2 ¥477 リンク
DC-DCコンバーター MAX17291 記載 ¥111 1 ¥111 リンク
PMIC MAX77654 記載 ¥336 1 ¥336 リンク
IMU MC6470 記載 ¥347 1 ¥347 リンク
マイク ICS-41351 記載 ¥261 1 ¥261 リンク
MCU nRF52840-CKAA-F 記載 ¥870 1 ¥870 リンク
FPGA LIFCL-17-7UWG72C 記載 ¥2,445 1 ¥2,445 リンク
カメラ OV09734-H16A 記載 ¥110 1 ¥110 リンク
コネクタ FR02C051JA1-R5000 記載 ¥340 1 ¥340 リンク
ディスプレイ 推定 ¥20,850 1 ¥20,850 リンク
合計 ¥26,670

追える部分だけ追った結果、製品が\53,000に対し、原価の合計が\26,670となりました。
計算できなかった部分は、以下の4点で、

  • 眼鏡のフレーム
  • ウェーブガイドレンズ
  • 充電クレードル

まぁ原価は、\30,000~\35,000じゃないかなーと思っています。ウェーブガイドレンズの原価が全く読めない。
また、先ほどの表を円グラフにしてみると、以下のようになります。

image.png

ディスプレイが原価の大半(78.2%)を占めている。ということが分かります。マイクロOLEDが高い。
ただこれについては議論があり、回路図にはディスプレイに関する品番の記載がない ので、推定値に過ぎないです。ただここはちょっと大事なポイントではあると思います。

アーキテクチャについて

nRF52840

このBrilliant Frameですが、CPUってものが存在しないな。ということに気が付きました。じゃあこれってどう動いているんだっけ?と思って調べていました。
最初に気になったのがMCUという部品です。これは何かというと、

マイクロコントローラ (英: microcontroller) とは、CPUに加えてRAM、ROM、I/Oポートなどを1つの集積回路(IC)にまとめた、いわば極小のコンピュータ[1]。主に機器の制御に使われる[1]。略語は英字ではMCU[2]。日本語ではマイコンとも呼ばれる[注 1]。

引用:https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9

いわゆるマイコンです。PICやAVRの親戚が乗っています。だから、がっつりと強いCPUが乗っているわけではない。
 これは、NORDIC SEMICONDUCTORという会社の製品らしく、公式ページによると、

nRF52840はARM®の32ビットCortex™-M4 CPUを中心に構築されており、64MHzで動作する浮動小数点ユニットを搭載しています。

一応、ARMが動いているようです。仕様書をまとめると以下のような感じです。

機能 詳細
プロセッサ 64 MHz Arm® Cortex-M4 with FPU
メモリ 1 MB Flash + 256 KB RAM
無線通信 Bluetooth 5 multiprotocol radio
- 2 Mbps
- CSA #2
- Advertising Extensions
- Long Range
- +8 dBm TX power
- -95 dBm sensitivity
- Integrated balun with 50 Ω single-ended output
IEEE 802.15.4 サポート - Thread
- Zigbee
電源電圧範囲 1.7-5.5 V
USB Full-speed 12 Mbps USB
NFC NFC-A tag
セキュリティ Arm CryptoCell CC310 security subsystem
デジタルインターフェース - QSPI/SPI/TWI/I²S/PDM/QDEC
- High speed 32 MHz SPI
- Quad SPI interface 32 MHz
- EasyDMA for all digital interfaces
アナログ 12-bit 200 ksps ADC
暗号化 128 bit AES/ECB/CCM/AAR co-processor
内蔵DC-DCコンバーター On-chip DC-DC buck converter
外部コンポーネント用電源供給 Regulated supply for external components up to 25 mA

というわけで、RAMが256KB、フラッシュメモリが1MBあるようです。
 この構成を見て、はて。と思ったことがありまして、たまたま、自作キーボードについて調べていました。そのときに、BLE Micro Pro Type-C版という製品を見ていまして、これは自作キーボードを無線化する基盤です。

image.png

この説明文を読むと、

Pro Microとの互換性を意識したBL654(nrf52840モジュール)のブレークアウトボードです。主に自作キーボードでの使用を想定して設計しています

とありまして、実は、この基盤に使われているマイコンと同じものがFrameに乗っています。だから、割と結構メジャーなマイコンで、しかもやっぱりマイコンぐらいの性能しかでないんだろうな。という感触があります。

LIFCL-17-7UWG72C

 ハードウェア構成にFPGAが乗っているというのは割と珍しい製品だと思います。また、その乗っているFPGAも、Altera(Intel)やXilinx(AMD)ではなくLatticeというのは中々珍しいのではないでしょうか。
FPGAとは、

FPGA(英: field-programmable gate array)は、製造後に購入者や設計者が構成を設定できる集積回路であり、広義にはPLD(プログラマブルロジックデバイス)の一種である。現場でプログラム可能なゲートアレイであることから、このように呼ばれている。

 雑にまとめると論理回路を自分でソフトウェア的に構成できる半導体部品です。(マイコンと何が違うの?というと、あんまり相手にわかるように説明できる気がしないですが・・・)
 最初に、FPGAが乗っている製品は割と珍しい。ということを書きましたが、その旨がWikipediaにも書かれています。

従来、FPGAはASICに比べて低速でエネルギー効率が悪く、実装可能な機能も限られていた。しかし、大量生産、製造ルールの微細化、研究開発などにより、ASICとFPGAの性能差はかなり縮まっている[24]。

というので、既成製品においてはあまりFPGAというのは採用されない印象が私にはありました。

QuestProへのFPGA採用

しかし、XR領域であると、FPGAの採用事例があります。
 1つ目はQuest ProでLatticeのFPGAの採用があります。 iFixitによると、LIF-MD6000-6という製品が採用されています。

image.png

FPGAがCPUと近い位置に配置されていることを考えるとQuest Proでは特殊なコプロセッサとして動いているのかな。と思いました。

AppleVisionProへのFPGA採用

 2つ目は、AppleVisionProでLatticeのFPGAの採用があります。 これも、iFixitによると、ICE5LP4K iCE40 Ultra FPGAという製品が乗っています。

image.png

 Quest3とは対照的に周りにあるチップセットはセンサードライバ周りなので、AVPにおいてはセンサー系を取りまとめてるのかな。という感じです。それは別の記事でも言及がありました。

FrameにおけるFPGAの役割

Frameのハードウェアダイアグラムから、FPGAはカメラとディスプレイに接続していることが分かります。

image.png

説明文でも、

FPGA は、ディスプレイのグラフィック アクセラレーションと 720p カメラ センサーとのインターフェイスに使用されます。SPI 経由で Bluetooth MCU と通信し、電力を節約するために動的にシャットダウンされます。

とあります。

ディスプレイ制御

 端的になぜFPGAが存在するのか。というとnRF52840がディスプレイやカメラを制御しきるだけの能力がないから。という感じがします。それはディスプレイのドキュメント仕様からも垣間見えて、Frameは16色しか表示できません。

image.png

ディスプレイの解像度が640x400で16色(4bit)だと、画面表示に必要なメモリが1.02MB程度必要です。nRF52840のRAMが256KBしかないので、マイコンのメモリに画面表示が乗らない。また、ドキュメンによるとダブルバッファしてるそうなので、さらに倍メモリが必要そうです。

バッファリング
フレーム ディスプレイには 2 つのバッファがあります。frame.display.text()、frame.display.bitmap() などを介してディスプレイに書き込まれるすべての内容は、オフスクリーン バッファに書き込まれるため、表示されません。

だからFPGAでディスプレイ制御を行っている気がしてます。
 APIの仕様ドキュメントを読むと、

  • frame.display.text(string, x, y, {color='WHITE', spacing=4})
  • frame.display.bitmap(x, y, width, color_format, palette_offset, data)
  • frame.display.vector()
  • frame.display.show()

ぐらいしか関数が生えていません。一応生のByteデータから画面表示はできるんですが、ドキュメントにはSprite Engineという表記があり、「古の技術だ・・・」感がありました。ただ古のゲーム機のようなスプライト登録とその呼び出しのような機能ではないので、逆にそれはあっても面白いのでは・・・?みたいな気持ちになりました。

カメラ制御

 また、カメラの画像についても涙ぐましい努力があり、

カメラ
Frame のカメラ機能により、Bluetooth 経由で単一の JPEG 画像をキャプチャしてダウンロードできます。センサーのフル解像度は縦向きで 1280 x 720 ピクセルですが、一度にキャプチャできるのは最大 720 x 720 ピクセルの正方形画像のみです。ユーザーは、panコントロールを使用して、センサー ウィンドウのどの部分をキャプチャするかを選択できます。

という感じ、無理くり切り出してる感じがあります。ちょっと以下のような720x720ノイズ画像を生成するコマンドで実行してみました。

cat /dev/urandom | head -c $((720 * 720 * 3)) | convert -depth 8 -size 720x720+0 rgb:- -quality 100 noise_image.jpg
JPGクオリティ ファイルサイズ
10 43.7 KB
25 111.2 KB
50 194.2 KB
100 1478.2 KB

Frameのカメラからの画像取得のjpgクオリティパラメータは、10,25,50,100から選べます。それを模して実験してみると、実は50,100のパラメータだとメモリに乗り切らない可能性があるな。という感触があります。もちろん。これはノイズ画像なので、jpgに対して厳しいデータセットになっているので、あくまで目安的な数値です。それでも結構、マイコンのメモリ的には厳しい作業させている感があります。

Proって名前につけたら何やってもいい

 これはXR界隈のジョークですが、「Proって名前につけたらなにやってもいい」という流言があります。業界の最先端のイノベーティブな製品。もっというとエッジの効いた尖っており売れるか売れないか分からないようなプロトタイプ色が強い、玄人向けの製品には名前にProとつきやすい。という話があります。Frameも割とそういうタイプの製品である風を感じます。
 その証拠にというわけではないのですが、割と一般流通を目指したQuest3にはFPGAが乗ってないんですよね。
 ここまでのギャグ?が正しいとすると、Frameという製品自体、ハードウェア的にもプロトタイプ傾向が強いものであると感じられます。

ARグラスのアキレス腱

今回のFrameの調査をして思うことはあります。

なぜ最新のARグラスのハードウェア構成をここまで公開できるのか?

本来、このような技術は秘匿している必要があると思います。しかし、そうではないとすると、公開されている情報に価値がないから。 だと思います。逆に言えば、

ハードウェア構成を公開しているという触れ込みのなか、非公開にしている情報は何か?

の方が、重要だと感じています。端的に言うと、

  • マイクロOLED
  • ウェーブガイドレンズ

前者についてはある程度、考えていて、ソニーのマイクロOLEDじゃないかなと。

 XR界隈では、かなり採用実績があり、AVPもXRealも、このソニー製のマイクロOLEDだそうです。結構調べたんですが、1インチを切るようなマイクロOLEDでフルカラー、640x480の解像度が出るものはソニーぐらいしか作ってない感じがあります。EPSONがMOVERIOというものを作っているので、モジュール自体は存在しそうなんですが、一般で手に入る口がなさそう。
 どうもこのソニーのマイクロOLEDはソニーとNDAを結ばないとデータシートが手に入らないようです。これは邪推の域になるんですが、コードを公開したい。という意思がBrilliant Labにはある。しかし、NDAを結んでいる手前、下手な情報は出せない。ということで、コード上でドライバ部分を公開はするが、回路図からは削り、具体的なディスプレイの品番を隠すことで、機密保持を回避してるんじゃないかなーと思ったりしました。ただし、このマイクロOLEDに関する課題は、技術的なハードルというよりかは商習慣的なものであると思います。
 もう1つはウェーブガイドレンズです。いわゆる光学系で特殊な素材が必要になります。日立さんの資料にいい資料があったので掲載します。

image.png

 先ほど話していた、マイクロOLEDがデジタル映像を出力している部品になります。これを光学的に反射をし、目から見える風景(外光)と合成するような挙動をするのが導光板(ウェーブガイドレンズ)の仕組みになります。
 私もぼちぼち探しているんですが、この導光板の価格帯や個人での入手手段はわからない。おそらく現在だと業者に対する特殊な発注だと思います。「導光板を手に入れる手段がないから他社は作れない」から、「最新のARグラスのハードウェア構成をここまで公開できる」 となっている気がします。

感想

 ある日、Brilliant Frameを知り、ふーんと思って、適当に見ていました。それは、基本的にスタンドアローンで動かないARグラスに個人的に興味がなく、スマホと一緒に使うやつはなぁ。ぐらいの感覚でした。しかも、割とこういうタイプは、自分でアプリをかけないタイプの方が多いです。そのため、やっぱりいまいちな気持ちになっていました。ただ、SDKが公開されていることを知り、見てみると、ハードウェア構成まで全部公開していたため、びっくりしてめちゃめちゃ調べました。
 やっぱり1つモデルケースがあると面白くて、その仕様を深堀していくと、その設計思想のようなものを垣間見ることができて、これはこれでやはり面白い遊びだったりします。低価格帯に収めるためにマイコンとFPGAにムリさせて、仕様をガリガリに削ってる当たりは中々渋さを感じます。いやぁ楽しい。
  ・・・といいながら、私はBrilliant Frame買ってないんですけどね。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?