Quadrotor20132013. 3. 18. 23:13

간만에 연구실에 놀러오신 선배한테 어떻게하면 진동을 잡을 수 있을까요~ 하고 진동때문에 기울기가 제대로 나오지 않는 그래프를 보여드렸더니, 칼만필터 말고 진동에 대해 강한 필터를 사용하는게 어떠냐고 그러시더라구요

 

그러고 집에와서 곰곰이 생각해보니 진동도 엄연한 물리 작용이더라구요. 무슨 말이냐면, 진동을 감지하기 위해 자이로, 가속도센서를 사용한다 이겁니다.

 

스마트폰이 대표적인 사례겠네요. 흔들어서 잠금해제하기, 만보기 어플 등등 진동을 응용해서 만든 어플이잖아요

 

그렇게 생각하니까 진동도 감지하기 위해 만든 가속도, 자이로 센서인데 주위에다 진동 방지 장치를 하는게 무슨 소용인가 싶더라구요(물론 어느정도는 감소하긴 하지만 한계가.. ㅠ)

 

그래서!

 

소프트웨어적으로 접근해보기로 했습니다.

 

아주 간단히 이동평균 필터를 구현하려다가 별로 효과가 없을거 같아서 저역통과필터(Low Pass Filter)를 구현해 봤습니다.

 

구현은 이동평균필터보다 간단해요.

 

(weight) : 가중치

(measured) : 측정치

(value) : 현재 값

(pre_value) : 이전 값

 

 

 

 

n이 2인 이동평균필터는 위 식에 w만 0.5입니다.  라고 생각했다면 오산입니다.

 

은 여태까지 계산했던 모든 값에 영향을 받아요.

 

만큼 영향을 주고

 

만큼 영향을 줬으니까 만큼 영향을 주고

 

이런식으로 계속 누적되어 가죠 (제곱으로)

 

는 상황에 맞게 조절해야 합니다. 위 식에서 가 크면 클수록 측정치에 영향을 덜 받게 되겠죠

 

주절주절 설명을 길게 했는데, 결론은

 

   

 w = 0.3

 w = 0.7

초록, 빨강 : 필터 통과 전      자주, 노랑 : 필터 통과 후 

 

잘 보이시나요? 왼쪽에 비해 오른쪽이 더 괜찮은 결과가 나왔습니다. 이 결과를 가지고 칼만필터 통과한건 다음 포스팅에... ㅋ

 

 

그리고 혹시나 해서 제가 만든 ㅋㅋ 이름은 거창한 미분필터.. 검색은 안해봤지만 진짜 있다면 만든이한테 미안요 ㅋ

 

이름은 어렵게 미분이라고 써놨지만 실제로는 차(Difference)필터가 더 맞겠네요.

 

"바로 직전 값과 현재 측정치가 d이하라면 현재 측정치를 무시해라" 이거라면 위의 그림처럼 순간적으로 팍 튀는건 무시할 수 있지 않을까 해서 만들어 봤습니다.

 

 

 

 

결과는... 실패..ㅋㅋ 현재 측정치를 무시하니까 이상한 값에서 움직이질 않네요.. 혹시 d를 조정하면 좀 더 나은 결과가 나올까요? ㅋㅋ

 

일단 이 두가지 기본적인 필터 중 바로 쓸 수 있는건 저역통과필터네요. 다음 포스팅에 LPT + kalman으로 돌아오겠습니다~!

 

d도 한번 조절해봐야겠네요 지금 보니 가능성이 ...



------------------------------------------ 2013.08.20 추가

위의 미분필터라고 되어있는 결과는 코딩을 잘못한 결과입니다. 착오 없으시길 바랍니다 ㅠ

 


--------------------------------------------------------2014.06.02 추가

1차 저역 통과 필터(LPF)는 지수 가중 이동 평균 필터라고도 합니다~


ps. 지금보니까 미분필터는 아무짝에서 쓸모없는 실패작이네요.. 그래도 지우는것보단 나을거같아서 냅두고 추가 코멘트만 달아놓습니다.

 

 

 

 


Posted by 너를위한노래