使用加速度计陀螺仪和磁电机获取位置的库

Posted

技术标签:

【中文标题】使用加速度计陀螺仪和磁电机获取位置的库【英文标题】:A library to get position with accelerometer gyro and magneto 【发布时间】:2018-12-10 09:21:48 【问题描述】:

我使用的传感器是加速度计+陀螺仪+磁电机(全在一个芯片中)。我想知道是否有人知道可以帮助我从这些值中获得位置的库。

我的意思是从 0.0(纬度/经度)开始并更新值。如果没有图书馆,我仍在寻找链接以获取有关如何进行数学运算的线索。我看过像 this 一个或 this 一个这样的帖子,但我没有找到我想要的。

谢谢

【问题讨论】:

【参考方案1】:

如果它可以帮助任何人,我已经找到了我正在寻找的确切主题。这里是:

https://lb.raspberrypi.org/forums/viewtopic.php?t=127930

[编辑]

这就是想法:

算法2

我找到了两种方法,不知道哪一种更好,

Accroll = atan2( accy / (accy^2 + accz^2) )
Accpitch = atan2( accx / (accx^2 + accz^2) )

来源:http://franciscoraulortega.com/pubs/Algo3DFusionsMems.pdf

Accroll = atan2(accy, accz) 
Accpitch = atan2( -accx, sqrt(accy^2 + accz^2) ) 

来源:https://www.nxp.com/files-tatic/sensors/doc/app_note/AN3461.pdf 第 10 页

算法 3

我认为它应该是这样的补充过滤器:

用陀螺仪数据计算俯仰和横滚:

Gyrpitch = gyrox * dt;
Gyrroll = gyroy * dt;

计算过滤后的俯仰和横滚:

pitch = Gyrpitch * 0.98 + Accpitch * 0.02;
roll = Gyrroll * 0.98 + Accroll * 0.02;

算法 1

XH = mx cos(pitch) + my sin(pitch) sin(roll) + mz sin(pitch) cos(roll)
YH = my cos(roll) + mz sin(roll) 
yaw = atan2(−YH / XH)

其中:m:磁力计数据 来源:http://franciscoraulortega.com/pubs/Algo3DFusionsMems.pdf

【讨论】:

以上是关于使用加速度计陀螺仪和磁电机获取位置的库的主要内容,如果未能解决你的问题,请参考以下文章

使用陀螺仪和加速度计计算位置

使用加速度计+陀螺仪的小汽车模型位置计算

使用陀螺仪和加速度计获取方向

使用加速度计和陀螺仪的 6DOF

使用加速度计和陀螺仪移动鼠标光标

陀螺仪和加速度计融合算法流程