Contents — find the section you need

카메라를 들고 주변을 돌아다니면 일련의 이미지에서 벽 모서리나 간판이 조금씩 움직입니다. 이때 가속도계와 자이로스코프는 같은 시간 간격 동안 기기가 얼마나 가속되고 회전했는지 고주파로 측정합니다. 시각 오도메트리(VO)는 이러한 데이터를 기반으로 현재까지의 상대적인 자세, 속도, 위치를 추정하고, 시각-관성 오도메트리(VIO)는 이 두 가지 데이터를 모두 활용하여 추정합니다. 이는 실내 비행 드론, AR/VR 헤드셋, 휴대용 3D 스캐너, 모바일 로봇의 핵심 기술입니다.

VO/VIO는 때때로 SLAM과 동의어로 사용되지만, 역할은 다소 차이가 있습니다. 오도메트리는 부드럽고 단기적인 상대 궤적을 생성하는 프런트엔드 단계이며, 원칙적으로 이 단계에서 발생하는 오차는 누적됩니다. SLAM은 지도, 위치 인식, 루프 클로저를 사용하여 누적된 오차를 전역적으로 보정합니다. 이 글은 매핑의 전반적인 과정보다는 프레임 간 모션 통합 방식, IMU 데이터의 융합 방법, 그리고 추정치의 정확성에 대해 의심해야 할 시점에 초점을 맞추고 있습니다.

차량 앞유리에 장착된 Mobileye 카메라차량용 카메라 예시
Xsens MTi-G GNSS/INS 통합 IMUGNSS/INS IMU 예시

이미지: Car Mobileye 시스템 창문 카메라 (Ranbar, CC BY-SA 4.0) / Xsens MTi-G (Kallap85, CC BY-SA 4.0), Wikimedia Commons. 대표적인 센서이며, VO/VIO 제품 조합에 필수적인 것은 아닙니다.

0. 30초 요약

  • VO는 이미지 대응점 또는 픽셀 모양 변화를 통해 카메라 움직임을 순차적으로 추정합니다. 단안 VO는 절대적인 이동 크기를 관찰할 수 없으며, 시간이 지남에 따라 오차가 누적됩니다. 스테레오, RGB-D, 알려진 물체 크기, 관성 센싱 및 바퀴는 모두 크기 정보를 제공합니다.

  • VIO는 카메라의 저주파, 드리프트 방지 관측값과 IMU의 고주파 관측값을 융합합니다. IMU의 고주파 관측값은 짧은 시간 간격에서는 정확하지만 바이어스로 인해 드리프트가 발생합니다. 자이로스코프는 회전 정보를 제공하고, 가속도계는 중력과 가속도를 구분하는 정보를 보완합니다.

  • IMU 사전 적분은 이미지 키프레임 사이의 여러 IMU 샘플을 단일 바이어스 재선형화 가능한 제약 조건으로 압축합니다. 이것이 슬라이딩 윈도우 최적화의 계산 효율성을 높이는 핵심입니다.

  • 초기화가 가장 어려운 부분입니다. 충분한 시차가 없으면 회전을 포함하는 여기, 정지 상태에서의 바이어스 추정, 카메라-IMU 시간 동기화 및 외부 보정으로 인해 스케일, 중력, 속도 및 바이어스를 분리할 수 없습니다.

  • 평가에는 평균 오차뿐만 아니라 ATE/RPE, 간격당 드리프트, 실패율, 지연 시간, CPU/GPU 사용량, 그리고 궤적에 재위치 추정이 사용되었는지 여부도 보고해야 합니다. 낮은 텍스처, 동적 객체, 모션 블러, 롤링 셔터, 충격 및 동기화 오프셋은 일반적인 실패 조건입니다.

1. VO가 추정하는 것과 추정하지 않는 것

시간 k에서의 월드 프레임 W에 대한 카메라 또는 IMU 프레임 B의 포즈를 위치 \mathbf{p}_{WB,k} 및 회전 R_{WB,k}로 기록합니다. VO의 핵심 출력은 인접 프레임 또는 키프레임 간의 상대 변환입니다.

T_{C_kC_{k+1}}= \begin{bmatrix}R_{C_kC_{k+1}}&\mathbf{t}_{C_kC_{k+1}}\\\mathbf{0}^\mathsf{T}&1\end{bmatrix}\in SE(3)

