[PX4 튜닝 시리즈 2] 숨은 진동 잡기와 필터 튜닝(Filter Tuning): 제어 지연과 노이즈의 완벽한 타협점 찾기

항공우주공학과 자율비행 드론을 연구하시는 대학생, 대학원생, 그리고 연구원 여러분, 다시 만나게 되어 반갑습니다!

지난 [시리즈 1]에서는 고품질 프레임을 사용하고 모터 선을 AUX 핀으로 옮겨 제어 지연(Latency)을 물리적으로 최소화하는 하드웨어 점검 과정을 마쳤습니다. 또한, 정밀한 데이터 분석을 위해 고주파 로깅 프로필(SDLOG_PROFILE)을 활성화해 두었죠.

오늘은 본격적으로 소프트웨어 영역으로 넘어가, 기체의 두뇌인 비행 제어기(FC) 내부에서 이루어지는 **’필터 튜닝(Filter Tuning)’**에 대해 알아보겠습니다. 아무리 하드웨어를 단단하게 조립해도, 고속으로 회전하는 모터와 프로펠러는 필연적으로 미세한 진동(노이즈)을 발생시킵니다. 이 노이즈가 IMU(관성 측정 장치) 센서를 통해 제어기로 들어가면 모터가 불규칙하게 떨리거나 과열되며, 심하면 기체가 추락할 수도 있습니다.

그렇다면 노이즈를 전부 걸러내면 되지 않을까요? 안타깝게도 **필터를 강하게 걸수록 제어 지연(Latency)이 크게 증가하여 비행 성능이 떨어지는 치명적인 트레이드오프(Trade-off)**가 발생합니다. 따라서 이번 글에서는 비행 로그를 직접 분석하며 노이즈는 잡으면서도 지연 시간은 최소화하는 ‘최적의 타협점’을 찾는 방법을 친절하게 안내해 드리겠습니다.


1. 필터 튜닝 전 필수 준비: ‘언더튜닝(Undertuning)’과 테스트 비행

필터 튜닝을 시작하기 전, 반드시 기체의 PID 게인(특히 PD 게인)을 의도적으로 낮게 설정하는 **언더튜닝(Undertuning)**을 해야 합니다. 만약 제어기의 P나 D 게인이 너무 높게 설정되어 있다면, 제어기 자체가 유발하는 발진(Oscillation) 현상이 로그 상에 진동 노이즈로 기록될 수 있기 때문입니다. 기본 게인값이 충분히 낮다면 그대로 진행하셔도 좋습니다.

1-1. 데이터를 수집하기 위한 30초 테스트 비행

로그 분석을 위해서는 올바른 비행 데이터를 수집해야 합니다. 테스트 비행은 다음과 같은 절차로 진행합니다.

  1. 안전 모드 비행: 안정화 모드(Stabilized mode)나 고도 모드(Altitude mode)에서 이륙하여 호버링합니다.
  2. 외란 입력: 조종기의 롤(Roll)과 피치(Pitch) 스틱을 모든 방향으로 조금씩 튕기듯 움직여 기체에 스텝 입력(Step-input)을 줍니다.
  3. 스로틀 변화: 스로틀을 일시적으로 높여 모터 회전수가 변할 때 진동이 어떻게 변하는지 확인합니다.
  4. 짧고 굵게 비행하기: 이 모든 과정은 약 20~30초면 충분합니다. 각기 다른 필터 파라미터를 테스트할 때는 반드시 중간에 착륙하여 시동을 끄고(Disarm) 다시 시동을 걸어 개별적인 로그 파일이 생성되도록 하십시오.

실제 국내 연구팀인 ‘QUAD Drone Lab’의 비행 테스트 사례를 보면, 직진 비행과 원주(회전) 비행을 골고루 수행하며 롤과 피치 축의 데이터를 꼼꼼하게 수집하는 것을 확인할 수 있습니다.

재생

2. 비행 로그 분석: 보이지 않는 진동의 발견

비행을 마쳤다면 FC의 마이크로 SD 카드에서 .ulg 로그 파일을 추출하여 Flight Review 웹사이트에 업로드합니다. 여기서 우리가 가장 주의 깊게 봐야 할 그래프는 바로 ‘Actuator Controls FFT’ (액추에이터 제어 고속 푸리에 변환) 플롯입니다.

