diff --git a/ROMFS/px4fmu_common/init.d/24001_dodeca_cox b/ROMFS/px4fmu_common/init.d/24001_dodeca_cox new file mode 100644 index 0000000000..fb2ed1301b --- /dev/null +++ b/ROMFS/px4fmu_common/init.d/24001_dodeca_cox @@ -0,0 +1,51 @@ +#!nsh +# +# @name Generic Dodecarotor cox geometry +# +# @type Dodecarotor cox +# @class Copter +# +# @output MAIN1 motor 1 +# @output MAIN2 motor 2 +# @output MAIN3 motor 3 +# @output MAIN4 motor 4 +# @output MAIN5 motor 5 +# @output MAIN6 motor 6 +# +# @output AUX1 motor 7 +# @output AUX2 motor 8 +# @output AUX3 motor 9 +# @output AUX4 motor 10 +# @output AUX5 motor 11 +# @output AUX6 motor 12 +# +# @maintainer Ian McNanie +# @maintainer William Peale +# + +set VEHICLE_TYPE mc + +if [ $AUTOCNF == yes ] +then + param set NAV_ACC_RAD 2.0 + param set RTL_RETURN_ALT 30.0 + param set RTL_DESCEND_ALT 10.0 + param set PWM_MIN 1075 + param set PWM_MAX 1950 + param set PWM_RATE 400 + + param set RTL_LAND_DELAY 0 +fi + +set PWM_AUX_RATE 400 +# Note: May Have to set these parameters manually. They don't appear to save. +set PWM_AUX_DISARMED 900 +param set PWM_AUX_MIN 1075 +param set PWM_AUX_MAX 1950 + +set MIXER dodeca_top_cox +set MIXER_AUX dodeca_bottom_cox + +# Need to set all 8 channels +set PWM_OUT 12345678 +set PWM_AUX_OUT 123456 \ No newline at end of file diff --git a/ROMFS/px4fmu_common/mixers/dodeca_bottom_cox.aux.mix b/ROMFS/px4fmu_common/mixers/dodeca_bottom_cox.aux.mix new file mode 100644 index 0000000000..4f86498d69 --- /dev/null +++ b/ROMFS/px4fmu_common/mixers/dodeca_bottom_cox.aux.mix @@ -0,0 +1,3 @@ +# Dodeca Cox + +R: 6a 10000 10000 10000 0 \ No newline at end of file diff --git a/ROMFS/px4fmu_common/mixers/dodeca_top_cox.main.mix b/ROMFS/px4fmu_common/mixers/dodeca_top_cox.main.mix new file mode 100644 index 0000000000..97f136071d --- /dev/null +++ b/ROMFS/px4fmu_common/mixers/dodeca_top_cox.main.mix @@ -0,0 +1,3 @@ +# Dodeca Cox + +R: 6m 10000 10000 10000 0 \ No newline at end of file diff --git a/src/modules/systemlib/mixer/mixer_multirotor.cpp b/src/modules/systemlib/mixer/mixer_multirotor.cpp index ccaa9ef8f7..ac5afbbb00 100644 --- a/src/modules/systemlib/mixer/mixer_multirotor.cpp +++ b/src/modules/systemlib/mixer/mixer_multirotor.cpp @@ -172,6 +172,13 @@ MultirotorMixer::from_text(Mixer::ControlCallback control_cb, uintptr_t cb_handl } else if (!strcmp(geomname, "8c")) { geometry = MultirotorGeometry::OCTA_COX; + } else if (!strcmp(geomname, "6m")) { + geometry = MultirotorGeometry::DODECA_TOP_COX; + + } else if (!strcmp(geomname, "6a")) { + geometry = MultirotorGeometry::DODECA_BOTTOM_COX; + + #if 0 } else if (!strcmp(geomname, "8cw")) { diff --git a/src/modules/systemlib/mixer/multi_tables.py b/src/modules/systemlib/mixer/multi_tables.py index 1584ccf1de..6765efdfea 100755 --- a/src/modules/systemlib/mixer/multi_tables.py +++ b/src/modules/systemlib/mixer/multi_tables.py @@ -195,8 +195,25 @@ tri_y = [ [ 180, 0.0], ] +dodeca_top_cox = [ + [ 90, CW], + [ -90, CCW], + [ -30, CW], + [ 150, CCW], + [ 30, CCW], + [-150, CW], +] -tables = [quad_x, quad_h, quad_plus, quad_v, quad_wide, quad_s250aq, quad_deadcat, hex_x, hex_plus, hex_cox, hex_t, octa_x, octa_plus, octa_cox, octa_cox_wide, twin_engine, tri_y] +dodeca_bottom_cox = [ + [ 90, CCW], + [ -90, CW], + [ -30, CCW], + [ 150, CW], + [ 30, CW], + [-150, CCW], +] + +tables = [quad_x, quad_h, quad_plus, quad_v, quad_wide, quad_s250aq, quad_deadcat, hex_x, hex_plus, hex_cox, hex_t, octa_x, octa_plus, octa_cox, octa_cox_wide, twin_engine, tri_y, dodeca_top_cox, dodeca_bottom_cox] def variableName(variable): for variableName, value in list(globals().items()):