검색
← 모듈 로드맵

센서와 상태 추정: 칼만 필터 손계산과 SLAM 개요

강의 · 입문자 · KAITABASE 정리

원제 · Sensors, State Estimation and SLAM (Welch · Bishop Kalman Filter 소개 참고)

센서 종류 · 센서 융합 · 칼만 필터 예측/보정 손계산 · EKF · SLAM을 잇는 상태 추정 수업

먼저 알아야 할 것

평균 · 분산 · 정규분포베이즈 정리행렬 곱자코비안

다루는 내용

로봇 센서(엔코더 · IMU · 카메라 · 라이다)의 약점과 센서 융합 원리를 설명합니다. 분산 가중 평균과 상보 필터, 칼만 필터의 예측 · 보정 식을 1차원 예로 세 걸음 손계산합니다. 비선형용 EKF와 SLAM 문제 · 루프 닫기 · 대표 방법을 개관합니다.

해설

센서와 상태 추정: 칼만 필터 손계산과 SLAM 개요

로봇은 자기 위치와 자세를 직접 "아는" 것이 아니라, 잡음 섞인 센서 값과 움직임 예측을 섞어 추정 합니다. 이 수업은 로봇에 붙는 센서의 종류, 두 측정을 섞는 원리(센서 융합), 1차원 칼만 필터의 예측 → 보정 두 단계를 손으로 계산하고, 확장 칼만 필터(EKF)와 SLAM(동시적 위치 추정 및 지도 작성)이 무엇을 푸는지까지 정리합니다.

항목내용
참고 출처Greg Welch · Gary Bishop, 「An Introduction to the Kalman Filter」(UNC TR 95-041, 2004-04-05 개정판, PDF) · Durrant-Whyte · Bailey, 「Simultaneous Localization and Mapping: Part I」(IEEE Robotics & Automation Magazine, 2006) · Mur-Artal 외, ORB-SLAM(IEEE T-RO, 2015)
트랙 · 수준피지컬 AI · 기초
이 수업이 다루는 범위로봇 센서 종류, 측정 잡음과 분산, 두 가우시안 측정 융합, 상보 필터, 칼만 필터(예측 · 보정 식과 손계산), EKF 개요, SLAM 문제와 대표 방법

들어가기 전에

한눈에 보기

  • 로봇에 쓰는 주요 센서(엔코더 · IMU · 카메라 · 깊이 카메라 · 라이다 · 힘/토크 센서)가 각각 무엇을 재고 어떤 약점이 있는지 압니다.
  • 분산이 다른 두 측정을 섞을 때 "더 믿을 만한 쪽에 가중치를 더 준다"는 원리를 식과 숫자로 확인합니다.
  • 칼만 필터의 예측(time update) · 보정(measurement update) 다섯 줄을 1차원 예로 세 걸음 손계산합니다.
  • 비선형 시스템에서 EKF가 자코비안으로 선형화한다는 점을 압니다.
  • SLAM이 왜 "닭이 먼저냐 달걀이 먼저냐" 문제인지, 루프 닫기(loop closure)가 왜 중요한지 설명할 수 있습니다.

1. 로봇의 감각: 센서 종류와 약점

직관(해설용 비유). 눈을 감고 방을 걸을 때 사람은 "몇 걸음 걸었나"(자기 움직임 감각)와 가끔 손에 닿는 벽(바깥 측정)을 섞어 위치를 짐작합니다. 로봇도 똑같이 자기 감각 센서(proprioceptive) 와 외부 감각 센서(exteroceptive) 를 섞습니다.

센서재는 것흔한 약점
엔코더(encoder)관절 · 바퀴의 회전 각도바퀴가 미끄러지면 실제 이동과 어긋남, 오차가 누적
IMU(관성 측정 장치)가속도(가속도계) · 각속도(자이로)자이로를 적분하면 각도가 천천히 흘러감(드리프트), 가속도계는 진동에 시끄러움
카메라(RGB)색 영상조명 · 흐림 · 질감 없는 벽에 약함, 단안은 거리 척도를 모름
깊이 카메라 · 스테레오화소별 거리반사 · 투명 물체 · 먼 거리에 약함
라이다(LiDAR)레이저로 잰 주변 점 구름비 · 안개, 유리, 비용
힘/토크 센서 · 촉각손목 · 손끝에 걸리는 힘온도 변화 · 오프셋 보정 필요

