LiDAR SLAM을 하다보면 제일 골치 아픈게 place recognition인 것 같습니다.
이것을 했다는 논문이 2025년에 나와서 한 번 읽어보았습니다.
일리노이 대학교에서 쓴 논문입니다.
이 논문은 LiDAR를 통한 Loop Closing Detection을 어떻게 더 잘할 수 있는지 고민한 논문입니다.
현재 LiDAR Loop Closing의 문제점은 다음과 같습니다.
센서의 스캔 패턴, FoV, 채널 수 차이로 인해 동일한 장소를 인식하기 어려움
반복적인 구조(터널이나 다리 등)로 인해 서로 다른 장소를 잘못 매칭할 가능성이 존재함
이러한 문제점을 해결하기 위해 이 논문은 새로운 Loop Closure detection 알고리즘을 제안합니다.
내용은 다음과 같습니다.
1. 로컬 맵을 Bird eye view로 변환
2. 변환된 로컬맵에서 ORB feature를 추출하고 저장
3. 자체 유사성 제거
4. Loop Closure 탐지
쿼리 로컬 맵의 특징 descriptor를 database와 매칭해 Loop Clousre 후보를 탐지
RANSAC 기반 geometric 검증으로 후보를 검증하고, 2D BirdeyeView 변환을 기준으로 정렬
5. 3D 정렬
이를 통해 이 논문이 주는 Contribution은 다음과 같습니다.
1) 다양한 LiDAR 센서와 호환되는 Loop Closure Detection 알고리즘 개발
2) multi session 및 오랜 시간이 흐른 뒤 재방문 시에도 가능
3) 비평면 움직임에도 loop closure detection 가능
4) Perceptual Aliasing에도 강건
5) 다른 LiDAR에서 기록된 데이터도 정렬이 가능

과정에는 그림에서 보이는 것처럼 진행됩니다.
1) Local map 생성
2) bird eye view projection
3) features detection and pruning
4) binary search tree database
5) RANSAC verfication
6) initial 3D alignment
차례대로 한 번 자세히 살펴보겠습니다.
현재 scan과 map을 비교하는 기존 loop closure detection알고리즘들과 달리
이 알고리즘은 Local map을 생성하여 비교합니다. 더 많은 정보를 이용하여 비교하기 때문에
다양한 센서를 사용하는 경우에도 장소 인식을 가능하게 합니다.
Local map을 만드는 과정을 살펴보겠습니다.
LiDAR scan data 수집
Point Cloud 변환
Local map 생성
DownSampling
Local map을 frame pose로 변환
Local Map 생성 반복
Bird Eye View 변환을 위해, 포인트 클라우드의 Local map에서 ground plane을 검출하고 이를 로컬 좌표계의 xy-평면과 정렬해야 합니다.
과정은 다음과 같습니다.
Ground Detection
지면은 일반적으로 LiDAR scan에서 가장 낮은 z-좌표를 가진 점으로 구성
로컬 Map 을 축으로 5m 해상도 셀로 분할.
각 셀에서 가장 낮은 z-좌표를 가진 점을 샘플링
Ground Alignment
샘플링된 지면 포인트 를 -평면과 정렬하기 위해 Least Squares Problem을 정의
최종 변환 및 정렬
로컬 맵을 Bird Eye View로 Porjection 합니다.
이를 통해 3D point를 직접하는 것보다 계산량을 줄였습니다.
Projcetion
각 포인트의 -좌표를 제거하여 2D 평면에 투영
결과: 2D 카르테시안 grid
격자
Projection 이미지를 쪼개서 grid로 만듭니다.
정보 저장 방식
상대적 밀도를 통한 이미지 정의
동적 객체와 노이즈 제거
ORB descriptor 계산
local map에서 변환한 BEV image에서 ORB descriptor를 계산하고
이것을 Hamming 거리 기반 tree에 넣어 저장합니다.
Self-Similarity Pruning
같은 이미지 내에서 유사한 descriptor를 가진(이 논문에선 Hamming거리가 35이하) feature를 제거
이를 통해 Perceptual Aliasing을 예방할 수 있습니다.
HBST 기반 데이터 베이스 생성
ORB descriptor를 hamming거리 기반의 HBST 데이터 베이스에 저장합니다.
장점
RANSAC 기반 정렬
Hamming 거리가 가까운 descriptor를 뽑아 RANSAC 기반 정렬을 시행하여 최적의 transform을 찾습니다.
1) 특징 쌍 샘플링: RANSAC에서 두 개의 특징 쌍을 무작위로 선택
2) 초기 변환 계산: 선택된 특징 쌍을 사용해 Kabsch-Umeyama알고리즘으로 2D 강체 변환 계산
3) 거리 기반 Outlier 제거: 변환 를 사용해 모든 매칭된 특징 쌍의 유클리드 거리 계산
( 1.5m이상인 매칭을 Outlier로 간주)
4) 최적 변환 선택: RANSAC 반복 횟수 동안 , 가장 많은 inlier를 포함하는 변환을 최적 변환으로 선택
3D 변환
BEV 이미지 간의 최적 Transformation을 기반으로 3D 변환을 계산하여 3D 최적 transformation 계산
저는 scan context를 써서 Loop Closure를 탐지하곤 했는데 너무 가까운 거리의 물체에 대해서 높이를 제대로 잡지 못해 문제가 발생하는 경우가 종종 있었습니다. 이것을 활용하면 그 문제를 해결할 수도 있을 것 같아 흥미롭네요.