Mpu6050 gives me different values for same angular rotation ...


somehow feel thread going people me try share things found as possible. please feel free comment . need kinds of perspectives  

ps: since editing topic growing big has lots of information in it. non native english speaker took days . please if there things against forum rules let  me know first. fix it.

if specify objective  for better understanding of issue here ;
i trying make rotation alert mechanism using mpu6050 inertial sensor . if there amount of rotation occurs led on arduino turns on . seems simple , easy ...

however struggling 2 weeks because need degree of precision application .
i using jeffs  dmp code  i can succesfully run  "teapot" example . , control 3d objects mpu6050.
but noticed odd while debugging...
i saw if precisely rotate mpu module 30 degrees , save quaterion data ; , try rotate 30 degree in same direction again 2 recordings not mathing each other.  
i noticed when  only  rotate arround y axis ; x axis values changing ....
thats werent supposed happen because in dmp code converting "quaternions" "axis angle " values. if rotate arround  x, should effect x values. right?  am missing big here?

what think it? might causing ?  


in here below belowed findings problem . searched internet. every bit of information stumble upon here .and still digging .so please if have other informations  share in topic.




edit 12 :
 this 1 outlines issues nicely , make sure click link , read answers.

quote
https://arduino.stackexchange.com/questions/31552/mpu-6050-angle-drift

t

edit 11 :
 can fuse magnetomer  with dmp code  ?
quote
according https://www.i2cdevlib.com/devices/mpu6050#help, " dmp cannot produce fused 9-axis orientation data without external computation done on host processor. dmp not have processing power necessry compute 9-axis fused data, if magnetometer connected , configured slave device on mpu-6050's aux sda/scl lines." hope you've considered that!
 
edit 10:
 another question , answer use of magnetometer. how shall calibrate magnetomer  ....

quote
the easiest way add magnetometer support example. algorithm there, need call method imu.getmotion9 , pass magnetometer values it. here tricky part - magnetometer axis different accelerometer , gyroscope, need rotate magnetometer values before passing them match others. take look79 how placed relative each other (page 38). magnetometer calibration important step, there different ways it, search hard , soft iron calibration.
http://www.invensense.com/mems/gyro/documents/ps-mpu-9250a-01.pdf

and there lot of stuff calibrating magnetometer..

https://community.emlid.com/t/yaw-value-keeps-decreasing/152/5

edit 9:

quote
correct. far best fusion algorithm arduino rtimulib. highly recommended!

there more recent forks of deposition, around improved versions.

edit 8:
 maybe thats need referance yaw?

quote
absolute yaw angle not defined sensor. in order determine yaw, need magnetometer act north reference.

edit 7 :
dmp  vs  complimentary filter ..

quote
qualitatively, however, can pitch (rotation x-axis) , roll (rotation y-axis), calculations close, complementary filter seems consistently lag dmp.  the dmp algorithm able calculate yaw, complementary filter cannot.  i suspect when algorithms differ, dmp more accurate, possible better implementation of complementary filter might able reduce of lag.
edit 6: there code , not effecting yaw values after 75 degree gets crosstalk
between roll , pitch values. code tho.
quote
http://www.pitt.edu/~mpd41/angle.ino

edit 5: yaw , pitch vales changing might inevitable without filter algoritm?
quote
yes, see kind of cross talk when not feeding the
madgwick filter sensor data properly. expects data in ned
format.
edit 4 :might hardware related..?
quote
the mpu-6050 outdated , modules on ebay have wrong capacitor making more noisier. can give reference formulas ? without reference have lot of doubts. looking @ code, have doubts 4ms delay. loop more slowed down full output buffer of serial micros(). suggest use library , might consider buy mpu-9250. perhaps using 5v arduino without i2c level shifter ?

edit 3
: offsets more important think ...!!
quote
offsets necesary run dmp, if not measures fluctuate. not startup thing, not work if offsets different should be.
quote
faster way maybe read raw values sensors, , change offsets iteratively until raw measures every gyro , xaccel , yaccel 0, , zaccel 16384.  then use offsets dmp
edit 2: information limitations . not apply problem know if shaking mpu , wondering went wrong
quote
http://diydrones.com/forum/topics/bad-fast-rotation-effect-for-arduimu-mpu6050-9150-9250
http://diydrones.com/forum/topics/best-ahrs-algorithm-available-for-a-moving-application
might usefull if have same problem me .  simply saying there threshold measuring rotation on time. İf ypu cross  you lose data ,  wont able return 0 values .  thats 2000 degree per second. in case move mpu , still have issues


edit 1:
i found topic not of use ...

https://github.com/jrowberg/i2cdevlib/issues/284


edit 0 :   multiplying 180  to real angles...

quote
at same time discovered problem, realized converting radians degrees unnecessary, gyro output in units of degrees (just scaled sensitivity factor). after big face-palm, revised rate formula following: rollrate = (0.7 * rollrate) + (-0.3 * gx / 16.4);. notice scale factor has changed 131 16.4. because gyro range +/-2000 deg/s default, not 250 deg/s. i

edit -1 :
can filter dmp data kalman ?
quote
the dmp data mpu6050 filtered, , while have not expirimented dmp data myself believe pretty clean. if there calibration process can improve it, worth expirimenting with, should not filter values second time.

try getting calibration mpu6050?

z


Arduino Forum > Using Arduino > Sensors > Mpu6050 gives me different values for same angular rotation ...


arduino

Comments

Popular posts from this blog

Error compiling for board Arduino/Genuino Uno.

Installation database is corrupt

esp8266 (nodemcu 0.9) client.write très lent ???