1. 위치 추정의 개요
이벤트 카메라 기반의 SLAM(Simultaneous Localization and Mapping)은 전통적인 프레임 기반 카메라와는 다른 방식으로 위치를 추정한다. 이벤트 카메라는 픽셀 단위로 밝기 변화에 반응하는 이벤트를 생성하는데, 이러한 이벤트의 시계열 데이터는 매우 높은 시간적 해상도를 제공하여 정확한 위치 추정을 가능하게 한다.
이벤트 카메라의 위치 추정은 기본적으로 측정 업데이트(measurement update)와 예측(prediction) 두 단계로 나뉜다. 예측 단계에서는 IMU(관성 측정 장치)와 같은 고속 센서로부터 정보를 받아 드론이나 로봇의 상태를 추정하고, 측정 업데이트 단계에서는 이벤트 카메라의 데이터를 이용하여 위치를 보정한다.
이벤트 기반 위치 추정에서 가장 중요한 요소는 이벤트 데이터의 시간적, 공간적 특징을 효과적으로 이용하는 것이다. 이를 위해 많은 경우 이벤트 스트림을 모아서 특징을 추출하고, 그 특징들을 이용하여 위치를 추정하게 된다.
2. 이벤트 기반 위치 추정 수학적 모델링
(1) 상태 벡터 정의
드론이나 로봇의 위치 추정에서는 상태 벡터를 정의하는 것이 핵심이다. 상태 벡터 \mathbf{x}는 로봇의 위치, 속도, 자세 정보를 포함한다. 이를 수식으로 나타내면 다음과 같다:
여기서, - \mathbf{p}: 로봇의 3차원 위치 벡터, \mathbf{p} = \begin{bmatrix} p_x & p_y & p_z \end{bmatrix}^T - \mathbf{v}: 로봇의 3차원 속도 벡터, \mathbf{v} = \begin{bmatrix} v_x & v_y & v_z \end{bmatrix}^T - \mathbf{q}: 로봇의 자세를 나타내는 쿼터니언 벡터, \mathbf{q} = \begin{bmatrix} q_w & q_x & q_y & q_z \end{bmatrix}^T
위 상태 벡터는 SLAM 시스템에서 이벤트 데이터와 IMU 데이터를 융합하여 추정한다.
(2) 운동 모델
다음으로, 로봇의 운동을 설명하는 모델을 정의할 필요가 있다. 상태 벡터의 시간에 따른 변화는 다음과 같은 운동 방정식으로 나타낼 수 있다:
여기서, - \mathbf{u}: 제어 입력 벡터 (IMU 데이터 포함), \mathbf{u} = \begin{bmatrix} a_x & a_y & a_z & \omega_x & \omega_y & \omega_z \end{bmatrix}^T - t: 시간 - \mathbf{f}: 로봇의 운동 모델 함수
이 운동 모델은 IMU 데이터를 바탕으로 로봇의 현재 상태를 예측하는 데 사용된다. IMU의 가속도와 각속도 정보를 이용하여 로봇의 속도와 자세 변화를 추정할 수 있다.
(3) 상태 예측
이벤트 기반 SLAM에서 예측 단계는 IMU 데이터를 통해 이루어진다. 시간 t에서 t + \Delta t 사이의 상태 변화는 다음과 같은 모델을 따른다:
이 식을 통해 로봇의 현재 상태 \mathbf{x}_t에서 미래 상태 \mathbf{x}_{t + \Delta t}를 예측할 수 있다. 하지만 실제로는 연속적인 적분 대신, 짧은 시간 간격 \Delta t에 대해 이산적인 예측을 수행한다.
예를 들어, 드론의 가속도 \mathbf{a}와 각속도 \mathbf{\omega}를 이용한 이산 상태 예측은 다음과 같이 계산할 수 있다:
자세 업데이트는 쿼터니언의 시간 변화에 따라 이루어진다. 각속도 \mathbf{\omega}_t를 쿼터니언 \mathbf{q}_t에 적용하여 새로운 자세 \mathbf{q}_{t + \Delta t}를 계산할 수 있다.
3. 측정 업데이트
예측된 상태 벡터는 이벤트 카메라의 측정 데이터를 이용하여 업데이트된다. 이벤트 카메라의 특징점, 예를 들어 에지나 코너 정보를 기반으로 측정된 위치는 다음과 같은 형태로 나타낼 수 있다:
여기서, - \mathbf{z}_t: 이벤트 카메라로 측정된 정보 - h(\mathbf{x}_t): 상태 벡터 \mathbf{x}_t를 기반으로 한 예상 측정 값 - \mathbf{n}: 측정 노이즈
이 측정 방정식은 상태 벡터의 위치 정보를 이벤트 카메라로부터 얻은 측정값으로 보정하는 데 사용된다. 칼만 필터와 같은 방법을 사용하여 예측된 위치와 측정된 위치 간의 차이를 최소화하도록 상태를 보정한다.
4. 칼만 필터를 통한 위치 추정
이벤트 기반 SLAM에서 칼만 필터는 예측된 상태를 이벤트 카메라로부터의 측정으로 보정하는 데 중요한 역할을 한다. 칼만 필터는 예측 단계와 보정 단계로 나뉘며, 이 두 단계를 반복적으로 수행하여 로봇의 위치를 추정한다.
(1) 예측 단계
예측 단계에서는 앞서 설명한 운동 방정식을 사용하여 로봇의 상태를 예측한다. 이 단계는 IMU 데이터를 기반으로 현재 상태를 다음 시간 단계로 예측하는 과정으로 이루어진다. 예측된 상태 \mathbf{x}_{t|t-1}와 예측 오차 공분산 \mathbf{P}_{t|t-1}은 다음과 같이 계산된다:
여기서, - \mathbf{F}: 상태 전이 행렬 - \mathbf{B}: 제어 입력 행렬 - \mathbf{u}_{t-1}: IMU 데이터로부터의 제어 입력 - \mathbf{Q}: 시스템 노이즈 공분산
(2) 보정 단계
보정 단계에서는 이벤트 카메라의 측정값을 사용하여 예측된 상태를 보정한다. 보정은 칼만 이득 \mathbf{K}_t를 계산하여 이루어진다. 이때 칼만 이득은 다음과 같이 계산된다:
여기서, - \mathbf{H}: 측정 모델 행렬 - \mathbf{R}: 측정 노이즈 공분산
칼만 이득을 사용하여 상태와 공분산을 업데이트하는 식은 다음과 같다:
여기서, - \mathbf{z}_t: 이벤트 카메라로부터 측정된 위치 데이터 - \mathbf{I}: 단위 행렬
이 과정에서 칼만 필터는 예측된 상태와 측정된 상태 간의 차이를 줄여, 더 정확한 위치 추정을 가능하게 한다.
5. 이벤트 데이터와 IMU 융합
이벤트 기반 SLAM에서 중요한 또 다른 요소는 이벤트 카메라 데이터와 IMU 데이터를 어떻게 융합하느냐이다. 이벤트 카메라는 높은 시간 해상도를 제공하지만, 직접적인 위치 정보보다는 에지나 코너와 같은 특징점의 정보를 제공한다. 반면, IMU는 빠른 속도로 위치와 자세 변화를 추정할 수 있지만, 시간이 지남에 따라 오차가 누적될 수 있다.
두 센서의 장점을 융합하기 위해 칼만 필터를 사용한 위치 추정은 다음과 같은 단계를 따른다: 1. IMU 데이터를 이용해 빠른 예측을 수행한다. 2. 이벤트 카메라의 특징점 데이터를 이용해 느리지만 정확한 위치 보정을 수행한다.
이와 같은 방식으로 이벤트 카메라의 높은 시간 해상도를 활용하면서, IMU의 단기적인 위치 오차 누적을 보완할 수 있다.
6. 이벤트 기반 특징점 추출과 위치 추정의 결합
이벤트 카메라 기반의 위치 추정에서 중요한 역할을 하는 것이 특징점 추출이다. 이벤트 데이터는 개별 픽셀 수준에서 밝기 변화가 발생한 시점을 기록하며, 이를 바탕으로 에지, 코너 등 중요한 특징점들을 추출할 수 있다. 이러한 특징점들은 위치 추정에서 중요한 역할을 한다.
(1) 특징점 기반 위치 추정
이벤트 카메라로부터 추출한 특징점을 이용하여 위치를 추정하는 방법은 전통적인 비전 기반 SLAM과 유사하다. 먼저, 이벤트 데이터에서 에지나 코너와 같은 특징점을 추출한 후, 이 특징점들을 사용하여 로봇의 위치를 추정하게 된다. 이벤트 데이터에서 얻어진 특징점들은 다음과 같은 형태로 표현될 수 있다:
여기서, (u, v)는 이벤트 카메라 이미지 상에서의 특징점 좌표를 나타낸다. 이러한 특징점 좌표들은 카메라의 내재적(intrinsic) 및 외재적(extrinsic) 파라미터를 통해 3차원 공간의 좌표로 변환할 수 있다.
(2) 3차원 위치로의 변환
특징점 좌표 (u, v)는 이벤트 카메라의 이미지 평면에서 측정된 값이므로, 이를 3차원 공간의 위치로 변환하기 위해서는 카메라 모델을 사용해야 한다. 일반적으로 사용되는 핀홀 카메라 모델은 다음과 같은 수식으로 표현된다:
여기서, - \mathbf{K}는 카메라의 내재적 행렬이다. - X, Y, Z는 3차원 공간에서의 좌표이다.
이를 통해, 이벤트 카메라의 이미지 평면에서 측정된 특징점을 3차원 공간에서의 위치로 변환할 수 있다. 변환된 3차원 좌표는 로봇의 위치를 추정하는 데 사용된다.
7. 비선형 최적화 기반 위치 추정
이벤트 기반 SLAM 시스템에서 칼만 필터 외에도 비선형 최적화 기법을 이용하여 위치 추정을 개선할 수 있다. 이러한 기법은 특히 고정밀 위치 추정이 필요한 상황에서 유용하게 쓰인다.
(1) 잔차 최소화 문제
비선형 최적화에서는 예측된 위치와 이벤트 카메라로 측정된 특징점 사이의 잔차(residual)를 최소화하는 방향으로 최적화를 수행한다. 잔차 \mathbf{r}는 다음과 같이 정의된다:
여기서, h(\mathbf{x}_t)는 예측된 상태 \mathbf{x}_t에서 기대되는 측정 값이다. 잔차를 최소화하기 위해 목표는 다음과 같은 비용 함수 J를 최소화하는 것이다:
여기서, \mathbf{W}_t는 잔차의 가중치 행렬이다. 이 최적화 문제는 비선형 소수자법(Gauss-Newton method) 또는 Levenberg-Marquardt 알고리즘과 같은 방법을 사용하여 해결할 수 있다.
(2) 비선형 최적화 알고리즘
비선형 최적화를 위해 가장 많이 사용되는 방법 중 하나는 Levenberg-Marquardt 알고리즘이다. 이 알고리즘은 다음과 같은 방식으로 작동한다:
- 잔차 \mathbf{r}의 계산
- 잔차의 1차 미분을 통해 야코비 행렬 \mathbf{J}를 계산
- 다음과 같은 업데이트 방정식을 사용하여 상태 벡터를 갱신:
여기서, - \mathbf{J}는 잔차의 야코비 행렬 - \lambda는 Levenberg-Marquardt 파라미터 - \mathbf{I}는 단위 행렬
이 과정을 반복하여 최적화가 수렴할 때까지 로봇의 위치를 추정한다.