Posted by Simon Wood on January 6, 2010 at 10:38am
Looking through the code (and the various discussions on the web) I note that the 3axis Acc uses gravity to provide stabilisation of the gyros for pitch and roll axis, but the yaw is not compensated unless there is sufficient forward motion (detected by GPS).Is it possible to intentionally tilt the sensor's pitch down by (say) 45' so that gravity vector can be used to smooth all gyros?I'm a bit swamped by the maths of all this IMU stuff, but I suppose that that the reported Euler angles could be 'corrected' to report properly.Mungewell.
You need to be a member of diydrones to add comments!
Thanks for the detailed reply, it is good to know that the yaw is compensated when it happens that the board is titled by the motion of the aircraft and I agree that GPS is the way to go for navigation.
I was thinking more of the situation of a quad/helicopter in a level hover, say performing a video survey. At this time the board would be level and the yaw gyro would drift at the rate you suggest. GPS would not help as there would be no forward motion to provide a heading (in fact a noisy GPS position could just confuse the situation more).
If the board was tilted so that there was some of the gravity vector in the yaw angle, then this should be enough to help stablise the yaw from drifting.
As far as I can see there would not be a problem just taking a known tilt angle and adjusting the resultant pitch/roll/yaw from the DCM by this constant amount. The only 'downside' I can think of is that it would move the singularities, which might mean that they are more likely to be 'hit' in normal flight.
In the ArduIMU code, the DCM attitude and the drift correction modules are orthogonal and symmetrical in all 3 axes, and all gyros - pitch, roll and yaw are drift-corrected by the gravity vector obtained from the 3 accelerometers.
If the ArduIMU board is horizontal, then the gravity vector is coincident with the yaw vector (vertically down to the centre of the earth), and the error correction is zero for the yaw axis (error vector cross product for these two vectors is zero). But if the ArduIMU board is tilted from horizontal, the yaw gyro will be corrected for drift as your surmised.
As the yaw gyro has a drift of about 1 or 2 degrees per minute, the normal flight pattern of hobby planes (banks, climbs/dives) can keep the yaw gyro rather drift-free and locked. If the ArduIMU is connected to a PC 3d visualiser and the ArduIMU is rotated is all three axes, you would find that the yaw drift is slight over 5 minutes or more.
However, keeping the yaw gyro 'rather drift-free' or 'slightly drift-free' is of not much use for navigation, where the absolute yaw heading is required, and only GPSs or magnetometers can provide this absolute correction for yaw heading. On the other hand, if you only want the ArduIMU for stabilization of the plane to make it easier to fly, the existing code/configuration is sufficient, and you do not need to consider mounting the IMU at an angle and redoing the maths to compensate for the tilt.
Replies
I was thinking more of the situation of a quad/helicopter in a level hover, say performing a video survey. At this time the board would be level and the yaw gyro would drift at the rate you suggest. GPS would not help as there would be no forward motion to provide a heading (in fact a noisy GPS position could just confuse the situation more).
If the board was tilted so that there was some of the gravity vector in the yaw angle, then this should be enough to help stablise the yaw from drifting.
As far as I can see there would not be a problem just taking a known tilt angle and adjusting the resultant pitch/roll/yaw from the DCM by this constant amount. The only 'downside' I can think of is that it would move the singularities, which might mean that they are more likely to be 'hit' in normal flight.
Mungewell.
In the ArduIMU code, the DCM attitude and the drift correction modules are orthogonal and symmetrical in all 3 axes, and all gyros - pitch, roll and yaw are drift-corrected by the gravity vector obtained from the 3 accelerometers.
If the ArduIMU board is horizontal, then the gravity vector is coincident with the yaw vector (vertically down to the centre of the earth), and the error correction is zero for the yaw axis (error vector cross product for these two vectors is zero). But if the ArduIMU board is tilted from horizontal, the yaw gyro will be corrected for drift as your surmised.
As the yaw gyro has a drift of about 1 or 2 degrees per minute, the normal flight pattern of hobby planes (banks, climbs/dives) can keep the yaw gyro rather drift-free and locked. If the ArduIMU is connected to a PC 3d visualiser and the ArduIMU is rotated is all three axes, you would find that the yaw drift is slight over 5 minutes or more.
However, keeping the yaw gyro 'rather drift-free' or 'slightly drift-free' is of not much use for navigation, where the absolute yaw heading is required, and only GPSs or magnetometers can provide this absolute correction for yaw heading. On the other hand, if you only want the ArduIMU for stabilization of the plane to make it easier to fly, the existing code/configuration is sufficient, and you do not need to consider mounting the IMU at an angle and redoing the maths to compensate for the tilt.