Kalman Filter 설명 | 선형칼만필터의 기초 (1) 18398 투표 이 답변

당신은 주제를 찾고 있습니까 “kalman filter 설명 – 선형칼만필터의 기초 (1)“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 손가락TV 이(가) 작성한 기사에는 조회수 9,549회 및 좋아요 79개 개의 좋아요가 있습니다.

칼만 필터(Kalman filter)는 잡음이 포함되어 있는 측정치를 바탕으로 선형 역학계의 상태를 추정하는 재귀 필터로, 루돌프 칼만이 개발하였다. 칼만 필터는 컴퓨터 비전, 로봇 공학, 레이다 등의 여러 분야에 사용된다.

kalman filter 설명 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 선형칼만필터의 기초 (1) – kalman filter 설명 주제에 대한 세부정보를 참조하세요

한국어로된 강의영상이 별로 없어서 만들었습니다.
주관적인 해석이 난무합니다.
틀린곳 있으면 지적 부탁드립니다.

kalman filter 설명 주제에 대한 자세한 내용은 여기를 참조하세요.

선형 칼만 필터의 원리 이해 – gaussian37

칼만 필터는 일부 동적 시스템에 대한 정보가 확실하지 않은 곳에서 사용할 수 있으며 시스템이 다음에 수행 할 작업에 대한 정확한 추측을 할 수 …

+ 여기에 보기

Source: gaussian37.github.io

Date Published: 4/5/2021

View: 6171

칼만 필터 – 나무위키:대문

루돌프 칼만이 개발한 것으로, 오차(외란)를 가지는 관측치로 부터 시스템의 상태를 추정하거나 제어하기 위한 알고리즘, 상태 관측기의 최적버전.

+ 여기에 자세히 보기

Source: namu.wiki

Date Published: 11/7/2022

View: 4775

Kalman filter 소개 – Medium

칼만필터는 상태 예측과 측정 업데이트의 반복으로 이루어진 알고리즘입니다. 상태 예측 단계에서는 이전 측정 업데이트 단계에서 계산된 로봇의 현재 …

+ 여기에 자세히 보기

Source: medium.com

Date Published: 8/17/2021

View: 7173

[수학] 칼만 필터(Kalman Filter)란 무엇인가? (로봇, 자율주행 …

즉, 센서와 데이터를 통한 맵핑(Mapping)이 필요한데,. 이 때 필요한 작업이 바로 Localization이다. ​. Localization이란 …

+ 자세한 내용은 여기를 클릭하십시오

Source: blog.naver.com

Date Published: 11/28/2022

View: 2221

Kalman filter란?

칼만필터는 상태 예측과 측정 업데이트의 반복으로 이루어진 알고리즘입니다. 상태 예측 단계에서는 이전 측정 업데이트 단계에서 계산된 로봇의 현재 …

+ 여기를 클릭

Source: onnons.tistory.com

Date Published: 6/9/2021

View: 4039

선형 칼만 필터 기초

추정하는 센서 퓨전 문제에서도 칼만 필터는 중요한 역할. 을 한다. 이와 같이 센서가 부족한 경우든 과잉인 … 만 필터에는 뒤에서 설명하듯이 예측 단계가 포함되어.

+ 여기에 보기

Source: arx.appi.keio.ac.jp

Date Published: 12/21/2021

View: 2825

주제와 관련된 이미지 kalman filter 설명

주제와 관련된 더 많은 사진을 참조하십시오 선형칼만필터의 기초 (1). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

선형칼만필터의 기초 (1)
선형칼만필터의 기초 (1)

주제에 대한 기사 평가 kalman filter 설명

  • Author: 손가락TV
  • Views: 조회수 9,549회
  • Likes: 좋아요 79개
  • Date Published: 2020. 3. 1.
  • Video Url link: https://www.youtube.com/watch?v=0GrF_IaFCPQ

위키백과, 우리 모두의 백과사전

칼만 필터(Kalman filter)는 잡음이 포함되어 있는 측정치를 바탕으로 선형 역학계의 상태를 추정하는 재귀 필터로, 루돌프 칼만이 개발하였다. 칼만 필터는 컴퓨터 비전, 로봇 공학, 레이다 등의 여러 분야에 사용된다. 칼만 필터는 과거에 수행한 측정값을 바탕으로 현재의 상태 변수의 결합분포를 추정한다.

알고리즘은 예측과 업데이트의 두 단계로 이루어진다. 예측 단계에서는 현재 상태 변수의 값과 정확도를 예측한다. 현재 상태 변수의 값이 실제로 측정된 이후, 업데이트 단계에서는 이전에 추정한 상태 변수를 기반으로 예측한 측정치와 실제 측정치의 차이를 반영해 현재의 상태 변수를 업데이트한다.

확장 칼만 필터는 비선형 시스템을 기반으로 동작한다.

칼만 필터의 적용 분야 [ 편집 ]

칼만 필터는 물체의 측정값에 확률적인 오차가 포함되고, 또한 물체의 특정 시점에서의 상태가 이전 시점의 상태와 선형적인 관계를 가지고 있는 경우 적용이 가능하다. 예를 들어, 레이다 추적의 경우 특정 물체의 위치, 속도, 가속도 등을 측정할 수 있지만 이 측정값에 오차가 포함되어 있을 수 있다. 이 경우, 연속적으로 측정하는 값들을 칼만 필터를 이용해서 해당 물체의 위치를 추정할 수 있다.

칼만 필터의 동적 시스템 모델 [ 편집 ]

칼만 필터는 이산 시간 선형 동적 시스템을 기반으로 동작하며, 각 시간에서의 상태 벡터는 이전 시간의 상태 벡터를 통해서 결정된다는 마르코프 연쇄를 가정하고 있다.

칼만 필터 모델. 사각형은 행렬을 나타낸다. 타원은 (행렬 내부의 평균 공분산 을 포함한) 다변량의 정규 분포를 나타낸다. 내부 변수의 값은 벡터이다.

특정 시간 k {\displaystyle k} 에서의 상태 벡터를 x k {\displaystyle {\textbf {x}}_{k}} 라고 정의하고, 또한 그 시간에서의 사용자 입력을 u k {\displaystyle {\textbf {u}}_{k}} 라고 정의할 때, 칼만 필터에서는 다음과 같은 관계식을 가정하고 있다.

x k = F k x k − 1 + B k u k + w k {\displaystyle {\textbf {x}}_{k}={\textbf {F}}_{k}{\textbf {x}}_{k-1}+{\textbf {B}}_{k}{\textbf {u}}_{k}+{\textbf {w}}_{k}}

여기에서 F k {\displaystyle {\textbf {F}}_{k}} 는 해당 시간에서 이전 상태에 기반한 상태 전이 행렬, B k {\displaystyle {\textbf {B}}_{k}} 사용자 입력에 의한 상태 전이 행렬, 그리고 w k {\displaystyle {\textbf {w}}_{k}} 는 공분산행렬 Q k {\displaystyle {\textbf {Q}}_{k}} 을 가지는 다변량 정규분포 w k ∼ N ( 0 , Q k ) {\displaystyle {\textbf {w}}_{k}\sim N(0,{\textbf {Q}}_{k})} 잡음 변수이다.

또한, 상태 벡터 x k {\displaystyle {\textbf {x}}_{k}} 와 그 벡터를 측정했을 때 실제로 얻어진 벡터 z k {\displaystyle {\textbf {z}}_{k}} 는 다음과 같은 관계식을 가지고 있다.

z k = H k x k + v k {\displaystyle {\textbf {z}}_{k}={\textbf {H}}_{k}{\textbf {x}}_{k}+{\textbf {v}}_{k}}

여기에서 H k {\displaystyle {\textbf {H}}_{k}} 는 해당 시간의 상태에서 측정값을 도출하는 행렬이고, v k {\displaystyle {\textbf {v}}_{k}} 는 공분산행렬 R k {\displaystyle {\textbf {R}}_{k}} 을 가지는 다변량 정규분포 v k ∼ N ( 0 , R k ) {\displaystyle {\textbf {v}}_{k}\sim N(0,{\textbf {R}}_{k})} 잡음 변수이다.

초기 상태와 각 잡음 변수 { x 0 , w 1 , ⋯ , w k , v 1 , ⋯ , v k } {\displaystyle \{{\textbf {x}}_{0},{\textbf {w}}_{1},\cdots ,{\textbf {w}}_{k},{\textbf {v}}_{1},\cdots ,{\textbf {v}}_{k}\}} 는 모두 상호 독립이라는 가정이 필요하다.

많은 경우 실제 동적 시스템이 이 모델에 정확히 부합하지는 않는다. 특히, 선형성이나 상호 독립과 같은 중요한 가정이 맞지 않는 시스템의 경우, 칼만 필터의 성능을 심각하게 떨어뜨릴 수도 있고, 예측값이 발산하는 경우도 있다.

칼만 필터의 구조 [ 편집 ]

칼만 필터는 재귀적으로 동작한다. 즉, 칼만 필터는 바로 이전 시간에 추정한 값을 토대로 해서 현재의 값을 추정하며, 바로 이전 시간 외의 측정값이나 추정값은 사용하지 않는다.

각 추정 계산은 두 단계로 이루어진다. 첫 단계에서는 이전 시간에 추정된 상태에 대해, 그 상태에서 사용자 입력을 가했을 때 예상되는 측정값을 계산한다. 이 단계는 예측(prediction) 단계라고 부른다. 그 다음 단계에서는, 앞서 예측된 측정값과 실제 측정값을 토대로 현재의 상태를 추정한다. 이 단계는 보정(update) 단계라고 부른다.

시스템에 따라서 보정단계가 가끔씩 일어날 수도 있다. 이때에는 예측단계가 여러번 수행되다가 한번씩 보정단계가 수행된다.

각 시간의 추정 상태는 평균과 분산의 두 개의 변수로 표현된다. 정확하게는,

x ^ n | m {\displaystyle {\hat {\textbf {x}}}_{n|m}}

P n | m {\displaystyle {\textbf {P}}_{n|m}}

여기에서 아랫첨자로 쓰인 n | m {\displaystyle n|m} 은 m 시점에서의 측정값을 토대로 한 n 시점의 상태 추정을 의미한다.

예측 단계 [ 편집 ]

예측 단계의 계산은 다음과 같이 이루어진다.

연역적 상태 예측: x ^ k | k − 1 = F k x ^ k − 1 | k − 1 + B k u k {\displaystyle {\hat {\textbf {x}}}_{k|k-1}={\textbf {F}}_{k}{\hat {\textbf {x}}}_{k-1|k-1}+{\textbf {B}}_{k}{\textbf {u}}_{k}} 연역적 공분산 예측: P k | k − 1 = F k P k − 1 | k − 1 F k T + Q k − 1 {\displaystyle {\textbf {P}}_{k|k-1}={\textbf {F}}_{k}{\textbf {P}}_{k-1|k-1}{\textbf {F}}_{k}^{\text{T}}+{\textbf {Q}}_{k-1}}

보정 단계 [ 편집 ]

보정 단계에서는 앞단계의 예측 값과 실제 측정값간의 오차를 이용해, 이전에 얻은 값을 귀납적으로 수정한다.

예측 단계와 실제 측정간의 잔차: y ~ k = z k − H k x ^ k | k − 1 {\displaystyle {\tilde {\textbf {y}}}_{k}={\textbf {z}}_{k}-{\textbf {H}}_{k}{\hat {\textbf {x}}}_{k|k-1}} 잔차의 공분산: S k = H k P k | k − 1 H k T + R k {\displaystyle {\textbf {S}}_{k}={\textbf {H}}_{k}{\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}+{\textbf {R}}_{k}} 최적 칼만 이득(Kalman gain): K k = P k | k − 1 H k T S k − 1 {\displaystyle {\textbf {K}}_{k}={\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}{\textbf {S}}_{k}^{-1}} 귀납적 상태 보정: x ^ k | k = x ^ k | k − 1 + K k y ~ k {\displaystyle {\hat {\textbf {x}}}_{k|k}={\hat {\textbf {x}}}_{k|k-1}+{\textbf {K}}_{k}{\tilde {\textbf {y}}}_{k}} 귀납적 상태 공분산 보정: P k | k = ( I − K k H k ) P k | k − 1 {\displaystyle {\textbf {P}}_{k|k}=(I-{\textbf {K}}_{k}{\textbf {H}}_{k}){\textbf {P}}_{k|k-1}}

불변량 [ 편집 ]

모델이 정확하고, x ^ 0 | 0 {\displaystyle {\hat {\textbf {x}}}_{0|0}} 와 P 0 | 0 {\displaystyle {\textbf {P}}_{0|0}} 의 값이 정확하게 초기 상태 값의 몫을 반영한다면, 다음 불변량은 보존된다.

E [ x k − x ^ k | k ] = E [ x k − x ^ k | k − 1 ] = 0 {\displaystyle {\textrm {E}}[{\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k}]={\textrm {E}}[{\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k-1}]=0}

E [ y ~ k ] = 0 {\displaystyle {\textrm {E}}[{\tilde {\textbf {y}}}_{k}]=0}

여기서 E [ ξ ] {\displaystyle {\textrm {E}}[\xi ]} 은 ξ {\displaystyle \xi } 의 기대값이고, 공분산 행렬은 정확하게 추정의 공분산을 반영한다.

P k | k = cov ( x k − x ^ k | k ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}({\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k})}

