主要内容

用模拟卫星星座估算GNSS接收器位置

使用模拟的全球导航卫星系统(GNSS)接收器追踪地面车辆的位置。卫星使用该卫星模拟SatelliteScenario.(卫星通信工具箱)对卫星信号处理的接收机进行了仿真lookangles伪距功能,并且估计接收器位置receiverposition函数。

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

概述

这个例子集中在空间段,或卫星星座,以及卫星系统的GNSS传感器设备。为了获得GNSS接收机位置的估计值,导航处理器需要空间段的卫星位置和接收机中测距处理器的伪距。

指定模拟参数

加载包含朝向Natick,Mathworks,Inc。的地面车辆的地面真实位置和地面车辆的地面定位和速度的垫子文件

指定模拟的开始、停止和采样时间。同时,指定GNSS接收机的掩模角或最小仰角。

%负载地面真实轨迹。负载(“routenatickma.mat”,“拉特”,“lon”,“pos”,“vel”,“lla0”);Regpos = POS;recvel = Vel;%指定模拟次数。开始时间= datetime(8 2020年10,28日,0,0,“时区”,“America / new_york”);SimulationSteps =尺寸(POS,1);dt = 1;stoptime = starttime +秒((simulationsteps-1)* dt);%指定掩模角度。maskAngle = 5;%度%转换接收机位置从东北向下(NED)到大地%坐标。需要Neivition Toolbox(TM)。receiverLLA = ned2lla (recPos lla0,“椭球体”);%设置RNG种子以允许可重复的结果。RNG(“默认”);

可视化地球格林对于地面的真实轨迹。

图geoplot(纬度、经度)geobasemap (“地形”) 标题(“地面实况轨迹”)

图中包含一个轴。带有标题的轴是轨迹的轴包含类型线的对象。

随着时间的推移模拟卫星位置

SatelliteScenario.对象使您可以指定初始轨道参数并使用中度可视化它们satelliteScenarioViewer(卫星通信工具箱)对象。此示例使用SatelliteScenario.和一个带有初始轨道参数的mat文件来模拟GPS星座随时间的变化。或者,你可以使用GNSSconstellation利用标称轨道参数模拟卫星位置的目标,只需要当前的仿真时间就可以计算卫星位置。

%创建方案。sc = satitescenario (startTime, stopTime, dt);负载(“initialOrbitalParameters.mat”,“semiMajorAxis”,“偏心”,“倾角”,“rightAscensionOfAscendingNode”,“argumentOfPeriapsis”,“trueAnomaly”,“prnstr”);%初始化卫星。卫星(SC,Semimajoraxis,偏心,倾斜,LightAscizoOmascendsnode,Argumentofperiapsis,Trueanomaly,“名称”,prnstr);%预付款结果。numsats = numel(sc.satellites);Allsatpos = Zeros(Numsats,3,SimulationSteps);Allsatvel = Zeros(Numsats,3,SimulationSteps);%保存整个模拟的卫星状态。i = 1:numel(sc.satellites)[Onesatpos,Onesatvel] =状态(SC.Satellites(i),“坐标框架”,“ecef”);allSatPos(i,:,:) = permute(oneSatPos,[3 1 2]);allSatVel(i,:,:) = permute(oneSatVel,[3 1 2]);结束

计算伪气距

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

%预付款结果。allP = 0 (numSats simulationSteps);allPDot = 0 (numSats simulationSteps);allIsSatVisible = false (numSats simulationSteps);使用天空图来显示视野中的卫星。Sp = skyplot([], []);idx = 1:simulationsteps satpos = Allsatpos(:,:,Idx);Satvel = Allsatvel(:,:,IDX);%从接收位置计算卫星能见度。satEl, [satAz allIsSatVisible (:, idx)] = lookangles (receiverLLA (idx:), satPos, maskAngle);%使用卫星和计算伪距和伪距率%接收位置和速度。[allP: idx) allPDot (:, idx)] =伪距(receiverLLA (idx:), satPos, recVel (idx:), satVel);集(sp,“azimuthdata”,Sataz(Allissatvisible(:,IDX)),“extationdata”,撒砂(Allissatvisible(:,Idx)),“labeldata”,prnstr(allissatvisible(:,idx))绘制限制结束

图包含Skyplot类型的对象。

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

最后,使用卫星位置和伪距来估计接收器位置receiverposition函数。

%预付款结果。lla = zeros(simulationsteps,3);gnssvel = zeros(simulationsteps,3);hdop = zeros(simulationsteps,1);vdop = zeros(simulationsteps,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:)] = receiverposition (p (isSatVisible),satPos (isSatVisible:), pdot (isSatVisible) satVel (isSatVisible:));结束

可视化的结果

绘制地面真理位置和估计的接收器位置地球格林

图geoplot(纬度,经度,lla (: 1), lla (:, 2) geobasemap (“地形”)传说(“地面真相”,“估计”)

图中包含一个轴。坐标轴包含两个line类型的对象。这些对象代表Ground Truth, Estimate。

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

estpos = lla2ned(lla,lla0,“椭球体”);WINSIZE =地板(尺寸(estpos,1)/ 10);图绘图(SmoothData(ABS(ASTPOS-POS),“movmedian”,WINSIZE))传奇(“x”,“y”,“z”)Xlabel(“时间(s)”)ylabel(“错误(m)”) 标题(“位置(ned)错误”)

图中包含一个轴。具有标题位置(NED)误差的轴包含3个类型的类型。这些对象表示x,y,z。