왜 섞나. 위 표에서 보듯 모든 센서에는 약점이 있고, 약점의 종류가 서로 다릅니다. 엔코더 · IMU는 짧은 시간에는 정확하지만 오래 쓰면 오차가 쌓이고, 카메라 · 라이다는 순간순간은 시끄럽거나 가끔 실패하지만 오차가 쌓이지 않습니다. 둘을 섞으면 서로의 약점을 메울 수 있습니다. 이것이 센서 융합(sensor fusion) 입니다.

모방 학습 수업(LeRobot)의 데이터셋에서 observation.state(관절 각도) 와 observation.images.*(카메라) 가 따로 기록되는 것도, 정책이 바로 이 두 종류의 감각을 함께 입력으로 받기 때문입니다.

2. 두 측정 섞기: 분산의 역수로 가중 평균

직관. 같은 물건의 거리를 두 사람이 쟀습니다. 한 사람은 대충(오차 큼), 한 사람은 꼼꼼하게(오차 작음) 쟀다면, 꼼꼼한 쪽 값에 더 가까운 숫자를 믿는 것이 자연스럽습니다.

단계.

  1. 측정 1: 평균 μ1\mu_1, 분산 σ12\sigma_1^2 인 정규분포로 봅니다.
  2. 측정 2: 평균 μ2\mu_2, 분산 σ22\sigma_2^2.
  3. 두 분포를 곱하면(베이즈 정리, 사전 분포가 평평할 때) 다시 정규분포가 되고, 평균과 분산은 다음과 같습니다.
μ=σ22 μ1+σ12 μ2σ12+σ22,σ2=σ12 σ22σ12+σ22\mu = \frac{\sigma_2^2\,\mu_1 + \sigma_1^2\,\mu_2}{\sigma_1^2+\sigma_2^2},\qquad \sigma^2 = \frac{\sigma_1^2\,\sigma_2^2}{\sigma_1^2+\sigma_2^2}
기호뜻
μ1,μ2\mu_1, \mu_2두 측정값(평균)
σ12,σ22\sigma_1^2, \sigma_2^2두 측정의 분산(클수록 덜 믿을 만함)
μ\mu섞은 추정값
σ2\sigma^2섞은 뒤의 분산 — 항상 둘 중 작은 분산보다도 작음

숫자로 해 보기(해설용). 초음파 센서는 벽까지 μ1=10\mu_1 = 10 m(σ12=4\sigma_1^2 = 4), 라이다는 μ2=12\mu_2 = 12 m(σ22=1\sigma_2^2 = 1) 라고 했습니다.

  • μ=(1×10+4×12)/(4+1)=58/5=11.6\mu = (1\times10 + 4\times12)/(4+1) = 58/5 = 11.6 m
  • σ2=4×1/5=0.8\sigma^2 = 4\times1/5 = 0.8

분산이 작은 라이다 쪽(12)에 가깝게 끌려갔고, 섞은 결과의 분산 0.8은 라이다 하나(1)보다도 작습니다. 측정을 하나 더 얻으면 불확실성은 줄어들 뿐 늘지 않는다 는 점이 핵심입니다.

간단한 실전판: 상보 필터(complementary filter). IMU로 기울기를 잴 때 자주 쓰는 방법입니다. 자이로 적분값(짧게는 정확, 길게는 흘러감)에 큰 가중치 α\alpha, 가속도계로 구한 기울기(시끄럽지만 흘러가지 않음)에 작은 가중치 1−α1-\alpha 를 줍니다.

θt=α (θt−1+ω Δt)+(1−α) θacc\theta_t = \alpha\,(\theta_{t-1} + \omega\,\Delta t) + (1-\alpha)\,\theta_{\text{acc}}

