From 2d4c5b4d7bc4830fe21f2b73ea76ad925c5321d7 Mon Sep 17 00:00:00 2001 From: "M.A. Gomez" Date: Tue, 14 Mar 2023 15:29:18 +0100 Subject: [PATCH] fix: vtl_engine bug --- src/algorithms/PVT/libs/vtl_engine.cc | 131 ++++++++++++-------------- src/algorithms/PVT/libs/vtl_engine.h | 11 ++- 2 files changed, 64 insertions(+), 78 deletions(-) diff --git a/src/algorithms/PVT/libs/vtl_engine.cc b/src/algorithms/PVT/libs/vtl_engine.cc index 46aeb28b2..66d20189d 100644 --- a/src/algorithms/PVT/libs/vtl_engine.cc +++ b/src/algorithms/PVT/libs/vtl_engine.cc @@ -25,8 +25,11 @@ Vtl_Engine::Vtl_Engine() counter = 0; refSampleCounter = 0; n_of_states = 11; + delta_t_cmd = 0; + kf_P_x = arma::eye(n_of_states, n_of_states) * 1.0; //TODO: use a real value.; kf_x = arma::zeros(n_of_states, 1); + } Vtl_Engine::~Vtl_Engine() @@ -38,14 +41,15 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data) //TODO: Implement main VTL loop here using arma::as_scalar; - if (refSampleCounter = 0) + if (refSampleCounter == 0) { refSampleCounter = new_data.sample_counter; } double delta_t_vtl = (new_data.sample_counter - refSampleCounter) / 5000000.0; refSampleCounter = new_data.sample_counter; - static double delta_t_cmd = 0; + bool flag_cmd = false; + bool flag_time_cmd = false; delta_t_cmd = delta_t_cmd + delta_t_vtl; // update timer for vtl trk command if (delta_t_cmd >= 0.3) { @@ -63,7 +67,7 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data) kf_Q = arma::eye(n_of_states, n_of_states); kf_F = arma::eye(n_of_states, n_of_states); - bool test = kf_F_fill(kf_F, kf_dt); + kf_F_fill(kf_F, kf_dt); //kf_H = arma::zeros(3 * new_data.sat_number, n_of_states); kf_y = arma::zeros(3 * new_data.sat_number, 1); @@ -74,6 +78,10 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data) ; // ################## Kalman Tracking ###################################### counter++; //uint64_t + + if (counter>2500){ + flag_time_cmd = true; + } //new_data.kf_state.print("new_data kf initial"); uint32_t closure_point = 3; @@ -102,7 +110,7 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data) double acc_x = 0; double acc_y = 0; double acc_z = 0; - test = model3DoF(acc_x, acc_y, acc_z, kf_x, kf_dt, counter); + // model3DoF(acc_x, acc_y, acc_z, kf_x, kf_dt, counter); kf_x(6) = acc_x; kf_x(7) = acc_y; kf_x(8) = acc_z; @@ -161,7 +169,7 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data) a_y = arma::zeros(new_data.sat_number, 1); a_z = arma::zeros(new_data.sat_number, 1); // cout<<"llegado aqui tambien"<5){ - // // dump_vtl_file << "pr_m" - // // << "," << kf_yerr(0)<< "," << kf_yerr(1)<< "," << kf_yerr(2) - // // << "," << kf_yerr(3) << "," << kf_yerr(4)<< "," << kf_yerr(5)< 6) { t_disparo = t_disparo + dt; - std::cout << "u : " << u << endl; + // std::cout << "u : " << u << endl; double diam_cohete = 120.0e-3; // 120 mm double mass_rocket = 50.0; //50Kg @@ -438,7 +425,7 @@ bool Vtl_Engine::model3DoF(double &acc_x, double &acc_y, double &acc_z, arma::ma // acc_vec.print("acc_vec"); // % return - cout << "modelo 3Dof actuando,t:" << t_disparo << endl; + // cout << "modelo 3Dof actuando,t:" << t_disparo << endl; acc_x = acc_vec(0); acc_y = acc_vec(1); acc_z = acc_vec(2); @@ -459,8 +446,6 @@ bool Vtl_Engine::model3DoF(double &acc_x, double &acc_y, double &acc_z, arma::ma acc_y = 0; acc_z = 0; } - - return -1; } double Vtl_Engine::EmpujeLkTable(double t_disparo) diff --git a/src/algorithms/PVT/libs/vtl_engine.h b/src/algorithms/PVT/libs/vtl_engine.h index 5317114a1..a7b081f3f 100644 --- a/src/algorithms/PVT/libs/vtl_engine.h +++ b/src/algorithms/PVT/libs/vtl_engine.h @@ -100,12 +100,13 @@ private: uint32_t counter; int n_of_states; uint64_t refSampleCounter; + double delta_t_cmd = 0; - bool kf_H_fill(arma::mat &kf_H, int sat_number, arma::colvec ax, arma::colvec ay, arma::colvec az, double kf_dt); // Observation Matrix constructor - bool kf_F_fill(arma::mat &kf_F, double kf_dt); // System Matrix constructor - bool obsv_calc(arma::mat &rho_pri, arma::mat &rhoDot_pri, arma::colvec &ax, arma::colvec &ay, arma::colvec &az, int sat_number, arma::mat sat_p, arma::mat sat_v, arma::mat kf_x); // Observables calculation - bool kf_measurements(arma::mat &kf_yerr, int sat_number, arma::mat rho_pri, arma::mat rhoDot_pri, arma::mat rhoDot2_pri, arma::colvec pr_m, arma::colvec doppler_hz, arma::mat kf_x); - bool model3DoF(double &acc_x, double &acc_y, double &acc_z, arma::mat kf_x, double dt, int counter); + void kf_H_fill(arma::mat &kf_H, int sat_number, arma::colvec ax, arma::colvec ay, arma::colvec az, double kf_dt); // Observation Matrix constructor + void kf_F_fill(arma::mat &kf_F, double kf_dt); // System Matrix constructor + void obsv_calc(arma::mat &rho_pri, arma::mat &rhoDot_pri, arma::colvec &ax, arma::colvec &ay, arma::colvec &az, int sat_number, arma::mat sat_p, arma::mat sat_v, arma::mat kf_x); // Observables calculation + void kf_measurements(arma::mat &kf_yerr, int sat_number, arma::mat rho_pri, arma::mat rhoDot_pri, arma::mat rhoDot2_pri, arma::colvec pr_m, arma::colvec doppler_hz, arma::mat kf_x); + void model3DoF(double &acc_x, double &acc_y, double &acc_z, arma::mat kf_x, double dt, int counter); double EmpujeLkTable(double t_disparo); };