相对于第一个物体的方向,从一个移动物体到另一个移动物体的方位角和高度

时间:2014-10-16 19:00:40

标签: matlab math 3d quaternions coordinate-transformation

我有两个相对于ECI坐标系的位置和方向数据(Euler Angles,Quaternions)的移动物体。我想从我猜测的第一个物体的“体框架”中计算AZ / EL。我试图通过旋转矩阵(X-Y-Z和Z-Y-X旋转序列)将两个对象转换为体框架,并以这种方式计算目标矢量AZ / EL,但没有成功。我还尝试获取车身框架位置并计算车身轴/角度并转换回欧拉(相对于车身框架)。我不知道我所创造的坐标系轴是如何沿着我的物体对齐的。

我发现其他一些问题就像Quaternion解决方案所回答的那样,这可能是最好的选择,但是我的Quaternion背景最多也很弱,我看不出给定的计算结果如何导致目标向量。

我们非常感谢任何建议,我很乐意分享我未来的进展/经验。

1 个答案:

答案 0 :(得分:1)

  1. 获取移动对象的当前NEH变换矩阵

    必须知道移动物体的北,东,高(上或高)的位置和至少两个方向否则是你的问题无法解决< / strong>无论如何。此矩阵/帧称为 NEH(X =北,Y =东,Z =高度)或有时也 ENU(X =东,Y =北,Z =向上)。在这里transform matrix anatomyEarth's NEH construction,然后更改位置和半径以匹配您的移动物体。

  2. 将点P0从GCS(全球坐标系)转换为NEH

    简单地说:P1=Inverse(NEH)*P0其中P1现在位于 NEH LCS(本地坐标系)中。两个P0,P1都在同构坐标{ x,y,z,w=1 }中,以允许与4x4矩阵进行乘法,因此您可以直接从中计算方位角和高程:

    NEH vs. Azimutal coordinates

    • 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反过来了。

  3. <强> [注释]

    始终目视检查所有帧(尤其是 NEH )。只需将3轴绘制为一定长度的线,以验证结果是否正确。它应该看起来像图像,每个轴只有不同的颜色。 只有当NEH没问题时才能移动到下一个点!!!

    检查atan2/atanxy操作数顺序,并检查测角功能单位(rad,deg)以避免混淆。