숫자로 해 보기(해설용). θt−1=10∘\theta_{t-1}=10^\circ, 자이로 ω=5∘/s\omega = 5^\circ/\text{s}, Δt=0.01\Delta t = 0.01 s, 가속도계 기울기 12∘12^\circ, α=0.98\alpha = 0.98 이면 0.98×10.05+0.02×12=10.089∘0.98\times10.05 + 0.02\times12 = 10.089^\circ 입니다. 매 순간은 자이로를 따르되, 가속도계가 천천히 드리프트를 잡아 줍니다. α\alpha 는 고정값이라 간단하지만, 상황에 따라 가중치를 스스로 정하지는 못합니다. 그 가중치를 매 걸음 분산으로 계산해 주는 것이 칼만 필터입니다.

3. 칼만 필터: 예측하고, 보정하고

직관. 칼만 필터는 두 박자를 반복합니다. ① 예측: "아까 여기 있었고 1 m/s로 움직이라고 명령했으니 지금은 대략 여기겠지" — 움직임 모델로 위치를 옮기고, 그만큼 불확실성(분산)을 키웁니다. ② 보정: 센서 값이 들어오면 2절처럼 예측과 측정을 분산에 따라 섞고, 불확실성을 줄입니다. Welch · Bishop 보고서는 이 둘을 시간 갱신(time update, "predict")과 측정 갱신(measurement update, "correct")이라 부릅니다.

모델. 상태 xkx_k 와 측정 zkz_k 가 선형이고 잡음이 정규분포라고 가정합니다.

xk=Axk−1+Buk−1+wk−1,zk=Hxk+vk,w∼N(0,Q), v∼N(0,R)x_k = A x_{k-1} + B u_{k-1} + w_{k-1},\qquad z_k = H x_k + v_k,\qquad w\sim N(0,Q),\ v\sim N(0,R)

예측(시간 갱신).

x^k−=Ax^k−1+Buk−1,Pk−=APk−1A⊤+Q\hat x_k^- = A\hat x_{k-1} + B u_{k-1},\qquad P_k^- = A P_{k-1} A^\top + Q

보정(측정 갱신).

Kk=Pk−H⊤(HPk−H⊤+R)−1,x^k=x^k−+Kk(zk−Hx^k−),Pk=(I−KkH)Pk−K_k = P_k^- H^\top (H P_k^- H^\top + R)^{-1},\quad \hat x_k = \hat x_k^- + K_k (z_k - H\hat x_k^-),\quad P_k = (I - K_k H) P_k^-
기호뜻
x^k−\hat x_k^-, Pk−P_k^-측정을 보기 전(사전, a priori) 추정과 그 오차 공분산
x^k\hat x_k, PkP_k측정을 반영한 뒤(사후, a posteriori) 추정과 공분산
AA상태가 한 걸음 동안 어떻게 바뀌는지(움직임 모델)
BB, uu제어 입력(모터 명령)이 상태에 미치는 영향
HH상태에서 센서 값으로 가는 관계
QQ움직임 모델의 잡음 분산(미끄러짐 등)
RR센서 잡음 분산
KkK_k칼만 이득: 측정을 얼마나 믿을지(0~1 사이, 1차원일 때)
zk−Hx^k−z_k - H\hat x_k^-혁신(innovation): 실제 측정 − 예측한 측정

보고서가 짚는 두 극단이 직관을 줍니다. 센서 잡음 RR 이 0에 가까우면 이득이 커져 측정을 거의 그대로 믿고, 사전 불확실성 Pk−P_k^- 가 0에 가까우면 이득이 0이 되어 측정을 무시합니다.

숫자로 해 보기(해설용, 1차원). 레일 위 로봇이 매초 1 m씩 가라는 명령을 받습니다. A=1A = 1, Bu=1B u = 1, H=1H = 1, Q=0.1Q = 0.1, R=0.5R = 0.5, 처음 추정 x^0=0\hat x_0 = 0, P0=1P_0 = 1 로 둡니다. 라이다 측정은 z1=1.2z_1 = 1.2, z2=2.0z_2 = 2.0, z3=3.3z_3 = 3.3 이 들어왔습니다.

