Hi All,

I am facing a real problem with all IMUs with most of open source algorithms around. The problem is that the IMU gives a stable good readings when you are not moving it too fast, but when shacking and moving the IMU really fast then place it stationary, it never gets back to zero again in some algorithms /or gets back too slow in other algorithms.

By the way, i have used Arduimu, mpu6050, mpu9150, mpu9250 and they all suffer from the same problem when moving them in all axes fast for around 20 seconds then back to initial zero position, and it did not get back to zero.

I have found the source of the problem which is the Gyroscope. I have tested fast rotations using Gyroscope integration only to get eulers and found that it is causing this effect.

The Accelerometer data is supposed to correct this effect using the sensor fusion algorithm, as it gives accurate reading as long as the device is stationary. but it doesn't actually do anything except a too slow correction. and what will correct the Gyro error while the device is moving in a fast rotations like this ??  If i decided to depend more on Accelerometer using complementary filter, or raising the weights in algorithms like Magdewick and Mahony open source algorithms, it gets back to zero after a very fast rotations in one second(still slow but good comparing with previous results) but i LOOSE a very important feature for me which is the good dynamic behavior. For example, if I move the IMU right and left while keeping the roll and pitch angles zero on table, the result is that roll and pitch angles changes with this yaw movements because the device now depends more on accelerometer readings which measure the acceleration i am moving with as well.

I tried even a lot of weights for all algorithms and it is still have the same effect. why Gyro integration fails at high speed rotations ?? I have even tried to make Ki value equal ZERO at high rotations with no useful results, and also making it zero at low rotations gives nearly the same results for me.

even when using the open source fusion algorithms it still have the same effect ?? i know this effect doesn't greatly affect Copters or fixed wing planes because it never moves too fast like when i move the IMU too fast in with hand which makes the IMU do not suffer from this effect. But imagine if the user is holding an IMU in his hands for any fast rotation application, definitely he will suffer from this effect.

Is there any solution to this problem ?

I know there is a lot of experts here and i wish they can answer me. Any help is greatly appreciated.

Thank you

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

Join diydrones

Email me when people reply –

Replies

    1.   If you have a shaking effect that involves rotation rates higher than the sensor can measure (in most cases 2000deg/s), then you're in trouble no matter what you do.   The gyro integration will have a high degree of error and the IMU output will quickly become unusable.  This is the case regardless of what algorithm is being used.

    2.   If you are not being effected by point 1, then the next best thing you can do to improve the accuracy of the gyro integration is to increase the rate at which you get samples and integrate.  Most algorithms that run on an Arduino run between 50 and 400Hz.  The faster you sample, the more accurately the gyro integration will match the actual movement.  There is a reason that the Pixhawk integrates the gyro at 1000Hz (Arduino does not have the power to operate this fast).  Due to the inherent limitations of 32 bit floats,  there is a point of diminishing returns as the sample rate increases.
       Avoid doing anything that takes much time away from the IMU.  Sending data out of the serial port is a horrible waste of time.  If you need to see data, only output the very minimum amount a couple of times a second. Any more often than this and the Arduino will be spending more time sending data than running the IMU, and this will guarantee poor results.  Obviously, run the serial port at max bit rate.

    3. If you are not actually using the magnetometer, then none of the algorithms will return to zero heading after a disturbance.  Pitch and roll should get very close to zero.

    4. You may need to adjust the algorithm to not use the accelerometer during high vibration periods.  Then when the vibration stops, the corrections made by the accel can be re-enabled.  This can be dangerous if set too sensitive.  I wrote my own complimentary filter and it does something like this.

     

    I hope this helps.  Regards,

    Phillip

    • That's an awesome explanation of many things involving IMU's.

This reply was deleted.

Activity

DIY Robocars via Twitter
3 hours ago
DIY Robocars via Twitter
RT @_JonMyer: 🚨Attention DeepRacer's including #UndergroundDeepRacer🚨 Check our our LIVE stream that including @IAM_dbro Take a few moments…
Aug 5
DIY Drones via Twitter
RT @MarvelmindMaxim: Extreme precision for 60 swarming robots. #marvelmind #autonomousrobotics #robotics #swarmrobotics #rtls #ips #indoor…
Aug 3
DIY Drones via Twitter
RT @MarvelmindMaxim: Precise (±2cm) tracking for racing boats and autonomous boats. Works outdoor and indoor. #autonomous #AutonomousVehic…
Aug 3
DIY Drones via Twitter
RT @MarvelmindMaxim: Helping PixHawk folks to fly autonomous quadcopters using PX4 and ArduPilot. https://marvelmind.com/drones/ Equally suitab…
Aug 3
DIY Robocars via Twitter
RT @chr1sa: The @DIYRobocars @donkey_car virtual AI car race is starting in 15 minutes! Watch it live on Twitch https://www.twitch.tv/mossmann3333 htt…
Aug 1
DIY Robocars via Twitter
RT @chr1sa: Don't miss our monthly @DIYRobocars @donkey_car virtual AI car race tomorrow at 10:00am PT live on Twitch. Head-to-head racing…
Jul 31
DIY Robocars via Twitter
RT @sparkfun: Our completed tutorial on building an @NVIDIA Jetson Nano-powered @Sphero RVR gets your bot up and running via teleoperation…
Jul 30
DIY Robocars via Twitter
RT @SmallpixelCar: Freeway test https://t.co/4V5tV9lhIP
Jul 29
DIY Robocars via Twitter
Very small autonomous cars racing, thanks to an overhead camera: https://control.ee.ethz.ch/research/team-projects/autonomous-rc-car-racing.html
Jul 29
DIY Robocars via Twitter
Jul 29
DIY Robocars via Twitter
Jul 29
DIY Robocars via Twitter
RT @chr1sa: Don't miss our virtual AI car race this Saturday! Real developers + virtual cars =🏎️🏎️🏎️ Head-to-head battles with thrills, sp…
Jul 28
DIY Robocars via Twitter
Jul 27
DIY Robocars via Twitter
RT @usashirou1: Jetson nano by Isaac Kaya #jetson https://t.co/Mu1N0CyQkN
Jul 23
DIY Robocars via Twitter
RT @GPUsolution: JetRacer mady by Iflytek company #JetsonNANO #Nvidia https://t.co/MimTymIwge
Jul 23
More…