DAY23---GINav学习

1.代码学习

(1)liulan_spp()函数 

该段代码的实现主要是扫描原始的观测数据提取有效的测量观测量,用于SPP处理。

function [obs,nobs]=liulan_spp(obsr)
%scan_obs_spp() 函数的作用是扫描原始观测数据并提取有效的测量观测,用于单点定位(SPP)处理。
global glc gls
%声明全局变量 glc 和 gls
nobs0=size(obsr,1);
nobs=0;
%初始化一个计数器 nobs,用于记录有效观测数据的数量。
obs=repmat(gls.obs_tmp,nobs0,1);
%创建一个与原始观测数据集 obsr 相同大小的临时数组 obs,并将其初始化为 gls.obs_tmp。
for i=1:nobs0%初始化一个计数器 nobs,用于记录有效观测数据的数量。
    dt=0;%初始化dt=0
    for f=1:glc.NFREQ%这行代码是一个 for 循环,用于对频率进行迭代。在循环的每一次迭代中,f 代表当前的频率,从1递增到 glc.NFREQ。
        %对每个观测数据 obsr(i) 进行遍历。
        dt=dt+obsr(i).P(f)*obsr(i).P(f);
        %计算观测数据的平方和 dt,将其累加到 dt 变量中。
    end
    if dt==0
        %如果计算得到的平方和 dt 等于0,说明该观测数据无效,跳过该观测数据继续执行下一次循环。
        continue;
    end
    %如果 dt 不等于0,将该观测数据 obsr(i) 存储到有效观测数据数组 obs(nobs+1) 中,并将有效观测数据计数器 nobs 加一。
    obs(nobs+1)=obsr(i);
    nobs=nobs+1;
end
%如果有效观测数据的数量 nobs 为0,说明没有有效的观测数据,将结果设置为 NaN,并返回。
if nobs==0,obs=NaN;
    return;
end
%返回处理后的有效观测数据数组 obs 和有效观测数据的数量 nobs。
if nobs<nobs0
    obs(nobs+1:end,:)=[];
end
return

(2)bds2mp_corr()函数

function obsr=bds2mp_corr(rtk,obsr)
%进行北斗卫星的多路径误差修正的函数。
global glc
%IGSOCOEF 是 IGSO 类型卫星的系数矩阵
%IGSOCOEF 是一个大小为 3x10 的矩阵,表示IGSO卫星在不同仰角下的多路径误差修正系数。
%每行代表一个频率,每列代表仰角范围内的一个修正系数。
IGSOCOEF=[-0.55,-0.40,-0.34,-0.23,-0.15,-0.04,0.09,0.19,0.27,0.35;...	%B1
		  -0.71,-0.36,-0.33,-0.19,-0.14,-0.03,0.08,0.17,0.24,0.33;...	%B2
		  -0.27,-0.23,-0.21,-0.15,-0.11,-0.04,0.05,0.14,0.19,0.32]; 	%B3
%MEOCOEF 是 MEO 类型卫星的系数矩阵。
%MEOCOEF 是一个大小为 3x10 的矩阵,表示 MEO 卫星在不同仰角下的多路径误差修正系数。
%每行代表一个频率,每列代表仰角范围内的一个修正系数。
MEOCOEF=[-0.47,-0.38,-0.32,-0.23,-0.11,0.06,0.34,0.69,0.97,1.05;...	%B1
		 -0.40,-0.31,-0.26,-0.18,-0.06,0.09,0.28,0.48,0.64,0.69;...	%B2
		 -0.22,-0.15,-0.13,-0.10,-0.04,0.05,0.14,0.27,0.36,0.47];	%B3
