mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 12:40:35 +00:00
Improving interchannel bias observables test (duplicated satellites option)
This commit is contained in:
parent
0acfdfc8a6
commit
e6e85798bd
@ -239,6 +239,7 @@ public:
|
|||||||
void check_results_duplicated_satellite(
|
void check_results_duplicated_satellite(
|
||||||
arma::mat& measured_sat1,
|
arma::mat& measured_sat1,
|
||||||
arma::mat& measured_sat2,
|
arma::mat& measured_sat2,
|
||||||
|
int ch_id,
|
||||||
std::string data_title);
|
std::string data_title);
|
||||||
|
|
||||||
HybridObservablesTest()
|
HybridObservablesTest()
|
||||||
@ -1006,13 +1007,40 @@ void HybridObservablesTest::check_results_carrier_doppler(
|
|||||||
void HybridObservablesTest::check_results_duplicated_satellite(
|
void HybridObservablesTest::check_results_duplicated_satellite(
|
||||||
arma::mat& measured_sat1,
|
arma::mat& measured_sat1,
|
||||||
arma::mat& measured_sat2,
|
arma::mat& measured_sat2,
|
||||||
|
int ch_id,
|
||||||
std::string data_title)
|
std::string data_title)
|
||||||
{
|
{
|
||||||
//1. True value interpolation to match the measurement times
|
//1. True value interpolation to match the measurement times
|
||||||
|
|
||||||
double t0 = measured_sat1(0, 0);
|
//define the common measured time interval
|
||||||
|
double t0_sat1 = measured_sat1(0, 0);
|
||||||
int size1 = measured_sat1.col(0).n_rows;
|
int size1 = measured_sat1.col(0).n_rows;
|
||||||
double t1 = measured_sat1(size1 - 1, 0);
|
double t1_sat1 = measured_sat1(size1 - 1, 0);
|
||||||
|
|
||||||
|
double t0_sat2 = measured_sat2(0, 0);
|
||||||
|
int size2 = measured_sat2.col(0).n_rows;
|
||||||
|
double t1_sat2 = measured_sat2(size2 - 1, 0);
|
||||||
|
|
||||||
|
double t0;
|
||||||
|
double t1;
|
||||||
|
if (t0_sat1 > t0_sat2)
|
||||||
|
{
|
||||||
|
t0 = t0_sat1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t0 = t0_sat2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t1_sat1 > t1_sat2)
|
||||||
|
{
|
||||||
|
t1 = t1_sat2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t1 = t1_sat1;
|
||||||
|
}
|
||||||
|
|
||||||
arma::vec t = arma::linspace<arma::vec>(t0, t1, floor((t1 - t0) * 1e3));
|
arma::vec t = arma::linspace<arma::vec>(t0, t1, floor((t1 - t0) * 1e3));
|
||||||
//conversion between arma::vec and std:vector
|
//conversion between arma::vec and std:vector
|
||||||
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
||||||
@ -1048,6 +1076,15 @@ void HybridObservablesTest::check_results_duplicated_satellite(
|
|||||||
//compute error
|
//compute error
|
||||||
err_ch0_hz = meas_sat1_doppler_interp - meas_sat2_doppler_interp;
|
err_ch0_hz = meas_sat1_doppler_interp - meas_sat2_doppler_interp;
|
||||||
|
|
||||||
|
//save matlab file for further analysis
|
||||||
|
std::vector<double> tmp_vector_common_time_s(t.colptr(0),
|
||||||
|
t.colptr(0) + t.n_rows);
|
||||||
|
|
||||||
|
std::vector<double> tmp_vector_err_ch0_hz(err_ch0_hz.colptr(0),
|
||||||
|
err_ch0_hz.colptr(0) + err_ch0_hz.n_rows);
|
||||||
|
save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_ch0_hz, std::string("measured_doppler_error_ch_" + std::to_string(ch_id)));
|
||||||
|
|
||||||
|
//compute statistics
|
||||||
arma::vec err2_ch0 = arma::square(err_ch0_hz);
|
arma::vec err2_ch0 = arma::square(err_ch0_hz);
|
||||||
double rmse_ch0 = sqrt(arma::mean(err2_ch0));
|
double rmse_ch0 = sqrt(arma::mean(err2_ch0));
|
||||||
|
|
||||||
@ -1089,19 +1126,26 @@ void HybridObservablesTest::check_results_duplicated_satellite(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//check results against the test tolerance
|
//check results against the test tolerance
|
||||||
ASSERT_LT(error_mean_ch0, 5);
|
EXPECT_LT(error_mean_ch0, 5);
|
||||||
ASSERT_GT(error_mean_ch0, -5);
|
EXPECT_GT(error_mean_ch0, -5);
|
||||||
//assuming PLL BW=35
|
//assuming PLL BW=35
|
||||||
ASSERT_LT(error_var_ch0, 250);
|
EXPECT_LT(error_var_ch0, 250);
|
||||||
ASSERT_LT(max_error_ch0, 100);
|
EXPECT_LT(max_error_ch0, 100);
|
||||||
ASSERT_GT(min_error_ch0, -100);
|
EXPECT_GT(min_error_ch0, -100);
|
||||||
ASSERT_LT(rmse_ch0, 30);
|
EXPECT_LT(rmse_ch0, 30);
|
||||||
|
|
||||||
//Carrier Phase error
|
//Carrier Phase error
|
||||||
//2. RMSE
|
//2. RMSE
|
||||||
arma::vec err_carrier_phase;
|
arma::vec err_carrier_phase;
|
||||||
|
|
||||||
err_carrier_phase = delta_measured_carrier_phase_cycles;
|
err_carrier_phase = delta_measured_carrier_phase_cycles;
|
||||||
|
|
||||||
|
//save matlab file for further analysis
|
||||||
|
std::vector<double> tmp_vector_err_carrier_phase(err_carrier_phase.colptr(0),
|
||||||
|
err_carrier_phase.colptr(0) + err_carrier_phase.n_rows);
|
||||||
|
save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_carrier_phase, std::string("measured_carrier_phase_error_ch_" + std::to_string(ch_id)));
|
||||||
|
|
||||||
|
|
||||||
arma::vec err2_carrier_phase = arma::square(err_carrier_phase);
|
arma::vec err2_carrier_phase = arma::square(err_carrier_phase);
|
||||||
double rmse_carrier_phase = sqrt(arma::mean(err2_carrier_phase));
|
double rmse_carrier_phase = sqrt(arma::mean(err2_carrier_phase));
|
||||||
|
|
||||||
@ -1143,18 +1187,24 @@ void HybridObservablesTest::check_results_duplicated_satellite(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//check results against the test tolerance
|
//check results against the test tolerance
|
||||||
ASSERT_LT(rmse_carrier_phase, 0.25);
|
EXPECT_LT(rmse_carrier_phase, 0.25);
|
||||||
ASSERT_LT(error_mean_carrier_phase, 0.2);
|
EXPECT_LT(error_mean_carrier_phase, 0.2);
|
||||||
ASSERT_GT(error_mean_carrier_phase, -0.2);
|
EXPECT_GT(error_mean_carrier_phase, -0.2);
|
||||||
ASSERT_LT(error_var_carrier_phase, 0.5);
|
EXPECT_LT(error_var_carrier_phase, 0.5);
|
||||||
ASSERT_LT(max_error_carrier_phase, 0.5);
|
EXPECT_LT(max_error_carrier_phase, 0.5);
|
||||||
ASSERT_GT(min_error_carrier_phase, -0.5);
|
EXPECT_GT(min_error_carrier_phase, -0.5);
|
||||||
|
|
||||||
//Pseudorange error
|
//Pseudorange error
|
||||||
//2. RMSE
|
//2. RMSE
|
||||||
arma::vec err_pseudorange;
|
arma::vec err_pseudorange;
|
||||||
|
|
||||||
err_pseudorange = delta_measured_dist_m;
|
err_pseudorange = delta_measured_dist_m;
|
||||||
|
|
||||||
|
//save matlab file for further analysis
|
||||||
|
std::vector<double> tmp_vector_err_pseudorange(err_pseudorange.colptr(0),
|
||||||
|
err_pseudorange.colptr(0) + err_pseudorange.n_rows);
|
||||||
|
save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_pseudorange, std::string("measured_pr_error_ch_" + std::to_string(ch_id)));
|
||||||
|
|
||||||
arma::vec err2_pseudorange = arma::square(err_pseudorange);
|
arma::vec err2_pseudorange = arma::square(err_pseudorange);
|
||||||
double rmse_pseudorange = sqrt(arma::mean(err2_pseudorange));
|
double rmse_pseudorange = sqrt(arma::mean(err2_pseudorange));
|
||||||
|
|
||||||
@ -1196,12 +1246,12 @@ void HybridObservablesTest::check_results_duplicated_satellite(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//check results against the test tolerance
|
//check results against the test tolerance
|
||||||
ASSERT_LT(rmse_pseudorange, 3.0);
|
EXPECT_LT(rmse_pseudorange, 3.0);
|
||||||
ASSERT_LT(error_mean_pseudorange, 1.0);
|
EXPECT_LT(error_mean_pseudorange, 1.0);
|
||||||
ASSERT_GT(error_mean_pseudorange, -1.0);
|
EXPECT_GT(error_mean_pseudorange, -1.0);
|
||||||
ASSERT_LT(error_var_pseudorange, 10.0);
|
EXPECT_LT(error_var_pseudorange, 10.0);
|
||||||
ASSERT_LT(max_error_pseudorange, 10.0);
|
EXPECT_LT(max_error_pseudorange, 10.0);
|
||||||
ASSERT_GT(min_error_pseudorange, -10.0);
|
EXPECT_GT(min_error_pseudorange, -10.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HybridObservablesTest::save_mat_xy(std::vector<double>& x, std::vector<double>& y, std::string filename)
|
bool HybridObservablesTest::save_mat_xy(std::vector<double>& x, std::vector<double>& y, std::string filename)
|
||||||
@ -1827,6 +1877,7 @@ TEST_F(HybridObservablesTest, ValidationOfResults)
|
|||||||
check_results_duplicated_satellite(
|
check_results_duplicated_satellite(
|
||||||
measured_obs_vec.at(sat1_ch_id),
|
measured_obs_vec.at(sat1_ch_id),
|
||||||
measured_obs_vec.at(sat2_ch_id),
|
measured_obs_vec.at(sat2_ch_id),
|
||||||
|
sat1_ch_id,
|
||||||
"Duplicated sat [CH " + std::to_string(sat1_ch_id) + "," + std::to_string(sat2_ch_id) + "] PRNs " + std::to_string(gnss_synchro_vec.at(sat1_ch_id).PRN) + "," + std::to_string(gnss_synchro_vec.at(sat2_ch_id).PRN) + " ");
|
"Duplicated sat [CH " + std::to_string(sat1_ch_id) + "," + std::to_string(sat2_ch_id) + "] PRNs " + std::to_string(gnss_synchro_vec.at(sat1_ch_id).PRN) + "," + std::to_string(gnss_synchro_vec.at(sat2_ch_id).PRN) + " ");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user