[PX4 튜닝 시리즈 6] 궤적 생성기(Trajectory Generator) 및 셋포인트 튜닝: 조종감과 비행 궤적의 예술

항공우주공학과 자율비행 드론을 연구하시는 대학생, 대학원생, 그리고 연구원 여러분, 안녕하십니까! 길고 길었던 PX4 튜닝 시리즈의 대미를 장식할 마지막 시간입니다.

우리는 지난 [시리즈 1]부터 [시리즈 5]까지, 하드웨어의 미세한 진동을 잡는 것부터 시작해, 필터 튜닝을 거쳐 PID 제어기를 수동 및 자동으로 최적화하는 방법까지 완벽하게 마스터했습니다. 그 결과, 여러분의 드론은 이제 거센 바람 속에서도 끄떡없이 목표 위치를 유지하고, 조종기의 입력에 한 치의 오차도 없이 즉각적으로 반응하는 이른바 ‘칼같은(Locked-in)’ 비행 성능을 갖추게 되었습니다.

그런데 여기서 한 가지 문제가 발생할 수 있습니다. 기체의 제어 성능이 너무 완벽해진 나머지, 조종자가 조종기 스틱을 급격하게 튕기면(Step-input) 기체가 그 명령을 따라가기 위해 마치 로봇처럼 날카롭고 과격하게 홱! 하고 기울어버리는 것입니다. 만약 여러분의 연구 목적이 FPV 레이싱 드론이라면 이는 최상의 결과이겠지만, **부드러운 카메라 촬영(Filming), 정밀한 3D 맵핑(Mapping), 혹은 민감한 화물 운송(Cargo)**이 목적이라면 이렇게 덜컹거리는 비행은 치명적인 결과를 낳습니다.

이번 시리즈 6에서는 완벽하게 튜닝된 기체의 반응성을 사용자의 목적에 맞게 부드럽고 우아하게 깎아내는 **’궤적 생성기(Trajectory Generator)’와 ‘셋포인트(Setpoint) 튜닝’**에 대해 심도 있게 다루어 보겠습니다.


1. 하위 제어(PID)와 상위 제어(셋포인트)의 차이점 이해하기

본격적인 파라미터 설정에 앞서, 제어 공학적인 관점에서 매우 중요한 개념 하나를 짚고 넘어가야 합니다. 많은 초보 연구자들이 기체의 움직임이 너무 과격할 때 실수로 PID 게인(P gain 등)을 낮춰버리곤 합니다. 하지만 이는 바람에 대한 저항성과 비행 안정성을 깎아먹는 매우 잘못된 접근입니다.

  • 하위 제어 튜닝 (PID Tuning): 비행 제어기가 목표값(Desired Setpoint)과 기체의 현재 상태(Estimate) 사이의 ‘오차(Error)’를 얼마나 빠르고 정확하게 줄일 것인가를 결정합니다. 이는 기체의 ‘안정성’을 담당합니다.
  • 상위 제어 튜닝 (Setpoint Value Tuning): 조종자가 스틱을 움직이거나 임무(Mission) 명령이 내려졌을 때(Demanded Setpoint), 이 명령을 기체가 따라가야 할 **최종 목표값(Desired Setpoint)으로 ‘어떻게 변환할 것인가’**를 결정합니다. 조종자가 스틱을 0에서 100으로 한 번에 튕겼을 때, 목표값을 0에서 100으로 계단(Step)처럼 1밀리초 만에 올릴지, 아니면 완만한 경사(Ramp)를 그리며 서서히 올릴지를 결정하는 것이 바로 궤적 생성기의 역할입니다.

즉, 조종감(User Experience)이 너무 날카롭다면 PID 게인을 건드리는 것이 아니라, 궤적 생성기의 파라미터를 조절하여 목표값이 변하는 속도를 부드럽게 만들어주어야 기체의 안정성(안정적인 추종)을 유지하면서도 부드러운 비행이 가능해집니다.


2. 위치 모드(Position Mode)의 3가지 궤적 생성 방식