P k | k − 1 = cov ( x k − x ^ k | k − 1 ) {\displaystyle {\textbf {P}}_{k|k-1}={\textrm {cov}}({\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k-1})}

S k = cov ( y ~ k ) {\displaystyle {\textbf {S}}_{k}={\textrm {cov}}({\tilde {\textbf {y}}}_{k})}

예제 [ 편집 ]

어떤 트럭이 마찰력이 없는 x축 공간에 있다. 이 트럭은 처음에는 원점 위치에 정지하고 있지만, 이후 임의로 가해지는 미지의 가속도를 받으면서 움직인다. 관찰자는 Δ t {\displaystyle \Delta t} 시간 간격으로 트럭의 위치를 측정하지만, 이 측정값은 정확하지 않고 실제 트럭의 위치와는 어느 정도 차이가 있을 수 있다. 이 때, 관찰자는 칼만 필터를 이용해서 부정확한 측정값을 기반으로 트럭의 실제 위치를 추정할 수 있다.

우선, 트럭의 움직임에 대한 관계식 x k = F k x k − 1 + B k u k + w k {\displaystyle {\textbf {x}}_{k}={\textbf {F}}_{k}{\textbf {x}}_{k-1}+{\textbf {B}}_{k}{\textbf {u}}_{k}+{\textbf {w}}_{k}} 을 알맞게 이끌어내야 한다. 트럭의 상태를 나타내는 벡터 x k {\displaystyle \mathbf {x} _{k}} 는 그 트럭의 위치와 속도로 나타내면 적당하다. 즉, 해당 벡터를 다음과 같이 정의할 수 있다.

x k = [ x k x ˙ k ] {\displaystyle \mathbf {x} _{k}={\begin{bmatrix}x_{k}\\{\dot {x}}_{k}\end{bmatrix}}}

여기에서 x k {\displaystyle x_{k}} 는 시점 k에서의 위치, x ˙ k {\displaystyle {\dot {x}}_{k}} 는 시점 k에서의 속도를 의미한다. a k {\displaystyle a_{k}} 는 트럭에 임의로 가해지는 미지의 가속도를 표시한다.

뉴턴의 운동 법칙에 의해, x k {\displaystyle \mathbf {x} _{k}} 와 x k − 1 {\displaystyle \mathbf {x} _{k-1}} 사이에는 다음과 같은 관계식이 근사적으로 성립한다.

x k = x k − 1 + x ˙ k − 1 Δ t + a k Δ t 2 2 {\displaystyle {x}_{k}={x}_{k-1}+{\dot {x}}_{k-1}\Delta t+{a}_{k}{\frac {\Delta t^{2}}{2}}} x ˙ k = x ˙ k − 1 + a k Δ t {\displaystyle {\dot {x}}_{k}={\dot {x}}_{k-1}+{a}_{k}\Delta t}

이것을 x {\displaystyle {\textbf {x}}} 로 표현하면 다음과 같다.

x k = F x k − 1 + w k {\displaystyle {\textbf {x}}_{k}={\textbf {F}}{\textbf {x}}_{k-1}+{\textbf {w}}_{k}} w k = B a k {\displaystyle {\textbf {w}}_{k}={\textbf {B}}a_{k}} F = [ 1 Δ t 0 1 ] {\displaystyle {\textbf {F}}={\begin{bmatrix}1&\Delta t\\0&1\end{bmatrix}}} B = [ Δ t 2 2 Δ t ] {\displaystyle {\textbf {B}}={\begin{bmatrix}{\frac {\Delta t^{2}}{2}}\\\Delta t\end{bmatrix}}}

이 모델의 경우 F k {\displaystyle {\textbf {F}}_{k}} , B k {\displaystyle {\textbf {B}}_{k}} 등의 값이 시간 k에 관계없이 일정하다. 이러한 상수의 경우 첨자를 생략하여 표기하였다.