특징 추적 방식에서는 대응점으로부터 RANSAC 알고리즘을 통해 필수 행렬(Essential Matrix)을 추정하고, 이를 통해 회전 및 이동 방향을 복원합니다. 이미 3D 점이 있는 스테레오/RGB-D/맵 기반 방식에서는 2D-3D 대응점에 대해 PnP(Point-of-Picture) 알고리즘을 사용합니다. 직접 VO(Direct VO)에서는 명시적인 디스크립터를 일치시키는 대신, 노출 보정된 픽셀 값이 투영된 위치에서 일치하도록 포즈를 최적화합니다.

어떤 방식을 사용하든 VO는 "마지막 프레임 이후 얼마나 이동했는지"를 통합하는 추측 항법의 한 형태입니다. 외부 맵이나 루프 클로저가 없으면 상대 포즈의 아주 작은 오차조차도 사라지지 않습니다. 위치 오차는 일반적으로 시간과 이동 거리에 따라 커지며, 긴 복도를 왕복하며 시작점으로 돌아오더라도 궤적은 닫히지 않습니다. 이는 단순히 구현상의 오류가 아니라, 지역적 관찰 결과를 순차적으로 누적하는 문제의 특성입니다.

Diagram 1 · Use the button to switch views
Fusing camera and IMU in VIOThe camera supplies low-frequency visual constraints, the IMU supplies high-frequency motion constraints, and sliding-window optimization estimates the state trajectory. CameraImages, features, direct method IMUAngular velocity, acceleration (high-frequency) Preintegration + visual residualSliding windowoptimization / filter State estimatePose, position, velocityGravity, bias, scale Calibration, time sync, extrinsics

단안 스케일 문제

보정된 단안 2시점 대응은 E=[\mathbf{t}]_\times R을 제약하지만, 길이를 결정하지는 않습니다. \mathbf{t}. 모든 3D 포인트의 스케일링과 변환을 s>0만큼 수행해도 이미지 투영은 변경되지 않기 때문입니다. 단안 VO 포즈는 위치 단위가 임의적일지라도 정확해 보일 수 있으며, 프레임 간 스케일이 흔들리면 궤적의 형태조차 왜곡될 수 있습니다.

기준선 B이 알려진 스테레오 리그를 사용하면 시차 d에서 Z=fB/d으로 깊이를 복구할 수 있습니다. RGB-D는 센서 자체의 깊이에 고정된 스케일을 부여합니다. VIO에서는 가속도가 m/s² 단위로 측정되고 중력의 크기가 거의 알려져 있기 때문에 충분한 모션 여기를 통해 시각 시스템의 임의 스케일을 물리적 스케일에 맞출 수 있습니다. 하지만 단순히 IMU를 부착한다고 해서 자동으로 스케일이 생성되는 것은 아닙니다. 정지 상태, 일정한 속도로 움직이는 경우, 너무 짧은 시간 간격 또는 잘못된 시간 오프셋으로 인해 스케일과 바이어스가 서로 혼동될 수 있습니다.

2. 카메라 관측: 특징 기반 및 직접 방식

특징 기반 VO는 ORB, SIFT, FAST+KLT 및 유사한 방법을 사용하여 추적된 대응점을 활용합니다. 새로운 프레임의 2D 관측값 \mathbf{z}_{ij}과 랜드마크 \mathbf{P}_j에 대한 투영 잔차는 다음과 같습니다.

\mathbf{r}_{C,ij}=\mathbf{z}_{ij}-\pi\left(K\,T_{CW,i}\mathbf{P}_j\right)

여기서 \pi([X,Y,Z]^\mathsf{T})=(X/Z,Y/Z)^\mathsf{T}은 원근 분할입니다. RANSAC은 불일치를 제거하고, Huber 손실 또는 유사한 손실 함수를 사용하여 나머지 이상치가 과도하게 강조되지 않도록 합니다. 특징 기반 방식은 노출 변화에 비교적 강건하며 기하학적으로 시각화하고 디버깅하기가 더 쉽습니다.

직접 방식은 대응 픽셀 또는 작은 패치의 밝기 잔차를 최소화합니다. 노출 매개변수 a_i,b_i을 사용하면 지점 \mathbf{u}에서의 잔차는 대략 다음과 같이 나타낼 수 있습니다.

r_I=I_j\left(\pi(T_{C_jW}T_{WC_i}\pi^{-1}(\mathbf{u},d))\right)-e^{a_j-a_i}I_i(\mathbf{u})-(b_j-e^{a_j-a_i}b_i)

이 방법은 많은 텍스처 픽셀을 활용할 수 있지만, 특정 조건에 민감합니다. 밝기 항상성 가정, 롤링 셔터, 흐림, 자동 노출 및 반사. 반직접 방식은 픽셀을 사용하여 대략적인 추적을 하고, 특징을 사용하여 후기 단계를 처리하는 중간 방식을 취합니다.

