如何计算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)];
浙公网安备 33010602011771号