nobs=size(obsr,1); %组成一个行为obsr,列为1的矩阵存储在nobs中
for i=1:nobs
   sat=obsr(i).sat;
   sys=0;
   if sat<=0||sat>glc.MAXSAT
       sat=0;
    %如果卫星编号小于等于 0 或者大于 glc.MAXSAT,则将 sat 设置为 0,表示未知卫星。
   elseif sat<=glc.NSATGPS
       sys=glc.SYS_GPS; 
       sat=sat+glc.MINPRNGPS-1;
    %如果卫星编号小于等于 glc.NSATGPS,则将卫星系统设置为 glc.SYS_GPS,并将 sat 设置为对应的 GPS PRN 号。
   elseif (sat-glc.NSATGPS)<=glc.NSATGLO
       sys=glc.SYS_GLO; 
       sat=(sat-glc.NSATGPS)+glc.MINPRNGLO-1;
     %如果卫星编号减去 glc.NSATGPS 小于等于 glc.NSATGLO,则将卫星系统设置为 glc.SYS_GLO,并将 sat 设置为对应的 GLONASS PRN 号。
   elseif (sat-glc.NSATGPS-glc.NSATGLO)<=glc.NSATGAL
       sys=glc.SYS_GAL; 
       sat=(sat-glc.NSATGPS-glc.NSATGLO)+glc.MINPRNGAL-1;
     %如果卫星编号减去 glc.NSATGPS 减去 glc.NSATGLO 小于等于 glc.NSATGAL,则将卫星系统设置为 glc.SYS_GAL,并将 sat 设置为对应的 Galileo PRN 号。
   elseif (sat-glc.NSATGPS-glc.NSATGLO-glc.NSATGAL)<=glc.NSATBDS
       sys=glc.SYS_BDS; 
       sat=(sat-glc.NSATGPS-glc.NSATGLO-glc.NSATGAL)+glc.MINPRNBDS-1;
     %如果卫星编号减去 glc.NSATGPS 减去 glc.NSATGLO 减去 glc.NSATGAL 小于等于 glc.NSATBDS,则将卫星系统设置为 glc.SYS_BDS,并将 sat 设置为对应的 BeiDou PRN 号。
   elseif (sat-glc.NSATGPS-glc.NSATGLO-glc.NSATGAL-glc.NSATBDS)<=glc.NSATQZS
       sys=glc.SYS_QZS; 
       sat=(sat-glc.NSATGPS-glc.NSATGLO-glc.NSATGAL-glc.NSATBDS)+glc.MINPRNQZS-1;
     %如果卫星编号减去 glc.NSATGPS 减去 glc.NSATGLO 减去 glc.NSATGAL 减去 glc.NSATBDS 小于等于 glc.NSATQZS,则将卫星系统设置为 glc.SYS_QZS,并将 sat 设置为对应的 QZSS PRN 号。
   else
       sat=0;
     %如果以上条件都不满足,则将 sat 设置为 0,表示未知卫星。
   end
   prn=sat;
   %将观测数据中的卫星编号转换为对应的卫星系统和PRN号。
   %目的是为了后续的载波相位平滑系数的计算。
   %[sys,prn]=satsys(sat);
   if sys~=glc.SYS_BDS,continue;
   end
   if prn<=5,continue;
   end
   el=rtk.sat(sat).azel(2)*glc.R2D;
   %将仰角值 el 乘以0.1,得到 a。
   if el<=0,continue;
   end
   dmp=zeros(1,3);
   %经过载波相位平滑处理后,会得到一个由多个系数组成的修正向量 dmp。
   %这些系数与卫星的仰角相关,并用于对观测数据进行修正,以消除多路径误差对定位结果的影响。
   %dmp 这个变量通常表示载波相位平滑处理的结果,用于进行精密定位计算。
   a=el*0.1;
   b=fix(a);
   %
   %判断卫星的PRN号是否属于 glc.BD2_IGSO 中的卫星。如果是IGSO类型的卫星,则根据不同的 b 值计算多路径误差修正 dmp。
   if find(glc.BD2_IGSO==prn) %IGSO
       if b<0
           %如果 b 小于0,则使用 IGSOCOEF 中的第一列对应的修正系数。
           for j=1:3
               dmp(j)=IGSOCOEF(j,1);
           end
       elseif b>=9
           %如果 b 大于等于9,则使用 IGSOCOEF 中的第十列对应的修正系数。
           for j=1:3
               dmp(j)=IGSOCOEF(j,10);
           end
       else
           for j=1:3
               dmp(j)=IGSOCOEF(j,b+1)*(1-a+b)+IGSOCOEF(j,b+2)*(a-b);
           end
       end
   elseif find(glc.BD2_MEO==prn) %MEO
       if b<0
           for j=1:3
               dmp(j)=MEOCOEF(j,1);
           end
       elseif b>=9
           for j=1:3
               dmp(j)=MEOCOEF(j,10);
           end
       else
           for j=1:3
               dmp(j)=MEOCOEF(j,b+1)*(1-a+b)+MEOCOEF(j,b+2)*(a-b);
           end
       end
   end 
   for j=1:3%将计算得到的修正值 dmp 加到观测数据的P值上,实现多路径误差修正,这是在 obsr(i).P(j) 上进行的操作,其中 obsr 包含观测数据
       obsr(i).P(j)=obsr(i).P(j)+dmp(j);
   end%将修正值 dmp 加到观测数据的P值上,以应用多路径误差修正。
