我有两个相对于ECI坐标系的位置和方向数据(Euler Angles,Quaternions)的移动物体。我想从我猜测的第一个物体的“体框架”中计算AZ / EL。我试图通过旋转矩阵(X-Y-Z和Z-Y-X旋转序列)将两个对象转换为体框架,并以这种方式计算目标矢量AZ / EL,但没有成功。我还尝试获取车身框架位置并计算车身轴/角度并转换回欧拉(相对于车身框架)。我不知道我所创造的坐标系轴是如何沿着我的物体对齐的。
我发现其他一些问题就像Quaternion解决方案所回答的那样,这可能是最好的选择,但是我的Quaternion背景最多也很弱,我看不出给定的计算结果如何导致目标向量。
我们非常感谢任何建议,我很乐意分享我未来的进展/经验。
答案 0 :(得分:1)
获取移动对象的当前NEH变换矩阵
你必须知道移动物体的北,东,高(上或高)的位置和至少两个方向否则是你的问题无法解决< / strong>无论如何。此矩阵/帧称为 NEH(X =北,Y =东,Z =高度)或有时也 ENU(X =东,Y =北,Z =向上)。在这里transform matrix anatomy和Earth's NEH construction,然后更改位置和半径以匹配您的移动物体。
将点P0从GCS(全球坐标系)转换为NEH
简单地说:P1=Inverse(NEH)*P0
其中P1
现在位于 NEH LCS(本地坐标系)中。两个P0,P1
都在同构坐标{ x,y,z,w=1 }
中,以允许与4x4
矩阵进行乘法,因此您可以直接从中计算方位角和高程:
Azimut=atanxy(P1.x,P1.y);
Elevation=atan(P1.z/sqrt((P1.x*P1.x)+(P1.y*P1.y)));
其中atanxy是我的atan2
(4象限atan
),首先是dx
,然后是dy
。我认为matlab中的atan2
反过来了。
<强> [注释] 强>
始终目视检查所有帧(尤其是 NEH )。只需将3轴绘制为一定长度的线,以验证结果是否正确。它应该看起来像图像,每个轴只有不同的颜色。 只有当NEH没问题时才能移动到下一个点!!!
检查atan2/atanxy
操作数顺序,并检查测角功能单位(rad,deg
)以避免混淆。