Added possibility to switch sticks

This commit is contained in:
Ewoud
2013-05-17 18:25:41 +02:00
parent c4b9070d52
commit 3710206de3
5 changed files with 46 additions and 2 deletions
+17
View File
@@ -0,0 +1,17 @@
<airframe>
<section name="IMU" prefix="IMU_">
<define name="ACCEL_X_NEUTRAL" value="40"/>
<define name="ACCEL_Y_NEUTRAL" value="-11"/>
<define name="ACCEL_Z_NEUTRAL" value="250"/>
<define name="ACCEL_X_SENS" value="4.86864977158" integer="16"/>
<define name="ACCEL_Y_SENS" value="4.90451364272" integer="16"/>
<define name="ACCEL_Z_SENS" value="4.85134642596" integer="16"/>
<define name="MAG_X_NEUTRAL" value="-178"/>
<define name="MAG_Y_NEUTRAL" value="73"/>
<define name="MAG_Z_NEUTRAL" value="-11"/>
<define name="MAG_X_SENS" value="4.19385009207" integer="16"/>
<define name="MAG_Y_SENS" value="4.32306399648" integer="16"/>
<define name="MAG_Z_SENS" value="4.63243801309" integer="16"/>
</section>
</airframe>
+2 -2
View File
@@ -175,7 +175,7 @@
<define name="HOVER_KI" value="72"/>
<define name="RC_CLIMB_COEF" value ="163"/>
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
<define name="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value ="0.5"/>
<!-- <define name="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value ="0.3"/> -->
</section>
<section name="AHRS" prefix="AHRS_">
@@ -195,7 +195,7 @@
<define name="REF_QUAT_INFINITESIMAL_STEP" value="TRUE"/>
<define name="USE_EARTH_BOUND_RC_SETPOINT" value="TRUE"/>
<!-- <define name="USE_REFERENCE_SYSTEM" value="FALSE"/> -->
<!-- <define name="SWITCH_STICKS_FOR_RATE_CONTROL" value="TRUE"/> -->
<define name="SWITCH_STICKS_FOR_RATE_CONTROL" value="TRUE"/>
<define name="TRANSITION_MAX_OFFSET" value="-82.0" unit="deg"/>
</section>
@@ -164,7 +164,11 @@ void guidance_h_read_rc(bool_t in_flight) {
break;
case GUIDANCE_H_MODE_RATE:
#if SWITCH_STICKS_FOR_RATE_CONTROL
stabilization_rate_read_rc_switched_sticks();
#else
stabilization_rate_read_rc();
#endif
break;
case GUIDANCE_H_MODE_FORWARD:
@@ -164,6 +164,28 @@ void stabilization_rate_read_rc( void ) {
INT_RATES_LSHIFT(stabilization_rate_sp, stabilization_rate_sp, REF_FRAC - INT32_RATE_FRAC);
}
//Read rc with roll and yaw sitcks switched if the default orientation is vertical but airplane sticks are desired
void stabilization_rate_read_rc_switched_sticks( void ) {
if(ROLL_RATE_DEADBAND_EXCEEDED())
stabilization_rate_sp.r = (int32_t) -radio_control.values[RADIO_ROLL] * STABILIZATION_RATE_SP_MAX_P / MAX_PPRZ;
else
stabilization_rate_sp.r = 0;
if(PITCH_RATE_DEADBAND_EXCEEDED())
stabilization_rate_sp.q = (int32_t)radio_control.values[RADIO_PITCH] * STABILIZATION_RATE_SP_MAX_Q / MAX_PPRZ;
else
stabilization_rate_sp.q = 0;
if(YAW_RATE_DEADBAND_EXCEEDED())
stabilization_rate_sp.p = (int32_t)radio_control.values[RADIO_YAW] * STABILIZATION_RATE_SP_MAX_R / MAX_PPRZ;
else
stabilization_rate_sp.p = 0;
// Setpoint at ref resolution
INT_RATES_LSHIFT(stabilization_rate_sp, stabilization_rate_sp, REF_FRAC - INT32_RATE_FRAC);
}
void stabilization_rate_enter(void) {
RATES_COPY(stabilization_rate_ref, stabilization_rate_sp);
INT_RATES_ZERO(stabilization_rate_sum_err);
@@ -32,6 +32,7 @@
extern void stabilization_rate_init(void);
extern void stabilization_rate_read_rc(void);
extern void stabilization_rate_read_rc_switched_sticks(void);
extern void stabilization_rate_run(bool_t in_flight);
extern void stabilization_rate_enter(void);