end
return       

在上方的代码中,主要是先确定卫星的种类以及对应的prn,然后利用这个计算dmp值(载波相位修正系数),作为载波相位的改正。

2.matlab学习

变数(变量)与档案存取

(1)字符串

如果框一个是字符,如果框一串就是一个字符串

(2)字符串转置

①第一种使用fliplr()函数

s1=' i like letter'; s2=fliplr(s1); s2

s2 =

'rettel ekil i '

②第二种使用flip()函数

s4 =

'cecfe  cfec cde'

s5=flip(s4); s5

s5 =

'edc cefc  efcec'

③第三种使用reverse()函数

s3='edc cefc efcec'; s4=reverse(s3); s4

s4 =

'cecfe  cfec cde'

(3)练习关于cell

创造一个cell矩阵B有一个特定的结构体—-注意那啥{}的存在很重要!!!

B(1,1)表示的是形式

B{1,1}表示的是具体的内容

B(1,1)={'This is the first cell'};

B(1,2)={[5+j6 4+j5]}; B(2,1)={[1 2 3;4 5 6;7 8 9]}; B(2,2)={{'Time','Chris'}}; B

B =

2×2 cell 数组

{'This is the first cell'}    {1×2 double}
{3×3 double              }    {1×2 cell  }

(4)num2cell()函数

a=magic(3)

a =

 8     1     6
 3     5     7
 4     9     2

b=num2cell(a)

b =

3×3 cell 数组

{[8]}    {[1]}    {[6]}
{[3]}    {[5]}    {[7]}
{[4]}    {[9]}    {[2]}

拆分成一个一个矩阵。

c=mat2cell(a,[1 1 1],3)

c =

3×1 cell 数组

{1×3 double}
{1×3 double}
{1×3 double}

[1 1 1]表示的是row(一行三列—-1*3),3表示的是column(三个被堆放在一起)

(5)ascii

在特定的文件中进行存储

存储workspace里面所有的变量?

(6)读取xlsread()

读取excel表格里面的数据

Score=xlsread('04Score.xlsx'); [Score Header]=xlsread('04Score.xlsx')

Score =

94    83    89
76    88    82
68    72    75

Header =

4×4 cell 数组

列 1 至 3

{0×0 char}    {'Text1' }    {'Text2' }
{'John'  }    {0×0 char}    {0×0 char}
{'Selina'}    {0×0 char}    {0×0 char}
{'Peter' }    {0×0 char}    {0×0 char}

列 4

{'Text3' }
{0×0 char}
{0×0 char}
{0×0 char}

(7)文件的读取

fid=fopen(‘filename’,‘permission’)

permission=‘r’、‘r+’、‘w’、‘w+’、‘a’、‘a+’

status=fclose(fid)

x=0:pi/10:pi; y=sin(x); fid=fopen('sin.txt','w'); for i=1:11 fprintf(fid,'%5.3f %8.4f\n',x(i),y(i)); %代表的是%符号,固定的是一共是五个数字,小数点后三位 end fclose(fid);

type sin.txt

0.000 0.0000 0.314 0.3090 0.628 0.5878 0.942 0.8090 1.257 0.9511 1.571 1.0000 1.885 0.9511 2.199 0.8090 2.513 0.5878 2.827 0.3090 3.142 0.0000

3.论文阅读

论文一《BDS/GPS精密单点定位收敛时间与定位精度的比较》

发布时间:

2015年3月

研究方法:

本文首先在数据预处理方面进行钟跳的探测与修复,避免将接收机钟跳引起的各观测值跳变误判为周跳。

之后联合使用GF与MW组合探测周跳,之后使用卡尔曼滤波(EKF)进行参数估计,并通过对验证后残差进行分析,采用改进的IGGIII抗差估计方案进行质量控制。

研究目的:

检验BDS/GPS的PPP静态定位与动态定位收敛时间,对于之后的精度进行分析与对比。

创新点:

在该片文章中主要利用团队创造的TriP软件进行PPP,发现由于BDS的全球跟踪站有限,精密轨道和钟差的精度不如GPS,因此BDS进行PPP的收敛时间较GPS昌,但是收敛后可实现厘米至分米级的绝对定位。

