Skip to content
Published on

Pixhawk & eVTOL Flight Control Mastery: From PX4, Kalman Filters, PWM Signals, and Sensor Fusion to ROS2 Integration

Authors
  • Name
    Twitter

1. Overview

Drones and eVTOLs (electric Vertical Takeoff and Landing aircraft) are no longer experimental technology. In 2026, Joby Aviation and Archer Aviation are launching commercial operations, and Urban Air Mobility (UAM) is becoming a reality. At the heart of all this technology lies the flight control system.

This post provides a comprehensive summary of the core elements of flight control.

┌────────────────────────────────────────────────────────────┐
Flight Control System Architecture│                                                             │
Sensor Layer     Estimation Layer   Control Layer  Output│  ┌─────────┐    ┌──────────┐    ┌──────────┐    ┌────────┐│
│  │IMU(6DoF)│    │  Kalman   │    │PID Control│PWM/  ││
│  │GPS      │──→│ Filter    │──→│ Pos→Vel   │──→│ DShot  ││
│  │Baro     │    (EKF2/3)  │    │ →Att→Rate │    │  ESC   ││
│  │Mag      │    │Sen. Fusion│    │ →Mixer   │    │ Motors ││
│  └─────────┘    └──────────┘    └──────────┘    └────────┘│
│                                                             │
Comms: MAVLink ←→ QGroundControl / ROS2 / Companion PC└────────────────────────────────────────────────────────────┘

2. Pixhawk — The Standard in Open-Source Flight Controllers

2.1 What Is Pixhawk?

Pixhawk is not a specific product but an open hardware standard. It is maintained by the Dronecode Foundation (under the Linux Foundation), and over one million Pixhawk-based devices are in operation worldwide.

2.2 FMU Version History

VersionProcessorKey Features
FMUv2STM32F427 (Cortex-M4, 168MHz)First commercial Pixhawk
FMUv3STM32F427Flash expanded to 2MB
FMUv5STM32F7CAN bus added, improved expandability
FMUv5XSTM32F7Modular design, triple redundancy introduced
FMUv6XSTM32H753 (Cortex-M7, 480MHz)Ethernet, triple IMU, separated sensor domains
FMUv6CSTM32H743 (Cortex-M7, 480MHz)Cost-optimized, dual redundant IMU

2.3 Pixhawk 6X (FMUv6X) Detailed Specifications

Processors:

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

Onboard Sensors (Triple Redundant):

Sensor TypeModelCountNotes
IMU (Accel/Gyro)ICM-456863BalancedGyro technology, separate bus & power
BarometerICP20100, BMP3882Dual redundant
MagnetometerBMM1501-

Key Interfaces:

  • 16+ PWM servo outputs (8 IO + 8 FMU)
  • Ethernet PHY — high-speed communication with mission computers
  • 4x UART, 3x SPI, 2x CAN, 2x I2C
  • USB-C, RC input (SBUS/CPPM/DSM)

Modular Design: IMU Board + FMU Board + Base Board separated via 100-pin/50-pin Pixhawk Autopilot Bus connectors

2.4 Pixhawk 6C (FMUv6C)

ItemSpecification
ProcessorSTM32H743 (Cortex-M7, 480MHz)
IMUICM-42688-P + BMI055 (dual redundant)
BarometerMS5611
MagnetometerIST8310
Dimensions84.8 x 44 x 12.4 mm
Weight59.3g (aluminum) / 34.6g (plastic)
Operating Temp-25 to 85 deg C

2.5 Supported Autopilot Firmware

FirmwareLicenseFeatures
PX4 AutopilotBSDDronecode official, microkernel architecture, precise control
ArduPilotGPLCommunity-driven, broad vehicle support, field-proven

2.6 Ecosystem

Manufacturers: Holybro, CUAV, ARK Electronics, ModalAI, NXP, mRo, Auterion Tools: QGroundControl (GCS), MAVLink, MAVSDK, MAVROS, ROS2 integration


3. Flight Control System Architecture

3.1 Cascaded Control Structure

The PX4 multicopter controller uses a cascaded position-velocity-attitude-rate loop.

[Pos SP][Pos P][Vel PID][Att P][Rate K-PID][Mixer][Motors]
  Outer loop           Mid loop      Att loop     Inner loop
  ~50Hz               ~50Hz         ~250Hz        ~1000Hz
