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 (“米”)包含(“年代”)
可视化速度。图(时间,velGPS)“速度”)传说(“X”,“Y”,“Z”) ylabel (“米/秒”)包含(“年代”)
模拟使用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 (“米”)包含(“年代”)
可视化速度。图(时间,velGNSS)“速度”)传说(“X”,“Y”,“Z”) ylabel (“米/秒”)包含(“年代”)
精度稀释
的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 (“米”)包含(“年代”)
验证卫星几何形状已经改变。找到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)))
可视化卫星几何后HDOP变化百分比。satAz = status(satChangeIdx+1).卫星方位角;卫星= status(satChangeIdx+1).卫星高度;numSats = numel(satAz);skyplot (satAz satEl);标题(sprintf ('卫星视图:%d\nHDOP: %.4f',…numSats hdops (satChangeIdx + 1)))
当使用卡尔曼滤波器将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