J 창고

[Quad Copter] 상보필터, Kalman 필터, MPU6050 본문

컴퓨터/Project

[Quad Copter] 상보필터, Kalman 필터, MPU6050

JSFamily 2014. 5. 8. 16:27







검색하다 나온 라이브러리를 사용하여 출력해본 출력값.


X축 변수를 출력했는데 모션은 Y축에 대해서 나오네 ㄷㄷㄷ;;;;


뭐 일단 배열만 바꿔주면 제대로 나오긴 하는데 중요한 것은 이게 아니고


빨간색은 가속도센서


파란색은 가속도 센서와 자이로 병합 후 상보필터 적용


초록색은 가속도 센서와 자이로 병합 후 칼만필터 적용



위에 그래프를 보면 나오지만


반응은 가속도 센서가 가장 빠르지만 미세한 진동에 취약하고


파란색 상보필터는 가속도보다 늦어지지만 깔끔하게 출력되고


초록색 칼만필터는 상보필터보다도 출력이 늦지만 더욱 깔끔한 파형을 출력해 준다.




칼만필터 너무 늦어지는데;;;


그리고 칼만필터가 연산이 많아서 시스템 딜레이에 영향을 많이 끼친다는 얘기가...



링크


MPU6050 소스 해석


playground







그러다 찾은 다른 방식


MPU6050에 DMP(Digital Motion Processing™) 기능을 사용해서


센서 내에서 연산과정을 거친 후 각도가 출력된다는 방식인 것 같은데


링크1  링크2 


분석을 해볼 필요가 있음.







기타 다른 정보 링크


상보필터 칼만필터


mpu6050-1

mpu6050-2

mpu6050-3

mpu6050-4

mpu6050-5

mpu6050-6

mpu6050-7

mpu6050-8

mpu6050-9

mpu6050-10


i2c.ino







====================================================================== Update 14.05.21




모터를 가동하지 않고 센싱하는 것은 부드럽게 나오지만....


http://wjs890204.tistory.com/674


처럼 프로펠러 달아서 모터를 돌리니....


가속도는 뭐 예상했던 것이지만...


상보필터도 만만치 않게 진동하네....



그래서 어찌할까 고민하다가


MPU6050에 있는 DMP 기능이 있길레 봤더니


아두이노에서 Roll, Pitch, Yaw를 계산하는게 아니라


MPU6050에서 계산해서 FIFO Buffer에 저장하고


아두이노에서는 FIFO Buffer에서 읽어들이는 방식인 것 같음....



암튼 MPU6050.h 헤더파일을 열어서 잘 보면


내부 DLPF, Sampling Rate 등등 설정할 수 있기에


그것들을 만져가면서 진동에 덜 영향 받는 방식으로 만들었지만...




Sample Rate가 너무 빠르면 이상한 값들이 튀어나오길레 


조금식 늦추다가 83hz(약 12ms) 정도 까지 늦췄다...



그러면 이상한 값들은 나오지 않지만...  미묘하게 느린 것 같고...


아직도 씨름 중....










Comments