diff --git a/conf/airframes/tudelft/rotwing_7kg_common.xml b/conf/airframes/tudelft/rotwing_7kg_common.xml
index 5560f57e2c..c419a9de22 100644
--- a/conf/airframes/tudelft/rotwing_7kg_common.xml
+++ b/conf/airframes/tudelft/rotwing_7kg_common.xml
@@ -58,11 +58,6 @@
-
-
-
-
-
@@ -271,7 +266,6 @@
-
diff --git a/conf/airframes/tudelft/rotwing_v3b.xml b/conf/airframes/tudelft/rotwing_v3b.xml
index 5ad15a7649..2238a57a3c 100644
--- a/conf/airframes/tudelft/rotwing_v3b.xml
+++ b/conf/airframes/tudelft/rotwing_v3b.xml
@@ -25,7 +25,6 @@
-
@@ -64,7 +63,6 @@
-
@@ -242,6 +240,15 @@
+
+
diff --git a/conf/airframes/tudelft/rotwing_v3d.xml b/conf/airframes/tudelft/rotwing_v3d.xml
index adeb1f174d..278264386f 100644
--- a/conf/airframes/tudelft/rotwing_v3d.xml
+++ b/conf/airframes/tudelft/rotwing_v3d.xml
@@ -25,7 +25,6 @@
-
@@ -55,7 +54,6 @@
-
@@ -236,6 +234,15 @@
+
+
diff --git a/conf/airframes/tudelft/rotwing_v3e.xml b/conf/airframes/tudelft/rotwing_v3e.xml
index 9cc143e698..b866bd27c6 100644
--- a/conf/airframes/tudelft/rotwing_v3e.xml
+++ b/conf/airframes/tudelft/rotwing_v3e.xml
@@ -25,7 +25,6 @@
-
@@ -55,7 +54,6 @@
-
@@ -236,6 +234,15 @@
+
+
diff --git a/conf/airframes/tudelft/rotwing_v3f.xml b/conf/airframes/tudelft/rotwing_v3f.xml
index 0cedfd1c43..2b1b72b58d 100644
--- a/conf/airframes/tudelft/rotwing_v3f.xml
+++ b/conf/airframes/tudelft/rotwing_v3f.xml
@@ -234,6 +234,15 @@
+
+
diff --git a/conf/airframes/tudelft/rotwing_v3g.xml b/conf/airframes/tudelft/rotwing_v3g.xml
index cd66a133c7..571c947792 100644
--- a/conf/airframes/tudelft/rotwing_v3g.xml
+++ b/conf/airframes/tudelft/rotwing_v3g.xml
@@ -20,12 +20,11 @@
-
-
-
-
-
-
+
+
+
+
+
@@ -55,7 +54,6 @@
-
@@ -236,6 +234,15 @@
+
+
diff --git a/conf/airframes/tudelft/rotwing_v3g_demo.xml b/conf/airframes/tudelft/rotwing_v3g_demo.xml
new file mode 100644
index 0000000000..742be8c5c6
--- /dev/null
+++ b/conf/airframes/tudelft/rotwing_v3g_demo.xml
@@ -0,0 +1,387 @@
+
+
+
+ RotatingWingV3G
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/airframes/tudelft/rotwing_v3h.xml b/conf/airframes/tudelft/rotwing_v3h.xml
index e0408c0671..7eca142ecf 100644
--- a/conf/airframes/tudelft/rotwing_v3h.xml
+++ b/conf/airframes/tudelft/rotwing_v3h.xml
@@ -25,7 +25,6 @@
-
@@ -55,7 +54,6 @@
-
@@ -236,6 +234,15 @@
+
+
diff --git a/conf/flight_plans/tudelft/rotwing_cz_demo.xml b/conf/flight_plans/tudelft/rotwing_cz_demo.xml
new file mode 100644
index 0000000000..dab0d8ff65
--- /dev/null
+++ b/conf/flight_plans/tudelft/rotwing_cz_demo.xml
@@ -0,0 +1,55 @@
+
+
+
+#include "autopilot_rc_helpers.h"
+#include "modules/radio_control/radio_control.h"
+#include "modules/rotwing_drone/rotwing_state.h"
+#include "modules/checks/preflight_checks.h"
+#include "stdbool.h"
+#ifndef ROTWING_DEMO_SKEW_ENDPOINT
+#define ROTWING_DEMO_SKEW_ENDPOINT 70.0
+#endif
+#ifndef ROTWING_DEMO_SKEW_MIDPOINT
+#define ROTWING_DEMO_SKEW_MIDPOINT 45.0
+#endif
+static inline void rotwing_rc_set_skew(void) {
+ if (LessThan(radio_control.values[RADIO_CONTROL_ROTWING_DEMO], (MAX_PPRZ / 3))) {
+ rotwing_state.sp_skew_angle_deg = 0.f;
+ } else if (LessThan((2 * MAX_PPRZ / 3), radio_control.values[RADIO_CONTROL_ROTWING_DEMO])) {
+ rotwing_state.sp_skew_angle_deg = ROTWING_DEMO_SKEW_ENDPOINT;
+ } else {
+ rotwing_state.sp_skew_angle_deg = ROTWING_DEMO_SKEW_MIDPOINT;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/conf/userconf/tudelft/conf.xml b/conf/userconf/tudelft/conf.xml
index be57bcf6d3..278bca74d5 100644
--- a/conf/userconf/tudelft/conf.xml
+++ b/conf/userconf/tudelft/conf.xml
@@ -585,12 +585,12 @@
+
diff --git a/sw/airborne/modules/ctrl/eff_scheduling_rotwing.c b/sw/airborne/modules/ctrl/eff_scheduling_rotwing.c
index dc22ed7027..91d333b42c 100644
--- a/sw/airborne/modules/ctrl/eff_scheduling_rotwing.c
+++ b/sw/airborne/modules/ctrl/eff_scheduling_rotwing.c
@@ -35,7 +35,6 @@
#include "modules/actuators/actuators.h"
#include "modules/core/abi.h"
-#include "modules/radio_control/radio_control.h"
#ifndef SERVO_ROTATION_MECH_IDX
#error ctrl_eff_sched_rotwing requires a servo named ROTATION_MECH_IDX
@@ -349,28 +348,11 @@ void eff_scheduling_rotwing_update_hover_motor_effectiveness(void)
// Update back motor q effectiveness
g1g2[1][2] = - dM_dpprz[2] / eff_sched_var.Iyy; // pitch effectiveness back motor
-#ifdef RADIO_CONTROL_EFF_SWITCH
- if (radio_control.values[RADIO_CONTROL_EFF_SWITCH] > 1750) {
- g1g2[0][1] = - roll_eff_slider / 1000.f;
- } else {
- g1g2[0][1] = roll_motor_p_eff_right;
- }
-#else
g1g2[0][1] = roll_motor_p_eff_right; // roll effectiveness right motor (no airspeed compensation)
-#endif
- // Update right motor p and q effectiveness
g1g2[1][1] = roll_motor_q_eff; // pitch effectiveness right motor
// Update left motor p and q effectiveness
-#ifdef RADIO_CONTROL_EFF_SWITCH
- if (radio_control.values[RADIO_CONTROL_EFF_SWITCH] > 1750) {
- g1g2[0][3] = roll_eff_slider / 1000.f;
- } else {
- g1g2[0][3] = roll_motor_p_eff_left;
- }
-#else
g1g2[0][3] = roll_motor_p_eff_left; // roll effectiveness left motor
-#endif
g1g2[1][3] = -roll_motor_q_eff; // pitch effectiveness left motor
}