DAY26---GINav学习

1.代码学习

(1)电离层延迟校正模型

iono_klbc()

该部分代码主要实现电离层延迟模型改正,采用的模型为Klobuchar模型

输入参数:时间,结构体opt,方位角与高度角,离子层参数

输出参数:电离层相关的值

Klobuchar模型是一种用于估计电离层延迟的数学模型。它是由Klobuchar在1984年提出的,被广泛应用于全球定位系统(GPS)和其他卫星导航系统中,以纠正因电离层引起的信号传播延迟而引起的定位误差。

Klobuchar模型的主要作用是根据接收机位置和时间信息,预测电离层延迟并进行校正。电离层延迟是由电离层中的自由电子引起的,这些电子捕获和散射了GPS信号,从而导致信号传播时间延长。通过对电离层延迟进行建模和校正,可以提高卫星导航系统的定位精度。

经过matlab里面最终的计算公式为:

  • iono表示电离层延迟的校正值。
  • a0a1a2a3是Klobuchar模型的系数。
  • tow表示周内秒数(time of week, TOW),表示接收机所接收到的GPS信号的时间戳,范围为0到TOW_MAX(通常为604800秒)。
  • f是一个校正因子,用于纠正GPS信号在电离层传播过程中的折射效应。
function ion = iono_klbc(time,pos,azel,ionpar)
%定义了一个inno_klbc()函数,输入参数为时间,位置信息,方位角与高度角与离子层参数,描述离子层的相关信息;输出参数为ion,表示计算得到的离子层值。
global glc;
ion_default=[0.1118E-07,-0.7451E-08,-0.5961E-07, 0.1192E-06,...
        0.1167E+06,-0.2294E+06,-0.1311E+06, 0.1049E+07];%2004/1/1
%ion_default 的定义中,它包含一个长度为 8 的数组,其中包含了特定日期 “2004/1/1” 的一组默认的离子层参数。每个元素都是一个表示电离层参数的实数值。    
if pos(3)<-10^3||azel(2)<=0
    ion=0;
    return;
end
%首先,通过条件判断语句 if pos(3)<-10^3||azel(2)<=0,判断了 pos 参数的第三个元素是否小于 -1000 或者 azel 参数的第二个元素是否小于等于0。这些条件可以根据实际需求进行修改。
if sqrt(dot(ionpar,ionpar))<=0
    ionpar=ion_default;
end
%接下来的条件判断语句 if sqrt(dot(ionpar,ionpar))<=0,判断了 ionpar 参数的长度是否小于等于 0。
azel=azel*180/pi;
ion = zeros(size(azel,1));
lat=pos(1)*180/pi;
lon=pos(2)*180/pi;
az=azel(1);
el=azel(2);
%电离层参数
a0 = ionpar(1);
a1 = ionpar(2);
a2 = ionpar(3);
a3 = ionpar(4);
b0 = ionpar(5);
b1 = ionpar(6);
b2 = ionpar(7);
b3 = ionpar(8);
%elevation from 0 to 90 degrees
el = abs(el);
%el 可能表示方位角和仰角参数中的仰角,该参数通常用于描述卫星相对于接收机的高度角(或仰角)。在这里,通过使用 abs() 函数,将 el 的值取绝对值,确保其为正值。
%将角度值转换为半圆
lat = lat / 180;%表示纬度
lon = lon / 180;%表示经度
az = az / 180;%表示方位角
el = el / 180;%表示仰角
f = 1 + 16*(0.53-el).^3;%f:是之前计算得到的参数,表示一个校正因子。
psi = (0.0137 ./ (el+0.11)) - 0.022;
phi = lat + psi .* cos(az*pi);
phi(phi > 0.416)  =  0.416;
phi(phi < -0.416) = -0.416;
lambda = lon + ((psi.*sin(az*pi)) ./ cos(phi*pi));
ro = phi + 0.064*cos((lambda-1.617)*pi);
[~,sow]=time2gpst(time);
t = lambda*43200 + sow;
t = mod(t,86400);
a = a0 + a1*ro + a2*ro.^2 + a3*ro.^3;
a(a < 0) = 0;%a:是之前计算得到的参数,表示一个系数。
p = b0 + b1*ro + b2*ro.^2 + b3*ro.^3;
p(p < 72000) = 72000;
x = (2*pi*(t-50400)) ./ p;%x:是之前计算得到的参数,表示一个时间参数。
%电离层延迟
index = find(abs(x) < 1.57);%index表示一个索引变量,用于筛选出满足条件的 x 的索引。
ion(index,1) = glc.CLIGHT * f(index) .* (5e-9 + a(index) .* (1 - (x(index).^2)/2 + (x(index).^4)/24));
index = find(abs(x) >= 1.57);
ion(index,1) = glc.CLIGHT * f(index) .* 5e-9;
%ion:表示电离层延迟,是一个存储电离层延迟值的数组。
return;

