Skip to content
Published on

Pixhawk & eVTOL 비행제어 완전 정복: PX4, 칼만 필터, PWM 신호, 센서 퓨전부터 ROS2 통합까지

Authors
  • Name
    Twitter

1. 개요

드론과 eVTOL(전기 수직 이착륙기)은 더 이상 실험적 기술이 아니다. 2026년 Joby Aviation과 Archer Aviation은 상업 운항을 시작하고, 도심 항공 모빌리티(UAM)는 현실이 되고 있다. 이 모든 기술의 중심에는 비행 제어 시스템이 있다.

이 포스트는 비행 제어의 핵심 요소를 총정리한다.

┌────────────────────────────────────────────────────────────┐
│                 비행 제어 시스템 전체 구조                      │
│                                                             │
│  센서 계층        추정 계층         제어 계층        출력 계층   │
│  ┌─────────┐    ┌──────────┐    ┌──────────┐    ┌────────┐ │
│  │IMU(6) │    │ 칼만 필터  │    │ PID 제어 │    │  PWM/  │ │
│  │GPS      │──→│ (EKF2/3) │──→│ 위치→속도 │──→│ DShot  │ │
│  │기압계    │    │ 센서 퓨전  │    │ →자세→각속도│    │  ESC   │ │
│  │지자기    │    │          │    │ →믹서    │    │  모터   │ │
│  └─────────┘    └──────────┘    └──────────┘    └────────┘ │
│                                                             │
│  통신: MAVLink ←→ QGroundControl / ROS2 / 컴패니언 컴퓨터     │
└────────────────────────────────────────────────────────────┘

2. Pixhawk — 오픈소스 비행 제어기의 표준

2.1 Pixhawk란

Pixhawk는 특정 제품이 아닌 오픈 하드웨어 표준이다. Dronecode Foundation(Linux Foundation 산하)이 관리하며, 전 세계 100만 대 이상의 Pixhawk 기반 장치가 운용 중이다.

2.2 FMU 버전 히스토리

버전프로세서주요 특징
FMUv2STM32F427 (Cortex-M4, 168MHz)최초 상용 Pixhawk
FMUv3STM32F427Flash 2MB로 확대
FMUv5STM32F7CAN 버스 추가, 확장성 강화
FMUv5XSTM32F7모듈러 설계, 삼중 중복성 도입
FMUv6XSTM32H753 (Cortex-M7, 480MHz)이더넷, 삼중 IMU, 분리 센서 도메인
FMUv6CSTM32H743 (Cortex-M7, 480MHz)비용 최적화, 이중 중복 IMU

2.3 Pixhawk 6X (FMUv6X) 상세 사양

프로세서:

  • FMU: STM32H753 (Cortex-M7, 480MHz, 2MB Flash, 1MB RAM)
  • IO: STM32F103 (Cortex-M3, 72MHz, 64KB SRAM)

탑재 센서 (삼중 중복):

센서 유형모델수량비고
IMU (가속도계/자이로)ICM-456863개BalancedGyro 기술, 각각 별도 버스·전원
기압계ICP20100, BMP3882개이중 중복
지자기 센서BMM1501개-

주요 인터페이스:

  • 16+ PWM 서보 출력 (IO 8개 + FMU 8개)
  • 이더넷 PHY — 미션 컴퓨터와 고속 통신
  • 4× UART, 3× SPI, 2× CAN, 2× I2C
  • USB-C, RC 입력 (SBUS/CPPM/DSM)

모듈러 설계: IMU Board + FMU Board + Base Board가 100핀/50핀 Pixhawk Autopilot Bus 커넥터로 분리

2.4 Pixhawk 6C (FMUv6C)

항목사양
프로세서STM32H743 (Cortex-M7, 480MHz)
IMUICM-42688-P + BMI055 (이중 중복)
기압계MS5611
지자기IST8310
크기84.8 × 44 × 12.4 mm
무게59.3g (알루미늄) / 34.6g (플라스틱)
작동 온도-25 ~ 85°C

2.5 지원 오토파일럿 펌웨어

