主要内容

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

跟踪的位置地面车辆使用一个模拟全球导航卫星系统(GNSS)接收机。卫星使用的模拟satelliteScenario对象,模拟接收机使用的卫星信号处理lookangles(导航工具箱)伪距(导航工具箱)功能,和接收器的位置估计receiverposition(导航工具箱)函数。

这个例子需要导航工具箱™。

概述

这个例子中关注的空间段,或卫星星座,和GNSS卫星传感器设备系统。获得估计GNSS接收机的位置,导航处理器需要卫星空间段的位置和伪距不等处理器的接收器。

指定仿真参数

加载包含真实MAT-file地面车辆的位置和速度向纳蒂克旅行,马MathWorks的校园,Inc .)

指定启动、停止,样品时间的模拟。指定面具角,或最低仰角,GNSS接收器。

%负载地面实况轨迹。负载(“routeNatickMA.mat”,“纬度”,“朗”,“pos”,”或者“,“lla0”);recPos = pos;recVel =韦尔;%指定仿真时间。开始时间= datetime(8 2020年10,28日,0,0,“时区”,“美国/ New_York”);simulationSteps =大小(pos, 1);dt = 1;stopTime =开始时间+秒((simulationSteps-1) * dt);%指定面具角。maskAngle = 5;%度%将接收机位置从North-East-Down (NED)大地%的坐标。需要导航工具箱(TM)。receiverLLA = ned2lla (recPos lla0,“椭球体”);%设置RNG种子,以便可重复的结果。rng (“默认”);

可视化geoplot地面实况的轨迹。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

模拟卫星的位置

satelliteScenario对象允许您指定初始轨道参数,使用可视化satelliteScenarioViewer对象。下面的例子使用了satelliteScenario和MAT-file初始轨道参数来模拟GPS星座。或者,您可以使用gnssconstellation(导航工具箱)对象模拟卫星位置使用标称轨道参数,只有当前仿真时间需要计算卫星位置。

%创建场景。sc = satelliteScenario(开始时间、stopTime dt);负载(“initialOrbitalParameters.mat”,“semiMajorAxis”,“偏心”,“倾向”,“rightAscensionOfAscendingNode”,“argumentOfPeriapsis”,“trueAnomaly”,“prnStr”);%初始化卫星。卫星(sc、semiMajorAxis偏心、倾斜rightAscensionOfAscendingNode、argumentOfPeriapsis trueAnomaly,“名称”,prnStr);% Preallocate结果。numSats =元素个数(sc.Satellites);allSatPos = 0 (numSats 3 simulationSteps);allSatVel = 0 (numSats 3 simulationSteps);%保存在整个模拟卫星国。i = 1:元素个数(sc.Satellites) [oneSatPos oneSatVel] =州(sc.Satellites(我),“CoordinateFrame”,“ecef”);allSatPos(我::)=排列(oneSatPos [3 1 2]);allSatVel(我::)=排列(oneSatVel [3 1 2]);结束

计算伪距

使用卫星位置计算伪距和卫星可见性在整个模拟。面具角是用来确定可见的卫星接收器。伪距是卫星和GNSS接收机之间的距离。这个词伪距因为这个距离价值乘以计算使用当前的时差接收机时钟时间和时间戳卫星信号光的速度。

% Preallocate结果。allP = 0 (numSats simulationSteps);allPDot = 0 (numSats simulationSteps);allIsSatVisible = false (numSats simulationSteps);%使用skyplot可视化卫星视图。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)),“ElevationData”satEl (allIsSatVisible (:, idx)),“LabelData”,prnStr (allIsSatVisible (:, idx))) drawnowlimitrate结束

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

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

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

% Preallocate结果。lla = 0 (simulationSteps, 3);gnssVel = 0 (simulationSteps, 3);hdop = 0 (simulationSteps, 1);vdop = 0 (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

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

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表地面实况,估计。

情节位置的绝对误差估计。错误是由一个移动平滑值使情节更具可读性。x轴和y轴的误差更小,因为有卫星接收机的两侧。z轴的误差比较大,因为只有卫星接收器,不低于它。误差的变化随着时间的推移,随着接收机和卫星进出的观点。

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

图包含一个坐标轴对象。坐标轴对象与标题位置(NED)误差包含3线类型的对象。这些对象代表x, y, z。

另请参阅

对象

功能

相关的例子

更多关于