Open Source Attitude Estimation Code with Euler Angle and Quaternion Support

Hey everyone.  I recently finished a new AHRS (see the picture below).  The firmware is open-source, and I thought it might be interesting to you guys.  The firmware supports EKF-based Euler Angle and Quaternion estimation, depending on what you want to use (you can estimate using euler angles if you want to limit the magnetometer so that it only affects yaw).  For anyone who wants to write their own estimation code, the UM6 firmware might be a good starting place.


Sourceforge project:

The source code can be checked out using SVN with:

svn co


Views: 3020

Reply to This

Replies to This Discussion

As an added note, the UM6 doesn't do anything to compensate for centripetal acceleration right now.  There are a bunch of extra pins routed out through two 2x6 2mm headers on the bottom of the sensor, so GPS and airspeed could easily be brought in.  If anyone wants to work on centripetal compensation code, I'll give you a UM6 and create a SVN branch for you.  Let me know if you are interested.
I noticed your firmware was developed with Raisonance Ride7?  The produced hex file appears to be greater than 32KB, the limit for their low cost R-Link Standard for debugging.  Is it true that you may not be able to debug programs greater than 32KB, but program uploading with rlink std does not have that limitation?  Are you using the R-Link Pro?  BTW, thank you for posting your code, real operational EKF code like this (especially with your selection of sensors...which I'm fond of) can be a great learning tool for innumberable students/hobbyists/professionals.
I actually didn't use JTAG for development in this case... The board is programmable over the TTL UART using an onboard bootloader on the STM32.

I'm probably going to be working on something similar over the next few months. Maybe even with the 6DM that I bought. If I ever have something to show for my efforts, will let you know. :)



That's great!  I'll look forward to seeing what you come up with.

Attitude estimation ONLY 3axis ACCELEROMETERS.


Dear DIYdrones friends,

I'm looking for an Attitude Estimation algorithm, and only have 3 axis accelerometers. I know this will may not be optimal, and will be slow. But, if you know an algorithm, forum topic, or wiki how to set this up for my limited arduino hardware please tell me. 




Just reference to the Earth gravity vector, and use an arctangent function to find the X and Y Euler angles. Be careful about linear accelerations, as they'll throw off your calculations.

Note: the Z Euler angles will be invalid most of the time.

i am interested about centripetal compensation code =)

Is the source code for the most recent firmware (UM3?) and version 3.0.x of the CHR Serial interface program available anywhere?  Seems like the Sourceforge repositories are a bit out of date.

Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service