이동로봇 위치인식
📌 개요
- 경로를 아무리 잘 계획해도 "지금 내가 지도의 어디에 있는가"를 모르면 따라갈 수 없음
- 위치인식(Localization) = 지도와 센서 관측을 대조해 로봇의 포즈 (x, y, \theta)를 추정하는 기술 → 자율주행의 출발점
- 시험 반복 출제: 오도메트리의 누적 오차, 위치인식 문제의 세 종류(추적·전역·납치), 칼만 필터와 파티클 필터(MCL)의 비교
📖 핵심 개념
위치인식 문제의 세 종류
같은 "내 위치 찾기"라도 난이도가 다른 세 문제로 구분한다.
- 위치 추적(Position Tracking, 지역 위치인식): 초기 위치를 아는 상태에서 움직이는 동안 위치를 계속 갱신. 가장 쉬움
- 전역 위치인식(Global Localization): 초기 위치를 전혀 모르는 상태에서 지도 전체 중 내가 어딘지 찾아내기. 후보가 여러 곳일 수 있음
- 납치 로봇 문제(Kidnapped Robot Problem): 로봇이 (사람이 들어 옮기는 등) 자기도 모르게 순간이동한 상황을 스스로 알아채고 재인식하기. 가장 어려움 — "내 추정이 틀렸을 수도 있다"는 의심 능력이 필요하다
오도메트리와 추측항법 — 그리고 누적 오차
-
오도메트리(Odometry) = 바퀴 엔코더로 잰 바퀴 회전량을 적분해 이동량을 추정하는 방법
-
추측항법(Dead Reckoning) = 이런 식으로 내부 센서만으로 위치를 이어 붙이는 항법
-
장점: 센서가 저렴하고 갱신이 빠르며 짧은 구간에서는 꽤 정확하다
-
치명적 단점: 오차가 누적된다(Drift) — 바퀴 미끄러짐, 바퀴 지름 오차, 요철 등이 작은 오차를 만들고, 적분 과정에서 한 번 생긴 오차는 사라지지 않고 계속 쌓인다
-
그래서 오도메트리는 "짧은 시간의 이동량 예측"으로만 쓰고, 외부 관측(LiDAR·카메라·랜드마크)으로 주기적으로 보정해야 함
-
이 "예측 + 보정" 구조가 확률적 위치인식의 뼈대
확률적 위치인식의 뼈대 — 베이즈 필터
로봇 위치를 하나의 점이 아니라 확률 분포(믿음, Belief) 로 관리하고, 두 단계를 반복한다.
- 예측(Prediction): 모션 모델 — "바퀴가 이만큼 돌았으니 아마 여기쯤 있을 것" (오도메트리 사용, 불확실성 증가)
- 갱신(Correction/Update): 관측 모델 — "센서로 보니 벽이 이렇게 보인다. 지도와 대조하면 이 위치가 더 그럴듯하다" (불확실성 감소)
이 구조를 구현하는 대표적인 두 필터가 칼만 필터와 파티클 필터다.
구현 ① — 칼만 필터 (KF / EKF)
칼만 필터(Kalman Filter) 는 믿음을 가우시안(정규분포) 하나 — 평균(추정치)과 공분산(불확실성) — 로 표현하고 예측·갱신을 수식으로 최적 수행한다.
- 원형 칼만 필터는 선형 시스템 전용 → 로봇 운동은 비선형(삼각함수)이므로, 현재 추정점 주변에서 선형화하여 적용한 확장 칼만 필터(EKF, Extended Kalman Filter) 를 쓴다
- 장점: 계산이 가볍고 정밀하다 (연속 추적에 강함)
- 한계: 분포가 단봉(unimodal) — 봉우리가 하나뿐이라 "후보가 여러 곳"인 전역 위치인식을 표현하지 못한다. 초기 위치를 아는 위치 추적에 적합
구현 ② — 파티클 필터 / 몬테카를로 위치인식 (MCL)
- 파티클 필터(Particle Filter) 는 믿음을 수백~수천 개의 파티클(입자 = 위치 가설) 로 표현
- 이를 위치인식에 적용한 것이 몬테카를로 위치인식(MCL, Monte Carlo Localization) — ROS의 AMCL이 대표 구현
동작 사이클:
- 예측: 각 파티클을 오도메트리만큼 이동 (+잡음)
- 가중치 계산: 각 파티클 위치에서 "지도가 이렇게 보여야 하는데" vs 실제 센서 관측의 일치도를 가중치로 부여
- 리샘플링(Resampling): 가중치가 높은 파티클은 여러 개로 복제되고 낮은 파티클은 사라진다 → 파티클 무리가 점점 실제 위치로 모인다
- 장점: 다봉(multimodal) 분포 표현 가능 → 전역 위치인식 가능. 무작위 파티클을 계속 조금씩 뿌리면 납치 로봇 문제에도 대응. 비선형·비가우시안에 강함
- 단점: 파티클 수만큼 계산량이 늘고, 정밀도가 파티클 수에 좌우된다
| 구분 | EKF | 파티클 필터(MCL) |
|---|---|---|
| 믿음의 표현 | 가우시안 1개 (평균+공분산) | 파티클 다수 |
| 분포 형태 | 단봉만 | 다봉 가능 |
| 전역 위치인식·납치 대응 | 어려움 | 가능 |
| 계산량 | 적다 | 파티클 수에 비례 |
관측 보정의 재료 — 스캔 매칭과 랜드마크
- 스캔 매칭(Scan Matching): 현재 LiDAR 스캔을 지도(또는 직전 스캔)와 가장 잘 겹치는 위치·방향으로 정합해 포즈를 보정. ICP(Iterative Closest Point)가 대표 알고리즘
- 랜드마크 관측: 반사판·마커·자연 특징 등 위치를 아는 랜드마크와의 거리·방위를 이용해 보정
- 센서 융합: 엔코더 + IMU(자이로)로 예측을 개선하고, LiDAR·카메라로 보정하는 다중 센서 구성이 실무 표준
📊 다이어그램 · 수식
예측-갱신 사이클
flowchart LR
P["예측 (모션 모델)
오도메트리로 이동량 반영
불확실성 증가"] --> U["갱신 (관측 모델)
센서 관측 vs 지도 대조
불확실성 감소"]
U --> P
O["엔코더·IMU"] --> P
S["LiDAR·카메라·랜드마크"] --> U차동 구동 로봇의 오도메트리 갱신
선속도 v, 각속도 \omega로 짧은 시간 \Delta t 동안 이동하면:
좌우 바퀴 속도 v_R, v_L, 바퀴 간격 L인 차동 구동에서는:
이 식을 반복 적용(적분)하므로, 매 단계의 작은 측정 오차가 누적된다.
베이즈 필터의 개념 구조
(수식 암기보다 "예측으로 퍼뜨리고, 관측으로 좁힌다"는 구조를 이해하는 것이 중요하다.)
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. 바퀴 엔코더 기반 오도메트리에 대한 설명으로 옳지 않은 것은?
① 바퀴 회전량을 적분하여 이동량을 추정한다 ② 짧은 구간에서는 비교적 정확하다 ③ 시간이 지나면 오차가 자동으로 상쇄되어 사라진다 ④ 바퀴 미끄러짐은 오차의 주요 원인이다
정답 및 해설
정답: ③ 오도메트리의 오차는 적분 과정에서 계속 누적되며 저절로 사라지지 않는다. 그래서 LiDAR·카메라 등 외부 관측으로 주기적인 보정이 반드시 필요하다.
2. 로봇이 작동 중 사람에 의해 다른 곳으로 옮겨졌을 때, 이를 스스로 알아채고 위치를 다시 찾아야 하는 문제는?
① 위치 추적 문제 ② 전역 위치인식 문제 ③ 납치 로봇 문제 ④ 경로계획 문제
정답 및 해설
정답: ③ 납치 로봇 문제(kidnapped robot problem)는 자신의 추정이 완전히 틀렸을 가능성을 감지하고 회복해야 하므로 위치인식 문제 중 가장 어렵다. 초기 위치만 모르는 것은 ② 전역 위치인식이다.
3. 확장 칼만 필터(EKF) 기반 위치인식과 비교한 몬테카를로 위치인식(MCL)의 특징으로 옳은 것은?
① 믿음을 가우시안 분포 하나로 표현한다 ② 다봉(multimodal) 분포를 표현할 수 있어 전역 위치인식이 가능하다 ③ 파티클 수와 무관하게 계산량이 일정하다 ④ 선형 시스템에만 적용할 수 있다
정답 및 해설
정답: ② MCL은 파티클들로 임의 형태의 분포를 표현하므로 여러 위치 후보를 동시에 유지할 수 있다. ①은 칼만 필터의 특징이고, 계산량은 파티클 수에 비례하며(③), 비선형에도 강하다(④).
4. 파티클 필터의 리샘플링(resampling) 단계에서 일어나는 일로 옳은 것은?
① 모든 파티클이 동일한 가중치를 얻는다 ② 관측과 잘 일치하는 파티클은 복제되고, 일치하지 않는 파티클은 제거된다 ③ 파티클이 지도 전체에 균일하게 다시 뿌려진다 ④ 오도메트리 정보가 삭제된다
정답 및 해설
정답: ② 리샘플링은 가중치(관측 일치도)에 비례해 파티클을 다시 뽑는 과정이다. 좋은 가설은 여러 개로 복제되고 나쁜 가설은 도태되어, 파티클 무리가 실제 위치 주변으로 수렴한다.
5. 차동 구동 로봇의 좌우 바퀴 속도가 v_R = 1.2 m/s, v_L = 0.8 m/s이고 바퀴 간격이 L = 0.4 m일 때, 로봇의 선속도 v와 각속도 \omega는?
① v = 1.0 m/s, \omega = 1.0 rad/s ② v = 2.0 m/s, \omega = 0.5 rad/s ③ v = 1.0 m/s, \omega = 0.5 rad/s ④ v = 0.4 m/s, \omega = 1.0 rad/s
정답 및 해설
정답: ① v = (v_R + v_L)/2 = (1.2 + 0.8)/2 = 1.0 m/s \omega = (v_R - v_L)/L = (1.2 - 0.8)/0.4 = 1.0 rad/s 오른쪽 바퀴가 더 빠르므로 로봇은 왼쪽으로 회전한다.
🔗 관련 노트
- 이동로봇 지도 작성 — 위치인식의 기준이 되는 지도
- 이동로봇 SLAM — 지도가 없을 때: 지도 작성과 위치인식을 동시에
- 이동로봇 전역 경로계획 — 추정된 위치에서 목표까지의 계획
- 좌표계 — 포즈 (x, y, θ)의 정의
- _MOC 모션소프트웨어