방식 주요 관찰 장점 약점 대표적인 예
특징 기반 VO 키포인트 재투영 설명하기 쉽고, 조명 변화에 비교적 강건함 낮은 텍스처, 반복적인 특징 ORB-SLAM 계열, VINS-Mono
직접/반직접 픽셀/패치 밝기 조밀한 정보, 서브픽셀 추적 노출 변화, 흐림, 반사 DSO, SVO
단안 VIO 이미지 + IMU 경량, 크기 관찰 가능 초기화/동기화에 민감 VINS-Mono, OpenVINS
스테레오 VIO 좌/우 이미지 + IMU 즉각적인 크기 측정, 안정적인 초기화 전력 소모, 좌우 동기화/보정 VINS-Fusion, 바살트

3. IMU 측정 항목 및 직접 적분할 수 없는 이유

IMU는 자이로스코프의 각속도(\tilde{\boldsymbol\omega})와 가속도계의 비력(\tilde{\mathbf{a}})을 출력합니다. 이 값들은 이상적인 값이 아니며, 바이어스(\mathbf{b}_g,\mathbf{b}_a)와 백색 잡음(\mathbf{n}_g,\mathbf{n}_a)을 포함합니다.

\tilde{\boldsymbol\omega}=\boldsymbol\omega+\mathbf{b}_g+\mathbf{n}_g, \qquad \tilde{\mathbf{a}}=R_{BW}(\ddot{\mathbf{p}}_{WB}-\mathbf{g})+\mathbf{b}_a+\mathbf{n}_a

여기서 중요한 점은 가속도계가 지구 가속도를 직접 측정하는 것이 아니라, 중력이 이미 제거된 비력을 측정한다는 것입니다. 방향을 모르면 어느 방향으로 중력을 다시 더해야 하는지 알 수 없으며, 작은 바이어스라도 이중 적분을 하면 위치 오차가 빠르게 발생합니다. 연속 시간 운동 방정식은 다음과 같습니다.

\dot R_{WB}=R_{WB}[\tilde{\boldsymbol\omega}-\mathbf{b}_g-\mathbf{n}_g]_\times, \quad \dot{\mathbf{v}}_{WB}=\mathbf{g}+R_{WB}(\tilde{\mathbf{a}}-\mathbf{b}_a-\mathbf{n}_a), \quad \dot{\mathbf{p}}_{WB}=\mathbf{v}_{WB}

1초 후의 오차만 보면 IMU는 매끄럽고 훌륭해 보이지만, 몇 분 동안 보조 장치 없이 항법을 수행하면 바이어스와 방향 오차가 발생합니다. 오류로 인해 위치 정보가 심각하게 왜곡됩니다. VIO의 핵심은 이미지가 IMU의 장기적인 드리프트를 보정하는 동시에, IMU는 이미지가 부족한 짧은 움직임 및 회전 구간을 보정하는 것입니다.

4. IMU 사전 통합: 키프레임 간 움직임 압축

일반적인 설정에서 카메라는 20~60Hz, IMU는 100~1000Hz로 작동합니다. 키프레임 i과 j 사이에는 수십에서 수백 개의 IMU 측정값이 있을 수 있습니다. 최적화 프로그램이 포즈나 바이어스를 미세 조정할 때마다 모든 샘플을 다시 통합하는 것은 비용이 많이 듭니다. Forster 등이 제안한 IMU 사전 통합은 주어진 선형화 지점 바이어스를 중심으로 상대 회전, 속도 변화, 위치 변화를 미리 계산하고, 야코비 행렬과 공분산도 유지합니다.

중력과 세계 속도를 제거한 값을 \Delta R_{ij},\Delta\mathbf{v}_{ij},\Delta\mathbf{p}_{ij}로 나타내면, 예측값은 대략 다음과 같습니다.

R_j\simeq R_i\Delta R_{ij},\quad \mathbf{v}_j\simeq\mathbf{v}_i+\mathbf{g}\Delta t_{ij}+R_i\Delta\mathbf{v}_{ij},
\mathbf{p}_j\simeq\mathbf{p}_i+\mathbf{v}_i\Delta t_{ij}+\frac12\mathbf{g}\Delta t_{ij}^2+R_i\Delta\mathbf{p}_{ij}

바이어스가 업데이트될 때, 저장된 \partial\Delta/\partial\mathbf{b}를 사용하여 1차 보정이 적용되고, 변화량이 클 경우에만 전체 재적분이 수행됩니다. 회전은 일반 벡터로 합산되지 않고, 지수 맵 또는 쿼터니언을 통해 SO(3) 매니폴드에서 합성됩니다. 공분산 \Sigma_{ij}을 사용하면 노이즈가 있는 IMU와 정밀한 카메라 잔차를 동일한 목적 함수 내에서 올바르게 가중치를 부여할 수 있습니다.