总结:

BDS静态PPP的收敛时间约80min,动态PPP的收敛时间约

为100min。对于3h的观测数据,静态PPP收敛后定位精度优于5cm,动态PPP收敛后水平方向优于8cm,高程方向约12cm。与GPS PPP类似,东分量上定位精度较北分量稍差。说明当前BDS PPP的收敛时间较长,收敛后80-100min内可实现厘米至分米级绝对定位。将来随着北斗精密产品精度的提高及PCO、PCV模型的精化,其收敛时间和定位精度将得到进一步提高和改善。

整个思路--流程:

1.引言:在BDS方面对PPP的发展状况进行介绍;BDS发展状况进行介绍;BDS进行PPP的发展的局限性,目前需要改进的地方,需要在那些方面进行一定的测试。

2.BDS精密单点定位模型与数据处理策略

2.1观测方程

采用的是无电离层组合模型---BDS信号频率为B1、B2与B3;此外组成伪距与相位观测方程。

2.2 参数估计及误差处理策略

3.BDS/GPS PPP试验及结果分析

(1)分析的时候主要是将各个时段PPP结算结果与参考真值进行作差,获得ENU3个方向的坐标偏差上以分析BDS的PPP的收敛时间与定位精度。

(2)为确保结果的可靠性,同时检查首次收敛时刻后续20个历元的位置偏差,只有当连续20个历元的偏差都在限值以内时,才认为滤波在当前历元收敛。

3.1收敛速度分析

经过分析可得:在2015年当时,由于BDS卫星数目较少,同时无法精确的改正PCO与PCV,所以BDS进行PPP的收敛时间明显长于GPS

3.2BDS/GPS定位精度分析

静态:RMS;动态:平均RMS值剔除收敛时间超过160min;

4.理论学习

1.对流层延迟进行校正的模型为Saastamonion模型时?

Saastamoinen 模型是一种经典的对流层延迟模型,用于全球导航卫星系统(GNSS)中的大气延迟校正。下面是 Saastamoinen 模型的一般步骤:

①数据准备:收集与对流层延迟相关的观测数据,包括站点的位置坐标、天线高度、气压、温度和相对湿度等气象参数。通常,气象参数可以从地面气象站、浮标观测站或大气模型等数据源中获取。

②计算站点高度:根据站点位置坐标和地球椭球体模型,计算站点的高度。

③计算掩星函数:使用站点高度、天线高度以及卫星方位角和仰角等参数,计算掩星函数。掩星函数考虑地球表面的地形和建筑物对信号传播的阻挡影响,并计算信号穿过大气层的路径长度。

④计算湿延迟:使用相对湿度和温度等气象参数,计算湿延迟。湿延迟是由于水蒸气对信号传播速度的影响而导致的。

⑤计算干延迟:使用气压和温度等气象参数,计算干延迟。干延迟是由于气压和温度对信号传播速度的影响而导致的。

⑥求和计算:将掩星函数、湿延迟和干延迟等项相加,得到总的大气延迟值。

⑦应用校正:将计算得到的大气延迟值作为修正量,用于校正接收机测量到的GNSS信号。

2.Saastamonion模型的公式有那些?

Saastamoinen模型是Saastamoinen于1973年提出的,它是以测站纬度、高程、观测高度角、干温、水气压为变量的函数,其表达式为:

在实际应用中,上式不便于实时快速计算,所以在保证使用精度的前提下,对上式进行了拟合化简,拟合后的Saastamoinen模型为:

3.使用GMF投影函数将天顶对流层延迟投影到传播路径上?

在使用GMF投影函数时,需要知道以下几个参数:

①用户的经纬度坐标:用于确定信号传播路径的起点和终点位置。

②卫星的升角:卫星相对于用户位置的仰角。

③大气气象数据:包括大气压强、温度、湿度等信息。

GMF投影函数公式:

GMF表示天顶对流层延迟的投影函数值,P表示大气湿度(以预报湿度为准),A、B、C是经验系数。

这个表达式是通过对大量观测数据进行拟合得到的,其中的系数A、B、C根据不同研究和应用领域可能有所差异。这些系数的具体数值可以在相关的文献或气象资料中找到。

4.联合使用GF与MW组合探测周跳?

联合使用GF(Geometry-Free)和MW(Melbourne-Wübbena)组合探测周跳是为了提高周跳检测的准确性和可靠性。下面是一种常见的方法,可以用于联合使用GF与MW组合探测周跳:

