Skip to content

Commit 7e08f9f

Browse files
authored
Merge pull request #2656 from haslinghuis/rfc_feedforward_max_rate_limit_and_feedforward_jitter_factor
RFC feedforward max_rate_limit and jitter_factor
2 parents dd183f0 + a11c761 commit 7e08f9f

File tree

4 files changed

+49
-11
lines changed

4 files changed

+49
-11
lines changed

locales/en/messages.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,6 +1791,18 @@
17911791
"pidTuningDtermSetpointTransition": {
17921792
"message": "D Setpoint transition"
17931793
},
1794+
"pidTuningFeedforwardMaxRateLimit": {
1795+
"message": "Max Rate Limit"
1796+
},
1797+
"pidTuningFeedforwardMaxRateLimitHelp": {
1798+
"message": "Attenuates feedforward towards zero as the sticks move quickly towards maximum deflection (maximum set turn rate), eg at the start of a quick flip or roll, to minimise overshoot. Does nothing at the end of a flip or roll. Lower values make the attenuation start earlier. Usually this value does not require modification. The highest value consistent with acceptable overshoot at the start of rolls or flips is best."
1799+
},
1800+
"pidTuningFeedforwardJitter": {
1801+
"message": "Jitter Reduction"
1802+
},
1803+
"pidTuningFeedforwardJitterHelp": {
1804+
"message": "Jitter reduction reduces Feedforward when the sticks move slowly. This allows smooth, jitter-free flight when making smooth slow arcs, yet provides full feedforward without any delay when the sticks are moved quickly. A higher threshold value (10-12) is more useful for cinematic or HD freestyle purposes, and a slightly lower value (5) better for racing or higher speed RC links."
1805+
},
17941806
"pidTuningDtermSetpoint": {
17951807
"message": "D Setpoint Weight"
17961808
},

src/js/msp/MSPHelper.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,8 @@ MspHelper.prototype.process_data = function(dataHandler) {
11781178
FC.ADVANCED_TUNING.feedforward_averaging = data.readU8();
11791179
FC.ADVANCED_TUNING.feedforward_smooth_factor = data.readU8();
11801180
FC.ADVANCED_TUNING.feedforward_boost = data.readU8();
1181+
FC.ADVANCED_TUNING.feedforward_max_rate_limit = data.readU8();
1182+
FC.ADVANCED_TUNING.feedforward_jitter_factor = data.readU8();
11811183
FC.ADVANCED_TUNING.vbat_sag_compensation = data.readU8();
11821184
FC.ADVANCED_TUNING.thrustLinearization = data.readU8();
11831185
}
@@ -2151,6 +2153,8 @@ MspHelper.prototype.crunch = function(code) {
21512153
buffer.push8(FC.ADVANCED_TUNING.feedforward_averaging)
21522154
.push8(FC.ADVANCED_TUNING.feedforward_smooth_factor)
21532155
.push8(FC.ADVANCED_TUNING.feedforward_boost)
2156+
.push8(FC.ADVANCED_TUNING.feedforward_max_rate_limit)
2157+
.push8(FC.ADVANCED_TUNING.feedforward_jitter_factor)
21542158
.push8(FC.ADVANCED_TUNING.vbat_sag_compensation)
21552159
.push8(FC.ADVANCED_TUNING.thrustLinearization);
21562160
}

