ARクラウド "Pretia" にSLAMを実装するための挑戦

SLAMとは何か

SLAMは、ロボット(またはデバイス)がセンサーを通じて空間情報を理解できるようにする方法論のことを表しています。

例えば、SLAMを使うとロボット(またはデバイス)と「ランドマーク」の間の相対的な位置関係を知ることができます。

SLAMの応用例…清掃ロボット、AR/VRヘッドマウントデバイス、倉庫自動化ロボットなど

倉庫自動化ロボットの例

Pretiaでは、現状スマートフォンによるAR体験の構築をターゲットにしているため、ビジュアル(カメラ)方式でSLAMを実現しています。

なぜARクラウド "Pretia" にSLAMが必要なのか?

ARクラウド "Pretia" プロジェクトにおけるSLAM活用の特徴を簡単に説明します。

・仮想オブジェクトを現実に出現させる
・環境内の仮想オブジェクトとのインタラクションを作る
・仮想オブジェクトのステータスをほかの人と共有する

これらすべての機能は、空間認識に基づいています。

例えば、デバイスが既に空間の情報を持っている場合、デバイスと仮想オブジェクト(またはランドマーク)の間の正しい相対位置を知っているので、仮想オブジェクトを正しい位置に出現させることができます。

つまり、ARクラウド "Pretia"では、SLAM技術を使って空間を認識し、現実世界(環境)の中に仮想物体を置くことで、ARの目的を達成しているのです。

また、Pretiaはスマートフォンをターゲットにしています。ほとんどの携帯電話にはカメラが1つしかないため、単眼Visual SLAMを採用しています。

ARクラウド "Pretia" プロジェクトでのSLAM活用における挑戦

PretiaではSLAMソリューションのパフォーマンスを低下させるいくつかの問題を解決し、当初の狙い目的を達成しています。この記事では、代表的な3つを紹介します。

1. 絶対距離の復元

トラッキング後のデータで現実における距離を復元することができない問題は、純粋な単眼ビジュアルSLAMソリューションで常に発生します。
(複眼カメラモジュールはスケールを回復することができます。)

単眼カメラで"本当の"距離はわかるか

この不確かなスケールをトラッキングに使用する場合、誤差は他のランドマークやカメラのポーズに無限に伝播しエラーの原因になります。

では、この問題を解決するにはどうしたらよいのでしょうか?
ここでは、仕様を考える上でベースになる2つの一般的なアイデアを紹介します。

a. IMUセンサーから(従来の方法論)

  1. センサーから加速度情報を読み取り、加速度→速度→並進と積算する。

  2. カメラの移動量とIMUからの移動量を比較することで、絶対的な距離を復元する

b. カメラ(/2D画像)参照オブジェクトから(現代的方法論)

  1. 2D画像からテーブル、ソファ、窓などの意味的な物体を検出する。

  2. データベースを参照し、オブジェクトのサイズの初期推測を行う。

  3. 2D画像の意味オブジェクトとオブジェクトのサイズの初期推測を比較することで、絶対的な距離を復元する。


2. Relocalization (自己位置推定)

友達がとある場所でARゲームを体験していて、自分もその中に入りたいと思ったとします。

この状況をスマートフォンはどのように扱うのでしょうか?

あなたの友人はすでに周囲の空間情報を持っているので(友人、またはゲーム開発者がすでに環境をスキャンした前提です)、あなたは空間をスキャンする必要はなく、ただ加わるだけでOKです。
このプロセスは、SLAM分野ではいわゆる「Relocalization (自己位置推定)」と呼ばれるものです。

要するに、既にあるマップ(既知の空間情報)を参照することで、誰か(あるいはデバイス)が自分が空間のどこにいるかを知ることができる、という処理です。

しかし、現実は変化します。下記のシナリオを考えてみましょう。

a. 環境の変化(明るさ、ものの移動など)

環境の変化が少なれば、Relocalization (自己位置推定)はうまくいきます。
しかし、人や物が移動したり、照明環境が変わる場合はどうなるでしょうか? 

同じ部屋? 違う部屋?
同じ場所から撮影した画像?


b. マップの結合・アップデート

例えば、ある喫茶店の中をスキャンしたとします。

数週間後、その喫茶店のレイアウトが変更された場合、当然再度スキャンする必要があります。この場合、動いた部分だけをスキャンして元のマップに統合しなければいけません。


この2つのシナリオから、精度と使いやすさを両立するリローカライズの仕組みを実装する必要があることがわかります。

3. マップスコアとスキャンのガイドライン

スキャンを行う際、どの方向に進めば良いかを教えてくれるガイダンスがあれば、良いマップを簡単に作ることができます。

しかし、このテーマには2つの大きな問題があります。

  • "いいマップ" の定義

  • "どちらの方向に進む必要があるか" をどう決めるか

このテーマはNBV、Next Best Viewと似ています。


Pretiaにおける将来のSLAM活用

多くの開発者に "Pretia" を使っていただけるようになると、解決しなければならない問題や実装すべき機能が増えていきます。

現状は問題を解決するために伝統的なコンピュータビジョンと最適化アルゴリズムを既に適用していますが、それでもなお、パフォーマンスを向上させる大きな余地があります。

私たちは、これらの問題を解決または改善するために、いくつかの最新の方法論(ディープラーニングなど)を導入しようとしています。

もし空間認識やSLAMの活用に興味がある、いいアイディアがある方がいたら、PretiaのR&Dチームで一緒に働きませんか? 一緒に世界レベルのARクラウドを作り上げましょう!

著者

Pretia Technologies Inc.のコンピュータビジョンエンジニア。6年以上SLAM(VSLAMとLidar SLAM)に取り組み、ロボット、ドローン、AR、VRなどの分野で経験あり。SLAMやその関連技術を改善し、日常生活に取り入れたいと考え日々取り組んでいる。

参考文献




この記事が気に入ったらサポートをしてみませんか?