October 21, 2009
about 4 years ago
To date, I can’t get this board to work as advertised.
The appeal and “fusion” offered by InvenSense’s IMU comes from what they call the Digital Motion Processor (DMP) – which if I understand correctly is a processor embedded in the gyro’s packaging which can turn the raw sensor values into extremely useful and nicely filtered data representations like quaternions and world-corrected acceleration values.
Algorithms that do this well are a pain to write from scratch, and would place a large processing burden on something like an Arduino. The DMP is supposed to do this all for you, and just return a stream of processed data – you don’t even need to deal with the raw gyro and acceleration values if you don’t want to.
The problem is that the DMP can not be configured / accessed by manipulating the I2C registers alone. In fact, a bunch of registers are just listed as “reserver for DMP” in the chip’s data sheet with no further documentation about how to set up or use the DMP. Instead, you’re supposed to use their example code to upload the code for the DMP over I2C (which is a lot more than couple of register settings).
So, as it stands, don’t expect to plug this into your Arduino and get any more sensor “fusion” than you would out of a discrete gryo / accelerometer pair. The sketch hobbytronics mention does this, but doesn’t use the DMP. Basically, if you want the DMP, you have to use the official SDK code, and that code doesn’t (yet) work on Arduino. It also looks like it was written by sadists, it’s quite confusing and poorly organized.
It seems like there are two version of the official library floating around. By registering as a developer on the InvenSense site you can download the IMU-3000 SDK, which includes C source for a Visual Studio project intended to run on a Windoes XP computer connected to their evaluation board via their I2C bridge. The other, more promising branch of code looks like an adaptation of the official SDK to run on AVR chips. I spent the better part of a day trying to get this cleaned up and working on an Arduino Uno, to no avail, could never get all three acceleration values to read.
One problem is that the official evaluation board (for which the SDK code was originally written) was intended for a Kionix KXTF9 accelerometer instead of the ADXL345 included in SparkFun’s breakout (which means changing a bunch of registers in the code, and possibly some other config settings). Even then, I’m not sure that the DMP code allows you to compensate for the mis-matched axis between the accel and gyro on the SparkFun breakout. (I know SparkFun prefers a smaller footprint to consistent sensor orientation… but it might be a bigger issue than usual in this case.)
So, thus far there doesn’t seem to be any way to actually use the advertised functionality of this chip without embarking on a major coding project. Do not expect to “offload the intensive motion processing computation requirements from the host processor” until the software issues are resolved. Until then this board is just a vanilla accelerometer / gyro pair, and if you need to use the DMP functionality (which, again, is the whole point!) you’ll have much fewer headaches with the official evaluation board (with the KTF9) than the Sparkfun breakout.
If anyone has had a better experience with this, I’d love to be proven wrong and see some code that gets the DMP to talk.
about 5 years ago
This comes assembled, and includes the elusive six and eight pin stackable female headers, correct?
No public wish lists :(
Forgot your password?
No account? Register one!