OpenVSLAM
Sumikura 2019 · 논문
한 줄 요약 — 호출 가능한 라이브러리로 구축된 모듈식 오픈소스 Visual SLAM 프레임워크로, ORB 기반 간접법 파이프라인과 원근, 어안, 등장방형 (360도) 카메라 모델 지원, 그리고 지도 저장/불러오기와 지역화 기능을 갖추고 있습니다.
문제
Visual SLAM은 AR 기기와 자율 로봇, 드론, UAV에 필수적이지만, “기존의 오픈소스 Visual SLAM 프레임워크는 서드파티 프로그램에서 호출되는 라이브러리로 적절히 설계되어 있지 않다.” 사실상의 표준인 ORB-SLAM, LSD-SLAM, DSO는 연구용 애플리케이션입니다: 임베딩하기 어렵고, 확장하기 어렵고, 원근 카메라로 제한되며, (논문의 비교 표에 따르면) 대부분 지도를 저장/불러오기 할 수 없습니다. OpenMVG와 OpenSfM 같은 SfM 패키지는 이미 어안 및 등장방형 이미지를 처리했지만, 실시간 Visual SLAM 프레임워크 중에는 그런 것이 없었습니다.
방법 및 아키텍처
OpenVSLAM (MM ‘19)은 C++ (Eigen, OpenCV, g2o)로 구현된 단안/스테레오/RGB-D 시스템으로, 그 기여는 알고리즘이 아니라 아키텍처에 있습니다 — 명확한 API와 방대한 문서화된 샘플 코드를 갖춘 분리된 컴포넌트로 잘 알려진 SLAM 접근법을 캡슐화합니다.
- 세 개의 모듈: *추적 (tracking)*은 ORB 키포인트 매칭과 포즈 최적화를 통해 매 프레임 카메라 포즈를 추정하고 키프레임 삽입 여부를 결정합니다. *매핑 (mapping)*은 삽입된 키프레임에서 새로운 3D 점을 삼각측량하고 윈도우 방식의 지역 번들 조정을 실행합니다. *전역 최적화 (global optimisation)*는 루프 감지, 포즈 그래프 최적화 (g2o), 전역 BA를 수행합니다. 포즈 그래프 최적화는 궤적 드리프트를 해소하며, 단안 입력에 대해서는 스케일 드리프트도 없앱니다 — ORB-SLAM/ProSLAM의 그래프 기반 간접 형식화입니다.
- 설계상 간접법: 조명 변화에 더 취약하고 롤링 셔터 (rolling-shutter) 센서에서 성능이 더 나쁜 직접법 대신 ORB 특징점 (FAST 키포인트 + 이진 디스크립터)이 선택되었습니다 — 즉 OpenVSLAM이 목표로 하는 스마트폰 및 소비자용 카메라를 위한 선택입니다.
- 카메라 모델 추상화: 원근, 어안, 등장방형 카메라가 기본 클래스
camera::base뒤에서 상호 교체 가능합니다. 사용자는 이를 상속하여 새로운 모델 (듀얼 어안, 반사굴절 (catadioptric))을 추가합니다. 원근과 어안은 단안, 스테레오, RGB-D 설정에서 동작합니다. 저자들은 등장방형 이미지를 받아들이는 최초의 오픈소스 Visual SLAM 프레임워크라고 주장합니다 — 전방향 뷰는 추적을 카메라 방향과 무관하게 만듭니다. - 지도 I/O와 지역화: 지도는 MessagePack 형식으로 저장/불러오기 되며 (서드파티 애플리케이션에서 재사용 가능), 새로운 프레임은 사전 구축된 지도에 대해 지역화될 수 있습니다. 크로스 플랫폼 뷰어가 웹 브라우저에서 실행됩니다.
- 평가 프로토콜: Umeyama 정렬 후의 절대 궤적 오차 — 단안(스케일까지의 궤적)에는 , 스테레오에는 을 사용합니다.
실험 결과
Core i7-7820HK 노트북에서 ORB-SLAM2와 비교:
- EuRoC MAV (단안, 11개 시퀀스): 전체적으로 ORB-SLAM과 비슷한 추적 정확도. 어두운 시퀀스 MH_04와 MH_05에서는 OpenVSLAM의 궤적이 더 정확한데, 추가적인 강건한 매칭 프레임 추적 방법 덕분으로 여겨집니다.
- 추적 시간, EuRoC MH_02: 평균 23.84 ms/프레임 대 ORB-SLAM의 27.96 ms (중앙값 23.38 대 24.97) — 더 빠른 ORB 추출과, 전역 지도가 커져도 지역 지도가 커지지 않도록 유지되는 방식 덕분입니다.
- KITTI Odometry (스테레오, 11개 시퀀스): 비슷한 ATE; 시퀀스 05에서 평균 56.32 ms/프레임 대 68.78 ms (중앙값 54.45 대 66.78), 이미지가 더 크고 더 최적화된 스테레오 매칭 구현 때문에 격차가 더 큽니다.
- 정성적 결과: 야외 (약 6400프레임, 고도 변화, 높은 명암 대비 장면)와 실내 (약 6700프레임)에서 성공적인 어안 매핑; 등장방형 THETA V로 1만 5000프레임의 야외 시퀀스를 성공적인 루프 클로징과 함께 매핑했으며, 전방향 관측 덕분에 질감이 없는 영역에서도 실내 추적에 성공했습니다.
SLAM에서의 의미
OpenVSLAM은 벤치마크 정확도만이 아니라 사용성과 통합을 위해 설계된 최초의 SLAM 코드베이스 중 하나였으며, 연구계와 산업계에서 임베딩 가능한 컴포넌트로 널리 채택되었습니다 — 특히 다른 오픈소스 시스템이 지원하지 않던 파노라마 캡처 리그 (rig)를 위해서였습니다. 그 역사에는 하나의 교훈도 담겨 있습니다: GPL 라이선스인 ORB-SLAM2에서 파생된 코드에 대한 우려로 원본 저장소가 삭제되었고, 커뮤니티는 Stella-VSLAM으로 개발을 이어갔습니다. 잘 정리된 특징점 기반 SLAM 아키텍처를 공부하기 위한 좋은 입문 자료로 남아 있습니다.