我正在使用LEGO Mindstorm的NXT系统构建平衡机器人。我使用的是Hitechnic的两个传感器,第一个是加速度计,第二个是陀螺仪。我已经成功地从两个传感器和派生角度过滤噪声,范围在-90至90度之间,0度完全平衡。

我的下一个挑战是将两个传感器值结合在一起,以校正陀螺仪的漂移。下面是我从实际数据创建的示例图,以证明从陀螺仪的漂移:

enter image description here

我看到的最常用的方法是将这些传感器组合起来,岩石固体是使用Kalman滤波器。但是,我不是微积分的专家,我真的不了解数学符号,但是我确实了解源代码中的数学。

我正在使用robotc(就像其他C衍生物一样),如果有人可以给我提供有关如何在C中实现这一目标的例子的例子,这将非常感谢。

谢谢您的帮助!

解决方案结果:

好吧,Kersny通过向我介绍互补过滤器来解决我的问题。这是一个说明我的结果的图:

结果#1

enter image description here

结果#2

enter image description here

如您所见,滤波器校正陀螺仪漂移,并将两个信号结合到一个平滑的信号中。

编辑: 由于无论如何我都在修复破碎的图像,所以我认为显示我用来生成此数据的钻机很有趣:

enter image description here

有帮助吗?

解决方案

Kalman过滤器很棒,但我发现互补过滤器以相似的结果更容易实现。我发现编码互补过滤器的最好的文章是 这个Wiki (随着 本文 关于将传感器转换为工程单元)和zip文件中的PDF 这一页 (在技术文档下,我相信zip中的文件名是filter.pdf);

PS。如果您卡在卡尔曼过滤器上, 这里 是实现它的Arduino的一些C-Syntax代码。

其他提示

gamasutra.com一篇有关使用卡尔曼过滤器进行Wiimote过滤的文章.

文章末尾有一些指向C ++源代码的链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top