diff --git a/ROMFS/px4fmu_common/init.d/12002_steadidrone_mavrik b/ROMFS/px4fmu_common/init.d/12002_steadidrone_mavrik new file mode 100644 index 0000000000..2d9a6dbd3b --- /dev/null +++ b/ROMFS/px4fmu_common/init.d/12002_steadidrone_mavrik @@ -0,0 +1,41 @@ +#!nsh +# +# @name Steadidrone MAVRIK +# +# @type Octo Coax Wide +# +# @maintainer Simon Wilks +# + +sh /etc/init.d/rc.mc_defaults + +if [ $AUTOCNF == yes ] +then + param set MC_PITCH_P 4.0 + param set MC_PITCHRATE_P 0.24 + param set MC_PITCHRATE_I 0.09 + param set MC_PITCHRATE_D 0.013 + param set MC_PITCHRATE_MAX 180.0 + + param set MC_ROLL_P 4.0 + param set MC_ROLLRATE_P 0.16 + param set MC_ROLLRATE_I 0.07 + param set MC_ROLLRATE_D 0.009 + param set MC_ROLLRATE_MAX 180.0 + + param set MC_YAW_P 3.0 + param set MC_YAWRATE_P 0.2 + param set MC_YAWRATE_I 0.1 + param set MC_YAWRATE_D 0.0 + param set MC_YAW_FF 0.5 + + param set MPC_HOLD_MAX_XY 0.25 + param set MPC_THR_MIN 0.15 + param set MPC_Z_VEL_MAX 2.0 + + param set BAT_N_CELLS 4 +fi + +set MIXER octo_cox_w + +set PWM_OUT 12345678 diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index 8f87cecd79..b734a73551 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -692,7 +692,7 @@ then then set MAV_TYPE 14 fi - if [ $MIXER == octo_cox ] + if [ $MIXER == octo_cox -o $MIXER == octo_cox_w ] then set MAV_TYPE 14 fi diff --git a/ROMFS/px4fmu_common/mixers/octo_cox_w.main.mix b/ROMFS/px4fmu_common/mixers/octo_cox_w.main.mix new file mode 100644 index 0000000000..03938ff42a --- /dev/null +++ b/ROMFS/px4fmu_common/mixers/octo_cox_w.main.mix @@ -0,0 +1,3 @@ +# Octo coaxial with wide arms + +R: 8cw 10000 10000 10000 0 diff --git a/src/modules/systemlib/mixer/mixer_multirotor.cpp b/src/modules/systemlib/mixer/mixer_multirotor.cpp index d46906385b..a3750cadf1 100644 --- a/src/modules/systemlib/mixer/mixer_multirotor.cpp +++ b/src/modules/systemlib/mixer/mixer_multirotor.cpp @@ -180,6 +180,9 @@ MultirotorMixer::from_text(Mixer::ControlCallback control_cb, uintptr_t cb_handl } else if (!strcmp(geomname, "8c")) { geometry = MultirotorGeometry::OCTA_COX; + } else if (!strcmp(geomname, "8cw")) { + geometry = MultirotorGeometry::OCTA_COX_WIDE; + } else if (!strcmp(geomname, "2-")) { geometry = MultirotorGeometry::TWIN_ENGINE; diff --git a/src/modules/systemlib/mixer/multi_tables.py b/src/modules/systemlib/mixer/multi_tables.py index 4ca40a2591..d4ac55105d 100755 --- a/src/modules/systemlib/mixer/multi_tables.py +++ b/src/modules/systemlib/mixer/multi_tables.py @@ -157,6 +157,17 @@ octa_cox = [ [-135, CW], ] +octa_cox_wide = [ + [ 68, CCW], + [ -68, CW], + [-129, CCW], + [ 129, CW], + [ -68, CCW], + [ 68, CW], + [ 129, CCW], + [-129, CW], +] + twin_engine = [ [ 90, 0.0], [-90, 0.0], @@ -169,7 +180,7 @@ tri_y = [ ] -tables = [quad_x, quad_h, quad_plus, quad_v, quad_wide, quad_deadcat, hex_x, hex_plus, hex_cox, octa_x, octa_plus, octa_cox, twin_engine, tri_y] +tables = [quad_x, quad_h, quad_plus, quad_v, quad_wide, quad_deadcat, hex_x, hex_plus, hex_cox, octa_x, octa_plus, octa_cox, octa_cox_wide, twin_engine, tri_y] def variableName(variable): for variableName, value in list(globals().items()):