结合陀螺仪和加速计数据

我正在用Lego Mindstorm的NXT系统构build一个平衡机器人。 我使用HiTechnic的两个传感器,第一个是加速度计,第二个是陀螺仪。 我已经成功地滤除了来自传感器和导出angular度的噪音,在-90和90度之间的范围内,0度被完美平衡。

我的下一个挑战是将两个传感器值结合起来以校正陀螺仪随着时间的漂移。 下面是我从实际数据中创build的一个示例图,用于演示陀螺仪的漂移:

在这里输入图像说明

我所见过的将这些传感器结合起来的最常用的方法是使用卡尔曼滤波器。 然而,我不是微积分专家,我真的不懂math符号,但我明白源代码中的math。

我正在使用RobotC(就像任何其他的C衍生物),如果有人能给我举例说明如何在C中实现这一点,我将非常感激。

感谢您的帮助!

解决scheme结果

好吧,kersny通过介绍互补滤波器解决了我的问题。 这是说明我的结果的图表:

结果#1

在这里输入图像说明

结果#2

在这里输入图像说明

正如你所看到的,滤波器可以校正陀螺仪的漂移,并将两个信号组合成一个平滑的信号。

编辑:由于我正在修复破碎的图像,我认为这将是很有趣的,以显示我用来生成这些数据的钻机:

在这里输入图像说明

卡尔曼滤波器是伟大的,但我发现补充滤波器更容易实现类似的结果。 我find的编码补充filter的最好的文章是这个wiki (以及关于将传感器转换为工程单位的文章)和PDF文件(在技术文档中,我相信文件名在zip中是filter.pdf);

PS。 如果卡在卡尔曼滤波器上,下面是Arduino实现它的一些C语法代码。

Gamasutra.com刊登了关于使用卡尔曼滤波器进行WiiMote滤波的文章 。

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