首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位置传感器融合码

位置传感器融合码
EN

Stack Overflow用户
提问于 2013-02-21 15:58:19
回答 2查看 6.4K关注 0票数 4

我正在为我正在做的一个小型虚拟现实POC进行室外定位。我想用GPS和IMU传感器来控制游戏角色的移动(而不是用IMU完成的旋转)。

我需要融合GPS和ACC传感器,以获得尽可能少的延迟和错误。周围有这样的核聚变吗?还是我必须从头开始发明?

该代码将用于此开放源码项目https://github.com/AndersMalmgren/FreePIE

编辑:本文建议使用Kalman http://www.codeproject.com/Articles/326657/KalmanDemo,但是这里的人认为加速度计的误差太大了,不能工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-04 11:35:47

你当然不需要从头开始“发明”它-- GPS/INS融合是一个很好地被文字所涵盖的话题。只有两本著名的书:

正如其他人所指出的(例如Android系统的卡尔曼滤波),在Java / for中也有卡尔曼滤波器的实现。

在您的具体情况下,卡尔曼滤波的问题是需要满足实现Kalman滤波器*的几个要求。理论上,您需要确保噪声(未建模的测量误差)是白色,并且在任何时候都是不相关的。问题是,您没有从内部接收器获得原始的GPS测量值(这可以近似地认为是白色的),而是一个已经过滤的解决方案(这肯定显示出时间相关性)。

另一个问题是,在卡尔曼滤波器中,你需要做一些调整,也就是说,你需要设置像测量噪声这样的参数。这些参数取决于所使用的传感器的质量,因此它们在不同的设备之间有所不同。这可能会降低您对某些设备的估计质量。

尽管如此,可能有几种解决办法:

  • 使用速度外推在位置更新之间的位置。(我还没有在Android上这么做,但这个问题可能有助于获得速度。)如果用户的速度变化不太频繁(与位置更新频率相比),这在大多数情况下应该会很好。
  • 实现了一个完整的卡尔曼滤波:将绝对位置测量和加速度计结合起来是非常常见的,就像上面引用的书籍所指出的那样,即使使用廉价的MEMS级惯性传感器也是如此。为了减小Acc传感器产生的误差,在卡尔曼滤波状态向量中估计这些误差。通常情况下,卡尔曼滤波器在一个滤波器中估计位置、速度、姿态和Acc/陀螺偏差。你可以放弃姿态和陀螺,如果你想假设这些都是众所周知的。即使您的传感器可能会出现更多的错误,估计偏差通常足以估计位置更新之间的偏差。 实现一个完整的卡尔曼滤波也意味着你可以考虑你的测量数据的时间相关性,例如使用称为施密特-卡尔曼滤波的技术(见上面引用的书籍)。这也可能意味着您使用自适应卡尔曼滤波来估计滤波器的某些参数,以考虑不同设备中的不同传感器。但是,请注意,这样的事情需要在导航领域有一点经验:实现通常很容易--只需几行矩阵操作,但调优可能很费时。但这并不意味着你不应该尝试!
  • 只使用上述滤波器的偏差估计:通过估算Acc偏差,您可以改进第一种方法(用速度外推位置),也可以用加速度计测量的速度外推速度。

*从理论的角度看,你总是可以忽略理论,只需尝试。有时它仍然有效:)

票数 5
EN

Stack Overflow用户

发布于 2016-05-20 14:28:15

我知道这有点晚了,但是我有一个开源项目,它使用卡尔曼滤波和Java的Rauch桐-Striebel平滑(向后kalman)。如果您的过程模型和/或度量模型是非线性的,也支持扩展和无味滤波和平滑。

https://github.com/karnstrand/Kalman4J

莱卡直到安德斯!:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15006684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档