Skip to content

IMUF 231

Compare
Choose a tag to compare
@nerdCopter nerdCopter released this 31 Dec 23:25
· 4 commits to master since this release

IMUF 231

IMPORTANT NOTES

Changleog:

  • Covariance math improvement.

Notes:

  • Identical to 230 except with backported Paweł Spychalski's cavarience math fix from EmuFlight source-code.
  • Pilots are welcome to use any IMUF versions liked best. New IMUF releases are not requirements.

Compatibility

  • IMUF 231 binary for Helio/Strix hardware is compatible only with 0.3.X exclusively. Do not use for older 0.1.0 or 0.2.0.
  • Pilots are still welcome to use any IMUF version based on their personal preferences, but only 225 and above make use of the sharpness feature which require newer EmuFlight (0.2.32+, 0.3.0+).

The Windows® based tool is still required for flashing. Keep the "Original Helio Firmware" UN-checked, or you are really going to have a bad time. If for some reason you flash wrongly, just plug usb, and wait 5 full minutes for the DFU to connect.

Imperative:

  • Compatible only with 0.2.32+, 0.3.0+
  • Save your diff all and dump all prior to flashing IMUF.
  • Flashing may possibly cause invalid data in your settings, especially very-large LPF values that could cause fly-away. This is seldom; however, be sure to validate your LPF and other values. The CLI command defaults may not reset them properly, so set them manually if you see a problem.
  • The best option is to [re]flash EmuFlight 0.3.X 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.

Thanks to

  • Paweł Spychalski for improved covariance math.

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