본문 바로가기
Control system engineering

[제어시스템공학-7] Kalman Filter(칼만필터) 구현 - 중간예제

by 노마드공학자 2021. 1. 29.

[제어시스템공학-1] Average Filter(평균필터) https://limitsinx.tistory.com/69

[제어시스템공학-2] Moving Average Filter(이동평균필터) https://limitsinx.tistory.com/70

[제어시스템공학-3] Low Pass Filter(저주파  통과필터) https://limitsinx.tistory.com/71

[제어시스템공학-4] Kalman Filter(칼만필터) 개념정리(1) https://limitsinx.tistory.com/72

[제어시스템공학-5] Kalman Filter(칼만필터) 개념정리(2) https://limitsinx.tistory.com/73

[제어시스템공학-6] Kalman Filter(칼만필터) 구현 - 쉬운예제 https://limitsinx.tistory.com/74

 

※이 전글에서 정리한 코드/개념은 재설명하지 않으므로, 참고부탁드립니다

※해당 글은 PC에서 보기에 최적화 되어있습니다.


 

이전 글은 간단하게 위와 같이 10을 기준으로 +-5의 random noise를 주고 Kalman Filter로 잘 쫓아가는지 확인해보는 코드를 구현해보았습니다.

 

Flat한 데이터에 노이즈만 섞여있는 값은 추종하기가 정말쉽죠, Average Filter에서도 정리를 했었구요

 

하지만, 실제 세상에 이런 시스템은 거의 없죠. 노이즈가 아니더라도 실제값도 대부분은 끊임없이 움직입니다.

 

 

따라서, 이번에는 이런 input을 주고 잘따라가는지를 확인해보고자 합니다.

y=x로 증가하는 그래프에 Noise를 섞어보았는데요,

 

칼만필터로 얼마 잘 추종하는지 그려보겠습니다.

 

 

칼만필터로 추종시 꽤나 잘따라가는 모습을 보여주고 있습니다.

 

노이즈의 크기가 작아서 잘따라가는것처럼 보일수(?)있으니, 노이즈를 무지막지하게

이 그림대비 50배로 줘보겠습니다!

 

 

정말 Noise가 무지막지한데요

이정도면 Noise보다 원래값이 더 의미가 없어서 (SNR이 너무 심각하게 안좋아도) 너무 난잡한 그림인데도

 

칼만필터는 초반부에 약간 해매다가 곧 잘 따라가는 모습을 보여주고있습니다!

이정도 Noise를 주어도 칼만필터는 강력한 퍼포먼스를 보여주는만큼 선형시스템에서는 최적화된 제어기법입니다.


※이 전글에서 정리한 코드/개념은 재설명하지 않으므로, 참고부탁드립니다

 

[코드분석-1]

 

이제까지 연재하던 글에서 돌려오던 코드와 완벽하게 동일합니다.

센싱값을 getvolt_moving이라는 함수로 바꾸어 주었을 뿐입니다.

 

 

[코드분석-2]

 

[코드분석-3]

w= 250 * randn(1,1)부분은 Noise를 임의로 정해준 부분으로써

제일 처음 그린 그림은 5로 시작했고, Noise를 50배 증폭하여 250으로 적어준 모습입니다.


Summary

 

fix된값에 noise를 주거나, y=x와 같은 선형그래프에 noise를 주어 칼만필터가 얼마나 잘추종해가는지 정리해보았습니다.

 

다음글은, 복잡한 Input data와 noise를 주어도 Kalman filter의 퍼포먼스가 훌륭한지 코드로 구현해보겠습니다.

 

 

※ 참고

"칼만필터는 어렵지 않아" (2019,김성필)

댓글