#ROS - SLAM Localization_MCL
본문 바로가기
ROS_Robot Operating System

#ROS - SLAM Localization_MCL

by 권가 2025. 10. 15.

위치 추정(Localization)과 좌표계(Frame) 사이의 관계

🧭 로봇 위치 및 좌표계 보충 설명
1. 로봇의 위치와 중심 (base_footprint)
로봇의 위치 기준: 로봇공학에서 로봇의 '위치'를 말할 때는 복잡한 전체 구조 대신 로봇을 대표하는 하나의 기준점을 사용합니다.

base_link vs. base_footprint:

base_link (로봇 본체 프레임): 로봇의 기계적 중심에 고정된 좌표계입니다. 로봇의 움직임과 회전을 표현하는 데 사용됩니다.

base_footprint (로봇 중심 프레임): base_link와 같은 수평 위치를 가지지만, **바닥(지면, z=0)**에 있습니다. 로봇이 회전할 때 base_link는 z축을 따라 회전하지만, base_footprint는 z축 방향의 움직임이 없습니다. 로봇의 평면 위치(x,y)와 자세(θ)를 나타낼 때 가장 이상적인 기준점이며, 사용자님이 언급하신 **'로봇의 중심'**에 가장 가깝습니다.

2. 로봇 위치 변화와 데드 레코닝 (Dead Reckoning)
위치 변화: 로봇의 중심(base_footprint)은 로봇이 움직임에 따라 당연히 계속 변화합니다.

데드 레코닝 (Dead Reckoning): 이 방식은 움직임을 측정하여 현재 위치를 추정하는 방법입니다. 주로 **오도메트리(Odometry)**를 통해 구현됩니다.

오도메트리 원리: 로봇의 바퀴 회전 수(엔코더 데이터)나 IMU(관성 측정 장치) 데이터를 적분하여 직전 위치로부터의 상대적인 이동 거리와 방향을 계산합니다.

한계: 이 방법은 시간이 지날수록 센서 오차(미끄러짐, 엔코더 해상도 등)가 누적되어 **누적 오차(Drift)**가 발생하며, 실제 위치와 점점 멀어지게 됩니다.

3. 오돔 프레임 (odom)의 역할
오돔 프레임은 데드 레코닝(오도메트리)으로 계산된 로봇의 위치를 표현하기 위한 기준점입니다.

정의: 오도메트리가 시작되는 **초기 위치를 원점(Origin)**으로 하는 좌표계입니다.

역할: odom 프레임은 **base_footprint**의 위치를 시간이 지남에 따라 미끄러짐이 없는 이상적인 상태로 추적하는 데 사용됩니다.

특징:

상대적: 로봇이 움직일 때, base_footprint는 odom 프레임 내에서만 움직입니다.

누적 오차: odom 프레임 자체는 고정되어 있지만, 센서 오류로 인해 odom 프레임이 나타내는 로봇의 위치는 실제 물리적 위치와 점차 멀어집니다.

4. 위치 추정: 오돔 프레임과 지도 프레임의 관계
사용자님이 말씀하신 **"base_footprint의 중심과 오돔 프레임의 관계를 localization: MCL이라고 한다"**는 표현은 정확하지는 않습니다.

odom 프레임과 base_footprint의 관계: 이것은 오도메트리에 의해 계산되며, 단기적이고 정확한 상대 위치를 나타냅니다. (TF 관계: odom → base_footprint)

AMCL의 역할: MCL (Monte Carlo Localization) 또는 ROS에서 사용하는 **AMCL (Adaptive MCL)**은 다음과 같은 관계를 추정하는 데 사용됩니다.

관계 통신 프레임 역할
Localization (위치 추정) map → odom 지구(Map) 좌표계와 오도메트리 좌표계 사이의 변환을 추정합니다. AMCL은 이 변환을 추정하여 오도메트리의 누적 오차를 지도에 맞춰 수정합니다.

Sheets로 내보내기
즉, AMCL은 로봇의 현재 위치가 지도(Map) 상의 어느 지점에 해당하는지 정확히 파악하여 map 프레임과 odom 프레임 간의 오프셋(Offset)을 계산합니다.

결론적으로,

**base_footprint**는 로봇의 움직이는 중심입니다.

odom 프레임은 그 **base_footprint**의 **상대적 움직임(오도메트리)**을 추적하는 기준입니다.

AMCL은 map (지도)과 odom 프레임 간의 정확한 관계를 추정하여, 로봇의 위치를 장기적으로 오차 없이 유지하는 전역 위치 추정을 수행합니다.

 


localization algorithms

 

🧭 주요 위치 추정(Localization) 알고리즘
1. 필터 기반 방법 (Filter-based Methods)
이산 시간(Discrete Time)에 로봇의 상태(위치와 자세)를 추정하는 데 초점을 맞춥니다.

알고리즘 특징 ROS 응용 예시
칼만 필터 (Kalman Filter, KF) 선형 시스템을 위한 최적의 추정 필터. 이전 상태와 현재 측정값을 결합하여 오차를 최소화합니다. 센서 데이터 융합, 오도메트리 보정 등
확장 칼만 필터 (Extended Kalman Filter, EKF) KF를 비선형 시스템에 적용하기 위해 선형 근사(Taylor 시리즈 전개)를 사용합니다. 초기 ROS 내비게이션, SLAM의 백엔드 일부
무향 칼만 필터 (Unscented Kalman Filter, UKF) EKF보다 더 정교하게 비선형 시스템의 통계적 속성(평균, 공분산)을 추정합니다. EKF보다 정확하지만 복잡합니다. 고급 센서 융합 및 상태 추정