걸음예측 x^−\hat x^-P−P^-이득 KK보정 x^\hat xPP
10+1=1.0000+1 = 1.0001+0.1=1.1001+0.1 = 1.1001.1/1.6=0.68751.1/1.6 = 0.68751+0.6875×0.2=1.13751 + 0.6875\times0.2 = 1.13750.3125×1.1=0.34380.3125\times1.1 = 0.3438
22.13752.13750.44380.44380.47020.47022.1375+0.4702×(−0.1375)=2.07282.1375 + 0.4702\times(-0.1375) = 2.07280.23510.2351
33.07283.07280.33510.33510.40130.40133.16403.16400.20060.2006

(손계산은 파이썬으로 다시 확인했습니다.) 처음에는 자기 추정이 불확실해(P0=1P_0=1) 측정을 많이 믿고(K≈0.69K\approx0.69), 걸음이 쌓일수록 PP 가 줄어 이득이 0.4 근처로 내려옵니다. QQ 와 RR 이 고정이면 PP 와 KK 는 곧 일정한 값으로 안정되는데(보고서도 이 점을 짚습니다), 이 예에서는 P≈0.179P\approx0.179, K≈0.358K\approx0.358 로 수렴합니다.

왜 이렇게 하나. 매 걸음 지난 측정을 모두 다시 보지 않고, "평균 하나 + 분산 하나"(다차원이면 벡터 하나 + 공분산 행렬 하나)만 들고 다니며 갱신합니다. 선형 · 가우시안 가정 아래에서는 이것이 평균 제곱 오차를 최소로 하는 추정이고, 계산량이 일정해 로봇처럼 실시간으로 돌려야 하는 곳에 맞습니다.

QQ 와 RR 정하기. 보고서는 RR 은 센서를 미리 여러 번 재서 분산을 구할 수 있지만, QQ 는 직접 관찰하기 어려워 대개 조정(tuning)으로 정한다고 설명합니다. 보고서의 예제(잡음 섞인 전압으로 일정한 값을 추정)는 Q=10−5Q = 10^{-5}, x^0=0\hat x_0 = 0, P0=1P_0 = 1 에서 시작하고, 측정 잡음을 0.1 V RMS로 둡니다. P0≠0P_0 \neq 0 이기만 하면 처음 값 선택은 크게 중요하지 않다고 덧붙입니다.

4. 비선형일 때: 확장 칼만 필터(EKF)

로봇의 움직임은 대부분 비선형입니다. 바퀴 로봇이 방향 ϕ\phi 로 vv 만큼 가면 x←x+vcos⁡ϕ Δtx \leftarrow x + v\cos\phi\,\Delta t 처럼 삼각함수가 들어갑니다. 측정도 "랜드마크까지의 거리 Δx2+Δy2\sqrt{\Delta x^2+\Delta y^2}" 처럼 비선형입니다.

EKF는 현재 추정 근처에서 비선형 함수 ff · hh 를 편미분 행렬(자코비안) 로 선형화해, 3절 식의 AA · HH 자리에 넣습니다. 예측 상태 자체는 비선형 함수 ff 로 계산하고, 공분산 계산에만 자코비안을 씁니다. Welch · Bishop 보고서는 EKF가 선형화로 베이즈 규칙의 최적성을 근사할 뿐이라는 한계도 분명히 적습니다. 비선형 변환을 거치면 분포가 더는 정규분포가 아니기 때문입니다. 이 한계를 줄이려는 변형으로 무향 칼만 필터(UKF)가, 분포를 점(입자)들로 나타내는 방법으로 입자 필터가 쓰입니다.

5. SLAM: 지도도 없고 위치도 모를 때

직관(해설용 비유). 처음 가 본 건물에서 지도 없이 돌아다니며 동시에 지도를 그린다고 상상해 봅니다. 지도를 정확히 그리려면 내 위치를 알아야 하고, 내 위치를 알려면 지도가 있어야 합니다. 이 순환 문제가 SLAM(Simultaneous Localization and Mapping) 입니다. Durrant-Whyte · Bailey 튜토리얼은 SLAM을 "모르는 환경의 모르는 위치에서 출발한 로봇이 일관된 지도를 만들면서 동시에 그 지도 안에서 자기 위치를 정하는 문제"로 정의하고, 이를 확률 문제로 씁니다.

