자이로스코프와 가속도계 데이터 결합
저는 레고 마인드스톰의 NXT 시스템을 사용하여 균형 잡는 로봇을 만들고 있습니다.저는 HiTechnic의 2개의 센서를 사용하고 있습니다.첫 번째는 가속도계이고 두 번째는 자이로스코프입니다.두 센서에서 노이즈를 성공적으로 걸러내고 -90도에서 90도 사이의 각도로 유도했습니다. 0도는 완벽하게 균형을 잡습니다.
다음 과제는 두 센서 값을 결합하여 자이로스코프의 시간 경과에 따른 드리프트를 보정하는 것입니다.다음은 자이로스코프로부터의 드리프트를 보여주기 위해 실제 데이터로 작성한 그래프입니다.
제가 지금까지 본 것 중 가장 일반적으로 사용되는 방법은 Kalman 필터를 사용하는 것입니다.하지만 저는 미적분 전문가도 아니고 수학 기호도 잘 모르지만 소스코드 수학은 잘 알고 있습니다.
저는 RobotC(다른 C 파생상품과 마찬가지로)를 사용하고 있는데, C에서 이것을 실행하는 방법을 예를 들어 주시면 감사하겠습니다.
도와주셔서 감사합니다!
솔루션 결과:
네, 케르스니가 보완 필터를 소개해줘서 제 문제를 해결했어요.다음은 결과를 보여 주는 그래프입니다.
결과 #1
결과 #2
보시다시피 필터는 자이로스코프 드리프트를 보정하여 두 신호를 하나의 부드러운 신호로 결합합니다.
편집: 파손된 이미지를 수정하고 있었기 때문에 이 데이터를 생성하는 데 사용한 리그를 보여주는 것이 재미있다고 생각했습니다.
Kalman Filters는 모두 훌륭하지만, 저는 Complementary Filters를 구현하기가 훨씬 쉽고, 비슷한 결과를 얻을 수 있는 결과는 비슷합니다.보완 필터를 코딩하기 위해 찾은 최고의 문서는 이 Wiki(센서를 엔지니어링 유닛으로 변환하는 방법에 대한 이 문서와 함께)와 이 페이지의 zip 파일에 있는 PDF(기술 문서 아래 zip 파일 이름은 filter.pdf라고 생각합니다)입니다.
PS. Kalman 필터에 걸려 있는 경우 Arduino를 구현하기 위한 C-syntax 코드입니다.
Gamasutra.com는 WiiMote 필터링에 Kalman 필터를 사용하는 것에 대한 기사를 게재했습니다.
기사 말미에 C++ 소스 코드에 대한 링크가 있습니다.
언급URL : https://stackoverflow.com/questions/1586658/combine-gyroscope-and-accelerometer-data
'source' 카테고리의 다른 글
사용 가능한 포트를 찾는 방법 (0) | 2022.08.28 |
---|---|
Bootstrap Vue - 메시지박스 확인 모드를 타임아웃할 수 있는 방법이 있습니까? (0) | 2022.08.28 |
vue.filename: 액션에서 컴포넌트 데이터에 액세스하는 방법 (0) | 2022.08.28 |
VueJ가 새로운 개체를 어레이에 푸시하여 데이터가 반응하지 않음 (0) | 2022.08.28 |
Vue.js 2: 데이터 개체에서 속성 삭제 (0) | 2022.08.28 |