I've seen huge improvements in terms of sensor fusion algorithms implementations into the APM 2.5, but none of those changes have been made to the ArduIMU v3. As a result the arduIMU is EXTREMELY sensitive to vibration and drift. I have taken a look at the APM sensor fusion code(in an attempt in port it over) and I noticed every thing is pretty much in a custom library.

This makes the code especially hard for someone like me(who doesn't know how to use the libraries) to port over, but it should be fairly easy for someone who knows how to use the libraries to port over. 

I don't really know any developers on diydrones but I would love to team up with some of them and improve the arduIMU code. I mean it hasn't been updated since August 2012. I have made improvements myself which improve its speed and ease of interfacibility......I just don't know where to post them? 

The arduIMU is the only affordable sensor board on the market which comes with sensor fusion software already installed. The software just isn't very good. Why do I feel like this project has been abandon. It wasn't even transferred to the new downloads page.

Any suggestions?

E-mail me when people leave their comments –

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

Join diydrones


  • Hi Guys! I am looking to have an external IMU in my s800 Clone for having a cleaner installation  but with good vibration management. I think having this option would be great (To have an external IMU in APM 2.6)

    Is there already any out of the box port for this? Or I need to modify AC 3.xx code in order to make it work


  • Glad you appreciate it. Please let me know if you've got it working on your ArduIMU too! And if your code somehow incorporates the magnetometer, I would be very interested in it, since my time is quite limited from now on to work on my project :-(

  • That's perfect! Exactly what I was looking for. The last piece of the puzzle. I'll test it out and incorporate it into my ArduIMU code.
  • Maybe you are interested in my Arduino sketch specifically written for the MPU-6000 on the ArduIMU+ V3 board from 3DRobotics Inc. You can download it from my Dropbox share: v053_MPU6000_DMP6_SPI.ino. Please read the header carefully because it contains a lot of useful information.My sketch is based on Jeff Rowberg's MPU6050_DMP6_I2C sketch which makes use of the Digital Motion Processor to obtain the quaternion values from the MPU, and from there derives roll, pitch and yaw without almost any drift. My sketch is a translation of Jeff's sketch and also uses the DMP, but makes use of the SPI protocol i.s.o. the I2C protocol for transferring data (on ArduIMU+ V3 "MPU-6000 uses SPI for max performance"). My sketch works perfectly with the Teapot demo (also from Jeff, I only corrected the axis). Please let me know if you like it. It took me a little over 100 hours to write and test it.

    Shared with Dropbox
  • I posted some code that works for me here:   ARduImuV3 code   It performs gyro & magnetometer cals(and saves to EEPROM) and also outputs GPS & Baro data.  There are 2 projects - v1 & v2, the only diff is v2 incorporates Baro data.  There is a text file which describes the board as best as I could.  Also there is a processing sketch (Arduimu_Cube)  for displaying the data as a rotatung cube. I have 2 V3 IMUs, each with a different rev of the MPU6000 - Rev C and Rev D (the software adjusts). The output stream is comma delimited roll, pitch. yaw , GPS & baro.  I think the code is about 17K and because all the A/D ports are no longer used (from V2), it should be possible to create a quad copter with just this board.,

  • You nailed it. I have looked through the forums. I have at least made it operational, putting out the right outputs. But magnetometer is useless with no offsets. I have done as much as I can as a programmer to make it better but my skills are limited. That is why I am reaching out to the community.
  • Out of date?  That's to put it mildly.  The code is not operational to begin with.  It outputs wrong values for the unit orientation out of the box.  So, the unit is not functional with the "sample" code.  The issue has been discussed in detail on the IMU forum.  The magnetometer is not being used in the code as well.  No bug reports have been addressed either.  If you want to take charge,  go through the IMU forum, incorporate all the fixes described there, solve reported bugs, include magnetic compass into the algorithm and code do resolve magnetic deviation and you will have a usable unit.

  • If you look at 3DR's development history, you'll see the IMUV2 was designed for the Ardupilot so it shouldnt be a surprise that V3 also works as advertised with the Ardupilot.

    Good Luck   

  • I'm trying to use it for a custom made auto pilot. I am surprised it worked so well with the ardupilot! I am getting terrible readings in flight. It also drifts at least 20 degrees after 5 min of flight. I've tried everything from rolling averages to tuning the PI controller.
    @pbreed it does have an optional gps. The software itself does not take any of that info into account. It may take velocity but still suffers from some centrifugal forces.
  • The sensors require GPS input to really work well and arduimu has not GPS....

    (This helps zero out the bias errors and the GPS velocity changes give you good pitch/roll corrections even during accelerated flight.)

This reply was deleted.