펌웨어라이선스특징
PX4 AutopilotBSDDronecode 공식, 마이크로커널 아키텍처, 정밀 제어
ArduPilotGPL커뮤니티 기반, 폭넓은 기체 지원, 실전 검증 최고

2.6 생태계

제조사: Holybro, CUAV, ARK Electronics, ModalAI, NXP, mRo, Auterion 도구: QGroundControl(GCS), MAVLink, MAVSDK, MAVROS, ROS2 통합


3. 비행 제어 시스템 아키텍처

3.1 캐스케이드 제어 구조

PX4 멀티콥터 제어기는 캐스케이드 위치-속도-자세-각속도 루프를 사용한다.

[위치 SP][위치 P][속도 PID][자세 P][각속도 K-PID][믹서][모터]
  외부 루프              중간 루프        자세 루프       내부 루프
  ~50Hz                 ~50Hz          ~250Hz         ~1000Hz
계층제어기입력출력갱신률
Position (외부)P 제어기위치 오차속도 설정값~50Hz
Velocity (중간)PID 제어기속도 오차가속도 설정값~50Hz
Attitude (자세)P 제어기 (쿼터니언)자세 오차각속도 설정값~250Hz
Rate (내부)K-PID 제어기각속도 오차토크/추력 명령~1000Hz

3.2 PID 제어기

연속 시간 PID:

u(t)=Kpe(t)+Ki0te(τ)dτ+Kdde(t)dtu(t) = K_p \cdot e(t) + K_i \int_0^t e(\tau) d\tau + K_d \frac{de(t)}{dt}

이산 시간 PID (비행 제어기 구현):

u[k]=Kpe[k]+Kij=0ke[j]Δt+Kde[k]e[k1]Δtu[k] = K_p \cdot e[k] + K_i \sum_{j=0}^{k} e[j] \cdot \Delta t + K_d \frac{e[k] - e[k-1]}{\Delta t}

파라미터역할올리면내리면
KpK_p (비례)오차에 비례한 즉각 반응응답 빨라짐, 진동 증가느려짐, 안정적
KiK_i (적분)정상상태 오차 제거오차 0 수렴, 오버슈트 위험잔류 오차 존재
KdK_d (미분)오차 변화율에 반응 (댐핑)오버슈트 감소, 노이즈 민감진동 증가

3.3 위치/속도 제어기

위치 제어기 (P):

vsp=Kppos(psppest)\vec{v}_{sp} = K_p^{pos} \cdot (\vec{p}_{sp} - \vec{p}_{est})

  • PX4 파라미터: MPC_XY_P, MPC_Z_P
  • 속도 포화: MPC_XY_VEL_MAX

속도 제어기 (PID): 속도 오차 → 가속도 설정값, Anti-reset windup 적용

3.4 자세/각속도 제어기

자세 제어기 (P, 쿼터니언 기반):

ωsp=Kpatteatt\vec{\omega}_{sp} = K_p^{att} \cdot \vec{e}_{att}

각속도 제어기 (K-PID): 미분 경로에 저역통과 필터 적용하여 노이즈 저감

자이로 데이터 처리 파이프라인:

  1. 캘리브레이션 보정 → 2. 바이어스 제거 → 3. 노치 필터 → 4. 저역통과 필터

3.5 믹서 (Control Allocation)

각속도 제어기 출력을 개별 모터 명령으로 변환한다.

쿼드콥터 X 구성 예시:

[M1M2M3M4]=[1111111111111111][Tτxτyτz]\begin{bmatrix} M_1 \\ M_2 \\ M_3 \\ M_4 \end{bmatrix} = \begin{bmatrix} 1 & -1 & 1 & 1 \\ 1 & 1 & -1 & 1 \\ 1 & 1 & 1 & -1 \\ 1 & -1 & -1 & -1 \end{bmatrix} \begin{bmatrix} T \\ \tau_x \\ \tau_y \\ \tau_z \end{bmatrix}

여기서 TT=총 추력, τx\tau_x=롤 토크, τy\tau_y=피치 토크, τz\tau_z=요 토크


4. PWM 신호와 ESC 프로토콜

4.1 PWM (Pulse Width Modulation) 원리

PWM은 디지털 신호의 듀티 사이클을 변조하여 아날로그 값을 전달하는 기법이다.

     ┌────┐              ┌────────┐
     │    │              │        │