src/js/tabs/pid_tuning.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,8 @@ TABS.pid_tuning.initialize = function (callback) {
509509
$('select[id="feedforwardAveraging"]').val(FC.ADVANCED_TUNING.feedforward_averaging);
510510
$('input[name="feedforwardSmoothFactor"]').val(FC.ADVANCED_TUNING.feedforward_smooth_factor);
511511
$('input[name="feedforwardBoost"]').val(FC.ADVANCED_TUNING.feedforward_boost);
512+
$('input[name="feedforwardMaxRateLimit"]').val(FC.ADVANCED_TUNING.feedforward_max_rate_limit);
513+
$('input[name="feedforwardJitterFactor"]').val(FC.ADVANCED_TUNING.feedforward_jitter_factor);
512514

513515
// Vbat Sag Compensation
514516
const vbatSagCompensationCheck = $('input[id="vbatSagCompensation"]');
@@ -534,6 +536,8 @@ TABS.pid_tuning.initialize = function (callback) {
534536
} else {
535537
$('.vbatSagCompensation').hide();
536538
$('.thrustLinearization').hide();
539+
$('.feedforwardMaxRateLimit').hide();
540+
$('.feedforwardJitterFactor').hide();
537541

538542
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_40)) {
539543
$('.pid_tuning .ROLL input[name="f"]').val(FC.ADVANCED_TUNING.feedforwardRoll > 0 ? FC.ADVANCED_TUNING.feedforwardRoll : PID_DEFAULT[4]);
@@ -1066,6 +1070,8 @@ TABS.pid_tuning.initialize = function (callback) {
10661070
FC.ADVANCED_TUNING.feedforward_averaging = $('select[id="feedforwardAveraging"]').val();
10671071
FC.ADVANCED_TUNING.feedforward_smooth_factor = parseInt($('input[name="feedforwardSmoothFactor"]').val());
10681072
FC.ADVANCED_TUNING.feedforward_boost = parseInt($('input[name="feedforwardBoost"]').val());
1073+
FC.ADVANCED_TUNING.feedforward_max_rate_limit = parseInt($('input[name="feedforwardMaxRateLimit"]').val());
1074+
FC.ADVANCED_TUNING.feedforward_jitter_factor = parseInt($('input[name="feedforwardJitterFactor"]').val());
10691075
FC.FILTER_CONFIG.dyn_lpf_curve_expo = parseInt($('.pid_filter input[name="dtermLowpassDynExpo"]').val());
10701076
FC.ADVANCED_TUNING.vbat_sag_compensation = $('input[id="vbatSagCompensation"]').is(':checked') ? parseInt($('input[name="vbatSagValue"]').val()) : 0;
10711077
FC.ADVANCED_TUNING.thrustLinearization = $('input[id="thrustLinearization"]').is(':checked') ? parseInt($('input[name="thrustLinearValue"]').val()) : 0;

src/tabs/pid_tuning.html

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -605,12 +605,19 @@
605605
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardGroupHelp"></div>
606606
<span i18n="pidTuningFeedforwardGroup"></span>
607607

608-
<span class="feedforwardTransition suboption">
609-
<input type="number" name="feedforwardTransition-number" step="0.01" min="0.00" max="1.00"/>
608+
<span class="feedforwardJitterFactor suboption">
609+
<input type="number" name="feedforwardJitterFactor" step="1" min="0" max="20"/>
610610
<label>
611-
<span i18n="pidTuningFeedforwardTransition"></span>
611+
<span i18n="pidTuningFeedforwardJitter"></span>
612+
</label>
613+
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardJitterHelp"></div>
614+
</span>
615+
616+
<span class="feedforwardOption feedforwardSmoothFactor suboption">
617+
<input type="number" name="feedforwardSmoothFactor" step="1" min="0" max="75" />
618+
<label for="feedforwardSmoothFactor">
619+
<span i18n="pidTuningFeedforwardSmoothFactor"></span>
612620
</label>
613-
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardTransitionHelp"></div>
614621
</span>
615622

616623
<span class="feedforwardOption feedforwardAveraging suboption">
@@ -625,19 +632,28 @@
625632
</label>
626633
</span>
627634

628-
<span class="feedforwardOption feedforwardSmoothFactor suboption">
629-
<input type="number" name="feedforwardSmoothFactor" step="1" min="0" max="75" />
630-
<label for="feedforwardSmoothFactor">
631-
<span i18n="pidTuningFeedforwardSmoothFactor"></span>
632-
</label>
633-
</span>
634-
635635
<span class="feedforwardOption feedforwardBoost suboption">
636636
<input type="number" name="feedforwardBoost" step="1" min="0" max="50" />
637637
<label for="feedforwardBoost">
638638
<span i18n="pidTuningFeedforwardBoost"></span>
639639
</label>
640640
</span>
641+
642+
<span class="feedforwardMaxRateLimit suboption">
643+
<input type="number" name="feedforwardMaxRateLimit" step="1" min="0" max="150"/>
644+
<label>
645+
<span i18n="pidTuningFeedforwardMaxRateLimit"></span>
646+
</label>
647+
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardMaxRateLimitHelp"></div>
648+
</span>
649+
650+
<span class="feedforwardTransition suboption">
651+
<input type="number" name="feedforwardTransition-number" step="0.01" min="0.00" max="1.00"/>
652+
<label>
653+
<span i18n="pidTuningFeedforwardTransition"></span>
654+
</label>
655+
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardTransitionHelp"></div>
656+
</span>
641657
</td>
642658
</tr>
643659

0 commit comments

Comments
 (0)