여기에서 a k {\displaystyle a_{k}} 가 평균이 0이고 표준편차가 σ a {\displaystyle \sigma _{a}} 인 정규 분포를 따른다고 가정하면, 잡음 변수 w k = B a k {\displaystyle \mathbf {w} _{k}=\mathbf {B} a_{k}} 는 평균이 0이고 공분산이

Q = cov ( B a ) = E [ ( B a ) ( B a ) T ] = B E [ a 2 ] B T = B [ σ a 2 ] B T = σ a 2 B B T {\displaystyle {\textbf {Q}}={\textrm {cov}}({\textbf {B}}a)={\textrm {E}}[({\textbf {B}}a)({\textbf {B}}a)^{\text{T}}]={\textbf {B}}{\textrm {E}}[a^{2}]{\textbf {B}}^{\text{T}}={\textbf {B}}[\sigma _{a}^{2}]{\textbf {B}}^{\text{T}}=\sigma _{a}^{2}{\textbf {B}}{\textbf {B}}^{\text{T}}} σ a {\displaystyle \sigma _{a}}

라는 것을 구할 수 있다. 이렇게 해서 트럭의 움직임에 대한 관계식을 유도했다.

그 다음에는 측정에 대한 관계식을 유도한다. 측정 잡음 v k {\displaystyle \mathbf {v} _{k}} 가 평균이 0이고 표준편차가 σ z {\displaystyle \sigma _{z}} 인 정규 분포를 따른다고 가정하면,

z k = Hx k + v k {\displaystyle {\textbf {z}}_{k}={\textbf {Hx}}_{k}+{\textbf {v}}_{k}} H = [ 1 0 ] {\displaystyle {\textbf {H}}={\begin{bmatrix}1&0\end{bmatrix}}} R = E [ v k v k T ] = [ σ z 2 ] {\displaystyle {\textbf {R}}={\textrm {E}}[{\textbf {v}}_{k}{\textbf {v}}_{k}^{\text{T}}]={\begin{bmatrix}\sigma _{z}^{2}\end{bmatrix}}}

가 얻어진다.

트럭의 초기 위치와 속도는 0이라고 가정했으므로, 초기 변수를 다음과 같이 놓을 수 있다.

x ^ 0 | 0 = [ 0 0 ] {\displaystyle {\hat {\textbf {x}}}_{0|0}={\begin{bmatrix}0\\0\end{bmatrix}}} P 0 | 0 = [ 0 0 0 0 ] {\displaystyle {\textbf {P}}_{0|0}={\begin{bmatrix}0&0\\0&0\end{bmatrix}}}

만약에 트럭의 초기 상태를 알지 못한다면, 불확실성을 의미하는 공분산행렬 P 0 | 0 {\displaystyle {\textbf {P}}_{0|0}} 는 다음과 같이 적당히 큰 값으로 초기화하면 된다.

P 0 | 0 = [ σ x 2 0 0 σ x ˙ 2 ] {\displaystyle {\textbf {P}}_{0|0}={\begin{bmatrix}\sigma _{x}^{2}&0\\0&\sigma _{\dot {x}}^{2}\end{bmatrix}}}

유도 [ 편집 ]

후부 추정 공분산 행렬 유도 [ 편집 ]

불변 값인 잔차 공분산 P k|k 에서 시작한다.

P k | k = cov ( x k − x ^ k | k ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}({\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k})}

x ^ k | k {\displaystyle {\hat {\textbf {x}}}_{k|k}} 의 정의를 대입하면,

P k | k = cov ( x k − ( x ^ k | k − 1 + K k y ~ k ) ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}({\textbf {x}}_{k}-({\hat {\textbf {x}}}_{k|k-1}+{\textbf {K}}_{k}{\tilde {\textbf {y}}}_{k}))}

y ~ k {\displaystyle {\tilde {\textbf {y}}}_{k}} 를 대입하면,

P k | k = cov ( x k − ( x ^ k | k − 1 + K k ( z k − H k x ^ k | k − 1 ) ) ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}({\textbf {x}}_{k}-({\hat {\textbf {x}}}_{k|k-1}+{\textbf {K}}_{k}({\textbf {z}}_{k}-{\textbf {H}}_{k}{\hat {\textbf {x}}}_{k|k-1})))}

z k {\displaystyle {\textbf {z}}_{k}} 를 대입하면,

P k | k = cov ( x k − ( x ^ k | k − 1 + K k ( H k x k + v k − H k x ^ k | k − 1 ) ) ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}({\textbf {x}}_{k}-({\hat {\textbf {x}}}_{k|k-1}+{\textbf {K}}_{k}({\textbf {H}}_{k}{\textbf {x}}_{k}+{\textbf {v}}_{k}-{\textbf {H}}_{k}{\hat {\textbf {x}}}_{k|k-1})))}

잔차 벡터를 묶어내면,

P k | k = cov ( ( I − K k H k ) ( x k − x ^ k | k − 1 ) − K k v k ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}((I-{\textbf {K}}_{k}{\textbf {H}}_{k})({\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k-1})-{\textbf {K}}_{k}{\textbf {v}}_{k})}

측정 에러 v k 는 다른 항과 독립이므로,

P k | k = cov ( ( I − K k H k ) ( x k − x ^ k | k − 1 ) ) + cov ( K k v k ) {\displaystyle {\textbf {P}}_{k|k}={\textrm {cov}}((I-{\textbf {K}}_{k}{\textbf {H}}_{k})({\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k-1}))+{\textrm {cov}}({\textbf {K}}_{k}{\textbf {v}}_{k})}

벡터 공분산의 속성에 따라,

P k | k = ( I − K k H k ) cov ( x k − x ^ k | k − 1 ) ( I − K k H k ) T + K k cov ( v k ) K k T {\displaystyle {\textbf {P}}_{k|k}=(I-{\textbf {K}}_{k}{\textbf {H}}_{k}){\textrm {cov}}({\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k-1})(I-{\textbf {K}}_{k}{\textbf {H}}_{k})^{\text{T}}+{\textbf {K}}_{k}{\textrm {cov}}({\textbf {v}}_{k}){\textbf {K}}_{k}^{\text{T}}}

이것은, 불변 값 P k | k − 1 {\displaystyle {\textbf {P}}_{k|k-1}} 와 R k 의 정의를 이용하면,

P k | k = ( I − K k H k ) P k | k − 1 ( I − K k H k ) T + K k R k K k T {\displaystyle {\textbf {P}}_{k|k}=(I-{\textbf {K}}_{k}{\textbf {H}}_{k}){\textbf {P}}_{k|k-1}(I-{\textbf {K}}_{k}{\textbf {H}}_{k})^{\text{T}}+{\textbf {K}}_{k}{\textbf {R}}_{k}{\textbf {K}}_{k}^{\text{T}}}

이 공식은 때로는 공분산 업데이트 방정식의 “조셉 형식(Joseph form)”이라 불리는데 K k 의 값이 최적 칼만이득인지 여부에 관계없이 성립한다. 만약 K k 가 최적 칼만이득이라면 이것을 아래처럼 더욱 단순화 할 수 있다.

칼만 이득 유도 [ 편집 ]

칼만 필터는 최소 제곱 오차(minimum mean-square error, MMSE) 추정이다. 후부 상태 추정에서 잔차는 다음 식과 같다.

x k − x ^ k | k {\displaystyle {\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k}}

이 벡터의 크기의 제곱의 기댓값 E [ | x k − x ^ k | k | 2 ] {\displaystyle {\textrm {E}}[|{\textbf {x}}_{k}-{\hat {\textbf {x}}}_{k|k}|^{2}]} 을 최소화하는 K k {\displaystyle {\textbf {K}}_{k}} 를 찾는 것이 목적이다. 이것은 후부 추정 공분산 행렬 P k | k {\displaystyle {\textbf {P}}_{k|k}} 의 대각합을 최소화하는 것과 같다. 위 방정식에서 P k | k {\displaystyle {\textbf {P}}_{k|k}} 를 전개하여 묶어내면

P k | k {\displaystyle {\textbf {P}}_{k|k}} = P k | k − 1 − K k H k P k | k − 1 − P k | k − 1 H k T K k T + K k ( H k P k | k − 1 H k T + R k ) K k T {\displaystyle ={\textbf {P}}_{k|k-1}-{\textbf {K}}_{k}{\textbf {H}}_{k}{\textbf {P}}_{k|k-1}-{\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}{\textbf {K}}_{k}^{\text{T}}+{\textbf {K}}_{k}({\textbf {H}}_{k}{\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}+{\textbf {R}}_{k}){\textbf {K}}_{k}^{\text{T}}} = P k | k − 1 − K k H k P k | k − 1 − P k | k − 1 H k T K k T + K k S k K k T {\displaystyle ={\textbf {P}}_{k|k-1}-{\textbf {K}}_{k}{\textbf {H}}_{k}{\textbf {P}}_{k|k-1}-{\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}{\textbf {K}}_{k}^{\text{T}}+{\textbf {K}}_{k}{\textbf {S}}_{k}{\textbf {K}}_{k}^{\text{T}}}

