diff --git a/conf/airframes/tudelft/rot_wing_25kg.xml b/conf/airframes/tudelft/rot_wing_25kg.xml
index e8e6048f4b..cbc9575867 100644
--- a/conf/airframes/tudelft/rot_wing_25kg.xml
+++ b/conf/airframes/tudelft/rot_wing_25kg.xml
@@ -446,9 +446,9 @@
-
-
-
+
+
+
diff --git a/conf/modules/stabilization_indi.xml b/conf/modules/stabilization_indi.xml
index d1884abf22..4013abc2d0 100644
--- a/conf/modules/stabilization_indi.xml
+++ b/conf/modules/stabilization_indi.xml
@@ -62,6 +62,7 @@
+
diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.c b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.c
index c2642ec09a..2a347bad94 100644
--- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.c
+++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.c
@@ -217,6 +217,8 @@ float rate_vect_prev[3] = {0., 0., 0.};
float q_filt = 0.0;
float r_filt = 0.0;
+float stabilization_indi_filter_freq = 20.0; //Hz, for setting handler
+
// variables needed for estimation
float g1g2_trans_mult[INDI_OUTPUTS][INDI_OUTPUTS];
float g1g2inv[INDI_OUTPUTS][INDI_OUTPUTS];
@@ -441,6 +443,16 @@ void stabilization_indi_enter(void)
float_vect_zero(ddu_estimation, INDI_NUM_ACT);
}
+void stabilization_indi_update_filt_freq(float freq)
+{
+ stabilization_indi_filter_freq = freq;
+ float tau = 1.0 / (2.0 * M_PI * freq);
+ float sample_time = 1.0 / PERIODIC_FREQUENCY;
+ init_first_order_low_pass(&rates_filt_fo[0], tau, sample_time, stateGetBodyRates_f()->p);
+ init_first_order_low_pass(&rates_filt_fo[1], tau, sample_time, stateGetBodyRates_f()->q);
+ init_first_order_low_pass(&rates_filt_fo[2], tau, sample_time, stateGetBodyRates_f()->r);
+}
+
/**
* Function that resets the filters to zeros
*/
diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.h b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.h
index 9abdaf4c6b..db589c367e 100644
--- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.h
+++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi.h
@@ -59,12 +59,14 @@ struct Indi_gains {
extern float stablization_indi_yaw_dist_limit;
extern struct Indi_gains indi_gains;
+extern float stabilization_indi_filter_freq; //for setting handler
extern void stabilization_indi_init(void);
extern void stabilization_indi_enter(void);
extern void stabilization_indi_rate_run(bool in_flight, struct StabilizationSetpoint *rate_sp, struct ThrustSetpoint *thrust, int32_t *cmd);
extern void stabilization_indi_attitude_run(bool in_flight, struct StabilizationSetpoint *att_sp, struct ThrustSetpoint *thrust, int32_t *cmd);
extern void stabilization_indi_set_wls_settings(void);
+extern void stabilization_indi_update_filt_freq(float freq); // setting handler
#endif /* STABILIZATION_INDI */