DAY27---GINav学习

博客围绕学习展开,包含代码学习,涉及Saastamoinen和Hopfield模型用于估计大气延迟修正值;Matlab学习,有多项式绘制、微分、积分等操作;论文阅读聚焦《GNSS精密单点定位及非差模糊度快速确定方法研究》,探讨模糊度问题及解决方法;还有最小二乘的具体实现理论学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.代码学习

对流层延迟模型

Saastamoinen模型

在该部分模型中,主要使用的是Saastamoinen模型,主要输出的两部分,对流层延迟误差和对流层延迟残差。

输入:pos:接收机的位置,通常使用地理坐标表示(经度、纬度、海拔);azel:卫星的方位角(azimuth)和仰角(elevation),用于描述卫星相对于接收器的位置关系;humi:相对湿度,表示空气中水汽含量的百分比
输出:troperr值,表示大气延迟修正量

function troperr=trop_saa(pos,azel,humi)%定义了一个trop_saa()函数
%输入:
%pos:接收机的位置,通常使用地理坐标表示(经度、纬度、海拔);
%azel:卫星的方位角(azimuth)和仰角(elevation),用于描述卫星相对于接收器的位置关系;
%humi:相对湿度,表示空气中水汽含量的百分比
%输出:
%troperr值,表示大气延迟修正量
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%the tropspheric delay was calculated using Saastamoinen model
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
temp0=15; %温度
if pos(3)<-100||pos(3)>10000||azel(2)<=0
    %pos(3) < -100:判断接收机的海拔高度是否小于-100米(即低于-100米的情况)。
    %pos(3) > 10000:判断接收机的海拔高度是否大于10000米(即高于10000米的情况)。
    %azel(2) <= 0:判断卫星的仰角是否小于等于0(即卫星处在或低于地平线上的情况)。
    %上述三者只要存在一个的情况下就要将大气延迟修正值为0
    troperr=0;
    return;
end
%计算标准大气模型(standard atmosphere)中的气压(pres)、温度(temp)和水汽压(e)。
if pos(3)<0
    hgt=0;
    %通过判断接收机的海拔高度(pos(3))是否小于0,来确定使用的高度。
    %如果海拔高度小于0,则将高度(hgt)设为0;
else
    hgt=pos(3);
    %否则,将高度设为与接收机海拔高度相等。
end
pres=1013.25*(1.0-2.2557E-5*hgt)^5.2568; %计算气压(pres)公式
temp=temp0-6.5E-3*hgt+273.16; %计算温度(temp)公式
e=6.108*humi*exp((17.15*temp-4684.0)/(temp-38.45)); %计算水汽压(e)公式
%用于Saastamoinen模型(Saastamoninen model)的计算,用于估计对流层延迟修正值(tropospheric delay correction)。
z=pi/2.0-azel(2);
%通过将仰角(azel(2))转换为天顶距(zenith distance,用z表示),计算z的值。天顶距是卫星与垂直方向(天顶)的角距离。
trph=0.0022768*pres/(1.0-0.00266*cos(2.0*pos(1))-0.00028*hgt/1E3)/cos(z);
%对流层干延迟修正(trph):根据大气压力(pres)、接收机的纬度(pos(1))、高度(hgt)和天顶距(z)进行计算。
trpw=0.002277*(1255.0/temp+0.05)*e/cos(z);
%对流层湿延迟修正(trpw):根据温度(temp)和水汽压强(e)以及天顶距(z)进行计算。
troperr=trph+trpw;
%对流层延迟改正=对流层干延迟修真+对流层湿延迟修正
return

 Saastamoinen模型是什么?模型计算需要什么?公式是什么?

Saastamoinen模型是一种用于估计大气延迟修正值的数学模型。它是基于大气层中水汽含量、气压、温度等参数的经验公式,用于在卫星导航系统等应用中进行大气延迟的估计和修正。

