-
칼만 필터(Kalman filter)의 이해-1편Autonomous Driving 2024. 1. 5. 21:30
머리속에 있는 내용을 정리도 할겸 kalman필터에대해서 적어 볼 생각이다.
처음에는 이론에대해서 설명하고 나중에는 시뮬레이션을 통해서 앞에서 설명한 이론에대해서 설명할 생각이다.
과연 할수 있을지......
let's getting started Kalman filter ~~~
시간날때마다 업데이트할 예정인데 힘들면 중간에 멈출 예정임.
kalman filter는 방위산업에서는 미사일 추적 비행기 추적에 사용되지만 자율주행에서는 차량의 추적에 사용된다.
내가 볼때 kalman filter는 아래처럼 생각하면 쉬운것 같다.
어떤 값을 smoothing하고 싶다고 했을때 우리는 아래처럼 생각할 수 있다.
기존 값 * 0.5 + 새롭게 측정한 값*0.5 = 결과 값
이런것을 apha beta filter라고 하는데
x' = apha * x + beta * z
주식에서 100일선 200일선 50일선은 완전 똑 같은 것은 아니지만 아래 처럼 작성하면 비슷한 효과를 낼 수 있다.
// 100 일선 x' = 99/100 * x + 1/100 * z // 50 일선 x' = 49/50 * x + 1/50 * z
이때 alpha beta 값을 자동으로 변경시고 싶을때 kalman 필터를 사용한다고 생각하면 이해하기 쉽다.
그러면 alpha , beta값을 어떻게 자동으로 변경할까?
이때 칼만 필터를 사용하면 된다.
그리고 사실 이개념이 더 중요한 개념인데...만일 측정값을 통해 다른 어떤 값을 알고 싶을 때 사용한다.
즉 어떤 값을 유도하고 싶을때도 칼만 필터도 사용한다. 예로 거리 값을 통해서 속도 값을 예측하고 싶을때가 예가 되겠다.
그러나 해당 개념은 복잡하고 시스템 모델에대한 이해가 되어야하므로 그냥 smoothing개념을 먼저 이해하는것이 좋을것이다.
이제 칼만 필터에 대해서 알아야하는데 자세한 내용은 아래 사이트를 읽어 보면 된다.
참조 : https://engineeringmedia.com/controlblog/the-kalman-filter
#2: The Kalman Filter — Engineering Media
This is an excerpt from an eBook on Sensor Fusion and Tracking that I wrote for Mathworks . They have graciously let me reproduce a portion of it for this blog. In this post, I’m going to introduce the Kalman filter at a high level and try to provide som
engineeringmedia.com
https://kr.mathworks.com/content/dam/mathworks/ebook/gated/multi-object-tracker-ebook.pdf
그래도 요약을 하면
Alpha beta는 K라고 하는 Optimal Kalman gain 이라는 용어를 사용해서 표현함.
시스템 모델이라는 개념이 등장하는데 이유는
측정값을 통해서 여러 값을 유추 할 수 있기 때문임.
예로 거리 값을 측정 값으로 사용하면 속도는 거리의 변화량이므로 예측 할 수 있음.
즉 속도를 예측하고 거리를 예측하는 행위를 state estimate라는 용어를 사용해서 나타냄.
그리고 이렇게 측정값을 통해서 값을 유추하는 모델을 system model이라고 함.
단 이러한 시스템 모델은 gaussian noise분포도를 따르므로 다른 노이즈 분포도는 해당모델을 사용하지 못함.
그래서 윗 글에서 제일 중요한 이미지 2개를 첨부하면 아래와 같음.
즉 Kalman filter는 Gaussian noise기반으로 실행되며 아래 수식을 통해서 측정 값을 통해서 특정 값을 유추 할 수 있다.
이렇게 요약할 수있음.
개인적으로 이해하려고 하기보다는 외우고 시뮬레이션을 통해서 칼만 필터가 어떻게 동작하는지 보는것이 이해하는데 훨씬 좋다고 생각함. 유도도 해봤지만 그렇게 도움이 되지 않았음. 중요한것은 시간이 지나면 까먹음. ㅡㅡ;
핵심은 alpha, beta를 자동으로 계산해주는 Optimal Kalman gain을 구하기 위해서 위 수식이 필요하고 위 값들을 계산해야함.
여기서 시스템 노이즈 $ Q_k $ 와 측정 노이즈 $ R_k $ 가 나오는데 Kalman gain의 다이나믹을 위 변수를 통해서 수정할 수 있음.
$ K_k = \frac{ P_k * H^T }{H*P*H^T + R} $ 수식을 보면 측정 노이즈 R값을 변경했을때 수정할때 Kalman gain에 영향을 더 많이 받음.
그러나 목적이 다르므로 시스템의 다이나믹 특성을 변경하고 싶을때는 시스템 노이즈를 변경하는것이 좋음.
노이즈를 실제와 다르게 하면 시스템이 이상하게 실행되기때문에 가상 시뮬레이션을 하면서 꼭 찾아보기를 권함.
마지막으로 이해해야할 개념은 Innovation 과 Innovation covariance임.
이노베이션 (Innovation) 정의 :
이노베이션은 예측값과 실제 측정값 사이의 차이를 나타냄.
즉 Innovation = 측정값(measure) − 예측값(estimate)
이노베이션 공분산 (Innovation Covariance) 정의 :
예측값과 측정값 차이의 공분산으로 시스템 상태의 불확실성을 나타냄.
측정 공분산은 $S = H_k*P_{k|k-1}*H_{k}^T $
$ E[(Innovation)(Innovation)^T] = E[(측정값-예측값)(측정값-예측값)^T] = R $ 으로
나중에 측정 오차에대해서 로직을 구현할때 예로 연관할때 해당 값을 유용하게 사용할 일이 많이 있음.
다시 요약하면 Kalman Filter는 어떤 변수를 smoothing하고 싶을때 혹은 측정 변수로 어떤 변수를 예측하고 싶을때 사용함.
위 수식을 이용해서 Kalman Filter를 구현하면됨.
위 수식에서 Optimal Kalman Gain이 자동으로 계산되는 alpha beta weight 같은 개념임. 거리값을 가지고 속도를 예측하는
기능도 있는데 이건 2편 시스템 모델 설명 편에서 다음에 설명함.
Optimal Kalman Gain을 Control 하기 위해서는 시스템 노이즈 $Q_k$ 와 측정 노이즈 $P_k$ 를 가지고 Control할 수 있음.
Kalman Filter에 Innovation Covariance라는 측정 공분산 개념이 나오는데 중요한 개념이므로 이해필요.
나중에 측정 오차에대한 로직을 구현할 때 사용함.
사실 위 개념을 이해해도 시스템 모델에대한 이해와 선형 칼만 필터 비선형 칼만 필터에대한 이해가 또 되어야한다.
2편에서는 해당 이야기를 다루려고 함.
반응형'Autonomous Driving' 카테고리의 다른 글
칼만 필터 Kalmanfilter 의 이해-2편 (0) 2024.01.27 칼만 필터(Kalman filter)의 이해-3편(Interacting multiple mode Kalman Filter) (1) 2024.01.13 Multi-task Learning with Localization Ambiguity Suppression for Occupancy Prediction by 42 dot team (1) 2023.07.09 VERY DEEP CONVOLUTIONAL NETWORKSFOR LARGE-SCALE IMAGE RECOGNITION 논문 번역 (0) 2023.07.05 CVPR23 - Tesla (0) 2023.06.29