I have for a while now, while studying at University (towards Master in Engineering Physics and Electrical Engineering), been developing different kinds of AHRS-filters with some success and I'd firstly like to talk a little about one before I go to my real question.
My first real/good AHRS that I developed was for me to really learn and use different filtering techniques but also I had an idea.
Many filter I had looked at used a DCMs as base for their filters. These were nice to look at and I understood exactly what was going on all the time. But most often some type of non-linearity or design choise made the filters very large (9-13 states) and after examining where most computing power goes into a filter (which is, for linear Kalman, the NxN inverse) I wanted to make much simpler filters without the need of extremely large state-vectors.
The idea I got then was to use two Kalman filters in cascade. One that estimates the attitude (the 3rd row of the DCM) and one the estimates the heading.
This effectively made the filter go from a one 12 state filter to two 6 state filters. The inverse of a 12x12 matrix was about 10k floating ops and the inverse of two 6x6 matrices was about 1.2k floating ops, effectively making the filter about 8-9 times faster with the same precision.
But now to my real question. The last year I've been studying Quaternions at my spare time and I believe I can use those for making even better filters.
But I'm stuck. I have grave problems when trying understanding how use them when I have three rotations.
What I mean is that I have a rotation around X, Y and Z, but the rotation quaternion wants a vector to rotate about and an angle.
How do I get the net vector and net rotation? Because I don't want to make 3 multiplications.
Is there a way to do this?
Or am I going at this the wrong way? Because I want to calculate my prediction using quaternions resulting in a quaternion. Instead of using DCMs for the prediction and states.
Perhaps that someone could help me understand how to make predictions using quaternions?
I saw in a video about OP that it used some sort of quaternion based filter so I hope someone here can help me with this and thanks for a great forum!
If I was unclear about something just ask!
Luleå University of Technology
Edited by Korken, 08 July 2012 - 02:25 PM.