在Saastamoinen模型中,计算大气延迟修正通常需要以下输入参数:

位置信息(经度、纬度和海拔高度):用于确定接收机所处的位置,影响到模型中的相关参数计算。

方位角仰角信息(azimuthelevation:描述了卫星与接收机之间的方向关系,影响模型中的修正值计算。

大气压力:用于根据气压值来计算大气延迟修正。

温度:用于根据温度值来计算大气延迟修正。

相对湿度:用于估计大气中的水汽含量,进而计算湿延迟修正。

具体的Saastamoinen模型计算公式如下:

trph是对流层干延迟修正值;

trpw是对流层湿延迟修正值;

pres是大气压力;

lat是接收机的纬度;

hgt是接收机的高度;

z是天顶距(由方位角和仰角计算得到);

temp是温度;

e是水汽压

 Hopfield模型

类比Saastamoinen模型,根据Hopfield模型的计算公式,写了代码

输入:pos:接收机的位置,通常使用地理坐标表示(经度、纬度、海拔);azel:卫星的方位角(azimuth)和仰角(elevation),用于描述卫星相对于接收器的位置关系
输出:troperr值,表示大气延迟修正量

function troperr=trop_hopfield(pos,azel)%定义了一个trop_hopfield()函数
temp0=15; %温度
if pos(3)<-100||pos(3)>10000||azel(2)<=0
    %pos(3) < -100:判断接收机的海拔高度是否小于-100米(即低于-100米的情况)。
    %pos(3) > 10000:判断接收机的海拔高度是否大于10000米(即高于10000米的情况)。
    %azel(2) <= 0:判断卫星的仰角是否小于等于0(即卫星处在或低于地平线上的情况)。
    %上述三者只要存在一个的情况下就要将大气延迟修正值为0
    troperr=0;
    return;
end
%计算标准大气模型(standard atmosphere)中的气压(pres)、温度(temp)和水汽压(e)。
if pos(3)<0
    hgt=0;
    %通过判断接收机的海拔高度(pos(3))是否小于0,来确定使用的高度。
    %如果海拔高度小于0,则将高度(hgt)设为0;
else
    hgt=pos(3);
    %否则,将高度设为与接收机海拔高度相等。
end
temp=temp0-6.5E-3*hgt+273.16; %计算温度(temp)公式
a=0.12;
troperr=a*hgt*(temp-temp0);
return

Hopfield模型是一种用于估计大气延迟修正的物理模型,用于精确计算卫星信号在大气层中传播引起的延迟。与Saastamoinen模型相比,Hopfield模型在高纬度和高海拔地区的性能更好。Hopfield模型的计算基于大气压力、温度延迟、湿度延迟等参数的详细物理计算,通过求解大气层的光线折射方程来估计大气延迟修正。

在Hopfield模型中,计算大气延迟修正通常需要以下输入参数:

位置信息(经度、纬度和海拔高度):用于确定接收机所处的位置,影响到模型中的相关参数计算。

方位角仰角信息(azimuthelevation):描述了卫星与接收机之间的方向关系,影响模型中的修正值计算。

大气压力:用于根据气压值来计算大气延迟修正。

温度延迟:基于大气温度垂直变化的物理模型来计算大气延迟,通常采用大气温度廓线或大气温度模型。

湿度延迟:基于大气中水汽含量的物理模型来计算大气延迟,通常采用大气湿度廓线或大气湿度模型。

具体的Hopfield模型计算公式较为复杂,涉及光线折射、天气参数以及大气密度等因素。以下是Hopfield模型的一个简化公式来计算大气延迟修正值:

troperr 是大气延迟修正值

a 是Hopfield模型的经验系数----一般设置在0.12至0.15之间(设置为0.12)

temp表示大气层上某一高度的温度。

temp0是参考温度(通常取15℃)。

hegt是海拔的高度

Hopfield模型公式:

T的计算公式:

 

2.matlab学习

(1)绘制一个多项式--ployval()

问题:9x……3-5x……2+3x+7 for -2<=x≤5

a=[9,-5,3,7];
x=-2:0.01:5;
f=polyval(a,x);
plot(x,f,'LineWidth',2);
xlabel('x');
ylabel('f(x)');
set(gca,'FontSize',14);

 (2)多项式微分操作--ployder()

 >> p=[8,-1,3,2];

>> polyder(p)

ans =

    24    -2     3

>> p=[5 0 -2 0 1];
>> 
>> polyder(p);
>> polyval(polyder(p),7)

ans =

        6832

(3)练习—-两个多项式相乘;微分结果图——conv()

f(x)=(20x……3-7x……2+5x+10)(4x……2+12x-3) for -2≤x≤1

a=conv([5 -7 5 10],[0 4 12 -3]); 
%polyder(a); 
hold on
d=linspace(-2,1);
c=polyval(a,d);
b=polyval(polyder(a),d) 
e=plot(d,c);
f=plot(d,b); 
set(e,'LineWidth',2,'linestyle','--','color','b')
set(f,'color','r') 
g='f(x)';
h="f'(x)" ;
legend(g,h)
%set(gca, 'linewidth', 2)
box on

 (4)积分--polyint()

>> p=[5 0 -2 0 1];
>> polyint(p)

ans =

    1.0000         0   -0.6667         0    1.0000         0
>> polyval(polyint(p,3),7)

ans =

   1.6588e+04

(5)数值的微分---diff()

>> x=[1 2 5 2 1];
>> diff(x)

ans =

     1     3    -3    -1

>> x=[1 2];
>> y=[5 7];
>> slop=diff(x)/diff(y)

slop =

    0.5000

(6)绘图----积分

>> h=0.5;
>> x=0:h:2*pi;
>> y=sin(x);
>> m=diff(x)./diff(y);
>> m=diff(x)./diff(y)

m =

  列 1 至 6

    1.0429    1.3810    3.2046   -5.6691   -1.6086   -1.0932

  列 7 至 12

   -1.0165   -1.2315   -2.2652   26.8733    1.9733    1.1734

(7)不同的步长

f(x) = sin(x)的导数用不同的h值计算
power(10, -i)表示为10^(-i)

g = colormap(lines); hold on;
for i=1:4
x = 0:power(10, -i):pi;
y = sin(x); m = diff(y)./diff(x);
plot(x(1:end-1), m, 'Color', g(i,:)); 
end
hold off;
set(gca, 'XLim', [0, pi/2]); 
set(gca, 'YLim', [0, 1.2]);
set(gca, 'FontSize', 18); 
set(gca, 'XTick', 0:pi/4:pi/2);
set(gca, 'XTickLabel', {'0', 'p/4', 'p/2'});
h = legend('h=0.1','h=0.01','h=0.001','h=0.0001');
set(h,'FontName', 'Times New Roman'); box on;

 (8)练习

(9)二阶与三阶

  • 二阶导数f’‘和三阶导数f’’'可以用类似的方法得到
  • 已知f(x)=x3,作图使f’ 和f’'在-2≤x≤2
x = -2:0.005:2; y = x.^3;
m = diff(y)./diff(x);
m2 = diff(m)./diff(x(1:end-1));
plot(x,y,x(1:end-1),m,x(1:end-2),m2);
xlabel('x', 'FontSize', 18); 
ylabel('y', 'FontSize', 18);
legend('f(x) = x^3','f''(x)','f''''(x)','Location',"southeast");
set(gca, 'FontSize', 18);

 (10)求和---sum()

>> h=0.05;
>> x=0:h:2;

>> midpoint = (x(1:end - 1) + x(2:end))./2;
>> y=4*midpoint.^3;
>> s=sum(h*y)

s =

   15.9950

3.论文阅读

《GNSS精密单点定位及非差模糊度快速确定方法研究》

发布时间:

2013年10月

研究方法:

  1. 提出了实时PPP快速初始化和快速重新初始化的新方法
  2. 提出了一种新的实时PPP中周跳固定与修复方法(该方法精细分离各项误差,并引入LAMBDS方法搜索周调值)。
  3. 提出了非差模糊度整数解的新模型与方法
  4. 提出了一种利用预报大气层延迟辅助PPP模糊度快速固定的新方法(该方法充分利用首次初始化完成后生成的精密大气信息,可实现短时信号中断后模糊度的单历元固定,避免了信号中断所引起PPP重新初始化的问题)。
  5. 提出了区域增强的PPP方法(充分抵用从区域参考网提取的精密大气改正数,实现了实时PPP的快速初始化)。
  6. 提出了顾及电离层特征的PPP模型,基于该模型开发了新的相位小数偏差估计算法。
  7. 提出了一种统一的估计大气约束的非差非组合的精密定位模型与算法。

研究目的:

在2013年当时的情况,虽然技术的发展历经有十余年,并取得了一大批丰富的研究和应用成果。但是,由于PPP通常釆用模糊度实数解,受伪距噪声和大气延迟误差的影响较大,其定位收敛时间偏长,定位精度及可靠性仍不及相对定位。这在一定程度上限制了PPP的发展和应用,特别是在实时高精度定位应用的领域。因此,深入开展实时模糊度固定解的理论和方法的研究,建立非差模糊度固定解模型并实现非差模糊度的快速固定,这对于推广PPP技术在测绘遥感地理信息及其它领域的应用具有重要作用。

研究目标:

如何实现整周模糊度的快速确定是PPP技术推广应用过程中必须解决的关键问题。本论文旨在围绕PPP模糊度快速确定的关键技术幵展系统深入的研究,解决载波相位偏差小数部分的正确分离与估计,突破实时高采样率精密钟差快速估计、PPP非差模糊度快速确定等关键技术,解决快速重新初始和首次初始化等难题,最终建立一套完整的实时PPP精密定位服务系统。

研究内容:

  1. 高采样率精密钟差的估计与实时PPP系统的开发
  2. PPP中的非差整周模糊度确定
  3. PPP的快速初始化与重新初始化
  4. 建立统一的精密定位模型和服务系统

创新点:

在研究方法里面都是新的创新点。

(1)PPP模糊度为什么无法快速固定为整数?原因是什么?

原因一:原始站星间的非差相位观测值中的模糊度本身就不具有整数特性,幺四先非差模糊度整数固定解就必须恢复非差模糊度的整数特性。

原因二:PPP没有作差分,轨道误差、卫星钟差、大气延迟误差等诸多误差的影响,使得模糊度难以短时间固定。

(2)实现PPP模糊度固定解的关键之一是有效分离接收机和卫星端的初始相位和硬件延迟偏差,进而恢复非差模糊度的整数特性。

(3)解决模糊度问题还可以使用载波相位平滑和宽窄巷滤波等技术。

方法一:载波相位平滑利用前一时刻的相位观测值来减小相位观测的随机误差,从而减少模糊度的影响。

方法二:宽窄巷滤波则利用多个带宽不同的滤波器来提取载波相位信号中的信息,从而减小噪声和干扰对模糊度估计的影响。

(4)解决PPP中的模糊度问题是关键的步骤。

通常,PPP会利用差分技术或者使用外部的精密轨道和钟差信息来进行模糊度解算。PPP采用双差技术,将接收器观测值与参考站观测值进行差分,消除了很多公共误差,从而提高了模糊度解算的准确性。

另一种方法是使用精密轨道和钟差信息来估计模糊度。通过利用来自精密轨道的卫星位置和钟差数据,将其与接收器的观测数据进行比对,可以估计出相对于该精密轨道的模糊度。这一方法通常称为模糊度固定(ambiguity fixing)。

4.理论学习

(1)最小二乘具体实现

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值