슬라이딩 윈도우 VIO의 대표적인 목적 함수는 다음과 같습니다.

\min_{\mathcal X}\sum_{(i,j)\in\mathcal{B}}\left\|\mathbf{r}_{I,ij}\right\|^2_{\Sigma_{ij}^{-1}} +\sum_{(i,l)\in\mathcal C}\rho\left(\left\|\mathbf{r}_{C,il}\right\|^2_{\Sigma_{C}^{-1}}\right) +\left\|\mathbf{r}_{\text{prior}}\right\|^2

상태 집합 \mathcal X에는 모든 키프레임에 대해 포즈, 위치, 속도, 자이로스코프/가속도계 바이어스, 랜드마크의 역심도, 그리고 필요한 경우 시간 오프셋 또는 외부 매개변수가 포함됩니다. 이전 상태는 주변화됩니다. 사전 정보를 활용하여 계산 비용을 제한합니다. 주변화는 선형화 지점에 따라 달라지기 때문에, 상태를 반복적으로 크게 업데이트하면 일관성이 깨지는 경향이 있습니다. First-Estimate Jacobian(FEJ)과 같은 기법은 단순히 속도 최적화만을 위한 것이 아니라, 실제로는 관측할 수 없는 자유도를 시스템이 잘못 "관측"하는 것을 방지하기 위해 존재합니다.

5. 필터 기반 vs. 최적화 기반

VIO는 크게 오류 상태 확장 칼만 필터(EKF) 계열과 고정 길이 비선형 최적화 계열로 나뉩니다. 전자는 현재 상태와 공분산을 순차적으로 업데이트하여 지연 시간과 메모리 사용량을 줄이는 경향이 있습니다. MSCKF는 특징점을 장기 상태로 유지하지 않고, 다중 뷰 제약 조건으로 주변화하여 경량화를 유지합니다. OpenVINS는 재현성과 확장성을 강조하여 이 계열을 구현합니다.

후자는 여러 키프레임과 랜드마크를 함께 최적화합니다. VINS-Mono가 대표적인 예입니다. 특징점 추적, IMU 사전 통합, 슬라이딩 윈도우, 루프 클로저 등이 포함됩니다. 재투영 오차를 여러 프레임에 분산시키면 정확도가 향상되는 경우가 많지만, 주변화, 솔버, 지연 시간, 초기화 실패 시 복구 등을 신중하게 설계해야 합니다.

특징 EKF/MSCKF 계열 슬라이딩 윈도우 최적화 계열
추정 방식 상태 및 공분산의 순차적 업데이트 여러 타임스텝에 걸쳐 요인 그래프의 반복적 최소화
계산/지연 시간 예측 가능하고, 낮은 지연 시간 유지가 용이함 키프레임 수 및 반복 횟수에 따라 달라짐
특징점 처리 관측 제약 조건으로 주변화하기 쉬움 역심도 등을 명시적 상태로 유지하기 쉬움
장점 임베디드 시스템에 적합, 공분산 처리 용이 재투영의 일관성 유지 용이
단점 선형화 및 일관성, 관측 가능성 주변화 오차, CPU 부하 재선형화

어느 쪽이 항상 더 나은 것은 아닙니다. 필요한 지연 시간, 센서 주파수, CPU 예산, 시야각, 운영 환경 및 유지 관리 용량을 고려하여 선택하십시오. 카메라 모델, 캘리브레이션, 데이터셋 움직임, 그리고 재위치화 사용 여부를 무시하고 논문에 보고된 궤적 오차만 비교하는 것은 잘못된 구현 선택을 하는 지름길입니다.

6. 초기화: 처음 몇 초 동안 결정해야 할 사항

VIO가 시작되는 순간, 세계 방향, 초기 속도, 자이로스코프 바이어스, 가속도계 바이어스, 중력, 단안 카메라 스케일, 그리고 카메라-IMU 상대 자세는 모두 미정입니다. 일반적인 과정은 이미지만을 사용하여 2개 시점/다중 시점의 상대 구조를 구축한 다음, 해당 시각적 움직임을 IMU 적분과 정렬하여 속도, 중력 방향, 스케일 및 바이어스를 계산하는 것입니다.

