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 너를위한노래
Quadrotor20132013. 3. 13. 18:01

 

원래 네이버 블로그에 있는 글을 모두 옮겨오려고 했지만.. 굳이 그럴 필요 없을거 같아서 이 글에 제목과 링크만 올려두겠습니다.

 

네이버 블로그 주요 포스팅:

쿼드콥터 초기 계획안 

재료, 부품 구매 현황

MPU-6050 3축 자이로 + 3축 가속도 센서 구매 

[스크랩]오일러각 

[스크랩] I2C (Inter-Integrated Circuit) 버스 

[스크랩]칼만 필터(Kalman Filter) - Part 1 : Linear Systems | Robotics 

[스크랩]칼만 필터(Kalman Filter) - Part 2 : Kalman Filter & Algorithm | Robotics 

 

 

현재는 가속도, 자이로 센서 값을 이용해서 칼만필터로 융합한 다음, Q행렬, H행렬을 조정하는 단계입니다.

 

 

노랑, 자주 : 가속도

빨강, 초록 : 가속도 + 자이로 using 칼만필터

 

여러가지 상황에 대해 테스트하고 있는데 쿼드콥터 진동이 장난이 아니더라구요.. ㅠ

 

어느 정도는 칼만필터로 보정할 수 있겠거니~ 했는데 이건 너무 심해서 기구적으로 손을 보고 있습니다.

 

그래서 스펀지로도 방진 해보고 고무줄로 진동을 줄여보고자 노력했지만 별로 효과는 없더라구요..

 

   

 

 RPM은 모두 동일

   

 스펀지 장착

 고무줄 장치 장착

 

위의 테스트에서는 RPM이 낮은데 높게하면 +90도~-90도 화이트노이즈수준으로 심하게 감지되더라구요 ㅠ

모터랑 센서가 싸구려라 그런가... ㅠ

 

아예 모터에서 발생하는 진동을 제거하는 방향으로도 해봐야겠습니다.

 

 

안드로이드 소스파일(accel gyro Kalman Filter, PWM generate):

SimpleAnalogInputActivity.java

GraphView.java

Matrix.java

SnowCube.java

SnowRenderer.java

 

 

 

 

Posted by 너를위한노래