本日はイベント参加枠です。
昨日8月20日はHoloLens界隈でも活躍されているHoloRangerイワケンさん主催のイベント『VPS開発座談会』が開催されました。
イベントの内容自体ボリュームがあるので今回は前編です。
〇イベント概要
イベントではZoomでビデオ通話を行いながら、オンラインホワイトボードサービスであるMiroを使用してコミュニケーションが行われました。
Miroを初めて触るメンバーも多いためアイスブレークを兼ねて最初に好きな食べ物・苦手な食べ物というテーマで付箋を貼っていきました。
〇主催
ファシリテーターはイワケンさんで、HoloLensやUnity界隈で活躍されながら最近はBabylon.jsなどの先駆者として活動されています。
今回はイワケンさんのコミュニティに所属され今回トークもされるにー兄さんさんの声をきっかけにみんなでVPS触ってみようということで開催され、20~30名ほどの参加者で盛り上がりました。
〇イベントの目標
イベントではただセッションを聞くだけではなく、居酒屋トークのノリで参加者全員が界隈でプレゼンス工場を目標として開催されました。
コンセプトとして『LTだとためになる話をしなければならない』というプレッシャーが一般的にあるものの今回は『楽しく話す』というノリで設定されました。
〇イベントの構成
イベントではただ、登壇者と参加者、いう役割だけではなく、私含めレポートやメモ担当なども合わせ全員がよりイベントにかかわれるように構成されていました。
筆者自身もVPSはなんとなくでしか理解していなかったため、初心者目線で記録を残していきます。
〇スケジュール
スケジュールとしては16時から開催され19時ごろまで3時間ほどで開催されました。
〇トーク
〇VPSまとめてみた byがちもとさん
私の師にあたる がちもとさんによる発表では『VPSまとめてみた』というタイトルでVPSの概要に関しての発表がありました。
スライドは次のリンクで共有されています。
〇VPSとは?
VPSは事前マップありの自己位置推定を指します。
対してSLAMは事前マップが無しに自己位置推定とマップの作製を同時に行うことを指します。
有名なVPSとして次のようなものがあります。
こちらの表を見るとターゲットデバイスに合わせてどのVPSを使えばよいのか一目でわかります!
〇Spatial Anchors
Spatial AnchorsはAzureで提供されている機能です。
開発者はUnityアプリ内でマップを配置することなく、屋内に様々なオブジェクトを配置することができます。
〇Immersal
3DスキャンしたデータをImmersalにアップロードすることでマップが作成されます。
〇Pretia
Pretiaの場合専用アプリが提供されており、アプリを用いて3Dスキャンを行います。
がちもとさんの ARでバスあと何分サイネージを表示することを行っていたようです。
〇GeoSpatial API
Googleが既にスキャンしたマップを用いているためユーザーはマップ作製する必要がありません。
地球規模で対応しています。
〇Gachispatial API
これはがちもとさんが独自で開発されているVPSになります。
電動車いすの自動運転などで用いているようです。
VPSを使用することで、ARCoreやARKitなどのSLAM機能を搭載していないスマートフォンやタブレットでも、精度の高い自己位置推定ができ、かつSLAMと違いすでに作成されたマップをもとに作るので地球規模や都市規模の自己位置推定ができるようです。
〇開発で触れたVPS機能の所感 bySATOSHIさん
二人目はSATOSHIさんによる発表でした。
〇Immersalを用いた所感
発表の資料は次のリンクで公開されています。
〇やろうとしたこと
Immersalを用いてJリーグのスタジアムでスマートフォンを用いて座っている一を推定して何かを起こすということをやろうとされたそうです。
まず競輪場や渋谷のスクランブル交差点で写真を撮影してImmersalにアップロードしてマップを作成することから始めたそうです。
Immersalで5分ほどで画像から点群マップを作成し、Unityで2分ほどで配置し、いったん動くことまで確認できたそうです。
その中でのSATOSHIさんの感想が次のようになるそうです。
スキャン自体は筆者が見たところとてもきれいになっているようでしたが、スキャンがとても大変とのことで、実際にやってみないとわかりにくい悩みのように思えました。(xR開発のフィールドワークはあるあるですね)
現地では1000枚以上の画像を撮影しているそうです。
これでも地面などの精度がまちまちになっているとのことで、Unityでの位置合わせも合わせ、今回共有していただいたような知見がたまっていないと難しいようです。
〇にー兄さんさん
三人目は今回の開催のきっかけになったにー兄さんさんです。
開発したものに関して共有がありました。
スライドはこちらで公開されています。
昨年から試行されていたWebARとImmersalを併せてアプリを開発されたそうです。
WebARに関しては最近筆者も軽く触ったBabylon.jsを使用しているそうです。
〇WebARで位置合わせを行うために必要な情報
セキュリティの関係などで情報を得ることが難しかったところ昨年ブレイクスルーが発生し、データを取得できるようになったそうです。
Immersal本家では、次のような実装を行っているそうです。
筆者はImmersalを知ってはいるものの触ったことがないため、実際に触る際にこの実装は処理の流れとしてとても参考になると思います。
にー兄さんさんの場合Babylon.jsを用いてRawTexture(生画像データ)を作成し、自作されたそうです。(すごい)
〇座標変換
Immersalの座標系とBabylon.jsではどちらもYが鉛直軸になっていますが、右手系、左手系と軸形態が2つで異なるようです。
これらはUnityアプリで使用する際にそれぞれ行列を使用して座標変換が必要になるようです。
3Dモデルでも軸変換がかかわっていきますが、こちらも3D情報を複数のアプリを介して使用するため軸問題が発生するようです。
こういった知識も実際に自分が使う上で直面する課題になるので、共有されてとても勉強になりました。
ここまでのトークをまとめると
VPSとはSLAMと異なり事前に作成したマップを使用した自己位置推定であり、ImmersalやAzure SpatialAnchors、Pretiea、GeospatialAPIなどが有名です。
実際に運用するために動くことを確認するには短時間でできるものの、精度という意味で工夫が必要になるようです。
またBabylon.jsを用いたWebXRの実装も行えるようで、自前実装する際にはUnityとのアプリ間の軸関連など意識することがありそうです。
筆者は改めて触ったことはあるけどVPSとして意識してSLAM特別した考え方や、知識を持っていなかったと気が付き、とても勉強になる話が聞けました。
現場で実際に利用している方や自前実装しているという方の話はとても貴重で、前編の内容でまとめさせていただいたトークだけでもイベントとしては濃厚でした。
前編は以上です。明日は続きをまとめていきます。