source

자이로스코프와 가속도계 데이터 결합

factcode 2022. 8. 28. 09:30
반응형

자이로스코프와 가속도계 데이터 결합

저는 레고 마인드스톰의 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.comWiiMote 필터링에 Kalman 필터를 사용하는 것에 대한 기사를 게재했습니다.

기사 말미에 C++ 소스 코드에 대한 링크가 있습니다.

언급URL : https://stackoverflow.com/questions/1586658/combine-gyroscope-and-accelerometer-data

반응형