이 행렬의 대각합이 최소가 되는 조건은

∂ tr ( P k | k ) ∂ K k = − 2 ( H k P k | k − 1 ) T + 2 K k S k = 0 {\displaystyle {\frac {\partial \;{\textrm {tr}}({\textbf {P}}_{k|k})}{\partial \;{\textbf {K}}_{k}}}=-2({\textbf {H}}_{k}{\textbf {P}}_{k|k-1})^{\text{T}}+2{\textbf {K}}_{k}{\textbf {S}}_{k}=0}

최적의 칼만 이득 K k {\displaystyle {\textbf {K}}_{k}} 를 산출하면

K k S k = ( H k P k | k − 1 ) T = P k | k − 1 H k T {\displaystyle {\textbf {K}}_{k}{\textbf {S}}_{k}=({\textbf {H}}_{k}{\textbf {P}}_{k|k-1})^{\text{T}}={\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}}

K k = P k | k − 1 H k T S k − 1 {\displaystyle {\textbf {K}}_{k}={\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}{\textbf {S}}_{k}^{-1}}

최적의 칼만 이득이라 불리는 이 이득은 MMSE 추정을 사용했을 때 산출되는 값이다.

후부 잔차 공분산 식의 간이화 [ 편집 ]

칼만 이득이 위에서 이끌어 낸 최적의 값과 같을 때 후부 잔차 공분산을 단순화할 수 있도록 계산하기 위해 공식을 사용한다. S k K k T을 칼만 이득 수식의 양쪽 모두에 곱하면,

K k S k K k T = P k | k − 1 H k T K k T {\displaystyle {\textbf {K}}_{k}{\textbf {S}}_{k}{\textbf {K}}_{k}^{T}={\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{T}{\textbf {K}}_{k}^{T}}

후부 잔차 공분산을 위한 확장된 공식을 다시 검토하면,

P k | k = P k | k − 1 − K k H k P k | k − 1 − P k | k − 1 H k T K k T + K k S k K k T {\displaystyle {\textbf {P}}_{k|k}={\textbf {P}}_{k|k-1}-{\textbf {K}}_{k}{\textbf {H}}_{k}{\textbf {P}}_{k|k-1}-{\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{T}{\textbf {K}}_{k}^{T}+{\textbf {K}}_{k}{\textbf {S}}_{k}{\textbf {K}}_{k}^{T}}

맨 뒤의 두 항이 없어지는 것을 알 수 있고, 따라서

P k | k = P k | k − 1 − K k H k P k | k − 1 = ( I − K k H k ) P k | k − 1 . {\displaystyle {\textbf {P}}_{k|k}={\textbf {P}}_{k|k-1}-{\textbf {K}}_{k}{\textbf {H}}_{k}{\textbf {P}}_{k|k-1}=(I-{\textbf {K}}_{k}{\textbf {H}}_{k}){\textbf {P}}_{k|k-1}.}

이 공식은 간단하고 거의 항상 실제에 사용되지만, 최적의 이득일 때만 성립한다. 만약 수치 정밀도가 낮거나 최적이 아닌 칼만 이득을 사용할 경우 이 단순화는 성립하지 않는다. 그런 경우에는 위에서 유도한 후부 잔차 공분산 공식을 사용해야만 한다.

고정 지연 스무더 [ 편집 ]

최적의 고정 지연 스무더는 z 1 {\displaystyle {\textbf {z}}_{1}} 에서 z k {\displaystyle {\textbf {z}}_{k}} 까지의 측정값을 이용하여 주어진 고정된 지연값 N을 통해 최적의 x ^ k − N | k {\displaystyle {\hat {\textbf {x}}}_{k-N|k}} 추정을 제공한다. 이것은 위의 이론에서 상태 벡터를 확장 정의해 아래와 같이 유도할 수 있다. [ x ^ t | t x ^ t − 1 | t ⋮ x ^ t − N + 1 | t ] = [ I 0 ⋮ 0 ] x ^ t | t − 1 + [ 0 … 0 I 0 ⋮ ⋮ ⋱ ⋮ 0 … I ] [ x ^ t − 1 | t − 1 x ^ t − 2 | t − 1 ⋮ x ^ t − N | t − 1 ] + [ K ( 1 ) K ( 2 ) ⋮ K ( N ) ] y t | t − 1 {\displaystyle {\begin{bmatrix}{\hat {\textbf {x}}}_{t|t}\\{\hat {\textbf {x}}}_{t-1|t}\\\vdots \\{\hat {\textbf {x}}}_{t-N+1|t}\\\end{bmatrix}}={\begin{bmatrix}I\\0\\\vdots \\0\\\end{bmatrix}}{\hat {\textbf {x}}}_{t|t-1}+{\begin{bmatrix}0&\ldots &0\\I&0&\vdots \\\vdots &\ddots &\vdots \\0&\ldots &I\\\end{bmatrix}}{\begin{bmatrix}{\hat {\textbf {x}}}_{t-1|t-1}\\{\hat {\textbf {x}}}_{t-2|t-1}\\\vdots \\{\hat {\textbf {x}}}_{t-N|t-1}\\\end{bmatrix}}+{\begin{bmatrix}K^{(1)}\\K^{(2)}\\\vdots \\K^{(N)}\\\end{bmatrix}}y_{t|t-1}}

여기서:

1) x ^ t | t − 1 {\displaystyle {\hat {\textbf {x}}}_{t|t-1}} 은 표준 칼만 필터를 통하여 추정된다;

2) y t | t − 1 = z ( t ) − x ^ t | t − 1 {\displaystyle y_{t|t-1}=z(t)-{\hat {\textbf {x}}}_{t|t-1}} 은 표준 칼만 필터의 추정을 고려함으로써 생성된 혁신(잔차)이다.

3) 변수 x ^ t − i | t {\displaystyle {\hat {\textbf {x}}}_{t-i|t}} ( i = 0 , … , N {\displaystyle i=0,\ldots ,N} )는 새로운 변수이다. 즉 이것은 표준 칼만 필터에서는 나타나지 않는다;

4) 이득은 다음의 개요에 따라 계산된다:

K ( i ) = P ( i ) H T [ H P H T + R ] − 1 {\displaystyle K^{(i)}=P^{(i)}H^{T}\left[HPH^{T}+R\right]^{-1}}

그리고

P ( i ) = P [ [ F − K H ] T ] i {\displaystyle P^{(i)}=P\left[\left[F-KH\right]^{T}\right]^{i}}

여기서 P {\displaystyle P} 와 K {\displaystyle K} 은 표준 칼만 필터의 예측 오차 공분산과 이득이다.

만약 추정 오차 공분산을 정의한다면 다음과 같다.

P i := E [ ( x t − i − x ^ t − i | t ) ∗ ( x t − i − x ^ t − i | t ) | z 1 … z t ] {\displaystyle P_{i}:=E\left[\left({\textbf {x}}_{t-i}-{\hat {\textbf {x}}}_{t-i|t}\right)^{*}\left({\textbf {x}}_{t-i}-{\hat {\textbf {x}}}_{t-i|t}\right)|z_{1}\ldots z_{t}\right]}

이경우 다음에 주어진 x t − i {\displaystyle {\textbf {x}}_{t-i}} 로 추정이 개선된다:

P − P i = ∑ j = 0 i [ P ( j ) H T [ H P H T + R ] − 1 H ( P ( i ) ) T ] {\displaystyle P-P_{i}=\sum _{j=0}^{i}\left[P^{(j)}H^{T}\left[HPH^{T}+R\right]^{-1}H\left(P^{(i)}\right)^{T}\right]}

비선형으로의 확장 [ 편집 ]

칼만 필터에서는 기본적으로 모델의 선형성을 가정하고 있지만, 실제적으로는 많은 모델이 비선형 구조를 가지고 있다. 이런 경우 칼만 필터를 그대로 근사화해서 적용하면 그리 좋지 않은 결과를 얻는 경우가 많다. 이러한 경우, 칼만 필터를 수정해 비선형에도 사용할 수 있도록 한 필터가 사용된다.

확장 칼만 필터 [ 편집 ]

확장 칼만 필터(Extended Kalman Filter, EKF)에서는 칼만 필터에서의 선형성 가정을 완화시켜, 더 일반적인 시스템에 대해서도 사용이 가능하도록 확장했다. 이 필터는 내비게이션이나 GPS와 같은 비선형 상태 추정에 주로 사용되고 있다.

구조 [ 편집 ]