PX4의 위치 모드(Position Mode)에서는 조종기의 스틱 입력을 궤적 셋포인트로 변환하는 세 가지 방식을 제공하며, 이는 MPC_POS_MODE 파라미터를 통해 선택할 수 있습니다.

① 직접 속도 제어 (Direct Velocity / Simple position control)

  • 원리: 스틱의 위치가 궤적의 평활화(Smoothing) 없이 목표 속도로 다이렉트로 매핑됩니다.
  • 용도: 스텝 입력을 그대로 기체에 전달하므로, 우리가 앞선 시리즈에서 PID 제어기(Velocity Controller)를 튜닝할 때 반드시 사용해야 했던 모드입니다. 실제 비행용으로는 움직임이 너무 거칠어 적합하지 않습니다.

② 가속도 기반 제어 (Acceleration Based – 기본값)

  • 원리: 조종기의 수평 스틱 입력을 목표 가속도로 변환합니다.
  • 용도: 마치 허공에서 기체를 손으로 밀고 당기는 듯한 직관적인 조종감을 제공합니다. 최고 속도에 도달했을 때 기체의 기울기(Tilt)가 예상치 못하게 변하는 현상이 없으며, 대부분의 일반적인 멀티콥터 비행에 널리 사용되는 훌륭한 기본 모드입니다.

③ 부드러운 속도 제어 (Smoothed Velocity / Jerk-limited Type)

  • 원리: 가장 진보된 궤적 생성기로, 속도와 가속도뿐만 아니라 ‘저크(Jerk, 가가속도)’까지 제한하여 완벽하게 대칭적인 S-Curve를 생성합니다.
  • 용도: 영화 촬영용 짐벌 드론, 3D 매핑, 흔들림이 없어야 하는 화물 운송 드론 등에 필수적입니다. (단, 즉각적인 반응이 필요한 레이싱 드론에는 부적합합니다).

3. S-Curve의 마법: 저크(Jerk) 제한 궤적의 원리

우리의 주 목표인 부드러운 비행을 위해 MPC_POS_MODE를 **Smoothed Velocity (저크 제한)**으로 설정했다고 가정해 봅시다.

물리학에서 **저크(Jerk, 가가속도)**란 ‘가속도가 변하는 비율’을 의미합니다. 드론이 앞으로 전진하기 위해서는 기체를 앞으로 기울여(Tilt) 가속도를 만들어내야 합니다. 만약 저크에 제한이 없다면, 드론은 목표 가속도에 도달하기 위해 기체를 순식간에 홱! 하고 기울여 버릴 것입니다.

하지만 저크를 제한(Jerk-limited)하게 되면, 기체의 가속도가 서서히 증가하고 서서히 감소하게 됩니다. 결과적으로 드론이 기울어지는 속도가 매우 부드러워지며, 전체적인 목표 속도 그래프가 알파벳 ‘S’자를 눕혀 놓은 것과 같은 아름다운 S-Curve (S자 곡선) 형태를 그리게 됩니다.

이 궤적은 다음과 같은 제약 조건(Constraints)들의 조합으로 계산됩니다.

  • jMax : 최대 저크 (기체가 기울어지는 속도의 부드러움 결정)
  • aMax : 최대 가속도 (기체가 얼마나 빨리 최고 속도에 도달할지 결정)
  • vRef : 요구(최대) 속도 (스틱을 끝까지 쳤을 때의 이동 속도)

4. 실전! QGroundControl 파라미터 셋업 가이드

이제 QGroundControl(QGC)을 열고, 여러분의 연구용 드론을 거대한 시네마틱 카메라 드론처럼 부드럽게 움직이도록 파라미터를 설정해 보겠습니다.

1단계: 궤적 생성기 모드 변경

  • MPC_POS_MODE 파라미터를 검색하여 Smoothed velocity (저크 제한형)으로 변경합니다.

2단계: 수평(XY 평면) 이동 튜닝

