[PX4 튜닝 시리즈 5] 마법 같은 40초, 자동 튜닝(Auto-Tuning)의 모든 것
항공우주공학과 자율비행 드론을 연구하시는 대학생, 대학원생, 그리고 연구원 여러분, 안녕하십니까!
지금까지 [시리즈 1]부터 [시리즈 4]까지 차근차근 따라오시느라 정말 고생 많으셨습니다. 우리는 하드웨어 진동을 잡고, 고주파 로깅을 통해 필터를 튜닝했으며, 수동으로 PID 제어기의 원리를 파헤치며 극한의 비행 성능을 끌어올리는 방법까지 모두 살펴보았습니다.
하지만 연구실에서 매번 새로운 프레임을 설계하고 모터를 교체할 때마다 수십 번의 비행과 수동 튜닝을 반복하는 것은 엄청난 시간과 체력을 소모하는 일입니다. 그래서 오늘 시리즈 5에서는, 비행 중 단 40초 만에 기체가 스스로 완벽한 PID 값을 찾아내는 PX4의 강력한 무기, 자동 튜닝(Auto-Tuning) 기능에 대해 아주 상세하게 다뤄보겠습니다.
이 기능은 복잡한 수동 튜닝을 건너뛰게 해주는 ‘마법의 버튼’과도 같지만, 원리를 모른 채 사용하면 기체가 추락할 수도 있는 양날의 검입니다. 안전하고 완벽하게 자동 튜닝을 성공시키는 방법을 지금부터 친절하게 안내해 드리겠습니다.
1. 자동 튜닝(Auto-Tuning)의 원리와 한계 이해하기
PX4의 자동 튜닝 알고리즘은 비행 제어의 가장 핵심이 되는 속도(Rate) 제어기와 자세(Attitude) 제어기를 자동으로 튜닝합니다.
어떤 원리로 작동할까요? 기체가 공중에 떠 있는 동안, 비행 제어기(FC)는 각 축(Roll, Pitch, Yaw)에 의도적으로 미세한 교란(Disturbance) 신호를 보냅니다. 그리고 기체의 센서(IMU)가 이 교란에 어떻게 반응하는지를 측정하여 기체의 동역학적 특성(관성, 반응 지연 등)을 파악하는 시스템 식별(System Identification) 과정을 거칩니다. 측정이 끝나면 수학적 모델을 기반으로 최적의 P, I, D 게인 값을 스스로 계산해 냅니다.
주의해야 할 한계점: 자동 튜닝 알고리즘은 기체를 ‘각 축이 독립적으로 움직이는 선형 시스템(SISO)’이자 ‘단순한 2차 시스템(2 poles and 2 zeros)’으로 가정합니다. 따라서 **프레임이 너무 유연해서 낭창거리는 기체(Flexible frame)**이거나, 축 간의 간섭이 너무 심한 비대칭 기체의 경우에는 수학적 모델이 실제 동역학을 제대로 반영하지 못해 튜닝이 실패할 수 있습니다. 프레임이 단단하고 견고한 멀티콥터나 고정익 기체에서 가장 훌륭하게 작동합니다.
2. 튜닝 전 필수 관문: 사전 튜닝 테스트 (Pre-tuning Test)
자동 튜닝을 실행하기 전, 절대 건너뛰어서는 안 될 가장 중요한 단계가 있습니다. 기체가 어느 정도의 외부 교란을 스스로 견디고 자세를 제어할 수 있는 ‘최소한의 비행 능력’을 갖추었는지 확인하는 과정입니다. 기체가 스스로 중심을 잡지 못하는 상태에서 자동 튜닝을 켜면 공중에서 뒤집어질 수 있습니다.
[사전 테스트 절차]
- 안전 고도 이륙: 충분히 넓은 야외나 안전망이 있는 비행장에서 고도 모드(Altitude mode) 또는 안정화 모드(Stabilized mode)로 이륙하여 지면에서 약 1m 높이로 호버링합니다.
- 롤(Roll) 축 스텝 입력: 조종기의 롤 스틱을 이용해 기체를 좌우로 살짝 기울입니다. ‘좌측으로 롤 -> 우측으로 롤 -> 중앙’ 순서로 약 3초 동안 빠르게 조작합니다.
- 안정성 확인 (★핵심★): 스틱을 놓았을 때, 기체가 2번의 진동(Oscillation) 이내에 스스로 평형을 되찾는지 확인합니다.
- 피치(Pitch) 축 스텝 입력: 롤 축이 안정적이라면, 피치(전후) 축에 대해서도 앞뒤로 살짝 기울이며 동일한 테스트를 진행합니다.
- 각도 점진적 증가: 처음에는 작은 각도로 시작하여, 최종적으로 약 20도 각도까지 기울였을 때도 2번의 진동 이내에 자세를 회복한다면 자동 튜닝을 위한 모든 준비가 끝난 것입니다.
만약 2번의 진동 이내에 자세를 회복하지 못하고 기체가 계속 꿀렁거린다면, 자동 튜닝을 진행해서는 안 되며, 수동으로 P 게인과 D 게인을 낮추는 ‘언더튜닝(Undertuning)’ 조치를 먼저 취해야 합니다.
3. 실전 자동 튜닝 절차 (QGroundControl 100% 활용하기)
사전 테스트를 무사히 통과했다면, 이제 본격적으로 오토 튜닝을 시작해 봅시다. 튜닝 과정은 기체 크기에 따라 다르지만 대략 19초에서 68초(평균 약 40초) 정도 소요됩니다.
- 비행 준비 및 이륙: 바람이 없는 맑은 날씨를 선택하십시오. 조종기를 이용해 **고도 모드(Altitude mode)**로 이륙한 뒤, 지면의 영향(Ground effect)을 받지 않도록 약 4~20m 사이의 안전한 고도에서 호버링을 유지합니다.
- QGC 메뉴 진입: 기체가 떠 있는 상태에서 QGroundControl의 [Vehicle Setup (톱니바퀴)] > [PID Tuning] 메뉴로 들어갑니다.
- 자동 튜닝 활성화: Rate Controller 또는 Attitude Controller 탭을 선택한 뒤, 화면 상단 또는 우측에 있는 ‘Autotune enabled’ 버튼을 활성화합니다. (그러면 수동 튜닝 슬라이더가 사라지고 커다란 Autotune 버튼이 나타납니다.)
- 튜닝 시작: [Autotune] 버튼을 클릭하고 경고 팝업을 주의 깊게 읽은 후 OK를 누릅니다.

