如何基于GPS输出的NED速度与磁航向计算前进速度矢量
问题解答
结论
你给出的计算方法是错误的,按该逻辑计算得到的结果既不是前进速度,也没有正确利用磁航向的参考意义。
原理说明
我们需要先明确几个基础定义的默认约定(如果你的传感器输出定义不同需要对应调整):
- NED地理坐标系下,
velocity_n为北向速度(向北为正),velocity_e为东向速度(向东为正) - 磁航向
rad_heading指载体机头指向与磁北方向的顺时针夹角,单位为弧度
前进速度的本质是:NED坐标系下的水平速度矢量,在载体机头前向轴上的投影值,不需要开平方操作,直接投影计算即可。
正确计算公式
forward_velocity = velocity_n * cos(rad_heading) + velocity_e * sin(rad_heading)
原计算方法的问题
你将两个投影分量分别平方相加再开根号,本质上消除了速度的方向属性,举个简单的验证案例就能看出问题:
假设磁航向为45度,北向速度velocity_n=1m/s,东向速度velocity_e=1m/s,此时载体沿机头方向的前进速度应为√2≈1.414m/s,用正确公式计算结果符合预期,但用你给出的方法计算得到的结果是1m/s,明显不符合实际情况。
补充注意事项
- 如果你仅需要获取水平地速的大小,不需要引入磁航向参数,直接计算
sqrt(velocity_n^2 + velocity_e^2)即可 - 若你的磁力计输出的航向定义为逆时针为正,需要将公式中
sin(rad_heading)替换为sin(-rad_heading)再计算 - 如果需要使用真航向作为参考,要先将磁航向叠加当地磁偏角修正为真航向后代入公式
内容的提问来源于stack exchange,提问作者saikat mondal
相关产品推荐
相关产品推荐

