Cartographer SLAM: 실시간 Mapping과 Localization의 원리

유진·2025년 3월 19일
post-thumbnail

1. Cartographer SLAM이란?

Cartographer는 Google에서 개발한 오픈소스 SLAM 알고리즘으로, 로봇이 주변 환경을 인식하며 자신의 위치를 실시간으로 파악하고 지도를 만들어 나가는 기술이다.

SLAM 알고리즘은 크게 두 가지 역할을 수행해야 한다.

  1. 로봇의 위치 추정(Localization): 센서를 활용해 로봇이 현재 어디에 있는지 알아내야 한다.
  2. 지도 작성(Mapping): 위치 정보를 바탕으로 로봇이 이동한 환경의 지도를 구축해야 한다.

일반적으로 SLAM을 수행할 때 가장 큰 문제는 센서 오차 누적으로 인해 로봇의 위치가 점차 부정확해지는 것이다.

Cartographer는 이 문제를 해결하기 위해 스캔 매칭(Scan Matching)포즈 그래프 최적화(Pose Graph Optimization)라는 기법을 활용하여 정밀한 맵을 생성하고 오차를 줄인다.

2. 기존 방식(Gmapping)과 Cartographer SLAM의 차이

Cartographer SLAM 이전에도 여러 SLAM 알고리즘이 존재했으며, 대표적인 방식으로 Gmapping이 있다. 두 알고리즘의 차이를 이해하면 Cartographer가 어떻게 더 정밀한 맵을 구축할 수 있는지 쉽게 파악할 수 있다.

특징GmappingCartographer
사용 기법입실론 필터 기반 파티클 필터 방식스캔 매칭 + 포즈 그래프 최적화
지도 품질중간 정도의 품질매우 정밀함
누적 오차시간이 지나면 점점 커짐지속적인 보정으로 오차 최소화
연산 속도비교적 빠름연산량이 많음(고성능 CPU 필요)

📌 Gmapping: 입실론 필터 기반 파티클 필터 방식

Gmapping은 확률론적 접근법을 사용하여 로봇의 위치를 추정한다.

  • 입실론 필터(Epsilon Filter): 센서 데이터에서 작은 노이즈를 무시하는 필터링 기법. 이를 통해 지나치게 변동이 심한 데이터를 걸러낼 수 있다.

  • 파티클 필터(Particle Filter): 로봇의 위치를 여러 개의 가상의 후보(파티클)로 두고, 센서 데이터를 활용해 가장 가능성이 높은 위치를 선택하는 방식.

하지만 Gmapping은 누적된 오차를 효과적으로 보정하지 못하기 때문에 오랜 시간 이동하면 지도에 왜곡이 생기는 단점이 있다.

📌 Cartographer: 스캔 매칭과 포즈 그래프 최적화 결합

Cartographer는 센서 데이터를 비교하여 로봇의 위치를 정확하게 보정하는 방식을 사용한다.

  • 스캔 매칭(Scan Matching): 로봇이 이동할 때, 현재 측정한 센서 데이터를 이전 데이터와 비교하여 현재 위치를 추정하는 방식. 이를 통해 매 순간 로봇이 어디에 있는지를 정교하게 계산할 수 있다.

  • 포즈 그래프 최적화(Pose Graph Optimization): 로봇이 이동하면서 생성한 위치 데이터를 그래프 형태로 구성한 뒤, 전체적인 위치 관계를 최적화하여 오차를 보정하는 방식.

즉, 단순히 센서 데이터를 쌓아가는 것이 아니라, 과거의 데이터까지 다시 수정하면서 지도와 로봇의 위치를 함께 보정한다.

3. Cartographer SLAM의 핵심 원리

🔹 3.1 스캔 매칭 (Scan Matching)

스캔 매칭이란, 현재 측정한 센서 데이터를 이전에 기록된 지도와 비교하여 현재 위치를 결정하는 과정이다.