①数据准备:收集GF组合和MW组合的GNSS观测数据,包括接收机接收到的卫星信号相位观测值。确保数据包含足够的时间跨度和卫星数量,以覆盖可能出现的周跳情况。

②周跳检测:对GF组合和MW组合分别进行周跳检测。

a. GF组合周跳检测:使用GF组合数据进行周跳检测。GF组合仅关注卫星之间的相对距离观测值差异,通过计算卫星之间的残差来检测周跳。常用的方法包括差分法、滑动平均法或卡尔曼滤波等。

b. MW组合周跳检测:使用MW组合数据进行周跳检测。MW组合利用不同频率的相位观测之间的差异来检测周跳。常用的方法包括对相位差进行统计分析,例如计算相位差的标准差或差分项与阈值比较等。

③周跳融合:将GF组合和MW组合的周跳检测结果进行融合处理。

a. 一致性判断:对于相同卫星的周跳检测结果,判断GF组合和MW组合的检测结果是否一致。如果两种组合的结果一致,则认为该卫星的周跳检测结果可信。

b. 差异性判断:对于相同卫星的周跳检测结果,判断GF组合和MW组合的检测结果是否存在差异。如果两种组合的结果差异较大,则需要进行进一步分析,找出原因并进行排除。

④周跳修复:根据周跳检测结果,对观测数据进行周跳修复。可以采用插值、差分、平滑等方法,恢复准确的相位观测值。

⑤验证和后续处理:对修复后的观测数据进行验证,确保周跳已经得到准确修复。然后,可以将修复后的数据用于后续的导航和定位应用。

5.采用改进的IGGIII抗差估计方案进行质量控制?

IGGIII(Iterative Geographically Weighted Generalized Gaussian Information)是一种改进的抗差估计方案,用于处理包含离群值或异常观测的数据。采用IGGIII方案进行质量控制可以识别和排除异常观测,以确保数据的可靠性和准确性。下面是使用改进的IGGIII抗差估计方案进行质量控制的一般步骤:

①数据准备:收集需要进行质量控制的数据,并确保数据具有相同的测量单位和空间参考。

②定义变量和阈值:选择需要进行质量控制的变量,并设置合适数值阈值用于判断观测是否为异常。

③计算权重:利用距离函数或其他合适的空间加权方法计算每个观测点的权重。权重可体现观测点与其他点的距离、密度和相关性等信息。

⑤估计初值:使用传统的统计方法(如最小二乘法)估计出初始的参数估计值。

⑥迭代过程:应用改进的IGGIII抗差估计方案进行迭代,直到收敛。每次迭代包括以下步骤:

a. 根据当前的参数估计值计算加权残差。

b. 利用加权残差计算每个观测点的权重。

c. 更新参数估计值,采用加权最小二乘法对权重修正后的残差进行估计。

d. 根据更新后的参数估计值重新计算权重。

e. 重复执行步骤a-d,直到参数估计值收敛或达到预定的迭代次数。

⑦异常检测:根据设定的阈值和最终的参数估计值,判断观测点是否为异常。可以采用设定的阈值与估计值的差异进行比较,如果超过阈值则将观测点标记为异常。

⑧异常处理:对于被判定为异常的观测点,可以选择进行移除、替换或进一步分析以确定是否为真实的异常。

6.天线相位中心改正---PCO、PCV

PCO指的是天线相位中心相对于天线的几何中心的偏移量。它表示了天线在电磁波传播中,波束相位中心与天线机械结构中心之间的差异。PCO的单位是米(m)。

PCV指的是天线相位中心相对于波束轴的变化。它表示了天线在不同方向上接收信号时波束相位中心的变化。PCV的单位是米/弧度(m/rad)。

为了纠正这些天线误差,需要根据GPS接收机天线的供应商提供的天线校准文件或天线相位中心的测量数据。在数据处理中,可以通过以下方式对PCO和PCV进行改正:

①对PCO进行改正:将PCO值乘以卫星到接收机的几何距离,然后加到观测数据中的相位观测值上

②对PCV进行改正:根据接收到的卫星信号的卫星方位角和仰角,从PCV文件中查找相应的PCV值,然后将其加到相位观测值上。

PCO和PCV是特定接收机天线的特性,不同天线的PCO和PCV参数可能不同。因此,在使用GPS数据进行精确定位时,根据具体的天线型号和校准文件进行相应的PCO和PCV改正非常重要。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值