확장 칼만 필터에서는 모델의 선형성 가정 대신, 상태 변화 함수의 미분가능성을 가정한다.

x k = f ( x k − 1 , u k − 1 ) + w k − 1 {\displaystyle {\textbf {x}}_{k}=f({\textbf {x}}_{k-1},{\textbf {u}}_{k-1})+{\textbf {w}}_{k-1}} z k = h ( x k ) + v k {\displaystyle {\textbf {z}}_{k}=h({\textbf {x}}_{k})+{\textbf {v}}_{k}}

여기에서 f {\displaystyle f} , h {\displaystyle h} 는 미분가능한 함수여야 한다.

예측과 업데이트 방정식 [ 편집 ]

예측 예측된 상태 x ^ k | k − 1 = f ( x ^ k − 1 | k − 1 , u k − 1 ) {\displaystyle {\hat {\textbf {x}}}_{k|k-1}=f({\hat {\textbf {x}}}_{k-1|k-1},{\textbf {u}}_{k-1})} 예측된 추정 공분산 P k | k − 1 = F k − 1 P k − 1 | k − 1 F k − 1 ⊤ + Q k − 1 {\displaystyle {\textbf {P}}_{k|k-1}={\color {Red}{\textbf {F}}_{k-1}}{\textbf {P}}_{k-1|k-1}{\color {Red}{\textbf {F}}_{k-1}^{\top }}+{\textbf {Q}}_{k-1}}

업데이트 혁신 혹은 추정 나머지 y ~ k = z k − h ( x ^ k | k − 1 ) {\displaystyle {\tilde {\textbf {y}}}_{k}={\textbf {z}}_{k}-h({\hat {\textbf {x}}}_{k|k-1})} 혁신(혹은 나머지) 공분산 S k = H k P k | k − 1 H k ⊤ + R k {\displaystyle {\textbf {S}}_{k}={\color {Red}{\textbf {H}}_{k}}{\textbf {P}}_{k|k-1}{\color {Red}{\textbf {H}}_{k}^{\top }}+{\textbf {R}}_{k}} 최적의 칼만 이득 K k = P k | k − 1 H k ⊤ S k − 1 {\displaystyle {\textbf {K}}_{k}={\textbf {P}}_{k|k-1}{\color {Red}{\textbf {H}}_{k}^{\top }}{\textbf {S}}_{k}^{-1}} 업데이트된 상태 추정 x ^ k | k = x ^ k | k − 1 + K k y ~ k {\displaystyle {\hat {\textbf {x}}}_{k|k}={\hat {\textbf {x}}}_{k|k-1}+{\textbf {K}}_{k}{\tilde {\textbf {y}}}_{k}} 업데이트된 추정 공분산 P k | k = ( I − K k H k ) P k | k − 1 {\displaystyle {\textbf {P}}_{k|k}=(I-{\textbf {K}}_{k}{\color {Red}{\textbf {H}}_{k}}){\textbf {P}}_{k|k-1}}

여기서 상태 변이와 관측 매트릭스는 자코비안에 따라 정의 되었다.

F k − 1 = ∂ f ∂ x | x ^ k − 1 | k − 1 , u k {\displaystyle {\textbf {F}}_{k-1}=\left.{\frac {\partial f}{\partial {\textbf {x}}}}\right\vert _{{\hat {\textbf {x}}}_{k-1|k-1},{\textbf {u}}_{k}}}

H k = ∂ h ∂ x | x ^ k | k − 1 {\displaystyle {\textbf {H}}_{k}=\left.{\frac {\partial h}{\partial {\textbf {x}}}}\right\vert _{{\hat {\textbf {x}}}_{k|k-1}}}

확장 칼만 필터의 단점 [ 편집 ]

선형의 것과는 다르게, 일반적인 확장 칼만 필터는 최적의 추정이 아니다(물론 만약 측정과 상태 천이 모델이 둘 다 선형이라면 최적이다. 그 경우엔 확장 칼만 필터는 보통의 것과 같다.). 덧붙여 말해서, 만약 상태의 초기 추정이 틀리거나 프로세스가 옳지 않게 설계됐다면, 필터는 필터의 선형성으로 인해 금방 발산할 수도 있다. 확장 칼만 필터의 다른 문제는 추정된 공분산 매트릭스가 실제 공분산 매트릭스를 경시하도록 의도되었고, 결론적으로 “안정적인 노이즈”의 추가됨이 없는 통계적 의미에 모순되는 위험을 감수한다.

이러한 단점에도 불구하고, 확장 칼만 필터는 적당한 수행을 할 수 있고, 내비게이션이나 GPS에서 거의 사실상 표준이다.

무향 칼만 필터 [ 편집 ]

상태 천이와 관찰 모델(예측과 업데이트 함수 f {\displaystyle f} 와 h {\displaystyle h} )이 매우 비선형일 경우, 확장 칼만 필터는 일부 형편없는 성능을 나타낼 수 있다. 이것은 평균과 공분산이 비선형 모델의 선형화로 인해 전달되었기 때문이다. 무향 칼만 필터(The unscented Kalman filter, UKF)는 평균 주변에 (시그마 점(sigma point)으로 불리는) 샘플 포인트의 최소 집합을 얻기 위해,무향 변환으로 알려져 있는 결정론적인 샘플링 기술을 사용한다. 이 시그마 점들은 비선형 함수를 통해 전달되고, 변환된 점들에 대해 평균과 공분산을 구하는 형태를 가진다. 결과는 더 정확하게 평균과 공분산을 잡아내는 필터이다.(이것은 몬테 카를로 샘플링(Monte Carlo sampling)이나 예측 통계의 테일러 시리즈 확장을 통해 수정 될 수 있다.) 덧붙여 말해서, 이 기술은 명시적인 자코비안 계산을 요구하지 않는다. 이것은 복잡한 함수를 위한 것이라면 더 어려운 임무일 수 있다. (i.e., 복잡하게 유도된 요구는 분석적 하게 되거나 수치적으로 비용이 많이 드는 컴퓨터 계산이 된다.)

예측

EKF와 같이, UKF 예측은 UKF 업데이트(선형 또는 EKF 업데이트의 조합)와 독립적으로 사용될 수 있고, 그 반대도 가능하다.

추정된 상태와 공분산은 프로세스 잡음의 평균과 공분산으로 증대된다.

x k − 1 | k − 1 a = [ x ^ k − 1 | k − 1 T E [ w k T ] ] T {\displaystyle {\textbf {x}}_{k-1|k-1}^{a}=[{\hat {\textbf {x}}}_{k-1|k-1}^{T}\quad E[{\textbf {w}}_{k}^{T}]\ ]^{T}}

P k − 1 | k − 1 a = [ P k − 1 | k − 1 0 0 Q k ] {\displaystyle {\textbf {P}}_{k-1|k-1}^{a}={\begin{bmatrix}&{\textbf {P}}_{k-1|k-1}&&0&\\&0&&{\textbf {Q}}_{k}&\end{bmatrix}}}

2L+1 시그마 포인트의 집합은 증대되는 상태와 공분산으로부터 전달된다. 여기서 L은 증대되는 상태의 차원이다.

χ k − 1 | k − 1 0 {\displaystyle \chi _{k-1|k-1}^{0}} = x k − 1 | k − 1 a {\displaystyle ={\textbf {x}}_{k-1|k-1}^{a}} χ k − 1 | k − 1 i {\displaystyle \chi _{k-1|k-1}^{i}} = x k − 1 | k − 1 a + ( ( L + λ ) P k − 1 | k − 1 a ) i {\displaystyle ={\textbf {x}}_{k-1|k-1}^{a}+\left({\sqrt {(L+\lambda ){\textbf {P}}_{k-1|k-1}^{a}}}\right)_{i}} i = 1.. L {\displaystyle i=1..L\,\!} χ k − 1 | k − 1 i {\displaystyle \chi _{k-1|k-1}^{i}} = x k − 1 | k − 1 a − ( ( L + λ ) P k − 1 | k − 1 a ) i − L {\displaystyle ={\textbf {x}}_{k-1|k-1}^{a}-\left({\sqrt {(L+\lambda ){\textbf {P}}_{k-1|k-1}^{a}}}\right)_{i-L}} i = L + 1 , … 2 L {\displaystyle i=L+1,\dots {}2L\,\!}

여기서,

( ( L + λ ) P k − 1 | k − 1 a ) i {\displaystyle \left({\sqrt {(L+\lambda ){\textbf {P}}_{k-1|k-1}^{a}}}\right)_{i}}

은 다음 식의 매트릭스 스퀘어 루트의 i번째 행이다.

( L + λ ) P k − 1 | k − 1 a {\displaystyle (L+\lambda ){\textbf {P}}_{k-1|k-1}^{a}}

