将向量(X,Y,Z)从ENU旋转到NED的统一方法,反之亦然
以相同的方式将四元数从ENU旋转到NED,反之亦然
如果能用python提供一个解决方案,我将不胜感激,但对我来说,这更多的是关于技术诀窍。在
如果我在简体中文里有这个向量
v_xyz_ENU = [5,2,1]
翻译成
^{pr2}$ENU <-> NED
X, Y, Z <-> Y, X,-Z
如果我在包含RPY的向量上使用这种技术(如果这是正确的表达方式),我会感到困惑。
v_rpy_ENU = [0,0,90]
翻译成
v_rpy_NED = [0,0,-90]
当我写下计算结果时,我更喜欢用度数表示的角度
这种旋转似乎不正确,因为我知道结果应该是0°
ENU偏航0°应为NED偏航-90°
ENU偏航90°应为NED偏航0°
ENU偏航180°应为NED偏航-90°/270°
ENU偏航-90°应为NED偏航180°
我确实试着用四元数来掩饰我的想法。我在网上其他地方找到的关于使用四元数旋转的解释和例子似乎很直接,但我似乎无法得出我理解的结果。在
现在,我忘记了RPY,开始使用四元数。
我在简体中文中有这个四元数,它代表着相同的绕Z旋转90°
Q_ENU = pq.Quaternion(axis=[0,0,1], degrees=90)
其中一个声称,旋转可以类似于矢量旋转,但保持w分量不变。所以我试着:
Q_NED = pq.Quaternion(Q_ENU.q[0], Q_ENU.q[2], Q_ENU.q[1], -Q_ENU.q[3])
Quaternion.q's data order = [w,x,y,z]
现在,我验证一下,一旦我将Q峎n转换为RPY角,在NED中是否得到0°的偏航,但结果似乎是:
Q_ENU: 0.707 +0.000i +0.000j +0.707k
Q_NED: 0.707 +0.000i +0.000j -0.707k
rpy_NED: [0.0, 0.0, -89.99999999999999]
I expect rpy_NED [0.0, 0.0, 0.0]
在我开始写其他的可能性之前,我想不这么做可以节省我自己和你很多时间。我真的很感谢你能给我解释一下怎么做,或者至少是朝着正确的方向努力。在
-T型
目前没有回答
相关问题 更多 >
编程相关推荐