앞서 언급한 ‘QUAD Drone Lab’의 사례를 볼까요? 연구원들이 조종기로 쿼드콥터를 수동 비행할 때, 육안으로는 기체가 매우 안정적으로 호버링했고 조종 감도도 훌륭했다고 합니다. 하지만 비행 후 로그를 분석해 보니 놀라운 결과가 나타났습니다. 눈에 보이지 않던 **60~80Hz 대역에서 강력한 진동 피크(Spike)**가 IMU 센서에 고스란히 들어오고 있었던 것입니다. 이 대역의 노이즈는 주로 프로펠러나 모터의 회전에서 기인합니다.

이러한 로그를 확인했다면, 필터 튜닝 이전에 반드시 모터 마운트 쪽 프레임 유격을 꽉 조여주는 등 물리적인 하드웨어 조치를 먼저 취해야 합니다. 심각한 진동을 소프트웨어 필터만으로 고치려 해서는 절대 안 됩니다. 하드웨어를 단단히 잡았다면, 이제 남아있는 미세한 잔여 노이즈를 소프트웨어 필터로 깎아낼 차례입니다.


3. 저대역 통과 필터(Low-pass Filter) 튜닝 가이드

저대역 통과 필터는 설정한 컷오프(Cutoff) 주파수보다 낮은 주파수(실제 기체의 움직임)는 통과시키고, 높은 주파수(노이즈)는 걸러내는 역할을 합니다.

우리가 목표로 하는 것은 제어 지연을 줄이기 위해 이 컷오프 주파수를 최대한 높이는 것입니다. PX4의 기본 설정은 다양한 기체에서 작동하도록 매우 보수적(낮게)으로 설정되어 있으므로, 연구용 드론의 성능을 끌어올리기 위해서는 이 값을 튜닝해야 합니다.

IMU_GYRO_CUTOFF 파라미터를 올릴 때 지연 시간은 다음과 같이 대폭 감소합니다.

  • 30Hz (기본값): 약 8.0ms 지연
  • 60Hz: 약 3.8ms 지연
  • 120Hz: 약 1.9ms 지연

단, 주파수를 너무 높이면 모터로 노이즈가 유입되어 모터가 무작위로 떨리거나(Twitch) 과열되고 비행 시간이 감소합니다. 따라서 다음과 같은 순서로 조심스럽게 튜닝해야 합니다.

3-1. 자이로 필터 (IMU_GYRO_CUTOFF) 튜닝 절차

  1. 먼저 D-term 필터(IMU_DGYRO_CUTOFF)를 안전한 값인 30Hz로 고정해 둡니다.
  2. IMU_GYRO_CUTOFF 값을 기본 30Hz에서 10Hz 단위로 조심스럽게 올립니다 (또는 기체가 크지 않다면 100Hz부터 시작해 볼 수도 있습니다).
  3. 짧은 테스트 비행 후 로그의 FFT 플롯을 확인합니다.
  4. 60Hz 이상의 대역에서 노이즈 레벨이 눈에 띄게 증가하기 직전의 값을 최종 컷오프 주파수로 설정합니다.

3-2. D-term 필터 (IMU_DGYRO_CUTOFF) 튜닝 절차

PID 제어기 중 미분(Derivative)을 담당하는 D-term은 노이즈를 증폭시키는 성질이 있어 노이즈에 가장 취약합니다. 따라서 PX4는 D-term을 위한 별도의 저대역 통과 필터를 제공합니다. 자이로 필터 세팅이 끝났다면, 동일한 방법으로 IMU_DGYRO_CUTOFF 값을 올려가며 FFT 플롯을 비교합니다.

  • 예시: 40Hz, 70Hz, 90Hz로 비행해 본 결과, 90Hz에서 롤(Roll) 축의 전반적인 노이즈가 솟아오른다면, 안전한 설정값인 70Hz로 낮추어 확정합니다.
  • 주의: IMU_GYRO_CUTOFFIMU_DGYRO_CUTOFF 값의 차이가 너무 크면(예: Gyro=80, D=15) 위상 차이로 인해 제어 성능에 악영향을 줄 수 있으므로 적절한 밸런스를 유지해야 합니다.

4. 노치 필터 (Notch Filter) 적용하기: 특정 노이즈 저격수

