본문 바로가기

엔지니어

[칼만필터] 2. 상태 관측기(State Observer)

<이 포스팅은 Matlab이 제공하는 Understanding Kalman Filter을 번역 및 요약한 자료입니다. 출처는 https://www.youtube.com/watch?v=4OerJmPpkRg 입니다.>

Understanding Kalman Filters, Part 2: State Observers

상태 추정

  • 우리가 직접적으로 측정하지 못하는 상태를 추정하는 것 말한다.

  • 추정 상태는 수식에서 문자 위에 hat을 씌워서 표현한다.

 


###예시1

  • 지구에서 달으로 가기 위해 로켓 엔진의 내부 온도를 알아야 한다.
  • 내부 온도는 로켓에 얼마나 연료를 주입해야 하는지 알려주기 때문이다.
  • 내부 온도를 직접적으로 측정할 수는 없고, 대신 외부 온도는 측정 가능하다.
  • 즉, 우리는 주입 연료량과 외부 온도를 알 수 있다.

  • 내부 온도를 추정하기 위해서는 더 많은 정보가 필요하다.
  • 우리가 연료 주입량과 외부 온도와의 수학적 관계를 안다면, 주입한 연료에 대한 외부 온도의 추정 값을 구할 수 있다.
  • 수학적 모델이 엔진 내부 온도를 포함한다면, 내부 온도의 추정값 또한 알 수 있다.
  • 그러나 수학적 모델은 실제 모델을 근사한 것이기 때문에, 불확실성(uncertainty)에 따른 오차가 발생한다.

  • 우리의 목표는 실제 외부 온도와 외부 온도의 추정값의 오차를 최소화하는 것이다.
  • 이는 우리의 모델을 실제에 수렴하게 만들기 때문이다.
  • 모델이 실제와 수렴한다면, 내부 온도의 추정값과 실제 내부 온도값 또한 수렴할 것이다.

  • 위 그림의 feedback control system에서, 우리는 controller K를 이용, 외부 온도와 그 추정값의 에러를 0으로 만들 것이다.
  • 왼쪽 그림의 파란색 부분이 상태 추정기이다.

  • controller K로 폐루프를 만듦으로써, 우리는 외부온도와 그 추정값의 오차를 0으로 만들 것이고, 이는 내부 온도 추정값을 참값에 수렴하게 한다.

 

정리하면,

  • 엔진의 내부 온도를 직접적으로 측정할 수는 없다.
  • 하지만 얼마나 연료를 주입하는지는 알 수 있으므로, 수학적 모델을 사용해 출력(외부온도)을 추정할 수 있다.
  • 추정 출력과 실제 측정 값을 비교할 수 있다.
  • 문제는 출력과 그 추정 값을 최소화해주는 controller K를 구하는 것이다.

  • 위 그림은 상태 추정기를 수학적으로 표현한 식이다.
  • 목표는 x hat을 x로 수렴하게 만드는 것이다.

  • 양 변을 적분해서, exponential 함수로 만들 수 있다.
  • (A-KC)가 음수 값이라면 시간이 갈수록 e_obs가 0으로 수렴한다.
  • e_obs가 0으로 수렴하면, 우리가 목표한대로 x hat이 x로 수렴하게 된다.

  • 위 식에서 우리는 K를 조정함으로서 error 함수의 decay rate를 제어할 수 있다.
  • 만약 decay rate가 A 행렬에만 연관된다면(K가 없다면), 모델의 불확실성으로 인해 A를 정확히 알지 못할 때, error가 얼마나 빨리 사라질지를 제어할 수 없다.
  • 따라서 feedback 제어기는 이 수식에 대한 더 많은 제어권을 부여하며, 에러가 0으로 빠르게 수렴하게 할 수 있다.
  • 아까 말했듯이, 에러가 0으로 수렴한다는 건 x hat이 참 값으로 수렴한다는 것과 동치이다.
  • gain K를 구하는 최적의 방법은 칼만필터를 이용하는 것이다.