I've been following the IMU discussions with much interest.
The DCM imu work is very interesting, but it is fairly specific
to aircraft. Even then the GPS assumptions as applied to aircraft have significant faults,
Small UAV's will easily fly as speeds slow enough that the angle between ground tract (Measured by GPS) and actual heading can be significant I would expect the current GPS based DCM system to show weird behaviors when going into the wind with strong winds. A monetary gust could easily make for a 180 reversal in GPS direction with no actual heading change.
The 9dof IMU using magnetic sensors and the Freespace IMU published in Circuit cellar seem to resolve some of these issues by using a magnetic sensor..
My personal interest is in rockets, and while I've had success with Hovering rockets, I want to do some more dynamic stuff wher the "DC" acceleration will be significant.
Toward that End I think the proper no compromises IMU ->AHRS with drift correction scheme is shown below.

This would be the ideal system as it would take into account the turning acceleration that turning planes see and actually do proper correction, so no matter how long you stayed in the turn the roll would not level out. Note that as you turn the E-W N-S portion of velocity is increasing decreasing continuously as you go around the turn. This can be measured by differentiating the GPS velocity, this provides the reference for the increased turn acceleration and the fact that when combined with gravity the effective acceleration is not vertical. Its well determined, but not vertical.
From reviewing the various discussions and code examples on DIYDrones etc...I think I have a pretty good idea how to everything with the exception of the Combine Mag and Acceleration vectors to create reference box. I took Linear Algebra in 1982 and have not touched it since then.
Anyone interested in discussing this in detail?
Some General questions/comments:
It looks like both the Freespace and 9DOF IMU code sets basically toss out the vertical component
of the magnetic vector, why? It seems that tossing information is not helpful?
My guess is that there is some delay in the GPS differentiated acceleration, so one should probably delay the accelerometers, and mag sensors reading and current state by a similar amount before doing the corrections. thoughts?
There is no preferred orientation for a rotation vector or quaternion ,yet both code sets seem to assume a specific up down right left iorientaion with respect to the magnetic sensor.
If you are going to use this for a tail sitter that starts out vertical then transitions to horizontal flight
making these assumptions could be disruptive. The IMU I used for my hovering helicopter and rocket, the Microstrain unit allowed on to mount it in any orientation then apply a rotation to the outputs to get the current state. Can't this be done in the completely general sense so it works for aerobatic
and other needs?
In the next two weeks I'm going to fly a rocket experiment with
Spark Fun 9DOF IMU sensor.
Analog Devices ADIS16400 9DOF sensor.
Sparkfun new 10Hz GPS module based on Venus 6 Chip set.
Novatel OEM Star 10Hz receiver. (Or possibly an eclipse 10Hz Crescent I have both)
Depending on how the sensors work under acceleration I will then build some hardware with
the 9DOF sensors on a small board with a 80Mhz Freescale MCF5213 and would be glad to share Netburner Dev tools and a copy of my IMU hardware with anyone with the skills to help work on this.
.