예시로 로봇이 1m 앞으로 이동했다고 가정해 보자.

  • LiDAR는 주변 환경을 스캔하여 벽이나 장애물까지의 거리를 측정한다.
  • 현재 측정된 데이터와 기존 맵을 비교하여, 로봇이 실제로 1m 이동했는지, 혹은 조금 덜 갔는지를 판단한다.
  • 이 과정을 반복하면서 점진적으로 정교한 위치 추정이 가능해진다.

🔹 3.2 포즈 그래프 최적화 (Pose Graph Optimization)

포즈 그래프는 로봇이 특정 위치에 도달할 때마다 노드를 생성하고, 이 노드들을 연결한 그래프 형태의 지도이다.

  • 각 노드(Node): 특정 시간에 측정된 로봇의 위치 정보
  • 엣지(Edge): 두 노드 간의 상대적인 거리 정보

이 그래프를 최적화하는 과정에서 센서 오차를 보정하여 전체적인 위치 관계를 더 정확하게 정리할 수 있다.

쉽게 말하면 "과거에 내가 여기 있었다"는 기록을 다시 수정하면서 오차가 최소화된 일관된 맵을 만든다는 의미이다.

🔹 3.3 루프 클로징 (Loop Closure)

로봇이 같은 장소를 다시 방문할 경우, 기존 지도와 현재 스캔 데이터를 비교하여 오차를 보정하는 과정이다.

  • 로봇이 한 바퀴 돌아서 처음 위치로 되돌아온 경우, 기존 데이터와 현재 데이터가 일치하지 않을 수 있다.
  • Cartographer는 이 차이를 감지하고, 그래프 최적화를 통해 지도 왜곡을 줄인다.

즉, "같은 장소인데 데이터가 다르네?" → "그럼 전체 위치 데이터를 다시 보정하자!" 하는 과정이다.

(그래서 cpu의 수행 능력이 딸릴 때 잘 가다가도 오차가 쬐끔씩 쌓여가는 바람에 루프클로징에서 판단한 오차가 커서 맵이 아예 크게 어긋나는 현상이 생긴다.. 파라미터 조정해서 잘 타협해야 함. 이거 때문에 노트북에서 작업할 때 맵핑 다시한 게 10번이 넘음)

4. Cartographer SLAM의 장점과 한계

✅ 장점

  • 정밀한 지도 작성: 기존 SLAM 알고리즘보다 정확하고 깨끗한 맵을 생성할 수 있다.
  • 오차 누적 방지: 포즈 그래프 최적화를 통해 장기간 사용해도 오차가 심하게 증가하지 않는다.
  • 루프 클로징 기능: 같은 위치를 방문하면 자동으로 오차를 보정하여 더욱 정교한 맵을 유지한다.

❌ 한계

  • 높은 연산량: 실시간으로 데이터를 처리하기 위해 고성능 CPU가 필요하다. 비교적 저성능인 CPU에서는 데이터와 파라미터를 적절하게 타협할 필요가 있다..
  • LiDAR 의존도: LiDAR의 성능이 낮거나 장애물이 많은 환경에서는 정확도가 떨어질 수 있다. 최대한 좋은 거 쓰자.
  • 복잡한 환경에서 노이즈: 유리벽, 좁은 공간, 움직이는 물체가 많은 환경에서는 지도 품질이 저하될 수 있다. 당연하지만 정적인 환경일수록 프로젝트를 진행하기에는 용이하다.

5. 결론

Cartographer SLAM은 기존의 Gmapping과 같은 방식보다 훨씬 정밀한 맵을 생성할 수 있는 알고리즘이다

  • 스캔 매칭을 이용한 정확한 위치 추정
  • 포즈 그래프 최적화를 통한 오차 최소화
  • 루프 클로징을 활용한 장기적인 맵 정밀도 유지

이러한 특징 덕분에 실내 자율주행 로봇, 모바일 로봇 연구, 공장 자동화 등 다양한 분야에서 활용되고 있다. (현재로썬 안정성과 정확성이 우선이며 빠르게 움직이는 동적 객체가 적은 환경이라면 Cartographer가 최선이지 싶다)

향후에 이보다 더 효율적인 알고리즘이 개발된다면, 연산 속도를 개선하면서도 더욱 정밀한 맵핑이 가능해질 것으로 기대된다.

0개의 댓글