─────┘    └──────────────┘        └──────────
     |<-->|              |<------>|
     1000μs              2000μs
     (0% 스로틀)          (100% 스로틀)
     |<-------------------->|
         20ms (50Hz 주기)
파라미터
펄스 폭 범위1000μs (최소) ~ 2000μs (최대)
중립점1500μs
표준 주기20ms (50Hz)
해상도1000 스텝
신호 지연~2ms

4.2 ESC 프로토콜 비교

프로토콜유형펄스폭최대 갱신률해상도오류 검출
Standard PWM아날로그1000-2000μs500Hz1000없음
OneShot125아날로그125-250μs4kHz1000없음
OneShot42아날로그42-84μs~12kHz1000없음
Multishot아날로그5-25μs~32kHz1000없음
DShot150디지털-150 kbps2048CRC 4비트
DShot300디지털-300 kbps2048CRC 4비트
DShot600디지털-600 kbps2048CRC 4비트
DShot1200디지털-1200 kbps2048CRC 4비트

4.3 DShot 프로토콜 상세

DShot은 2025년 현재 사실상의 표준 ESC 프로토콜이다.

프레임 구조 (16비트):

[11비트 스로틀 (0-2047)] [1비트 텔레메트리 요청] [4비트 CRC]
  • 스로틀 값 1-47: 특수 명령 예약 (비프음, 모터 방향 반전, ESC 설정)
  • 비트 인코딩: HIGH/LOW 비율로 0/1 구분 (1=75% HIGH, 0=37.5% HIGH)

양방향 DShot (Bidirectional DShot):

  • ESC가 eRPM 텔레메트리를 FC에 회신
  • 실시간 RPM 데이터로 동적 노치 필터 적용 → 진동 제거 성능 대폭 향상
  • 제공 데이터: RPM, 전압, 전류, 온도

4.4 PWM vs DShot 핵심 차이

특성PWM (아날로그)DShot (디지털)
신호 방식펄스 폭으로 값 인코딩0/1 비트 스트림
캘리브레이션필요 (ESC마다 다름)불필요
노이즈 내성낮음높음 (CRC 오류 검출)
해상도1000 스텝2048 스텝
양방향 통신불가가능 (텔레메트리)
특수 명령불가가능

5. 칼만 필터 — 비행 제어 핵심 알고리즘

5.1 칼만 필터 기본 원리

칼만 필터는 노이즈가 포함된 다중 센서 측정값으로부터 시스템의 상태를 최적으로 추정하는 재귀적 알고리즘이다.

┌──────────────────────────────────────────────────────┐
│              칼만 필터 사이클                            │
│                                                       │
│  ┌──────────────────┐     ┌──────────────────┐       │
│  │  1단계: 예측       │     │  2단계: 갱신       │       │
  (Prediction)     │────►│  (Update)        │       │
│  │                  │     │                  │       │
│  │  x̂ = F·x + B·u  │     │  K = P·Hᵀ·S⁻¹   │       │
│  │  P = F·P·F+ Q │     │  x̂ =+ K·(z-Hx̂)│       │
│  │                  │     │  P = (I-KH)·P    │       │
│  │  모션 모델로 예측  │     │  측정값으로 보정    │       │
│  └──────────────────┘     └────────┬─────────┘       │
│           ▲                        │                  │
│           └────────────────────────┘                  │
│                    반복                                │
└──────────────────────────────────────────────────────┘

1단계: 예측 (Time Update)

x^kk1=Fkx^k1k1+Bkuk\hat{x}_{k|k-1} = F_k \hat{x}_{k-1|k-1} + B_k u_k

Pkk1=FkPk1k1FkT+QkP_{k|k-1} = F_k P_{k-1|k-1} F_k^T + Q_k

기호의미
x^\hat{x}상태 추정 벡터
FkF_k상태 전이 행렬
BkB_k제어 입력 행렬
uku_k제어 입력 (예: 자이로 각속도)
PP오차 공분산 행렬
QkQ_k프로세스 노이즈 공분산

2단계: 갱신 (Measurement Update)

