如何计算n-frame(导航坐标系)下的定位误差?

发布时间 2023-09-18 11:45:00作者: 無常

 

这里介绍2种计算n-frame(导航坐标系)下的定位误差方法,两种方法计算结果一致,可根据自己定位结果是XYZ,还是BLH进行选择。

假设定位结果为:ECEF下的XYZ。

方法1:

先让自己的定位结果与参考定位结果做差,得到ECEF下的误差矢量dXYZ,然后根据此历元的位置计算出e-frame to n-frame的旋转矩阵:Ce2n,最后Ce2n*dXYZ即可。

MATLAB代码示例:

    DiffXYZ = [XYZ2(1)-XYZ1(1); XYZ2(2)-XYZ1(2); XYZ2(3)-XYZ1(3)];
    
    Ce2n = BLH2Cen(BLH1);
    
    NED = Ce2n * DiffXYZ;

  

方法2:

先将XYZ转为BLH,然后让自己的定位结果与参考定位结果做差,得到误差矢量dBLH,最后让dB和dL分别乘以经圈和纬圈半径即可(长度=弧度*半径)

MATLAB代码示例:

    WGS_AXIS_A = 6378137.0; % 纬地球半径
    WGS_E1_SQR = 0.006694379990141317; % % 第一偏心率的平方
    
    DiffXYZ = [BLH2(1)-BLH1(1); BLH2(2)-BLH1(2); BLH2(3)-BLH1(3)];
    
    % 计算子午圈曲率半径
    sinL = sin(BLH1(1));
    cosL = cos(BLH1(1));
    sinL2 = sinL*sinL;
    sq = 1 - WGS_E1_SQR * sinL2;
    RN = WGS_AXIS_A / sqrt(sq);
    RNH = RN + BLH1(3);
    cosLRNH = cosL * RNH;
    RMH = (1-WGS_E1_SQR)*RN / sq + BLH1(3);
    
    NED = [DiffXYZ(1)*RMH, DiffXYZ(2)*cosLRNH, -DiffXYZ(3)];