SLAM++
Salas-Moreno 2013 · 논문
한 줄 요약 — 최초의 객체 지향 SLAM 시스템: 맵은 실시간 3D 객체 인식을 SLAM 루프 “안에서” 수행하여 구축된 6-DoF 객체 포즈들의 명시적 그래프이며, 원시 기하 맵에 비해 극히 적은 저장 공간으로 밀집한 예측력을 제공한다.
문제
SLAM++ 이전에는 실시간 SLAM 시스템이 점, 선, 패치, 또는 깊이 맵과 같은 비파라미터적 표면 등의 저수준 원시요소 위에서 동작했으며, 이들은 견고하게 매칭되고 기하학적으로 변환되며 최적화되어야 했다. 이는 엄청난 연산을 낭비하고 도메인 지식을 무시한다: 많은 실내 장면은 반복되는 도메인 특화 객체와 구조물(의자, 테이블, 모니터)로 이루어져 있다. 이러한 객체에 대한 사전 지식을 SLAM 운용 자체의 루프 안에서 활용한다면, 깊이 데이터로부터의 객체 인식이 원시 기하 처리를 대체할 수 있으며 — 이는 간결하고 의미론적으로 유의미한 맵, 강력한 루프 클로저 제약, 객체 그래프로부터의 밀집 표면 예측을 만들어낼 수 있다.
방법 및 아키텍처
파이프라인(논문의 그림 2): 라이브 프레임 표면 측정(정점 맵 + 법선 맵 ) → (1) 현재 SLAM 그래프 로부터 렌더링된 밀집 다중 객체 장면 예측에 대한 ICP를 통한 라이브 카메라 포즈 추정 → (2) 객체 검출 및 그래프 삽입 → (3) 포즈 그래프 최적화 → (4) 다음 예측 및 활성 객체 탐색을 위한 표면 렌더링.
- 객체 데이터베이스: 반복되는 각 객체는 KinectFusion으로 한 번 스캔되며, marching cubes로 메시를 추출하고 정리한 뒤 캐노니컬 좌표 프레임과 함께 저장한다.
- 실시간 객체 인식(GPU): Drost 등을 따라, 방향이 있는 점 쌍의 상대적 위치/법선에 대한 4D 디스크립터인 Point-Pair Features(PPF)가 일반화된 허프 파라미터 공간에서 투표한다. 투표는 64비트 코드로 패킹되어 GPU상의 병렬 정렬+환원(sort+reduce)으로 누적되며, 16만 개의 PPF에 대한 전역 모델 기술을 구축하는 데 5 ms 미만이 걸린다. 검출된 포즈는 약 ±30° 회전과 ±50 cm 이동 범위의 오차를 가지므로, 각 후보는 삽입 전에 두 번째 ICP 추정으로 정제되고 검증된다.
- 객체 그래프에 대한 카메라 추적: 카메라-대-모델 변환은 라이브 깊이 맵의 모든 유효 픽셀 에 대한 점-대-평면 오차를 반복적으로 최소화하여 추정된다.
여기서 은 증분 트위스트이고, 은 예측된 정점/법선 맵, 는 투영적으로 대응된 픽셀, 는 강건한 Huber 페널티다. 가우스-뉴턴 정규방정식(, Cholesky)이 최대 10회 반복 실행된다. KinectFusion의 부분적 모델과 달리 완전하고 고품질의 다중 객체 예측에 대해 추적함으로써, 이미 설명된 픽셀을 마스킹하여 객체 탐색이 설명되지 않은 영역에만 집중하도록(“능동 탐색”) 할 수 있다.
- 그래프 최적화: 세계는 에서의 과거 카메라 포즈 와 객체 포즈 로 이루어진 그래프이며, 6-DoF 카메라-객체 ICP 측정값 와 카메라-카메라 제약 을 가진다:
여기서 는 마할라노비스 거리, 는 로그 맵이며, 역공분산은 ICP 헤시안 로 근사한다. Levenberg-Marquardt와 희소 Cholesky 솔버(g2o)로 풀이한다.
- 구조적 사전 정보: 객체별 단항 지면 평면 제약이 에너지()에 추가되어, 첫 관측에서 검출된 공통 평면에 객체들을 고정한다.
- 재위치 인식 및 대규모 루프 클로저: 추적 손실 이후 새로운 로컬 그래프가 추적되며, 3개 이상의 객체를 포함하게 되면 두 그래프 모두를 방향이 있는 점들의 메시(객체 위치를 정점으로, 객체의 x축을 법선으로)로 취급하여 동일한 PPF 인식 기계를 통해 장기 그래프와 매칭한다. ICP 일관성 검증에 실패한 이동된 객체는 유효하지 않음으로 표시되어 그래프를 손상시키지 않게 한다.
실험 결과
- 15×10×3 m 크기의 큰 공동 공간을 약 10분간의 실시간 실행으로 매핑했으며, 루프 클로저와 추적 손실 후 재위치 인식을 포함한다; 지면 평면 사전 정보만으로 제약된 34개의 객체 인스턴스(두 가지 의자 유형, 두 가지 원형 테이블 유형)가 매핑되었다.
- 게이밍 랩톱에서 10×6×3 m 방에 대한 시스템 통계: 20 fps, 132개의 카메라 포즈, 5개 객체 클래스에서 나온 35개의 객체, 338개의 그래프 엣지.
- 메모리: 350 KB의 그래프 + 20 MB의 객체 데이터베이스, 동일 부피에 대한 KinectFusion TSDF의 1.4 GB(복셀당 4바이트, m당 128 복셀) 대비 — 유사한 예측력에서 약 1/70의 압축률.
- 이동된 객체 탐지(불일치 객체를 표시하고 제외)와 문맥 인식 AR을 시연했다: 가상 캐릭터가 방 전체를 스캔하지 않고도 객체 맵을 탐색하며 앉을 자리를 찾는다.
SLAM에서의 의미
SLAM++는 객체 수준 SLAM 연구 방향을 열었으며, 의미론적 개체로부터 구축된 맵이 루프 클로저, 재위치 인식, 객체 수준의 장면 이해를 가능하게 하면서도 원시 기하보다 훨씬 더 간결할 수 있음을 보여주었다. 그 주된 한계 — 스캔된 인스턴스의 사전 구축 데이터베이스 — 는 이후 계보에서 정확히 제거된 부분이다: Fusion++는 Mask R-CNN으로 실시간으로 객체를 발견하고, MoreFusion은 다중 객체 6D 포즈를 추론하며, NodeSLAM과 DSP-SLAM은 메시를 학습된 형상 사전으로 대체한다. 의미론적 개체가 원시 기하보다 더 강력한 맵 요소를 만든다는 핵심 통찰은 현대의 3D 장면 그래프 시스템에서 다시 나타난다.