1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-12-12 11:38:06 +00:00

feat: add config parameters for VDLL and VPLL

This commit is contained in:
pedromiguelcp
2025-08-05 16:44:33 +01:00
committed by Carles Fernandez
parent 85debfea6d
commit 629656c9d3
8 changed files with 16 additions and 10 deletions

View File

@@ -239,7 +239,8 @@ PVT.kf_system_ecef_pos_sd_m=0.001
;# VECTOR TRACKING CONFIG
PVT.enable_pvt_vtl=true ; enable/disable VTL
PVT.enable_pvt_output_vtl=true ; enable/disable receiver to use VTL solution
PVT.enable_pvt_closure_vtl=true ; enable/disable VTL feedback to tracking loops
PVT.enable_VDLL_vtl=true ; enable/disable vectorized DLL
PVT.enable_VPLL_vtl=false ; enable/disable vectorized PLL
PVT.vtl_kinematic=false ; enable/disable kinematic model
PVT.vtl_init_pos_ecef_sd_m=10.0
PVT.vtl_init_vel_ecef_sd_ms=5.0

View File

@@ -101,7 +101,8 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
const int gal_E6_count = configuration->property("Channels_E6.count", 0);
pvt_output_parameters.enable_pvt_vtl = configuration->property(role + ".enable_pvt_vtl", false);
pvt_output_parameters.enable_pvt_output_vtl = configuration->property(role + ".enable_pvt_output_vtl", false);
pvt_output_parameters.enable_pvt_closure_vtl = configuration->property(role + ".enable_pvt_closure_vtl", false);
pvt_output_parameters.enable_VDLL_vtl = configuration->property(role + ".enable_VDLL_vtl", false);
pvt_output_parameters.enable_VPLL_vtl = configuration->property(role + ".enable_VPLL_vtl", false);
pvt_output_parameters.vtl_kinematic = configuration->property(role + ".vtl_kinematic", false);
pvt_output_parameters.vtl_dump = configuration->property(role + ".vtl_dump", false);
pvt_output_parameters.vtl_dump_filename = configuration->property(role + ".vtl_dump_filename", default_vtl_dump_filename);

View File

@@ -25,7 +25,6 @@ set(PVT_LIB_SOURCES
geohash.cc
pvt_kf.cc
signal_enabled_flags.cc
receiver_type.cc
vtl_data.cc
vtl_core.cc
)

View File

@@ -110,7 +110,8 @@ public:
// PVT VTL parameters
bool enable_pvt_vtl = false;
bool enable_pvt_output_vtl = false;
bool enable_pvt_closure_vtl = false;
bool enable_VDLL_vtl = false;
bool enable_VPLL_vtl = false;
bool vtl_kinematic = false;
bool vtl_dump = false;
std::string vtl_dump_filename;

View File

@@ -1694,7 +1694,8 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
// needs at least one vtl epoch to have feedback
if ((vtl_epoch >= 20) && (!vtl_data->new_ch(ch_id))) // close loop after 20 epochs
{
vtl_data->loop_closure(ch_id) = d_conf.enable_pvt_closure_vtl ? 1 : 0;
vtl_data->enable_VDLL(ch_id) = d_conf.enable_VDLL_vtl ? 1 : 0;
vtl_data->enable_VPLL(ch_id) = d_conf.enable_VPLL_vtl ? 1 : 0;
}
// in dual-frequency get channel info from both frequencies

View File

@@ -445,11 +445,11 @@ void Vtl_Core::send_vtl_feedback(const Vtl_Data &rtk_data)
trk_cmd.prn_id = rtk_data.sv_id(aidx(i));
trk_cmd.ch_sample_counter = rtk_data.ch_sample_counter(aidx(i));
// PLL
trk_cmd.enable_pll_vtl_feedack = false;
trk_cmd.enable_pll_vtl_feedack = rtk_data.enable_VPLL(aidx(i));
trk_cmd.pll_vtl_freq_hz = -ekf_updt_comp_Z(aidx(i) + N_ch) / carrier_lambda; // pseudorange rate
trk_cmd.carrier_freq_rate_hz_s = 0; // pseudorange acceleration
// DLL
trk_cmd.enable_dll_vtl_feedack = rtk_data.loop_closure(aidx(i)); // VDLL only
trk_cmd.enable_dll_vtl_feedack = rtk_data.enable_VDLL(aidx(i)); // VDLL
trk_cmd.dll_vtl_freq_hz = code_freq - ekf_updt_comp_Z(aidx(i) + N_ch) * range_factor; // pseudorange rate
trk_cmd_outs.push_back(trk_cmd);

View File

@@ -52,7 +52,8 @@ void Vtl_Data::init_storage(int N_sv)
new_ch = arma::vec(N_sv);
old_ch = arma::vec(N_sv);
loop_closure = arma::vec(N_sv);
enable_VDLL = arma::vec(N_sv);
enable_VPLL = arma::vec(N_sv);
rx_time = 0.0;
dt_s = 0.0;
@@ -63,5 +64,6 @@ void Vtl_Data::clear_storage()
active_ch.zeros();
new_ch.zeros();
old_ch.zeros();
loop_closure.zeros();
enable_VDLL.zeros();
enable_VPLL.zeros();
}

View File

@@ -74,7 +74,8 @@ public:
u_int8_t active_N_gps_ch; // active gps channels
u_int8_t active_N_gal_ch; // active gps channels
arma::colvec loop_closure; // vtl loop closure
arma::colvec enable_VDLL; // vtl VDLL closure
arma::colvec enable_VPLL; // vtl VDLL closure
double rx_time;
double dt_s;