diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_attitude_quat_indi.c b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_attitude_quat_indi.c index e3de35853b..466f5cd0ee 100644 --- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_attitude_quat_indi.c +++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_attitude_quat_indi.c @@ -62,7 +62,9 @@ void stabilization_attitude_set_earth_cmd_i(struct Int32Vect2 *cmd, int32_t head void stabilization_attitude_run(bool in_flight) { - stabilization_indi_run(in_flight, FALSE); + struct Int32Quat quat_sp = {1, 0, 0, 0}; // always hover + + stabilization_indi_attitude_run(in_flight, quat_sp); } void stabilization_attitude_read_rc(bool in_flight, bool in_carefree, bool coordinated_turn) diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.c b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.c index 99fcb5b85e..2d4ca5ed26 100644 --- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.c +++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.c @@ -74,7 +74,7 @@ struct Int32Eulers stab_att_sp_euler; struct Int32Quat stab_att_sp_quat; -static int32_t stabilization_att_indi_cmd[COMMANDS_NB]; +// static int32_t stabilization_att_indi_cmd[COMMANDS_NB]; static inline void lms_estimation(void); static void indi_init_filters(void); @@ -384,14 +384,14 @@ void stabilization_indi_attitude_run(bool in_flight __attribute__((unused)), str rates_for_feedback.r = indi.rate[2].o[0]; #endif - indi.angular_accel_ref.p = indi.reference_acceleration.err_p * QUAT1_FLOAT_OF_BFP(att_err->qx) + indi.angular_accel_ref.p = indi.reference_acceleration.err_p * QUAT1_FLOAT_OF_BFP(att_err.qx) - indi.reference_acceleration.rate_p * rates_for_feedback.p; - indi.angular_accel_ref.q = indi.reference_acceleration.err_q * QUAT1_FLOAT_OF_BFP(att_err->qy) + indi.angular_accel_ref.q = indi.reference_acceleration.err_q * QUAT1_FLOAT_OF_BFP(att_err.qy) - indi.reference_acceleration.rate_q * rates_for_feedback.q; //This separates the P and D controller and lets you impose a maximum yaw rate. - float rate_ref_r = indi.reference_acceleration.err_r * QUAT1_FLOAT_OF_BFP(att_err->qz) / indi.reference_acceleration.rate_r; + float rate_ref_r = indi.reference_acceleration.err_r * QUAT1_FLOAT_OF_BFP(att_err.qz) / indi.reference_acceleration.rate_r; BoundAbs(rate_ref_r, indi.attitude_max_yaw_rate); indi.angular_accel_ref.r = indi.reference_acceleration.rate_r * (rate_ref_r - rates_for_feedback.r); diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.h b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.h index 0f0183e801..a475064955 100644 --- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.h +++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_indi_simple.h @@ -88,7 +88,7 @@ extern void stabilization_indi_enter(void); extern void stabilization_indi_set_failsafe_setpoint(void); extern void stabilization_indi_set_rpy_setpoint_i(struct Int32Eulers *rpy); extern void stabilization_indi_set_earth_cmd_i(struct Int32Vect2 *cmd, int32_t heading); -extern void stabilization_indi_calc_cmd(struct FloatRates angular_accel_ref, bool in_flight) +extern void stabilization_indi_calc_cmd(struct FloatRates angular_accel_ref, bool in_flight); extern void stabilization_indi_attitude_run(bool in_flight, struct Int32Quat quat_sp); extern void stabilization_indi_read_rc(bool in_flight, bool in_carefree, bool coordinated_turn); diff --git a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_rate_indi.c b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_rate_indi.c index 4f5da9959b..95b4446ca7 100644 --- a/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_rate_indi.c +++ b/sw/airborne/firmwares/rotorcraft/stabilization/stabilization_rate_indi.c @@ -44,7 +44,7 @@ struct ReferenceSystem reference_acceleration = { STABILIZATION_INDI_REF_RATE_R }; // these values are defined in airframe.h file -// variables in case we use "stabilization_indi.c" module +// variables in case we use "stabilization_indi.c" float q_filt = 0.0; float r_filt = 0.0; @@ -165,7 +165,7 @@ void stabilization_rate_set_setpoint_i(struct Int32Rates *pqr) /** * @brief Calculate commanded rates, given setpoint rates */ -static void stabilization_rate_indi_calc_cmd(struct Int32Rates rates_sp, ) +static void stabilization_rate_indi_calc_cmd(struct Int32Rates rates_sp, bool in_flight) { struct FloatRates angular_acc_ref;