2.matlab学习

GUI图形界面

(1)guide

首先在命令行窗口打入guide

弹出窗口:

点击确定,弹出untitled.fig

再上图的左侧,里面有很多的原件,这些原件有啥功能如下所示。

在matlab里面,选择文件——预设——-GUIDE——在组件显示板中显示名称——确定

从左端拉三个按钮加上一个绘图axe界面,然后将按钮设置为Button1、Button2与Button3。

(2)如何执行相关的命令?

对绘图那一块生成一个图片的代码如下所示:

% --- Executes just before untitled is made visible. function untitled_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to untitled (see VARARGIN) handles.peaks=peaks(35); handles.membrane=membrane; [x,y]=meshgrid(-8:.5:8); r=sqrt(x.^2+y.^2)+eps; sinc=sin(r)./r; handles.sinc=sinc; handles.current_data=handles.peaks; surf(handles.current_data);%%使用surf()进行画图

% Choose default command line output for untitled handles.output = hObject;

% Update handles structure guidata(hObject, handles);

 

成图如上所示。

(3)如何对按钮进行相关的编写代码?

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y]=meshgrid(-8:.5:8);
r=sqrt(x.^2+y.^2)+eps;
sinc=sin(r)./r;
handles.sinc=sinc;
handles.current_data=handles.peaks;
surf(handles.current_data);%%使用surf()进行画图

如果就是将绘图的程序放在pushbutton1()后边,那么按第一个按钮会画图。

(4)加一个axes会怎么样呢?

如果在.fig里面重新拉一个axes,运行之前的会出现如下界面。

 

按动button1后会出现下面的结果,由此可知,绘图部分的代码结果会出现在最新的图上。

(4)如果点击button1,将图形出现在第一个axes上面,如何处理?

第一种方式:

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y]=meshgrid(-8:.5:8);
r=sqrt(x.^2+y.^2)+eps;
sinc=sin(r)./r;
handles.sinc=sinc;
handles.current_data=handles.peaks;
axes(handles.axes1);
surf(handles.current_data);%%使用surf()进行画图

 第二种方式:

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y]=meshgrid(-8:.5:8);
r=sqrt(x.^2+y.^2)+eps;
sinc=sin(r)./r;
handles.sinc=sinc;
handles.current_data=handles.peaks;
surf(handles.axes1,handles.current_data);%%使用surf()进行画图

(5)静态文本+进度条?

在两个calback里面都需要编写代码

set();get()

% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
**a=get(handles.slider1,'Value');
set(handles.text2,'String','TEST');**



% --- Executes on slider movement.
function slider2_Callback(hObject, eventdata, handles)
% hObject    handle to slider2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
**a=get(handles.slider2,'Value');
set(handles.text2,'String','TEST');**

3.论文阅读

论文一《GPS/GLONASS/BDS/Galileo动态精密单点定位精度及收敛时间分析》

发布时间:

2020年8月

研究方法:

使用动态PPP的技术,联合GPS/GLONASS/BDS/Galileo四系统进行PPP。

研究目的:

多系统联PPP使得测站可视卫星数明显增加,卫星空间几何结构明显优化,有效增强了定位结果的可靠性及可用性。

创新点:

从单系统转变为多系统分析动态PPP在定位精度、收敛时间等方面的表现以及截至高度角对其产生的影响。

总结:

与GPS单系统相比,多系统联合PPP在精度及收敛速度上具有明显改善。精度在E、N、U方向分别由1.24cm、0.97cm、3.59cm提高到0.78cm、0.77cm、2.48cm;收敛时间由22.7min

变为9.8min。

整个思路--流程:

引言:GNSS中当下各个系统的发展状况;PPP在当下的发展,有哪些人对其进行相关的研究;GNSS对PPP的作用;本文的思路。

1.GNNN PPP模型于数据处理策略

2.实验结果及分析

2.1实验数据

2.2动态定位结果

2.3戒指高度角对定位性能的影响

3.结束

