如何计算n-frame(导航坐标系)下的定位误差?
这里介绍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)];