mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-13 19:40:31 +03:00
Refactor Feedforward Angle and RC Smoothing - mashup of 12578 and 12594 (#12605)
* Refactor Feedforward Angle and RC Smoothing * update rc_smoothing at regular intervals * add Earth Ref to OSD, update pid and rate PG * Initialise filters correctly * refactoring to improve performance * Save 24 cycles in Horizon calculations, other optimisations At a cost of 40 bytes * save 25 cycles and 330 bytes in rc_smoothing * feedforward max rate improvements * typo fix * Karatebrot's review suggestions part one * Karatebrot's excellent suggestions part 2 * more efficient if we calculate inverse at init time Co-Authored-By: Jan Post <post@stud.tu-darmstadt.de> * Horizon delay, to ease it in when returning sticks to centre * fix unit tests after horizon changes Co-Authored-By: 4712 <4712@users.noreply.github.com> * horizon_delay_ms, default 500 * fix unit test for feedforward from setpointDelta * Final optimisations - thanks @Karatebrot for your advice * increase horizon level strength default to 75 now we have the delay * restore Makefile value which allowed local make test on mac --------- Co-authored-by: Jan Post <post@stud.tu-darmstadt.de> Co-authored-by: 4712 <4712@users.noreply.github.com>
This commit is contained in:
parent
445758f3ec
commit
34057bfbc2
19 changed files with 558 additions and 856 deletions
|
@ -4699,7 +4699,7 @@ static void cliStatus(const char *cmdName, char *cmdline)
|
|||
// Run status
|
||||
|
||||
const int gyroRate = getTaskDeltaTimeUs(TASK_GYRO) == 0 ? 0 : (int)(1000000.0f / ((float)getTaskDeltaTimeUs(TASK_GYRO)));
|
||||
int rxRate = getCurrentRxRefreshRate();
|
||||
int rxRate = getCurrentRxIntervalUs();
|
||||
if (rxRate != 0) {
|
||||
rxRate = (int)(1000000.0f / ((float)rxRate));
|
||||
}
|
||||
|
@ -4845,12 +4845,12 @@ static void cliRcSmoothing(const char *cmdName, char *cmdline)
|
|||
if (rxConfig()->rc_smoothing_mode) {
|
||||
cliPrintLine("FILTER");
|
||||
if (rcSmoothingAutoCalculate()) {
|
||||
const uint16_t avgRxFrameUs = rcSmoothingData->averageFrameTimeUs;
|
||||
cliPrint("# Detected RX frame rate: ");
|
||||
if (avgRxFrameUs == 0) {
|
||||
const uint16_t smoothedRxRateHz = lrintf(rcSmoothingData->smoothedRxRateHz);
|
||||
cliPrint("# Detected Rx frequency: ");
|
||||
if (getCurrentRxIntervalUs() == 0) {
|
||||
cliPrintLine("NO SIGNAL");
|
||||
} else {
|
||||
cliPrintLinef("%d.%03dms", avgRxFrameUs / 1000, avgRxFrameUs % 1000);
|
||||
cliPrintLinef("%dHz", smoothedRxRateHz);
|
||||
}
|
||||
}
|
||||
cliPrintf("# Active setpoint cutoff: %dhz ", rcSmoothingData->setpointCutoffFrequency);
|
||||
|
@ -4860,7 +4860,7 @@ static void cliRcSmoothing(const char *cmdName, char *cmdline)
|
|||
cliPrintLine("(auto)");
|
||||
}
|
||||
cliPrintf("# Active FF cutoff: %dhz ", rcSmoothingData->feedforwardCutoffFrequency);
|
||||
if (rcSmoothingData->ffCutoffSetting) {
|
||||
if (rcSmoothingData->feedforwardCutoffSetting) {
|
||||
cliPrintLine("(manual)");
|
||||
} else {
|
||||
cliPrintLine("(auto)");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue