モバイル

スマートフォンは、現存する中で最も広く展開されているSLAMプラットフォームである:最近のすべてのiPhoneと大半のAndroid端末は、システムサービスとしてビジュアル・インナーシャル追跡(ARKitとARCore)を実行している。したがって「モバイルSLAM」に取り組むことは、2つの異なるスキルを意味する:ネイティブなアプリ言語からプラットフォームの追跡スタックを利用することと、SLAMエンジニアとしては、カスタムのC++知覚コードを電話のハードウェア上でうまく動かすことである。

Android(Java/Kotlin)。 アプリケーションはKotlin(またはJava)で書かれるが、SLAM級のコードはNDK経由でC++で実行され、JNIでブリッジされる。重要なプラットフォーム要素は、フレームアクセス用のCamera2/CameraX(タイムスタンプと露出メタデータ付き)、IMUデータ用のセンサーAPI、そして自前の追跡を実装する代わりにGoogle組み込みのモーション追跡を利用したい場合のARCoreである。Android SLAM開発の実務的な現実として、カメラ-IMU間の時刻同期の品質が端末ごとに大きく異なることや、熱によるスロットリングが「リアルタイム」の意味を左右することが挙げられる。

iOS(Objective-C/Swift)。 アプリケーションはSwiftで書かれ(レガシーコードはObjective-C)、C++は直接統合される(Objective-C++やSwiftのC++相互運用)。AVFoundationがカメラフレームを、CoreMotionがIMUを提供し、ARKitはAppleの緊密に統合されたVIOを公開している — 工場で校正され良好に同期されたカメラ-IMUハードウェアのおかげで、コンシューマー向け追跡品質のベンチマークとして広く見なされている。MetalとCoreML/ANEは、学習済みコンポーネントのためのGPU計算とニューラル推論を担う。

センサー配線:モバイルVIOの生死を分けるところ

実務チェックリスト

SLAMエンジニアにとって、モバイル特有のチェックリストは両プラットフォームでほぼ同じである。

永続化と共有体験

プラットフォームスタックはまた、内部的には純粋なSLAMであるマップレベルの機能も公開している:ARKitは地図をシリアライズできる(ARWorldMap)ため、アプリはセッションを保存して後で再位置特定できる。ARCoreのCloud Anchorsは複数の端末が同じアンカーを解決できるようにする — サービスとしてのクロスデバイス再位置特定である。これらが内部で何をしているか(場所認識、地図マージ、再位置特定)を知っておくことで、いつこれらに頼れるか、いつ自前のマッピング層が必要かが正確にわかる。

SLAMにおける意義

モバイルARは、ビジュアル・インナーシャルSLAMが大規模展開に出会った場所であり、電話の制約(厳しい電力予算、ローリングシャッターカメラ、コンシューマー級のIMU)がこの分野の工学的な優先事項を形作ってきた。ARKit/ARCoreの上にアプリを構築するのか、それらと競合するのかにかかわらず、モバイルスタック — センサー配線、ネイティブ/マネージド言語のブリッジ、熱に制限されたリアルタイム性 — を理解することは、現存する最大のプラットフォームにSLAMを届けるために不可欠である。

関連ノート