정지 구간에서는 평균 자이로스코프 판독값을 통해 초기 자이로스코프 바이어스를 추정하고, 평균 가속도계 방향을 통해 중력 방향을 추정할 수 있습니다. 하지만 가속도계는 차량 자체의 선형 가속도와 중력을 구분할 수 없습니다. 초기화 과정에서 "여기"를 포함시키면(단순히 장치를 천천히 앞뒤로 움직이는 것이 아니라 여러 축을 따라 회전 및 이동시키는 것) 스케일과 바이어스 간의 상관관계를 파악하는 데 도움이 됩니다. 반대로, 장치를 책상 위에 거의 정지된 상태로 두거나, 한 방향으로 일정한 속도로 움직이거나, 평면만 관찰하는 경우 시스템이 제대로 관측되지 않는 경향이 있습니다.

초기화 성공 여부는 최적화 프로그램의 수렴만으로 판단할 수 없습니다. 추정된 스케일이 양수이고 적절한지, 중력의 크기가 대략 9.81\,\mathrm{m/s^2}에 가까운지, 바이어스가 센서 사양을 크게 벗어나지 않는지, 초기 삼각측량된 점들이 충분한 시차를 가지고 있고 양의 깊이 값이 높은지 확인해야 합니다. 실패 후 잘못된 상태를 그대로 사용하는 것보다 이미지 트랙과 IMU 버퍼를 재설정하고 다시 초기화하는 것이 후속 작업에 미치는 악영향을 최소화하는 경향이 있습니다.

7. 보정 및 시간 동기화

VIO의 성능을 좌우하는 것은 다음과 같습니다. 알고리즘 이름보다는 센서 모델의 정확성이 더 중요합니다. 최소한 세 가지 보정이 필요합니다.

  • 카메라 내부 보정: 초점 거리, 주점, 왜곡 모델. 이미지 크기가 조정되거나 잘리면 K 값도 변경해야 합니다.

  • 외부 보정: 카메라와 IMU 간의 강체 변환 T_{BC}. 몇 도의 회전 오차나 몇 센티미터의 레버 암 오차도 빠른 움직임에서는 큰 영향을 미칩니다.

  • 시간 보정: 이미지 노출 시간과 IMU 시간 간의 오프셋, 그리고 필요한 경우 카메라 판독 시간. 별도의 클록, 버퍼링, 드라이버 타임스탬프는 수 밀리초의 잔여 오프셋을 남길 수 있습니다.

Kalibr는 카메라와 IMU 간의 시간 오프셋 및 외부 보정을 추정하는 데 널리 사용되는 도구입니다. 하지만 한 번 얻은 값을 영구적인 것으로 간주하는 것은 위험합니다. 초점 변경, 하우징 재조립, 온도 변화, 센서의 펌웨어 시간 처리 등으로 인해 이러한 값이 변경될 수 있습니다. 다양한 조건에서 촬영해야 합니다. 데이터시트에서 일반적인 값을 그대로 복사하는 대신, IMU 노이즈 밀도와 바이어스 랜덤 워크를 알란 분산과 같은 지표로 확인하면 필터에 대한 과도한 신뢰를 방지할 수 있습니다.

롤링 셔터 카메라는 한 순간에 단일 프레임을 캡처하지 않습니다. 빠른 회전 시 상단 및 하단 행이 서로 다른 자세로 관측되므로, 글로벌 셔터를 가정한 재투영 잔차는 체계적으로 오차가 발생합니다. 글로벌 셔터를 사용한 짧은 노출이 가장 확실한 해결책이며, 그렇지 않은 경우 행 타이밍과 IMU 보정을 포함하는 관측 모델을 고려해야 합니다. 좌/우 카메라 또는 심도 센서를 추가할 때는 하드웨어 트리거 동기화가 바람직합니다.

8. 구현 선택: VINS-Mono, OpenVINS 및 관련 시스템

VINS-Mono는 단안 카메라와 IMU를 위한 최적화 기반 VIO 구현으로 널리 참조됩니다. 온라인 외부 및 시간 오프셋 보정, 특징점 추적, 사전 적분, 슬라이딩 윈도우 및 루프 클로저 기능을 포함합니다. VINS-Mono의 가치는 단순히 자세를 출력하는 데 있는 것이 아니라, 다음과 같은 기능에 있습니다. 전체 구성은 연구 목적으로 읽기 쉽습니다. VINS-Fusion은 스테레오 또는 GPS를 결합하려는 경우에 적합한 후보입니다.