정의를 사용 : 매트릭스 B의 스퀘어루트 A를 푼다.

B ≡ A A T {\displaystyle B\equiv AA^{T}}

매트릭스 스퀘어 루트는 수치적으로 효율적인 계산이어야 하고, 초레스키 분해(the Cholesky decomposition)와 같이 안정적인 메서드이어야 한다.

시그마 포인트는 전달함수 f를 통해 전달된다.

χ k | k − 1 i = f ( χ k − 1 | k − 1 i ) i = 0..2 L {\displaystyle \chi _{k|k-1}^{i}=f(\chi _{k-1|k-1}^{i})\quad i=0..2L}

웨이티드 시그마 포인트는 예측된 상태와 공분산을 생산하기 위해 재결합 된다.

x ^ k | k − 1 = ∑ i = 0 2 L W s i χ k | k − 1 i {\displaystyle {\hat {\textbf {x}}}_{k|k-1}=\sum _{i=0}^{2L}W_{s}^{i}\chi _{k|k-1}^{i}}

P k | k − 1 = ∑ i = 0 2 L W c i [ χ k | k − 1 i − x ^ k | k − 1 ] [ χ k | k − 1 i − x ^ k | k − 1 ] T {\displaystyle {\textbf {P}}_{k|k-1}=\sum _{i=0}^{2L}W_{c}^{i}\ [\chi _{k|k-1}^{i}-{\hat {\textbf {x}}}_{k|k-1}][\chi _{k|k-1}^{i}-{\hat {\textbf {x}}}_{k|k-1}]^{T}}

여기서 상태와 공분산을 위한 웨이트는 다음과 같이 주어진다:

W s 0 = λ L + λ {\displaystyle W_{s}^{0}={\frac {\lambda }{L+\lambda }}} W c 0 = λ L + λ + ( 1 − α 2 + β ) {\displaystyle W_{c}^{0}={\frac {\lambda }{L+\lambda }}+(1-\alpha ^{2}+\beta )} W s i = W c i = 1 2 ( L + λ ) {\displaystyle W_{s}^{i}=W_{c}^{i}={\frac {1}{2(L+\lambda )}}} λ = α 2 ( L + κ ) − L {\displaystyle \lambda =\alpha ^{2}(L+\kappa )-L\,\!}

α {\displaystyle \alpha } , β {\displaystyle \beta } , κ {\displaystyle \kappa } 를 위한 대표적인 수로는 각각 10 − 3 {\displaystyle 10^{-3}} , 2, 0이다.(이들의 값은 최대한 목적을 만족시켜야 한다)[출처 필요]

업데이트

예측된 상태와 공분산은 전보다 증대되었다. 다만 노이즈 측정의 평균과 공분산은 제외된다.

x k | k − 1 a = [ x ^ k | k − 1 T E [ v k T ] ] T {\displaystyle {\textbf {x}}_{k|k-1}^{a}=[{\hat {\textbf {x}}}_{k|k-1}^{T}\quad E[{\textbf {v}}_{k}^{T}]\ ]^{T}}

P k | k − 1 a = [ P k | k − 1 0 0 R k ] {\displaystyle {\textbf {P}}_{k|k-1}^{a}={\begin{bmatrix}&{\textbf {P}}_{k|k-1}&&0&\\&0&&{\textbf {R}}_{k}&\end{bmatrix}}}

예전과 같이, 2L+1 시그마 포인트의 집합은 증대된 상태와 공분산으로부터 전달된다. 여기서 L은 증대된 상태의 차원이다.

χ k | k − 1 0 {\displaystyle \chi _{k|k-1}^{0}} = x k | k − 1 a {\displaystyle ={\textbf {x}}_{k|k-1}^{a}} χ k | k − 1 i {\displaystyle \chi _{k|k-1}^{i}} = x k | k − 1 a + ( ( L + λ ) P k | k − 1 a ) i {\displaystyle ={\textbf {x}}_{k|k-1}^{a}+\left({\sqrt {(L+\lambda ){\textbf {P}}_{k|k-1}^{a}}}\right)_{i}} i = 1.. L {\displaystyle i=1..L\,\!} χ k | k − 1 i {\displaystyle \chi _{k|k-1}^{i}} = x k | k − 1 a − ( ( L + λ ) P k | k − 1 a ) i − L {\displaystyle ={\textbf {x}}_{k|k-1}^{a}-\left({\sqrt {(L+\lambda ){\textbf {P}}_{k|k-1}^{a}}}\right)_{i-L}} i = L + 1 , … 2 L {\displaystyle i=L+1,\dots {}2L\,\!}

이에 대한 대안으로, UKF 예측은 시그마 포인트를 사용하여 다음과 같이 증대될 수 있다.

χ k | k − 1 := [ χ k | k − 1 T E [ v k T ] ] T ± ( L + λ ) R k a {\displaystyle \chi _{k|k-1}:=[\chi _{k|k-1}^{T}\quad E[{\textbf {v}}_{k}^{T}]\ ]^{T}\pm {\sqrt {(L+\lambda ){\textbf {R}}_{k}^{a}}}}

여기서,

R k a = [ 0 0 0 R k ] {\displaystyle {\textbf {R}}_{k}^{a}={\begin{bmatrix}&0&&0&\\&0&&{\textbf {R}}_{k}&\end{bmatrix}}}

시그마 포인트는 관측 함수 h를 통하여 설계된다.

γ k i = h ( χ k | k − 1 i ) i = 0..2 L {\displaystyle \gamma _{k}^{i}=h(\chi _{k|k-1}^{i})\quad i=0..2L}

웨이티드 시그마 포인트는 예측된 측정과 예측된 측정 공분산을 생성하기 위해 재구성된다.

z ^ k = ∑ i = 0 2 L W s i γ k i {\displaystyle {\hat {\textbf {z}}}_{k}=\sum _{i=0}^{2L}W_{s}^{i}\gamma _{k}^{i}}

P z k z k = ∑ i = 0 2 L W c i [ γ k i − z ^ k ] [ γ k i − z ^ k ] T {\displaystyle {\textbf {P}}_{z_{k}z_{k}}=\sum _{i=0}^{2L}W_{c}^{i}\ [\gamma _{k}^{i}-{\hat {\textbf {z}}}_{k}][\gamma _{k}^{i}-{\hat {\textbf {z}}}_{k}]^{T}}

상태 측정 크로스-공분산 매트릭스,

P x k z k = ∑ i = 0 2 L W c i [ χ k | k − 1 i − x ^ k | k − 1 ] [ γ k i − z ^ k ] T {\displaystyle {\textbf {P}}_{x_{k}z_{k}}=\sum _{i=0}^{2L}W_{c}^{i}\ [\chi _{k|k-1}^{i}-{\hat {\textbf {x}}}_{k|k-1}][\gamma _{k}^{i}-{\hat {\textbf {z}}}_{k}]^{T}}

는 UKF 칼만 필터 이득을 계산하기 위해 사용된다.

K k = P x k z k P z k z k − 1 {\displaystyle K_{k}={\textbf {P}}_{x_{k}z_{k}}{\textbf {P}}_{z_{k}z_{k}}^{-1}}

칼만필터로서, 업데이트된 상태는 예측된 상태에, 칼만 필터에 의해서 웨이티드된 혁신 값을 더한다.

x ^ k | k = x ^ k | k − 1 + K k ( z k − z ^ k ) {\displaystyle {\hat {\textbf {x}}}_{k|k}={\hat {\textbf {x}}}_{k|k-1}+K_{k}({\textbf {z}}_{k}-{\hat {\textbf {z}}}_{k})}

그리고 업데이트된 공분산은 예측된 공분산에, 칼만 이득에 의해 웨이티드된 예측된 측정 공분산 값을 빼준다.

P k | k = P k | k − 1 − K k P z k z k K k T {\displaystyle {\textbf {P}}_{k|k}={\textbf {P}}_{k|k-1}-K_{k}{\textbf {P}}_{z_{k}z_{k}}K_{k}^{T}}

칼만-부시 필터 [ 편집 ]

칼만-부시 필터(The Kalman–Bucy filter)는 칼만 필터의 연속 시간 버전이다.

이것은 상태 공간 모델을 기반으로 한다.

d d t x ( t ) = F ( t ) x ( t ) + w ( t ) {\displaystyle {\frac {d}{dt}}\mathbf {x} (t)=\mathbf {F} (t)\mathbf {x} (t)+\mathbf {w} (t)}

z ( t ) = H ( t ) x ( t ) + v ( t ) {\displaystyle \mathbf {z} (t)=\mathbf {H} (t)\mathbf {x} (t)+\mathbf {v} (t)}