2. 확률 기반/파티클 기반 방법 (Probabilistic/Particle Methods)
확률 분포를 사용하여 로봇의 위치를 나타내며, 불확실성 하에서 위치 추정을 잘 수행합니다.

알고리즘 특징 ROS 응용 예시
몬테 카를로 위치 추정 (Monte Carlo Localization, MCL) 파티클 필터(Particle Filter)를 사용하여 로봇의 위치 확률 분포를 수많은 무작위 샘플(파티클)로 표현합니다. ROS AMCL (Adaptive MCL)의 기초. 지도 상에서 전역 위치 추정을 수행하는 데 가장 널리 사용됩니다.
AMCL (Adaptive MCL) 표준 MCL을 개선하여, 로봇의 위치 불확실성에 따라 파티클의 수를 동적으로 조절합니다. 로봇의 위치를 '잃어버렸을 때' (Kidnapped Robot Problem)도 효율적으로 재추정합니다. TurtleBot3 내비게이션 스택의 표준 위치 추정기입니다.

3. 기타 및 최신 방법
알고리즘 특징 사용 목적
그래프 기반 최적화 (Graph-based Optimization) 센서 측정값과 오도메트리 데이터 간의 관계를 노드와 엣지로 표현한 후, 전체 그래프를 최적화하여 오차를 최소화합니다. SLAM (Simultaneous Localization and Mapping)에서 지도와 위치를 동시에 만드는 데 주로 사용됩니다. (예: g2o, Ceres Solver)
비주얼 오도메트리/SLAM (Visual SLAM) 카메라 이미지를 사용하여 로봇의 움직임과 주변 환경을 추정합니다. 특징점 추적(Feature Tracking)과 번들 조정(Bundle Adjustment, BA) 같은 기법이 사용됩니다. GPS가 작동하지 않는 실내 환경에서 카메라만으로 위치와 지도를 만드는 데 유용합니다.

 


MCL algorithm

MCL은 **파티클 필터(Particle Filter)**를 사용하여 로봇의 위치에 대한 불확실성을 표현하고, 센서 데이터가 들어올 때마다 이 불확실성을 줄여나가는 방식으로 작동합니다. 🤖


🎲 몬테 카를로 위치 추정 (MCL) 원리

MCL의 핵심 아이디어는 **로봇이 있을 수 있는 모든 가능한 위치와 자세(Pose)**를 수많은 **가상의 점, 즉 파티클(Particle)**로 표현하는 것입니다.

1. 초기화 (Initialization)

  • 전역 추정 (Global Localization): 로봇이 자신의 위치를 전혀 모를 때, 파티클들을 지도 전체에 무작위로 균일하게 뿌립니다.
  • 국소 추정 (Local Localization): 로봇이 대략적인 위치를 알고 있을 경우, 알려진 위치 주변에만 파티클들을 집중적으로 뿌립니다.

2. 반복 과정 (반복)

로봇이 움직이고 센서 데이터(예: LiDAR, 초음파)를 수신할 때마다 다음 세 단계를 반복하며 파티클을 업데이트합니다.

A. 예측 (Prediction, Motion Update)

  • 로봇의 오도메트리(Odometry) 데이터 (얼마나 움직였는지)를 사용하여 각 파티클의 위치를 이동시킵니다.
  • 이때 오도메트리에는 항상 오차가 있으므로, 파티클들을 이동시킬 때 약간의 무작위 노이즈를 더해 불확실성을 표현합니다.

B. 측정 업데이트 (Measurement Update, Weighting)

  • 로봇이 **현재 센서(예: 레이저 스캐너)**로 얻은 측정값과, 각 파티클의 위치에서 지도를 기준으로 예측한 센서 측정값을 비교합니다.
  • 실제 측정값과 예측값이 잘 일치하는 파티클에는 **높은 가중치(Weight)**를 부여하고, 일치하지 않는 파티클에는 낮은 가중치를 부여합니다.

C. 재샘플링 (Resampling, Selection)

  • 가중치에 기반하여 새로운 파티클 세트를 만듭니다.
  • 가중치가 높은(즉, 실제 위치일 확률이 높은) 파티클더 많이 복제됩니다.
  • 가중치가 낮은(실제 위치일 확률이 낮은) 파티클제거됩니다.
  • 이 과정을 통해 시간이 지날수록 파티클들은 로봇의 실제 위치에 **수렴(Convergence)**하게 됩니다.

3. 결과

파티클들이 최종적으로 가장 밀집된 영역이 바로 로봇의 추정된 위치와 자세가 됩니다. 로봇은 이 추정 위치를 기반으로 움직이게 됩니다.


🌟 AMCL과의 관계

**AMCL (Adaptive Monte Carlo Localization)**은 ROS에서 사용되는 MCL의 개선된 버전입니다.

  • AMCL은 파티클이 너무 퍼져서(불확실성이 높을 때) 위치를 잃어버렸다고 판단하면, 자동으로 파티클을 지도 전체에 다시 뿌려 초기화하는 기능을 추가하여 MCL의 효율성을 높인 알고리즘입니다.

댓글