Browse Source

Hotfix and cleanup for system mixers

sbg
Lorenz Meier 11 years ago
parent
commit
0388d9adef
  1. 39
      ROMFS/px4fmu_common/init.d/11001_hexa_cox
  2. 4
      ROMFS/px4fmu_common/init.d/12001_octo_cox
  3. 2
      ROMFS/px4fmu_common/init.d/6001_hexa_x_pwm
  4. 2
      ROMFS/px4fmu_common/init.d/7001_hexa_+_pwm
  5. 2
      ROMFS/px4fmu_common/init.d/8001_octo_x_pwm
  6. 2
      ROMFS/px4fmu_common/init.d/9001_octo_+_pwm
  7. 11
      ROMFS/px4fmu_common/init.d/rc.autostart
  8. 12
      ROMFS/px4fmu_common/init.d/rcS
  9. 17
      ROMFS/px4fmu_common/mixers/FMU_hex_+.mix
  10. 17
      ROMFS/px4fmu_common/mixers/FMU_hex_x.mix
  11. 6
      ROMFS/px4fmu_common/mixers/FMU_octo_cox.mix
  12. 6
      ROMFS/px4fmu_common/mixers/FMU_octo_x.mix
  13. 154
      ROMFS/px4fmu_common/mixers/README
  14. 3
      ROMFS/px4fmu_common/mixers/hexa_cox.mix

39
ROMFS/px4fmu_common/init.d/11001_hexa_cox

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
#!nsh
#
# UNTESTED UNTESTED!
#
# Generic 10” Hexa coaxial geometry
#
# Lorenz Meier <lm@inf.ethz.ch>
#
if [ $DO_AUTOCONFIG == yes ]
then
#
# Default parameters for this platform
#
param set MC_ATT_P 7.0
param set MC_ATT_I 0.0
param set MC_ATT_D 0.0
param set MC_ATTRATE_P 0.12
param set MC_ATTRATE_I 0.0
param set MC_ATTRATE_D 0.004
param set MC_YAWPOS_P 2.0
param set MC_YAWPOS_I 0.0
param set MC_YAWPOS_D 0.0
param set MC_YAWRATE_P 0.3
param set MC_YAWRATE_I 0.2
param set MC_YAWRATE_D 0.005
# TODO add default MPC parameters
fi
set VEHICLE_TYPE mc
set MIXER hexa_cox
set PWM_OUTPUTS 12345678
set PWM_RATE 400
# DJI ESC range
set PWM_DISARMED 900
set PWM_MIN 1200
set PWM_MAX 1900

4
ROMFS/px4fmu_common/init.d/12001_octo_cox_pwm → ROMFS/px4fmu_common/init.d/12001_octo_cox

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
#
# Generic 10” Octo coaxial geometry
#
# Maintainers: Lorenz Meier <lm@inf.ethz.ch>
# Lorenz Meier <lm@inf.ethz.ch>
#
if [ $DO_AUTOCONFIG == yes ]
@ -29,7 +29,7 @@ fi @@ -29,7 +29,7 @@ fi
set VEHICLE_TYPE mc
set MIXER FMU_octo_cox
set PWM_OUTPUTS 1234
set PWM_OUTPUTS 12345678
set PWM_RATE 400
# DJI ESC range
set PWM_DISARMED 900

2
ROMFS/px4fmu_common/init.d/6001_hexa_x_pwm

@ -29,7 +29,7 @@ fi @@ -29,7 +29,7 @@ fi
set VEHICLE_TYPE mc
set MIXER FMU_hexa_x
set PWM_OUTPUTS 1234
set PWM_OUTPUTS 12345678
set PWM_RATE 400
# DJI ESC range
set PWM_DISARMED 900

2
ROMFS/px4fmu_common/init.d/7001_hexa_+_pwm

@ -29,7 +29,7 @@ fi @@ -29,7 +29,7 @@ fi
set VEHICLE_TYPE mc
set MIXER FMU_hexa_+
set PWM_OUTPUTS 1234
set PWM_OUTPUTS 12345678
set PWM_RATE 400
# DJI ESC range
set PWM_DISARMED 900

2
ROMFS/px4fmu_common/init.d/8001_octo_x_pwm

@ -29,7 +29,7 @@ fi @@ -29,7 +29,7 @@ fi
set VEHICLE_TYPE mc
set MIXER FMU_octo_x
set PWM_OUTPUTS 1234
set PWM_OUTPUTS 12345678
set PWM_RATE 400
# DJI ESC range
set PWM_DISARMED 900

2
ROMFS/px4fmu_common/init.d/9001_octo_+_pwm

@ -29,7 +29,7 @@ fi @@ -29,7 +29,7 @@ fi
set VEHICLE_TYPE mc
set MIXER FMU_octo_+
set PWM_OUTPUTS 1234
set PWM_OUTPUTS 12345678
set PWM_RATE 400
# DJI ESC range
set PWM_DISARMED 900

11
ROMFS/px4fmu_common/init.d/rc.autostart

