LiDAR point cloud로 loop detection을 하려면 어떤 방법들이 있을까요?

SJ·2025년 2월 19일
1

이 게시글은 장형기님의 SLAM 기술 면접 질문 100선에 대한 제 나름대로의 답을 정리한 것입니다.


LiDAR Point Cloud로 Loop Detection을 하는 것은 결국 이 장소가 어디인지를 아는 것과 같습니다.
보통 이것을 하기 위해 LiDAR를 통해 들어온 scan을 하나의 descriptor로 만들어 저장을 하고 현재 scan과 비교하여 loop를 detection하게 됩니다.
이것을 하기 위해 어떤 것을 사용하는지 알아보겠습니다.

1. SCAN CONTEXT

scan context는 kaist에서 발표한 논문인데 gpu를 사용하지 않고 cpu에서 비교적 간단하게 사용할 수 있다는 장점이 있습니다.

  • 방법: scan 360도의 높이(z값)을 쭉 저장합니다. 그것을 bin fuction에 넣어 descriptor 형태로 만들게 됩니다. 결론적으로 말하면 현재 내 위치에서 본 주변 사물들의 높이를 활용해서 현재의 위치를 아는 것입니다.

  • 장점: 계산이 빠르고 구현이 쉬움

  • 단점: 고도가 크게 달라지는 환경이나 너무 좁은 환경에서는 잘 안됨


2. SegMap/SegMatch

이 논문을 옛날에 읽어서 가물가물 하지만 물체 단위로 segmentaion을 하여 저장을 하는 것이 흥미로운 논문이었습니다. 이 논문에서는 물체의 종류와 모양을 고정해놔서 범용적으로 사용하기는 힘들겠다고 생각하였는데 현재는 어떤 모습으로 발전했는지는 모르겠습니다. 물체 단위로 매칭하려면 물체를 전부 보고 그 중심점을 찾아야 하는데 그것이 쉽지 않기 때문에 실험에 어려움을 겪는다고 알고 있습니다.

  • 방법: Point Cloud에서 물체나 구조를 추출 후 각 세그먼트를 특징 벡터로 만들어서 사용

  • 장점: 물체가 많고 구조물이 뚜렷한 환경에서 잘됨

  • 단점: segmentaion이 잘못되면 매칭이 불안정해질 수 있음, 물체에 occlusion이 발생할 때 매칭이 불안정해 짐


3. ORB-Descriptor 사용

최근 읽은 논문인 Efficiently Closing Loops in LiDAR-Based SLAM Using Point Cloud Density Maps에서 제안한 방법입니다.

읽어보고 나쁘지 않겠다고 생각하여 저도 다음에 활용해볼 예정입니다.

  • 방법: LiDAR Point scan을 bird-eye-view로 바꾸고 그 이미지에 대한 ORB-feature descriptor를 생성하고 저장합니다. 그 저장된 descriptor와 현재 scan descriptor를 비교하여 place recognition을 진행하게 됩니다.

  • 장점: 채널이 다른 LiDAR를 통해 들어온 scan들도 place recognition을 할 수 있고 구조물이 비슷한 장소에서도 뚜렷하게 place recognition을 할 수 있다고 합니다.

  • 단점: 다양한 구조가 겹치거나 동적 객체가 많은 경우 안됨


이렇게 크게 3가지 정도를 사용할 수 있을 것 같습니다.

물론 딥러닝으로도 할 수 있지만 그거는 제외하였습니다.

감사합니다.

profile
student

0개의 댓글