I recently got the CHR-6d IMU from CH Robotics, I needed a 6DOF (3 gyros and 3 accelerometers) for my quad-rotor. In my last attempt I used a 5DOF IMU and did all processing in the control board. Although I was able to get it to hover fairly well with only minor manual corrections I had two main limitations. Processing power and sensitivity to vibration from the frame. The CHR-6d has a powerful ARM Cortex processor with plenty of processing power available for filtering and additional signal processing. I was able to drastically reduce the effect of vibration by complete potting the IMU in dielectric gel.
The board comes with open source software the implements the digital filters and serial communication. I needed to extend this functionality to calculate the actual Euler angles (or equivalent) that would be used to stabilize the quad-rotor. I have tried a Kalman filter in my last attempt so I wanted to try out something different. I found an excellent paper from William Premerlani that very clearly explains the theory behind the Direction Cosine Matrix. I prototyped the implementation in Matlab and tested it using data from the actual IMU, I also did a few vibration tests by mounting it on my quad-rotor and powering up the motors while holding it fixed on the ground. With the dielectric gel I was able to reduce the effect of vibration to about 1-2 degrees of error when the motors are running at 65% throttle (typical hover is 55%). The ultimate test will of course be a flight test.
The following video is a ground test of the complete setup. The implementation is not yet completed, I have a 3-axis magnetometer break-out board for the HMC5843 from SparkFun. It will be connected through the I2C bus to the CHR-6d IMU and will be used to correct the drift of the yaw gyro.
You can download the latest version of the DCM implementation and Matlab scripts from the DCM page.


Great job, Vassilis. Do you have all angles? Is it possible to use this IMU with Paparazzi for fixed-wing plane?
Roll and pitch are there, the yaw is calculated by using the Z-axis gyro but it is not currently drift corrected. I have a 3-axis magnetometer I will be using to correct the yaw. I will be testing the IMU on my quad-rotor and later on my Paparazzi EasyStar.
[...] Vassilis’ Projects Projects, gadgets etc by Vassilis « Direction Cosine Matrix implementation for the CHR-6d IMU [...]
Happy New Year, Vassilis.
Any other method ( excluding magnitometr ) to correct yaw drift?
Yes, actually for fixed wing aircraft you can you the GPS heading. However for the GPS heading to work you need forward movement, this is not a problem for a fixed wing but for a VTOL it will not work.
Happy new Year to you too.
And again.., great work! When it gets spring over here I can perform some paparazzi tests, give you some log to improve results if needed. THX