Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -1791,6 +1791,18 @@
"pidTuningDtermSetpointTransition": {
"message": "D Setpoint transition"
},
"pidTuningFeedforwardMaxRateLimit": {
"message": "Max Rate Limit"
},
"pidTuningFeedforwardMaxRateLimitHelp": {
"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."
},
"pidTuningFeedforwardJitter": {
"message": "Jitter Reduction"
},
"pidTuningFeedforwardJitterHelp": {
"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."
},
"pidTuningDtermSetpoint": {
"message": "D Setpoint Weight"
},
Expand Down
4 changes: 4 additions & 0 deletions src/js/msp/MSPHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -1178,6 +1178,8 @@ MspHelper.prototype.process_data = function(dataHandler) {
FC.ADVANCED_TUNING.feedforward_averaging = data.readU8();
FC.ADVANCED_TUNING.feedforward_smooth_factor = data.readU8();
FC.ADVANCED_TUNING.feedforward_boost = data.readU8();
FC.ADVANCED_TUNING.feedforward_max_rate_limit = data.readU8();
FC.ADVANCED_TUNING.feedforward_jitter_factor = data.readU8();
FC.ADVANCED_TUNING.vbat_sag_compensation = data.readU8();
FC.ADVANCED_TUNING.thrustLinearization = data.readU8();
}
Expand Down Expand Up @@ -2151,6 +2153,8 @@ MspHelper.prototype.crunch = function(code) {
buffer.push8(FC.ADVANCED_TUNING.feedforward_averaging)
.push8(FC.ADVANCED_TUNING.feedforward_smooth_factor)
.push8(FC.ADVANCED_TUNING.feedforward_boost)
.push8(FC.ADVANCED_TUNING.feedforward_max_rate_limit)
.push8(FC.ADVANCED_TUNING.feedforward_jitter_factor)
.push8(FC.ADVANCED_TUNING.vbat_sag_compensation)
.push8(FC.ADVANCED_TUNING.thrustLinearization);
}
Expand Down
6 changes: 6 additions & 0 deletions src/js/tabs/pid_tuning.js
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,8 @@ TABS.pid_tuning.initialize = function (callback) {
$('select[id="feedforwardAveraging"]').val(FC.ADVANCED_TUNING.feedforward_averaging);
$('input[name="feedforwardSmoothFactor"]').val(FC.ADVANCED_TUNING.feedforward_smooth_factor);
$('input[name="feedforwardBoost"]').val(FC.ADVANCED_TUNING.feedforward_boost);
$('input[name="feedforwardMaxRateLimit"]').val(FC.ADVANCED_TUNING.feedforward_max_rate_limit);
$('input[name="feedforwardJitterFactor"]').val(FC.ADVANCED_TUNING.feedforward_jitter_factor);

// Vbat Sag Compensation
const vbatSagCompensationCheck = $('input[id="vbatSagCompensation"]');
Expand All @@ -534,6 +536,8 @@ TABS.pid_tuning.initialize = function (callback) {
} else {
$('.vbatSagCompensation').hide();
$('.thrustLinearization').hide();
$('.feedforwardMaxRateLimit').hide();
$('.feedforwardJitterFactor').hide();

if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_40)) {
$('.pid_tuning .ROLL input[name="f"]').val(FC.ADVANCED_TUNING.feedforwardRoll > 0 ? FC.ADVANCED_TUNING.feedforwardRoll : PID_DEFAULT[4]);
Expand Down Expand Up @@ -1066,6 +1070,8 @@ TABS.pid_tuning.initialize = function (callback) {
FC.ADVANCED_TUNING.feedforward_averaging = $('select[id="feedforwardAveraging"]').val();
FC.ADVANCED_TUNING.feedforward_smooth_factor = parseInt($('input[name="feedforwardSmoothFactor"]').val());
FC.ADVANCED_TUNING.feedforward_boost = parseInt($('input[name="feedforwardBoost"]').val());
FC.ADVANCED_TUNING.feedforward_max_rate_limit = parseInt($('input[name="feedforwardMaxRateLimit"]').val());
FC.ADVANCED_TUNING.feedforward_jitter_factor = parseInt($('input[name="feedforwardJitterFactor"]').val());
FC.FILTER_CONFIG.dyn_lpf_curve_expo = parseInt($('.pid_filter input[name="dtermLowpassDynExpo"]').val());
FC.ADVANCED_TUNING.vbat_sag_compensation = $('input[id="vbatSagCompensation"]').is(':checked') ? parseInt($('input[name="vbatSagValue"]').val()) : 0;
FC.ADVANCED_TUNING.thrustLinearization = $('input[id="thrustLinearization"]').is(':checked') ? parseInt($('input[name="thrustLinearValue"]').val()) : 0;
Expand Down
38 changes: 27 additions & 11 deletions src/tabs/pid_tuning.html
Original file line number Diff line number Diff line change
Expand Up @@ -605,12 +605,19 @@
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardGroupHelp"></div>
<span i18n="pidTuningFeedforwardGroup"></span>

<span class="feedforwardTransition suboption">
<input type="number" name="feedforwardTransition-number" step="0.01" min="0.00" max="1.00"/>
<span class="feedforwardJitterFactor suboption">
<input type="number" name="feedforwardJitterFactor" step="1" min="0" max="20"/>
<label>
<span i18n="pidTuningFeedforwardTransition"></span>
<span i18n="pidTuningFeedforwardJitter"></span>
</label>
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardJitterHelp"></div>
</span>

<span class="feedforwardOption feedforwardSmoothFactor suboption">
<input type="number" name="feedforwardSmoothFactor" step="1" min="0" max="75" />
<label for="feedforwardSmoothFactor">
<span i18n="pidTuningFeedforwardSmoothFactor"></span>
</label>
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardTransitionHelp"></div>
</span>

<span class="feedforwardOption feedforwardAveraging suboption">
Expand All @@ -625,19 +632,28 @@
</label>
</span>

<span class="feedforwardOption feedforwardSmoothFactor suboption">
<input type="number" name="feedforwardSmoothFactor" step="1" min="0" max="75" />
<label for="feedforwardSmoothFactor">
<span i18n="pidTuningFeedforwardSmoothFactor"></span>
</label>
</span>

<span class="feedforwardOption feedforwardBoost suboption">
<input type="number" name="feedforwardBoost" step="1" min="0" max="50" />
<label for="feedforwardBoost">
<span i18n="pidTuningFeedforwardBoost"></span>
</label>
</span>

<span class="feedforwardMaxRateLimit suboption">
<input type="number" name="feedforwardMaxRateLimit" step="1" min="0" max="150"/>
<label>
<span i18n="pidTuningFeedforwardMaxRateLimit"></span>
</label>
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardMaxRateLimitHelp"></div>
</span>

<span class="feedforwardTransition suboption">
<input type="number" name="feedforwardTransition-number" step="0.01" min="0.00" max="1.00"/>
<label>
<span i18n="pidTuningFeedforwardTransition"></span>
</label>
<div class="helpicon cf_tip" i18n_title="pidTuningFeedforwardTransitionHelp"></div>
</span>
</td>
</tr>

Expand Down