OpenVINS는 MSCKF/EKF 계열을 중심으로 설계된 오픈 소스 구현체로, FEJ(Frequency Enhancement Journey)를 사용하여 일관성을 명확히 했습니다. 필터 기반 VIO가 상태, 공분산 및 보정을 어떻게 처리하는지 검증하려는 상황에 적합합니다. Basalt는 고성능 최적화 백엔드를 갖춘 스테레오 VIO를 제공하며 EuRoC와 같은 데이터셋을 사용하여 테스트되었습니다. 스마트폰 및 AR 환경에서는 카메라 타이밍, IMU 타이밍 및 장치별 보정 정보에 접근할 수 있으므로 플랫폼 내장 VIO를 사용하는 것이 애플리케이션에 더 현실적인 경우가 많습니다.

구현/계열 추정 방식 센서 구성 예시 적합 대상 도입 시 확인 사항
VINS-Mono 최적화, 고정 윈도우 단안 + IMU VIO의 전체 구조 학습, 연구 프로토타이핑 ROS 생성, 보정 형식, 초기화 조건
VINS-Fusion 최적화, 고정 윈도우 단안/스테레오 + IMU, GPS 선택 사항 다중 센서 프로토타이핑 좌표계 및 절대 관측값 가중치
OpenVINS EKF/MSCKF 단안/스테레오 + IMU 임베디드 시스템 기반, 필터 검증 노이즈 값, FEJ, 상태 설계
Basalt 최적화 스테레오 + IMU 고성능 VIO 백엔드 빌드 환경, 카메라 모델
사용자 정의 OpenCV + Ceres 임의 임의 요구사항별 작업, 학습 재투영, 사전 적분, 주변화 검증

기존 구현을 비교할 때 데모에 나타나는 궤적을 성공으로 간주하지 마십시오. 실제 하드웨어에서 입력 이미지의 해상도 및 실제 주파수, IMU의 단위 및 축 규칙, 시간 기준, 외부 보정, 초기화 실패 시 동작, 추적 손실 후 재위치, CPU 사용량, 메모리 사용량 등을 검증하십시오. 라이선스. 특히 ROS 메시지의 타임스탬프가 "수신 시간"으로 채워지면, 추정기는 겉보기에는 정확해 보이지만 물리적으로 잘못된 시간 간격을 가진 주문을 수신하게 됩니다.

9. 최소 처리 흐름

  1. 카메라 내부/외부 매개변수와 시간을 보정하고, 이미지와 IMU 데이터를 공통 시간축에 맞춰 버퍼링합니다.

  2. 각 IMU 도착 시, 바이어스 보정된 각속도와 특정 힘을 사용하여 상태를 예측하고 공분산 또는 사전 적분을 업데이트합니다.

  3. 각 이미지 도착 시, 이전 프레임/키프레임의 특징을 추적하고, 순방향-역방향 검사, RANSAC 및 마스크를 사용하여 이상치를 제거합니다.

  4. 초기화 전에 시차와 여기를 판단하고 시각 구조를 관성 데이터와 정렬합니다. 조건이 좋지 않으면 시작을 지연합니다.

  5. 초기화 후, 시각 재투영 잔차와 IMU 잔차를 융합하여 포즈, 위치, 속도, 바이어스 및 포인트를 업데이트합니다.

  6. 오래된 키프레임을 주변화하고, 품질 기준을 통과하지 못한 관측값은 폐기합니다. 필요한 경우 재위치 설정 또는 안전 재설정으로 전환합니다.

이 흐름에서 예측과 수정의 구분은 중요합니다. 이미지가 일시적으로 손실되더라도 IMU 예측은 계속해서 출력을 생성할 수 있지만 불확실성은 증가합니다. "포즈 사용 가능/사용 불가능"과 같은 이진적인 결과 대신, 애플리케이션 측에서는 추적 상태, 공분산 또는 품질 점수, 마지막 시각적 업데이트 이후 경과 시간을 수신하고 이를 사용하여 AR 디스플레이 전환, 속도 제어 및 안전 정지를 점진적으로 수행해야 합니다.

10. 평가 지표: 공정한 비교를 위한 측정 항목

절대 궤적 오차(ATE)는 추정 위치 시퀀스와 실제 위치 시퀀스를 강체 변환 또는 Sim(3) 변환으로 정렬한 후의 차이입니다.

\mathrm{ATE}_{\mathrm{RMSE}}=\sqrt{\frac1N\sum_{k=1}^{N}\left\|\mathbf{p}^{\mathrm{gt}}_k-(R\hat{\mathbf{p}}_k+\mathbf{t})\right\|^2}

단안 VO는 스케일이 불확정적이므로 Sim(3) 정렬이 스케일과 일치하는지 여부를 항상 명시해야 합니다. VIO 또는 스테레오에서 스케일 오차를 실제로 확인하려면 Sim(3) 정렬이 해당 오차를 숨깁니다. SE(3) 정렬, 시작 자세만 정렬, 또는 정렬되지 않은 궤적 비교는 목적에 따라 선택해야 합니다.

