드론 쿼드콥터

Pixhawk 진동 측정

하늘이푸른오늘 2016. 12. 24. 18:35

이 글은 진동 수준을 측정하고, 수용가능한지 확인하는 방법에 관한 글이다.

개요

비행콘트롤러는 진동에 민감하다. 가속도계가 기체의 위치를 측정할 때 사용되는데, (기압계 및 GPS 도 함께) 진동이 크게 되면 정확한 위치를 기반으로 하는 모드의 성능이 떨어지게 된다. 진동은 모든 종류의 기체에 영향을 미치지만, 그중에서도 Copter가 가장 심각하게 발생한다. (특히 AltHold, Loiter, Guided, Position, Auto 등의 모드에 영향을 많이 미친다.)

여기에 설명하는 내용은 진동 수준을 측정하는 방법이다. 만약 허용범위를 초과한다면, 최초설정(First Time Set-up)의 진동 감쇠 방법(Vibration Damping)을 참고하라.

Copter 3.3/Plane 3.4 (이후 버전)

참고 : 여기에 있는 내용은 Copter-3.3, Plane 3.4부터 적용된다. 이 글을 쓰는 당시 Rover는 (Rover 2.5)변화가 없다. 

  • 적어도 몇 분정도 평상적인 방법으로 비행을 수행하고(즉, 특별히 부드럽게 호버링하는 게 아님), dataflash logs를 다운로드 받는다.
  • Mission Planner 또는 기타 지상국을 사용하여 VIBE 메시지의 VibeX, VibeY, VibeZ 값을 그래프로 그린다. 이렇게 하면 primary 가속도계 출력에 대한 표준편차가 m/s/s 으로 표시된다. 아래 그림은 3DR IRIS에서 얻은 결과로, 일반적으로 15 m/s/s 이고 가끔 30 m/s/s까지 뛰는 것을 볼 수 있다. 최대 허용값은 60 m/s/s 이하로 보인다.
  • Clip0, Clip1, Clip2 값을 그래프로 그려본다. (이들은 가속도계가 최대한계(16G) 에 도달할 때마다 증가함) 이들은 전체 비행시간동안 0이 되어야 하지만, 낮은 값(100 이하)이면 문제 없다. (특히 착륙시 발생했다면 전혀 문제가 아니다.) 로그 전체에 걸쳐 규칙적으로 증가한다면 진동 문제가 심각하다는 것으로 반드시 고쳐야 한다.

아래는 진동이 심각하여 위치 예측에 문제가 발생한 기체의 예이다.

진동 수준을 계산하는 알고리듬은 AP_InertialSensor.cpp 의 calc_vibration_and_clipping() 함수를 보면 된다. 간단하게 말하여, 다음과 같이 가속도계 값의 표준편차를 계산하는 것이다.

  • primary IMU로부터 원시 x,y,z 가속도계 값을 가져온다.
  • 원시값에서 5hz의 high-pass 필터를 적용하여, 기체의 움직임을 제거하고, x,y,z 축에 대하여 "accel_vibe_floor" 를 생성한다.
  • 새로운 가속도값과 accel_vibe_floor 간의 차를 계산한다.
  • 차의 제곱을 계산하고, 2hZ로 필터링한 후, x,y,z에 대해 각각 제곱근을 계산한다. 이 최종 세값이 VIBE의 VibeX, VibeY, VibeZ에 나타난 값이다.

이전 펌웨어 버전의 경우

(생략)

===

원문 : http://ardupilot.org/copter/docs/common-measuring-vibration.html