튜닝 중 기체의 움직임: 튜닝이 시작되면 조종기 스틱에서 손을 떼십시오 (스틱을 움직이면 튜닝이 즉시 취소됩니다). 기체가 스스로 롤(Roll) 축으로 짧고 빠르게 ‘파르르’ 떨면서 움직이기 시작합니다. 롤 축이 끝나면 피치(Pitch), 그다음 요(Yaw) 축 순서로 동일한 동작을 반복합니다. QGC 화면의 튜닝 진행률 바(Progress bar)가 100%에 도달할 때까지 기다립니다.
새로운 튜닝 값의 적용 (MC_AT_APPLY 파라미터): 튜닝이 100% 완료되었다고 해서 공중에서 바로 값이 적용되는 것은 아닙니다 (멀티콥터 기본 설정 기준). 안전을 위해 기체를 조종하여 수동으로 착륙시킨 후 시동을 끄면(Disarm), 비로소 계산된 새로운 튜닝 파라미터가 기체에 저장 및 적용됩니다. (이는 MC_AT_APPLY = 1로 기본 설정되어 있기 때문입니다). 파라미터가 적용된 후 다시 조심스럽게 이륙하여 기체가 안정적으로 비행하는지 테스트해 보십시오.
4. 문제 해결 (Troubleshooting): 튜닝 전후로 발진이 발생할 때
연구용 기체는 모터와 프레임의 조합이 워낙 다양하다 보니, 사전 테스트나 튜닝 완료 후에 기체가 불안정하게 떨리는 발진(Oscillation) 현상을 겪을 수 있습니다. 이때 증상에 따라 조치하는 방법이 명확히 정해져 있습니다.
① 느린 발진 (1초에 1번 이하로 꿀렁거릴 때)
큰 대형 기체에서 자주 발생합니다. 이는 내부의 속도(Rate) 루프에 비해 외부의 자세(Attitude) 제어 루프가 너무 빠르게 반응하려고 할 때 나타납니다.
- 해결책: QGC 파라미터에서 자세 제어 P 게인인 **
MC_ROLL_P**와 MC_PITCH_P 값을 1.0 단위로 낮춰줍니다.
② 빠른 발진 (1초에 1번 이상 빠르게 파르르 떨 때)
가장 흔한 증상으로, 안쪽 루프인 속도(Rate) 제어기의 게인이 너무 높아서 발생합니다.
- 해결책: QGC 파라미터에서 속도 제어 K 게인(전체 이득)인 MC_ROLLRATE_K, MC_PITCHRATE_K, MC_YAWRATE_K 값을 0.02 단위로 아주 조금씩 낮춰줍니다.
# 예제: 파라미터 수정으로 빠른 발진 해결하기
기존 값: MC_ROLLRATE_K = 0.85
수정 값: MC_ROLLRATE_K = 0.83 (0.02 감소시켜 빠른 발진 억제)
③ 자동 튜닝이 중간에 실패하는 경우
시스템 식별을 위해 기체가 스스로를 흔들어야 하는데, 출력이 부족하거나 관성이 커서 기체가 충분히 움직이지 못하면 알고리즘이 계수를 찾지 못하고 실패합니다.
- 해결책: 교란 신호의 진폭을 키워주어야 합니다. MC_AT_SYSID_AMP 파라미터 값을 1단계씩 올려서(Increase by steps of 1) 기체가 더 강하게 반응하도록 설정한 뒤 다시 자동 튜닝을 시도해 보십시오.
마치며
축하합니다! 오늘 우리는 단 40초의 비행만으로 기체의 복잡한 동역학 모델을 파악하여 최적의 PID 값을 찾아내는 자동 튜닝(Auto-Tuning)의 전체 과정을 성공적으로 완수했습니다.
- 사전 튜닝 테스트를 통해 기체가 스스로 자세를 회복할 수 있는지 점검했고,
- QGroundControl을 통해 시스템 식별 기반의 오토 튜닝을 실행했으며,
- 안전하게 착륙하고 시동을 꺼서 완벽하게 최적화된 PID 파라미터를 적용했습니다.
- 튜닝 중 발생할 수 있는 빠른 발진과 느린 발진의 원인과 해결책도 숙지했습니다.
이렇게 튜닝된 기체는 이제 웬만한 바람이나 외부 충격에도 끄떡없이 완벽하게 제자리를 지킬 수 있는 엄청난 호버링 안정성을 자랑할 것입니다.
하지만, 기체가 “잘 멈춰있는 것”과 조종자의 스틱 입력에 따라 “부드럽고 유려하게 움직이는 것”은 다른 이야기입니다. 만약 여러분의 연구 주제가 **부드러운 카메라 촬영(Filming)이나 정밀한 3D 매핑(Mapping)**이라면 기체의 움직임이 너무 날카로워서는 곤란하겠죠?
다음 [시리즈 6: 궤적 생성기 및 셋포인트 튜닝 (Trajectory Generator Tuning)] 편에서는 기체의 반응성을 사용자의 목적에 맞게 부드럽게 깎아내는 ‘조종감(User Experience) 튜닝’과 ‘Jerk 제한 S-Curve 궤적’에 대해 상세히 알아보겠습니다.
연구실에서의 성공적이고 안전한 비행 테스트를 기원합니다. 감사합니다!
YouTube Demo

Author: maponarooo, CEO of QUAD Drone Lab
Date: March 6, 2026
