「ポケモンGO」に見る、Augmented Realityの目指す未来【ティーポットの独り言】
近況:夕暮れ時に、近所にあるお洒落なAMD本社を訪ねてみました。綺麗な建物ですが、来年には引っ越してしまうそうです。
こんにちは、あるしおうねです。先日、Twitter上で本連載の要望についてアンケートを取ったのですが、技術紹介の要望が多いようなので、その辺を優先的に紹介していければと思います。
SVVRを取り上げた第1回に続く今回は、リリースと同時に爆発的な人気を誇る「ポケモンGO」で再び脚光を浴びている、ARの位置づけとその向かう先についてお話してみようと思います。
同ゲームでは、ポケモンを捕まえる際、カメラ画像に3DCGのポケモンを重畳したAR的な画面が表示されることもあって、世間的にもARゲームと呼ばれることが多いと思います。ただし、このAR的な画面は、現実空間上の正確な位置にポケモンを表示しているわけではなく、あくまで「ARっぽさ」を増すための演出にとどまります。そのシンプルな演出でも多くの人が熱中しているのは、ポケモンが現実にいてくれたらどんなに楽しいか、と強く願われているからこそかもしれません。
ポケモンGOのスクリーンショット。App Storeより引用。
しかし、ポケモンGOのゲームとしての本質は、このAR的な画面よりも、むしろポケモンがいる場所=ロケーションにプレイヤー自らが移動する行動にあります。このような、現実のロケーションにデジタルな情報を組み合わせるゲームは、ポケモンGOと同一のインフラを共有するIngressに代表される「ロケーションベースドゲーム※1」というジャンルがあり、さらに広い意味では「ロケーションベースドサービス」と呼ばれています。
ロケーションベースドサービスでは、スマートフォン等のデバイスに搭載されたGPSで位置、コンパスで方位を計測し、サーバ上に準備されたデジタルのマップ上から、位置、方位に応じた情報を取得するシンプルな仕組みです。この種のサービスは、皆さんが日常的に使われているGoogleマップといった地図アプリが身近な代表例になると思います。また、かつて同じくARとして話題になった「セカイカメラ」もこの部類に入ります。
このようなロケーションベースドサービスでは、GPSやコンパスが正常に動作する限り全世界で使用できる一方で、主にGPSの位置計測誤差によりメートル単位でずれが生じ、正確な位置上に情報を出すには今のところ限界があります(GPS自体を超高精度化する研究開発も行われていますが、本文では言及しません)。
セカイカメラ。
では、「現実空間上の正確な位置にポケモンを表示」するためには、どのような技術があるのでしょうか? おそらく、多くの人が想像するのが「ARマーカー」と呼ばれる目印だと思います。
ARマーカーの例(コルドバ大学で開発されたArUco)※2
スマートフォンなどのカメラでARマーカーを撮影すると、画像認識によってマーカーの位置と角度を計算し、その上にCGを重ね合わせることができます。このようなARマーカーは印刷物としての配布が容易というメリットはありますが、あらかじめマーカーを準備する必要があるため、ポケモンGOのようにいつでもどこでも、といったケースでは不向きです。
そこでARの適用範囲を広げるために、事前に準備した特定のマーカー=特徴を用いずに、周囲の環境の見た目や形状=自然画像特徴を手掛かりにした画像認識によって、視点の位置と角度を計算する手法が開発されています。マーカーなしで、自然画像特徴で位置や角度を求めるためには、下記の機能が追加で必要になります。
1. 事前に取得された自然画像特徴(「特徴マップ」と呼びます)と照合して、合致する位置、角度を求める(「ローカライゼーション」)
2. 特徴マップが存在しない場合は、現在の位置と角度を初期位置として設定し、3.の特徴マップへの追加を開始する(「イニシャライゼーション」=初期化)
3. 位置、角度が求められていて、新規の自然画像特徴が取得できた場合は、新たに特徴マップへ追加してローカライゼーション出来る範囲を広げる(「マッピング」)
4. 特徴マップの誤差が大きくならないように、マップの修正を適宜行う(バンドル調整、ループクロージャなどの手法があります)
この1~3.を同時に行える技術のことを、「SLAM」(Simultaneously Localization And Mapping)と呼んでおり、市販されている製品(と言っても開発者向けですが)ではGoogle TangoやHoloLensがこの技術を使用しています。なお、実用向けのSLAMでは4.も必須で、さらにジャイロやコンパス等のセンサも組み合わせて使用されています。
最新のSLAM技術の例、DSO:Direct Sparse Odometry※3
では、このSLAMを使えばもっとリアルなポケモンGOがすぐ作れてしまうのか?……というと現状ではまだ下記のような課題があります。
・自然画像特徴に乏しい場所(白い壁だけの場所など)だと位置、角度が計測できない
・見た目が同じ場所(例えばマンションの2Fと3F)を区別できない
・特徴マップが取得された場所の範囲内でしか使用することができない(SLAMでは3.の機能で少しずつ範囲を広げることは可能です)
以上から、現状ではロケーションベース:全世界+低精度、SLAM:局所+高精度という正反対の特性を持つことが分かると思います。では、双方の両立は不可能なのか?というとそんなことはなく、もちろん全世界で高精度に位置合わせを行えることが理想で、この環境の実現に向けて各企業や研究機関で精力的に研究が行われています。
やや古い動画ですが、当時Microsoftに所属されていたBlaise Agüeray Arcas氏(現在はGoogleに移籍)のTEDの講演では、BINGマップのストリートビューを特徴マップとして使い、現在スマートフォンをかざしている位置、角度上に、ライブの動画像を重ねた様子を見ることができます(動画の3分50秒辺りから説明が始まります)。SLAMとGPS、そしてネットワーク経由で共有化された全世界の特徴マップを組みわせることで、このような精密なAR環境を全世界で使用することができるようになります。
Blaise Agüeray Arcas氏がTEDで登壇した動画のスクリーンショット。
全世界でARが常時可能になるとどうなるか? 「電脳コイル」というアニメを見た方であればすぐにピンと来ると思いますが、現実空間に情報空間のレイヤーが一段増えた環境が手に入るということです。つまり、スマートフォンやPCの狭い画面に縛られることなく、現実空間のすべてをPCのデスクトップのように扱えるようになります。
現実空間上の位置に応じた情報を付加できるため、例えば食事をしたいときには、周囲の飲食店の名前、場所やその評判、混雑状況などあらゆる情報が、電脳メガネ越しに周囲を見回すだけで得られるようになります。好きな場所や物にメッセージの入ったタグを貼り付ける、リアル空間でのソーシャルネットワークも流行るかもしれません。セカイカメラにも近いサービスはありましたが、使用する時にデバイスの電源を入れるような使い方でなく、電脳メガネのように必要に応じてすぐに使える環境でこそ本領を発揮するように思います。
また、このような精密な位置情報は、このところ研究が活発化している自動運転車にも必須のインフラになります。さらに先の話になると、人の生活空間内で動作するロボットも、同じインフラを用いて位置やその他行動に必要な情報を取得することになるはずです。
Googleの自動運転車。「Google Self-Driving Car Project」のページより引用。
つまり、ARは特定の技術でもアプリでもなく、「人(や機械)に情報空間のレイヤーを提供する汎用のインフラ」が本質的な姿なのです。その意味で言えば、Ingress/ポケモンGOは厳密な位置合わせこそ行っていないものの、共通した位置情報インフラを用いたゲームという意味で、将来的にはAR向けインフラを用いるゲームの嚆矢と呼ばれるようになるかもしれません。
NianticのJohn Hanke CEOが「まだポケモンGOは全機能の10%程度しか実装されていない」(Comic-Con International 2016での発言より)と述べているように、未だ完成形ではないとされています。このようなキラーアプリが出現してしまった以上、ベースとなるARインフラや対応デバイス(本格的なARデバイスであるGoogle Tango対応スマートフォンは今年中に発売予定です)は今後急速に整備され、同時にその他のARアプリ、ゲームもどんどん進化していくことが予想されます。今後数年のポケモンGOを含むAR界隈は、目が離せない物になりそうです。自分も、末席ながらその進化をお手伝いしていくことができれば、と思っています。
※1 GPS専用端末を使った宝探しゲームの「ジオキャッシング」が元祖とされています。
筆者も低性能なGPS端末を使って少しだけ遊んでみた(そして挫折した)事があります。
※2 ArUco: a minimal library for Augmented Reality applications based on OpenCV
※3 DSO: Direct Sparse Odometry
(TEXT by あるしおうね)
●関連リンク
・ポケモンGO