主要内容

GNSS仿真概述

全球卫星导航系统(GNSS)模拟生成接收器位置估计。这些接收器位置估计来自GPS和GNSS传感器模型gpsSensor而且gnssSensor对象。监控岗位估算的状态gnssSensor利用稀释精度输出和比较可用卫星数量。

仿真参数

指定在GNSS模拟中使用的参数:

  • GNSS接收机的采样率

  • 本地导航参考系

  • 以纬度、经度和高度(LLA)坐标表示的地球位置

  • 要模拟的样本数量

Fs = 1;refFrame =“内德”;Lla0 = [42.2825 -71.343 53.0352];N = 100;

为固定传感器创建一个轨迹。

pos = 0 (N, 3);vel = 0 (N, 3);time = (0:N-1) ./ Fs;

传感器模型创建

创建GNSS模拟对象,gpsSensor而且gnssSensor使用相同的初始参数。

gps = gpsSensor(“SampleRate”Fs,“ReferenceLocation”lla0,“ReferenceFrame”, refFrame);gnss = gnssSensor(“SampleRate”Fs,“ReferenceLocation”lla0,“ReferenceFrame”, refFrame);

模拟使用gpsSensor

使用GPS传感器从固定接收器生成输出。在LLA坐标中可视化位置和每个方向的速度。

%生成输出。[llaGPS, velGPS] = gps(pos, vel);形象化位置。图subplot(3,1,1) plot(time, llaGPS(:,1)) title(“纬度”) ylabel (“度”)包含(“年代”) subplot(3, 1, 2) plot(time, llaGPS(:,2))“经”) ylabel (“度”)包含(“年代”)子情节(3,1,3)情节(时间,llaGPS(:,3))“高度”) ylabel (“米”)包含(“年代”)

图中包含3个轴对象。标题为Latitude的Axes对象1包含一个类型为line的对象。标题为Longitude的Axes对象2包含一个类型为line的对象。标题为Altitude的Axes对象3包含一个类型为line的对象。

可视化速度。图(时间,velGPS)“速度”)传说(“X”“Y”“Z”) ylabel (“米/秒”)包含(“年代”)

图中包含一个axes对象。标题为Velocity的axis对象包含3个类型为line的对象。这些对象代表X, Y, Z。

模拟使用gnssSensor

使用GNSS传感器从固定接收器生成输出。可视化的位置和速度,并注意在模拟的差异。

%生成输出。[llaGNSS, velGNSS] = gnss(pos, vel);形象化位置。figure subplot(3,1,1) plot(time, llaGNSS(:,1)) title(“纬度”) ylabel (“度”)包含(“年代”) subplot(3, 1, 2) plot(time, llaGNSS(:,2))“经”) ylabel (“度”)包含(“年代”)子情节(3,1,3)情节(time, llaGNSS(:,3))标题(“高度”) ylabel (“米”)包含(“年代”)

图中包含3个轴对象。标题为Latitude的Axes对象1包含一个类型为line的对象。标题为Longitude的Axes对象2包含一个类型为line的对象。标题为Altitude的Axes对象3包含一个类型为line的对象。

可视化速度。图(时间,velGNSS)“速度”)传说(“X”“Y”“Z”) ylabel (“米/秒”)包含(“年代”)

图中包含一个axes对象。标题为Velocity的axis对象包含3个类型为line的对象。这些对象代表X, Y, Z。

精度稀释

gnssSensor对象具有更高的保真度模拟相比gpsSensor.例如,gnssSensor对象使用模拟卫星位置来估计接收器位置。这意味着水平精度稀释(HDOP)和垂直精度稀释(VDOP)可以与位置估计一起报告。这些值表明基于卫星几何形状的位置估计有多精确。数值越小表示估计越精确。

设置RNG种子以复制结果。rng (“默认”)指定模拟的开始时间。initTime = datetime(2020, 4,20,18,10,0,“时区”“美国/ New_York”);创建GNSS接收器模型。gnss = gnssSensor(“SampleRate”Fs,“ReferenceLocation”lla0,“ReferenceFrame”refFrame,“InitialTime”, initTime);%获取接收方状态。[~, ~, status] = gnss(pos, vel);disp(状态(1))
卫星方位:[7x1 double]卫星仰角:[7x1 double] HDOP: 1.1290 VDOP: 1.9035

在整个模拟过程中查看HDOP。HDOP下降了。这意味着卫星的几何形状发生了变化。

hops = vertcat(status.HDOP);图(time, vertcat(status.HDOP))“HDOP”) ylabel (“米”)包含(“年代”)

图中包含一个axes对象。标题为HDOP的axes对象包含一个类型为line的对象。

验证卫星几何形状已经改变。找到HDOP下降的索引,并查看它是否对应于视图中的卫星数量的变化。的numSats变量从7增加到8。

中更改的期望样本索引可见卫星的%数量。[~, satChangeIdx] = max(abs(diff(hops)));想像卫星的几何形状之前HDOP变化百分比。satAz = status(satChangeIdx).卫星方位角;卫星= status(satChangeIdx).卫星高度;numSats = numel(satAz);skyplot (satAz satEl);标题(sprintf ('卫星视图:%d\nHDOP: %.4f'numSats hdops (satChangeIdx)))

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

可视化卫星几何后HDOP变化百分比。satAz = status(satChangeIdx+1).卫星方位角;卫星= status(satChangeIdx+1).卫星高度;numSats = numel(satAz);skyplot (satAz satEl);标题(sprintf ('卫星视图:%d\nHDOP: %.4f'numSats hdops (satChangeIdx + 1)))

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

当使用卡尔曼滤波器将GNSS接收器位置估计与其他传感器测量相结合时,HDOP和VDOP值可以作为测量协方差矩阵的对角元素。

将HDOP和VDOP转换为测量协方差矩阵。hdop = status(1).HDOP;vdop = status(1).VDOP;measCov = diag([hdop.]^ 2/2, hdop。^ 2/2, vdop。^ 2]);disp (measCov)
0.6373 0 0 0 0.6373 0 0 3.6233
Baidu
map