mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-06-26 07:02:59 +00:00
beidou b1i: checking performance with new data set
This commit is contained in:
parent
e22f8e57c1
commit
c20cd33038
111
conf/gnss-sdr_BDS_B1I_byte.conf
Normal file
111
conf/gnss-sdr_BDS_B1I_byte.conf
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
; This is a GNSS-SDR configuration file
|
||||||
|
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||||
|
|
||||||
|
; You can define your own receiver and invoke it by doing
|
||||||
|
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||||
|
;
|
||||||
|
|
||||||
|
[GNSS-SDR]
|
||||||
|
|
||||||
|
;######### GLOBAL OPTIONS ##################
|
||||||
|
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second].
|
||||||
|
GNSS-SDR.internal_fs_sps=99375000
|
||||||
|
|
||||||
|
;######### CONTROL_THREAD CONFIG ############
|
||||||
|
ControlThread.wait_for_flowgraph=false
|
||||||
|
|
||||||
|
;######### SIGNAL_SOURCE CONFIG ############
|
||||||
|
SignalSource.implementation=File_Signal_Source
|
||||||
|
SignalSource.filename=/media/dmiralles/Seagate Backup Plus Drive/GNSS Data/Beidou_B1_IF_signal.bin
|
||||||
|
SignalSource.item_type=byte
|
||||||
|
SignalSource.sampling_frequency=99375000
|
||||||
|
SignalSource.samples=0
|
||||||
|
SignalSource.repeat=false
|
||||||
|
SignalSource.dump=false
|
||||||
|
SignalSource.enable_throttle_control=false
|
||||||
|
|
||||||
|
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||||
|
SignalConditioner.implementation=Signal_Conditioner
|
||||||
|
DataTypeAdapter.implementation=Byte_To_Short
|
||||||
|
InputFilter.implementation=Freq_Xlating_Fir_Filter
|
||||||
|
InputFilter.input_item_type=short
|
||||||
|
InputFilter.output_item_type=gr_complex
|
||||||
|
InputFilter.taps_item_type=float
|
||||||
|
InputFilter.number_of_taps=5
|
||||||
|
InputFilter.number_of_bands=2
|
||||||
|
InputFilter.band1_begin=0.0
|
||||||
|
InputFilter.band1_end=0.70
|
||||||
|
InputFilter.band2_begin=0.80
|
||||||
|
InputFilter.band2_end=1.0
|
||||||
|
InputFilter.ampl1_begin=1.0
|
||||||
|
InputFilter.ampl1_end=1.0
|
||||||
|
InputFilter.ampl2_begin=0.0
|
||||||
|
InputFilter.ampl2_end=0.0
|
||||||
|
InputFilter.band1_error=1.0
|
||||||
|
InputFilter.band2_error=1.0
|
||||||
|
InputFilter.filter_type=bandpass
|
||||||
|
InputFilter.grid_density=16
|
||||||
|
InputFilter.sampling_frequency=99375000
|
||||||
|
InputFilter.IF=28902000
|
||||||
|
Resampler.implementation=Pass_Through
|
||||||
|
Resampler.sample_freq_in=99375000
|
||||||
|
Resampler.sample_freq_out=99375000
|
||||||
|
Resampler.item_type=gr_complex
|
||||||
|
|
||||||
|
|
||||||
|
;######### CHANNELS GLOBAL CONFIG ############
|
||||||
|
Channels_B1.count=8
|
||||||
|
Channels.in_acquisition=1
|
||||||
|
Channel.signal=B1
|
||||||
|
|
||||||
|
|
||||||
|
;######### ACQUISITION GLOBAL CONFIG ############
|
||||||
|
Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition
|
||||||
|
Acquisition_B1.item_type=gr_complex
|
||||||
|
Acquisition_B1.coherent_integration_time_ms=1
|
||||||
|
Acquisition_B1.threshold=0.00005
|
||||||
|
;Acquisition_B1.pfa=0.0000001;
|
||||||
|
Acquisition_B1.doppler_max=10000
|
||||||
|
Acquisition_B1.doppler_step=100
|
||||||
|
Acquisition_B1.dump=true
|
||||||
|
Acquisition_B1.dump_filename=./bds_acq
|
||||||
|
Acquisition_B1.blocking=false;
|
||||||
|
Acquisition_B1.use_CFAR_algorithm=true;
|
||||||
|
Acquisition_B1.bit_transition_flag = false;
|
||||||
|
|
||||||
|
|
||||||
|
;######### TRACKING GLOBAL CONFIG ############
|
||||||
|
Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking
|
||||||
|
Tracking_B1.item_type=gr_complex
|
||||||
|
Tracking_B1.pll_bw_hz=30.0;
|
||||||
|
Tracking_B1.dll_bw_hz=3.0;
|
||||||
|
Tracking_B1.dump=true;
|
||||||
|
Tracking_B1.dump_filename=./epl_tracking_ch_
|
||||||
|
|
||||||
|
|
||||||
|
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||||
|
TelemetryDecoder_B1.implementation=BEIDOU_B1I_Telemetry_Decoder
|
||||||
|
TelemetryDecoder_B1.dump=false
|
||||||
|
|
||||||
|
|
||||||
|
;######### OBSERVABLES CONFIG ############
|
||||||
|
Observables.implementation=Hybrid_Observables
|
||||||
|
Observables.dump=true
|
||||||
|
Observables.dump_filename=./observables.dat
|
||||||
|
|
||||||
|
|
||||||
|
;######### PVT CONFIG ############
|
||||||
|
PVT.implementation=RTKLIB_PVT
|
||||||
|
PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||||
|
PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||||
|
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||||
|
PVT.output_rate_ms=100
|
||||||
|
PVT.display_rate_ms=500
|
||||||
|
PVT.dump_filename=./PVT
|
||||||
|
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
|
||||||
|
PVT.flag_nmea_tty_port=false;
|
||||||
|
PVT.nmea_dump_devname=/dev/pts/4
|
||||||
|
PVT.flag_rtcm_server=false
|
||||||
|
PVT.flag_rtcm_tty_port=false
|
||||||
|
PVT.rtcm_dump_devname=/dev/pts/1
|
||||||
|
PVT.dump=false
|
110
conf/gnss-sdr_GPS_L1_CA_byte.conf
Normal file
110
conf/gnss-sdr_GPS_L1_CA_byte.conf
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
; This is a GNSS-SDR configuration file
|
||||||
|
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||||
|
|
||||||
|
; You can define your own receiver and invoke it by doing
|
||||||
|
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||||
|
;
|
||||||
|
|
||||||
|
[GNSS-SDR]
|
||||||
|
|
||||||
|
;######### GLOBAL OPTIONS ##################
|
||||||
|
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second].
|
||||||
|
GNSS-SDR.internal_fs_sps=99375000
|
||||||
|
|
||||||
|
;######### CONTROL_THREAD CONFIG ############
|
||||||
|
ControlThread.wait_for_flowgraph=false
|
||||||
|
|
||||||
|
;######### SIGNAL_SOURCE CONFIG ############
|
||||||
|
SignalSource.implementation=File_Signal_Source
|
||||||
|
SignalSource.filename=/media/dmiralles/Seagate Backup Plus Drive/GNSS Data/Beidou_B1_IF_signal.bin
|
||||||
|
SignalSource.item_type=byte
|
||||||
|
SignalSource.sampling_frequency=99375000
|
||||||
|
SignalSource.samples=0
|
||||||
|
SignalSource.repeat=false
|
||||||
|
SignalSource.dump=false
|
||||||
|
SignalSource.enable_throttle_control=false
|
||||||
|
|
||||||
|
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||||
|
SignalConditioner.implementation=Signal_Conditioner
|
||||||
|
DataTypeAdapter.implementation=Byte_To_Short
|
||||||
|
InputFilter.implementation=Freq_Xlating_Fir_Filter
|
||||||
|
InputFilter.input_item_type=short
|
||||||
|
InputFilter.output_item_type=gr_complex
|
||||||
|
InputFilter.taps_item_type=float
|
||||||
|
InputFilter.number_of_taps=5
|
||||||
|
InputFilter.number_of_bands=2
|
||||||
|
InputFilter.band1_begin=0.0
|
||||||
|
InputFilter.band1_end=0.70
|
||||||
|
InputFilter.band2_begin=0.80
|
||||||
|
InputFilter.band2_end=1.0
|
||||||
|
InputFilter.ampl1_begin=1.0
|
||||||
|
InputFilter.ampl1_end=1.0
|
||||||
|
InputFilter.ampl2_begin=0.0
|
||||||
|
InputFilter.ampl2_end=0.0
|
||||||
|
InputFilter.band1_error=1.0
|
||||||
|
InputFilter.band2_error=1.0
|
||||||
|
InputFilter.filter_type=bandpass
|
||||||
|
InputFilter.grid_density=16
|
||||||
|
InputFilter.sampling_frequency=99375000
|
||||||
|
InputFilter.IF=14580000
|
||||||
|
Resampler.implementation=Direct_Resampler
|
||||||
|
Resampler.sample_freq_in=99375000
|
||||||
|
Resampler.sample_freq_out=99375000
|
||||||
|
Resampler.item_type=gr_complex
|
||||||
|
|
||||||
|
|
||||||
|
;######### CHANNELS GLOBAL CONFIG ############
|
||||||
|
Channels_1C.count=8
|
||||||
|
Channels.in_acquisition=1
|
||||||
|
Channel.signal=1C
|
||||||
|
|
||||||
|
|
||||||
|
;######### ACQUISITION GLOBAL CONFIG ############
|
||||||
|
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||||
|
Acquisition_1C.item_type=gr_complex
|
||||||
|
Acquisition_1C.coherent_integration_time_ms=1
|
||||||
|
Acquisition_1C.threshold=3.5
|
||||||
|
;Acquisition_1C.pfa=0.000001;
|
||||||
|
Acquisition_1C.doppler_max=14000
|
||||||
|
Acquisition_1C.doppler_step=100
|
||||||
|
Acquisition_1C.dump=true
|
||||||
|
Acquisition_1C.dump_filename=./gps_acq
|
||||||
|
Acquisition_1C.blocking=false;
|
||||||
|
Acquisition_1C.use_CFAR_algorithm=false
|
||||||
|
|
||||||
|
|
||||||
|
;######### TRACKING GLOBAL CONFIG ############
|
||||||
|
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||||
|
Tracking_1C.item_type=gr_complex
|
||||||
|
Tracking_1C.pll_bw_hz=30.0;
|
||||||
|
Tracking_1C.dll_bw_hz=3.0;
|
||||||
|
Tracking_1C.dump=true;
|
||||||
|
Tracking_1C.dump_filename=./epl_tracking_ch_
|
||||||
|
|
||||||
|
|
||||||
|
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||||
|
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||||
|
TelemetryDecoder_1C.dump=false
|
||||||
|
|
||||||
|
|
||||||
|
;######### OBSERVABLES CONFIG ############
|
||||||
|
Observables.implementation=Hybrid_Observables
|
||||||
|
Observables.dump=true
|
||||||
|
Observables.dump_filename=./observables.dat
|
||||||
|
|
||||||
|
|
||||||
|
;######### PVT CONFIG ############
|
||||||
|
PVT.implementation=RTKLIB_PVT
|
||||||
|
PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||||
|
PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||||
|
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||||
|
PVT.output_rate_ms=100
|
||||||
|
PVT.display_rate_ms=500
|
||||||
|
PVT.dump_filename=./PVT
|
||||||
|
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
|
||||||
|
PVT.flag_nmea_tty_port=false;
|
||||||
|
PVT.nmea_dump_devname=/dev/pts/4
|
||||||
|
PVT.flag_rtcm_server=false
|
||||||
|
PVT.flag_rtcm_tty_port=false
|
||||||
|
PVT.rtcm_dump_devname=/dev/pts/1
|
||||||
|
PVT.dump=false
|
@ -34,12 +34,12 @@ if ~exist('dll_pll_veml_read_tracking_dump.m', 'file')
|
|||||||
addpath('./libs')
|
addpath('./libs')
|
||||||
end
|
end
|
||||||
|
|
||||||
samplingFreq = 25000000; %[Hz]
|
samplingFreq = 99375000; %[Hz]
|
||||||
coherent_integration_time_ms = 1; %[ms]
|
coherent_integration_time_ms = 1; %[ms]
|
||||||
channels = 8; % Number of channels
|
channels = 8; % Number of channels
|
||||||
first_channel = 0; % Number of the first channel
|
first_channel = 0; % Number of the first channel
|
||||||
|
|
||||||
path = '/home/sergi/gnss/gnss-sdr/install/'; %% CHANGE THIS PATH
|
path = '/home/dmiralles/Documents/gnss-sdr/';%#'; %% CHANGE THIS PATH
|
||||||
|
|
||||||
for N=1:1:channels
|
for N=1:1:channels
|
||||||
tracking_log_path = [path 'epl_tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE track_ch_ BY YOUR dump_filename
|
tracking_log_path = [path 'epl_tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE track_ch_ BY YOUR dump_filename
|
||||||
|
@ -28,13 +28,13 @@
|
|||||||
|
|
||||||
%%%%%%%%% ?????? CONFIGURE !!! %%%%%%%%%%%%%
|
%%%%%%%%% ?????? CONFIGURE !!! %%%%%%%%%%%%%
|
||||||
|
|
||||||
path = '/archive/';
|
path = '/home/dmiralles/Documents/gnss-sdr/';
|
||||||
file = 'acq';
|
file = 'bds_acq';
|
||||||
|
|
||||||
sat = 7;
|
sat = 32;
|
||||||
|
|
||||||
channel = 0;
|
channel = 0;
|
||||||
execution = 1;
|
execution = 3;
|
||||||
% Signal:
|
% Signal:
|
||||||
% 1 GPS L1
|
% 1 GPS L1
|
||||||
% 2 GPS L2M
|
% 2 GPS L2M
|
||||||
@ -42,10 +42,11 @@ execution = 1;
|
|||||||
% 4 Gal. E1B
|
% 4 Gal. E1B
|
||||||
% 5 Gal. E5
|
% 5 Gal. E5
|
||||||
% 6 Glo. 1G
|
% 6 Glo. 1G
|
||||||
|
% 7 BDS B1
|
||||||
|
|
||||||
signal_type = 1;
|
signal_type = 7;
|
||||||
|
|
||||||
%%% True for light grid representation
|
%%% True for light acq_grid representation
|
||||||
lite_view = true;
|
lite_view = true;
|
||||||
|
|
||||||
%%% If lite_view, it sets the number of samples per chip in the graphical representation
|
%%% If lite_view, it sets the number of samples per chip in the graphical representation
|
||||||
@ -78,21 +79,25 @@ switch(signal_type)
|
|||||||
n_chips = 511;
|
n_chips = 511;
|
||||||
system = 'R';
|
system = 'R';
|
||||||
signal = '1G';
|
signal = '1G';
|
||||||
|
case 7
|
||||||
|
n_chips = 2046;
|
||||||
|
system = 'C';
|
||||||
|
signal = 'B1';
|
||||||
end
|
end
|
||||||
filename = [path file '_' system '_' signal '_ch_' num2str(channel) '_' num2str(execution) '_sat_' num2str(sat) '.mat'];
|
filename = [path file '_' system '_' signal '_ch_' num2str(channel) '_' num2str(execution) '_sat_' num2str(sat) '.mat'];
|
||||||
load(filename);
|
load(filename);
|
||||||
[n_fft n_dop_bins] = size(grid);
|
[n_fft n_dop_bins] = size(acq_grid);
|
||||||
[d_max f_max] = find(grid == max(max(grid)));
|
[d_max f_max] = find(acq_grid == max(max(acq_grid)));
|
||||||
freq = (0 : n_dop_bins - 1) * doppler_step - doppler_max;
|
freq = (0 : n_dop_bins - 1) * doppler_step - doppler_max;
|
||||||
delay = (0 : n_fft - 1) / n_fft * n_chips;
|
delay = (0 : n_fft - 1) / n_fft * n_chips;
|
||||||
figure(1)
|
figure(1)
|
||||||
if(lite_view == false)
|
if(lite_view == false)
|
||||||
surf(freq, delay, grid, 'FaceColor', 'interp', 'LineStyle', 'none')
|
surf(freq, delay, acq_grid, 'FaceColor', 'interp', 'LineStyle', 'none')
|
||||||
ylim([min(delay) max(delay)])
|
ylim([min(delay) max(delay)])
|
||||||
else
|
else
|
||||||
delay_interp = (0 : n_samples_per_chip * n_chips - 1) / n_samples_per_chip;
|
delay_interp = (0 : n_samples_per_chip * n_chips - 1) / n_samples_per_chip;
|
||||||
grid_interp = spline(delay, grid', delay_interp)';
|
acq_grid_interp = spline(delay, acq_grid', delay_interp)';
|
||||||
surf(freq, delay_interp, grid_interp, 'FaceColor', 'interp', 'LineStyle', 'none')
|
surf(freq, delay_interp, acq_grid_interp, 'FaceColor', 'interp', 'LineStyle', 'none')
|
||||||
ylim([min(delay_interp) max(delay_interp)])
|
ylim([min(delay_interp) max(delay_interp)])
|
||||||
end
|
end
|
||||||
xlabel('Doppler shift / Hz')
|
xlabel('Doppler shift / Hz')
|
||||||
@ -101,14 +106,14 @@ ylabel('Code delay / chips')
|
|||||||
zlabel('Test statistics')
|
zlabel('Test statistics')
|
||||||
figure(2)
|
figure(2)
|
||||||
subplot(2,1,1)
|
subplot(2,1,1)
|
||||||
plot(freq, grid(d_max, :))
|
plot(freq, acq_grid(d_max, :))
|
||||||
xlim([min(freq) max(freq)])
|
xlim([min(freq) max(freq)])
|
||||||
xlabel('Doppler shift / Hz')
|
xlabel('Doppler shift / Hz')
|
||||||
ylabel('Test statistics')
|
ylabel('Test statistics')
|
||||||
title(['Fixed code delay to ' num2str((d_max - 1) / n_fft * n_chips) ' chips'])
|
title(['Fixed code delay to ' num2str((d_max - 1) / n_fft * n_chips) ' chips'])
|
||||||
subplot(2,1,2)
|
subplot(2,1,2)
|
||||||
normalization = (d_samples_per_code^4) * input_power;
|
normalization = (d_samples_per_code^4) * input_power;
|
||||||
plot(delay, acq_grid(:, f_max)./normalization)
|
plot(delay, acq_acq_grid(:, f_max)./normalization)
|
||||||
xlim([min(delay) max(delay)])
|
xlim([min(delay) max(delay)])
|
||||||
xlabel('Code delay / chips')
|
xlabel('Code delay / chips')
|
||||||
ylabel('Test statistics')
|
ylabel('Test statistics')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user