px4-firmware/ROMFS/px4fmu_common/mixers
ksschwabe 500a1c808d ROMFS list files explicitly instead of using GLOB_RECURSE (#9107)
* Lists ROMFS files explicity instead of using GLOB_RECURSE

Previously, when ROMFS files that were not airframes were touched, the ROMFS
would not be rebuilt. The ROMFS files are now specified explicityl in a
CMakeLists.txt file that is located in the root ROMFS directory.

Now when one of the ROMFS files is touched the whole ROMFS is rebuilt.

When new files are added to the ROMFS, they need to be explicity added to
the CMakeLists in the ROMFS root directory.

* ROMFS: adds individual CMakeLists files in each subdirectory

Also moves the temporary ROMFS build directory to ${PX4_BINARY_DIR}/ROMFS/genromfs
so that the cmake_install.cmake files and the CMakeFiles directories (generated whenever
are not add_subdirectory() is called) are not generated in the temporary ROMFS directory
from which the ROMFS binary is created.

* cmake ROMFS generate add px4_add_romfs_files function

* ROMFS CMakeLists: adds explanatory comment to px4_add_romfs_files function

* ROMFS CMakeLists: updates copyright headers
2018-03-26 11:19:00 -04:00
..
AAERTWF.main.mix Add the flaperons again to the AAERTWF mixer 2017-10-12 12:03:22 +02:00
AAVVTWFF.main.mix fixed flaps offset to have correct neutral position 2015-11-17 22:28:09 +01:00
AERT.main.mix Add AERT mixer 2018-02-13 20:45:19 -05:00
AETRFG.main.mix standard plane consistent metadata 2017-07-09 16:36:44 -04:00
CCPM.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
CMakeLists.txt ROMFS list files explicitly instead of using GLOB_RECURSE (#9107) 2018-03-26 11:19:00 -04:00
FMU_pass.mix Merge working changes into export-build branch. 2013-04-26 16:14:32 -07:00
FX79.main.mix romfs mixer files: remove executable bit of file permission 2016-04-11 11:23:00 +02:00
IO_pass.main.mix renamed IO_pass.mix to IO_pass.main.mix 2015-02-20 14:42:29 +01:00
README.md fix mixers README.md 2015-06-07 21:37:07 -04:00
Viper.main.mix romfs mixer files: remove executable bit of file permission 2016-04-11 11:23:00 +02:00
bebop.main.mix ROMFS:Removed fmuv1 exclude from mixers 2017-09-10 13:37:23 -04:00
blade130.main.mix Generic helicopter mixer 2016-12-10 14:45:49 +01:00
caipi.main.mix mixer: Removed the pitch offset in the mixer file for the TBS Caipirinha since it should be handled by either hardware installation or trim parameter 2017-01-12 13:35:30 -08:00
caipirinha_vtol.main.mix reduce output scaling as workaround for broken output limits 2016-03-01 09:21:58 +01:00
claire.aux.mix Update claire.aux.mix 2016-12-07 20:17:43 +01:00
claire.main.mix Quad tilt vtol config (#4473) 2016-06-29 09:14:18 +02:00
coax.main.mix Removed 'degree' character that caused python3 to act up while pruning the mixer file 2016-12-09 21:12:12 +01:00
delta.main.mix Clean up mixers, remove unused pass-through mixers from planes clobbering up RAM 2016-03-12 16:43:30 +01:00
deltaquad.main.mix Better scaling for reverse mixer 2017-11-18 13:51:46 +01:00
dodeca_bottom_cox.aux.mix Dodeca mixer using the AUX channels (#7532) 2017-07-05 22:17:33 +02:00
dodeca_top_cox.main.mix Dodeca mixer using the AUX channels (#7532) 2017-07-05 22:17:33 +02:00
firefly6.aux.mix Bring back the ability to transition plus a partial cleanup of tiltrotor support and firefly6 config updates. 2015-08-05 16:16:03 +02:00
firefly6.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
fw_generic_wing.main.mix airframe metadata sort by SYS_AUTOSTART and minor cleanup (#8009) 2017-09-25 11:17:50 -04:00
hexa_+.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
hexa_cox.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
hexa_x.main.mix posix-configs: use 'mixer append' command for typhoon mount mixer 2016-09-19 07:54:51 +02:00
mount.aux.mix mount.aux.mix: remove the mode channel 2017-04-25 12:59:12 +02:00
mount_legs.aux.mix tap: add landing gear capability 2016-10-20 23:17:05 +02:00
ocpoc_quad_x.main.mix mixers: add default mixer for Aerotenna OcPoC-Zynq hardware 2017-06-04 04:24:50 +08:00
octo_+.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
octo_cox.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
octo_cox_w.main.mix Add Steadidrone MAVRIK mixer and gains. 2016-02-02 08:31:08 +01:00
octo_x.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
pass.aux.mix TBS Disco config: Enable manual pass-through 2015-05-04 13:02:29 +02:00
phantom.main.mix Clean up mixers, remove unused pass-through mixers from planes clobbering up RAM 2016-03-12 16:43:30 +01:00
quad_+.main.mix Quad mixers: Add AUX1-2 passthrough 2016-05-01 16:24:52 +02:00
quad_+_vtol.main.mix Fix typo for Quad + mixer 2015-07-30 15:59:42 +02:00
quad_dc.main.mix Fix usage of Iris mixer, make space by deleting unused files 2016-12-19 20:39:48 +01:00
quad_h.main.mix Quad mixers: Add AUX1-2 passthrough 2016-05-01 16:24:52 +02:00
quad_s250aq.main.mix add new asymmetric airframe for Spedix S250AQ 2016-12-21 11:00:29 +01:00
quad_w.main.mix Quad mixers: Add AUX1-2 passthrough 2016-05-01 16:24:52 +02:00
quad_x.main.mix Quad mixers: Add AUX1-2 passthrough 2016-05-01 16:24:52 +02:00
quad_x_can.main.mix Performance audit (intentionally duplicates #6829) (#6847) 2017-03-18 04:16:20 -10:00
quad_x_vtol.main.mix Get closer to correct tailsitter mixer, still incomplete 2016-06-17 22:44:42 +02:00
quad_x_vtol_sim.main.mix ROMFS: added mixer for tailsitter simulation 2018-02-13 20:47:40 -05:00
stampede.main.mix unmanned ground vehicle (UGV) controllers and Traxxas Stampede configuration (#7175) 2017-06-06 13:26:51 -04:00
tri_y_yaw+.main.mix tricopter comment polish 2015-02-06 19:04:51 -08:00
tri_y_yaw-.main.mix tricopter comment polish 2015-02-06 19:04:51 -08:00
ugv_generic.main.mix airframe metadata sort by SYS_AUTOSTART and minor cleanup (#8009) 2017-09-25 11:17:50 -04:00
vtol_AAERT.aux.mix Don't use the control surface abbreviation but use the actual channel assignment. 2015-08-06 10:49:39 +02:00
vtol_AAVVT.aux.mix Added V-Tail VTOL config and mixer 2015-11-19 04:56:33 +01:00
vtol_convergence.main.mix Convergence: increase yaw output in mixer 2017-02-18 08:03:19 +01:00
vtol_delta.aux.mix Support thrust reversal for vtol back transition 2017-08-16 03:06:13 +02:00
wingwing.main.mix Changed naming of the mixers to get rid of umbiguity as outputs are actually going to be driven by io, not fmu 2015-01-08 00:53:52 +02:00
zmr250.main.mix ROMFS:Removed fmuv1 exclude from mixers 2017-09-10 13:37:23 -04:00

README.md

PX4 mixer definitions

Files in this directory implement example mixers that can be used as a basis for customisation, or for general testing purposes.

For a detailed description of the mixing architecture and examples see: http://px4.io/dev/mixing

Syntax

Mixer definitions are text files; lines beginning with a single capital letter followed by a colon are significant. All other lines are ignored, meaning that explanatory text can be freely mixed with the definitions.

Each file may define more than one mixer; the allocation of mixers to actuators is specific to the device reading the mixer definition, and the number of actuator outputs generated by a mixer is specific to the mixer.

For example: each simple or null mixer is assigned to outputs 1 to x in the order they appear in the mixer file.

A mixer begins with a line of the form

<tag>: <mixer arguments>

The tag selects the mixer type; 'M' for a simple summing mixer, 'R' for a multirotor mixer, etc.

Null Mixer

A null mixer consumes no controls and generates a single actuator output whose value is always zero. Typically a null mixer is used as a placeholder in a collection of mixers in order to achieve a specific pattern of actuator outputs.

The null mixer definition has the form:

Z:

Simple Mixer

A simple mixer combines zero or more control inputs into a single actuator output. Inputs are scaled, and the mixing function sums the result before applying an output scaler.

A simple mixer definition begins with:

M: <control count>
O: <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>

If is zero, the sum is effectively zero and the mixer will output a fixed value that is constrained by and .

The second line defines the output scaler with scaler parameters as discussed above. Whilst the calculations are performed as floating-point operations, the values stored in the definition file are scaled by a factor of 10000; i.e. an offset of -0.5 is encoded as -5000.

The definition continues with entries describing the control inputs and their scaling, in the form:

S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>

The value identifies the control group from which the scaler will read, and the value an offset within that group. These values are specific to the device reading the mixer definition.

When used to mix vehicle controls, mixer group zero is the vehicle attitude control group, and index values zero through three are normally roll, pitch, yaw and thrust respectively.

The remaining fields on the line configure the control scaler with parameters as discussed above. Whilst the calculations are performed as floating-point operations, the values stored in the definition file are scaled by a factor of 10000; i.e. an offset of -0.5 is encoded as -5000.

Multirotor Mixer

The multirotor mixer combines four control inputs (roll, pitch, yaw, thrust) into a set of actuator outputs intended to drive motor speed controllers.

The mixer definition is a single line of the form:

R: <geometry> <roll scale> <pitch scale> <yaw scale> <deadband>

The supported geometries include:

  • 4x - quadrotor in X configuration
  • 4+ - quadrotor in + configuration
  • 6x - hexcopter in X configuration
  • 6+ - hexcopter in + configuration
  • 8x - octocopter in X configuration
  • 8+ - octocopter in + configuration

Each of the roll, pitch and yaw scale values determine scaling of the roll, pitch and yaw controls relative to the thrust control. Whilst the calculations are performed as floating-point operations, the values stored in the definition file are scaled by a factor of 10000; i.e. an factor of 0.5 is encoded as 5000.

Roll, pitch and yaw inputs are expected to range from -1.0 to 1.0, whilst the thrust input ranges from 0.0 to 1.0. Output for each actuator is in the range -1.0 to 1.0.

In the case where an actuator saturates, all actuator values are rescaled so that the saturating actuator is limited to 1.0.