여기서 노이즈 항인 w ( t ) {\displaystyle \mathbf {w} (t)} 와 v ( t ) {\displaystyle \mathbf {v} (t)} 의 공분산은 각각 Q ( t ) {\displaystyle \mathbf {Q} (t)} 와 R ( t ) {\displaystyle \mathbf {R} (t)} 로 주어진다.

두 미분 방정식의 필터 상수, 상태 추정과 공분산:

d d t x ^ ( t ) = F ( t ) x ^ ( t ) + K ( t ) ( z ( t ) − H ( t ) x ^ ( t ) ) {\displaystyle {\frac {d}{dt}}{\hat {\mathbf {x} }}(t)=\mathbf {F} (t){\hat {\mathbf {x} }}(t)+\mathbf {K} (t)(\mathbf {z} (t)-\mathbf {H} (t){\hat {\mathbf {x} }}(t))}

d d t P ( t ) = F ( t ) P ( t ) + P ( t ) F T ( t ) + Q ( t ) − K ( t ) R ( t ) K T ( t ) {\displaystyle {\frac {d}{dt}}\mathbf {P} (t)=\mathbf {F} (t)\mathbf {P} (t)+\mathbf {P} (t)\mathbf {F} ^{T}(t)+\mathbf {Q} (t)-\mathbf {K} (t)\mathbf {R} (t)\mathbf {K} ^{T}(t)}

여기서 칼만 이득은 다음과 같이 주어진다.

K ( t ) = P ( t ) H T ( t ) R − 1 ( t ) {\displaystyle \mathbf {K} (t)=\mathbf {P} (t)\mathbf {H} ^{T}(t)\mathbf {R} ^{-1}(t)}

K ( t ) {\displaystyle \mathbf {K} (t)} 의 표현에서 노이즈 측정의 공분산 R ( t ) {\displaystyle \mathbf {R} (t)} 는 예측된 에러(혹은 혁신) y ~ ( t ) = z ( t ) − H ( t ) x ^ ( t ) {\displaystyle {\tilde {\mathbf {y} }}(t)=\mathbf {z} (t)-\mathbf {H} (t){\hat {\mathbf {x} }}(t)} 의 공분산과 같은 시간에 표현된다. 이 공분산은 오직 연속시간의 경우이다.

이산 시간 칼만 필터링의 예측과 업데이트 단계 사이의 구별은 연속시간에서는 존재하지 않는다. .

(공분산을 위한 )두 번째 미분 방정식은, Riccati equation의 예이다.

발전 역사 [ 편집 ]

필터 이름은 루돌프 칼만( Rudolf E. Kalman) 개발자의 이름에서 따온 것이다. 실제로는 Thorvald Nicolai Thiele[1] Peter Swerling가 유사한 알고리즘을 더 일찍 개발하였다. Stanley F. Schmidt는 일반적으로 사용할 수 있는 첫 번째의 칼만 필터를 구현하였다. 칼만이 미 항공 우주센터를 방문 중에 그의 아이디어가 아폴로 프로젝트의 궤적 추정 문제에 사용이 가능함을 알고 아폴로 항법 컴퓨터에 적용하도록 인도하였다. 필터는 Swerling (1958), Kalman (1960), Kalman and Bucy (1961)가 계속해서 연구 개발하였다.

필터는 때로는 Stratonovich-Kalman-Bucy 필터라고도 하는데 그 이유는 Ruslan L. Stratonovich[2][3]가 더 일반적인 비선형 필터의 특별한 경우를 이전에 개발하였기 때문이다. 사실 특별한 경우 방정식은 선형 필터에서 나타나는데 Stratonovich가 작성한 1960년대 논문에 나타나는데 그 때가 Rudolf E. Kalman가 Ruslan L. Stratonovich를 모스크바의 컨퍼런스에서 만났던 때이다.

제어 이론에서 칼만 필터는 가장 유용한 것으로 linear quadratic estimation(LQE)으로 알려져 있다.

칼만 필터의 다양성은 계속 지금까지 개발되고 있는데 칼만의 원래 공식은 이제 단순 칼만 필터라고 부르고, 쉬미츠의 확장 필터, 그외 Bierman, Thornton에 의한 information 필터와 square-root필터가 있다. 아마도 가장 흔하게 사용되는 칼만 필터 형태는 phase-locked loop으로서 현재 유비쿼터스의 라디오, 컴퓨터 그리고 대부분의 통신 및 비디오 장비에 사용된다.

[수학] 칼만 필터(Kalman Filter)란 무엇인가? (로봇, 자율주행, SLAM 알고리즘)

자율주행(Autonomous Driving)에는 기계(Mobility)가 이동을 하면서

스스로 장애물을 파악해서 피하고, 최적의 경로를 찾아가는 기능이 필요하다.

즉, 주행 중 변수 감지와 주행 제어를 해야 한다.

이를 위해선 정확한 지도(Map)가 필요하다.

즉, 센서와 데이터를 통한 맵핑(Mapping)이 필요한데,

이 때 필요한 작업이 바로 Localization이다.

Localization이란 위치 측정(측위)을 말한다.

* localize : ~의 위치를 알아내다.

문제는 어떠한 맵이 주어졌을때,

로봇에 장착된 센서(초음파, 라이다, 카메라 등)를 이용하여

로봇이 맵의 어느 위치에 있는지를 확률 기반의 방법 으로 예측한다는 것이다.

모든 관측값(Observation)은 오차(Error)를 가지고 있으며,

이는 기술의 발전을 통해 줄일 수는 있지만 완전히 없애는건 불가능하다.

인간은 지도를 확인하며 새로운 길을 찾아나설 때 교회가 어디 있고, 공원이 어디 있고 등

주변에 있는 건물과 같은 데이터를 이용해 비교, 분석해서 자신의 위치를 대략적으로 파악한다.

우리 인간에겐 이러한 문제를 해결할 능력이 있지만 로봇은 불가능하다.

이 때 바로 칼만 필터(Kalman Filter)를 사용할 수 있다.

참고로 칼만 필터는 최소 자승법(최소제곱법, LSM, Least Square Method)을 사용한다.

Kalman filter란?

루돌프 칼만이 1960년 대 초 개발한 알고리즘으로

측정치를 바탕으로 선형 역학계의 상태를 추정하는 재귀필터입니다

NASA의 아폴로 프로젝트에서 네비게이션을 개발할때 사용 되었으며,

현재는 GPS, 주가 예측, 날씨 예측, 인구 예측 등 다양한 부분에서 사용되고 있습니다

기존에 인지하고 있던 과거 측정데이터와 새로운 측정데이터를 사용하여

데이터에 포함된 노이즈를 제거시켜 새로운 결과를 추정(estmate) 하는데 사용하는 알고리즘으로

선형적 움직임을 갖는 대상을 재귀적적용으로 동작시킵니다

추정 이론은 통계학과 신호처리의 한 분야이며,

측정 또는 관찰된 자료에 기반하여 모수(모집단을 대표하는 값) 의 값을 추정하는 것을 다룹니다

예를 들어, 전 세계 인구수를 예측한다고 할 때

전수조사를 하지 않는 이상 모수를 절대 알수 없고, 표본(sample)에서 구한 통계값을 기반으로 모수를

추정하게 되는데 이때, 평균, 표준편차, 분산 등이 모수로 사용됩니다

자연계의 움직임은 어느정도 예측이 가능하며 일반적 움직임 물성을 가지는 것이 당연합니다

누적된 과거데이터와 현재 얻을 수 있는 새로운데이터로 현상태를 추정하고자 하는 것은

우리의 모든 현상에서 요구되는 것임으로 미사일 궤도나 주식의 등락 흐름이나 거의 같습니다

여기서 말하는 필터(filter) 란?

흔히 정수기의 filter를 생각하시면 될 것 같습니다

측정데이타에 포함된 불확실성(noise)을 filtering 하는 것으로

즉, 측정데이터나 신호가 잡음을 동방하는데 여기서 원하는 신호나 정보를 골라내는 알고리즘이라고 보면 됩니다

확률에 기반한 예측시스템이므로 이것의 대상은 정규분포(가우시안분포)를 가지는 대상이 됩니다

가우시안분포 참조

blog.naver.com/msnayana/80107833229

norman3.github.io/prml/docs/chapter02/3_1.html

Kalman Filter 의 기본적인 개념은

과거값 , 현재값 을 가지고 재귀적 (recursive) 연산 (data processing) 을 통하여 최적 (optimal) 값을 추적하는 것입니다

실제 응용에 있어서는 시스템이 non linear 이며 noise가 gaussian이 아닌 경우가 많습니다

kalman filter의 변형이 요구되는데 Extended Kalman Filter (EKF) 가 가장 많이 사용 되고 있습니다

EKF 는 선형화 칼만필터 ( Linearized KF ) 와 유사하나 선형화하는 기준점을 계속 갱신해 나간다는 특징을 가지고 있습니다

