介绍
本系列文章介绍的是本人从卫星接收机的中频数据到组合导航过程。
硬件部分
经过多次迭代,硬件部分基本确定下来😖,大致的组成如下图:
其中主要包含XC7Z020(处理器+FPGA)核心板、3个单轴光纤陀螺、3个单轴石英加速度计、4个3轴陀螺和3轴加速度MEMS IMU、大气压传感器、OEM718、千M以太网。该系统还是比较全的,包含了大部分民用惯导的硬件。
中频数据采集和处理
射频参考时钟输入为10M,默认输出的是60M采样率,按照60M采样 4bit I/Q采样,采集出来的数据暂时跟踪不上😖,退而求其次使用26M 2bit I/Q采样。基本设置如下表:
本振 | 采样率 | 滤波类型 | 滤波带宽 | 采样类型 |
---|---|---|---|---|
1566.5MHz | 26MHz | 低通滤波 | 20MHz | 2bit I/Q |
中心频率如下:
频率类型 | 中频(MHz) |
---|---|
GPS L1 | 1575.42 - 1566.5 = 8.92 |
BD B1I | 1561.098 - 1566.5 = -5.402 |
由于采样率为26MHz,所以一个通道无法采集GLONASS L1信号,但是可以采集出GPS L1和BD B1I信号。
GNSS-SDRLIB处理的配置,配置如下图:
正常运行后可以看到能捕获6颗GPS卫星,如下图所示:
等待处理完,test/output目录会生成.obs和.nav文件,使用RTKLIB对其进行处理,结果如下:
可以看到定位结果在5m左右,如果不看绝对精度的话,是满足单点定位精度的。
分离出单GPS L1中频信号
使用matlab脚本对中频信号进行预处理,中频信号变成零中频信号的基带信号,代码如下
fclose('all');
clear
%% 读取数据
fp = fopen('E:\Data20230620-1566.5M-26M-2bit-IQ.dat','rb');
fp1 = fopen('E:\Data20230620-26M-zero-gps.bin','wb');
%% 初始化低通滤波参数
Fs = 26; % Sampling Frequency
N = 44; % Order
Fc = 1.5; % Cutoff Frequency
flag = 'scale'; % Sampling Flag
% Create the window vector for the design algorithm.
win = hamming(N+1);
% Calculate the coefficients using the FIR1 function.
h = fir1(N, Fc/(Fs/2), 'low', win, flag);
%%
wrbuf = int8(1:(26000*2));
phi=8.92/26*2*pi;
zf_state=0;
while 1
%% 读取1ms数据
z = fread(fp,26000000 * 0.001*2,'int8');
[n m]= size(z);
if (n == 26000000 * 0.001*2)
z=z;
else
break;
end
read_real=zeros(n,1);
read_imag=zeros(n,1);
for k=1:n/2
read_imag(k) = z(2*k-1);
read_real(k) = z(2*k);
end
for i=1:26000
% 正常的下变频 复数乘是加,这个方式减频率,见《GPS原理与接收机设计》P258
II(i) = read_real(i) * cos(phi) + read_imag(i) * sin(phi);
QQ(i) = read_imag(i) * cos(phi) - read_real(i) * sin(phi);
phi = phi+8.92/26*2*pi;
if phi>2*pi
phi = phi - 2*pi;
end
end
if zf_state==0
[x_I zf_I] = filter(h,1,II);
[x_Q zf_Q] = filter(h,1,QQ);
zf_state=1;
else
[x_I zf_I] = filter(h,1,II,zf_I);
[x_Q zf_Q] = filter(h,1,QQ,zf_Q);
end
%%
for i=1:26000
wrbuf(i*2-1) = round(x_I(i)*55);
wrbuf(i*2) = round(x_Q(i)*55);
end
fwrite(fp1,wrbuf,'int8');
end
fclose('all');
分离出单BD B1I信号
分离出BD B1I信号和分离GPS L1信号一样。
GNSS-SDRLIB存在的问题
1、在对BD B1I信号处理时,能捕获跟踪卫星,经常闪退,暂时不知道原因。
数据下载地址
链接:https://pan.baidu.com/s/1TCSutasva74fNYowr8Sw2g
提取码:xqzg