Kk=Pkk1HkT(HkPkk1HkT+Rk)1K_k = P_{k|k-1} H_k^T (H_k P_{k|k-1} H_k^T + R_k)^{-1}

x^kk=x^kk1+Kk(zkHkx^kk1)\hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k (z_k - H_k \hat{x}_{k|k-1})

Pkk=(IKkHk)Pkk1P_{k|k} = (I - K_k H_k) P_{k|k-1}

기호의미
KkK_k칼만 이득 — 예측값과 측정값의 가중치 결정
HkH_k관측 행렬
zkz_k실제 측정값
RkR_k측정 노이즈 공분산

칼만 이득의 직관:

  • K1K \to 1: 측정값을 더 신뢰 (측정 노이즈 작음)
  • K0K \to 0: 예측값을 더 신뢰 (모델 정확함)

5.2 확장 칼만 필터 (EKF)

드론의 역학은 비선형이므로 표준 칼만 필터를 직접 적용할 수 없다. EKF는 비선형 함수를 1차 테일러 급수 전개로 선형화한다.

비선형 시스템:

xk=f(xk1,uk)+wk(상태 전이)x_k = f(x_{k-1}, u_k) + w_k \quad \text{(상태 전이)}

zk=h(xk)+vk(관측)z_k = h(x_k) + v_k \quad \text{(관측)}

EKF 예측:

x^kk1=f(x^k1k1,uk)\hat{x}_{k|k-1} = f(\hat{x}_{k-1|k-1}, u_k)

Pkk1=FkPk1k1FkT+Qk,Fk=fxx^k1P_{k|k-1} = F_k P_{k-1|k-1} F_k^T + Q_k, \quad F_k = \frac{\partial f}{\partial x}\bigg|_{\hat{x}_{k-1}}

EKF 갱신:

Kk=Pkk1HkT(HkPkk1HkT+Rk)1,Hk=hxx^kk1K_k = P_{k|k-1} H_k^T (H_k P_{k|k-1} H_k^T + R_k)^{-1}, \quad H_k = \frac{\partial h}{\partial x}\bigg|_{\hat{x}_{k|k-1}}

5.3 오류 상태 칼만 필터 (ESKF)

PX4의 EKF2는 Error-State Kalman Filter를 구현한다. 쿼터니언 회전의 불확실성 추정에 핵심적이다.

핵심 아이디어:

  • 쿼터니언을 직접 추정하지 않고, 오류 회전 벡터를 추정
  • SO(3)의 접선 공간에서 3D 벡터로 회전 불확실성 표현
  • Nominal State(관성 항법 방정식)와 Error State(칼만 필터)를 분리

δx=xtruex^nominal\delta x = x_{true} - \hat{x}_{nominal}

5.4 PX4 EKF2 (ECL EKF) — 24개 상태 벡터

인덱스상태설명
0-3쿼터니언 (q0~q3)NED → Body 프레임 회전
4-6속도 (Vn, Ve, Vd)NED 프레임 [m/s]
7-9위치 (Pn, Pe, Pd)NED 프레임 [m]
10-12자이로 바이어스IMU 자이로 [rad/s]
13-15가속도계 바이어스IMU 가속도계 [m/s²]
16-18지구 자기장NED 프레임 [Gauss]
19-21바디 자기장 바이어스Body 프레임
22-23풍속 (Wn, We)북풍/동풍 [m/s]

센서 퓨전 아키텍처:

  • 지연된 퓨전: 센서별 시간 지연 수용을 위해 FIFO 버퍼에 저장, 동일 시점 데이터 퓨전
  • IMU 데이터: 상태 예측에만 사용, 관측값으로 사용하지 않음
  • 다중 EKF 인스턴스: 결함 감지 강화 (MAX(IMU수,1) × MAX(자력계수,1), 최대 16개)
  • 다중 가설 필터: 가우시안 합 필터로 요(Yaw) 추정, GPS 속도만으로도 가능

5.5 ArduPilot EKF2 vs EKF3

특성EKF2EKF3 (현재 기본)
센서 어피니티미지원지원 — 비주 센서 동적 전환
추가 센서기본만비콘, 휠 인코더, 시각 오도메트리
레인 전환제한적동적 레인 전환
폴백EKF2 → DCMEKF3 → DCM
파라미터EK2_*EK3_*

