Kalman Filter
๐ฉ๐ป๐ป๐ญ ์นผ๋งํํฐ .. ์ด ๊ธฐํ์ ์ ๋๋ก ๊ณต๋ถํด๋ณด๊ณ ์ถ์ด์ ์ ์ด๋ด ๋๋ค !
์์จ์ฃผํ: ๊ธฐ๊ณ๊ฐ ์ด๋ํ๋ฉด์ ์ค์ค๋ก ์ฅ์ ๋ฌผ์ ํผํ๊ณ (๋ณ์ ๊ฐ์ง), ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์๊ฐ๋(์ฃผํ ์ ์ด) ๊ธฐ๋ฅ
โจ ์ด๋ฅผ ์ํด์๋ ์ ํํ ์ง๋(Map) ์ฆ, ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ํตํ ๋งตํ(Mapping)์ด ํ์ํ๋ค. (์์น ์ธก์ (Localization))
์ง๋(Map)๊ฐ ์ฃผ์ด์ง๋ฉด, ๋ก๋ด์ ์ฅ์ฐฉ๋ ์ผ์(ex. ์ด์ํ, ๋ผ์ด๋, ์นด๋ฉ๋ผ)๋ค์ ํตํด ํ๋ฅ ๊ธฐ๋ฐ์ ๋ฐฉ๋ฒ์ผ๋ก "์์ธก"ํ๋ค.
โจ ๋ชจ๋ ๊ด์ธก๊ฐ์ "์ค์ฐจ(Error)"๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
โจ ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ํ์ํ ๊ฒ์ด "์นผ๋ง ํํฐ(Kalman Filter)"์ด๋ค.
โ๏ธ์ ์
์นผ๋ง ํํฐ์ ๊ธฐ๋ณธ๊ฐ๋ ์, ๊ณผ๊ฑฐ์ ํ์ฌ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฌ๊ท์ ์ฐ์ฐ์ ํตํด ์ต์ ๊ฐ์ ์ถ์ ํ๋ ๊ฒ์ด๋ค.
ํํฐ๋, ์ธก์ ๋ฐ์ดํฐ์ ํฌํจ๋ "๋ ธ์ด์ฆ"๋ฅผ ํํฐ๋ง ํ๋ ๊ฒ = ๋์์ผ๋ก๋ถํฐ ์ป๋ ๋ฐ์ดํฐ๊ฐ ์๋ฒฝํ ์ ์๊ธฐ์ ๋ถ์กฑํ ์ฑ์ง์ ๋ณด์ถฉํ๋ ๊ฒ
์ฆ, ์ธก์ ๋ฐ์ดํฐ/์ ํธ๋ ๋ฐ๋์ ๋ ธ์ด์ฆ๋ฅผ ์ง๋๋ฏ๋ก ์ฌ๊ธฐ์ ์ํ๋ ์ ํธ๋ ์ ๋ณด๋ฅผ ๊ณจ๋ผ๋ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
(ํ๋ฅ ์ ๊ธฐ๋ฐํ ์์ธก ์์คํ ์ด๋ฏ๋ก ์ด๊ฒ์ ๋์์ ์ ๊ท๋ถํฌ(๊ฐ์ฐ์์๋ถํฌ)๋ฅผ ๊ฐ์ง๋ ๋์์ด ๋๋ค.)
๋ ๊ฐ์ง ๋ชจ๋ธ์ ๊ณ ๋ คํด์ผํ๋ค.
โ ๋ชจ์ ๋ชจ๋ธ(motion model)
โก ์ธก์ ๋ชจ๋ธ(measurement model)
์นผ๋งํํฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ ๊ฐ์ง ๊ฐ์ ์ด ๊ฐ์ถ์ด์ ธ์ผํ๋ค.
โ ๋ชจ์ ๋ชจ๋ธ๊ณผ ์ธก์ ๋ชจ๋ธ์ด "Linear" ํ๋ค
โก ๋ชจ์ ๋ชจ๋ธ๊ณผ ์ธก์ ๋ชจ๋ธ์ด "Gaussian ๋ถํฌ"๋ฅผ ๋ฐ๋ฅธ๋ค
โจ ์ค์ ์์คํ ์ ๋๋ถ๋ถ ๋น์ ํ์ด๊ณ ๊ฐ์ฐ์์ ๋ถํฌ๋ฅผ ๋ฐ๋ฅด์ง ์์ → Extended Kalman Filter(EKF)
โจ ์ ํ ์์คํ ์์๋ ์์ฒญ๋ ๋๊ตฌ
์ํ ์์ธก(state prediction)๊ณผ ์ธก์ ์ ๋ฐ์ดํธ(measurement update)๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๋ฉฐ ๋ก๋ด์ ํ์ฌ ์์น๋ฅผ ๊ณ์ฐํ๋ค.
์ํ ์์ธก
โณ ์ด์ ์ธก์ ์ ๋ฐ์ดํธ์์ ๊ณ์ฐํ ํ๋ฅ ๋ถํฌ์ ๋ก๋ด ๋ชจ์ ์ ๋ ฅ์ ํ๋ฅ ๋ถํฌ๋ฅผ ํตํด ํ์ฌ ์ํ์ ๋ถํฌ๋ฅผ ์์ธกํ๋ค.
์ธก์ ์ ๋ฐ์ดํธ
โณ ์ํ ์์ธก์์ ์์ธก๋ ํ์ฌ ๋ก๋ด ์์น์ ๋ํ ํ๋ฅ ๋ถํฌ์ ํ์ฌ ๋ก๋ด์ ์์น์์ ์ธก์ ํ ๊ด์ฐฐ๊ฐ์ ํ๋ฅ ๋ถํฌ๋ฅผ ํตํด ์ฌํ ํ๋ฅ ๋ถํฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
Ex. 1์ฐจ์์์์ ํ์ฌ ์์น ๊ณ์ฐ
- ์ํ ์์ธก
์ด์ ์ธก์ ์ ๋ฐ์ดํธ์์ ๊ณ์ฐํ ํ๋ฅ ๋ถํฌ์ ๋ก๋ด ๋ชจ์ ์ ๋ ฅ์ ํ๋ฅ ๋ถํฌ๋ฅผ ํตํด ํ์ฌ ์ํ์ ๋ถํฌ๋ฅผ ์์ธกํ๋ค.
์ด ๋, ํ๋ฅ ๋ถํฌ์ ํ๊ท ์ ๋ ํ๊ท ์ ๋ํ ๊ฒ์ด๊ณ ํ๋ฅ ๋ถํฌ์ ๋ถ์ฐ์ ๋ ๋ถ์ฐ์ ๋ํ ๊ฒ์ด๋ค.
- ์ธก์ ์ ๋ฐ์ดํธ
์ํ ์์ธก์์ ์์ธก๋ ํ์ฌ ๋ก๋ด ์์น์ ๋ํ ํ๋ฅ ๋ถํฌ์ ํ์ฌ ๋ก๋ด์ ์์น์์ ์ธก์ ํ ๊ด์ฐฐ๊ฐ์ ํ๋ฅ ๋ถํฌ๋ฅผ ํตํด ์ฌํ ํ๋ฅ ๋ถํฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
์๋ฅผ ๋ค์ด, ๋ก๋ด์ด ์ด์ ์ 20๋ฏธํฐ ๊ฑฐ๋ฆฌ์ ์์๊ณ ๋ถ์ฐ์ด 9๋ฏธํฐ์๋ค.
ํ์ฌ ๋ก๋ด์ ์์น์์ ์ธก์ ํ ์ผ์์ ๊ฐ์ 30๋ฏธํฐ์ด๊ณ ๋ถ์ฐ์ 3๋ฏธํฐ์ด๋ค.
์ ๋ฐ์ดํธ ๋ ์๋ก์ด ๊ฐ์ฐ์๊ฐ ํ๋ฅ ๋ถํฌ = prior ๊ฐ์ฐ์์๋ถํฌ์ measurement ๊ฐ์ฐ์์๋ถํฌ์ ๊ณฑ
๊ณ์ฐ ๊ฒฐ๊ณผ, ์๋ก์ด ๊ฐ์ฐ์์ ๋ถํฌ์ ํ๊ท ๊ณผ ๋ถ์ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋ฅผ ํตํด ์ธก์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฌํ ํ๋ฅ ๋ถํฌ๋ฅผ ์ป์ ์ ์๋ค.
์ด๊ฒ์ด ์ ๋ฐ์ดํธ๋ ๋ก๋ด์ ์์น์ ๋ํ ํ๋ฅ ๋ถํฌ์ด๋ค.
โ๏ธ์๊ณ ๋ฆฌ์ฆ
** ๊ฐ ์ํ๋ฒณ ์์ '-'๊ฐ ์๋ค๋ฉด "์ถ์ ๊ฐ"์ด๋ผ๋ ์๋ฏธ, k๋ ํ์ฌ์คํ , k-1์ ์ง์ ๊ณผ๊ฑฐ์คํ ์ด๋ผ๋ ์๋ฏธ์ด๋ค.
Zk | ์ธก์ ๊ฐ |
^Xk | ์ถ์ ๊ฐ |
Pk | ^Xk(์ถ์ ๊ฐ)์ ์ค์ฐจ ๊ณต๋ถ์ฐ |
^X-k | ^Xk(์ถ์ ๊ฐ)์ ์์ธก๊ฐ |
P-k | Pk์ ์์ธก๊ฐ |
A | X^k-1(์ด์ ์ถ์ ๊ฐ)์ ํตํด ์ถ์ ๊ฐ์ ์์ธกํ ๋ ์ฌ์ฉ๋๋ ํ๋ ฌ |
H | X^-k์ ์ธก์ ๊ฐ์ ํํ๋ก ๋ณํํ ๋ ํ์ํ ํ๋ ฌ |
Q | ์์คํ ๋ ธ์ด์ฆ |
R | ์ธก์ ๊ฐ ๋ ธ์ด์ฆ |
โ ์ด๊ธฐ๊ฐ ์ ์
์ด์ ์คํ ์์์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ทธ ๋ค์ ์คํ ์์์ ์ด๊ธฐ๊ฐ์ด๋ค. (=recursive)
โก ์ถ์ ๊ฐ(^X-k)๊ณผ ์ค์ฐจ ๊ณต๋ถ์ฐ(P-k) ์์ธก
A, Q๋ ์ด๋ฏธ ์ฃผ์ด์ง ๊ฐ์ด๋ฏ๋ก "P"๊ฐ๋ง ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
์ด์ ์ํ์์ ๊ตฌํ P๊ฐ์ A๋ฅผ ๊ณฑํ๊ณ Q๋ฅผ ๋ํด์ฃผ์ด ํ์ฌ์ํ์ P๋ฅผ ์ถ์ธกํ๋ ๊ฒ์ด๋ค.
์ด์ ๋จ๊ณ์์ ๊ณ์ฐํ ์ถ์ ๊ฐ(^Xk-1)์ ์ฌ์ฉํ์ฌ ์์คํ ๋ชจ๋ธ(A)๊ณผ์ ๊ณ์ฐ์ ํตํด ์๋ก์ด ์ถ์ ๊ฐ(^X-k)์ ์์ธกํ๋ค.
์ด๋, ์์ธกํ ๊ฐ์ด ํ๊ท ์ ๊ธฐ์ค์ผ๋ก ์ด๋ ์ ๋๋ก ๋ถํฌ๋์ด ์๋์ง ์ด์ ์ค์ฐจ ๊ณต๋ถ์ฐ(Pk-1)์ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ค์ฐจ ๊ณต๋ถ์ฐ(P-k)๋ ํจ๊ป ์์ธกํ๋ค.
โข ์นผ๋ง ์ด๋(Kk) ๊ณ์ฐ
H, R๋ ์ด๋ฏธ ์ ํด์ง ๊ฐ์ด๋ฏ๋ก ์์ ๊ตฌํ P๋ง ์์ผ๋ฉด ๋๋ค.
Kk(โข)๊ฐ ์ปค์ง๋ฉด (Zk - ^X-k)๊ฐ ^Xk(โฃ)์ ๋ง์ ์ํฅ์,
Kk(โข)๊ฐ ์์์ง๋ฉด (Zk - ^X-k)๊ฐ ^Xk(โฃ)์ ์ ์ ์ํฅ์ ๋ฏธ์น๋ค.
์ธก์ ๊ฐ์ ๋ ธ์ด์ฆ(R)์ด 0์ ์๋ ดํ๋ฉด Kk ๊ฐ์ด ์ปค์ง → ์ถ์ ๊ฐ ๊ณ์ฐ(โฃ)์์ (Zk - ^X-k) ์ฆ Zk๊ฐ ๋ง์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
์ค์ฐจ ๊ณต๋ถ์ฐ์ ์์ธก๊ฐ(P-k)์ด 0์ ์๋ ดํ๋ฉด Kk ๊ฐ์ด ์์์ง → ์ถ์ ๊ฐ ๊ณ์ฐ(โฃ)์์ Kk ๊ฐ์ ์ํฅ์ด ๋ฏธ๋ฏธํด์ง๊ณ ^X-k์ ์ํด ๊ฒฐ์ ๋๋ค.
โจ ์ธก์ ๊ฐ(Zk)์ ๋ ธ์ด์ฆ(R)๊ฐ ์์ ์ธก์ ๊ฐ(Zk)์ด ๋ ์ ๋ขฐ์ ์ด๋ฉด ์ถ์ ๊ฐ ๊ณ์ฐ(โฃ)์ ์ธก์ ๊ฐ(Zk)์ ๋ ๋ฏฟ๊ณ ,
์ค์ฐจ๊ณต๋ถ์ฐ์ ์์ธก๊ฐ(P-k)์ด ์์ ์ถ์ ๊ฐ์ ์์ธก๊ฐ(^X-k)์ด ๋ ์ ๋ขฐ์ ์ด๋ฉด ์ถ์ ๊ฐ ๊ณ์ฐ(โฃ)์ ์ถ์ ๊ฐ์ ์์ธก๊ฐ(^X-k)์ ๋ ๋ฏฟ๋๋ค.
์ผ์๋ ธ์ด์ฆ(R) ์ฆ๊ฐ → ์นผ๋ง ์ด๋ ๊ฐ์ → ์ต์ข ์ถ์ ๊ฐ์์ ์ผ์์ ๋ํ ๋น์ค ์ถ์
์์คํ ๋ ธ์ด์ฆ(Q) ์ฆ๊ฐ → ์นผ๋ง ์ด๋ ์ฆ๊ฐ → ์ต์ข ์ถ์ ๊ฐ์์ ์ผ์์ ๋ํ ๋น์ค ์ฆ๋(์ถ์ ๊ฐ์ ๋ํ ๋น์ค ๊ฐ์)
โจ ์ผ์ ๋ ธ์ด์ฆ๊ฐ ํฌ๋ฉด ์ผ์๊ฐ์ ๋ ๋ณด๊ณ , ์์คํ ๋ ธ์ด์ฆ๊ฐ ํฌ๋ฉด ์์คํ ์ ๋ ๋ณด๊ฒ ๋ค!
โฃ ์ถ์ ๊ฐ(^Xk) ๊ณ์ฐ
์์ ๊ตฌํ ๊ฐ๋ค๊ณผ ์ผ์๋ก ์ธก์ ํ ๊ฐ์ธ Zk๋ฅผ ํตํด ํ์ฌ์ํ์ ๊ฐ์ ์ถ์ฒญํ๋ค.
์์ธก๊ณผ์ ์์ ๊ณ์ฐํ๋ ์๋ก์ด ์ถ์ ๊ฐ(^X-k)์, ์ ๋ ฅ์ผ๋ก ๋ฐ์ Zk(์ธก์ ๊ฐ)์ ์๋ก์ด ์ถ์ ๊ฐ(^X-k)์ ์ฐจ์ด๋ฅผ ๋ํ์ฌ ๊ณ์ฐํ๋ค.
์ด ๋, ์นผ๋ง ์ด๋์ด ์ฌ์ฉ๋๊ณ ์ ๋ ฅ ๋ฐ์ ์ธก์ ๊ฐ๊ณผ ์๋ก์ด ์ถ์ ๊ฐ์ ์ฐจ์ด(Zk - ^X-k)์ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋ค.
โค ์ค์ฐจ๊ณต๋ถ์ฐ(Pk) ๊ณ์ฐ
์์ ๊ตฌํ ๊ฐ๋ค๋ก ์ค์ฐจ๊ณต๋ถ์ฐ Pk๋ฅผ ๊ตฌํ๋ค.
์ฌ๊ธฐ์ ์ป์ Pk์ ๊ฐ์ ๋ค์ ์คํ ์ โ ๋ก ๋์๊ฐ Pk-1์ด ๋๋ค.
+) ์นผ๋ง ํํฐ๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์์คํ ๋ชจ๋ธ(A)์ด๋ค. ์ค์ ์์คํ ๊ณผ ์ต๋ํ ๋น์ทํด์ผ ํ๋ค.
์์คํ ๋ชจ๋ธ์ ์นผ๋ง ํํฐ๋ฅผ ์ํํ๋ฉด์ ์นผ๋ง ์ด๋(Kk)์ฒ๋ผ ๋ณํ๋ ๊ฐ์ด ์๋๋ผ, ๋์ ์ ์ ๋ฏธ๋ฆฌ ์ค์ ํ๋ ๊ณ ์ ์ ์ธ ๊ฐ์ด๋ฏ๋ก ์ผ๋ง๋ ์ต์ ์ ๊ฐ์ผ๋ก ์ด๋ฅผ ์ค์ ํ๋๋์ ๋ฐ๋ผ ์นผ๋ง ํํฐ์ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์๋ค.