블로그 이미지
SuperMjs

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

Notice

'Mathematical Theory'에 해당되는 글 3

  1. 2009.11.18 Kalman Filter & Algorithm
  2. 2009.11.18 Linear Systems(선형시스템)
  3. 2009.11.18 Linear system
2009. 11. 18. 01:47 Mathematical Theory

이전 포스팅에서 언급한 선형 시스템에서 우리가 하려고 하는 일은 측정 가능한 y의 값으로 부터 시스템의 상태인 x를 예측해 내는 것

입니다.

 

이미 시스템이 어떻게 동작하는지 표현 하는 공식의 모델링도 했고, 위치를 측정할 수도 있습니다. 그럼 어떻게 상태 x를 예측할

수 있을 까요? (아니면 예측된 값이 최적의 결과라고 확신 할 수 있을까요?)


일단 시스템 동작의 결과(원하는 상태 x) 모두를 정확하고도 직접적으로 측정할 수는 없더라도 시스템 상태를 그야말로 정확하게 예측

할 수 있는 예측 시스템 (estimator)이 있으면 얼마나 좋을까요? 그 시스템을 고르는 결정 방법은 또 뭘까요?

일단 다음의 두가지 (수학적인) 요구 조건이 있다고 합니다. (저자는 머리속에 떠오른다는데 왜? 난 아무 생각이 없이 머리속이 백짓장 마냥 변하는 걸까요? ㅎㅎㅎ)

 

우선 첫번째로, 우리가 예측한 상태의 평균값이 실제 시스템의 (그야말로 - 100% exact truth) 진짜 상태의 평균과 동일하다면 좋다고 합니다. 이 의미는 통계적인 평균값이 다를 경우 (즉, Kalman Filter는 통계적인 기반을 가지고 있다는 뜻 입니다) 예측이 어느 특정 방향으로 바이어스 (bias)가 발생하게 된다는 뜻 입니다. 다시, 수학적으로 (정확히는 통계학적으로) 추정 (또는 예측치)의 기대값(expected value)이 실제 시스템의 기대값과 같아야만 한다는 것 입니다.

 

두번째로, 현재 예측된 시스템의 상태와 실제 상태의 차이가 작으면 작을 수록 좋다고 합니다. 역시, 수학적으로 가능하면 가장 작은 오류 변형이 발생하는 Estimator를 찾아야 합니다.

 

물론 이런 얘기를 하는 이유가 이미 수많은 과학자들과 수학자들이 알아보기로 KF가 위의 특성을 다 따르기 때문인 것은 당연하겠지요. 하지만 여기서 KF 를 이용한다고 해서 모든 부분에 최상의 결과를 기대할 수 있는 것은 아니며 이를 위해서 시스템에 영향을 미치는 잡음이 어느 정도의 가정에 맞아 들어 가야만 합니다.

 

이전에 언급된 프로세스 잡음 (Process Noise) w와 측정 잡음 (Measurement Noise) z의 경우 우리는 이들 잡음의 평균이 0 이라고 (즉, White Noise 를 말합니다) 가정 하고 있습니다. 또한, w와 z 간에는 상호 작용(correlation)이 없어야 합니다. 즉, 어떤 시간 k에서든 w_{k}와 z_{k}는 독립적인 랜덤 변수(independent random variable) 이어야 한다는 것 입니다.

 

이제, 노이즈 코베리언스 메트릭스 (Noise Covariance Matrix)인 S_{w}와 S_{z} (Process 및 Measurement 노이즈 각각)는 다음과 같이 정의 됩니다.

 

Process noise covariance :

Measurement noise covariance :

 

 

여기서 w^{T} 와 z^{T}는 w와 z 노이즈 벡터의 트랜스포즈 (전치 - Transponse)를, E(...) 는 기대값을 의미 합니다. 이들이 어떻게 나타나는지 실예는 좀 있다가 설명하겠습니다.

 

일단 이리하여 Kalman Filter를 소개하기 위한 준비 과정을 거의 마무리 했습니다.

 

그럼 KF는 무엇 일까요? KF를 표현하는 여러가지 공식이 있지만 가장 일반적인 공식을 (사실 원문의 공식 입니다) 보면 다음과 같습니다.

 

