IMU's in general and the MPU-6050

Hi guys
First sry for my bad english but i give my very best :). Currently im working on a ROV. Up to now I was using an MPU-6050 with the Sketch of Kristian Lauszus, where a Kalman-filter is implemented aswell.

The problem was that the libary gives me only roll an pitch, but not yaw. Due to my bad knowledge with Arduino in in general (Im using it since about 18months and didnt work with c before), i didnt want to calculate something that complicated like an kalman-filter myself.

The i tried to find something else. I hoped to find something using the DMP, what seems to be quite accurate. As everyone i think, i ran into Jeff's Libary. And...im sry, but even if everybody seems love this libary....i dont how to work with it without spending weeks reading his code. I mean there are plenty of functions splitted over several header-files with very few details what they do. Or is it just me the problem?

Interesting seems this for me:

Seems to be the only puplic libary using the published official Documentation about DMP. Didnt worked to complie the example sketches...anyway has someone any experiences with it?

Well the main question i have is:
Why is everyone using the MPU-6050??Yeah he's cheap, surely, but our time is not. I mean i just cant believe that there is someone who sells something without saying how to use it and then such an idiot comes to find it out by Reverse Engineering, spending weeks of time i think. I guess it was quite funny in InvenSense offices when they realised, that they were kidding Jeff and many others so hard...

However can you recommend any other IMU's? I need a very accurate Yaw, drift is ok aslong hes constant. Or has someone already written some code i can use?

Something what seems very nice to me is this:
9-DOF and an easy to use libary
herehttps://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview
any experiences?

Already thank you so much for your answers Im quite frustrated meanwhile.

Felix
PS: If you want you can also send me a PM an i give you my skype name, that would be something more comfortable for longer explanations.

The MPU-6050 was ahead of other sensors, it was cheap and it combined an accelerometer and gyro. Today it is still useful and extremely cheap. However, it is outdated. These are the new ones : http://www.invensense.com/products/motion-tracking/9-axis/

There are still many IMU boards sold with older sensor chips than the MPU-6050. It is not a bad sensor.

Invensense tried to 'protect' the MPU-6050 by keeping the DMP secret. I think that was a stupid business mistake. I can imaging that the developers of the sensor at Invensense with some knowledge of such things in the past have protested against this.

No, it is not you. The i2cdevlib by Jeff Rowberg has evolved into something that is hard to understand. However, it is worth to give it a try.

This is the Kalman Guide : Guide to gyro and accelerometer with Arduino including Kalman filtering - Sensors - Arduino Forum
See the links at the bottom of the first post. They point to the Github TKJElectronics, you already mentioned. If you add a common magnetometer HMC5883L to the MPU-6050 then you have roll, pitch and yaw.

I have not used the BNO055, that chip is a new step forward.

The accuracy is not easy to determine for a IMU sensors. They are noise and they drift. That is why a filter is needed. Perhaps someone has done a real test to compare the accuracy of a few sensors. That is the only data I would trust.

I already pointed out to this sensor providing a super-smart and handsome library- I'm absolutely fine with it!

http://forum.arduino.cc/index.php?topic=348287.msg2402420#msg2402420

I've been using the BNO055 absolute orientation sensor for several months now on an autonomous electric boat, and although the documentation is less than completely clear, it works as well as any other sensor I've tried, even those using extended Kalman filters.

The BN0055 is completely self contained, with a built in ARM CPU, so takes up far less code space than those that depend on external filters. The orientation repeatability seems to be about 1 degree along each axis in absolute orientation mode, providing you carefully follow the calibration instructions.

If you want to take a look, I've attached autopilot code intended for an electric boat steered by GPS, the BNO055 and an Pololu LV168 controller (Atmel Studio 4). Also attached is a plot of GPS points from a recent run on a lake, in the presence of a light southeast breeze. The boat was programmed to run a course consisting of three legs forming a equilateral triangle. I plan to post a writeup soon.

By the way, the "Kalman Filter" attributed to TKJElectronics is simply wrong and although it is some sort of a filter, whatever it actually does, is not done very well. If you are interested, see http://home.earthlink.net/~schultdw/bbot/bbot.html

Auto_BNO.zip (161 KB)

LOG00022.pdf (7.45 KB)

@jremington: where can I find your .ino source code?

.ino source code?

Sorry, this is not an Arduino project.

I used Atmel Studio 4 to develop it. It could be converted into an Arduino project by dividing main() into setup() and loop(). However, it uses Pololu-specific motor drivers and routines, so you would need to invoke those libraries.

oh, a pity - it looks very interesting though. Wouldn't it run with the Arduino IDE, too?

BTW, for GPS I'm using this one (additionally to my CMPS11):
GPS Module GY-NEO-6M V2
http://www.ebay.de/itm/311296066259
GPS-lib: TinyGPS++ TinyGPS++ | Arduiniana
GitHub - mikalhart/TinyGPSPlus: A new, customizable Arduino NMEA parsing library

Wouldn't it run with the Arduino IDE, too?

Yes, but some editing of the source is required.
The posted source contains my own GPS NMEA sentence parser.

ok, it's nice to see nevertheless!
But then the CMPS11 IMU (I2C, UART) plus the GY-NEO-6M V2 GPS module (UART) would be easier to poll by Arduino Sketch IMO.

@ArthurD CMPS11 I2C documentation Jeez christ.. this is so awesome rly thx a lot!!! :smiley:

@jremington Oh, thx, ill have a look for sure.

I was pupil up to 2 months ago, so everything i know about arduino etc. was self-studying and im rly impressed about the community here...i strongly admire your knowledge!