지도 생성의 개념
이벤트 기반 SLAM에서 지도 생성을 위해서는 이벤트 카메라에서 얻은 데이터로 환경의 3차원 구조를 추정해야 한다. 기존의 프레임 기반 SLAM과는 달리, 이벤트 카메라는 변화가 있을 때만 데이터를 제공하므로, 불필요한 정보 없이 중요한 변화에만 초점을 맞추어 지도 생성이 가능한다.
지도 생성 과정은 크게 다음과 같은 단계들로 구성된다.
- 이벤트 데이터 수집: 이벤트 카메라는 환경의 변화가 감지될 때마다 이벤트를 기록한다. 이 데이터는 위치 \mathbf{p}와 시간 t, 그리고 폴라리티 p로 표현된다.
- 위치 \mathbf{p} = (x, y, z)는 이벤트가 발생한 공간 좌표이다.
- 시간 t는 이벤트가 발생한 시각을 나타낸다.
-
폴라리티 p는 변화의 방향을 나타내며, +1 또는 -1의 값을 가질 수 있다.
-
특징 추출: 이벤트 데이터에서 환경의 중요한 특징을 추출한다. 이 과정에서 주로 에지(edge)나 코너(corner)와 같은 특징들이 추출되며, 이를 바탕으로 공간적 정보를 획득한다.
-
카메라 포즈 추정: 이벤트 데이터를 기반으로 이벤트 카메라의 포즈(즉, 위치와 방향)를 추정한다. 카메라의 포즈는 일반적으로 6자유도(3차원의 위치와 3차원의 회전)로 표현된다. 이를 수학적으로 나타내면, 카메라의 포즈 \mathbf{T}는 다음과 같이 나타낼 수 있다:
여기서 \mathbf{R}은 회전 행렬, \mathbf{t}는 변환 벡터이다.
포즈 추정은 일반적으로 비선형 최적화 문제로 설정되며, 추정된 포즈는 카메라가 이동한 경로와 환경의 구조를 동시에 추정하기 위한 기반이 된다.
- 환경 모델 업데이트: 추정된 포즈를 바탕으로, 이벤트 카메라가 인식한 환경의 모델을 업데이트한다. 이때 이벤트 데이터는 3차원 점군(point cloud) 형태로 변환되며, 이를 통해 환경의 물리적인 구조를 점진적으로 완성해 나간다.
이벤트의 좌표 변환
이벤트 카메라에서 수집한 데이터는 카메라 좌표계에서 측정되므로, 이를 월드 좌표계로 변환하는 과정이 필요하다. 이를 위해 카메라의 포즈 \mathbf{T}를 사용하여 좌표 변환을 수행한다. 이벤트의 좌표 \mathbf{p}_\text{camera}는 다음과 같이 월드 좌표계로 변환된다:
이 식에서 \mathbf{T}는 카메라의 포즈를 나타내는 변환 행렬이며, \mathbf{p}_\text{camera}는 카메라 좌표계에서 측정된 이벤트의 위치이다.
환경의 점군 생성
카메라의 움직임에 따라 수집된 이벤트 데이터를 바탕으로 점군을 생성하는 과정은 매우 중요하다. 각 이벤트는 공간 상의 점으로 표현되며, 이를 누적하여 환경의 3차원 모델을 구성할 수 있다. 점군은 다음과 같이 정의된다:
여기서 \mathbf{P}는 생성된 점군, \mathbf{p}_i는 각 이벤트가 변환된 좌표이다.
누적된 이벤트 데이터의 처리
지도 생성에서 이벤트 데이터를 누적하여 3차원 점군을 구성할 때, 이벤트 데이터의 시간적 특성과 카메라의 빠른 움직임이 주는 문제를 처리해야 한다. 특히, 카메라가 빠르게 이동할 경우 이벤트 데이터의 시간 차이에 의해 누적된 점군이 왜곡될 수 있다. 이를 방지하기 위해 다음과 같은 기법이 사용된다:
- 이벤트 데이터의 시간 동기화: 각 이벤트는 발생 시각 t_i와 함께 기록되므로, 동일한 시간 상의 이벤트끼리 그룹화하여 처리할 수 있다. 이를 위해 t_0에서 t_N까지의 이벤트를 일정 시간 간격 \Delta t로 나누어 처리한다. 이는 수식으로 다음과 같이 표현된다:
여기서 n은 시간 윈도우의 인덱스이며, 이벤트 e_i는 해당 시간 구간에 속하는 이벤트이다.
- 카메라 움직임 보상(Motion Compensation): 카메라가 빠르게 움직이는 경우, 이벤트 데이터는 공간적으로 왜곡될 수 있다. 이를 보정하기 위해 카메라의 포즈 변화를 반영하여 이벤트의 위치를 보정한다. 카메라의 포즈 변화는 시간에 따라 연속적으로 일어나므로, 각 이벤트 e_i가 발생한 시각 t_i에 해당하는 카메라의 포즈 \mathbf{T}(t_i)를 사용하여 보정할 수 있다. 이를 통해 보정된 이벤트 좌표 \mathbf{p}_\text{compensated}는 다음과 같이 계산된다:
여기서 \mathbf{T}(t_0)는 기준이 되는 초기 포즈, \mathbf{T}(t_i)는 이벤트가 발생한 시점의 카메라 포즈이다.
공간적 융합 (Spatial Fusion)
지도 생성을 위한 3차원 모델을 구축할 때, 이벤트 카메라에서 얻은 개별 이벤트 데이터를 공간적으로 융합하는 과정이 필요하다. 각 이벤트는 매우 미세한 공간적 변화를 반영하므로, 이러한 이벤트들을 융합하여 더 큰 구조적인 정보를 추출하는 방법이 중요하다.
- 볼류메트릭 맵핑(Volumetric Mapping): 이벤트 데이터를 3차원 공간으로 융합할 때는 주로 볼류메트릭 맵핑 기법이 사용된다. 볼류메트릭 맵핑에서는 3차원 공간을 작은 격자(Grid)로 나누고, 각 격자에서의 이벤트 발생 빈도에 따라 맵을 업데이트한다. 이 과정에서 격자의 크기 v는 공간적 해상도를 결정하며, 작은 v를 사용할수록 더 정밀한 지도를 생성할 수 있다.
볼류메트릭 맵핑은 다음과 같은 과정으로 이루어진다:
여기서 V(\mathbf{p})는 점 \mathbf{p}에 해당하는 격자의 값, w는 이벤트 발생 시 부여되는 가중치이다.
- 포인트 클라우드에서 메쉬 생성: 누적된 이벤트 데이터로부터 생성된 3차원 점군은 메쉬(mesh)로 변환될 수 있다. 이때, 공간적으로 인접한 점들을 연결하여 삼각형(triangle)으로 이루어진 메쉬를 구성하게 된다. 이 메쉬는 환경의 구조를 더욱 명확하게 시각화하는 데 사용되며, 이를 통해 보다 정밀한 환경 모델을 생성할 수 있다.
밀집 지도 생성 (Dense Mapping)
밀집 지도 생성을 위해서는 이벤트 기반의 데이터를 최대한 활용하여 3차원 공간의 모든 부분을 커버하는 지도를 생성하는 것이 목표이다. 이를 위해 고해상도 맵핑 기법이 사용되며, 특히 이벤트 카메라의 시간적 해상도를 효과적으로 활용하는 것이 중요하다.
- 고해상도 시간 정보의 활용: 이벤트 카메라는 매우 높은 시간 해상도를 제공하므로, 이 정보를 활용하여 지도 생성 과정에서 미세한 움직임까지 반영할 수 있다. 예를 들어, 이벤트 발생 간격이 매우 짧은 경우, 이벤트들이 발생한 시간 차이를 반영하여 카메라의 미세한 이동을 추정할 수 있다.
시간적 해상도를 활용하여 지도 생성 시, 각 이벤트에 대해 시간 가중치 \tau_i를 부여하여 지도에 반영한다. 이를 수식으로 나타내면 다음과 같다:
여기서 M(\mathbf{p}_i)는 점 \mathbf{p}_i에서의 맵 값, \tau_i는 시간 가중치이다. 시간 가중치 \tau_i는 이벤트 발생 시각과 카메라의 속도에 따라 동적으로 변화한다.
- 깊이 정보의 융합: 이벤트 기반 SLAM에서는 깊이 정보를 정확히 추정하는 것이 매우 중요하다. 이를 위해 다양한 방법들이 존재하며, 주로 이벤트 카메라의 특성을 활용한 깊이 추정 기법이 사용된다. 일반적인 깊이 추정 방법은 스테레오 이벤트 카메라나 이벤트 기반 깊이 센서와 같은 추가 센서를 사용하거나, 카메라의 움직임을 통해 깊이를 추정하는 방식이다.
이벤트 카메라로부터 추정된 깊이 정보는 각 이벤트의 위치에 반영되며, 이를 통해 환경의 밀집 지도(dense map)를 생성할 수 있다. 깊이 정보를 이용한 지도 생성은 다음과 같은 수식으로 표현된다:
여기서 D(\mathbf{p}_i)는 점 \mathbf{p}_i에서의 깊이, Z_i는 이벤트로부터 추정된 깊이 값이다.
-
환경의 밀집 모델링: 깊이 정보를 포함한 이벤트 데이터는 밀집된 3차원 환경 모델로 변환될 수 있다. 이러한 모델은 SLAM 시스템에서 위치 추정의 정확성을 향상시키고, 복잡한 환경에서도 신뢰할 수 있는 지도를 생성하는 데 기여한다. 밀집 모델링은 주로 물체의 표면을 표현하는 데 사용되며, 이를 위해 각 이벤트의 위치와 깊이를 기반으로 환경의 표면을 추정한다.
-
실시간 지도 업데이트: 이벤트 카메라의 특성상 지도 생성은 실시간으로 이루어진다. 이는 기존의 프레임 기반 SLAM보다 더 적은 계산 자원으로도 빠르게 지도 생성이 가능하다는 장점을 제공한다. 실시간으로 지도 업데이트가 이루어지므로, SLAM 시스템은 실시간 환경 변화에 빠르게 대응할 수 있다.
실시간 지도 업데이트 과정은 이벤트 발생과 동시에 해당 지역의 지도 정보를 갱신하는 방식으로 이루어진다. 각 이벤트가 발생할 때마다 해당 이벤트의 위치를 맵에 반영하며, 지도는 지속적으로 진화한다.
누적 오차의 관리
이벤트 기반 SLAM의 지도 생성 과정에서 발생하는 누적 오차를 최소화하기 위해 다음과 같은 기법이 사용된다:
-
루프 클로징 (Loop Closing): 루프 클로징은 SLAM에서 발생하는 누적 오차를 보정하기 위한 방법으로, 카메라가 이미 방문한 장소를 다시 방문했을 때 이를 감지하고 누적된 오차를 수정한다. 이벤트 기반 SLAM에서는 루프 클로징을 사용하여 지도의 정합성을 유지한다.
-
최적화 기법: 지도 생성 중 발생하는 오차를 최소화하기 위해 비선형 최적화 기법이 사용된다. 이러한 최적화는 카메라의 포즈와 지도 간의 일관성을 유지하기 위해 필수적이며, 주로 그래프 기반 최적화 기법을 사용한다.