저대역 통과 필터(LPF)가 특정 주파수 ‘이상의 모든 영역’을 깎아낸다면, **노치 필터(Notch Filter)**는 앞서 ‘QUAD Drone Lab’ 사례에서 발견된 60~80Hz와 같이 ‘특정 주파수 대역의 좁은 노이즈(Spike)만’을 정밀하게 타격하여 제거하는 필터입니다.

만약 노치 필터가 없다면, 저 뾰족한 노이즈 하나를 잡기 위해 저대역 통과 필터의 컷오프 주파수를 대폭 낮춰야 하고, 결과적으로 기체 전체의 제어 지연 시간(Phase lag)이 끔찍하게 길어지게 됩니다.

4-1. 정적 노치 필터 (Static Notch Filter) 설정 예제

비행 로그의 FFT 플롯을 보고 눈에 띄게 솟아오른 특정 주파수가 있다면, 최대 2개까지 정적 노치 필터를 설정할 수 있습니다. 예를 들어 중심 주파수가 70Hz이고 대역폭이 20Hz(즉, 60~80Hz 대역)인 노이즈를 제거하려면 QGroundControl의 파라미터(Parameters) 메뉴에서 다음과 같이 설정합니다.

Bash
# 예제: 첫 번째 정적 노치 필터 파라미터 설정
IMU_GYRO_NF0_FRQ = 70   # 필터가 타격할 중심 주파수 (Hz)
IMU_GYRO_NF0_BW = 20    # 필터가 커버할 대역폭 (Hz)

이 필터들은 서로 독립적으로 작동하므로, 저대역 통과 필터를 튜닝하기 전에 순서에 상관없이 설정해도 무방합니다.

4-2. 동적 노치 필터 (Dynamic Notch Filter)

고급 연구를 진행하시는 분들이라면 비행 중 모터 회전수(RPM)가 변함에 따라 진동 주파수도 이동한다는 사실을 아실 겁니다. PX4는 ESC의 실시간 RPM 텔레메트리 피드백(DShot 등)이나 기체 탑재 FFT 분석을 이용해 노치 필터가 진동 주파수를 실시간으로 따라가며 제거하는 동적 노치 필터 기능도 제공합니다. 이를 활성화하려면 IMU_GYRO_DNF_EN 파라미터를 설정(0: ESC RPM, 1: Onboard FFT)하면 됩니다.


5. 추가 팁 및 주의사항

  • 기체 크기에 따른 타협: FPV 레이싱 드론은 절대적인 최소 지연 시간이 필요하므로 자이로 컷오프를 120Hz 근처까지 극한으로 올리지만, 카메라를 탑재한 대형 촬영용 기체나 연구용 드론은 지연 시간에 상대적으로 덜 민감하므로 자이로 컷오프를 약 80Hz 수준으로 두는 것이 합리적일 수 있습니다.
  • 모터 온도 체크 필수: 컷오프 주파수를 높여 튜닝하는 동안에는 비행 시간을 20~30초 이내로 제한하고, 착륙 후 모터를 직접 만져보아 온도가 정상인지, 과열되지 않았는지 반드시 확인해야 합니다.

마치며

수고하셨습니다! 오늘 우리는 비행 로그를 통해 숨겨진 노이즈를 찾아내고, 제어 지연 시간을 줄이면서도 모터로 흘러 들어가는 노이즈를 완벽하게 차단하는 필터 튜닝을 성공적으로 마쳤습니다. 하드웨어 점검과 필터 튜닝이 마무리된 지금, 여러분의 드론은 이제 어떠한 노이즈의 방해도 받지 않고 제어기의 명령에 즉각적으로 반응할 수 있는 완벽한 신체적 조건을 갖추게 되었습니다.

이제 남은 것은 이 뛰어난 하드웨어에 똑똑한 비행 알고리즘을 입히는 것입니다. 다음 [시리즈 3: 초보자를 위한 수동 PID 튜닝 (Manual/Basic PID Tuning)] 편에서는 가장 안쪽 루프인 속도(Rate) 제어기부터 자세(Attitude) 제어기까지, QGroundControl을 활용하여 기체를 완벽하게 제어하는 본격적인 PID 튜닝 기법에 대해 상세히 알아보겠습니다.

연구실에서 비행 로그를 분석하는 일이 막막하셨던 분들께 이번 글이 명쾌한 해답이 되었기를 바랍니다. 그럼 다음 시리즈에서 뵙겠습니다!


YouTube 강좌

재생

Author: maponarooo, CEO of QUAD Drone Lab

Date: March 6, 2026

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다