如何从GPS获得NED速度?

问题描述 投票:0回答:1

我有一个Adafruit终极GPS模块,我试图与BNO055 IMU传感器融合。我试图跟随https://github.com/slobdell/kalman-filter-example这个kalman过滤的例子。虽然他的大部分代码都非常清晰,但我查看了他的输入json文件(https://github.com/slobdell/kalman-filter-example/blob/master/pos_final.json)并看到他的速度向北,速度向东,速度从GPS模块下降。我查看了NMEA的消息,似乎没有人给我这个。我错过了什么?如何获得这些方向速度?

谢谢!

gps velocity kalman-filter
1个回答
0
投票

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米/秒,无人机将具有以下北速:

vel_north = 1 m/s * cos(30°) = 0.86 m/s

和以下东方速度:

vel_east = 1 m/s * sin(30°) = 0.5 m/s

这不考虑滚动和俯仰。要考虑滚动和音调,您可以查看维基百科上的rotation matricesquaternions

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

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

© www.soinside.com 2019 - 2024. All rights reserved.