위의 수식을 보는 순간 머리가 상당히 아플 수는 있겠습니다만 (저는 다시 머리속이 하얗게 변하드라는 ㅎ) 잠시만 참고, 위 3개의 공식을 찬찬히 봐 주시기 바랍니다. 우선 -1이 의미하는 것은 메트릭스 인버젼 (maxtrix inversion) 이며 T는 이전에 설명 드린 트랜스포(transposition) 입니다.

K 는 칼만 게인(Kalman Gain)을, P는 예측 오류 코베리언스 메트릭스(the estimation error corvariance matrix) 라고 합니다.

 

중간에 꺽어진 모자를 쓰고 있는 어디서 본 듯한 x는 상태 예측 공식 입니다. 이 공식에 우선 집중을 해 보면

앞의 

는 이전 시점에 예측된 상태 벡터 x를 A로 곱하고 현재 확인된 입력(가속도 변화 등)을 B로 곱한 결과를 더한 것으로 쉽게 예기하자면 노이즈를 제외한 선형 시스템의 상태 예측 공식 입니다. 또한, 이는 센서등의 계측이 전혀 반영되지 않은 시스템 상태 예측이 됩니다.

 

그래서 두번째 항인 아래 수식을(correction term을 어거지로 번역하면) 보정항 이라고 하며 새로 수집된 계측 자료에 의해서 얼마나 많은 보정을 예의 시스템 상태 예측에 가해야 하는지를 나타냅니다. 아래의 공식에서도 유의 하실 것은 계측 자료에서 이전의 출력 수식(measurement 역시 예측 한다는 뜻 입니다)을 뺀 값(많은 KF 관련 문서에서 이 식을 이노베이션 - Innovation - 이라고 합니다)을  칼만게인과 곱하는 부분 입니다.

 

Correction Term:

 

KF 공식에서 칼만게인 부분 만을 좀 더 주의 깊게 살펴 보면, 만일 센서의 노이즈가 큰 경우 결국 S_{z} (Measurement noise covariance)가 커지게 되고, K의 값이 작아지게 됩니다. 결과적으로 다음에 이어질 상태 예측 공식에서 새로 수집된 자료 내용에 대한 신뢰가 떨어지게 되며 시스템 상태 예측에 무게가 실리게 됩니다.

반대로, 노이즈가 작은경우, S_{z}가 작아지고, K는 커지며 다음 상태 예측 공식에서 더 많은 신뢰를 (즉, 실측 자료의 내용이 좀더 많이 반영 되는) 가져오게 됩니다.

 

마지막의 Error Covariance Matrix 의 경우는 프로세스 노이즈와 계측 노이즈, 이전에 (즉, k번째에) 계산된 Error Covariance Matrix 를 이용해서 업데이트 됩니다.

 

원문에서 별다른 스포트 라이트를 받고 있지는 못 합니다만 실제 이 메트릭스는 시스템의 상태 및 측정 오류등의 변화량등의 값들을 추적/기억하고 있습니다. 로보틱스(특히 SLAM)에서는 이 메트릭스와 상태 벡터를 새로 확인되어진 랜드마크(센서에 의해서 지표로 인지 가능한 마크)를 추가해서 전반적인 상태 변화를 추적하는데 사용되기도 됩니다.

 

예제

이제 이전에 다루던 자동차 관련 예측을 계속 진행해 보겠습니다.

 

원문 저자가 미쿡분이다 보니 피트를 단위로 사용하셔서 좀 현실적이지 않은 부분이 있습니다만 예제에서 주요 파라미터로 다음과 같은 값을 지정하고 있습니다 :

 

1. 입력 가속 : 1 foot / s^2

2. 가속 노이즈 : 0.2 feet / s^2

3. 위치 결정 노이즈 : 10 feet

4. 측정은 1초당 10회 (즉, 10Hz, T=0.1)

 

위의 오류들은 모두 1-sigma (one standard deviation) 내의 값들 입니다.

 

아래의 수식에서 바뀐 부분은 T와 관련된 부분이 실제 값으로 바뀐 것 뿐 입니다. 참고하고 있는 원문에서는 T (시간 변화율)를 0.1초로 보고 있습니다. 

 