5.6 보상 필터 vs 칼만 필터

θest=α(θest+ωgyroΔt)+(1α)θaccel\theta_{est} = \alpha \cdot (\theta_{est} + \omega_{gyro} \cdot \Delta t) + (1-\alpha) \cdot \theta_{accel}

여기서 α=ττ+Δt\alpha = \frac{\tau}{\tau + \Delta t} (보통 0.96~0.98)

특성보상 필터칼만 필터
복잡도낮음높음
계산 부하경량 (임베디드)무거움 (FPU 필요)
원리HPF(자이로) + LPF(가속도계)최적 가중 평균 (공분산)
바이어스있을 수 있음바이어스 프리
다중 센서2개 적합다중 센서 최적
결함 내성없음혁신 일관성 검사

6. eVTOL (Electric Vertical Takeoff and Landing)

6.1 eVTOL이란

전기 추진 시스템으로 수직 이착륙하고 수평 비행하는 항공기다. 도심 항공 모빌리티(UAM)의 핵심으로, "날으는 택시" 시대를 열고 있다.

6.2 시장 현황

  • 시장 규모: 2025년 ~42억 달러 → 2033년 ~80억 달러 (CAGR 37%)
  • 2026년 상업 운항 시작 예정: Joby Aviation, Archer Aviation
기업기체최대속도항속거리승객점유율
Joby AviationS4322 km/h241 km4+122%
Archer AviationMidnight241 km/h32-80 km4+118%
LiliumLilium Jet300 km/h250 km65-8%
EHangEH216-S130 km/h35 km2-
VolocopterVoloCity110 km/h35 km2-

6.3 기체 구성 유형

멀티로터 (Multirotor)

    ①        ②
     \      /
      ┌────┐
      │    │
      └────┘
     /      \
    ③        ④
  • 4~8개 로터가 양력+추력 모두 제공
  • 장점: 단순, 안정 호버링
  • 단점: 에너지 효율 최악 (순항 시 비효율)
  • 대표: EHang EH216-S, Volocopter VoloCity

리프트+크루즈 (Lift + Cruise)

    수직 로터    수직 로터           후방 프로펠러
      ↓          ↓                  ↓
    ┌──┐      ┌──┐    ═══════    ▶───
    └──┘      └──┘    날개
  • 수직 이륙용 로터 + 수평 비행용 프로펠러 분리
  • 장점: 각 비행 단계 최적화
  • 단점: 수직 로터가 순항 시 사하중
  • 대표: Archer Midnight, Vertical Aerospace VX4

틸트로터 (Tiltrotor)

  호버링:  →  순항:
  ↑  ↑       →  →
  │  │       ╱  ╲
  ┌──┐      ┌──────┐
  └──┘      └──────┘
  • 로터가 수직/수평 방향으로 틸트
  • 장점: 단일 추진 시스템으로 효율적
  • 단점: 틸트 메커니즘 복잡성
  • 대표: Joby S4 (6개 틸트), Bell Nexus

틸트윙 (Tiltwing)

  • 날개 자체가 로터와 함께 틸트
  • 고속·장거리 능력
  • 대표: Lilium Jet (36개 전기 엔진 날개 내장)

6.4 인증 체계

FAA (미국):

  • eVTOL을 "Powered-Lift" 카테고리로 재분류
  • AC 21.17-4 (2025.07): 최대 12,500 lbs, 6석 이하, 배터리 전기 추진
  • Joby: Stage 4 인증 70% 완료 (2025 Q3)
  • Archer: 55마일 최장 유인 비행 달성 (2025.08)

EASA (유럽):

  • SC-VTOL (Special Condition - VTOL) 발행
  • FAA와 표준 조화(harmonization) 추진

6.5 배터리 기술

항목현재필요
리튬이온 에너지 밀도~250 Wh/kg-
300km 항속-300-600 Wh/kg
600km 항속-600+ Wh/kg
경제적 장거리-800+ Wh/kg

