[ROS2] Global Localization

TaerinLog·2025년 11월 10일

이전 Localization 실습을 진행하였을때 초기 위치가 실제 로봇과 많이 다르거나 방향이 맞지 않으면 Localization이 제대로 수행되지 않는 것을 확인하였다.
그렇다면, 자신의 위치를 전혀 모를때는 어떻게 대처하여야 할까 ?


Global Localization

  • 로봇이 자신의 초기 위치를 전혀 모르는 상태에서 지도(map) 상에서 실제 위치를 추정하는 과정
  • 즉, “내가 지금 지도 어디쯤 있는지 완전히 모르겠다” 상황에서 AMCL 같은 알고리즘을 이용해 모든 후보 위치를 확인하며 찾아내는 것

Global Localization 사용 가능한 상황

  • 초기 위치를 모를 때
    • 로봇을 켠 직후, 초기 pose를 알 수 없는 경우
    • 지도 전체에 파티클을 뿌려 위치 추정
  • Odometry 누적 오차 발생
    • 로봇이 장시간 이동하면서 odom 누적 오차가 커짐
    • Local Localization으로는 현재 위치를 잘못 추정 → map 기준 재보정 필요
  • 갑작스러운 위치 불일치 / 장애물 회피 후 이동
    • 로봇이 장애물 회피, 밀림 등으로 실제 위치와 odom이 크게 불일치
    • AMCL이 기존 pose 추정에 실패할 때 지도 전체 탐색 필요
  • 지도 갱신 후 재보정
    • SLAM 기반 지도 업데이트 후 이전 위치 추정이 맞지 않을 때
    • 지도 전체를 재탐색하며 정확한 위치 재설정
  • 센서 데이터 이상 / 장애 발생
    • LiDAR, IMU, 카메라 등 센서 오류로 위치 추정이 불확실해진 경우
    • 파티클이 잘못된 위치로 치우쳤을 때 전체 지도 탐색으로 회복

Global Localization 동작 원리

1. 지도 전체에 파티클 뿌리기

  • 지도 상 가능한 모든 위치에 수천 개 파티클(위치 후보)을 무작위로 배치

2. 센서 관측으로 후보 평가

  • 각 파티클 위치에서 예상되는 LiDAR/카메라 스캔과 실제 스캔 비교
  • 예상 스캔과 비슷한 파티클일수록 weight ↑

3. 리샘플링

  • 가중치 높은 파티클만 남기고 낮은 것은 제거 → 위치 후보 점점 수렴

4. 최종 위치 추정

  • 분포가 좁아지고 최고 가중치 위치를 실제 pose로 선택 → /amcl_pose publish
profile
taerin

0개의 댓글