maplab

Schneider 2018 · 논문

한 줄 요약 — 다중 세션 지도 병합, 오프라인 배치 최적화, 그리고 ROVIOLI(Localization Integration이 추가된 ROVIO)를 중심으로 구축된 드리프트 없는 재위치추정을 갖춘, 시각-관성 *지도 제작(mapping)*을 위한 오픈 연구 프레임워크로, 지도를 매 실행마다 버려지는 부산물이 아니라 지속적이고 다룰 수 있는 자산으로 취급합니다.

문제

대부분의 VIO 시스템은 단일 세션 로컬 지도를 생성하고 각 실행 후 이를 버립니다. 실제 배포에서는 지속적인 지도, 드리프트 없는 전역 자세 추정을 위한 이전 지도 대비 재위치추정, 서로 다른 로봇 또는 서로 다른 시점에서 구축된 지도의 병합, 그리고 수집 후 전체 지도를 개선하는 오프라인 최적화가 필요합니다. 논문이 지적하듯, 기존 솔루션들은 “단일 세션 사용 사례에만 초점을 맞추거나, 재위치추정 능력이 부족하거나, 종단 간(end-to-end) 파이프라인이 없습니다”—최신 알고리즘, 확장 가능한 다중 세션 도구, 유연한 사용자 인터페이스를 결합한 완전한 시스템만이 효율적인 연구 플랫폼이 될 수 있습니다.

방법 및 아키텍처

maplab은 두 개의 주요 부분으로 구성됩니다: 온라인 프론트엔드 ROVIOLI오프라인 maplab 콘솔입니다.

ROVIOLI는 ROVIO 필터를 재위치추정 및 지도 구축 기능으로 감쌉니다. 그 모듈들: 특징 추적은 BRISK 또는 FREAK 키포인트를 검출하고 추적하며, 통합된 자이로스코프 측정값으로 예측된 윈도우 내에서 프레임 간 디스크립터를 매칭합니다; LOC 모드에서는 프레임 재위치추정이 제공된 재위치추정 지도에 대해 2D-3D 매칭을 수립하고 RANSAC 내부의 P3P로 전역 자세 TGIk\mathbf{T}_{GI_k}를 계산합니다; 이러한 원시 전역 자세들은 ROVIO에 입력되어 오도메트리 제약과 융합되어 전역-미션 변환 TGM\mathbf{T}_{GM}과 로컬 자세 TMI\mathbf{T}_{MI}를 함께 추정합니다; 지도 빌더는 모든 출력을 동기화하여 VI-맵으로 만듭니다. 두 가지 모드: VIO(드리프트하는 로컬 추정값으로 지도를 구축)와 LOC(추가로 드리프트 없는 전역 자세를 추적).

VI-맵 구조. 지도는 여러 개의 미션(세션당 하나)을 포함합니다. 각 미션은 그래프입니다: 정점(vertex)은 상태 추정값(자세 TMIk\mathbf{T}_{MI_k}, IMU 바이어스, 속도)과 키포인트, 이진 디스크립터, 추적 정보를 보유하며; 엣지(가장 흔히 IMU 엣지)는 정점 사이의 관성 측정값을 보유합니다. 랜드마크는 다중 정점 관측으로부터 삼각측량되어 첫 관측 정점에 저장됩니다. 각 미션은 단일 변환 TGMi\mathbf{T}_{GM_i}로 전역 프레임에 고정되므로—전체 세션을 정렬하려면 모든 정점을 다룰 필요 없이 이 하나의 변환만 다루면 됩니다. 자세는 표준 규약을 따릅니다.

[Ap1]=TAB[Bp1]=[RABApAB01][Bp1]\begin{bmatrix} {}_{A}\mathbf{p} \\ 1 \end{bmatrix} = \mathbf{T}_{AB} \begin{bmatrix} {}_{B}\mathbf{p} \\ 1 \end{bmatrix} = \begin{bmatrix} \mathbf{R}_{AB} & {}_{A}\mathbf{p}_{AB} \\ \mathbf{0} & 1 \end{bmatrix} \begin{bmatrix} {}_{B}\mathbf{p} \\ 1 \end{bmatrix}

지도는 Protobuf로 직렬화되며; 대용량 자원(이미지, 조밀 재구성)은 별도의 캐시된 자원 시스템에 보관됩니다.

콘솔 알고리즘(모두 플러그인으로 확장 가능하며 Ceres 기반): VIWLS—OKVIS와 유사한 비용 항을 가지며, 선택적으로 휠 오도메트리나 GPS 사전 정보를 포함할 수 있는 시각-관성 가중 최소제곱 배치 최적화; 루프 클로저/재위치추정—투영된 이진 디스크립터에 대한 역 다중 인덱스 검색; 포즈 그래프 완화(relaxation)—잘못된 루프 클로저에 대한 선택적 Cauchy 손실; 지도 희소화—ILP 기반 랜드마크 선택 및 키프레이밍; 조밀 재구성—스테레오 블록 매칭, voxblox TSDF 융합, CMVS/PMVS2 내보내기. 다중 세션 워크플로우는 문자 그대로 콘솔 스크립트입니다: 지도를 로드하고 병합한 다음, 키프레임화(kfh), 최적화(optvi), 미션 고정, relax, lc, optvi.

실험 결과

EuRoC(재위치추정 지도는 MH2에서, 평가는 MH1에서)에서: 단순 ROVIO의 위치 RMSE는 0.178,m, 사전 지도 대비 재위치추정하는 ROVIOLI는 0.082,m, 전체 VIWLS 배치 최적화 후에는 0.036,m입니다; ORB-SLAM2(스테레오)는 배치 모드에서 0.084,m를 달성하지만 실시간 모드에서는 0.464,m / 13.34°입니다. V2-medium 재위치추정 지도로 V2-easy를 평가하면: 0.064 → 0.057 → 0.027,m(ORB-SLAM2 실시간 모드는 발산). Intel Xeon E3-1505M에서의 시간: ROVIOLI는 105% CPU 부하에서 프레임당 44,ms에 처리하는 반면 ORB-SLAM2는 162%에서 63,ms입니다. 다중 세션 사용 사례: 대학 건물의 4개 세션(1,000,m 이상, ~463,000개 랜드마크)이 일관된 8.2,MB 재위치추정 지도로 병합됩니다. 지도 유지 관리: 키프레이밍과 ILP 요약은 재현율이 60%에서 51%로만 떨어지면서 지도를 13배 축소합니다. 대규모 데모: 취리히 구시가지의 Google Tango 세션 45개—231분, 16.48,km의 궤적, 730만 관측을 가진 435,000개 랜드마크, 480,MB—가 32,GB 데스크탑에서 하룻밤 사이에 정렬 및 최적화됩니다.

SLAM에서의 의미

maplab은 시각-관성 지도의 생애주기—구축, 오프라인 최적화, 재위치추정, 세션 및 로봇 간 병합—를 위한 최초의 종합적인 오픈소스 프레임워크였으며, 이러한 기능들은 이전에는 독점 AR/로보틱스 스택에만 존재했습니다. MAV, 항공기, 자동차, 수중 차량, 보행 로봇에서 실전 테스트를 거쳐, 지도 요약, 재위치추정, 분산형 지도 제작 연구를 위한 공통 기반이 되었습니다; maplab 2.0은 이를 다중 로봇 및 시맨틱 지도 제작으로 확장했습니다. 여러분의 문제가 “낮은 드리프트의 한 번의 실행”이 아니라 “여러 세션, 하나의 지도”일 때 연구할 대상입니다.

관련 문서