Ramon Roche 49e5550b94 perf(mavlink): remove mutex from forward_message hot path
Remove mavlink_module_mutex from forward_message() to eliminate
per-message lock overhead in the forwarding path.

The mutex is unnecessary because:
- Instances can only be destroyed via destroy_all_instances(), which
  stops all threads before modifying the array
- Pointer reads from mavlink_module_instances[] are naturally atomic
  on aligned architectures (ARM, x86)
- pass_message() has its own per-instance _message_buffer_mutex

Benchmark results (SITL SIH, 2 connections, wall-clock timing):

  200 Hz (400 msg/s): avg 648 ns -> 563 ns (-13%)
  500 Hz (1000 msg/s): avg 469 ns -> 407 ns (-13%)
  Mutex lock section: avg 327 ns -> 262 ns (-20%)

Benchmark gist: https://gist.github.com/mrpollo/167d4ec7436fb773bf193be6c2800639

Also includes a MAVSDK C++ traffic generator tool for reproducing
the benchmark.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-31 18:15:20 -07:00
2026-02-27 12:39:32 -08:00
2026-03-31 23:42:44 +00:00
2017-07-30 19:18:49 +02:00
2025-08-21 16:46:06 +02:00

PX4 Autopilot

The autopilot stack the industry builds on.

Releases OpenSSF Best Practices DOI Build Targets Discord


About

PX4 is an open-source autopilot stack for drones and unmanned vehicles. It supports multirotors, fixed-wing, VTOL, rovers, and many more experimental platforms from racing quads to industrial survey aircraft. It runs on NuttX, Linux, and macOS. Licensed under BSD 3-Clause.

Why PX4

Modular architecture. PX4 is built around uORB, a DDS-compatible publish/subscribe middleware. Modules are fully parallelized and thread safe. You can build custom configurations and trim what you don't need.

Wide hardware support. PX4 runs on a wide range of autopilot boards and supports an extensive set of sensors, telemetry radios, and actuators through the Pixhawk ecosystem.

Developer friendly. First-class support for MAVLink and DDS / ROS 2 integration. Comprehensive SITL simulation, hardware-in-the-loop testing, and log analysis tools. An active developer community on Discord and the weekly dev call.

Vendor neutral governance. PX4 is hosted under the Dronecode Foundation, part of the Linux Foundation. Business-friendly BSD-3 license. No single vendor controls the roadmap.

Supported Vehicles

Multicopter
Multicopter
Fixed Wing
Fixed Wing
VTOL
VTOL
Rover
Rover

…and many more: helicopters, autogyros, airships, submarines, boats, and other experimental platforms. These frames have basic support but are not part of the regular flight-test program. See the full airframe reference.

Quick Start

git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
make px4_sitl

Note

See the Development Guide for toolchain setup and build options.

Documentation & Resources

Resource Description
User Guide Build, configure, and fly with PX4
Developer Guide Modify the flight stack, add peripherals, port to new hardware
Airframe Reference Full list of supported frames
Autopilot Hardware Compatible flight controllers
Release Notes What's new in each release
Contribution Guide How to contribute to PX4

Community

Contributing

We welcome contributions of all kinds — bug reports, documentation, new features, and code reviews. Please read the Contribution Guide to get started.

Governance

The PX4 Autopilot project is hosted by the Dronecode Foundation, a Linux Foundation Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship — no single company owns the name or controls the roadmap. The source code is licensed under the BSD 3-Clause license, so you are free to use, modify, and distribute it in your own projects.

Dronecode Logo

S
Description
a mirror of official PX4-Autopilot
Readme BSD-3-Clause Cite this repository
587 MiB
Languages
C++ 51.2%
C 38.5%
CMake 4.7%
Python 3.9%
Shell 1.3%
Other 0.1%