1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-25 01:05:15 +03:00

Merge pull request #1232 from klutvott123/patch-1

Fix rate curve calculation
This commit is contained in:
Michael Keller 2018-11-23 00:27:08 +13:00 committed by GitHub
commit 2f3a319f67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -87,11 +87,12 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
rcRate = rcRate + (rcRate - 2) * 14.54;
}
var inputValue = this.rcCommand(rcData, rcRate, deadband);
var maxRc = 500 * rcRate;
var rcCommandf = this.rcCommand(rcData, rcRate, deadband) / maxRc;
var rcCommandfAbs = Math.abs(rcCommandf);
var expoPower;
var rcRateConstant;
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
expoPower = 3;
rcRateConstant = 200;
@ -101,18 +102,15 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
}
if (rcExpo > 0) {
var absRc = Math.abs(inputValue) / maxRc;
inputValue = inputValue * Math.pow(absRc, expoPower) * rcExpo + inputValue * (1-rcExpo);
rcCommandf = rcCommandf * Math.pow(rcCommandfAbs, expoPower) * rcExpo + rcCommandf * (1-rcExpo);
}
var rcInput = inputValue / maxRc;
if (superExpoActive) {
var rcFactor = 1 / this.constrain(1 - Math.abs(rcInput) * rate, 0.01, 1);
angleRate = rcRateConstant * rcRate * rcInput; // 200 should be variable checked on version (older versions it's 205,9)
var rcFactor = 1 / this.constrain(1 - rcCommandfAbs * rate, 0.01, 1);
angleRate = rcRateConstant * rcRate * rcCommandf; // 200 should be variable checked on version (older versions it's 205,9)
angleRate = angleRate * rcFactor;
} else {
angleRate = (((rate * 100) + 27) * inputValue / 16) / 4.1; // Only applies to old versions ?
angleRate = (((rate * 100) + 27) * rcCommandf / 16) / 4.1; // Only applies to old versions ?
}
angleRate = this.constrain(angleRate, -1998, 1998); // Rate limit protection