catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

Microsoft hololensへの期待

久しぶりのブログ記事です。かたりぃなです。

MicrosoftHMD(ヘッドマウントディスプレイ)のデベロッパー向けエディションが日本で発売されるという話を耳にして歓喜しています。

Microsoft HoloLens の日本での提供について | News Center Japan

APIリファレンスも一通り流し読みしたので、私自身の見解を簡単に整理したいと思います。読み間違い・勘違いも含まれている可能性がありますので、詳細は公式サイトをあたってください。

hololensとは?

公式サイト:Microsoft HoloLens | Official Site

 AR(拡張現実)とVR(仮想現実)のさらに進んだ概念としてのMR(複合現実)を実現するためのデバイスです。

利用側からみた特徴としては

  • Windows10搭載
  • 透過型ディスプレイ
  • スピーカ、マイク、カメラなどの現実世界と情報をやり取りするためのデバイスを内蔵

といったところでしょうか。

アプリ開発側からみた特徴としては

  • Intel32bitCPUと、それに付随するDSPか何のでリアルタイム演算
  • Windows10のストアアプリとして配信可能(UWPアプリ)
  • 3DグラフィックのレンダリングはDirectX11世代
  • Unity対応
  • 開発用エミュレータを動作させるにはHyperVが必要

さっそくエミュレータを試そうとしみましたが、残念ながらうちのOSはWindows10-Homeのため、HyperVを動かせないので環境作るためにしばらく保留状態です。

またWindows8以降から標準搭載されているWindowsストアでのアプリを配布ですが、Windows8発売当初は開発者向けには「ストアアプリ」と銘打ってVisualStudio用のテンプレートの配布などが行われていましたが、今は複数のデバイスにパッケージを共通化して配布するための仕組みとして「UWP(ユニバーサルウインドウズプラットフォーム)」が標準となっています。開発言語としてはC#,C++/cxなどが利用できるようです。

C++/cxって何ぞ?と思って今色々試している最中ですが、利用目的から解釈すると「ストアアプリで配布するアプリを作るためにMicrosoftがマネージド拡張を施したc++」です。

開発環境はこれくらいにして、ハードウェア的な課題も既に見えていて次のようなものがあります

  • 視野角が狭い
  • バッテリー駆動時間(2~3h)

特に視野角についてはMicrosoftも認識しているようで、今後改善していくようです。

 

VRとAR

hololensの仕組みの詳細に入る前に、世間一般を賑わせているVRとの違いについて。Oculusとか最近だとPSVRなんかが有名で、視界全体を覆うHMDを使うことで仮想空間への没入感を高めてユーザー体験を向上させようというアプローチです。

VRは仮想世界を主とし、そこに対していかにしてユーザー体験を向上させるかといったアプローチですが、ARは現実世界ありきで、そこに対して付加価値を提供していくかといったアプローチになります。

MRはさらに進んだ概念で現実世界と仮想世界の融合を目指すもので、どちらかといえばARの延長上(ARを包含するといったほうが正しいのかな)にある概念です。

 

hololensの原理を考える

原理はあちこちの記事で述べられているので関連しそうな技術要素だけ簡単に整理します。

現実世界に立体像を表示するという研究や成果は既にあって、例えば日本では

空中ディスプレイ エアリアルイメージングパネル

なんかがあります。

ここで案内されている展示場所に行けば実体験できるので、直接行けるなら実体験したほうが早いと思います。実際に触ると感動とともに課題なんかも見えやすいので。

実際に試させてもらいましたが、空中に結像されたメニューをそのまま選択する方式はユーザーにフィードバックが無いためちょっと難しいと感じました。

こういった技術を応用すれば現実世界で目的の場所に結像はできるわけですが、次はその位置を確定する必要があります。このあたりはおそらく

  • kinectと同様の深度センサを使って奥行を検出
  • 空間マッピングのためのアルゴリズム(ptam?dtam?slam?)
  • hololens自身の位置推定に加速度センサとジャイロセンサを使う

あたりかなと思っています。ptamとかよくわかってませんが。

機能を個別にみていくとhololensは基本的な機能は揃っているわけで、あとは拡張現実感を出すためのノウハウが必要になると思います。

加速度と角速度を使った姿勢推定ではカルマンフィルタや相補フィルタが有名です。

拡張現実感を出すためには現実と仮想の世界の間での誤差が小さいほど良い結果になりますが、この誤差を小さくする(外れ値とかノイズ対策?)機能としてアンカー(詳細は開発者マニュアルを参照)を置いてオブジェクトを固定するという解決ができそうです。

 

何ができるの?

応用分野の話になるので少しそれますが、こういうのとか楽しそう。海外のほうが先行してますね。

「遊戯王」のデュエルシーンが現実に!マイクロソフト製ARメガネ「HoloLens」でリアル再現した動画が話題に - Character JAPAN

 

以前PCのUSBカメラでやってみたもの

ARの原理実験 - catalinaの備忘録

 

カードゲーム好きなのでよく遊んでいますが、これをそのまま実現することはやっぱり困難があると思います。

既に分かっている課題は

  • カード種別の認識をどうやるの?
  • モデルデータをだれが作るの?

あたりです。

データが無いのは諦める(え?)として、カード種別は非常に膨大で、発売元が存続する限りは増えるので、画像分類問題のラベル(種類)が増えても有限時間内で種別を判断できるアルゴリズムがほしいなと思っています。(それが今まさに読んでるPRMLだったりするわけですが。)

 

まとめ

horolensは夢を現実にしてくれる気がします。そんな夢を買うために$3000という金額が必要になるわけですが。

本職は技術屋なので、自分への投資と思って買うのもアリかなと思いつつも悩みます。

まだ正式な発売まで時間はありますし、開発者向けのあとの一般向け販売ではもうちょっと手を出しやすいお値段になるとは思うので、情報を集めて整理しつつ考えましょう。

では今回はこのあたりで。