1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-21 11:54:15 +01:00

LP-67 - Fix checkbox yaw recalc checkbox, allow yaw recalc flag changes to trigger a yaw recalc

This commit is contained in:
Alessio Morale 2015-08-09 19:01:23 +02:00
parent d7eff39f4c
commit 74c69e033c
2 changed files with 10 additions and 9 deletions

View File

@ -404,13 +404,13 @@ static void updatePIDs(UAVObjEvent *ev)
needsUpdateBank |= update(&bank.AcroInsanityFactor.Pitch, value); needsUpdateBank |= update(&bank.AcroInsanityFactor.Pitch, value);
break; break;
case TXPIDSETTINGS_PIDS_ACCELTAU: case TXPIDSETTINGS_PIDS_ACCELTAU:
needsUpdateAtt |= update(&att.AccelTau, value); needsUpdateAtt |= update(&att.AccelTau, value);
break; break;
case TXPIDSETTINGS_PIDS_ACCELKP: case TXPIDSETTINGS_PIDS_ACCELKP:
needsUpdateAtt |= update(&att.AccelKp, value); needsUpdateAtt |= update(&att.AccelKp, value);
break; break;
case TXPIDSETTINGS_PIDS_ACCELKI: case TXPIDSETTINGS_PIDS_ACCELKI:
needsUpdateAtt |= update(&att.AccelKi, value); needsUpdateAtt |= update(&att.AccelKi, value);
break; break;
#ifdef REVOLUTION #ifdef REVOLUTION
@ -446,12 +446,13 @@ static void updatePIDs(UAVObjEvent *ev)
AltitudeHoldSettingsSet(&altitude); AltitudeHoldSettingsSet(&altitude);
} }
#endif #endif
if (inst.RatePIDRecalculateYaw != TXPIDSETTINGS_RATEPIDRECALCULATEYAW_FALSE) {
float newKp = (bank.RollRatePID.Kp + bank.PitchRatePID.Kp) * .5f * inst.YawRateFactors.P;
needsUpdateBank |= update(&bank.YawRatePID.Kp, newKp);
needsUpdateBank |= update(&bank.YawRatePID.Ki, newKp * inst.YawRateFactors.I);
needsUpdateBank |= update(&bank.YawRatePID.Kd, newKp * inst.YawRateFactors.D);
}
if (needsUpdateBank) { if (needsUpdateBank) {
if(inst.RatePIDRecalculateYaw == TXPIDSETTINGS_RATEPIDRECALCULATEYAW_ENABLED){
update(&bank.YawRatePID.Kp, (bank.RollRatePID.Kp + bank.PitchRatePID.Kp) * .5f * inst.YawRateFactors.P);
update(&bank.YawRatePID.Ki, bank.YawRatePID.Kp * inst.YawRateFactors.I);
update(&bank.YawRatePID.Kd, bank.YawRatePID.Kp * inst.YawRateFactors.D);
}
switch (inst.BankNumber) { switch (inst.BankNumber) {
case 0: case 0:
StabilizationSettingsBank1Set((StabilizationSettingsBank1Data *)&bank); StabilizationSettingsBank1Set((StabilizationSettingsBank1Data *)&bank);

View File

@ -30,7 +30,7 @@
<field name="PitchRollRateFactors" units="" type="float" elementnames="I,D" defaultvalue="3,0.0135"/> <field name="PitchRollRateFactors" units="" type="float" elementnames="I,D" defaultvalue="3,0.0135"/>
<field name="YawRateFactors" units="" type="float" elementnames="P,I,D" defaultvalue="1.5,1.9,0.0085"/> <field name="YawRateFactors" units="" type="float" elementnames="P,I,D" defaultvalue="1.5,1.9,0.0085"/>
<field name="RatePIDRecalculateYaw" units="" type="enum" elements="1" options="Disabled,Enabled" defaultvalue="Disabled"/> <field name="RatePIDRecalculateYaw" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>
<access gcs="readwrite" flight="readwrite"/> <access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/> <telemetrygcs acked="true" updatemode="onchange" period="0"/>