Fix for new stabilization (#3274)

This commit is contained in:
Christophe De Wagter
2024-05-22 15:01:35 +02:00
committed by GitHub
parent 48048bdba2
commit 8a9e1411de
6 changed files with 14 additions and 12 deletions
@@ -64,7 +64,7 @@
<block name="Holding point"> <block name="Holding point">
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/> <call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
<call_once fun="NavKillThrottle()"/> <call_once fun="NavKillThrottle()"/>
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/> <set var="stabilization.cmd[COMMAND_THRUST_X]" value="0"/>
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/> <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
</block> </block>
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png"> <block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
@@ -64,7 +64,7 @@
<block name="Holding point"> <block name="Holding point">
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/> <call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
<call_once fun="NavKillThrottle()"/> <call_once fun="NavKillThrottle()"/>
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/> <set var="stabilization.cmd[COMMAND_THRUST_X]" value="0"/>
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/> <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
</block> </block>
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png"> <block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
@@ -64,7 +64,7 @@
<block name="Holding point"> <block name="Holding point">
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/> <call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
<call_once fun="NavKillThrottle()"/> <call_once fun="NavKillThrottle()"/>
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/> <set var="stabilization.cmd[COMMAND_THRUST_X]" value="0"/>
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/> <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
</block> </block>
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png"> <block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
@@ -56,7 +56,7 @@
<block name="Holding point"> <block name="Holding point">
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/> <call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
<call_once fun="NavKillThrottle()"/> <call_once fun="NavKillThrottle()"/>
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/> <set var="stabilization.cmd[COMMAND_THRUST_X]" value="0"/>
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/> <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
</block> </block>
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png"> <block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
@@ -200,7 +200,7 @@ float indi_Wu[INDI_NUM_ACT] = {[0 ... INDI_NUM_ACT - 1] = 1.0};
* Limit the maximum specific moment that can be compensated (units rad/s^2) * Limit the maximum specific moment that can be compensated (units rad/s^2)
*/ */
#ifdef STABILIZATION_INDI_YAW_DISTURBANCE_LIMIT #ifdef STABILIZATION_INDI_YAW_DISTURBANCE_LIMIT
float stablization_indi_yaw_dist_limit = STABILIZATION_INDI_YAW_DISTURBANCE_LIMIT float stablization_indi_yaw_dist_limit = STABILIZATION_INDI_YAW_DISTURBANCE_LIMIT;
#else // Put a rediculously high limit #else // Put a rediculously high limit
float stablization_indi_yaw_dist_limit = 99999.f; float stablization_indi_yaw_dist_limit = 99999.f;
#endif #endif
@@ -195,10 +195,14 @@ void periodic_rotwing_state(void)
// Check and update desired state // Check and update desired state
if (guidance_h.mode == GUIDANCE_H_MODE_NAV) { if (guidance_h.mode == GUIDANCE_H_MODE_NAV) {
rotwing_switch_state(); rotwing_switch_state();
} else if (guidance_h.mode == GUIDANCE_H_MODE_ATTITUDE) { } else if (guidance_h.mode == GUIDANCE_H_MODE_NONE) {
rotwing_state_set_hover_settings(); if (stabilization.mode == STABILIZATION_MODE_ATTITUDE) {
} else if (guidance_h.mode == GUIDANCE_H_MODE_FORWARD) { if (stabilization.att_submode == STABILIZATION_ATT_SUBMODE_FORWARD) {
rotwing_state_set_fw_settings(); rotwing_state_set_fw_settings();
} else {
rotwing_state_set_hover_settings();
}
}
} }
// Run the wing skewer // Run the wing skewer
@@ -206,9 +210,7 @@ void periodic_rotwing_state(void)
//TODO: incorparate motor active / disbaling depending on called flight state //TODO: incorparate motor active / disbaling depending on called flight state
// Switch on motors if flight mode is attitude // Switch on motors if flight mode is attitude
if (guidance_h.mode == GUIDANCE_H_MODE_ATTITUDE) { if (guidance_h.mode == GUIDANCE_H_MODE_NONE) {
bool_disable_hover_motors = false;
} else if (guidance_h.mode == GUIDANCE_H_MODE_FORWARD) {
bool_disable_hover_motors = false; bool_disable_hover_motors = false;
} }
} }