출력 노이즈인 S_{z}의 경우 단순 스칼라 값이며 위의 파라미터를 보면 10 feet이므로 결국 100 (= 10*10 ) 이 됩니다.

S_{w}를 구하는 과정을 보죠. 상태는 위치와 속도의 2개 정보를 가지고 있습니다.

위치는 가속도에 대해서 0.005 배에 비례하고 가속 노이즈가 0.2 feet/s^2이기 때문에 위치노이즈의 편차 (variance)는 (0.005 ^2 ) * 0.2 ^ 2) = 10^-6 (10의 -6승)이 됩니다.

유사하게, 속도의 경우 가속에 대해서 0.1배 만큼 비례하며 결국 (0.1 ^2 ) * 0.2 ^ 2) = 4 *10^-4 이 됩니다.

결국, 메트릭스는 아래와 같이 표현 됩니다. 여기서 vp = pv = (0.005 * 0.2) * (0.1 * 02) = 2 *10^-5  입니다.

 

여기까지 수집된 결과들과 수식들을 아래의 문서에 도식화 하고 있는 것과 같은 무한룹에 빠지도록 프로그램을 작성하면 되겠습니다.

 

http://www.cs.unc.edu/~tracker/media/pdf/SIGGRAPH2001_CoursePack_08.pdf

 
출처 : http://blog.naver.com/hangondragon/20066836673


'Mathematical Theory' 카테고리의 다른 글

Linear Systems(선형시스템)  (0) 2009.11.18
Linear system  (0) 2009.11.18
posted by SuperMjs
2009. 11. 18. 01:40 Mathematical Theory

선형 시스템(http://en.wikipedia.org/wiki/Linear_system)이란 시스템을 모델링한 수식이 선형 연사자 (linear operator)들로 표현이 가능한 시스템을 말합니다. 실제 환경에서 이러한 선형 시스템을 찾기는 쉽지 않으며 많은 경우 비선형 시스템을 위한 EKF나 UKF등을 사용하는 경우가 많습니다만 KF는 선형 시스템의 예측을 위한 필터이니 만큼 선형 시스템을 위주로 설명하도록 하겠습니다.

KF가 추출된 신호 (signal)에서 잡음(noise)를 제거하기 위해서는 현재 모델링하려는 프로세스 (즉, 위치제어 또는 영상처리 시스템의 주요 기능)가 선형 시스템으로 기술이 가능해야 합니다. (즉, Y = aX + b와 같은 수식으로 표현이 되어야 한다는 뜻입니다) 길을 따라 주행 중인 자동차, 지구 주위를 도는 위성, 지나가는 전하 흐름에 의해서 돌아가는 모터 샤프트나 라디오 신호 전파에 사용되는 사인파 의 경우는 선형 시스템으로 근사화(approximated) 시킬 수 있습니다.

선형 시스템을 기술 할때 일반적으로 아래의 2개의 간단한 수식으로 표현 합니다.

상태 수식 (Sate Equation - 시스템의 전반적인 신호 파형을 표현 합니다. Process Model, Plant Model등으로 불립니다):


 

출력 수식 (Output Equation - 시스템 신호 중 측정 가능한 값들을 표현 합니다. Measurement Model, Sensor Model등으로 불립니다):

 

 

우선, A, B, C는 메트릭스(Matrix - 모피우스를 빨랑 찾아야 할거 같네요) 입니다. k는 시간의 index이며 x는 시스템의 상태를 나타내는 벡터(Vector)입니다. y_{k}는 센서등을 이용해서 측정된 값을 의미하며, w, z는 잡음 (에러) 입니다. 특히, w는 프로세스 잡음(Process Noise), z를 측정 잡음 (Measurement Noise)라고 합니다. x, y, w, z 는 대부분의 경우 벡터 입니다.


이 부분에서 잡음은 무시 하면 될 듯 합니다만 KF에서 가장 중요한 것이 잡음 입니다. 실제 KF의 기본적인 동작이 가능해지는 시점에 튜닝을 위해서는 이들 잡음를 나타내는 Covariance Matrix의 값들을 조절해서 KF의 감도나 응답 특성을 변경할 수 있게 됩니다. 실제 주요 튜닝 방법은 이후 다른 포스트에서 논의 하도록 하겠습니다.

 

우선, 프로세스 상태 벡터인 X의 경우 시스템의 현재 상태에 대한 모든 정보 (비행체의 위치 정보 - X, Y, Z좌표와 각도, 가속도 바이어스등)를 나타냅니다. 하지만, 중요한 것이 이들을 직접적으로 측정할 수가 없습니다. 대신, 측정 잡음 Z에 의해서 어느 정도 값이 깨어진 Y를 (즉, 센서에서 읽어들인 값들을) 측정할 수 있습니다. 이 측정된 Y를 이용해서 거꾸로 X를 계산 해 낼 수 있습니다. (단순 선형식을 이용해서 X를 계산하고 측정된 Y값을 이용해서 이를 다시 보정합니다. 이는 아래 쪽에서 좀더 자세히 설명 됩니다)

 

시스템의 상태인 X를 Y의 값을 이용하면 추정(estimate)해 낼 수 있다고는 합니다만 이는 측정 잡음 Z에 의해서 값이 변형이 된 상태이기 때문에 그대로 값을 사용할 수는 없습니다. 모든 센서에는 기본적으로 가지고 있는 오차가 있습니다. GPS의 경우 5-6개의 위성이 Fix된 상태라고 한다 하더라도 오차는 작게는 2-3미터 크게는 10-20미터까지 날 수 있습니다. 물론 Gyro, Magneto 센서나 가속도 센서 (Accelerometer)의 경우도 역시 마찬가지 오차를 가지고 있으며 Datasheet에 어느정도 기술 되어 있습니다. 하지만 정확한 튜닝을 위해서는 이값들을 조금씩 변행해야 합니다.

 

원저에서 저자는 Y를 정치가에 비유하네요. 어느정도 믿어야 하지만 (믿을 수 밖에 없지만) 모든 내용을 신뢰하지는 말아야 한다는 거죠 ^.^

 

그럼 직선으로 주행 중인 자동차의 예를 들어 보죠. 자동차의 현재 위치는 p, 속도는 v로 이동 하고 있습니다. 시스템의 입력 u는 현재 지시된 가속도 이고 출력치(측정치) 인 y는 현재 위치 입니다.  매 T 초 마다 가속도를 변경하면서 위치를 측정한다고 합시다.

이때 우리는 기본적인 물리 법칙에 의해서 속도 v가 다음의 식에 의해서 표현 된다고 할 수 있습니다:

 

 

이는 T초 후의 속도는 현재 속도에 지시된 (가령, 자동차의 가속 페달을 밟아서 속도를 올리거나 브레이크를 밟는등) 가속도에 시간 T를 곱한 값이 됩니다. 하지만 위의 식에 의해서 정확한 v_{k+1}의 값을 알수는 없습니다. 이유는 도로상에 갑작스럽게 바람이 분다던가 노면이 울퉁 불퉁 하다거나 다른 상상할수 있는 많은 이유에 의해서 속도에 변화가 발생하게 될 수 있다는 것이죠. 이때 속도에 관여한 잡음은 시간에 따라서 변화하는 랜덤변수 (Random variable) 입니다.

 

그래서, 좀더 실제에 가까운 식은 아래와 같이 기술 될 수 있습니다:

 

 

위 식에서 v~_{k}는 속도 잡음 입니다.

 

위치p 를 표현하는 공식도 다음과 같이 기술 될 수 있습니다:

 


위 식에서 p~_{k}는 위치 잡음 입니다. 

그럼 이제 우리가 표현하려는 시스템의 상태(State Vector, X)를 아래와 같이 현재 위치와 속도로 구성되어 있다고 보겠습니다 :

 

 

이제 최종적인 측정 값이 현재 위치라고 했으니 전체 시스템을 위한 선형 식은 다음과 같이 표현이 가능합니다:

 


위에서 x_{ k+1}을 p, v로 각각 Row 별로 간단한 행렬 계산을 해 보시면 이전에 언급했던 간단한 물리 공식과 같음을 아실 수 있을 겁니다. 즉, 프로세스 상태 식은 우리가 표현 하려는 프로세스의 물리식을 행렬로 표현 한 것이라고 보시면 됩니다.


y_{k} 의 경우는 측정하려는 위치에 잡음이 고려된 공식 입니다.

 

z_{k}는 센서나 측정 장비의 오류등에 의한 측정 잡음(measurement noise) 입니다. 현재 고려 하고 있는 예제에 피드백 시스템을 도입하려고 한다면 위치 p와 속도 v가 어느 정도 정확하게 측정되어야 합니다.

 

즉,  x를 정확하게 예측 해야 한다는 것이지요. 이를 위해서 칼만 필터가 사용 됩니다.

출처:
http://blog.naver.com/hangondragon/20066836673

'Mathematical Theory' 카테고리의 다른 글

Kalman Filter & Algorithm  (0) 2009.11.18
Linear system  (0) 2009.11.18
posted by SuperMjs
2009. 11. 18. 01:28 Mathematical Theory

  A linear system is a mathematical model of a system based on the use of a linear operator. Linear systems typically exhibit features and properties that are much simpler than the general, nonlinear case. As a mathematical abstraction or idealization, linear systems find important applications in automatic control theory, signal processing, andtelecommunications. For example, the propagation medium for wireless communication systems can often be modeled by linear systems.

A general deterministic system can be described by operator, H, that maps an input, x(t), as a function of t to an output, y(t), a type of black box description. Linear systems satisfy the properties of superposition and scaling. Given two valid inputs

x_1(t) \,
x_2(t) \,

as well as their respective outputs

y_1(t) = H \left \{ x_1(t) \right \}
y_2(t) = H \left \{ x_2(t) \right \}

then a linear system must satisfy

\alpha y_1(t) + \beta y_2(t) = H \left \{ \alpha x_1(t) + \beta x_2(t) \right \}

for any scalar values \alpha \, and \beta \,.

The behavior of the resulting system subjected to a complex input can be described as a sum of responses to simpler inputs. In nonlinear systems, there is no such relation. This mathematical property makes the solution of modelling equations simpler than many nonlinear systems. For time-invariant systems this is the basis of theimpulse response or the frequency response methods (see LTI system theory), which describe a general input function x(t) in terms of unit impulses or frequency components.

Typical differential equations of linear time-invariant systems are well adapted to analysis using the Laplace transform in the continuous case, and the Z-transform in thediscrete case (especially in computer implementations).

Another perspective is that solutions to linear systems comprise a system of functions which act like vectors in the geometric sense.

A common use of linear models is to describe a nonlinear system by linearization. This is usually done for mathematical convenience.


Time-varying impulse response

The time-varying impulse response h(t2,t1) of a linear system is defined as the response of the system at time t = t2 to a single impulse applied at time t = t1. In other words, if the input x(t) to a linear system is

x(t) = \delta(t-t_1) \,

where δ(t) represents the Dirac delta function, and the corresponding response y(t) of the system is

y(t) |_{t=t_2} = h(t_2,t_1) \,

then the function h(t2,t1) is the time-varying impulse response of the system.

[edit]Time-varying convolution integral

[edit]Continuous time

The output of any continuous time linear system is related to the input by the time-varying convolution integral:

 y(t) = \int_{-\infty}^{\infty}  h(t,s) x(s) ds

or, equivalently,

 y(t) = \int_{-\infty}^{\infty}  h(t,t-\tau) x(t-\tau) d \tau

where

 \tau = t - s \,

represents the lag time between the stimulus at time s and the response at time t.

[edit]Discrete time

The output of any discrete time linear system is related to the input by the time-varying convolution sum:

 y[n] = \sum_{k=-\infty}^{\infty} { h[n,k] x[k] }

or equivalently,

 y[n] = \sum_{m=-\infty}^{\infty} { h[n,n-m] x[n-m] }

where

 k = n-m \,

represents the lag time between the stimulus at time k and the response at time n.

[edit]Causality

A linear system is causal if and only if the system's time varying impulse response is identically zero whenever the time t of the response is earlier than the time s of the stimulus. In other words, for a causal system, the following condition must hold:

h(t,s) = 0\text{ for }t < s \,

[edit]See also


From Wikipedia.

'Mathematical Theory' 카테고리의 다른 글

Kalman Filter & Algorithm  (0) 2009.11.18
Linear Systems(선형시스템)  (0) 2009.11.18
posted by SuperMjs
prev 1 next