主要内容

利用模拟卫星星座估计GNSS接收机位置

使用模拟全球导航卫星系统(GNSS)接收器跟踪地面车辆的位置satelliteScenario对象,使用长相(导航工具箱)伪距(导航工具箱)函数,并使用破产管理人地位(导航工具箱)作用

此示例需要导航工具箱™.

概述

本例重点介绍空间部分,或者卫星星座,以及卫星系统的GNSS传感器设备。为了获得GNSS接收机位置的估计,导航处理器需要来自空间段的卫星位置和来自接收机中测距处理器的伪距。

指定仿真参数

加载mat -文件,其中包含一辆地面车辆行驶到MathWorks, Inc.的MA校区Natick的地面真实位置和速度。

指定模拟的开始、停止和采样时间。另外,指定GNSS接收器的遮罩角度或最小仰角。

%加载地面真实轨迹。装载(“routeNatickMA.mat”,“纬度”,“朗”,“pos”,”或者“,“lla0”);recPos = pos;recVel =韦尔;%指定模拟时间。startTime=日期时间(2020,10,28,8,0,0,“时区”,“美国/ New_York”);simulationSteps =大小(pos, 1);dt = 1;stopTime = startTime + seconds((simulationSteps-1)*dt);%指定掩码角度。马斯康格尔=5;%学位%将接收器位置从东北向下(NED)转换为大地测量%的坐标。需要导航工具箱(TM)。接收器=ned2lla(recPos,lla0,“椭球体”);%设置RNG种子以允许重复结果。rng (“默认”);

可视化地质图地面真相轨道。

图:地质地块(纬度、经度)地理底图(“地形”)标题(“地面真相轨道”)

图中包含一个axes对象。axes对象包含一个line类型的对象。

模拟随时间变化的卫星位置

这个satelliteScenario对象使您能够指定初始轨道参数,并使用卫星观测仪对象。此示例使用satelliteScenario该模型使用带有初始轨道参数的MAT文件来模拟随时间变化的GPS星座。或者,您可以使用gnssconstellation(导航工具箱)对象,该对象使用标称轨道参数模拟卫星位置,只需当前模拟时间即可计算卫星位置。

%创建场景。sc=卫星CENARIO(开始时间、停止时间、dt);载荷(“initialOrbitalParameters.mat”,“半主流”,“偏心率”,...“倾向”,“RightAscensionOfaScenedingNode”,...“帕里亚普斯的论据”,“真实异常”,“prnStr”);%初始化卫星。卫星(sc、semiMajorAxis偏心、倾斜...rightAscensionOfAscendingNode、argumentOfPeriapsis trueAnomaly,...“名称”, prnStr);% Preallocate结果。numSats =元素个数(sc.Satellites);allSatPos = 0 (numSats 3 simulationSteps);allSatVel = 0 (numSats 3 simulationSteps);%在整个模拟过程中保存卫星状态。对于i = 1:numel(sc.卫星)[oneSatPos, oneSatVel] = states(sc.卫星(i),“协调名称”,“ecef”); allSatPos(i,:,:)=permute(oneSatPos,[3 1 2]);allSatVel(i,:,:)=permute(oneSatVel,[3 1 2]);终止

计算伪距

在整个模拟过程中,使用卫星位置来计算伪距和卫星能见度。掩模角用于确定接收机可见的卫星。伪距是卫星和GNSS接收器之间的距离。这个词伪距之所以使用,是因为这个距离值是通过将当前接收机时钟时间与带有时间标记的卫星信号之间的时间差乘以光速计算出来的。

% Preallocate结果。allP=零(numSats,simulationSteps);allPDot=零(numSats,simulationSteps);AllissaVisible=false(numSats、simulationSteps);%使用skyplot在视图中可视化卫星。sp=天空图([],[]);对于idx=1:simulationSteps satPos=allSatPos(:,:,idx);satVel=allSatVel(:,:,idx);%根据接收器位置计算卫星可视性。[satAz,satEl,allIsSatVisible(:,idx)]=视角(接收器(idx,:),satPos,maskAngle);%使用卫星和卫星计算伪距和伪距速率%接收器位置和速度。[allP(:,idx),allPDot(:,idx)]=伪范围,“AzimuthData”, satAz (allIsSatVisible (:, idx)),...“ElevationData”satEl (allIsSatVisible (:, idx)),...“LabelData”, prnStr (allIsSatVisible (:, idx))) drawnowlimitrate终止

Figure包含一个skyplot类型的对象。

根据伪距和卫星位置估计接收机位置

最后,利用卫星位置和伪距估计接收机位置破产管理人地位作用

% Preallocate结果。lla=零(模拟步骤,3);gnssVel=零(模拟步骤,3);hdop=零(模拟步骤,1);vdop=零(模拟步骤,1);对于idx = 1:simulationSteps p = allP(:,idx);pdot = allPDot (:, idx);isSatVisible = allIsSatVisible (:, idx);satPos = allSatPos (:,:, idx);satVel = allSatVel (:,:, idx);%使用伪距估计接收机位置和速度,%伪距速率、卫星位置和速度。[lla(idx,:)、gnssVel(idx,:)、hdop(idx,:)、vdop(idx,:)]=接收者位置(p(isSatVisible),...satPos(isSatVisible,:),pdot(isSatVisible),satVel(isSatVisible,:);终止

可视化结果

在a上绘制地面真实位置和估计接收机位置地质图.

图:地质地块(lat、lon、lla(:,1)、lla(:,2))地理底图(“地形”)传奇(“地面实况”,“估计”)

图形包含一个轴对象。轴对象包含两个类型为line的对象。这些对象表示地面真实值、估计值。

绘制位置估计中的绝对误差。通过移动中值来消除误差,使绘图更具可读性。x轴和y轴的误差较小,因为接收机两侧都有卫星。z轴的误差更大,因为只有卫星在接收器上方,而不是下方。随着接收器的移动和一些卫星的进入和消失,误差会随着时间而变化。

estPos = lla2ned (lla lla0,“椭球体”);winSize =地板(大小(estPos, 1) / 10);图绘制(smoothdata (abs (estPos-pos),“movmedian”winSize)传说(“x”,“y”,“z”)包含(“时间”) ylabel (“错误(m)”)标题(“位置(NED)错误”)

图中包含一个轴对象。带有标题位置(NED)错误的轴对象包含3个类型为line的对象。这些对象代表x y z。

另见

物体

功能

相关实例

更多关于