칼만필터 알고리즘은 다음의 2가지 가정이 갖춰지는 경우에 사용할수 있습니다.

※ 모션 모델과 측정 모델이 linear할 경우

※ 모션 모델과 측정 모델이 Gaussian 분포를 따를 경우

칼만필터는 위 2가지 조건이 갖춰지는 경우에만 사용 할수 있다는 단점이 있습니다

대부분의 실제 시스템은 가우시안 분포를 따르지 않으며 비선형 모델을 포함합니다.

이러한 문제점을 해결한 것이 확장 칼만 필터입니다.

상태 예측(state prediction)과 측정 업데이트(measurement update)를 반복적으로 수행하며

로봇의 현재 위치를 계산합니다.

상태 예측단계는 이전 로봇의 파라미터(위치, 속도 등)와 로봇 모션 입력을 이용해

현재 로봇 파라미터 값을 예측하는 단계이고, 측정 업데이트는 상태 예측단계에서 예측된

현재 로봇의 파라미터 값과 현재 로봇의 위치에서 얻어진 센서 정보를 이용해 현재 로봇 파라미터 값을

업데이트하는 단계입니다.

1차원의 경우

상태 예측

상태 예측 단계에서는 이전 측정 업데이트에서 계산한 확률 분포와 로봇 모션 입력의 확률 분포를 이용해 현재 상태의 분포를 예측합니다. 이 때 확률분포의 평균은 간단히 두 평균을 더한 것이고 확률분포의 분산은 두 분산을 더한 것이 됩니다. 이는 1차원의 경우를 예로 들고 있기 때문에 간단한 합이 되지만 뒤에서 다룰 다차원의 경우에는 좀더 복잡한 수식으로 상태 예측이 수행됩니다.

측정 업데이트

측정 업데이트는 상태 예측단계에서 예측된 현재 로봇 위치에 대한 확률분포와 현재 로봇의 위치에서 측정한 관찰값의 확률 분포를 이용하여 사후 확률분포를 업데이트 하는 방식으로 수행됩니다. 예를 들어 로봇이 이전에 20미터 거리에 있었다고 가정하고 분산은 9미터라고 합시다. 그렇다면 다음과 같은 가우시안 확률 분포를 가집니다.

현재 로봇의 위치에서 측정한 센서의 값은 30미터이고 분산은 3미터라고 하면 다음과 같은 가우시안 분포를 가집니다.

업데이트 된 새로운 가우시안 확률 분포는 이전 가우시안 분포와 measurement의 가우시안 분포의 곱으로 구할수 있습니다. 두 가우시안 분포의 곱에 대한 수식 유도는 좀 복잡해서 따로 링크를 걸어두도록 하겠습니다. 결과적으로 새로운 가우시안 분포의 평균과 분산 값은 아래와 같은 식으로 구할수 있습니다.

이 식을 이용하여 측정 업데이트를 수행하면 아래와 같은 사후 확률분포를 얻을수 있습니다. 이것이 업데이트된 로봇의 위치에 대한 확률분포가 되는 것 입니다.

전체적인 1차원 칼만필터의 측정 업데이트와 상태 예측 단계를 정리하면 아래와 같습니다.

1차원 칼만 필터 정리

칼만필터는 상태 예측과 측정 업데이트의 반복으로 이루어진 알고리즘입니다.

상태 예측 단계에서는 이전 측정 업데이트 단계에서 계산된 로봇의 현재 위치의 확률 분포에 로봇 모션 입력의 확률 분포를 더합니다. 간단히 평균은 평균끼리, 분산은 분산끼리 더하여 새로운 로봇의 현재위치에 대한 확률 분포를 계산합니다.

측정 업데이트 단계에서는 이전 상태 예측 단계에서 예측된 로봇의 현재 위치와 실제 로봇의 현재 위치에서 측정된 관측값을 가중치를 이용해 측정값을 업데이트 합니다. 여기서 가중치는 예측된 로봇의 현재 위치에 대한 분산값과 실제 로봇의 현재 위치에서 측정된 관측값의 분산값에 따라 결정됩니다. 이 가중치는 다차원의 경우에 칼만게인이라는 행렬로 확장됩니다.

다차원 칼만 필터

(사전 숙지) 가우시안 분포의 선형 변환

여기서 우리가 알아야 할 정보는 선형모델에서 가우시안 분포의 변환입니다. 확률변수 X가 가우시안 분포를 따를때, 확률변수 Y가 Y=AX+B와 같은 선형변환으로 이루어지면, 확률변수 Y도 가우시안 분포를 따르며 그 평균과 공분산은 다음과 같습니다.

평균이 저렇게 되는것은 쉽게 이해할수 있으나 공분산의 형태는 쉽게 이해하기 어렵습니다. 이 때 공분산의 수식 유도는 다음과 같습니다.

이와 같은 가우시안 분포의 선형 변환을 이용하여 다차원 칼만필터의 상태 예측 단계를 수행할수 있습니다.

상태 예측

1차원의 상태 예측 단계와 마찬가지로 이전의 로봇 파라미터에 대한 확률 분포에 로봇 모션 입력의 확률 분포를 더해줍니다. 여기서 A는 t시간의 로봇 파라미터와 t-1시간의 로봇 파라미터의 관계를 나타내는 상태 전이 행렬입니다. 그리고 B는 t시간의 로봇 모션 입력과 t시간의 로봇 파라미터의 관계를 나타내는 행렬입니다.

먼저 첫번째줄인 t시간의 로봇 파라미터의 가우시안 분포에 대한 평균값 계산에 대해서 살펴보면 다음과 같습니다. 단순한 두 값의 합산으로 이루어져 있습니다.

다음으로 두번째줄인 t시간의 로봇 파라미터의 가우시안 분포에 대한 공분산 행렬 계산에 대해서 살펴보면 다음과 같습니다. 가우시안 분포를 가지는 확률변수의 공분산 행렬 계산 때 처럼 앞쪽 항이 구해지고 R은 로봇 모션을 방해하는 불확실한 요인에 대한 공분산 행렬(베어링 마찰이나 편심질량, 공기저항)과 더해서 최종 값이 계산되게 됩니다.

이 식을 통해 1차원 상태 예측 단계 처럼 로봇에 대한 파라미터 상태를 예측할수 있습니다.

측정 업데이트

1차원의 측정 업데이트 단계와 마찬가지로 이전 상태 예측 단계에서 예측된 로봇의 파라미터값과 현재 로봇의 상태에서 측정한 파라미터 값사이를 가중치를 이용해 측정값을 업데이트 합니다. 여기서 가중치는 칼만게인으로 정의 되며 K로 나타냅니다. 1차원의 경우에는 분산의 비율로 가중치를 정했는데 다차원의 경우 칼만 게인은 좀 더 복잡한 수식으로 구해집니다. 본 문서에서는 칼만게인의 수식 유도는 다루지 않고 칼만 필터의 전체 과정만을 다룹니다. C는 현재 로봇 파라미터와 관측된 로봇 파라미터값 사이의 상관관계를 나타내는 행렬이며 Q는 관찰값의 공분산 입니다.

칼만 게인을 구하고 나면 로봇의 파라미터 값을 업데이트 해줍니다. 여기서는 관찰된 데이터와 상태 예측 단계에서 얻은 로봇 파라미터의 예측값에서 기대되는 관측값과의 차이를 칼만 게인을 가중치로 하여 얻은 크기만큼 더해주어서 최종적인 로봇 파라미터 확률분포를 업데이트 합니다.

전체적인 다차원 칼만필터의 측정 업데이트와 상태 예측 단계를 정리하면 아래와 같습니다.

결과 분석

예를 들어 관찰값에 대한 공분산인 Q가 무한대 즉, 측정 값이 전혀 신뢰할수 없는 경우를 생각해봅시다. 그러면 칼만 게인 값은 0이 됩니다. 따라서 예측된 로봇의 위치를 그대로 가져다 씁니다.

반대로 Q가 0인 경우 즉 측정값이 아주 신뢰도가 높은 경우를 생각해봅시다. 그러면 z값만 남게되어 측정값을 그대로 가져다 씁니다.

< 출 처 >

blog.naver.com/msnayana/80106682874

medium.com/@celinachild/kalman-filter-소개-395c2016b4d6

키워드에 대한 정보 kalman filter 설명

다음은 Bing에서 kalman filter 설명 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 선형칼만필터의 기초 (1)

  • 칼만필터
  • 선형칼만필터
  • 신호처리
  • 기초
  • 강의
  • 튜토리얼

선형칼만필터의 #기초 #(1)


YouTube에서 kalman filter 설명 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 선형칼만필터의 기초 (1) | kalman filter 설명, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment