[Paper Review] ORB-SLAM3 요약 및 설명
Visual Inertial SLAM 중 유명한 ORB-SLAM3를 요약해보자.
SLAM을 모르는 사람도 한번쯤 이름을 들어봤을 법한 ORB-SLAM3를 한번 요약해 보려고 한다.
공부를 하는 과정에서 포스팅을 했기 때문에 부족한 점이 많습니다.
문제점 및 오타가 발견되면 댓글로 알려주시면 감사드리겠습니다.
논문은 아래 링크에서 원본을 확인할 수 있다.
ORB-SLAM3의 주요 Contribution은 다음과 같다.
- 다양한 카메라 모델(pin-hole and fisheye lens models)을 지원하는 Visual, visual-inertial MultiMap SLAM system 제안
- IMU initialization을 포함하여 MAP(maximum a posteriori)기반 tightly-integrated Visual-inertial SLAM system 제안
- Mutliple MAP system을 제안 (New place recognotion method)
- 시간에 상관없이 High parallax co-visible keyframes로 부터 모든 이전의 정보를 사용하여 정확도 향상
사실 ORB SLAM을 최초로 Visual-inertial SLAM으로 확장시킨 논문은 ORB-SLAM-VI이고, ORB SLAM을 Multi map system으로 제안한 논문은 ORB SLAM atlas이다.
이 두 논문을 합치고 새로운 Initialization 전략과 새로운 place recognition method를 제안한 것이 ORB-SLAM3라고 이해하면 된다.
물론 앞서 설명했듯이 다른 Contribution 또한 존재한다.
차근차근 논문에 나와있는 내용을 살펴보도록 하자.
Introduction
최근 Modern SLAM system의 경우 Maximum a Posteriori (MAP) estimation으로 SLAM system을 해결하려 하는데 Bundle Adjustment로 최적화를 수행하는 방법이 이에 해당한다. Featrue-based method의 경우, reprojection error를 최소화하는 방법으로 최적화를 수행하고 Direct method의 경우 photometric error를 최소화하는 방법으로 최적화를 수행한다.
VO와 달리 SLAM system은 Map data를 만들어 이를 지속적으로 활용할 수 있다는 것이 장점이다. Bundle Adjustment를 수행하기 위해 이전에 관찰한 값들에 대한 Data association을 진행해야 한다. 논문에서는 크게 3가지 Data association을 이야기 하고 있다.
-
Short-term data association : VO system과 비슷하게 최근에 얻은 Map element를 이용하여 Matching을 하는 것이다. 이러한 방법은 Drift를 발생시킬 수 있다.
-
Mid-term data association : Bundle Adjustment에서 사용하는 map data와 동일한 방법으로 Map data에 대한 association을 진행하며 카메라와 가까운 Map element를 이용하여 Matching을 하는 것이다. Mid-term data association는 Short-term data association보다 더 높은 정확도를 얻을 수 있는 Data association 방법이다.
-
Long-term data association : Place recogntion에서 사용하는 방법과 비슷하게 이전에 방문했던 장소에 있는 map elements와 Matching을 하는 것이다. 이러한 Long-term matching을 통해 전체 map을 Pose-graph optimization을 진행할 수 있고 이는 SLAM accuracy를 따질 때 굉장히 중요한 요소이다.
ORB-SLAM3에서는 이러한 3가지 Data assoication을 최대한으로 활용하여 SLAM system의 정확도를 높이고 더 나아가 Multi-map data association 이라는 Data association 전략도 사용하여, 이전 Mapping session에서 활용했던 map element들과도 Matching을 한다.
다시 한번 ORB-SLAM3의 Contribution을 이야기하면 아래와 같다.
-
Maximum-a-Posteriori (MAP) 기반 monocular and stereo visual-inertial SLAM system : IMU initialization 단계에서도 MAP를 기반으로 함. 즉, ORB-SLAM-VI와 다른 초기화 단계를 사용한다.
-
Improved-recall place recognition : 대부분의 SLAM system은 DBoW2 기반으로 place recognition 문제를 해결한다. DBoW2의 경우 3개의 연속되는 keyframe이 temporal consistency를 가지고 있어야 geometric consistency를 check하게 된다. 이러한 방법은 system을 느리게 하기 때문에 ORB-SLAM3에서는 새로운 place recognition 알고리즘을 사용한다. 먼저 geometrical consistency를 check한 다음에 local consistency를 확인한다. 이러한 방법은 계산량이 더 높긴 하지만 정확도와 recall을 증가시키고, Data association을 더 조밀하게 만든다.
-
ORB-SLAM Atlas : Visual, visual-inertial system에 대해 complete Multi-map SLAM system을 제안했다. 사실 최초의 ORB-SLAM Atlas는 IROS 2019에 먼저 소개되었다. (논문링크) ORB-SLAM atlas의 extension 버전이라고 생각하면 된다. 여기에 새로운 place recognition 방법만 추가를 하였다.
-
다양한 Camera model 지원 : Pin-hole camera 뿐만 아니라, fisheye camera model에 대해서도 unprojection funtion이나 Jacobian function을 제공한다.
ORB-SLAM3에서는 위와 같은 특징과 함께 monocular, stereo, monocular-inertial and stereo-inertial SLAM mode 총 4가지 mode도 함께 제공한다.
Related Work
ORB-SLAM3 논문을 살펴보면 최근 Visual SLAM, Visual-inertial SLAM의 특징들을 정리해 놓은 Table이 있다.
Visual SLAM
Monocular SLAM은 Mono-SLAM에서 EKF와 Shi Tomasi points를 이용하여 처음 해결하려 했다. 그 다음 Mid-term data association을 개선하려는 연구가 있었다.
Keyframe based optimization 방법이 Filtering based optimization보다 정확도가 더 높다고 평가 받으며, Keyframe based Bundle Adjustment가 지속적으로 연구되었다. 이때 가장 Impact가 높았던 연구 중 하나는 PTAM이다. PTAM은 2가지 thread를 병렬적으로 처리하여 tracking과 mapping을 동시에 진행했다.
Large scale의 Monocular SLAM을 처리하기 위해 sliding-window Bundle Adjustment, double-window optimization 그리고 covisibility graph를 사용하게 된다.
이러한 아이디어를 모아 탄생한 것이 ORB-SLAM이다. ORB descriptor로 인해 short-term, mid-term data association을 진행하고, Covisibility graph를 만들어 tracking과 mapping을 진행한다. Long-term data association을 위해 DBoW2를 활용하여 relocalization과 Loop closing을 수행한다.
이러한 3가지 Type의 Data association을 모두 활용하는 것이 SLAM system의 정확도를 높이는 방법이라고 논문에서는 이야기한다.
더 나아가 ORB-SLAM3에서는 Atlas system(Multi map system)을 사용하여 SLAM system에서의 정확도를 높였다고 한다.
Direct based method는 특징점을 추출하는 대신 이미지 자체의 pixel intensity를 이용하여 motion과 structure를 추정한다. LSD-SLAM이 최초의 Large scale semi-dense map을 만들었지만 Pose graph optimization으로 map estimation이 축소되어 정확도가 ORB SLAM보다는 좋지 않다.
SVO는 feature based와 direct based method를 합친 hybrid method를 제안했지만 short-term data association만을 사용하기 때문에 정확도가 떨어진다.
DSO는 low-texture area와 blur image에서 좋은 tracking 성능을 보이고 있다. 이를 확장한 연구가 계속 이루어지고 있고, 최근에는 DSM(Direct Sparse Mapping)이라는 연구가 제안되었다.
하지만 이러한 direct based method에서는 Short-term, Mid-term, Long-term을 모두 통합하는 SLAM system이 아직 존재하지 않기 때문에, ORB-SLAM3가 제일 좋다는 것이 논문에서 주장하는 내용이다.
Visual-inertial SLAM
VI-SLAM을 Tightly coupled로 푼 첫번째 연구는 바로 MSCKF이다. EKF를 사용하여 VI-SLAM을 풀었고 feature marginalization 기법을 활용해 EKF의 cost가 2차식으로 늘어나는 것을 피할 수 있었다.
OKVIS는 최초의 keyframe based tightly coupled visual-inertial SLAM system이다. ROVIO는 featrue based method가 아닌 photometric error를 활용하여 direct data association을 만들고 EKF를 활용해 VIO system을 만들었다.
ORB-SLAM-VI는 ORB-SLAM에 IMU preintegration을 진행, local visual-inertial BA로 최적화를 진행했다. 하지만 초기화가 굉장히 느리고 정확도가 높지 않았다.
더 빠른 초기화 방법이 제안되었고 scale, gravity, accelerometer bias and initial velocity, visual feature depth를 동시에 검색하는 closed-form solution을 기반으로 연구가 진행되었다.
하지만 이러한 연구 방향은 IMU noise를 고려하지 않았고 reprojection error가 아닌 3D error points를 최소화하는 방법으로 최적화가 진행되었다. ORB-SLAM3의 동일 저자인 이전 연구에서 이러한 초기화 방법에 대해 연구하고 논문으로 제출한 적이 있다. (논문링크)
Visual-inertal SLAM을 얘기하면서 빼놓을 수 없는 논문이 바로 VINS-MONO이다. ORB-SLAM3와 동일하게 DBoW2를 활용하여 loop closing을 가능하게 하고 4 DOF의 pose-graph optimization을 하는 것이 특징이다. Feature tracking을 할 때는 Lucas-Kanade tracker를 사용한다.
VI-DSO는 DSO에 IMU를 붙여 visual-inertial odometry 문제를 푼 연구이다. DSO의 장점을 그대로 살려 low-texture에서 tracking이 잘되는 장점이 있지만 초기화가 너무 오래 걸린다는 단점이 있다.
(이러한 단점을 보완하기 위해 최근 DM-VIO라는 논문이 또 나오긴 했다.)
BASALT는 stereo-inertial odometry system으로 non-linear factors를 추출하고 Bundle Adjustment에 이를 활용한다. 그리고 Loop matching은 ORB descriptor를 활용한다.
Kimera는 metric-semantic mapping system을 제안하였고 VIO part에서는 stereo-inertial odometry와 DBoW2를 활용한 Loop closing과 Pose graph optimization을 이용한다. 이는 VINS-Fusion에서 수행했던 것과 비슷한 정확도를 보이고 있다.
Related Work를 통해 최근 Visual SLAM 및 Visual-inertial SLAM에서 주요한 알고리즘에 대해 살펴봤다.
ORB-SLAM3는 ORB-SLAM-VI를 확장하여 새로운 초기화 방법을 제안하여 조금 더 빠른 시간에 수렴을 하도록 했다. 그리고 기존의 ORB-SLAM 시리즈들과 마찬가지로 short-term, mid-term, 그리고 long-term data association을 활용하여 정확도를 높였다는 것이 특징이다.
Multi-map SLAM
Multi map이란 SLAM system이 tracking에 실패했을 때 새로운 sub map을 만들어 기존의 Map과 fusion을 하는 방법을 이야기한다. Multi mapping은 collaborative mapping system의 한 연구 방향으로 연구가 진행되는 경우도 있다.
MOARSLAM에서는 collaborative multi-device SLAM을 위한 client-server system이 제안되기도 했다. CCM-SLAM에서는 여러 드론이 양방향으로 정보를 주고 받아, distributed multi-map SLAM system을 제안했다. CCM-SLAM에서는 limited bandwidth와 distributed processing에 초점이 맞추어 연구가 진행되었다.
SLAMM이란 연구에서는 ORB-SLAM2를 기반으로 multi map SLAM system을 제안했지만, 각각의 sub map을 독립적으로 관리하였다. 하지만 ORB-SLAM3에서는 각각의 sub map을 합치는 작업까지 진행하여 더 정확한 Global map을 만들 수 있다.
VINS-MONO에서도 Pose graph를 저장하고 불러오는 기능이 있어 정확한 global map을 만드는 것을 제안한다. ORB-SLAM3도 VINS-MONO와 마찬가지로 DBoW2기반의 place recognition 방법을 사용하지만 추가적인 higher-recall place recognition 방법을 사용하여 Local Bundle Adjustment를 사용하면서 더욱 더 정확한 Map merging이 가능하도록 제안했다.
구체적인 방법론부터는 공부를 조금 더 진행하고 포스팅을 진행할 예정이다… 😂😂😂
댓글남기기