xioTechnologies / Fusion

MIT License
913 stars 230 forks source link

Question: About the details of the Fusion algorithm #133

Closed DDMichael closed 7 months ago

DDMichael commented 7 months ago

Hi Seb,

First of all, thanks for providing such a wonderful library.

I'm wondering what is the difference between this Fusion algorithm and your original Madgwick filter? Please correct me if I miss something. I just realized that the implementation in Fusion does not require the use of gradient descent, rather, it uses the cross product to calculate error and then use it to compensate the result. Am I right?

If so, can you recommand me the paper that detailed the maths?

Thanks and best wishes Daoming

xioTechnologies commented 7 months ago

Fusion uses a cross product operation to compute the error but this is a minor difference. The more notable changes are the offset correction algorithm, and angular rate recovery, acceleration rejection, and magnetic rejection features which all provide significant improvement to accuracy and performance. There are numerous other changes such as support for different axes conventions and output types.

I suggest the best way to interpret the difference is the that Fusion is the Madgwick algorithm after of over a decade of experience developing IMU products and providing consulting services to a wide range of applications.

The README provides a high level theory of operation. This comment explains the derivation of the rejection features. You are welcome to ask specific questions.

DDMichael commented 7 months ago

Thanks for the reply, really helpful!