- Sungwook LEE(joker1251@naver.com)
- ALL Authority to
Sungwook LEE
- 모든 소스 코드는
c++
로 직접 작성함
- ALL Authority to
- Install Eigen3
- C++에서 Matrix 연산(
dot, product, eigen, SVD...
)을 쉽게 할 수 있도록 도와주는 오픈소스 라이브러리 - ubuntu20.04:
sudo apt install libeigen3-dev
- 윈도우용도 있으니, 참고하여 설치
- 설치 확인:
dpkg -L libeigen3-dev
- header:
#include "Eigen/Dense"
- compile flag:
g++ $(pkg-config --cflags eigen3) file.cpp
- C++에서 Matrix 연산(
Beyond the kalman filter particle filters for tracking applications
by M.S.ArulampalamA tutorial on particle filters for online nonlinear/non-Gaussian Bayesian tracking
by M.S.Arulampalam
Probabilistic Robotics
by S.ThrunParticle Filters
by P.Abbeel- Blog
- Materials
- 아래의 수식은 Bayes Filter의 수식으로, Bayes Filter는 Bayes Rule 에 Marcov Process를 결합하여 Recursive하게 풀어낸 것이다.
- Bayes Filter, Kalman Filter, Non-linear Kalman, Particle Filter 는 모두 아래의 수식을 바탕으로 전개되었다. 하여서, 아래 수식을 손으로도 써보며 반드시, 제대로 느끼는 것(?)이 중요하다.
- Modern Filter Theory의 모든 것이 Bayes Rule에서 부터 시작된다.
-
In the beginning ...
-
Bayes Filter (수식 매우 중요)
-
ILLUSTRAION OF MARKOV
-
Lecture Practice
-
Naive Bayes Filter Review
- Bayes 필터는, 모든 state에 대한 확률 적분값(Total Probability Theorem)을 구하는 것이 현실적으로 불가능하다.
- 칼만필터 등장의 이유
- 이를 실현 가능한 표현형으로 풀어낸 것이 칼만필터이다. 확률분포함수를 가우시안 확률분포로 하여 분포를 평균과 분산으로만 나타내어 식을 유도하였다.
- 모델의 분산과, 센서값의 분산, 이 둘을 이용해서 new_X를 만들어 내는 과정이 칼만필터
-
Assumption: Linear Model, Noise is follow Gaussian
- Linear여야지만, 칼만 필터의 Equation을 유도할 수 있고 (예를 들어,
A'PA+Q
) 가우시안 이여야지만 확률분포를 임의의 함수가 아닌, 평균과 분산으로만 기술할 수 있게 된다.
- Linear여야지만, 칼만 필터의 Equation을 유도할 수 있고 (예를 들어,
-
Derivation
-
ILLUSTRAION OF KALMAN
-
Lecture Practice
-
Extended Kalman Filter
- 선형화(Jacobian)을 통한 [Covariance, State] Linear Expansion
-
Defivation
-
Lecture Practice(EFK)
-
Unscented Kalman Filter
-
Lecture Practice(UKF)
-
비선형 칼만 한계
- 가우시안 노이즈를 따르지 않는 문제에서, 어떻게든 선형화(Extended), 선형평가(Unscented) 방식으로는 필터의 성능은 나오지 않는다.
- 비선형을 무조건 선형화(Relaxation)할 수 있는 것이 아니다.
- 베이즈 필터는 적분에 한계가 있었기 때문에.., 가우시안 분포를 가져와 칼만필터를 만든 것
- 칼만필터:
Parameteric Approach
: N(0, Sigma^2)
- 칼만필터:
- 다른식의 접근법:
Non Parameteric Approach
: 가우시안 함수 등을 사용하지 말고 적분해야 하는 샘플의 개수를 유한개(몬테카를로 Sampling)로 하여 적분값을 평가하자- 파티클필터 등장의 이유
-
확률필터 리뷰
-
칼만필터 접근법 한계 리뷰
- 리니어야하고, 노이즈는 가우시안 분포를 따라야 한다.
- 근데, 가우시안 분포를 따르지 않는다면?, 더 이상
$N(\mu,\sigma^2)$ 의 파라미터인$\mu$ ,$\Sigma$ 로 식을 derivation 할 수 없다. - 칼만필터의 접근법을
Parameteric Approach
라고 한다. - 가우시안 함수를 사용치 말고 샘플의 개수를 유한개로(몬테카를로 샘플링)하여 적분값을 평가하자. (
Non Parameteric Approach
)
-
파티클필터
-
ILLUSTRATION OF PARTICLE FILTER
-
STEP
-
구현의 두가지 방식
- 일반적으로 SIR을 사용함
- SIS(Sequential Importance Sampling): 파티클 하나가 웨이트 하나를 가짐으로써, 웨이트가 높은 파티클이 잘못 수렴되었을때, 추정 결과값이 이상해지는것을 막을 수 없다. (웨이트의 크기에 따라 입자 선택)
- SIR(sequential Importance Resampling): Resampling Wheel 과정을 통해 이전 스텝에서의 웨이트를 기준으로 파티클을 할당하고 초기화함으로써(할당된 파티클의 개수가 웨이트의 크기라고 볼 수 있음) 파티클을 새롭게 분포시킴으로써, 잘못된 결과값에 수렴되지않게끔 -> 일반적으로 우리가 부르는 파티클 필터 (참고(로컬라이제이션): particleLocalization.cpp)
-
Lecture Practice(Particle Filter: SIR)