随着截止高度角增加,可视卫星数逐渐减少,GDOP值逐渐增大。当截止高度角为30°时:单GPS系统的可视卫星数大约5个,而此时4系统的可视卫星数维持在15个左右;单GPS系统GDOP值部分时段超过了10,而4系统GDOP值维持在3的水平;4系统水平定位结果仍同低截止高度角时保持一致,稳定性明显优于单GPS。当截止高度角为40°时:单GPS的可视卫星数已经小于5个,GDOP值大多时段超过10,此时定位误差时间序列抖动剧烈,无法提供精密位置服务;而4系统可视卫星数仍然维持在10个,GDOP值大约为6,其定位结果在水平方向上仍然表现出较好的稳定性,只是在高程方向上稳定性有所降低。因此,多系统联合处理使得测站可视卫星数明显增加,卫星空间几何结构明显优化,有效增强了定位结果的可靠性及可用性。

4.理论学习

(1)什么是GDOP时间序列?

G-DOP(Geometric Dilution of Precision)时间序列是一种由卫星导航系统(如GPS)生成的时间序列数据,用于评估定位精度。G-DOP表示几何精度衰减因子,用于衡量卫星在定位过程中的分布和几何关系。

在G-DOP时间序列中,每个时间点的数值表示在该时刻卫星的分布情况及其对定位精度的贡献。通常,G-DOP时间序列中有四个主要的数值,分别是Geometric Dilution of Precision (GDOP),Position Dilution of Precision (PDOP),Horizontal Dilution of Precision (HDOP)和Vertical Dilution of Precision (VDOP)。

(2)如何查找伪距观测值?

标准单点定位的话,只需要伪距观测值,组成伪距观测方程。那么如果代码实现的话,一般是查找每个卫星的PRN号后面的第一个观测值就够了。

(3)无电离层组合数学模型

无电离层组合模型利用不同频率信号间的组合消除电离层延迟的低阶项。也是目前双频、三频信号最常用的组合方式。其数学模型如下:

在参数估计部分:

对于无电离层组合观测值,首先通过三种DCB产品(P1-P2,C1-P1,C2-P2),将其中一个伪距观测值改为P1/P2。因为无电离层组合观测值使用的观测值就是P1和P2,如果出现的观测值是C1和C2,需要使用DCB改正为P1或者P2。

组合后无电离层组合伪距观测值中包含有卫星端硬件延迟,但是精密钟差中也包含有卫星端硬件延迟,因此他们相互抵消了。而接收机端无电离层组合硬件延迟则吸收进接收机钟差。

无电离层组合载波观测值中,精密钟差引入的卫星端硬件延迟被模糊度吸收,而接收机端硬件延迟则被接收机钟差吸收。这也是为什么无电离层组合模糊度损失整周特性的原因之一。

因此,在无电离层组合观测值中需要估计的参数包括,接收机三维位置、接收机钟差、天顶对流层延迟、模糊度。

由于无电离层组合采用精密钟差产品,因此无电离层组合模糊度中包含有卫星端硬件延迟等偏差,使其丧失整周特性。上述偏差的影响可以统称为偏差b。b的时变部分被钟差参数吸收,时不变部分被模糊度吸收。正是由于时不变部分使得模糊度整数特性消失,因此只需要求定非整数部分FCB就可以恢复模糊度的整数特性。
FCB分为卫星端FCB和接收机端FCB。因此如果能准确估计这两项误差,并从无电离层模糊度中分离出来,就能够恢复无电离层组合非差模糊度的整周特性。
对于无电离层组合来说。接收机端FCB可以通过星间单差消除,卫星端FCB通过服务端解算为宽巷FCB和窄巷FCB并拨发给用户。

(4)UoFc数学模型

Uofc模型与无电离层组合模型相似,同样消除了电离层延迟项。但是其运用的是伪距和载波相位之间电离层项大小相等符号相反的性质。因此,其又被称为半和模型。其数学模型如下:

与无电离层组合相比,其最大的优势就在于可以进行单频的定位。除此之外,半和模型组合后的噪声减半,且可以计算原始观测值L上的模糊度。

(5)非差非组合数学模型

无电离层组合和UoFc模型虽然消除了电离层延迟,但是其造成了观测信息的损失。如电离层的时空相关性等等。其次,无电离层组合模型放大了观测噪声。非差非组合模型从原始观测方程出发进行的,即不进行任何组合的模型。其函数模型如下:

其与无电离层组合相比,优势在于保留了更多的观测信息,可以利用高电离层约束,使模糊度固定效率更高。并且已有研究证明,非差非组合与半和模型是等价的,且都优于无电离层组合。

在参数估计部分:

