可能重复:
  结合陀螺仪和加速度计数据

我已经阅读了很多关于 Kalman过滤器的论文,但似乎没有什么好的公开可访问的工作实例从数学论文到实际工作代码。

我的系统包含一个三轴加速度计和一个陀螺仪测量围绕其中一个加速度计轴的旋转。该系统设计为由人控制,并且陀螺仪将在很大程度上测量围绕重力矢量或靠近重力矢量的旋转。 (在同一行业工作的人可能会认识到我正在谈论的内容;))我意识到这是不受约束的。

陀螺仪似乎具有接近恒定的偏差,对于系统的每个实例略有不同。如何在系统倾斜时使用加速度计读数来校准陀螺仪,以便陀螺仪轴与重力不共线,并围绕陀螺仪轴旋转,我将如何编码滤波器以使用加速度计读数来校准陀螺仪?似乎应该有足够的信息来做到这一点,但被告知没有,为什么也会有答案:)

有帮助吗?

解决方案

nBot,一个两轮平衡机器人
关于这位作者如何选择解决他的两轮机器人的平衡问题的相关信息和链接。

其他提示

这里似乎有两个(或三个)不同的问题。

你真的不了解卡尔曼滤波器和/或它们背后的数学。这将使正确实现和使用它变得非常困难。

你似乎不理解这个问题所涉及的基本物理学。 (基础物理学意味着潜在的物理学,而不是简单的物理学,因为它并不简单。)

我建议您尝试使用更简单的集成器,例如Runga-Kutta 4,您可以找到许多书籍,其中包含实现和使用的示例。这个问题应该足够了。 (如果客户指定了卡尔曼,请查询原因。)

至于为什么问题受到限制,在我看来,它无法确保设备垂直固定而无法测量实际方向。暂时忘掉陀螺仪并假设设备不能绕垂直轴旋转。你有三个加速度计,大概是估计3D中的位置。因此,如果您在X方向上看到加速度,则会增加您在X方向上的位置估计值。同样,如果你看到Z方向上的加速度(我假设是“向上”),你会增加你在Z方向上的估计值。现在稍微旋转设备,比如绕Y轴旋转30度。现在,当设备认为您正在沿X方向加速时,设备实际上加速的速度比X 中的速度稍慢,它也在Z方向上加速。所以你的位置估计现在是不正确的。

旋转更难以整合(方程式更“僵硬”,需要更小的时间步长来保持精度)。但是如果设备被倾斜,他们将遇到计算错误答案的类似问题(因为设备无法判断它是否倾斜)。它会认为绕垂直轴的旋转比实际大或小,因为旋转的一部分实际上是一个不同的轴(正如加速部分的一部分是沿着不同的轴)。

< p>

也许你需要聘请一位顾问(不,我不是在找工作)来帮助你制定数学。

鉴于您对卡尔曼滤波器的兴趣,也许您打算通过惯性测量来增强GPS数据。关于你的问题:

  

“我如何编写过滤器代码?   使用加速度计读数   有时校准陀螺仪   系统是倾斜的,所以陀螺轴是   不与重力共线,而且是   围绕陀螺轴旋转?它   好像应该够了   这样做的信息“

这听起来像是一个gyrocompasing对齐。假设您正在进行工厂校准,并将该装置放在工作台上,您将能够独立测量校准。然后运行您将要编写的校平代码,并从测量和陀螺仪对齐之间的差异中退出陀螺仪偏差误差。

如果你想在飞行中更新陀螺仪漂移,那么你将需要卡尔曼滤波器。

就实施而言,我建议 GPS和惯性积分 “nofollow noreferrer”>全球定位系统理论与应用第2卷在该主题上具有出色的背景。它有理论和数学,但没有源代码。

我在这里找到了关于在导航中使用加速度计和陀螺仪的好文章博客。关于卡尔曼滤波的部分有点朦胧,但似乎有代码样本。

您还可以在 http://academic.csuohio.edu找到卡尔曼过滤的一般资源。 /simond/publications.html (8)中提到的文章是一个很好的,不太可怕的介绍卡尔曼滤波器背后的数学。

丹麦的一位绅士刚刚发布一个推导卡尔曼滤波器的工作实例,几乎可以解决这个问题。

如果您正在为Propeller uController开发,那么 Parallax Object Exchange 有一些代码。很棒的问题; - )

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