The FreeSpace IMU

Finally, the article I wrote is out in the May 2010 issue of Circuit Cellar Magazine. Unfortunately I have yet to get my hands on it. From http://www.circuitcellar.com/magazine/; it's $2 to buy or go to Barnes and Noble and get yourself a copy of the magazine.


The FreeSpace IMU: A Quaternion-Based Algorithm for Attitude Estimation by TJ Bordelon


An unmanned robotic vehicle requires a working inertial measurement unit (IMU), which outputs an estimation of the attitude, or orientation, of a vehicle in 3-D space. For attitude estimation, you need MEMS sensors (e.g., gyros, accelerometers, and magnetometers) and a sufficient algorithm to “fuse” them together. This article covers a simple quaternion-based algorithm for an IMU project. p. 14


ccover2.jpg


E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • Looks like the magazine is available here:
    http://www.scribd.com/doc/32505258/Circuit-Cellular

    Article on Pages 16-23
  • I've looked at your code, and one thing that would really help are some specific comments on what goes in the GetSpacEState...
    I typed up a n additional comments and was wondering if it is correct:

    // Aircraft coordinate system:
    // X axis is forward, Y is to the right, Z is down.
    // imu_north[0]=magnetic field on xaxis normalized to +/-1.0 Should be maximum when pointing north
    // imu_north[1]=magnetic field on yaxis normalized to +/-1.0 Should be maximum when pointing west.
    // imu_north[2]=magnetic field on zaxis normalized to +/-1.0 Should be maximum when vehicle vertical
    // is pointing north at angle from level defined by local vertical component of magnetic field.
    //imu_north is scaled to unit vector.
    //
    // imu_down[0]=X axis acceleration this value is positive when vehicle is pointing straight down.
    // imu_down[1]=Y axis acceleration value is positive when right wing is pointing down.
    // imu_down[2]=Z axis acceleration value is positive when vehicle level and upright..
    //imu_down is scaled to be unit vector.
    //
    // rates[0]=Rotation around X axis positive when rolling to right, scaled to Rad/sec
    // rates[1]=Rotation around Y axis positive when pitching nose up, scaled to Rad/sec
    // rates[2]=Rotation around Z axis positive when yawing to the to right, scaled to Rad/sec
  • 3D Robotics
    Is your code open source? If so, can you give us a link?
  • I cannot post the article here, as I have an agreement with the magazine. They want to make money after all. I wrote it because I found the existing algorithms overly complex. Just wanted to point it out, and if you're in Barnes and Noble, you can take a peak.

    Basically it's a very simple, easy to visualize, and easy to code IMU algorithm.

    The stuff I'm used to seeing is "DCM" which is a big rotation matrix (expensive) and some crazy hard to visualize math. Maybe some of it simplifies to the same thing, but most of the existing papers frustrated me.

    (PS-- I don't get money from this, just trying to point out that it's available.)
  • Sorry everyone, didn't check the link before ok'ing the post. My bad.

    Tj can we get a text post of your article or if not some background info about why you wrote it and what it is about, then members can decide if they want to buy it.

    Thanks

    Ron
  • Quaternion rotation is what we always used, if that's what it is.
  • Developer
    Why not post your word doc or pdf then?
  • The link had a space at the end! Wierd. It is indeed http://www.circuitcellar.com/magazine/, but take the space off.

    Yeah, it's in a pay magazine, but $2. I don't see any of that, but it's a unique algorithm and very simple. Worth it I'd say. I spent many years perfecting it. I believe it superior to DCM in simplicity-- you can easily wrap your head around it.
  • The link didn't work so I used google. Is it right that we have to pay to see the article?
This reply was deleted.