我的MPU6050和我的Arduino UNO有问题......我无法获得机器人的动态位置。
我尝试使用UMP6050_DMP6示例代码将加速度计的原始值转换为现实世界中的位置。
这是我改变的代码的一部分:
#ifdef OUTPUT_READABLE_WORLDACCEL
dureeBoucle = millis() - tempsAncienneBoucle;
// display initial world-frame acceleration, adjusted to remove gravity
// and rotated based on known orientation from quaternion
mpu.dmpGetQuaternion(&q, fifoBuffer);
mpu.dmpGetAccel(&aa, fifoBuffer);
mpu.dmpGetGravity(&gravity, &q);
mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity);
mpu.dmpGetLinearAccelInWorld(&aaWorld, &aaReal, &q);
vx = vx + aaWorld.x * dureeBoucle/1000.0;
vy = vy + aaWorld.y * dureeBoucle/1000.0;
vz = vz + aaWorld.z * dureeBoucle/1000.0;
px = px + vx * dureeBoucle/1000.0;
py = py + vy * dureeBoucle/1000.0;
pz = pz + vz * dureeBoucle/1000.0;
Serial.print("pworld\t");
Serial.print(px);
Serial.print("\t");
Serial.print(py);
Serial.print("\t");
Serial.println(pz);
tempsAncienneBoucle = millis();
#endif
我试图整合加速度来获取机器人的位置,但我只得到错误的值:
pworld -0.02 0.10 -0.26
pworld -0.08 0.33 -0.86
pworld -0.16 0.69 -1.77
pworld -0.30 1.25 -3.25
pworld -0.44 1.86 -4.84
pworld -0.61 2.58 -6.73
pworld -0.83 3.49 -9.15
pworld -1.06 4.45 -11.69
pworld -1.34 5.62 -14.80
pworld -1.64 6.92 -18.29
pworld -1.95 8.24 -21.81
pworld -2.31 9.79 -25.99
pworld -2.71 11.46 -30.53
pworld -3.09 13.12 -35.03
pworld -3.54 15.04 -40.27
pworld -4.02 17.08 -45.88
pworld -4.48 19.07 -51.36
pworld -4.97 21.17 -57.15
pworld -5.48 23.37 -63.25
pworld -6.02 25.66 -69.65
pworld -6.63 28.28 -76.95
pworld -7.21 30.79 -84.00
pworld -7.82 33.40 -91.36
pworld -8.51 36.34 -99.69
pworld -9.17 39.16 -107.69
pworld -9.91 42.32 -116.72
...
我在很多教程/网站上搜索了很长时间,但在大多数情况下,它们都用于陀螺仪...... 我很乐意得到你的帮助。