Contents — find the section you need

주행 거리는 이동할수록 조금씩 오차가 누적되어 누적 오차가 계속 커집니다. 로봇이 방을 한 바퀴 돌고 출발점으로 돌아올 때, 가장 최근 프레임만 보는 시스템은 현재 위치가 출발점에서 수십 센티미터 정도 어긋나 있더라도 오류를 감지할 수 없습니다. 루프 클로저는 현재 시점이 과거 시점과 일치하는지 확인하고, 이 "동일 위치" 제약 조건을 이용하여 전체 루프를 따라 궤적을 다시 연결합니다.

0.30초 요약

  • 루프 클로저는 두 단계로 구성됩니다. 첫 번째 단계는 위치 후보를 검색하는 것이고, 두 번째 단계는 기하학적으로 동일한 위치인지 확인하는 것입니다.

  • Bag-of-Words, 전역 이미지 디스크립터, 그리고 학습 기반 위치 인식을 통해 후보를 빠르게 검색하고, 특징 재매칭과 RANSAC 알고리즘을 통해 오탐을 제거합니다.

  • 감지된 제약 조건은 포즈 그래프에 추가되고, SE(2)/SE(3) 그래프 최적화를 통해 과거 포즈를 부드럽게 수정합니다. 로컬 맵은 재투영 오차를 보존합니다.

  • 계절 변화, 조명, 가구 이동, 비슷하게 생긴 복도 등은 모두 잘못된 루프를 발생시킬 수 있습니다. 시간 간격, 이동 거리, 인라이어 개수, 지도 일관성 등 여러 기준을 사용하여 검증하십시오.

  • 루프 폐쇄는 "지도를 즉시 정확하게 만들어주는 마법 같은 기술"이 아닙니다. 잘못된 감지를 허용하면 전체 지도가 잘못 왜곡되므로, 보수적인 임계값 설정과 복구 가능한 설계가 필수적입니다.

1. 루프 제약 조건을 방정식으로 표현하기

Diagram 1 · Use the button to switch views
보정 전 주행 거리계 드리프트로 인해 열린 상태로 남겨진 포즈 그래프와, 검증된 루프 제약 조건을 추가한 후 시작 시점과 재방문 시점의 포즈를 일치시킨 모습

그림 1 — 위치 인식은 후보를 제안하고, 기하학적 검증은 루프 경계를 허용하며, 강건한 포즈 그래프 최적화는 누적된 드리프트를 궤적 전체에 분산시킵니다. 빨간색 후보는 무조건적으로 수용되지 않습니다.

시간 i에서의 포즈를 T_i\in SE(3)라고 하고, 시간 j에서 동일한 위치를 재방문할 때의 상대 포즈 관측값을 Z_{ij}라고 합시다. 루프 제약 조건의 잔차는 다음과 같이 나타낼 수 있습니다.

r_{ij}=\mathrm{Log}\left(Z_{ij}^{-1}T_i^{-1}T_j\right)\in\mathbb{R}^6

\mathrm{Log}은 강체 변환을 6차원 미소 회전 및 이동으로 변환하는 로그 맵입니다. 오도메트리 에지 \mathcal E_o과 루프 에지 \mathcal E_l을 결합하면 포즈 그래프 최적화는 다음과 같이 됩니다.

\min_{\{T_i\}}\sum_{(i,j)\in\mathcal E_o\cup\mathcal E_l} \rho\left(r_{ij}^{\mathsf T}\Omega_{ij}r_{ij}\right)

여기서 \Omega_{ij}은 정보 행렬이고 \rho은 Huber와 같은 강건한 손실 함수입니다. 루프 에지를 하나만 추가해도 긴 궤적에 걸쳐 누적된 오류가 전체 그래프에 분산됩니다.

2. 후보 찾기: 이미지를 "Bag of Words"로 변환

Bag-of-Words(BoW)는 로컬 디스크립터를 시각적 단어의 히스토그램으로 양자화하고 역문서빈도(IDF)를 사용하여 과거 키프레임과의 유사도를 계산합니다. ORB-SLAM 계열 시스템은 경량 ORB 디스크립터와 어휘 트리를 결합하여 후보를 소수로 좁힙니다. 모든 프레임을 전체 지도와 비교하지 않고도 유사한 장면을 찾을 수 있습니다.

전역 디스크립터는 전체 이미지를 단일 벡터로 압축하여 유사한 장면을 검색합니다. NetVLAD, CosPlace, EigenPlaces와 같은 학습 기반 방법은 조명 및 시점 변화에 강건한 표현을 학습하지만, 학습 영역과 다른 건물, 농지, 공장 등의 환경에서는 성능이 저하됩니다. 후보 검색은 속도를, 기하학적 검증은 정확도를 담당하므로 어느 한쪽에만 의존해서는 안 됩니다.

3. 기하학적 검증: 유사성만으로는 루프를 닫기에 충분하지 않습니다.

후보 이미지에서 디스크립터를 다시 매칭하여 대응점을 얻습니다. 단안 카메라의 경우 RANSAC을 통해 필수/기본 행렬을 추정하고, 알려진 지도 포인트가 있는 경우 PnP를 사용하며, 평면 텍스처의 경우 호모그래피를 사용합니다. 인라이어 개수, 재투영 오류, 깊이 값이 양수인지 여부, 시점 차이가 물리적으로 타당한지 여부를 확인하여 후보가 실제로 동일한 위치라는 확신을 높입니다.

