【问题标题】:Getting heading/direction from MPU-9250从 MPU-9250 获取航向/方向
【发布时间】:2018-10-14 18:55:47
【问题描述】:

我正在尝试从 MPU-9250 传感器获取航向,该传感器包含使用 Arduino 的陀螺仪、加速度计和磁力计。

对于我的产品,我需要从设备中获取滚动和航向。我已经想出了如何取卷。使用 Boulderflight MPU-9250 库,我能够使用以下方法确定滚动:

roll = 180 * atan(accY/sqrt(accX*accX + accZ*accZ))/M_PI;

我在某个地方找到了这个计算,它似乎运行良好,我不得不承认我实际上并不知道它是如何工作的。

对于我找到的标题:

  if (magY > 0) { heading = 90 - atan(magX/magY)*(180/M_PI); }
  else if (magY < 0) { heading = 270 - atan(magX/magY)*(180/M_PI); }
  else if (magY == 0 && magX < 0) { heading = 180; }
  else if (magY == 0 && magX > 0) { heading = 0; }

起初,这似乎可行,但只要您“滚动”设备,保持标题不变,标题的值就会无处不在。

有没有人有一个好的代码 sn-p 用于使用陀螺仪、加速度计或磁力计(在 C++ 中,使用 Arduino)确定航向?

【问题讨论】:

    标签: arduino accelerometer gyroscope magnetometer


    【解决方案1】:

    看看https://github.com/kriswiner/MPU9250
    具体来说,MPU9250BasicAHRS.ino 在 Arduino 上进行了滚动、俯仰和偏航的计算。

    【讨论】:

      【解决方案2】:

      对于那些仍然觉得它有用的人来说,错误的输出是由于在代码中使用Sleep()s 造成的。显然这会扰乱测量。我用它们来制作 LED 图案。我想下一个最好的办法是使用millis()if-statements 组合来重现Sleep()s。

      【讨论】:

      • 请尽量提供完整的答案。你能举个例子吗?
      猜你喜欢
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多