상대 자세 오차(RPE)는 고정된 시간 또는 거리 간격 동안의 국부적인 드리프트를 측정합니다. 추정된 상대 변환(\hat T_{k,k+\Delta})과 실제 값(T^{\mathrm{gt}}_{k,k+\Delta})의 차이로부터,

변환 오차(m/m 또는 %)와 회전 오차(deg/m, deg/s)가 계산됩니다. 장거리에서의 ATE가 작더라도 단기적인 흔들림이 크면 AR이나 비행 제어에 적합하지 않은 궤적입니다. 반대로, 부드럽지만 장거리에서 드리프트가 발생하는 궤적은 매핑에 적합하지 않습니다.

측정 지표 주요 정보 주의 사항
ATE RMSE/중앙값 전체 위치 궤적의 일관성 정렬 방법에 따라 값이 크게 달라짐
RPE(거리/시간 간격) 로컬 드리프트, 제어에 미치는 영향 간격 길이가 명시되지 않으면 비교 불가
회전 오차 자이로스코프/시각적 방향 품질 요와 롤/피치를 혼합하면 원인이 가려짐
스케일 오차 단안 VIO/스테레오의 물리적 스케일 Sim(3) 정렬 후에는 평가 불가
추적률/실패율 실제 사용 가능성 실패 후 자동 재초기화 기능을 숨기지 않음
지연 시간/CPU/전력 임베디드 구현의 실용성 오프라인 처리만으로는 판단 불가

EuRoC MAV, TUM VI, UZH-FPV, KITTI는 비교에 일반적으로 사용되는 공개 데이터셋입니다. 하지만 실내 휴대용 카메라, 차량 탑재 장치, 레이싱 드론은 시야각, 조명, 속도, 진동, 노출 등이 다릅니다. 벤치마크 순위를 실제 하드웨어에 직접 적용하는 대신, 경로, 속도, 실패 조건을 고려하여 평가해야 합니다. 자신의 로그와 유사한 방식으로 검증할 수 있습니다. 실제 데이터를 캡처할 수 없는 현장에서도 폐쇄 루프의 시작/끝 간격, 알려진 거리, 벽면 재투영, 또는 외부 모션 캡처로 커버된 부분 영역을 기준으로 검증할 수 있습니다.

11. 대표적인 실패 조건 및 대응 방안

낮은 텍스처, 어둠, 흐림

흰 벽, 어두운 복도, 역광, 또는 급커브는 시각적 잔여 이미지에 충분한 그라디언트를 남기지 않습니다. 특징점이 적을 때 RANSAC 임계값을 낮추면 불일치가 증가합니다. 대응 방안으로는 노출 시간을 단축하는 조명/센서 설계, 광각 또는 스테레오 촬영, 특징점 재검출, 그리고 예측 불확실성 증가에 대한 소비자 알림 등이 있습니다.

동적 객체 및 반사

VIO는 대부분의 이미지 포인트가 정적인 배경에 속한다고 가정합니다. 하지만 군중, 교통 흐름 속 선두 차량, 거울, 유리, 수면 등은 이러한 가정을 깨뜨립니다. 배경이 소수인 경우에는 강력한 손실 함수와 RANSAC만으로는 문제를 해결할 수 없습니다. 움직이는 물체의 의미 영역을 제외하고, 깊이 또는 흐름으로 여러 움직임을 분리하며, 고정된 물체를 우선시하는 설계가 필요합니다.

IMU 포화, 진동, 온도 드리프트

드론과 소형 로봇의 모터 진동은 가속도계에 강한 대역 제한 노이즈를 주입하고, 충격은 가속도계의 범위를 포화시킬 수 있습니다. 필터의 노이즈 값을 너무 작게 설정하고 IMU를 과도하게 신뢰하면 이미지 보정을 거부하고 발산할 수 있습니다. 진동 차단, 적절한 대역 제한, 포화 플래그, 온도 및 측정된 노이즈 매개변수를 포함하는 바이어스 모델을 사용해야 합니다. 또한, 원시 IMU 데이터를 과도하게 평활화하면 짧은 가속도가 손실될 수 있으므로 주의해야 합니다.

시간 오프셋 및 좌표계 혼동

