Skip to content

Commit 94ab605

Browse files
committed
RFC feedforward max_rate_limit and jitter_factor
1 parent dd183f0 commit 94ab605

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": "pidTuningFeedforwardMaxRateLimitHelp Placeholder"
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+
$('.feedforwardJitter').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="feedforwardJitter suboption">
609+
<input type="number" name="feedforwardJitterFactor" step="0.01" min="0.00" max="1.00"/>
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="0.01" min="0.00" max="1.00"/>
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)