@ -185,11 +185,20 @@ then @@ -185,11 +185,20 @@ then
sh /etc/init.d/10016_3dr_iris
fi
#
# Hexa Coaxial
#
if param compare SYS_AUTOSTART 11001
then
sh /etc/init.d/11001_hexa_cox
fi
#
# Octo Coaxial
#
if param compare SYS_AUTOSTART 12001
then
sh /etc/init.d/12001_octo_cox_pwm
sh /etc/init.d/12001_octo_cox
fi

12
ROMFS/px4fmu_common/init.d/rcS

@ -467,19 +467,23 @@ then @@ -467,19 +467,23 @@ then
# Use mixer to detect vehicle type
if [ $MIXER == FMU_hex_x -o $MIXER == FMU_hex_+ ]
then
param set MAV_TYPE 13
set MAV_TYPE 13
fi
if [ $MIXER == hexa_cox ]
then
set MAV_TYPE 13
fi
if [ $MIXER == FMU_octo_x -o $MIXER == FMU_octo_+ ]
then
param set MAV_TYPE 14
set MAV_TYPE 14
fi
if [ $MIXER == FMU_octo_cox ]
then
param set MAV_TYPE 14
set MAV_TYPE 14
fi
fi
param set MAV_TYPE $MAV_TYPE
param set MAV_TYPE $MAV_TYPE
# Load mixer and configure outputs
sh /etc/init.d/rc.interface

17
ROMFS/px4fmu_common/mixers/FMU_hex_+.mix

@ -1,18 +1,3 @@ @@ -1,18 +1,3 @@
Multirotor mixer for PX4FMU
===========================
This file defines a single mixer for a hexacopter in the + configuration. All controls
are mixed 100%.
# Hexa +
R: 6+ 10000 10000 10000 0
Gimbal / payload mixer for last two channels
-----------------------------------------------------
M: 1
O: 10000 10000 0 -10000 10000
S: 0 6 10000 10000 0 -10000 10000
M: 1
O: 10000 10000 0 -10000 10000
S: 0 7 10000 10000 0 -10000 10000

17
ROMFS/px4fmu_common/mixers/FMU_hex_x.mix

@ -1,18 +1,3 @@ @@ -1,18 +1,3 @@
Multirotor mixer for PX4FMU
===========================
This file defines a single mixer for a hexacopter in the X configuration. All controls
are mixed 100%.
# Hexa X
R: 6x 10000 10000 10000 0
Gimbal / payload mixer for last two channels
-----------------------------------------------------
M: 1
O: 10000 10000 0 -10000 10000
S: 0 6 10000 10000 0 -10000 10000
M: 1
O: 10000 10000 0 -10000 10000
S: 0 7 10000 10000 0 -10000 10000

6
ROMFS/px4fmu_common/mixers/FMU_octo_cox.mix

@ -1,7 +1,3 @@ @@ -1,7 +1,3 @@
Multirotor mixer for PX4FMU
===========================
This file defines a single mixer for a Coaxial Octocopter in the X configuration. All controls
are mixed 100%.
# Octo coaxial
R: 8c 10000 10000 10000 0

6
ROMFS/px4fmu_common/mixers/FMU_octo_x.mix

@ -1,7 +1,3 @@ @@ -1,7 +1,3 @@
Multirotor mixer for PX4FMU
===========================
This file defines a single mixer for a octocopter in the X configuration. All controls
are mixed 100%.
# Octo X
R: 8x 10000 10000 10000 0

154
ROMFS/px4fmu_common/mixers/README

@ -1,154 +0,0 @@ @@ -1,154 +0,0 @@
PX4 mixer definitions
=====================
Files in this directory implement example mixers that can be used as a basis
for customisation, or for general testing purposes.
Mixer basics
------------
Mixers combine control values from various sources (control tasks, user inputs,
etc.) and produce output values suitable for controlling actuators; servos,
motors, switches and so on.
An actuator derives its value from the combination of one or more control
values. Each of the control values is scaled according to the actuator's
configuration and then combined to produce the actuator value, which may then be
further scaled to suit the specific output type.
Internally, all scaling is performed using floating point values. Inputs and
outputs are clamped to the range -1.0 to 1.0.
control control control
| | |
v v v
scale scale scale
| | |
| v |
+-------> mix <------+
|
scale
|
v
out
Scaling
-------
Basic scalers provide linear scaling of the input to the output.
Each scaler allows the input value to be scaled independently for inputs
greater/less than zero. An offset can be applied to the output, and lower and
upper boundary constraints can be applied. Negative scaling factors cause the
output to be inverted (negative input produces positive output).
Scaler pseudocode:
if (input < 0)
output = (input * NEGATIVE_SCALE) + OFFSET
else
output = (input * POSITIVE_SCALE) + OFFSET
if (output < LOWER_LIMIT)
output = LOWER_LIMIT
if (output > UPPER_LIMIT)
output = UPPER_LIMIT
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.
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 <control count> is zero, the sum is effectively zero and the mixer will
output a fixed value that is <offset> constrained by <lower limit> and <upper
limit>.
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 <control count> entries describing the control
inputs and their scaling, in the form:
S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>
The <group> value identifies the control group from which the scaler will read,
and the <index> 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.

3
ROMFS/px4fmu_common/mixers/hexa_cox.mix

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# Hexa coaxial
R: 6c 10000 10000 10000 0
Loading…
Cancel
Save