5ms의 시간 오프셋은 빠른 회전 중에 큰 시야각 차이를 유발합니다. 이미지 타임스탬프가 노출 시작, 노출 중간 또는 수신 시간을 의미하는지, 그리고 IMU 타임스탬프가 샘플링 시간 또는 도착 시간을 의미하는지 명확히 해야 합니다. 오른손/왼손 좌표계 규칙, 중력 방향, T_{BC}과 T_{CB}의 혼동, 또는 카메라 광축 방향 등을 잘못 이해하면 최적화가 수치적으로는 수렴하지만 물리적으로는 잘못된 결과가 나올 수 있습니다. 정지 상태 테스트, 알려진 90도 회전, 그리고 짧은 직선 이동을 사용하여 단위 테스트를 준비하십시오.

초기화와 재위치화 혼동

초기화는 지도나 축척이 아직 없는 상태에서 추정을 시작하는 것이고, 재위치화는 알려진 지도나 이전 키프레임으로 돌아가는 것입니다. 순수 VO/VIO는 일반적으로 추적이 끊어지면 새로운 로컬 좌표계에서 다시 시작합니다. 루프 클로징 SLAM의 재위치화 기능과 VO의 원시 드리프트 성능을 평가할 때 혼동하지 마십시오. 제품에서는 추적 손실 후 이전 좌표계를 계속 사용할지, 안전하게 중지할지, 또는 앵커를 무효화할지를 명시적으로 결정해야 합니다.

12. 최근 동향

최근 몇 년 동안 SuperPoint, LightGlue, LoFTR과 같은 학습 기반 특징 및 대응점 추정 기법은 기존의 로컬 디스크립터로는 포착하기 어려운 외형 변화에 대해 효과적인 것으로 입증되었습니다. DROID-SLAM처럼 딥러닝 네트워크와 반복적인 기하 최적화를 결합한 접근 방식도 등장했습니다. 하지만 학습된 모델이 많은 대응점을 도출하더라도, 크기 모호성, 평면 퇴화, 시간 동기화, IMU 바이어스와 같은 물리적 문제는 여전히 해결해야 할 과제입니다. 따라서 견고한 기하학적 구조, 재투영 오차, 관성 일관성을 검증하는 설계가 여전히 핵심적인 접근 방식입니다.

고속 및 고다이내믹 레인지를 갖춘 이벤트 카메라는 기존 카메라가 흐릿함이나 어둠으로 인해 어려움을 겪는 환경을 커버할 수 있는 잠재력을 가지고 있습니다. 또한, 장기적인 드리프트와 열악한 환경에 대한 대응책으로 LiDAR, UWB, GNSS, 휠 오도메트리 등을 VIO에 통합한 멀티모달 추정 기법이 실용화되고 있습니다. 센서를 추가한다고 해서 성능이 자동으로 향상되는 것은 아닙니다. 외부 요인, 타이밍, 오류 감지, 가중치 조정 등이 모두 새로운 잠재적 오류 발생 요인이 됩니다.

13. 요약

VO(Visual Ordometry)는 이미지에서 단기적인 상대 운동을 복원하는 데 유용한 주행 거리 측정 기술이지만, 단안 VO는 스케일 정보가 없고 국부적인 오차가 누적됩니다. VIO(Visual Ordometry Initiative)는 IMU의 고주파 운동 제약 조건과 카메라의 장기 보정 정보를 결합하여 스케일, 자세, 속도, 바이어스를 동시에 추정합니다. VIO의 핵심은 정확한 센서 모델, IMU 사전 통합, 충분한 운동 여기를 사용한 초기화, 그리고 시각 및 관성 잔차의 견고한 융합입니다.

실제로는 먼저 보정, 타이밍, 좌표계를 검증한 다음 시차, 인라이어 분포, 재투영 오차, 바이어스, 중력, 추적 상태를 관측 가능한 로그로 변환합니다. VINS-Mono와 OpenVINS는 좋은 출발점이지만, 사용 환경, 지연 시간, 재초기화 정책, 안전 요구 사항을 고려하여 평가해야 합니다. 궁극적으로 신뢰해야 할 것은 궤적이 얼마나 좋아 보이는지가 아니라, 어떤 조건에서 크기와 자세를 관찰할 수 있는지, 그리고 어떤 조건에서 불확실성이 커지는지 설명할 수 있는 설계입니다.

이해력 점검
IMU를 추가하면 항상 크기가 안정화되나요?

관찰 가능성은 움직임에 따라 달라집니다.

불충분한 여기 또는 교정 오류로 인해 추가 센서가 있음에도 불구하고 추정이 불안정해질 수 있습니다.

참고 문헌 (1차 자료 및 공식 문서)

What to read next

Review the background다중 시점 스테레오 입문 - 드문드문 분포된 포인트 클라우드를 조밀한 3D 형상으로 채우기Continue the series루프 클로저 기본 가이드 — 루프 구간에서 SLAM 시스템의 드리프트 현상을 한 번에 해결하는 방법Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교