맵 병합

맵 병합은 서로 다른 로봇(또는 같은 로봇의 서로 다른 세션)이 구축한 서브맵을 정렬하여 하나의 일관된 전역 맵으로 만드는 과정이다. 각 로봇은 SLAM을 자신만의 임의의 좌표 프레임에서 시작한다. 병합은 서로 연결되지 않은 로컬 맵들의 집합을 하나의 공유 표현으로 바꾼다.

표준 파이프라인

  1. 앵커를 찾는다. 로봇 간 루프 클로저(장소 인식 + 기하학적 검증)는 서로 다른 맵의 키프레임 사이에 상대 포즈 제약을 제공한다. 하나의 검증된 클로저만으로도 두 프레임을 관계지을 수 있고, 여러 개가 있으면 정렬이 잘 조건화된다.
  2. 맵 간 변환을 추정한다. 매칭된 키프레임으로부터 두 맵 프레임 간의 변환을 계산한다 — 두 맵 모두 메트릭일 때(스테레오, RGB-D, VIO)는 SE(3)\mathrm{SE}(3), 스케일이 서로 다른 단안 맵을 병합할 때는 (스케일을 더한) Sim(3)\mathrm{Sim}(3)을 사용한다. 추정은 매칭된 특징에 대한 PnP나 essential matrix 방법, 또는 공유 랜드마크의 3D-3D 정렬을 사용한다.
  3. 데이터를 융합한다. 한 맵을 다른 맵의 프레임으로 변환한 다음 중복 콘텐츠를 병합한다: 두 로봇이 모두 관측한 공통 가시(co-visible) 랜드마크를 통합하고, 키프레임 데이터베이스와 공가시성/포즈 그래프를 결합하며, 루프 클로저 엣지는 일반적인 그래프 엣지가 된다.
  4. 공동으로 최적화한다. 병합된 그래프에 대해 포즈 그래프 최적화나 번들 조정을 실행하여, 정렬 오차가 이음매에 집중되지 않고 양쪽 궤적에 분산되도록 한다. 분산형 시스템에서는 이 단계가 분산 최적화이고, 중앙집중식 시스템에서는 서버가 전역 BA를 실행한다.

정렬 수학

양쪽 맵에서 모두 관측된 공유 랜드마크인 NN개의 대응하는 3D 포인트 쌍 {piqi}\{\mathbf{p}_i \leftrightarrow \mathbf{q}_i\}이 주어지면, 맵 간 변환은 다음의 닫힌 형식 최소자승 정렬이다

mins,R,tipi(sRqi+t)2,\min_{s,\,\mathbf{R},\,\mathbf{t}} \sum_i \left\| \mathbf{p}_i - (s\,\mathbf{R}\,\mathbf{q}_i + \mathbf{t}) \right\|^2,

이는 Horn/Umeyama 방법으로 풀린다: 중심을 뺀 뒤, 상관 행렬의 SVD로 R\mathbf{R}을 얻고, 분산 비율로부터 ss를 복원(SE(3)\mathrm{SE}(3)의 경우 s1s \equiv 1)한 후, 중심으로부터 t\mathbf{t}를 구한다. 대응관계에 대해 RANSAC으로 감싸면, 이것이 2단계의 주력 방법이다. 2D 관측값만 사용 가능한 경우(단안), 한 맵의 랜드마크를 다른 맵의 키프레임에 대해 푸는 PnP, 또는 essential matrix 분해가 같은 역할을 한다.

하나의 맵 프레임은 기준(게이지)으로 선택되어야 한다: 일반적으로 더 오래된 맵, 더 큰 맵, 또는 서버의 정전 프레임이 자신의 좌표를 유지하고, 다른 맵이 그 프레임으로 변환된다.

중복을 제대로 융합하기

정렬 후 중첩 영역은 두 배로 존재한다. 이를 잘 병합하는 것이 중요하다:

설계 고려사항 및 함정

SLAM에서의 의미

맵 병합은 협업이 실제로 결실을 맺는 지점이다: NN개의 부분적이고 드리프트하는 맵을, 어떤 단일 로봇도 달성할 수 없는 더 넓은 커버리지와 더 많은 루프 클로저를 가진 하나의 맵으로 바꾼다. 맵 간 변환, 중복 랜드마크 융합, 공동 최적화와 같은 동일한 개념들이 멀티세션 매핑, 기존 맵으로의 재위치추정, AR과 자율주행을 위한 크라우드소싱 매핑에서도 반복적으로 등장한다.

관련 문서