LayerControllerInputOutputUpdate Rate
Position (outer)P controllerPosition errorVelocity setpoint~50Hz
Velocity (mid)PID controllerVelocity errorAcceleration setpoint~50Hz
AttitudeP controller (quaternion)Attitude errorRate setpoint~250Hz
Rate (inner)K-PID controllerRate errorTorque/thrust cmd~1000Hz

3.2 PID Controller

Continuous-Time 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}

Discrete-Time PID (flight controller implementation):

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}

ParameterRoleIncreasingDecreasing
KpK_p (Proportional)Immediate response to errorFaster response, more oscillationSlower, more stable
KiK_i (Integral)Eliminates steady-state errorConverges to zero error, overshoot riskResidual error remains
KdK_d (Derivative)Responds to rate of change (damping)Reduces overshoot, noise-sensitiveIncreased oscillation

3.3 Position/Velocity Controller

Position Controller (P):

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

  • PX4 parameters: MPC_XY_P, MPC_Z_P
  • Velocity saturation: MPC_XY_VEL_MAX

Velocity Controller (PID): Velocity error to acceleration setpoint, with anti-reset windup applied

3.4 Attitude/Rate Controller

Attitude Controller (P, quaternion-based):

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

Rate Controller (K-PID): Low-pass filter applied to the derivative path for noise reduction

Gyroscope Data Processing Pipeline:

  1. Calibration correction -> 2. Bias removal -> 3. Notch filter -> 4. Low-pass filter

3.5 Mixer (Control Allocation)

Converts rate controller outputs into individual motor commands.

Quadcopter X-configuration example:

[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}

Where TT = total thrust, τx\tau_x = roll torque, τy\tau_y = pitch torque, τz\tau_z = yaw torque


4. PWM Signals and ESC Protocols

4.1 PWM (Pulse Width Modulation) Fundamentals

PWM is a technique that conveys analog values by modulating the duty cycle of a digital signal.

     ┌────┐              ┌────────┐
     │    │              │        │
─────┘    └──────────────┘        └──────────
     |<-->|              |<------>|
     1000us              2000us
     (0% throttle)       (100% throttle)
     |<-------------------->|
         20ms (50Hz period)
ParameterValue
Pulse width range1000us (min) to 2000us (max)
Neutral point1500us
Standard period20ms (50Hz)
Resolution1000 steps
Signal latency~2ms

4.2 ESC Protocol Comparison

ProtocolTypePulse WidthMax Update RateResolutionError Detection
Standard PWMAnalog1000-2000us500Hz1000None
OneShot125Analog125-250us4kHz1000None
OneShot42Analog42-84us~12kHz1000None
MultishotAnalog5-25us~32kHz1000None
DShot150Digital-150 kbps2048CRC 4-bit
DShot300Digital-300 kbps2048CRC 4-bit
DShot600Digital-600 kbps2048CRC 4-bit
DShot1200Digital-1200 kbps2048CRC 4-bit

4.3 DShot Protocol in Detail

DShot is the de facto standard ESC protocol as of 2025.

Frame Structure (16 bits):

[11-bit throttle (0-2047)] [1-bit telemetry request] [4-bit CRC]
  • Throttle values 1-47: Reserved for special commands (beep, motor direction reversal, ESC settings)
  • Bit encoding: 0/1 distinguished by HIGH/LOW ratio (1 = 75% HIGH, 0 = 37.5% HIGH)

Bidirectional DShot:

  • ESC sends eRPM telemetry back to the FC
  • Real-time RPM data enables dynamic notch filtering, dramatically improving vibration suppression
  • Data provided: RPM, voltage, current, temperature

4.4 PWM vs DShot — Key Differences

CharacteristicPWM (Analog)DShot (Digital)
Signal methodValue encoded via pulse width0/1 bit stream
CalibrationRequired (varies per ESC)Not required
Noise immunityLowHigh (CRC error detection)
Resolution1000 steps2048 steps
BidirectionalNot possiblePossible (telemetry)
Special commandsNot possiblePossible

5. Kalman Filter — The Core Algorithm of Flight Control

5.1 Kalman Filter Fundamentals

The Kalman filter is a recursive algorithm that optimally estimates system state from noisy multi-sensor measurements.

