我目前正在为GPS导航开发一个简单的小卡尔曼滤波器。我正在从我的GPS传感器得到当前的位置,航向角度和速度。因此,卡尔曼滤波应该将当前测量值和从上一位置开始的直线运动进行融合,假设速度和航向角是恒定的。
我的问题是选择一个有用的空间,在这个空间中卡尔曼滤波器能够以一种良好的方式执行。
局部坐标系方法:
如果我选择一个本地坐标系(北米,东米)与以前的位置在原点,我将能够很容易地预测新的位置,但如何使用wgs-84椭球将新的测量值(纬度/经度)转换为我的本地坐标系?如何使用wgs-84椭球将我在本地坐标系中的新预测转换为纬度/经度?
所以我需要两个函数:
f:=(lat_ref,lng_ref,lat,lng) -> (x,y)
g:=(lat_ref,lng_ref,x,y) -> (lat,lng) (这也可以使用Vincenty完成)
全球坐标系方法:
我找到了Vincenty-Algorithm,它可以根据任何椭球体上的参考位置、距离和航向角度来计算新位置。这个算法工作得很好,但是我不知道如何在卡尔曼滤波器中使用这个算法,卡尔曼滤波器在全球坐标系下工作。
有什么想法或建议可以解决我的问题吗?
发布于 2011-05-23 05:20:02
我查阅了很多科学论文,在wikipedia上找到了答案
主要技巧是将纬度/经度/高度(llh)转换为以地球为中心的固定坐标系(ecef),然后转换为我的本地坐标系地球/北向/向上(enu),反之亦然。
我发现了一些指向这个主题的其他有趣的链接。
发布于 2011-12-07 07:59:19
查看FWTOOLS,特别是cs2cs和项目...它们可以处理从投影坐标系到地理坐标系的坐标系统转换。重要的是要记住要考虑任何基准点的移动。
https://stackoverflow.com/questions/6087460
复制相似问题