From ddf1b27697dd5edd8e8282c24ad35cb938dbf3c8 Mon Sep 17 00:00:00 2001 From: Simon Wilks Date: Thu, 2 May 2013 07:10:23 +0200 Subject: Added a config for quads with a wide arm config. --- ROMFS/Makefile | 3 ++- apps/systemlib/mixer/mixer.h | 1 + apps/systemlib/mixer/mixer_multirotor.cpp | 11 +++++++++++ apps/systemlib/mixer/multi_tables | 9 ++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ROMFS/Makefile b/ROMFS/Makefile index 11a4650fa..ecd15d5e2 100644 --- a/ROMFS/Makefile +++ b/ROMFS/Makefile @@ -32,7 +32,8 @@ ROMFS_FSSPEC := $(SRCROOT)/scripts/rcS~init.d/rcS \ $(SRCROOT)/mixers/FMU_RET.mix~mixers/FMU_ERT.mix \ $(SRCROOT)/mixers/FMU_quad_x.mix~mixers/FMU_quad_x.mix \ $(SRCROOT)/mixers/FMU_quad_+.mix~mixers/FMU_quad_+.mix \ - $(SRCROOT)/mixers/FMU_quad_v.mix~mixers/FMU_quad_v.mix \ + $(SRCROOT)/mixers/FMU_quad_v.mix~mixers/FMU_quad_v.mix \ + $(SRCROOT)/mixers/FMU_quad_v.mix~mixers/FMU_quad_w.mix \ $(SRCROOT)/mixers/FMU_hex_x.mix~mixers/FMU_hex_x.mix \ $(SRCROOT)/mixers/FMU_hex_+.mix~mixers/FMU_hex_+.mix \ $(SRCROOT)/mixers/FMU_octo_x.mix~mixers/FMU_octo_x.mix \ diff --git a/apps/systemlib/mixer/mixer.h b/apps/systemlib/mixer/mixer.h index 40d37fce2..bbfa130a9 100644 --- a/apps/systemlib/mixer/mixer.h +++ b/apps/systemlib/mixer/mixer.h @@ -419,6 +419,7 @@ public: QUAD_X = 0, /**< quad in X configuration */ QUAD_PLUS, /**< quad in + configuration */ QUAD_V, /**< quad in V configuration */ + QUAD_WIDE, /**< quad in wide configuration */ HEX_X, /**< hex in X configuration */ HEX_PLUS, /**< hex in + configuration */ OCTA_X, diff --git a/apps/systemlib/mixer/mixer_multirotor.cpp b/apps/systemlib/mixer/mixer_multirotor.cpp index d79811c0f..8ded0b05c 100644 --- a/apps/systemlib/mixer/mixer_multirotor.cpp +++ b/apps/systemlib/mixer/mixer_multirotor.cpp @@ -88,6 +88,12 @@ const MultirotorMixer::Rotor _config_quad_v[] = { { 0.927184, 0.374607, -1.00 }, { -0.694658, -0.719340, -1.00 }, }; +const MultirotorMixer::Rotor _config_quad_wide[] = { + { -0.927184, 0.374607, 1.00 }, + { 0.777146, -0.629320, 1.00 }, + { 0.927184, 0.374607, -1.00 }, + { -0.777146, -0.629320, -1.00 }, +}; const MultirotorMixer::Rotor _config_hex_x[] = { { -1.000000, 0.000000, -1.00 }, { 1.000000, 0.000000, 1.00 }, @@ -128,6 +134,7 @@ const MultirotorMixer::Rotor *_config_index[MultirotorMixer::Geometry::MAX_GEOME &_config_quad_x[0], &_config_quad_plus[0], &_config_quad_v[0], + &_config_quad_wide[0], &_config_hex_x[0], &_config_hex_plus[0], &_config_octa_x[0], @@ -137,6 +144,7 @@ const unsigned _config_rotor_count[MultirotorMixer::Geometry::MAX_GEOMETRY] = { 4, /* quad_x */ 4, /* quad_plus */ 4, /* quad_v */ + 4, /* quad_wide */ 6, /* hex_x */ 6, /* hex_plus */ 8, /* octa_x */ @@ -195,6 +203,9 @@ MultirotorMixer::from_text(Mixer::ControlCallback control_cb, uintptr_t cb_handl } else if (!strcmp(geomname, "4v")) { geometry = MultirotorMixer::QUAD_V; + } else if (!strcmp(geomname, "4w")) { + geometry = MultirotorMixer::QUAD_WIDE; + } else if (!strcmp(geomname, "6+")) { geometry = MultirotorMixer::HEX_PLUS; diff --git a/apps/systemlib/mixer/multi_tables b/apps/systemlib/mixer/multi_tables index 19a8239a6..683c63040 100755 --- a/apps/systemlib/mixer/multi_tables +++ b/apps/systemlib/mixer/multi_tables @@ -27,6 +27,13 @@ set quad_v { 136 CW } +set quad_wide { + 68 CCW + -129 CCW + -68 CW + 129 CW +} + set hex_x { 90 CW -90 CCW @@ -67,7 +74,7 @@ set octa_plus { 90 CW } -set tables {quad_x quad_plus quad_v hex_x hex_plus octa_x octa_plus} +set tables {quad_x quad_plus quad_v quad_wide hex_x hex_plus octa_x octa_plus} proc factors {a d} { puts [format "\t{ %9.6f, %9.6f, %5.2f }," [rcos [expr $a + 90]] [rcos $a] [expr -$d]]} -- cgit v1.2.3 From d9da4352d590401ec5caeef926cf25109da393e9 Mon Sep 17 00:00:00 2001 From: Simon Wilks Date: Thu, 2 May 2013 07:13:07 +0200 Subject: Makefile correction. --- ROMFS/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ROMFS/Makefile b/ROMFS/Makefile index ecd15d5e2..e77668421 100644 --- a/ROMFS/Makefile +++ b/ROMFS/Makefile @@ -33,7 +33,7 @@ ROMFS_FSSPEC := $(SRCROOT)/scripts/rcS~init.d/rcS \ $(SRCROOT)/mixers/FMU_quad_x.mix~mixers/FMU_quad_x.mix \ $(SRCROOT)/mixers/FMU_quad_+.mix~mixers/FMU_quad_+.mix \ $(SRCROOT)/mixers/FMU_quad_v.mix~mixers/FMU_quad_v.mix \ - $(SRCROOT)/mixers/FMU_quad_v.mix~mixers/FMU_quad_w.mix \ + $(SRCROOT)/mixers/FMU_quad_w.mix~mixers/FMU_quad_w.mix \ $(SRCROOT)/mixers/FMU_hex_x.mix~mixers/FMU_hex_x.mix \ $(SRCROOT)/mixers/FMU_hex_+.mix~mixers/FMU_hex_+.mix \ $(SRCROOT)/mixers/FMU_octo_x.mix~mixers/FMU_octo_x.mix \ -- cgit v1.2.3 From 1dbbdcfa48f8acbf4bed5c160ab3acd0cf293127 Mon Sep 17 00:00:00 2001 From: Simon Wilks Date: Thu, 2 May 2013 08:41:02 +0200 Subject: Add the missing mixer file. --- ROMFS/mixers/FMU_quad_w.mix | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ROMFS/mixers/FMU_quad_w.mix diff --git a/ROMFS/mixers/FMU_quad_w.mix b/ROMFS/mixers/FMU_quad_w.mix new file mode 100644 index 000000000..81b4af30b --- /dev/null +++ b/ROMFS/mixers/FMU_quad_w.mix @@ -0,0 +1,6 @@ +Multirotor mixer for PX4FMU +=========================== + +This file defines a single mixer for a quadrotor with a wide configuration. All controls are mixed 100%. + +R: 4w 10000 10000 10000 0 -- cgit v1.2.3