如何从GPS获取NED速度?

如何从GPS获取NED速度?,gps,velocity,kalman-filter,Gps,Velocity,Kalman Filter,我有一个Adafruit终极GPS模块,我正在尝试与BNO055 IMU传感器融合。我试着遵循这个卡尔曼滤波的例子。虽然他的大部分代码都很清楚,但我查看了他的输入json文件(),发现他从GPS模块中获得了velocity north、velocity east和velocity down。我看了NMEA的消息,似乎没有人给我这个消息。我错过了什么?如何得到这些方向速度 谢谢 pos_final.json不是输入文件,而是输出文件。输入文件是taco_bell_data.json,位于tar.g

我有一个Adafruit终极GPS模块,我正在尝试与BNO055 IMU传感器融合。我试着遵循这个卡尔曼滤波的例子。虽然他的大部分代码都很清楚,但我查看了他的输入json文件(),发现他从GPS模块中获得了velocity north、velocity east和velocity down。我看了NMEA的消息,似乎没有人给我这个消息。我错过了什么?如何得到这些方向速度

谢谢

pos_final.json不是输入文件,而是输出文件。输入文件是taco_bell_data.json,位于tar.gz归档文件中。它包含以下变量:

"timestamp": 1.482995526836e+09,
"gps_lat": 0,
"gps_lon": 0,
"gps_alt": 0,
"pitch": 13.841609,
"yaw": 225.25635,
"roll": 0.6795258,
"rel_forward_acc": -0.014887575,
"rel_up_acc": -0.025188839,
"abs_north_acc": -0.0056906715,
"abs_east_acc": 0.00010974275,
"abs_up_acc": 0.0040153866
他用GPS测量位置,用加速计测量方向/加速度。pos_final.json中的NED速度由卡尔曼滤波器估计。这是卡尔曼滤波器(和其他观察者)的主要任务之一:估计未知量

GPS通常会输出速度,但它们会相对于物体的主体。如果知道身体的方向(滚动、俯仰和偏航),可以将身体的相对速度转换为NED速度。假设有一架无人机在航向030°移动,GPS显示前进速度为1 m/s,无人机将具有以下北向速度:

vel_north = 1 m/s * cos(30°) = 0.86 m/s
vel_east = 1 m/s * sin(30°) = 0.5 m/s
以及以下东向速度:

vel_north = 1 m/s * cos(30°) = 0.86 m/s
vel_east = 1 m/s * sin(30°) = 0.5 m/s
这不考虑滚转和俯仰。要考虑到滚动和俯仰,您可以查看或访问维基百科

速度通常在GPS输出中找到。它并不总是被输出。GPS必须具有该功能,并且必须在GPS上启用该功能。也可以使用RMC电报


来自GPS的速度通常非常嘈杂,这就是为什么通常使用卡尔曼滤波器,而不是使用上述方法将身体相对速度转换为NED速度。GPS速度在更高的速度下可以正常工作。

您确定pos_final是输出文件吗?因为如果你看他的代码,他正在读取那个文件,并将这些值输入到卡尔曼滤波器中。但是谢谢你剩下的解释,似乎澄清了一些事情@你是对的,我马上下结论。我阅读了自述文件,但代码从那时起就发生了变化(自述文件没有更新)。在原始代码中,它与我写的非常相似。根据波斯特的说法,作者后来增加了GPS的速度。我不明白多普勒频移码,所以我不能对此发表评论。速度通常由卡尔曼滤波器估计。