수평 비행 시의 부드러움과 최대 속도를 결정합니다.

  • 최대 속도 (MPC_VEL_MANUAL): 스틱을 끝까지 밀었을 때의 수평 속도입니다. (예: 5.0 m/s)
  • 최대 가속도 (MPC_ACC_HOR_MAX): 최대 속도에 도달하기 위한 가속도입니다. 수치가 낮을수록 중후하게 출발합니다. (예: 3.0 m/s^2)
  • 최대 저크 (MPC_JERK_MAX): 기체가 기울어지는 부드러움을 결정하는 핵심 파라미터입니다. 값이 낮을수록 기체가 매우 부드럽고 천천히 기울어집니다. 기본값은 다소 높게 설정되어 있으므로 영상 촬영용이라면 값을 낮추는 것이 좋습니다. (예: 2.0 m/s^3)

3단계: 수직(Z축) 이동 튜닝

멀티콥터에서 상승과 하강의 느낌은 하늘과 땅 차이이므로 가속도와 속도를 분리해서 설정합니다.

  • 상승/하강 최대 속도 (MPC_Z_VEL_MAX_UP / MPC_Z_VEL_MAX_DN): (예: 상승 3.0 m/s, 하강 1.5 m/s)
  • 상승/하강 최대 가속도 (MPC_ACC_UP_MAX / MPC_ACC_DOWN_MAX): (예: 상승 2.0 m/s^2, 하강 1.0 m/s^2)
Bash
# 예제: 촬영/매핑용 드론을 위한 S-Curve 파라미터 추천 설정값
MPC_POS_MODE = Smoothed velocity  # 저크 제한 S-Curve 모드 활성화
MPC_VEL_MANUAL = 5.0              # 수평 최대 속도 5m/s
MPC_ACC_HOR_MAX = 2.0             # 부드러운 수평 가속
MPC_JERK_MAX = 1.5                # 극강의 부드러운 기울임(Tilt) 전환
MPC_ACC_UP_MAX = 1.5              # 부드러운 이륙 및 상승 가속

참고: 자동 임무 비행(Auto Mode)의 궤적

위의 설정은 조종기를 사용하는 수동 위치 모드(Manual Mode)에 적용됩니다. QGC를 통해 경로를 짜고 비행하는 **자동 모드(Auto Mode/Mission)**의 경우, 기체는 항상(무조건) 저크 제한 S-Curve 궤적을 사용하도록 설계되어 있습니다. 임무 비행의 부드러움을 조절하려면 MPC_XY_CRUISE(순항 속도), MPC_ACC_HOR(임무 시 수평 가속도), 그리고 MPC_JERK_AUTO(임무 시 최대 저크) 파라미터를 위와 같은 원리로 조절해 주시면 됩니다.


5. 마무리하며: 진동 억제부터 비행의 예술까지

지금까지 총 6개의 시리즈에 걸쳐 PX4를 기반으로 한 드론 튜닝의 모든 것을 알아보았습니다.

[QUAD Drone Lab]의 사례에서 보았듯 물리적인 프레임 유격을 꽉 조여 60~80Hz의 하드웨어 진동을 원천 차단한 것에서 출발하여, 소프트웨어 필터를 통해 남은 노이즈를 걸러내고, PID의 3요소를 완벽하게 조율했으며, 마지막으로 오늘 궤적 생성기(Trajectory Generator)를 통해 사용자의 의도에 꼭 맞는 예술적이고 부드러운 비행 궤적을 만들어내는 데 성공했습니다.

여러분이 연구실에서 밤낮으로 땀 흘려 설계하고 조립한 기체가, 이제는 단순한 기계 덩어리를 넘어 여러분의 의도를 완벽하게 이해하고 움직이는 최상의 파트너로 거듭났기를 바랍니다.

이론과 공식만으로는 채울 수 없는 실제 비행 데이터 분석과 튜닝의 세계, 그 치열한 과정 속에서 이 블로그 시리즈가 여러분 연구의 작은 나침반이 되었기를 희망합니다. 대학생, 대학원생, 그리고 연구원 여러분의 다음 비행 테스트가 완벽하고 안전하게 이루어지기를 진심으로 응원합니다. 그동안 **[PX4 튜닝 시리즈]**를 사랑해 주셔서 대단히 감사합니다!


YouTube 강좌


Author: maponarooo, CEO of QUAD Drone Lab

Date: March 6, 2026

Similar Posts

답글 남기기