Odometry

**오도메트리(odometry)**는 시간에 따라 누적되는 증분 운동 측정값을 적분하여 로봇의 자세를 추정하는 것입니다 — 데드 레코닝(dead reckoning)입니다. 알려진 초기 자세에서 시작하여, 새로운 측정값마다 작은 상대 운동 ΔTk\Delta T_k를 얻고, 현재 자세는 모든 증분의 합성으로 구해집니다.

Tk=T0ΔT1ΔT2ΔTkT_k = T_0 \cdot \Delta T_1 \cdot \Delta T_2 \cdots \Delta T_k

“오도메트리”라는 단어는 원래 **휠 오도메트리(wheel odometry)**를 가리켰습니다: 인코더가 바퀴 회전수를 세고, 기구학적 모델(차동 구동, 아커만)이 이를 선속도와 각속도로 변환합니다. 같은 아이디어는 상대 운동을 측정할 수 있는 어떤 센서로도 일반화됩니다.

오도메트리를 특징짓는 성질은 **드리프트(drift)**입니다: 모든 증분은 작은 오차를 가지고 있으며, 증분이 곱셈적으로 연결되기 때문에 오차는 한없이 누적됩니다. 미터당 0.5%의 병진 오차는 책상 크기 정도의 움직임에서는 보이지 않지만, 1킬로미터에 걸쳐서는 치명적입니다. 따라서 오도메트리만으로는 전역적으로 일관된 지도를 절대 만들 수 없습니다 — 그러려면 루프 클로저와 전역 최적화가 필요하며, 이것이 바로 오도메트리와 SLAM을 구분하는 지점입니다.

현대 SLAM 백엔드에서는 오도메트리가 상대 자세 제약으로 나타납니다: 포즈 그래프에서 연속된 자세 노드 사이의 에지, 또는 팩터 그래프의 운동 모델 팩터로,

xt+1=f(xt,ut)+wt,wtN(0,Qt)\mathbf{x}_{t+1} = f(\mathbf{x}_t, \mathbf{u}_t) + \mathbf{w}_t, \qquad \mathbf{w}_t \sim \mathcal{N}(\mathbf{0}, Q_t)

여기서 제어/측정값 ut\mathbf{u}_t는 인코더, IMU, 또는 VO 프론트엔드에서 오며, QtQ_t는 그 불확실성을 모델링합니다.

예제: 차동 구동 오도메트리

바퀴 반지름 rr, 인코더로 측정한 바퀴 각속도 ωl,ωr\omega_l, \omega_r, 바퀴 간 거리 LL을 가진 두 바퀴 차동 구동 로봇의 경우, 몸체 속도는 다음과 같습니다.

v=r(ωr+ωl)2,ω=r(ωrωl)L.v = \frac{r(\omega_r + \omega_l)}{2}, \qquad \omega = \frac{r(\omega_r - \omega_l)}{L}.

시간 단계 Δt\Delta t에 대해 평면 자세 (x,y,θ)(x, y, \theta)를 적분하면 (가장 단순한 오일러 형태):

xk+1=xk+vcosθkΔt,yk+1=yk+vsinθkΔt,θk+1=θk+ωΔt.x_{k+1} = x_k + v\cos\theta_k\,\Delta t, \qquad y_{k+1} = y_k + v\sin\theta_k\,\Delta t, \qquad \theta_{k+1} = \theta_k + \omega\,\Delta t.

이 열 줄짜리 적분기는 완전한 오도메트리 시스템이며 — 모든 전형적인 실패 모드를 다 보여줍니다. 위치 업데이트가 θk\theta_k에 의존한다는 점에 주목하십시오: 헤딩 오차는 그 이후의 모든 병진 이동을 잘못된 방향으로 회전시킵니다. 헤딩 오차 δθ\delta\theta를 가진 채로 거리 dd를 이동하면, 측방향 위치 오차는 대략 dδθd \cdot \delta\theta입니다 — 이것이 헤딩(자이로 품질, 휠베이스 캘리브레이션)이 오도메트리 정확도를 좌우하는 이유이며, 저렴한 자이로 하나를 휠 오도메트리에 추가하는 것만으로도 큰 도움이 되는 이유입니다.

드리프트가 나타나는 방식

실무적으로 오도메트리 품질은 상대 오차로 인용됩니다 — 이동 거리당 백분율과 미터당 도 — 이는 정확히 KITTI odometry 벤치마크와 상대 자세 오차(RPE) 지표가 측정하는 것입니다. 절대 궤적 오차(ATE)는 오도메트리 시스템을 평가하는 데 적합한 척도가 아닙니다. 절대 오차는 설계상 무한히 커질 수 있기 때문입니다.

흔한 함정들

SLAM에서의 의미

오도메트리는 모든 SLAM 시스템의 근간입니다: 추적, 매핑, 루프 클로저 모듈이 그 위에 구축되는 고속의 국소적으로 정확한 운동 추정치를 제공합니다. 그 오차 특성 — 국소적으로는 매끄럽지만 전역적으로는 드리프트한다 — 을 이해하면 현대 SLAM의 아키텍처가 설명됩니다: 짧은 구간 동안은 오도메트리를 신뢰하고, 루프 클로저나 절대 측정값이 얻어질 때마다 전역적으로 이를 보정하는 것입니다.

관련 문서