Quadrotor20132013. 3. 20. 19:04

 

저번 포스팅에서 못다한 1차 저역 통과 필터 후 칼만필터 거친 포스팅을 해보겠습니다.

 

   
 칼만 필터만 사용  저역 통과 필터만 사용

 

합치면..!!

     

 
 저역 통과 필터 + 칼만필터

 

그냥 칼만필터와 차이가 없죠?? 저도 실망했었습니다 ㅠ 그래도 혹시나 하는 마음에 모터를 작동시켜서 테스트 해봤는데요

 

 

 

 정지한 상태

 

위 그림은 기체를 움직이지 않고 측정한 결과입니다.. 0에서 요동치는 노란색 보이시나요? 저러면 안돼요 ㅠㅠ

 

근데 스치는 생각에 '혹시 정지하지 않고 움직이면 어떨까? 어떤 패턴이라도 나오지 않을까?" 해서 움직여 봤는데 왠걸!

 
 칼만필터만 통한 결과

 

짠~!  그냥 손으로 최대한 일정하게 기울였다 세웠다 한건데요 어느정도 패턴이 보입니다!

 

 

 저역통과필터 + 칼만필터 결과

 

필터 두개를 켜고 측정해봤는데!!

 

생각보다 깔끔하네요!!

 

정지했을 때는 0에 수렴하진 않지만 움직이니까 어느정도 봐줄 만 하네요

 

근데 이게 사람 눈에는 그럴듯 해 보이는데 피드백으로서는 유효할진 모르겠습니다.

 

그래도 가능성이 보이니까!! 이대로 한번 자세추정 해서 제어 해보려고 합니다. 안돼면 그때 다시 문제점을 진단하도록 하구요 ㅋ

 

이번 시도는 수확이 있어서 다행이네요~

 

 

아.. 다 쓰고 보니까 가속도센서에 대해서만 LPF하고 자이로센서는 하질 않았네요??

 

음.. 더 좋아질까요?! 다음 포스팅때는 자이로센서도 같이 필터링해서 찾아오겠습니다!

 

 

----------------------------------------------------------------

여기다 추가할게요

 

자이로도 LPFing해봤는데 성능이 오히려 안좋게 나타나네요ㅋㅋ

 

왜지.. 코딩이 잘못됬었나...

 

 

 

 

 

 

 

Posted by 너를위한노래
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 너를위한노래