ネイン開発メンバーブログ

サヨナラ、スクリーン。ヒアラブルサービスを開発している株式会社ネインの、開発ブログです

SLAM(自己位置推定)の各種技術まとめ

先月ネインに入社したJと申します。3D-CADでハード系の開発を担当しています。

前々回、スガがOPEN-VSLAMの動作テストについて紹介しました。その続きの話になります。

今回のテーマ
●なぜネインでSLAMを探っているのか
●各種SLAMの特徴
●アップルのARKITについて


なぜネインでSLAMを探っているのか

ネインではXR(AR/MR/VRの総称)で「空気を読む」世界を作ろうとしています。
https://www.pc-webzine.com/entry/2019/06/post-308.html

ARのテクノロジーは主に2つから成り立っています。
 ①カメラ画像の平面や物体を認識し、3次元空間を作成する。
 ②撮影している位置が、3次元空間内のどこにいるのかを把握する。

これを実現する方法の一つとして、SLAMに注目をしています。


各種SLAMの特徴

SLAMは画像で行う「vSLAM(Visual SLAM)」と、光センサで行う「LiDAR SLAM」があり、
vSLAMはスマホやドローンなど小さなハードウェアに利用されています。
(LiDAR SLAMは大きく高価なものが多いので、自動車等の大きなハードウェアに利用)

vSLAMはさらにいくつかの方式(PTAM、DTAM、LSD-SLAM、ORB-SLAMなど)があり、
ORB-SLAMの動画でリアルタイムに地図作成と自己位置推定を行っている様子を知ることができます。
https://www.youtube.com/watch?v=JyG1EeqCmHY

SLAMは主に①トラッキング(追跡) → ②デプス推定 → ③マップ生成を行います。
特に後期に開発されたSLAMでは同じ位置を検出したときに「ループ検出」を行い、
補正することで地図精度を高めています。
(動画では50秒付近で"LOOP CLOSED"と表示され、瞬時に地図を修正しています)

f:id:nain-team:20191101213024p:plain

SLAMの歴史と特徴をまとめました。

f:id:nain-team:20191101213139p:plain


APPLE ARkit、Google ARCoreの特徴、SLAMとの比較

AppleからARKit、GoogleからARCoreといったAR開発プラットフォームがリリースされ、
数多くのARアプリが開発されています。

f:id:nain-team:20191101213221p:plain

ARKitやARCoreは図2のVO(Visual Odometry)の進化版、VIO(Visual Inertial Odometry)を使っていて、
カメラ画像+加速度センサ+ジャイロセンサで自己位置推定を行なっています。

VIOは局所的な狭い範囲でのARに焦点を置いているため、計算コストが低い利点があります。
SLAMは広範囲に焦点を置いているため、精度が高い利点があります。

今後open-VSLAM以外も動かして、それぞれのSLAMを比べたいと思っています。

特に参考にさせていただいたWEBサイト
https://qiita.com/k-boy/items/1de8e9ed1260834d02af
https://noshumi.blogspot.com/2017/05/visual-slam-1visual-slam.html