choosing components for an IMU/AHARS (accelerometer, gyroscope, magnetometer, gps)

Hi - I'm starting up work on building an IMU/AHARS (Inertial Measurement Unit/Airborne Heading-Attitude Reference System). I need to maximize accuracy within about a $500 budget. It will be put on a walking 6 legged robot that I've spent the last 18 months working on (that I'm also opening up all the source code, schematics, hardware designs, board layouts, etc. to shortly). This robot is controlled by hobby servos at the moment (may be switching to something else in the future), and thus it is not super steady. Since all the servos are run at 50Hz - I expect most of the shaking occurs at around 50Hz. But if anybody thinks this is wrong I would love to hear other opinions.

This device will take in data from 3 axes of gyroscope, 3 axes of accelerometer, 3 axes of magnetometer, and a gps and combine it all into an XYZ offset and a roll, pitch, yaw offset from initial (power up) conditions. It will have some sort of processor onboard to do all the filtering (using kalman filtering). Currently I'm thinking I'll use an Atmel AT91SAM7X256 just because I'm very familiar with this part.

My current plan is to use 3 Analog ADXRS401 gyros. I've chosen these because I believe them to be the most accurate of the under $100/axis gyros for low speed operation. I would be very interested to hear if anybody thinks this is wrong. I've only looked at Analog, Invensense, Murata, and Tokin parts - does anybody else make low cost MEMS gyros? Kionix used to but now they don't seem to.

There is alot of talk about the 3db bandwidth of the ADXRS401 in its datasheet. I guess I don't totally understand what this means. I mean certainly I know what 3db bandwidth refers to when talking about amplifiers, but with a gyro? Does that mean the actual output voltage decreases as you increase the frequency that you're sampling at? I want to sample this thing as fast as possible for interpreting the sensory data. How fast can I go up to? From reading the datasheet, I think

2KHz? Do I start to lose accuracy when sampling at this high of a frequency?

Regarding gyros - I see that the Analog parts have both a 2.5V output and a temperature output. I wonder, would it make sense to put a resistor directly beneath the gyro and use some sort of control loop to keep the part at a constant temperature? Also, what use is the 2.5V output? Is the 2.5V output the same as the null output? Maybe are you supposed to use the difference between the 2.5V output and the actual output as the measure of angular speed?

Next - for accelerometers - I'm thinking I'll use 3 of either the Analog ADXL103 or the ADXL203. The difference between the two is that the 103 is a 1 axis part and the 203 is a 2 axis part. Is there any advantage to having duplicate axes? I also looked at the Freescale part

- the MMA7260Q, but its bandwidth leaves alot to be desired (3db bandwidth is 150Hz on the A axis, compared to 2.5Khz on the Analog parts). Again, do I lose accuracy when I sample it at such a high frequency? Are there any other parts I should be looking at?

For a magnetometer - I've used the MicroMag3 that Sparkfun sells with good success. I've also used the Honeywell HMR2300 and it has also worked well. But I really am not so sure which sensor among these or the many others out there would be best. One thing that should be noted is that there will be 18 motors operating within about 20cm of these sensors. Surprisingly, with the MicroMag3 that I currently have on board - I have not noticed a large difference in sensor readings with the motors on or off. Any guidance here? I'm thinking I should probably use the gyro and accelerometer parts primarily.

For GPS - I'm thinking I'll use a U-Blox LEA-4S. Not sure what antenna to use. Suggestions? Any others that I should be considering? Also - how much will I be using the GPS data? I mean this robot moves at maybe

10cm/second or so - so I expect the gyro, accelerometer, and magnetometer data will be much more pertinent.

Also - how much accuracy do I need for this? The SAM7X has a built in

10b ADC. Is that enough? I really want this device as accurate as possible, so if I need an external ADC with more precision than that is fine by me.

With regards to kalman filtering - the tutorial I've been following has just been covering how to correct gyro data. Does that mean that accelerometer data is fine how it is? It doesn't need to be filtered?

Any suggestions/advice/pointers/etc. would be greatly appreciated!

Thanks!

-Mike Noone

Reply to
Mike Noone
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.