고체 전해질 배터리 돌파:

  • EHang + Inx: 480 Wh/kg 달성
  • 세계 최초 eVTOL 고체 전해질 배터리 비행 시험 성공 (48분 10초)
  • 장점: 높은 에너지 밀도, 열 안정성, 인화성 감소

7. PX4 오토파일럿

7.1 아키텍처

PX4는 마이크로커널 철학을 따르며, 모듈 간 통신에 uORB (Micro Object Request Broker) 발행-구독 버스를 사용한다.

┌──────────────────────────────────────────────────┐
PX4 Flight Stack│                                                   │
│  센서 드라이버 ──┐                                  │
EKF2 추정기  ──┼──→ [uORB 버스] ──→ MAVLink│  제어 모듈    ──┤                ──→ 믹서/액추에이터  │
│  비행 모드    ──┘                ──→ 로거          │
└──────────────────────────────────────────────────┘

7.2 비행 모드

수동 모드:

모드설명
Stabilized스틱이 기체 각도 제어, 놓으면 수평 복귀
Acro곡예 비행, 스틱이 각속도 제어

보조 모드:

모드설명센서 요구
Altitude고도 유지, 수평 수동기압계
Position3D 위치 유지 — 가장 안전GPS + 기압계

자율 모드:

모드설명
Hold현재 위치 호버링
Return안전 고도 상승 → 홈 귀환 → 착륙
Mission웨이포인트 자율 비행
Offboard외부(컴패니언) 설정값 추종

드론-지상국/컴패니언 간 경량 메시징 프로토콜.

MAVLink v2 메시지 구조:

[STX][LEN][INC][CMP][SEQ][SYS_ID][COMP_ID][MSG_ID(3B)][PAYLOAD][CRC][SIGNATURE]
  • Heartbeat: 1Hz 주기, 기체 유형·비행 모드·시스템 상태 포함
  • QGroundControl: MAVLink 기반 오픈소스 지상 제어 스테이션

8. ArduPilot

8.1 PX4 vs ArduPilot

항목ArduPilotPX4
라이선스GPL (공개 의무)BSD (공개 불필요)
코드 규모700,000+ 줄상대적으로 작음
아키텍처모놀리식 경향마이크로커널 (uORB)
커뮤니티매우 크고 활발기업(Auterion) 주도
실전 검증최고 수준정밀 제어 특화
기본 EKFEKF3ECL EKF2
GCSMission Planner, QGCQGroundControl

8.2 지원 기체

기체ArduPilotPX4
Copter (멀티로터)ArduCopter지원
Plane (고정익)ArduPlane지원
Rover (지상)ArduRover지원
Sub (수중)ArduSub제한적
VTOLQuadPlane지원 (강점)
Helicopter전통 헬리 지원제한적
Blimp/Boat지원미지원

9. ROS2 통합

9.1 두 가지 통합 방식

┌──────────────────┐     ┌──────────────────┐
│ 컴패니언 컴퓨터    │     │ Pixhawk (PX4)│                  │     │                  │
[ROS2 노드]     │     │  [PX4 Autopilot]│       │          │     │       │          │
[uXRCE-DDS     │◄───►│  [uXRCE-DDS     │  ← 방식 1 (권장)
Agent]UARTClient]│       또는        │     │                  │
[MAVROS]       │◄───►│  [MAVLink]       │  ← 방식 2 (레거시)
└──────────────────┘     └──────────────────┘

방식 1: uXRCE-DDS (권장)

  • PX4 내장 DDS 클라이언트 → ROS2 DDS에 직접 참여
  • uORB 토픽이 ROS2 토픽으로 직접 매핑
  • MAVLink를 거치지 않아 낮은 지연, 높은 대역폭

방식 2: MAVROS (레거시)

  • MAVLink → ROS2 토픽/서비스 브릿지
  • ArduPilot과 호환

9.2 오프보드 제어 예시

import rclpy
from rclpy.node import Node
from px4_msgs.msg import (
    OffboardControlMode,
    TrajectorySetpoint,
    VehicleCommand
)