잘못된 루프는 위험합니다. 그래프 최적화는 잘못된 관측값을 기반으로 하더라도, 지도 형태를 그와 일치하도록 왜곡할 수 있습니다. 두 개의 유사한 복도, 일렬로 늘어선 창문, 밭고랑, 공장의 선반 등은 BoW(Bundle of Weight)만으로는 구별하기 어렵습니다. 따라서 시간적으로 너무 가까운 프레임은 후보에서 제외하고, 여러 연속적인 키프레임에서 일관된 일치를 요구하며, 독립적인 센서(IMU/LiDAR/GNSS)와의 일치도 확인해야 합니다.

4. 포즈 그래프 및 지도 업데이트

루프 에지를 추가한 후, 먼저 포즈 그래프를 통해 키프레임 포즈만 최적화하고 지도 포인트가 포즈를 따라가도록 합니다. 대규모 지도의 경우, 모든 포인트에 대해 매번 번들 조정(Bundle Adjustment)을 실행하는 대신 로컬 지도와 글로벌 포즈를 분리하면 실시간 성능을 유지하기 쉽습니다. 최적화가 완료되면 현재 map→odom 변환을 업데이트하고, 연속성을 우선시하는 odom→base_link 변환이 갑자기 변경되지 않도록 설계합니다.

ROS 2 TF2 로컬 오도메트리는 odom→base_link를 출력하고, SLAM의 전역 보정은 map→odom를 조정합니다. 루프 종료 시 로봇 본체가 순간 이동하는 것처럼 보이지 않도록 보정값을 시간적으로 부드럽게 조정합니다. 그러나 지도와 실제 세계 사이의 차이를 숨기기 위해 지나치게 부드럽게 조정하면 내비게이션이 오래된 위치를 계속 사용하게 되므로 보정값의 크기와 적용 시간을 기록해야 합니다.

5. 실패하기 쉬운 환경

조건 어려움 완화 방법
계절/주야 변화 색상, 그림자, 식생 변화 학습된 디스크립터, 구조적 특징, LiDAR 융합
움직이는 사람/차량 같은 장소, 다른 레이아웃 동적 객체 마스킹, 정적 배경만 일치
반복 패턴 잘못된 장소도 비슷하게 보임 기하학적 검증, 거리 제약 조건, 다중 프레임 확인
긴 시간 복도/선반 낮은 시차 및 특징점 IMU, 인공 마커, UWB
큰 조명 변화 밝기 특징점 변화 HDR/노출 보정, 학습된 위치 인식
급커브/흐림 적은 대응점 IMU 예측, 키프레임 간격 조정

6. 구현 체크리스트

  1. 각 키프레임의 이미지, 타임스탬프, 포즈 및 특징점 디스크립터를 저장합니다.

  2. 후보에서 최근 프레임을 제외하고 BoW/전역 디스크립터를 통해 과거의 후보 몇 개를 추출합니다.

  3. 인라이어 개수, 재투영 오류 및 양의 깊이를 기준으로 임계값을 설정하여 대응점을 기하학적으로 검증합니다.

  4. 서로 다른 시점의 여러 프레임에서 동일한 후보가 유효한지 확인합니다.

  5. 루프 에지를 포즈 그래프에 추가하고 강건 최적화를 실행합니다.

  6. 보정 크기, 거부 사유 및 계산 시간을 기록합니다. 잘못된 루프는 되돌릴 수 있도록 합니다.

7. 연구 방향

현재 연구는 이미지 검색 방향으로 진행되고 있습니다. 대규모 자기지도 학습을 통해 견고성을 확보하고, LiDAR, 카메라, 이벤트 카메라 모달리티 간에 디스크립터를 공유하며, 장기 지도를 계절별로 업데이트합니다. 또한 NeRF 및 3D 가우시안 스플래팅과 같은 새로운 장면 표현 방식을 장소 인식에 활용하려는 시도도 있지만, 추론 속도, 메모리 사용량, 동적 객체, 라이선스 및 재현성 등을 검증해야 합니다.

공장이나 농지처럼 동일한 모양의 통로나 밭고랑이 반복되는 곳에서는 이미지 정보만으로 루프 클로저를 찾는 것이 모호해지기 쉽습니다. 작업 경로, IMU, 바퀴 주행 거리계, RTK-GNSS, 매핑된 작업 경계 등을 사전 지식으로 활용하여 후보 검색 범위를 제한하면 오탐지를 줄일 수 있습니다. 연구 프로토타입을 현장에 도입할 때는, 잘못된 루프가 감지될 경우 지도를 고정하고 수동으로 다시 초기화할 수 있는 운영 절차를 처음부터 마련해야 합니다.

8. 결론

루프 클로저는 세 단계 과정입니다. 과거 장면을 떠올리는 이미지 검색, 기하학적 검증, 동일한 위치임을 증명하고, 그래프 전체에 오류를 분산시키는 최적화를 수행합니다. BoW(Bottom of Work) 또는 학습된 디스크립터 점수만으로 루프를 닫지 마세요. 대응점, 센서 일치, 시간적 연속성을 확인해야 합니다. 루프 클로저를 올바르게 처리하면 전체 맵에서 주행 거리계 드리프트를 수정하고 장시간 작동하는 로봇의 자체 위치 추정을 일관되게 유지할 수 있습니다.

이해도 확인
시각적으로 유사한 이미지만으로 루프를 닫을 수 있나요?

외형만으로는 잘못된 매칭이 발생할 수 있습니다. 제약 조건을 추가하기 전에 기하학적 구조를 확인하세요. 잘못된 루프는 전체 맵을 왜곡할 수 있습니다.

참고 자료

What to read next

Review the background음성/영상 입문 - 카메라와 IMU를 이용한 모션 추정의 실용적인 기초Continue the seriesVisual-SLAM 입문 — 카메라가 "내가 어디에 있지?"를 학습하는 방법"Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교