┌──────────────────────────────────────────────────────┐
Kalman Filter Cycle│                                                       │
│  ┌──────────────────┐     ┌──────────────────┐       │
│  │  Step 1: Predict  │     │  Step 2: Update   │       │
  (Time Update)    │────►│  (Meas. Update)  │       │
│  │                  │     │                  │       │
│  │  x̂ = F·x + B·u  │     │  K = P·Hᵀ·S⁻¹   │       │
│  │  P = F·P·F+ Q │     │  x̂ =+ K·(z-Hx̂)│       │
│  │                  │     │  P = (I-KH)·P    │       │
│  │ Predict via      │     │ Correct with     │       │
│  │ motion model     │     │ measurements     │       │
│  └──────────────────┘     └────────┬─────────┘       │
│           ▲                        │                  │
│           └────────────────────────┘                  │
Repeat└──────────────────────────────────────────────────────┘

Step 1: Prediction (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

SymbolMeaning
x^\hat{x}State estimate vector
FkF_kState transition matrix
BkB_kControl input matrix
uku_kControl input (e.g., gyro angular rate)
PPError covariance matrix
QkQ_kProcess noise covariance

Step 2: Update (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}

SymbolMeaning
KkK_kKalman gain — determines weighting between prediction and measurement
HkH_kObservation matrix
zkz_kActual measurement
RkR_kMeasurement noise covariance

Intuition Behind the Kalman Gain:

  • K1K \to 1: Trust the measurement more (low measurement noise)
  • K0K \to 0: Trust the prediction more (accurate model)

5.2 Extended Kalman Filter (EKF)

Since drone dynamics are nonlinear, the standard Kalman filter cannot be applied directly. The EKF linearizes nonlinear functions using a first-order Taylor series expansion.

Nonlinear System:

xk=f(xk1,uk)+wk(state transition)x_k = f(x_{k-1}, u_k) + w_k \quad \text{(state transition)}

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

EKF Prediction:

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 Update:

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 Error-State Kalman Filter (ESKF)

PX4's EKF2 implements the Error-State Kalman Filter. It is essential for estimating uncertainty in quaternion rotations.

Key Idea:

  • Instead of directly estimating the quaternion, estimate the error rotation vector
  • Represent rotational uncertainty as a 3D vector in the tangent space of SO(3)
  • Separate the Nominal State (inertial navigation equations) from the Error State (Kalman filter)

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

5.4 PX4 EKF2 (ECL EKF) — 24-State Vector

IndexStateDescription
0-3Quaternion (q0-q3)NED to Body frame rotation
4-6Velocity (Vn, Ve, Vd)NED frame [m/s]
7-9Position (Pn, Pe, Pd)NED frame [m]
10-12Gyro biasIMU gyroscope [rad/s]
13-15Accelerometer biasIMU accelerometer [m/s^2]
16-18Earth magnetic fieldNED frame [Gauss]
19-21Body magnetic field biasBody frame
22-23Wind velocity (Wn, We)North/East wind [m/s]

Sensor Fusion Architecture:

  • Delayed fusion: Sensor data stored in a FIFO buffer to accommodate per-sensor time delays, fusing data at matching timestamps
  • IMU data: Used only for state prediction, never as an observation
  • Multiple EKF instances: Enhanced fault detection (MAX(IMU count, 1) x MAX(magnetometer count, 1), up to 16 instances)
  • Multi-hypothesis filter: Gaussian sum filter for yaw estimation, capable of using GPS velocity alone

5.5 ArduPilot EKF2 vs EKF3

FeatureEKF2EKF3 (current default)
Sensor affinityNot supportedSupported — dynamic non-primary sensor switching
Additional sensorsBasic onlyBeacons, wheel encoders, visual odometry
Lane switchingLimitedDynamic lane switching
FallbackEKF2 to DCMEKF3 to DCM
ParametersEK2_*EK3_*

5.6 Complementary Filter vs Kalman Filter

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

Where α=ττ+Δt\alpha = \frac{\tau}{\tau + \Delta t} (typically 0.96-0.98)

FeatureComplementary FilterKalman Filter
ComplexityLowHigh
Compute loadLightweight (embedded)Heavy (FPU required)
PrincipleHPF(gyro) + LPF(accelerometer)Optimal weighted average (covariance)
BiasMay be presentBias-free
Multi-sensorSuited for 2 sensorsOptimal for multiple sensors
Fault toleranceNoneInnovation consistency check

6. eVTOL (Electric Vertical Takeoff and Landing)

6.1 What Is eVTOL?

An eVTOL is an aircraft that takes off and lands vertically using an electric propulsion system and flies horizontally. As a core element of Urban Air Mobility (UAM), it is ushering in the era of "flying taxis."

6.2 Market Overview

  • Market size: ~4.2Bin2025to 4.2B in 2025 to ~8.0B by 2033 (CAGR 37%)
  • Commercial operations expected to begin in 2026: Joby Aviation, Archer Aviation
CompanyAircraftMax SpeedRangePassengersMarket Share
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 Airframe Configuration Types

Multirotor

    ①        ②
     \      /
      ┌────┐
      │    │
      └────┘
     /      \
    ③        ④
  • 4-8 rotors provide both lift and thrust
  • Pros: Simple, stable hovering
  • Cons: Worst energy efficiency (inefficient during cruise)
  • Examples: EHang EH216-S, Volocopter VoloCity

Lift + Cruise

    Vertical rotor  Vertical rotor        Rear propeller
         ↓              ↓                     ↓
       ┌──┐          ┌──┐    ═══════    ▶───
       └──┘          └──┘      Wing
  • Separate rotors for vertical takeoff and propellers for horizontal flight
  • Pros: Each flight phase is optimized
  • Cons: Vertical rotors are dead weight during cruise
  • Examples: Archer Midnight, Vertical Aerospace VX4

Tiltrotor

  Hover:Cruise:
  ↑  ↑       →  →
  │  │       ╱  ╲
  ┌──┐      ┌──────┐
  └──┘      └──────┘
  • Rotors tilt between vertical and horizontal orientations
  • Pros: Efficient with a single propulsion system
  • Cons: Mechanical complexity of tilt mechanism
  • Examples: Joby S4 (6 tilting rotors), Bell Nexus

Tiltwing

  • The wing itself tilts along with the rotors
  • High-speed, long-range capability
  • Examples: Lilium Jet (36 electric engines embedded in wings)

6.4 Certification Framework

FAA (United States):

  • eVTOL reclassified under the "Powered-Lift" category
  • AC 21.17-4 (2025.07): Max 12,500 lbs, 6 seats or fewer, battery-electric propulsion
  • Joby: Stage 4 certification 70% complete (2025 Q3)
  • Archer: Achieved longest piloted flight of 55 miles (2025.08)

EASA (Europe):

  • Issued SC-VTOL (Special Condition - VTOL)
  • Pursuing standards harmonization with FAA

6.5 Battery Technology

ItemCurrentRequired
Li-ion energy density~250 Wh/kg-
300km range-300-600 Wh/kg
600km range-600+ Wh/kg
Economical long-range-800+ Wh/kg

Solid-State Battery Breakthrough:

  • EHang + Inx: Achieved 480 Wh/kg
  • World's first eVTOL solid-state battery flight test successful (48 min 10 sec)
  • Advantages: Higher energy density, thermal stability, reduced flammability

7. PX4 Autopilot

7.1 Architecture

PX4 follows a microkernel philosophy, using the uORB (Micro Object Request Broker) publish-subscribe bus for inter-module communication.

┌──────────────────────────────────────────────────┐
PX4 Flight Stack│                                                   │
Sensor Drivers ──┐                               │
EKF2 Estimator ──┼──→ [uORB Bus] ──→ MAVLinkControl Modules──┤              ──→ Mixer/Actuators│
Flight Modes   ──┘              ──→ Logger└──────────────────────────────────────────────────┘

7.2 Flight Modes

Manual Modes:

ModeDescription
StabilizedStick controls vehicle angle, levels on release
AcroAerobatic flight, stick controls angular rate

Assisted Modes:

ModeDescriptionSensor Required
AltitudeHolds altitude, manual horizontalBarometer
PositionHolds 3D position — safestGPS + Barometer

Autonomous Modes:

ModeDescription
HoldHovers at current position
ReturnClimbs to safe altitude, returns home, lands
MissionAutonomous waypoint flight
OffboardFollows setpoints from companion PC

A lightweight messaging protocol for communication between drones and ground stations or companion computers.

MAVLink v2 Message Structure:

[STX][LEN][INC][CMP][SEQ][SYS_ID][COMP_ID][MSG_ID(3B)][PAYLOAD][CRC][SIGNATURE]
  • Heartbeat: Sent at 1Hz, includes vehicle type, flight mode, and system status
  • QGroundControl: Open-source ground control station based on MAVLink

8. ArduPilot

8.1 PX4 vs ArduPilot

ItemArduPilotPX4
LicenseGPL (disclosure required)BSD (no disclosure required)
Code size700,000+ linesRelatively smaller
ArchitectureMonolithic tendencyMicrokernel (uORB)
CommunityVery large and activeCorporate-led (Auterion)
Field-provenTop tierSpecialized in precise control
Default EKFEKF3ECL EKF2
GCSMission Planner, QGCQGroundControl

8.2 Supported Vehicles

VehicleArduPilotPX4
Copter (multirotor)ArduCopterSupported
Plane (fixed-wing)ArduPlaneSupported
Rover (ground)ArduRoverSupported
Sub (underwater)ArduSubLimited
VTOLQuadPlaneSupported (strength)
HelicopterTraditional heli supportLimited
Blimp/BoatSupportedNot supported

9. ROS2 Integration

9.1 Two Integration Approaches

┌──────────────────┐     ┌──────────────────┐
Companion Computer│Pixhawk (PX4)│                  │     │                  │
[ROS2 Nodes]    │     │  [PX4 Autopilot]│       │          │     │       │          │
[uXRCE-DDS     │◄───►│  [uXRCE-DDS     │  ← Approach 1 (Recommended)
Agent]UARTClient]│       or         │     │                  │
[MAVROS]       │◄───►│  [MAVLink]       │  ← Approach 2 (Legacy)
└──────────────────┘     └──────────────────┘

Approach 1: uXRCE-DDS (Recommended)

  • PX4's built-in DDS client participates directly in the ROS2 DDS network
  • uORB topics map directly to ROS2 topics
  • Bypasses MAVLink for lower latency and higher bandwidth

Approach 2: MAVROS (Legacy)

  • MAVLink to ROS2 topic/service bridge
  • Compatible with ArduPilot

9.2 Offboard Control Example

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 coordinates
        self.trajectory_pub.publish(msg)

10. SITL/HITL Simulation

10.1 SITL (Software-In-The-Loop)

Runs the flight firmware on a development PC without any physical hardware.

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

# Micro XRCE-DDS Agent (separate terminal)
MicroXRCEAgent udp4 -p 8888

# ArduPilot SITL + Gazebo
sim_vehicle.py -v ArduCopter -f gazebo-iris --console --map
  • Runs the exact same code as real firmware (only simulation drivers differ)
  • Risk-free algorithm validation and rapid iterative development

10.2 HITL (Hardware-In-The-Loop)

Runs standard firmware on actual Pixhawk hardware, with the simulator providing sensor data.

  • Validates real hardware timing and performance
  • Catches hardware compatibility issues early
  • Final verification step before real flight

10.3 Gazebo Integration

Gazebo Harmonic (currently recommended):

  • Physics engine, sensor simulation, camera/LiDAR rendering
  • Communicates with PX4 via MAVLink or direct plugin interface
  • Integration with ROS2 Humble

11. Learning Roadmap

11.1 Beginner (1-2 Months)

OrderTopicResource
1PID control theoryDuckietown - Intro to Drones
2PX4 SITL environmentPX4 Simulation
3QGroundControl basicsQGC User Guide
4Kalman filter basicskalmanfilter.net

11.2 Intermediate (2-4 Months)

OrderTopicResource
5PX4 developmentPX4 Dev Guide
6EKF2 sensor fusionPX4 EKF Tuning
7ROS2 + PX4 integrationPX4 ROS2 Guide
8ESC protocols (DShot)Oscar Liang - DShot

11.3 Advanced (4-6 Months)

OrderTopicResource
9Autonomous flight (Offboard)px4-offboard
10ArduPilot developmentArduPilot Dev Guide
11eVTOL control algorithmsPapers and hands-on practice
12Real vehicle build and tuningPixhawk 6X + frame assembly

12. References

Official Documentation

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

Hardware

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

Control and Estimation

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

ESC Protocols

  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 Integration

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

GitHub Repositories

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