diff --git a/test/gtest_simulation_problem_force_torque_inertial_dynamics.cpp b/test/gtest_simulation_problem_force_torque_inertial_dynamics.cpp index 88dd905ea4b9aa9ca198900a2ded81a2bf15d7e5..d9ba3204e9bad27d772dc74fbdda7a75ebc2f3fb 100644 --- a/test/gtest_simulation_problem_force_torque_inertial_dynamics.cpp +++ b/test/gtest_simulation_problem_force_torque_inertial_dynamics.cpp @@ -67,14 +67,15 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T Vector3d cdm_true; Vector3d inertia_true; double mass_true; - - double dt; + Vector<double, 12> data_fti; // Pose sensor SensorBasePtr SP; - Vector7d pose; + Vector7d data_pose; + + double dt; - // Reading csv data + // Reading csv data_fti std::vector<double> time_stamp; std::vector<Vector3d> position, vlin, vang, force, torque, a_meas; std::vector<Quaterniond> quaternion; @@ -97,11 +98,11 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T while (std::getline(data_simulation, line_data)) { - std::stringstream data(line_data); + std::stringstream data_str(line_data); // time stamp string string_time_stamp; - std::getline(data, string_time_stamp, delimiter); + std::getline(data_str, string_time_stamp, delimiter); time_stamp.push_back(std::stod(string_time_stamp)); // position @@ -109,9 +110,9 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T string string_pos_y; string string_pos_z; - std::getline(data, string_pos_x, delimiter); - std::getline(data, string_pos_y, delimiter); - std::getline(data, string_pos_z, delimiter); + std::getline(data_str, string_pos_x, delimiter); + std::getline(data_str, string_pos_y, delimiter); + std::getline(data_str, string_pos_z, delimiter); position_i(0) = std::stod(string_pos_x); position_i(1) = std::stod(string_pos_y); @@ -125,10 +126,10 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T string string_quat_z; string string_quat_w; - std::getline(data, string_quat_x, delimiter); - std::getline(data, string_quat_y, delimiter); - std::getline(data, string_quat_z, delimiter); - std::getline(data, string_quat_w, delimiter); + std::getline(data_str, string_quat_x, delimiter); + std::getline(data_str, string_quat_y, delimiter); + std::getline(data_str, string_quat_z, delimiter); + std::getline(data_str, string_quat_w, delimiter); Quaterniond quaternion_i(std::stod(string_quat_w), std::stod(string_quat_x), @@ -142,9 +143,9 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T string string_vlin_y; string string_vlin_z; - std::getline(data, string_vlin_x, delimiter); - std::getline(data, string_vlin_y, delimiter); - std::getline(data, string_vlin_z, delimiter); + std::getline(data_str, string_vlin_x, delimiter); + std::getline(data_str, string_vlin_y, delimiter); + std::getline(data_str, string_vlin_z, delimiter); vlin_i(0) = std::stod(string_vlin_x); vlin_i(1) = std::stod(string_vlin_y); @@ -157,9 +158,9 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T string string_vang_y; string string_vang_z; - std::getline(data, string_vang_x, delimiter); - std::getline(data, string_vang_y, delimiter); - std::getline(data, string_vang_z, delimiter); + std::getline(data_str, string_vang_x, delimiter); + std::getline(data_str, string_vang_y, delimiter); + std::getline(data_str, string_vang_z, delimiter); vang_i(0) = std::stod(string_vang_x); vang_i(1) = std::stod(string_vang_y); @@ -172,9 +173,9 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T string string_force_y; string string_force_z; - std::getline(data, string_force_x, delimiter); - std::getline(data, string_force_y, delimiter); - std::getline(data, string_force_z, delimiter); + std::getline(data_str, string_force_x, delimiter); + std::getline(data_str, string_force_y, delimiter); + std::getline(data_str, string_force_z, delimiter); force_i(0) = std::stod(string_force_x); force_i(1) = std::stod(string_force_y); @@ -187,9 +188,9 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T string string_torque_y; string string_torque_z; - std::getline(data, string_torque_x, delimiter); - std::getline(data, string_torque_y, delimiter); - std::getline(data, string_torque_z, delimiter); + std::getline(data_str, string_torque_x, delimiter); + std::getline(data_str, string_torque_y, delimiter); + std::getline(data_str, string_torque_z, delimiter); torque_i(0) = std::stod(string_torque_x); torque_i(1) = std::stod(string_torque_y); @@ -210,7 +211,7 @@ class Test_SimulationProblemForceTorqueInertialDynamics_yaml : public testing::T { bias_true = Vector6d::Zero(); cdm_true = {0, 0, 0}; - inertia_true = {0.0134943, 0.0141622, 0.0237319}; // rounded {0.017598, 0.017957, 0.029599} + inertia_true = {0.0134943, 0.0141622, 0.0237319}; mass_true = 1.9828; std::string wolf_bodydynamics_root = _WOLF_BODYDYNAMICS_ROOT_DIR; @@ -317,23 +318,18 @@ TEST_F(Test_SimulationProblemForceTorqueInertialDynamics_yaml, preintegration_an p->getOrigin()->getFrame()->getStateBlock('L')->setState(ang_mom_init); - for (int i = i_init + 1; i < time_stamp.size(); i++) // start with second data + for (int i = i_init + 1; i < time_stamp.size(); i++) // start with second data_fti { // SIMULATOR TimeStamp t = time_stamp[i]; // Data - VectorXd data = VectorXd::Zero(12); // [ a, w, f, t ] - data.segment<3>(0) = a_meas[i]; - data.segment<3>(3) = vang[i]; - data.segment<3>(6) = force[i]; - data.segment<3>(9) = torque[i]; - MatrixXd data_cov = S->getNoiseCov(); + data_fti << a_meas[i], vang[i], force[i], torque[i]; // ESTIMATOR - CaptureMotionPtr C = std::make_shared<CaptureForceTorqueInertial>(t, S, data, data_cov, nullptr); + CaptureMotionPtr C = std::make_shared<CaptureForceTorqueInertial>(t, S, data_fti, S->getNoiseCov(), nullptr); C->process(); // results printed in the csv in the order established before @@ -396,8 +392,8 @@ TEST_F(Test_SimulationProblemForceTorqueInertialDynamics_yaml, simulation_online int i_init = 0; // Pose - pose << position[i_init] , quaternion[i_init].coeffs(); - CaptureBasePtr CP = std::make_shared<CapturePose>(time_stamp[i_init], SP, pose, SP->getNoiseCov()); + data_pose << position[i_init] , quaternion[i_init].coeffs(); + CaptureBasePtr CP = std::make_shared<CapturePose>(time_stamp[i_init], SP, data_pose, SP->getNoiseCov()); CP->process(); unsigned int last_kf_id = p->getOrigin()->getFrame()->id(); @@ -409,21 +405,15 @@ TEST_F(Test_SimulationProblemForceTorqueInertialDynamics_yaml, simulation_online TimeStamp t = time_stamp[i]; // Data - VectorXd data = VectorXd::Zero(12); // [ a, w, f, t ] - data.segment<3>(0) = a_meas[i]; - data.segment<3>(3) = vang[i]; - data.segment<3>(6) = force[i]; - data.segment<3>(9) = torque[i]; - MatrixXd data_cov = S->getNoiseCov(); - - pose << position[i] , quaternion[i].coeffs(); + data_fti << a_meas[i], vang[i], force[i], torque[i]; + data_pose << position[i] , quaternion[i].coeffs(); // ESTIMATOR - CaptureMotionPtr C = std::make_shared<CaptureForceTorqueInertial>(t, S, data, data_cov, nullptr); + CaptureMotionPtr C = std::make_shared<CaptureForceTorqueInertial>(t, S, data_fti, S->getNoiseCov(), nullptr); C->process(); - CaptureBasePtr CP = std::make_shared<CapturePose>(t, SP, pose, SP->getNoiseCov()); + CaptureBasePtr CP = std::make_shared<CapturePose>(t, SP, data_pose, SP->getNoiseCov()); CP->process(); // check if new KF and solve @@ -506,12 +496,12 @@ TEST_F(Test_SimulationProblemForceTorqueInertialDynamics_yaml, simulation_batch) // Force FTI processor to make a KF at t=0 CaptureMotionPtr C0 = - std::make_shared<CaptureForceTorqueInertial>(0, S, VectorXd::Zero(12), MatrixXd::Identity(12, 12), nullptr); + std::make_shared<CaptureForceTorqueInertial>(0, S, VectorXd::Zero(12), S->getNoiseCov(), nullptr); C0->process(); // Pose - pose << position[i_init] , quaternion[i_init].coeffs(); - CaptureBasePtr CP = std::make_shared<CapturePose>(time_stamp[i_init], SP, pose, SP->getNoiseCov()); + data_pose << position[i_init] , quaternion[i_init].coeffs(); + CaptureBasePtr CP = std::make_shared<CapturePose>(time_stamp[i_init], SP, data_pose, SP->getNoiseCov()); CP->process(); for (int i = i_init + 1; i < time_stamp.size(); i++) // start with second data @@ -520,23 +510,17 @@ TEST_F(Test_SimulationProblemForceTorqueInertialDynamics_yaml, simulation_batch) TimeStamp t = time_stamp[i]; // Data - VectorXd data = VectorXd::Zero(12); // [ a, w, f, t ] - data.segment<3>(0) = a_meas[i]; - data.segment<3>(3) = vang[i]; - data.segment<3>(6) = force[i]; - data.segment<3>(9) = torque[i]; - MatrixXd data_cov = S->getNoiseCov(); - - pose << position[i] , quaternion[i].coeffs(); + data_fti << a_meas[i], vang[i], force[i], torque[i]; + data_pose << position[i] , quaternion[i].coeffs(); // ESTIMATOR - // FTI - CaptureMotionPtr C = std::make_shared<CaptureForceTorqueInertial>(t, S, data, data_cov, nullptr); + // fti + CaptureMotionPtr C = std::make_shared<CaptureForceTorqueInertial>(t, S, data_fti, S->getNoiseCov(), nullptr); C->process(); // Pose - CaptureBasePtr CP = std::make_shared<CapturePose>(t, SP, pose, SP->getNoiseCov()); + CaptureBasePtr CP = std::make_shared<CapturePose>(t, SP, data_pose, SP->getNoiseCov()); CP->process(); }