class OffboardControl(Node):
    def __init__(self):
        super().__init__('offboard_control')
        self.offboard_pub = self.create_publisher(
            OffboardControlMode, '/fmu/in/offboard_control_mode', 10)
        self.trajectory_pub = self.create_publisher(
            TrajectorySetpoint, '/fmu/in/trajectory_setpoint', 10)
        self.command_pub = self.create_publisher(
            VehicleCommand, '/fmu/in/vehicle_command', 10)

    def arm(self):
        msg = VehicleCommand()
        msg.command = VehicleCommand.VEHICLE_CMD_COMPONENT_ARM_DISARM
        msg.param1 = 1.0  # Arm
        self.command_pub.publish(msg)

    def set_position(self, x, y, z):
        msg = TrajectorySetpoint()
        msg.position = [x, y, z]  # NED 좌표
        self.trajectory_pub.publish(msg)

10. SITL/HITL 시뮬레이션

10.1 SITL (Software-In-The-Loop)

실제 하드웨어 없이 개발 PC에서 비행 펌웨어를 실행하며 시뮬레이션한다.

# PX4 SITL + Gazebo
cd PX4-Autopilot
make px4_sitl gz_x500

# Micro XRCE-DDS Agent (별도 터미널)
MicroXRCEAgent udp4 -p 8888

# ArduPilot SITL + Gazebo
sim_vehicle.py -v ArduCopter -f gazebo-iris --console --map
  • 실제 펌웨어와 동일한 코드 실행 (시뮬레이션 드라이버만 다름)
  • 위험 없이 알고리즘 검증, 빠른 반복 개발

10.2 HITL (Hardware-In-The-Loop)

실제 Pixhawk 하드웨어에서 정상 펌웨어를 실행하며, 시뮬레이터가 센서 데이터를 제공한다.

  • 실제 하드웨어 타이밍·성능 검증
  • 하드웨어 호환성 문제 사전 발견
  • 실비행 전 최종 검증 단계

10.3 Gazebo 통합

Gazebo Harmonic (현재 권장):

  • 물리 엔진, 센서 시뮬레이션, 카메라/LiDAR 렌더링
  • PX4와 MAVLink 또는 직접 플러그인 통신
  • ROS2 Humble 연동

11. 학습 로드맵

11.1 기초 (1-2개월)

순서주제자료
1PID 제어 이론Duckietown - Intro to Drones
2PX4 SITL 환경 설정PX4 Simulation
3QGroundControl 기본QGC User Guide
4칼만 필터 기초kalmanfilter.net

11.2 중급 (2-4개월)

순서주제자료
5PX4 개발PX4 Dev Guide
6EKF2 센서 퓨전PX4 EKF Tuning
7ROS2 + PX4 통합PX4 ROS2 Guide
8ESC 프로토콜 (DShot)Oscar Liang - DShot

11.3 고급 (4-6개월)

순서주제자료
9자율 비행 (Offboard)px4-offboard
10ArduPilot 개발ArduPilot Dev Guide
11eVTOL 제어 알고리즘논문 및 실습
12실기체 조립·튜닝Pixhawk 6X + 프레임 조립

12. References

공식 문서

  1. PX4 User Guide
  2. PX4 Dev Guide
  3. ArduPilot Copter Docs
  4. MAVLink Guide
  5. QGroundControl User Guide
  6. Pixhawk Open Standards

하드웨어

  1. Holybro Pixhawk 6X
  2. Holybro Pixhawk 6C
  3. Dronecode FMUv6 Family

제어 및 추정

  1. PX4 Controller Diagrams
  2. PX4 EKF2 Tuning Guide
  3. ArduPilot EKF Overview
  4. Kalman Filter Tutorial

ESC 프로토콜

  1. DShot Protocol - Oscar Liang
  2. ESC Firmware and Protocols - Oscar Liang
  3. ArduPilot PWM/DShot ESCs

eVTOL

  1. eVTOL Guide - Dewesoft
  2. eVTOL Market Analysis - MotorWatt
  3. FAA eVTOL Certification
  4. EHang Solid-State Battery Flight

ROS2 통합

  1. PX4 ROS2 Integration
  2. PX4 uXRCE-DDS Bridge
  3. MAVROS GitHub

GitHub 저장소

  1. PX4/PX4-Autopilot
  2. ArduPilot/ardupilot
  3. px4-offboard (ROS2 예제)
  4. MAVSDK