mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-25 01:05:15 +03:00
Fix rate curve calculation
Use absRc in rcFactor calculation instead of Math.abs(rcInput)
This commit is contained in:
parent
27cf3a356b
commit
96af69ae45
1 changed files with 2 additions and 3 deletions
|
@ -89,7 +89,7 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
|
||||||
|
|
||||||
var inputValue = this.rcCommand(rcData, rcRate, deadband);
|
var inputValue = this.rcCommand(rcData, rcRate, deadband);
|
||||||
var maxRc = 500 * rcRate;
|
var maxRc = 500 * rcRate;
|
||||||
|
var absRc = Math.abs(inputValue) / maxRc;
|
||||||
var expoPower;
|
var expoPower;
|
||||||
var rcRateConstant;
|
var rcRateConstant;
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
|
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
|
||||||
|
@ -101,14 +101,13 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rcExpo > 0) {
|
if (rcExpo > 0) {
|
||||||
var absRc = Math.abs(inputValue) / maxRc;
|
|
||||||
inputValue = inputValue * Math.pow(absRc, expoPower) * rcExpo + inputValue * (1-rcExpo);
|
inputValue = inputValue * Math.pow(absRc, expoPower) * rcExpo + inputValue * (1-rcExpo);
|
||||||
}
|
}
|
||||||
|
|
||||||
var rcInput = inputValue / maxRc;
|
var rcInput = inputValue / maxRc;
|
||||||
|
|
||||||
if (superExpoActive) {
|
if (superExpoActive) {
|
||||||
var rcFactor = 1 / this.constrain(1 - Math.abs(rcInput) * rate, 0.01, 1);
|
var rcFactor = 1 / this.constrain(1 - absRc * rate, 0.01, 1);
|
||||||
angleRate = rcRateConstant * rcRate * rcInput; // 200 should be variable checked on version (older versions it's 205,9)
|
angleRate = rcRateConstant * rcRate * rcInput; // 200 should be variable checked on version (older versions it's 205,9)
|
||||||
angleRate = angleRate * rcFactor;
|
angleRate = angleRate * rcFactor;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue