navigation - 使用卡尔曼滤波器集成 GPS 和加速度计数据的伪代码

标签 navigation gps pseudocode kalman-filter

我有一些加速度传感器每秒收集数据:

      AC.X  AC.Y AC.Z
9234 -0.98 -0.10 0.03
9235 -0.98 -0.10 0.03
9236 -0.98 -0.10 0.03
9237 -0.98 -0.10 0.03
9238 -0.98 -0.10 0.03
9239 -0.98 -0.10 0.03

GPS 数据集以更长的时间间隔捕获:
        X1        X2         X3 X4          X5 X6 X7 X8   X9   X10 X11  X12 X13 X14 X15 X16 X17 X18
81  $GPGGA 181553.00 4105.86029  N 08754.49966  W  1 06 1.90 00208   M -033   M     *53            
133 $GPGGA 181554.00 4105.86052  N 08754.49954  W  1 05 2.04 00208   M -033   M     *54            
185 $GPGGA 181555.00 4105.86002  N 08754.49950  W  1 06 1.90 00208   M -033   M     *59            
237 $GPGGA 181556.00 4105.85944  N 08754.49889  W  1 06 1.90 00207   M -033   M     *58            
289 $GPGGA 181557.00 4105.85952  N 08754.49877  W  1 07 1.30 00210   M -033   M     *52            
341 $GPGGA 181558.00 4105.85925  N 08754.49852  W  1 06 1.35 00209   M -033   M     *56  

我一直在阅读如何使用卡尔曼滤波器来整合这些数据,并且我开始对算法的工作原理有了很好的理解。两个数据集都会引入不同类型的误差(加速度计数据随时间漂移,但实际上是无噪声的;GPS 数据漂移很小但噪声很大),卡尔曼滤波器允许我们利用这些误差曲线来获得更好的导航数据。但是,我仍在努力将其放入代码中。我用 R 和 Python 编写代码,但我只是在寻找一些通用的伪代码来帮助我入门。您知道任何好的资源或有解决此类问题的经验吗?

最佳答案

卡尔曼滤波器是一种基于先前数据的算法。当您有可预测的运动(例如摆动钟摆)时,它很容易实现。然而,对于通用用途,可能难以正确实现。

如果您只想平滑 GPS,我发现实现更简单的 LLS 滤波器(线性最小二乘法)更容易(在某些情况下更可靠)。下面是来自 Wikipedia 的 python 示例它考虑了二维空间中的三个点,我将其用作代码的起点:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(5,2)*10
a = np.matrix([ [1,x[0][0]], [1,x[1][0]], [1,x[2][0]] ])
b = np.matrix([ [x[0][2]], [x[1][3]], [x[2][4]] ])
yy = (a.T * a).I * a.T*b
xx = np.linspace(1,10,50)
y = np.array(yy[0]+yy[1]*xx)

plt.figure(1)
plt.plot(xx,y.T,color='r')
plt.scatter([x[0][0],x[1][0],x[2][0] ],[x[0][5],x[1][6],x[2][7] ]) 
plt.show()

如果您仍然有兴趣使用卡尔曼滤波器这个 article在动态系统中的加速度计上实现卡尔曼滤波器非常有用

关于navigation - 使用卡尔曼滤波器集成 GPS 和加速度计数据的伪代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266398/

相关文章:

c# - 如何获取字符串中组的所有排列?

css - 三级嵌套导航重叠问题

css - 粘性导航 - 格式问题

react-native - react native createDrawerNavigator 与标题/操作栏

java - Android 开发 - 使用 PNG 作为 map ,标记当前位置

python - 使用Python计算时差

algorithm - 给定数组中的一系列股票价格。选择何时买入和何时卖出以获得最大利润

css - CSS3 中均匀间隔的导航链接占据 ul 的整个宽度

python - python从串口读取数据

algorithm - LZW-解压缩算法