IMUF 230
IMUF 230 binary for Helio/Strix hardware is compatible only with 0.3.0 exclusively. Do not use for older 0.1.0 or 0.2.0.
IMUF 225 and IMUF 230 add the new Sharpness parameter to the IMUF filter. This changes how the dynamic biquad filter within the IMUF acts. Essentially a higher sharpness makes the dynamic biquad more dynamic based on error. Your IMUF_LPF value is the base value for the dynamic filter. Low values can be used if desired, a high sharpness is then required.
What makes IMUF 225 and IMUF 230 different? IMUF 225 uses cross axis data to help determine the Kalman filter. IMUF 230 uses no cross axis data to determine the kalman filter (how it is done in 0.3.0 for normal fc). IMUF 230 is recommended but you are free to fly what you like.
Users are still welcome to use RC209b (aka RC9b), RC211 (aka RC11), RC213, or 224.
The Windows® based tool is still required for flashing. Please keep the "Original Helio Firmware" UN-checked. If for some reason you flash wrongly, just plug usb, and wait 5 full minutes for the DFU to connect.
Imperative:
- Do not use 225 & 230 on EmuFlight older than 0.2.32
- Save your
diff all
anddump all
prior to flashing IMUF. - Flashing may possibly cause invalid data in your settings, especially LPF's that could cause fly-away. This is seldom; however, be sure to validate your LPF and other values because the CLI command
defaults
may not reset them properly. The best option is [re]flash EmuFlight 0.3.0 firmware (with full-chip erase) after flashing the IMUF binary. If your LPF values are in a normal range, then there is no issue to fix.#For safety, ONLY IF your data is corrupted: reset default dTerm LPF's (OR set your own tuned preference) set dterm_lowpass_hz_roll = 100 set dterm_lowpass_hz_pitch = 100 set dterm_lowpass_hz_yaw = 100 set dterm_lowpass2_hz_roll = 250 set dterm_lowpass2_hz_pitch = 250 set dterm_lowpass2_hz_yaw = 250
Additional information:
- Sharpness math in this IMUF is as follows:
src/filter/filter.c:83: sharpness = (float)filterConfig.sharpness / 250.0f;
src/filter/filter.c:110: float errorMultiplierX = ABS(setPoint.x - filteredData->rateData.x) * sharpness;
src/filter/filter.c:111: float errorMultiplierY = ABS(setPoint.y - filteredData->rateData.y) * sharpness;
src/filter/filter.c:112: float errorMultiplierZ = ABS(setPoint.z - filteredData->rateData.z) * sharpness;
- Therefore, for no affect
set sharpness = 250