단계(개념).

  1. 상태 벡터에 로봇 자세와 랜드마크 위치들 을 함께 넣습니다.
  2. 움직이면 로봇 자세의 불확실성이 커집니다(3절의 예측).
  3. 랜드마크를 보면 로봇 자세와 그 랜드마크 위치가 함께 보정됩니다. 둘의 오차가 서로 얽혀(상관) 있다는 점이 SLAM의 핵심입니다.
  4. 오래 돌아다닌 뒤 예전에 본 곳을 다시 알아보면(루프 닫기), 그동안 쌓인 오차가 한꺼번에 줄어듭니다.
대표 방법핵심
EKF-SLAM로봇 + 랜드마크 전체를 하나의 EKF로. 랜드마크가 많아지면 공분산 행렬이 커져 비쌈
입자 필터 기반(FastSLAM 계열)로봇 경로 가설을 입자로 여러 개 두고, 입자마다 랜드마크를 따로 추정
그래프 기반 SLAM자세들을 노드, 움직임 · 관측 제약을 간선으로 두고 전체를 최적화
시각 SLAM (예: ORB-SLAM)카메라 영상의 특징점으로 추적 · 지도 · 재위치 추정 · 루프 닫기를 함께

ORB-SLAM 논문(Mur-Artal · Montiel · Tardós, 2015)은 같은 특징점을 추적 · 지도 작성 · 재위치 추정 · 루프 닫기에 모두 쓰는 단안 카메라 SLAM으로, 실내외 · 크고 작은 환경에서 실시간으로 동작한다고 보고합니다.

mermaid
flowchart LR
  U[모터 명령 u] --> P[예측: x̂⁻ = A·x̂ + B·u<br/>P⁻ = A·P·Aᵀ + Q]
  P --> K[칼만 이득 K]
  Z[센서 측정 z<br/>라이다 · 카메라 · IMU] --> C[보정: x̂ = x̂⁻ + K·(z − H·x̂⁻)<br/>P = (I − K·H)·P⁻]
  K --> C
  C --> E[현재 상태 추정<br/>위치 · 자세]
  E --> CTRL[제어기 · 학습된 정책]
  E --> P

학습 기반 로봇과의 관계. RT-2 · OpenVLA 같은 VLA 모델은 카메라 영상을 바로 입력으로 받아 행동을 내므로, 정책 내부에서 상태 추정을 "암묵적으로" 배웁니다. 그래도 실제 시스템에는 관절 엔코더 필터링, 이동 로봇의 위치 추정(SLAM), 안전 정지 판단처럼 고전 추정이 맡는 층이 여전히 남아 있습니다. 둘은 대체 관계라기보다 층이 다른 부품입니다.

연습 문제

  1. 두 측정 μ1=5\mu_1 = 5(σ12=1\sigma_1^2 = 1), μ2=7\mu_2 = 7(σ22=1\sigma_2^2 = 1) 을 섞으면?
    • 풀이: 분산이 같으므로 단순 평균 66, 분산은 1×1/2=0.51\times1/2 = 0.5 입니다.
  2. 3절 예에서 RR 을 0.5 대신 0.050.05 로 바꾸면 첫 걸음의 KK 와 x^1\hat x_1 은?
    • 풀이: K=1.1/(1.1+0.05)≈0.9565K = 1.1/(1.1+0.05) \approx 0.9565, x^1=1+0.9565×0.2≈1.1913\hat x_1 = 1 + 0.9565\times0.2 \approx 1.1913 입니다. 센서를 거의 그대로 믿습니다.
  3. 3절 예에서 측정이 한 번 빠져 보정을 건너뛰면 그 걸음의 PP 는 어떻게 되나요?
    • 풀이: 예측만 하므로 P=P−=Pk−1+QP = P^- = P_{k-1} + Q 로 커지기만 합니다. 측정이 없는 동안 불확실성은 계속 늘어납니다.
  4. 상보 필터에서 α=1\alpha = 1 로 두면 어떤 문제가 생기나요?
    • 풀이: 가속도계 정보를 전혀 쓰지 않아 자이로 적분의 드리프트가 그대로 쌓입니다.

스스로 점검

  1. 칼만 이득 KK 가 커지는 경우는 언제인가요?
    • 답: 센서 잡음 RR 이 작거나, 지금 추정의 불확실성 P−P^- 가 클 때입니다. 그럴수록 측정을 더 믿습니다.
  2. EKF가 일반 칼만 필터와 다른 점은?
    • 답: 비선형 움직임 · 측정 함수를 현재 추정 근처에서 자코비안으로 선형화해 공분산을 계산합니다. 그래서 선형화가 크게 틀리는 곳에서는 추정이 나빠질 수 있습니다.
  3. SLAM에서 루프 닫기가 중요한 이유는?
    • 답: 돌아다니며 쌓인 위치 오차가, 예전에 본 곳을 다시 알아보는 순간 큰 제약 하나로 묶여 한꺼번에 줄어들기 때문입니다.

용어 정리

용어쉬운 뜻
상태 추정(state estimation)잡음 섞인 정보로 위치 · 자세 같은 숨은 값을 짐작하는 일
자기 감각 / 외부 감각 센서몸 안의 움직임을 재는 센서(엔코더 · IMU) / 바깥을 재는 센서(카메라 · 라이다)
IMU가속도계와 자이로를 묶은 관성 측정 장치
드리프트(drift)적분하면서 작은 오차가 천천히 쌓여 값이 흘러가는 현상
센서 융합여러 센서 값을 믿을 만한 정도에 따라 섞는 것
상보 필터고정 가중치로 두 센서를 섞는 간단한 필터
칼만 필터예측과 측정을 분산에 따라 섞어 매 걸음 추정을 고치는 필터
칼만 이득측정을 얼마나 반영할지 정하는 계수
혁신(innovation)실제 측정 − 예측한 측정
EKF비선형 모델을 자코비안으로 선형화한 칼만 필터
입자 필터분포를 여러 개의 점(가설)으로 나타내 추정하는 방법
SLAM지도를 만들면서 동시에 그 지도 안에서 위치를 추정하는 문제
루프 닫기(loop closure)예전에 지나간 곳을 다시 알아보고 누적 오차를 바로잡는 것

더 깊이 보려면

  • Welch · Bishop 보고서 3절 — 일정한 전압을 칼만 필터로 추정하는 예제와 QQ · RR 조정 실험
  • Durrant-Whyte · Bailey 「SLAM Part I」(2006) · 「Part II」 — SLAM의 확률적 정의와 EKF-SLAM · FastSLAM, 이후의 계산 기법
  • ORB-SLAM — 특징점 기반 단안 시각 SLAM의 대표 시스템
  • 로봇 기구학 첫 수업 5장(자코비안) — EKF 선형화와 같은 도구

다음에 볼 것

라이선스

본문은 KAITABASE 자체 해설입니다. Welch · Bishop 보고서는 UNC 기술 보고서로 공개되어 있으며 별도 자유 이용 허락 표기는 확인하지 못해, 식의 내용만 참고하고 문장은 옮기지 않았습니다. 레일 로봇 · 초음파/라이다 · 상보 필터 숫자는 이 수업을 위해 만든 해설용 예입니다.

출처

  • Greg Welch · Gary Bishop, An Introduction to the Kalman Filter, UNC-Chapel Hill TR 95-041 (Updated 2004-04-05): techreports.cs.unc.edu/papers/95-041.pdf
  • Hugh Durrant-Whyte · Tim Bailey, Simultaneous Localization and Mapping: Part I, IEEE Robotics & Automation Magazine 13(2), 2006, doi:10.1109/MRA.2006.1638022
  • Raúl Mur-Artal · J. M. M. Montiel · Juan D. Tardós, ORB-SLAM: a Versatile and Accurate Monocular SLAM System, IEEE Transactions on Robotics, 2015: arxiv.org/abs/1502.00956

AI 원리부터 이해하기 · 피지컬 AI 모듈

피지컬 AI 모듈 학습

이 글은 피지컬 AI 모듈의 학습 자료입니다. 전체 26개 자료 중 2번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Welch · Bishop UNC TR 95-041(공개 기술 보고서) · Durrant-Whyte · Bailey SLAM 튜토리얼