PX4 Autopilot Software
Go to file
Azarakhsh Keipour 5c09254a83 Gazebo model for the fully-actuated hexarotor added 2020-12-06 20:51:48 -05:00
.ci sensor accel/gyro message cleanup 2020-01-18 01:15:00 -05:00
.circleci CI: update all docker tags 2020-01-13 21:48:35 +00:00
.github CI: update all docker tags 2020-01-13 21:48:35 +00:00
.vscode VSCode: Tasks formatted as the one on master now 2020-01-21 18:23:07 -05:00
Documentation DriverFramework purge 2020-01-13 14:07:03 -05:00
ROMFS Omni Pos-Ctrl: Reduced jerking when a large command is given in offboard 2020-08-03 22:22:03 -04:00
Tools Defined the new tilted hex airframe 2020-01-21 18:23:06 -05:00
boards v5x target: Fix wrong FD for TELEM3 2020-01-21 23:27:59 +01:00
cmake cmake: move jinja2 check to Python modules 2020-01-16 16:25:26 +01:00
integrationtests/python_src/px4_it mission_test: fix px4tools func import 2020-01-13 21:48:35 +00:00
launch posix: add argument to change the CWD (#12482) 2019-08-01 12:25:35 -04:00
mavlink/include/mavlink Update submodule mavlink v2.0 to latest Fri Jan 17 00:39:17 UTC 2020 2020-01-16 21:19:56 -05:00
msg Omni: Added a new message type to record omni-directional attitude generation status 2020-08-05 21:59:18 -04:00
platforms VSCode: Autogenerating launch.json entry for the tilted_hex gazebo simulation 2020-01-21 18:23:07 -05:00
posix-configs DriverFramework purge 2020-01-13 14:07:03 -05:00
sitl_gazebo_fully_actuated Gazebo model for the fully-actuated hexarotor added 2020-12-06 20:51:48 -05:00
src Omni Att Ctrl: Manual mode no longer uses the attitude mode and acts like an underactuated UAV 2020-09-29 14:01:24 -04:00
test mavsdk_tests: don't constrain speed factor to int 2020-01-17 10:32:21 +01:00
test_data
validation Refactored to work with new battery_status module 2019-12-05 16:38:04 +01:00
.ackrc
.clang-tidy clang-tidy: enable readability-braces-around-statements 2019-10-28 10:50:31 -04:00
.gitattributes gitattributes *.bin, *.pdf, and *.png are binary 2019-08-28 11:01:35 -04:00
.github_changelog_generator
.gitignore linux boards (ocpoc, bbblue, navio2) replace custom adc drivers with simple px4_arch implementation 2020-01-07 14:04:13 -05:00
.gitmodules msg: remove gencpp and genmsh submodules; remove gencpp imports 2020-01-13 21:48:35 +00:00
.travis.yml travis: change coverity to run on master 2020-01-16 13:31:41 -05:00
.ycm_extra_conf.py boards new split VENDOR_MODEL naming convention 2018-11-26 14:40:14 -08:00
CMakeLists.txt cmake: add custom error messsage about Python 3 2020-01-16 16:25:26 +01:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md CONTRIBUTING:Fix up code.html link to goto master 2019-03-03 22:23:59 -05:00
CTestConfig.cmake
Firmware.sublime-project boards new split VENDOR_MODEL naming convention 2018-11-26 14:40:14 -08:00
Jenkinsfile Jenkins: move "Cppcheck" stage to ROS Melodic container, as cppcheck-hmtlreport requires Python (2) pygments 2020-01-15 10:16:59 +00:00
LICENSE license: account for 2019 2019-01-31 17:43:35 +01:00
Makefile atlflight/eagle: minor fixes to get it running again 2020-01-09 18:09:06 -05:00
PULL_REQUEST_TEMPLATE.md PULL_REQUEST_TEMPLATE: change order of titles (#13174) 2019-10-14 13:11:44 +02:00
README.md Gazebo model for the fully-actuated hexarotor added 2020-12-06 20:51:48 -05:00
appveyor.yml appveyor: switch to toolchain version 0.8 2020-01-13 21:48:35 +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 Autopilot Extended to Fully-Actuated Multirotors

This is the repository for the PX4 autopilot with the enhanced ability to work with fully-actuated robots. It is based on the original PX4 firmware (current version branched from master on Jan 21, 2020) and supports all the functionality and airframes of the original PX4 in the same way. However, it additionally provides implementations of attitude strategies for fully-actuated multorotors that allow the 6-DoF flight. It includes the definitions for a hexarotor with all rotors tilted sideways and has been tested on several UAVs.

For more information and to access the publications, please visit the AirLab's website.

To access the original PX4 autopilot repository and website, please visit here and here.

How to use the firmware

For general PX4 functionality, please visit PX4 User Guide and PX4 Developer Guide.

To be able to compile the firmware, you need to first setup your system and install the toolchain. Then clone this repository and all its submodules:

git clone https://github.com/castacks/PX4-fully-actuated.git --recursive

Test that everything works fine using the guide on this page.

The current tilted-hex airframe is defined to have 30 degrees of side tilt, similar to what is described in our papers. To change the geometry for your airframe, you can modify the definition of the tilted hex or add your own definition. To add the new definition file, please consult the PX4 guides above. To modify our airframe, you can find it here.

After compiling the firmware and uploading it on your hardware (see here), choose Hexarotor x with tilted arms airframe. This firmware also adds a set of parameters all starting with OMNI_. To see the description of the parameters, please refer here. The most important parameter is OMNI_ATT_MODE which supports the attitude strategies.

We have tested the firmware only with Pixracer. If you have flash memory issues when compiling for your hardware, one solution is to comment the geometries that you don't need in this CMakeLists file.

Simulation and more

More detailed guide will be incrementally added here. Please reach us directly or submit an issue on this repository if you have specific questions, concerns, feedback or bug reports.

To simulate using gazebo, you need to add the model and the world of your fully-actuated UAV to the firmware. Optionally you can modify the model files for our hexarotor (with all arms tilted for 30 degrees).

To enable simulation for our multirotor, copy the contents of the world and model folders from sitl_gazebo_fully_actuated to the world and model folders in Tools/sitl_gazebo. Now you can run the SITL simulation of our UAV using the following command:

make px4_sitl gazebo_hexa_x_tilt

If you get gazebo_opticalflow_plugin.h:43:18: error: TRUE was not declared in this scope, simply replace TRUE with true in Tools/sitl_gazebo/include/gazebo_opticalflow_plugin.h line 43.

Disclaimer

Note that changing any of the parameters (e.g., the attitude modes) will affect the flight behavior of the UAV mid-flight.

Finally, we are still in the testing/development phase and the code is in no way fully tested or complete. Use the code at your own risk and please report any bugs or issues to help us make the firmware more useful for the users.

Acknowledgment

In the initial commits, the idea of how to extend PX4 to support 3-D thrust and fully-actuated vehicles have been taken from here.