PX4 Autopilot Software
Go to file
Samuel Sadok ee75ebac8c
Adds Smart Return To Home capability by recording the flight path in a memory optimimized format. This means the UAV can return to home by using only known-good flight paths.
The flight graph is stored as a series of delta elements at 1m resolution and a list of nodes. Both lists share the same buffer. Each delta element takes up 2 bytes or sometimes 6 bytes if the delta is large. The path can consist of multiple disconnected segments, in which case the gaps are stored as delta elements with a jump-bit set.

Once in a while or when required the graph is consolidated, which means:
 - Points that lie roughly in a line are replaced by a single line
 - Points that lie close to previously recorded lines are pruned
 - For lines that pass close to each other a node element is created

Furthermore:
 - The graph is recorded at a higher precision closer to home
 - If the graph becomes full, the overall precision is reduced and the whole graph is re-consolidated
 - If the graph becomes full once more, all data is removed except for the shortest path home at that moment. One of these actions is repeated at each subsequent fill-up.

Path finding information is generated/refreshed on demand and stored in the nodes. During return-to-home, the best direction to home is continuously evaluated by using the information stored in the nodes.

The graph recording and path finding is implemented in navigator/tracker.cpp.
The graph based return-to-home is implemented in navigator/smart_rtl.cpp.
2020-10-04 12:16:45 -04:00
.ci New board Scumaker AirPi HAT for Raspberry Pi B series 2020-10-01 11:22:47 -04:00
.devcontainer update all px4-dev-base and px4-dev-nuttx container usage uniformly 2020-09-18 13:03:07 -04:00
.github boards: CUAV CAN_GPS v1.2 cannode (stm32f412) with UAVCAN bootloader 2020-09-23 14:30:54 -04:00
.vscode boards: CUAV CAN_GPS v1.2 cannode (stm32f412) with UAVCAN bootloader 2020-09-23 14:30:54 -04:00
Documentation DriverFramework purge 2020-01-13 14:07:03 -05:00
ROMFS ROMFS: 50000_generic_ground_vehicle remove fmu-v2 exclude 2020-09-28 22:43:28 -04:00
Tools Adds Smart Return To Home capability by recording the flight path in a memory optimimized format. This means the UAV can return to home by using only known-good flight paths. 2020-10-04 12:16:45 -04:00
boards kakutef7: fix output ordering 2020-10-03 10:45:30 -04:00
cmake PX4 add compiler dependent: disable no-stringop-truncation 2020-09-16 21:32:04 -04:00
integrationtests/python_src/px4_it Added Roll Pitch Yawrate Thrust offboard test. Testing... 2020-04-30 17:43:25 -04:00
launch posix: enable ROMFSROOT 2020-09-15 09:30:16 +02:00
mavlink/include/mavlink Update submodule mavlink v2.0 to latest Sat Sep 26 15:30:19 UTC 2020 2020-09-26 13:14:25 -04:00
msg examples: add Gyro FFT using CMSIS 5 on Cortex-m (#15104) 2020-10-02 11:47:27 -04:00
platforms Adds Smart Return To Home capability by recording the flight path in a memory optimimized format. This means the UAV can return to home by using only known-good flight paths. 2020-10-04 12:16:45 -04:00
posix-configs posix-configs/rpi: Fix mavlink over UART (/dev/ttyAMA0) 2020-10-03 10:51:27 -04:00
src Adds Smart Return To Home capability by recording the flight path in a memory optimimized format. This means the UAV can return to home by using only known-good flight paths. 2020-10-04 12:16:45 -04:00
test Make mavsdk test runner handle generated sdf files (#15797) 2020-09-29 15:44:58 +02:00
test_data rc: add unit test for CRSF RC 2018-07-28 15:23:09 +02:00
validation params: make parameter units more consistent (#15502) 2020-08-24 11:33:08 +02:00
.ackrc ack: add .ackrc to ignore the Documentation directory 2016-04-11 11:23:01 +02:00
.clang-tidy clang-tidy: enable readability-braces-around-statements 2019-10-28 10:50:31 -04:00
.gitattributes gitattributes eol=lf for nearly all file types 2020-08-05 11:32:26 -04:00
.github_changelog_generator Changelog generator default params 2017-12-30 11:27:57 +01:00
.gitignore linux boards (ocpoc, bbblue, navio2) replace custom adc drivers with simple px4_arch implementation 2020-01-07 14:04:13 -05:00
.gitmodules examples: add Gyro FFT using CMSIS 5 on Cortex-m (#15104) 2020-10-02 11:47:27 -04:00
.travis.yml travis: change coverity to run on master 2020-01-16 13:31:41 -05:00
.ycm_extra_conf.py update C++ standard (c++11 -> c++14) 2020-01-21 21:49:10 -05:00
CMakeLists.txt cmake: only allow gold linker for posix builds 2020-07-23 09:41:35 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-07-30 19:18:49 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md 2020-04-29 22:49:30 +01:00
CTestConfig.cmake gather test results 2017-01-02 10:14:41 +01:00
Firmware.sublime-project boards new split VENDOR_MODEL naming convention 2018-11-26 14:40:14 -08:00
Jenkinsfile Jenkins: temporarily disable catkin build on ROS workspace 2020-09-21 22:48:33 -04:00
LICENSE License: It is 2020 now 2020-03-02 08:27:40 +01:00
Makefile Makefile: fix mavsdk_tests invocation 2020-07-21 13:52:47 +02:00
PULL_REQUEST_TEMPLATE.md PULL_REQUEST_TEMPLATE: change order of titles (#13174) 2019-10-14 13:11:44 +02:00
README.md README: remove broken jenkins build status badge 2020-07-15 09:54:30 -04:00
appveyor.yml appveyor: switch to Cygwin toolchain v0.9 2020-03-24 13:31:41 +00:00
eclipse.cproject boards new split VENDOR_MODEL naming convention 2018-11-26 14:40:14 -08:00
eclipse.project boards new split VENDOR_MODEL naming convention 2018-11-26 14:40:14 -08:00
package.xml Remove eigen leftovers 2019-10-07 12:04:50 +02:00

README.md

PX4 Drone Autopilot

Releases DOI

Nuttx Targets SITL Tests

Slack

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 Users

The PX4 User Guide explains how to assemble supported vehicles and fly drones with PX4. See the forum and chat if you need help!

PX4 Developers

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

See also maintainers list (px4.io) and the contributors list (Github).

Supported Hardware

This repository contains code supporting these boards:

Additional information about supported hardware can be found in PX4 user Guide > Autopilot Hardware.

Project Roadmap

A high level project roadmap is available here.