Kintinuous

Whelan 2012 · 논문

한 줄 요약 — 지속적으로 이동하는(순환 버퍼 방식의) TSDF 볼륨으로 KinectFusion을 무제한 환경으로 확장하고, 이탈하는 표면 조각들을 점진적으로 구축되는 삼각 메시로 스트리밍하며, 초기 루프 클로저 메커니즘(DBoW+SURF, iSAM)을 함께 도입했는데 이는 이후 변형 기반 맵 보정으로 성숙했습니다.

문제

KinectFusion의 고정 크기 TSDF 볼륨은 책상이나 작은 방보다 큰 환경을 표현할 수 없습니다 — 카메라가 볼륨 경계를 벗어나는 순간 추적이 실패합니다. 그 ICP 오도메트리 역시 3D 형상 정보가 부족한 영역(예: 직선 복도)에서 실패합니다. 대규모 실내외 매핑을 위해서는 재건을 실시간으로 무한정 확장하면서도, 누적된 드리프트를 보정할 수 있는 경로를 열어 두는 것이 필요합니다.

방법 및 아키텍처

롤링(순환) TSDF 볼륨. TSDF(복셀 크기 vsv_s, 차원 dd 미터, 복셀 한 변 vm=d/vsv_m = d/v_s)는 더 이상 시작 위치에 고정되지 않습니다. 시스템은 볼륨 원점으로부터 카메라 거리를 계속 확인하며, 이동 임계값 bb를 초과하면 볼륨을 가상으로 이동시켜 카메라를 다시 중앙에 놓습니다. 이 이동은 온전한 복셀 단위로 양자화됩니다. 카메라 이동량 ti+1\mathbf{t}_{i+1}에 대해

u=ti+1vm,ti+1=ti+1vmu,gi+1=gi+u\mathbf{u} = \left\lfloor \frac{\mathbf{t}_{i+1}}{v_m} \right\rfloor, \qquad \mathbf{t}'_{i+1} = \mathbf{t}_{i+1} - v_m \mathbf{u}, \qquad \mathbf{g}_{i+1} = \mathbf{g}_i + \mathbf{u}

여기서 ti+1\mathbf{t}'_{i+1}은 볼륨 내부에서의 새 카메라 위치이고, gi\mathbf{g}_i는 복셀 단위로 볼륨의 전역 위치를 추적합니다. 메모리 내에서 복셀이 실제로 이동하는 일은 없습니다: 3D 배열은 순환하는 것으로 취급되며, 조회는 x=(x+gix)modvsx' = (x + g_i^x) \bmod v_s 형태로(y,zy, z도 동일) 재매핑되므로, 재중앙화는 기준 인덱스 오프셋만 갱신하면 됩니다.

조각 추출 및 메싱. 볼륨을 벗어나는 복셀 조각은 각 축을 따라 직교 레이캐스팅되어 영교차 정점을 추출하고, 복셀 그리드 필터(리프 크기 vmv_m)로 중복을 제거하고, 재사용을 위해 초기화된 뒤 CPU로 스트리밍됩니다. 경계를 넘을 때마다 포즈 그래프 요소 Qn=(gi,ti,Ri,Mi)Q_n = (\mathbf{g}_i, \mathbf{t}'_i, R_i, M_i)가 추가되어 포즈와 그에 연관된 표면 조각 MiM_i를 저장하며, (2복셀 겹침으로 추출된) 조각들은 탐욕적 삼각화 알고리즘에 입력되어 시스템 메모리에만 제한되는 매끄러운 메시를 생성합니다.

멀티스레드 아키텍처. 계층적 설계로 GPU 프론트엔드가 막히지 않도록 합니다: TSDF 추적/통합 스레드가 CloudSliceProcessor 스레드(변환 + 다운샘플링)에 신호를 보내고, 이 스레드는 다시 ComponentThreads 풀(메시 생성, 장소 인식 등)에 신호를 보내므로, 맵 후처리가 30,Hz 추적을 결코 멈추게 하지 않습니다.

오도메트리 대안과 루프 클로저. 기하학적으로 퇴화된 장면에서도 견디기 위해, ICP 오도메트리를 특징 기반 FOVIS 시각 오도메트리로 대체할 수 있습니다 — 지역 메시의 매끄러움을 다소 희생하는 대신 복도에서의 강건성을 얻습니다. 루프 클로저를 위해 논문은 SURF 특징을 사용하는 DBoW 장소 인식을 하나의 ComponentThread로 통합하여, 감지된 포즈 제약을 저장된 t\mathbf{t}' 벡터를 통해 TSDF 가상 프레임으로 전파하며, iSAM 포즈 그래프 최적화를 실험하면서 포즈 갱신과 함께 메시 변형이 필요함을 관찰합니다. 성숙한 Kintinuous 계열은 정확히 이를 임베디드 변형 그래프로 구현하여, 각 메시 정점을 인접 그래프 노드와 함께 이동시킵니다: v~i=Rk(vigk)+gk+tk\tilde{\mathbf{v}}_i = R_k(\mathbf{v}_i - \mathbf{g}_k) + \mathbf{g}_k + \mathbf{t}_k. 이렇게 하면 밀도 맵은 재구축되지 않고 일관성을 향해 구부러집니다.

실험 결과

Intel i7-2600(3.4,GHz), 8,GB RAM, GTX 560 Ti(2,GB)를 갖춘 데스크톱에서 vs=512v_s = 512와 초당 15프레임의 핸드헬드/차량 Kinect 촬영으로 네 개의 데이터셋을 실시간으로 매핑했습니다: 연구실(LAB, 포즈 대 포즈 오도메트리 31.07,m, 6,m 볼륨), 아파트 두 층(APT, 42.31,m), 야간에 차 안에서 촬영한 교외 부지(CAR, 136.18,m, 20,m 볼륨, 81.6 x 22.8 x 81.5,m 경계 육면체), 그리고 직선 복도(CORR, 56.08,m, FOVIS 사용). 최종 메시는 150만310만 삼각형(63118,MB)에 이릅니다. TSDF 업데이트 시간 33.841.3,ms는 프론트엔드가 맵이 커져도 영향받지 않고 Kinect의 전체 30,FPS를 유지할 수 있음을 보여줍니다. CloudSliceProcessor는 조각당 2.64.7,ms만 추가하며, 메시 생성도 평균적으로 이를 따라갑니다. FOVIS 오도메트리는 프레임당 14.71 ± 4.39,ms가 드는 반면 CUDA ICP는 10.54 ± 0.21,ms입니다 — 더 느리지만 여전히 실시간이며, 복도에서 드리프트를 줄여주는 대신 지역 메시의 매끄러움을 희생합니다(프레임-대-프레임 대 프레임-대-모델).

SLAM에서의 의미

Kintinuous는 밀도 체적 융합을 단일 고정 볼륨에서 꺼내어 복도, 아파트, 거리로 확장한 최초의 시스템이었으며, 밀도 RGB-D SLAM이 데스크톱 스캐닝 데모가 아니라 진정한 대규모 매핑 도구가 될 수 있음을 보여주었습니다. 순환 버퍼 방식의 롤링 볼륨은 이후 시스템들에 채택되고 개선되었으며(InfiniTAM의 복셀 해싱은 같은 확장성 문제를 다른 방식으로 해결합니다), 그 루프 클로저 실험 — 포즈 그래프와 메시 변형 — 은 같은 주 저자의 직계 후속작인 ElasticFusion의 핵심 메커니즘이 되었습니다.

관련 문서