New Sparkfun Toys - Atomic IMU 6 DoF

New IMU offered by Sparkfun here. I think this board has some great potential that could lead to some all singing, all dancing Arduino-native IMU.The fact that this IMU is built around the ATMege 168 makes me think that it could be re-flashed to become some sort of "ArduIMU" board, and even run a ported version of the "Premerlani-Bizard robust direction cosine matrix estimator / MatrixNav firmware" as per this suggestion.Perhaps this board could be partnered with the ArduPilot, the IMU doing its thing, and the ArduPilot providing GPS info and servo driving?Anyone got any opinions for or against this? Or even better, technical reasons why this a) won't work, or b) is an awesome idea! :DSimon
E-mail me when people leave their comments –

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

Join diydrones

Comments

  • @Bill P. - That makes sense now. I am familiar with dithering, and in retrospect perhaps I should of picked up on that from your post :)
  • LISY300ALs are $5.97/ea qty 1 @ Arrow.. a $50 ghetto MEMS IMU should happen in 2009. At least if you subtract inflation.
  • Someone needs to sell an IMU with just gyros & nothing else for $50. How many robots does Nate think don't already have a microcontroller capable of sampling an IMU? Who would even buy it if they didn't already have their own programmer for such a microcontroller?

    Modern gyros can go without corrections for over 10 minutes. Amazing that no-one has ever published a graph comparing the drift of different gyros.
  • What if the signal is 0.3 instead of 0.5? In that case you're hosed, the 0.1 amplitude noise will never cause it to exceed 0.5 and be quantized as 1, so you end up with signal = 0.0 no matter how fast you sample. But intentionally increasing the noise's amplitude (dithering) can reduce the sampling error in this case! With >0.2 peak amplitude noise, a small number of the 1 bit ADC's samples will be 1, and the long term average will be closer to 0.3.
  • I wrote this before seeing Bill's solid explanation (the page index buttons are burried below the reply box). Might as well post it.

    Oversampling Example: A signal is at 0.5, mixed with evenly distributed noise of 0 mean and 0.1 peak amplitude. In a single measurement, a 1 bit ADC will report a 0 or 1, producing 0.5 error in both cases. If you sample multiple times while the signal remains (more or less) constant, half the samples will be 1, and half will be 0. Averaging the multiple samples using 2+ bit math shows that the signal is 0.5 (with zero error in the limit of infinite samples). So, a 1 bit ADC can resolve >1 bit by letting noise cancel itself out over time. Many factors degrade it in the real world, but the basic concept works.
  • T3
    automatik,

    The effect that I am talking about, namely the increase of the effective resolution of an A/D converter by oversampling is a real effect that I have taken advantage of at work and play for over 30 years. Here is what is going on.

    A small amount of noise is your friend. What it does is toggle the least significant bit of your A/D. It is called "dithering". Fortunately for us, the gyros and accelerometers have a little bit of noise. So, whenever you take a sample, sometimes you get a number that is a little bit higher, sometimes a little bit lower. If you add them all up and take the average, you will have more resolution than you started with. For implementation, what you do is take the samples, shift them to the left a few places (I shift 10 bits all the way to the left into a 16 bit integer). Then you take more samples then you need. Each time you get one, you pass it through a low pass filter. When you need a value for a computation, you take the filter output. What you wind up with is a few extra bits real resolution, as long as there is a bit of noise in your system.
    The same effect is used to print photos in a newspaper. The plates they use to print papers either deposits ink in a location, or it does not. So, what they do, is take each pixel of the image, and add noise. If the image plus the noise exceeds a threshold, the pixel is 1. Otherwise its zero.
    Hope this helps.

    best regards,
    Bill
  • @Jhon: 6DOF = 6 Degrees of FREEDOM of motion i.e. X, Y, Z axes, plus Pitch, Roll,Yaw. As opposed to 6º of accuracy in any particular direction.
  • @Bill P. - "..if you oversample and filter...noise works to your advantage and increases the effective resolution of the measurement. I was getting 12 bits of accuracy for sure, using a 10 bit AD."

    How does sampling rate ("speed" of sampling) impacts resolution of data? (i.e. if my ADC has 3 bits of resolution, sampling at 5Hz and sampling at 10 Hz will still produce data sample at 3 bits of resolution, but at 10 Hz I'll just have more data). I understand applying filter to do data, but not how those two steps improve accuracy of data ( "getting 12 bits of accuracy for sure, using a 10 bit AD"). For example applying FFT, or DC filter, can "remove" noise component on acquired samples, and such filtered data might be more useful for further processing or decision making, but bit resolution of data sample will not change; processed data will be just "smoother" in comparison to acquired (raw) samples....What do you mean by "oversampling" - more then two times Nyquist frequency or something else?

    Sometimes writing on the net can not adequately convey "tone" of the question, so please note that I am not questioning if your application woks..I've seen roll-pitch-yaw demo video :)
  • T3
    1. Based on what I saw in my roll-pitch-yaw demo, 10 bits of ADC resolution works just fine, particularly if you oversample and filter, in which case noise works to your advantage and increases the effective resolution of the measurement. I was getting 12 bits of accuracy for sure, using a 10 bit AD.

    2. Regarding the gyro range being 4 times the one I am using now, it turns out that is perfect! That is what I am going to use on the next generation of my board. Both Paul and I have tested versions of my board with the 4X gyro range. Paul built his own board, I modified one that I had to use 300degree/second gyros. I was worried about noise and drift, but it turned that noise and drift was not an issue at all. Basically, I could not tell any difference in the roll-pitch-yaw demo. Except, the higher range gyros allow you to make faster rotations without saturating the gyros.

    In any case, I 100% endorse what Chris Anderson is suggesting. Its going to be awesome.

    Bill Premerlani
  • That's about 4X the cost of its major ICs (even in qty 1). The accel + gyros are not spatially well aligned, which will introduce minor errors (SW correctable if you have a math PhD). Doing Kalman on an AVR with 1kB SRAM is probably not much fun either. Better to design + build your own ghetto MEMS IMU. Even better to just save up and buy an ADIS cube, or social engineer a free sample.
This reply was deleted.