实施Madgwick IMU算法

7

我正在尝试使用Sebastian Madgwick的IMU 算法从我的MPU-9150传感器中获取横滚、俯仰和偏航角。我下载的文件夹带有一些示例数据,我只是用自己的数据替换了这些数据,并确保单位/约定等保持不变。问题是,使用我的数据算法输出的角度没有多大意义,而且非常嘈杂,特别是偏航角。横滚和俯仰似乎是合理的,但我可以通过加速度计/陀螺仪数据获得更好的结果。我附上了他的示例数据(可行的),我的数据和我的输出的绘图。

在我尝试使用这些算法之前,是否需要对我的数据进行额外的过滤?到目前为止,我只是使用中值滤波进行尝试,但似乎没有什么区别。

谢谢

Example data Example data output My data My data output


你是否了解欧拉角的不稳定性?我猜这就是你看到的问题,但我无法确定,因为问题对我来说不够清晰。 - Ali
@Ali,他所引用的实现内部使用四元数,因此可能不会出现不稳定的情况,尽管可能存在欧拉角转换的问题。不过,c0redumb的说法很可能是正确的。 - kerblogglobel
1个回答

6

我偶然发现了Tobias Simon关于Magdwick算法不稳定问题的一些笔记,详见此处:

http://diydrones.com/forum/topics/madgwick-imu-ahrs-and-fast-inverse-square-root

问题出在Magdwick实现中使用的快速反平方根。我不清楚问题出在哪里。也许是算法精度的问题,或者是因为原始代码无法在64位机器上运行。用不同(更好?)的实现替换该算法可以实现更好、更稳定的AHRS计算。(或者对64位机器的代码进行一些小修改也可以解决这个问题?请阅读Tobias Simon原始笔记中的评论。)

更好的反平方根实现方法可以在这里找到:

https://pizer.wordpress.com/2008/10/12/fast-inverse-square-root/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接