mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-26 17:55:24 +03:00
Merge pull request #1232 from klutvott123/patch-1
Fix rate curve calculation
This commit is contained in:
commit
2f3a319f67
1 changed files with 7 additions and 9 deletions
|
@ -87,11 +87,12 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
|
||||||
rcRate = rcRate + (rcRate - 2) * 14.54;
|
rcRate = rcRate + (rcRate - 2) * 14.54;
|
||||||
}
|
}
|
||||||
|
|
||||||
var inputValue = this.rcCommand(rcData, rcRate, deadband);
|
|
||||||
var maxRc = 500 * rcRate;
|
var maxRc = 500 * rcRate;
|
||||||
|
var rcCommandf = this.rcCommand(rcData, rcRate, deadband) / maxRc;
|
||||||
|
var rcCommandfAbs = Math.abs(rcCommandf);
|
||||||
var expoPower;
|
var expoPower;
|
||||||
var rcRateConstant;
|
var rcRateConstant;
|
||||||
|
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
|
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
|
||||||
expoPower = 3;
|
expoPower = 3;
|
||||||
rcRateConstant = 200;
|
rcRateConstant = 200;
|
||||||
|
@ -101,18 +102,15 @@ RateCurve.prototype.rcCommandRawToDegreesPerSecond = function (rcData, rate, rcR
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rcExpo > 0) {
|
if (rcExpo > 0) {
|
||||||
var absRc = Math.abs(inputValue) / maxRc;
|
rcCommandf = rcCommandf * Math.pow(rcCommandfAbs, expoPower) * rcExpo + rcCommandf * (1-rcExpo);
|
||||||
inputValue = inputValue * Math.pow(absRc, expoPower) * rcExpo + inputValue * (1-rcExpo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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 - rcCommandfAbs * rate, 0.01, 1);
|
||||||
angleRate = rcRateConstant * rcRate * rcInput; // 200 should be variable checked on version (older versions it's 205,9)
|
angleRate = rcRateConstant * rcRate * rcCommandf; // 200 should be variable checked on version (older versions it's 205,9)
|
||||||
angleRate = angleRate * rcFactor;
|
angleRate = angleRate * rcFactor;
|
||||||
} else {
|
} 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
|
angleRate = this.constrain(angleRate, -1998, 1998); // Rate limit protection
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue