Dear All,
As you might be able to gather from the last series of posts, I am designing a quad copter controller. This being my first in depth embedded project this might be a little impossible, but I am doing this to learn, so hey, let's just see what happens!
I am using an MPU9250 9DOF IMU, (Even though the magnetometer is a little annoying to read and I have not completed, as it is a slave I2C device connected internally from what I gather, dead easy to implement with no chance of getting the full documentation *sigh*)
I wanted to start researching possible sensor fusion algorithms.
I realize this topic is rather complex, and I would probably get my quad copter in the air quicker if I just use someone else's implementation, but I would not learn anything from that.
My goal is to take a sensor fusion algorithm and implement it myself in C, for the stm32f446 processor I am using.
Right now I have found two that sound promising: a Kalman Filter, and a Madgwick Filter.
I am very much tempted with the Madgwick filter, as the whole derivation of the filter is easy to find in Sebastian Madgwick's original paper, plus there is sample code, if worst comes to worst. (
http://x-io.co.uk/open-source-imu-and-ahrs-algorithms/)
However, I have never studied this topic before. I have looked over the paper, and while I have been able to teach myself more about quaternions, and think I have a good grasp of how they represent orientation, I am at a loss with the complexity of that paper. I really want to put the time and effort in to learn and understand this filter, but don't know what I should study as a basis.
My question is, what topics (Math topics, Sensor Fusion specifics, etc...) should I definitely review before jumping into this? Are there certain prerequisite piece of knowledge I can get to know that will help me down this path? I am struggling very much with keeping up with the derivation of the filter in the Madgwick paper. Is there anything that you would have liked to know before going down a similar rabbit hole?
Furthermore, is Madgwick's a good choice? Should I be learning more about Kalman's filter? This might be a stupid question, but which one is more applicable to a simple quad copter? Which one is easier to implement and understand?