对于非差非组合模型,也需要使用三种DCB产品将伪距观测值改为P1/P2观测值。

对于精密钟差中引入的无电离层卫星端硬件延迟,在伪距观测值中被电离层参数吸收,在载波观测值中则被电离层和模糊度吸收。

接收机端硬件延迟则被接收机钟差吸收。

因此对于非差非组合模型,需要估计的参数包括:接收机三维坐标,接收机钟差,电离层延迟,天顶对流层延迟,模糊度等。

(6)IFB与ISB

IFB:伪距、载波频间偏差。

主要针对的是一FDMA技术的卫星,如俄罗斯的GLONASS卫星。不同卫星一般采用不同的频率,因此需要引入IFB参数估计。

ISB:系统间偏差

主要针对多系统,可以解释为GNSS时间基准之间的偏差(如BDS与GPS时的差异)与不同GNSS系统对应接收机伪距硬件延迟差异的综合性偏差。

(7)差分码偏差和码偏差

码偏差:又称硬件延迟,是指GNSS信号在卫星和接收机端硬件内部的时间延迟。对于卫星端硬件延迟,可以理解为GNSS信号从产生到天线相位中心的延迟。对于接收机端硬件延迟,可以理解为GNSS信号从接收天线相位中心到信号捕获跟踪的时间延迟。

差分码偏差:是指不同类型的GNSS信号的码偏差之间的差值。由此可见,码偏差是绝对量,而差分码偏差是相对量。

由于在PPP中,组合方式都是在指定频率间的组合,因此当使用不同卫星钟差参数基准的观测量时需要引入DCB参数进行卫星硬件延迟的改正。在广播星历中与之对应的参数就是时间群延迟TGD、广播群延迟BGD、以及信号间偏差改正ISC。

(8)什么是时间群延迟TGD、广播群延迟BGD、以及信号间偏差改正ISC?

时间群延迟(Time Group Delay,TGD)是一种用于校正卫星导航系统(如GPS)信号传播延迟的参数。它表示卫星钟的时间偏差在信号传播过程中引起的延迟,主要由卫星本身的时钟偏差和传播介质(如大气层)对信号的影响引起。

广播群延迟(Broadcast Group Delay,BGD)是一种与卫星导航系统广播星历数据相关的参数。它表示在广播星历数据中用于校正卫星钟差的时间延迟。BGD参数被用来修正TGD和信号延迟,以提高定位精度。

信号间偏差改正(Inter-Signal Corrections,ISC)是对不同卫星信号之间的传播延迟差异进行校正的过程。由于不同频率的卫星信号在传播过程中会受到不同的影响,例如电离层引起的传播延迟,ISC用于估计和减小这些频率之间的相对延迟差异。

  • TGD是校正卫星钟差引起的信号传播延迟;
  • BGD是用于修正卫星广播星历数据中卫星钟差的时间延迟;
  • ISC是对不同卫星信号之间的传播延迟差异进行的校正。

(9)单频定位与双频定位有什么不同?

单频定位和双频定位是两种不同的卫星导航系统(如GPS)接收机定位方法,主要区别在于接收机使用的频率数量和数据处理方式。以下是它们的主要区别:

频率数量:

单频定位:使用单个频率(通常是L1频率)的卫星信号进行定位。这是最常见和最简单的定位方式,适用于许多普通的导航应用。

双频定位:使用两个频率(L1和L2频率)的卫星信号进行定位。这种方式通常在高精度定位和测量应用中使用,如差分GPS、精密测量等。

误差抵消:

单频定位:由于只使用单个频率的卫星信号,因此无法直接测量和抵消一些导致定位误差的因素,例如电离层延迟。在单频定位中,通常通过使用模型进行近似估计和消除这些误差。

双频定位:使用两个频率的卫星信号,可以测量并抵消某些误差源,例如电离层延迟。通过同时观测L1和L2频率的信号,可以利用其频率差异来估计和消除电离层引起的延迟误差,从而提高定位精度。

定位精度:

单频定位:由于受到误差的影响较大,因此相对精度较低,一般在数米至十几米左右。

双频定位:通过抵消一些误差源,如电离层延迟,可以获得更高的定位精度。通常能够达到亚米级别的精度,甚至更高,取决于具体应用。

需要注意的是,双频定位要求接收机支持接收和处理两个频率的卫星信号,并且相应的卫星信号必须可用。此外,双频定位可能需要更复杂的数据处理和计算方法,因此相对于单频定位会更复杂和耗时。

(9)PPP具体步骤流程图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值