结合陀螺仪和加速度计数据

Dyl*_*ter 69 c algorithm accelerometer lego nxt

我正在使用Lego Mindstorm的NXT系统构建一个平衡机器人.我使用的是HiTechnic的两个传感器,第一个是加速度计,第二个是陀螺仪.我已经成功地滤除了传感器和衍生角度的噪声,两者的范围在-90到90度之间,0度完全平衡.

我的下一个挑战是结合两个传感器值来校正陀螺仪随时间的漂移.下面是我根据实际数据创建的示例图,用于演示陀螺仪的漂移:

在此输入图像描述

我见过的最常用的方法是将这些传感器结合起来使用卡尔曼滤波器.但是,我不是微积分的专家,我真的不懂数学符号,但我确实理解源代码中的数学.

我正在使用RobotC(就像任何其他C衍生产品一样),如果有人能给我一些如何在C中完成此任务的例子,我将非常感激.

谢谢您的帮助!

解决方案结果:

好吧,kersny通过向我介绍补充过滤器解决了我的问题.这是一个说明我的结果的图表:

结果#1

在此输入图像描述

结果#2

在此输入图像描述

如您所见,滤波器校正陀螺仪漂移并将两个信号组合成单个平滑信号.

编辑:因为我正在修复破碎的图像,我认为显示我用来生成这些数据的装备会很有趣:

在此输入图像描述

ker*_*sny 44

卡尔曼滤波器很棒,但我发现互补滤波器更容易实现,结果相似.我已经找到了编码互补滤波器最理想的用品是这个wiki(连同这篇文章,并在zip文件为PDF约传感器转换为工程单位)此页面(在技术文档,我在zip相信文件名是filter.pdf);

PS.如果你卡在卡尔曼滤波器上,这里有一些实现它的Arduino的C语法代码.

  • 维基链接似乎已经死了 (9认同)
  • Yay archive.org:http://web.archive.org/web/20091121085323/http://www.mikroquad.com/bin/view/Research/ComplementaryFilter (7认同)
  • 神奇,我相信这可能正是我想要的.Filter.pdf文件确实是一个很大的帮助,并解释并解决了我的确切问题.我还没有验证它(我正在工作).但是今晚,我会试着这样做,并将我的问题标记为已回答! (2认同)