0f29b87101
- Source processing now happens on original source files: - processing to line-by-line - required overhaul of regex match patterns + processing - pros: - enable tracing of ambiguous parsing sites -- reports (module, file, line-number, line-contents) - simplifies code - reduces computational complexity - cons: - certain declarations are harder to parse: multiline declarations - refactors: - added specific subclasses for each: Publications, Subscriptions, Ambiguities - added a "Scope" class to represent either a module ('ModuleScope') or a library ('LibraryScope') - regexes: - added cases for C++-style classes - expanded C++-style regex cases to accommodate templates - `ORB_ID::` is accepted wherever `ORB_ID(` is accepted - adds 'orb_copy' regex to the subscription cases - emit ambiguous-line warning for declarations with `ORB_ID` on the same line - emit ambiguous-line warning for `ORB_ID` with a declaration on the same line - changed 'module whitelist' to 'scope-whitelist' - whitelist may now apply to libraries - libraries are optionally merged with their depending modules (but not by default) - may be merged with their depending modules with the `--merge-depends` cli flag - eliminates some redundant 'special-case' handling code - debug output - raises exception and aborts if a topic is found outside of a scope - debug output is now printed & filtered with the python 'logging' standard module - alphabetizes topic output in debug logging - fixes debug output if package dependencies are missing - now warns on ambiguous matches - prints a list of ambiguous source sites (aka warnings) on completion - (still) emits a warning if we find ORB_ID outside of a scope - adds warnings if any of the source paths are invalid - do not emit debug output for modules outside of the module/scope whitelist - Expand script's CLI parameters - added 'none' output options: undocumented debugging option to silence file output while debugging - added the `--merge-depends` cli flag -- merges output of modules & their dependee libraries |
||
---|---|---|
.ci | ||
.devcontainer | ||
.github | ||
.vscode | ||
Documentation | ||
ROMFS | ||
Tools | ||
boards | ||
cmake | ||
integrationtests/python_src/px4_it | ||
launch | ||
mavlink/include/mavlink | ||
msg | ||
platforms | ||
posix-configs | ||
src | ||
test | ||
test_data | ||
validation | ||
.ackrc | ||
.clang-tidy | ||
.gitattributes | ||
.github_changelog_generator | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
.ycm_extra_conf.py | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
CTestConfig.cmake | ||
Firmware.sublime-project | ||
Jenkinsfile | ||
LICENSE | ||
Makefile | ||
PULL_REQUEST_TEMPLATE.md | ||
README.md | ||
appveyor.yml | ||
eclipse.cproject | ||
eclipse.project | ||
package.xml |
README.md
PX4 Drone Autopilot
This repository holds the PX4 flight control solution for drones, with the main applications located in the src/modules directory. It also contains the PX4 Drone Middleware Platform, which provides drivers and middleware to run drones.
PX4 is highly portable, OS-independent and supports Linux, NuttX and QuRT out of the box.
- Official Website: http://px4.io (License: BSD 3-clause, LICENSE)
- Supported airframes (portfolio):
- Multicopters
- Fixed wing
- VTOL
- Autogyro
- Rover
- many more experimental types (Blimps, Boats, Submarines, Autogyros, etc)
- Releases: Downloads
Building a PX4 based drone, rover, boat or robot
The PX4 User Guide explains how to assemble supported vehicles and fly drones with PX4. See the forum and chat if you need help!
Changing code and contributing
This Developer Guide is for software developers who want to modify the flight stack and middleware (e.g. to add new flight modes), hardware integrators who want to support new flight controller boards and peripherals, and anyone who wants to get PX4 working on a new (unsupported) airframe/vehicle.
Developers should read the Guide for Contributions. See the forum and chat if you need help!
Weekly Dev Call
The PX4 Dev Team syncs up on a weekly dev call.
Note The dev call is open to all interested developers (not just the core dev team). This is a great opportunity to meet the team and contribute to the ongoing development of the platform. It includes a QA session for newcomers. All regular calls are listed in the Dronecode calendar.
Maintenance Team
- Project: Founder
- Architecture
- Dev Call
- Communication Architecture
- UI in QGroundControl
- Multicopter Flight Control
- Multicopter Software Architecture
- VTOL Flight Control
- Fixed Wing Flight Control
- OS / NuttX
- Driver Architecture
- Commander Architecture
- UAVCAN
- State Estimation
- Vision based navigation and Obstacle Avoidance
- RTPS/ROS2 Interface
See also maintainers list (px4.io) and the contributors list (Github).
Supported Hardware
This repository contains code supporting Pixhawk standard boards (best supported, best tested, recommended choice) and proprietary boards.
Pixhawk Standard Boards
- FMUv2
- FMUv3
- FMUv4 (STM32F4)
- FMUv5 (STM32F7)
- FMUv6X and FMUv6U (STM32H7)
- Various vendors will provide FMUv6X and FMUv6U based designs Q2/2021
Manufacturer and Community supported
- Holybro Durandal
- Hex Cube Orange
- Hex Cube Yellow
- Airmind MindPX V2.8
- Airmind MindRacer V1.2
- Bitcraze Crazyflie 2.0
- Omnibus F4 SD
- Holybro Kakute F7
- Raspberry PI with Navio 2
Additional information about supported hardware can be found in PX4 user Guide > Autopilot Hardware.
Project Roadmap
A high level project roadmap is available here.