diff --git a/demos/mcapi_povcdl_estimation.cpp b/demos/mcapi_povcdl_estimation.cpp index aea20d6cf0695a2b9e727ef9b8be20b89ae49d31..a8f74f3499037d32032f7c79f2c3354add9d0a3a 100644 --- a/demos/mcapi_povcdl_estimation.cpp +++ b/demos/mcapi_povcdl_estimation.cpp @@ -25,7 +25,7 @@ // WOLF #include <core/problem/problem.h> -#include <core/ceres_wrapper/ceres_manager.h> +#include <core/ceres_wrapper/solver_ceres.h> #include <core/math/rotations.h> #include <core/capture/capture_base.h> #include <core/capture/capture_pose.h> @@ -362,8 +362,7 @@ int main (int argc, char **argv) { ProblemPtr problem = Problem::create("POVCDL", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - CeresManagerPtr ceres_manager = std::make_shared<CeresManager>(problem, ceres_options); + SolverCeresPtr solver = std::make_shared<SolverCeres>(problem); //===================================================== INITIALIZATION // SENSOR + PROCESSOR INERTIAL KINEMATICS @@ -584,7 +583,7 @@ int main (int argc, char **argv) { ts_since_last_kf += dt; if ((solve_every_sec > 0) && (ts_since_last_kf >= solve_every_sec)){ - std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF); + std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF); std::cout << report << std::endl; ts_since_last_kf = 0; } @@ -598,7 +597,7 @@ int main (int argc, char **argv) { /////////////////////////////////////////// problem->print(4,true,true,true); if (solve_end){ - std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF); + std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF); problem->print(4,true,true,true); std::cout << report << std::endl; } @@ -735,4 +734,4 @@ int main (int argc, char **argv) { file_est.close(); -} \ No newline at end of file +} diff --git a/include/bodydynamics/factor/factor_force_torque.h b/include/bodydynamics/factor/factor_force_torque.h index a9ee309013ece4ae91883318d49b83b4243af4f6..c04ecaa5b08a38b6a2306cc1a15ee159b475002d 100644 --- a/include/bodydynamics/factor/factor_force_torque.h +++ b/include/bodydynamics/factor/factor_force_torque.h @@ -105,14 +105,14 @@ FactorForceTorque::FactorForceTorque( _processor_ptr, _apply_loss_function, _status, - _feat->getFrame()->getStateBlock("C"), // COM position, current - _feat->getFrame()->getStateBlock("D"), // COM velocity (bad name), current - _feat->getFrame()->getStateBlock("L"), // Angular momentum, current - _frame_other->getStateBlock("C"), // COM position, previous - _frame_other->getStateBlock("D"), // COM velocity (bad name), previous - _frame_other->getStateBlock("L"), // Angular momentum, previous + _feat->getFrame()->getStateBlock('C'), // COM position, current + _feat->getFrame()->getStateBlock('D'), // COM velocity (bad name), current + _feat->getFrame()->getStateBlock('L'), // Angular momentum, current + _frame_other->getStateBlock('C'), // COM position, previous + _frame_other->getStateBlock('D'), // COM velocity (bad name), previous + _frame_other->getStateBlock('L'), // Angular momentum, previous _sb_bp_other, // BC relative position bias, previous - _frame_other->getStateBlock("O") // Base orientation, previous + _frame_other->getStateBlock('O') // Base orientation, previous ), sb_bp_other_(_sb_bp_other) { diff --git a/include/bodydynamics/factor/factor_force_torque_preint.h b/include/bodydynamics/factor/factor_force_torque_preint.h index 99fb9e3610cccd1d62c64b5928fbb34c114eb6ce..080a31b8622cfe73c8a5b50cd5d45edb52c21ea1 100644 --- a/include/bodydynamics/factor/factor_force_torque_preint.h +++ b/include/bodydynamics/factor/factor_force_torque_preint.h @@ -169,15 +169,15 @@ inline FactorForceTorquePreint::FactorForceTorquePreint( _processor_ptr, _apply_loss_function, _status, - _cap_origin_ptr->getFrame()->getStateBlock("C"), - _cap_origin_ptr->getFrame()->getStateBlock("D"), - _cap_origin_ptr->getFrame()->getStateBlock("L"), + _cap_origin_ptr->getFrame()->getStateBlock('C'), + _cap_origin_ptr->getFrame()->getStateBlock('D'), + _cap_origin_ptr->getFrame()->getStateBlock('L'), _cap_origin_ptr->getFrame()->getO(), _cap_ikin_other->getSensorIntrinsic(), _cap_gyro_other->getSensorIntrinsic(), - _ftr_ptr->getFrame()->getStateBlock("C"), - _ftr_ptr->getFrame()->getStateBlock("D"), - _ftr_ptr->getFrame()->getStateBlock("L"), + _ftr_ptr->getFrame()->getStateBlock('C'), + _ftr_ptr->getFrame()->getStateBlock('D'), + _ftr_ptr->getFrame()->getStateBlock('L'), _ftr_ptr->getFrame()->getO() ), dc_preint_(_ftr_ptr->getMeasurement().head<3>()), // dc, dcd, dLc, dq at preintegration time diff --git a/include/bodydynamics/factor/factor_inertial_kinematics.h b/include/bodydynamics/factor/factor_inertial_kinematics.h index cf3662361fdd33e23b1ef0c406e06972010609a4..082737f0081a32c44645e1d6b08c55c0296e602a 100644 --- a/include/bodydynamics/factor/factor_inertial_kinematics.h +++ b/include/bodydynamics/factor/factor_inertial_kinematics.h @@ -79,10 +79,10 @@ FactorInertialKinematics::FactorInertialKinematics( _feat->getFrame()->getP(), _feat->getFrame()->getO(), _feat->getFrame()->getV(), - _feat->getFrame()->getStateBlock("C"), // COM position - _feat->getFrame()->getStateBlock("D"), // COM velocity (bad name) - _feat->getFrame()->getStateBlock("L"), // Angular momentum - _feat->getCapture()->getStateBlock("I"), // body-to-COM relative position bias + _feat->getFrame()->getStateBlock('C'), // COM position + _feat->getFrame()->getStateBlock('D'), // COM velocity (bad name) + _feat->getFrame()->getStateBlock('L'), // Angular momentum + _feat->getCapture()->getStateBlock('I'), // body-to-COM relative position bias _sb_bias_imu ) { diff --git a/src/processor/processor_inertial_kinematics.cpp b/src/processor/processor_inertial_kinematics.cpp index 1fe5892fda0d695e4699c6afaf6cf7544c3adbcc..f19ebad7b376baf948c2f1ebc459add7027ab089 100644 --- a/src/processor/processor_inertial_kinematics.cpp +++ b/src/processor/processor_inertial_kinematics.cpp @@ -63,7 +63,7 @@ inline void ProcessorInertialKinematics::processCapture(CaptureBasePtr _capture) if (time_ok) { CaptureBasePtr cap_angvel = buffer_pack_kf_it->second->key_frame->getCaptureOf(sensor_angvel); auto min_ts = (buffer_pack_kf_it->first < buffer_capture_it->first) ? buffer_pack_kf_it->first : buffer_capture_it->first; - if (cap_angvel && cap_angvel->getStateBlock("I")){ // TODO: or only cap_angvel? + if (cap_angvel && cap_angvel->getStateBlock('I')){ // TODO: or only cap_angvel? // cast incoming capture to the range-and-bearing type, add it to the keyframe auto kf = buffer_pack_kf_it->second->key_frame; auto cap_ikin = std::static_pointer_cast<CaptureInertialKinematics>(buffer_capture_it->second); diff --git a/src/sensor/sensor_inertial_kinematics.cpp b/src/sensor/sensor_inertial_kinematics.cpp index ab6d15e87ad2dee321fb31fa05b914f12e7037c2..86c908418f7d77e21f6ffc8ee3a31b1956822fbb 100644 --- a/src/sensor/sensor_inertial_kinematics.cpp +++ b/src/sensor/sensor_inertial_kinematics.cpp @@ -17,7 +17,7 @@ SensorInertialKinematics::SensorInertialKinematics(const Eigen::VectorXd& _extri { assert(_extrinsics.size() == 0 && "Wrong extrinsics vector size! Should be 0."); assert(getIntrinsic()->getState().size() == 3 && "Wrong extrinsics size! Should be 3."); - setStateBlockDynamic("I", true); + setStateBlockDynamic('I', true); } SensorInertialKinematics::~SensorInertialKinematics() diff --git a/test/gtest_factor_force_torque.cpp b/test/gtest_factor_force_torque.cpp index 47e95dd52a4793426418735e580c7b7342425749..d529469ae5a1801ff365149b7c53ce26d3bf13d5 100644 --- a/test/gtest_factor_force_torque.cpp +++ b/test/gtest_factor_force_torque.cpp @@ -32,7 +32,7 @@ FactorInertialKinematics_2KF_1v_bfix,ZeroMvt: // WOLF #include <core/problem/problem.h> -#include <core/ceres_wrapper/ceres_manager.h> +#include <core/ceres_wrapper/solver_ceres.h> #include <core/math/rotations.h> #include <core/capture/capture_base.h> #include <core/feature/feature_base.h> @@ -121,15 +121,15 @@ Matrix9d computeKinCov(const Matrix3d& Qp, } -void perturbateIfUnFixed(const FrameBasePtr& KF, std::string sb_name){ +void perturbateIfUnFixed(const FrameBasePtr& KF, char sb_name){ if(!KF->getStateBlock(sb_name)->isFixed()) { - if (sb_name == "O") + if (sb_name == 'O') { double max_rad_pert = M_PI / 3; Vector3d do_pert = max_rad_pert*Vector3d::Random(); Quaterniond curr_state_q(KF->getO()->getState().data()); - KF->getStateBlock("O")->setState((curr_state_q * exp_q(do_pert)).coeffs()); + KF->getStateBlock('O')->setState((curr_state_q * exp_q(do_pert)).coeffs()); } else { @@ -152,10 +152,10 @@ FrameBasePtr createKFWithCDLI(const ProblemPtr& problem, const TimeStamp& t, Vec Vector3d c, Vector3d cd, Vector3d Lc, Vector6d bias_imu) { FrameBasePtr KF = FrameBase::emplaceKeyFrame<FrameBase>(problem->getTrajectory(), t, "POV", x_origin); - StateBlockPtr sbc = make_shared<StateBlock>(c); KF->addStateBlock("C", sbc, problem); - StateBlockPtr sbd = make_shared<StateBlock>(cd); KF->addStateBlock("D", sbd, problem); - StateBlockPtr sbL = make_shared<StateBlock>(Lc); KF->addStateBlock("L", sbL, problem); - StateBlockPtr sbbimu = make_shared<StateBlock>(bias_imu); KF->addStateBlock("I", sbbimu, problem); // Simulating IMU + StateBlockPtr sbc = make_shared<StateBlock>(c); KF->addStateBlock('C', sbc, problem); + StateBlockPtr sbd = make_shared<StateBlock>(cd); KF->addStateBlock('D', sbd, problem); + StateBlockPtr sbL = make_shared<StateBlock>(Lc); KF->addStateBlock('L', sbL, problem); + StateBlockPtr sbbimu = make_shared<StateBlock>(bias_imu); KF->addStateBlock('I', sbbimu, problem); // Simulating IMU return KF; } @@ -167,7 +167,7 @@ class FactorInertialKinematics_2KF : public testing::Test wolf::TimeStamp tA_; wolf::TimeStamp tB_; ProblemPtr problem_; - CeresManagerPtr ceres_manager_; + SolverCeresPtr solver_; VectorComposite x_origin_; // initial state VectorComposite s_origin_; // initial sigmas for prior SensorInertialKinematicsPtr SIK_; @@ -202,11 +202,10 @@ class FactorInertialKinematics_2KF : public testing::Test SIK_ = std::static_pointer_cast<SensorInertialKinematics>(senik); // CERES WRAPPER - ceres::Solver::Options ceres_options; - // ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH - // ceres_options.max_line_search_step_contraction = 1e-3; - ceres_options.max_num_iterations = 1e3; - ceres_manager_ = std::make_shared<CeresManager>(problem_, ceres_options); + solver_ = std::make_shared<SolverCeres>(problem_); + solver_->getSolverOptions().max_num_iterations = 1e3; + // solver_->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + // solver_->getSolverOptions().max_line_search_step_contraction = 1e-3; // INSTALL Imu SENSOR // Vector7d extrinsics; extrinsics << 0,0,0,0,0,0,1; @@ -227,16 +226,16 @@ class FactorInertialKinematics_2KF : public testing::Test // ADD THE STATEBLOCKS AND SET THEIR DEFAULT VALUES bias_p_ = zero3; bias_imu_ = zero6; - StateBlockPtr sbcA = make_shared<StateBlock>(zero3); KFA_->addStateBlock("C", sbcA, problem_); - StateBlockPtr sbdA = make_shared<StateBlock>(zero3); KFA_->addStateBlock("D", sbdA, problem_); - StateBlockPtr sbLA = make_shared<StateBlock>(zero3); KFA_->addStateBlock("L", sbLA, problem_); - StateBlockPtr sbbimuA = make_shared<StateBlock>(bias_imu_); KFA_->addStateBlock("I", sbbimuA, problem_); + StateBlockPtr sbcA = make_shared<StateBlock>(zero3); KFA_->addStateBlock('C', sbcA, problem_); + StateBlockPtr sbdA = make_shared<StateBlock>(zero3); KFA_->addStateBlock('D', sbdA, problem_); + StateBlockPtr sbLA = make_shared<StateBlock>(zero3); KFA_->addStateBlock('L', sbLA, problem_); + StateBlockPtr sbbimuA = make_shared<StateBlock>(bias_imu_); KFA_->addStateBlock('I', sbbimuA, problem_); // Fix the one we cannot estimate // KFA_->getP()->fix(); // KFA_->getO()->fix(); // KFA_->getV()->fix(); - KFA_->getStateBlock("I")->fix(); // Imu + KFA_->getStateBlock('I')->fix(); // Imu // INERTIAL KINEMATICS FACTOR // Measurements @@ -254,7 +253,7 @@ class FactorInertialKinematics_2KF : public testing::Test Eigen::Matrix9d Q_ikin_err = computeKinCov(Qp_, Qv_, Qw_, meas_ikinA.head<3>()-bias_p_, meas_ikinA.tail<3>()-bias_imu_.tail<3>(), Iq); CIKA_ = CaptureBase::emplace<CaptureInertialKinematics>(KFA_, tA_, SIK_, meas_ikinA, Iq, Lq, bias_p_); - CIKA_->getStateBlock("I")->fix(); // IK bias + CIKA_->getStateBlock('I')->fix(); // IK bias FIKA_ = FeatureBase::emplace<FeatureInertialKinematics>(CIKA_, meas_ikinA, Q_ikin_err, Iq, Lq, FeatureBase::UncertaintyType::UNCERTAINTY_IS_COVARIANCE); FactorBase::emplace<FactorInertialKinematics>(FIKA_, FIKA_, sbbimuA, nullptr, false); @@ -268,7 +267,7 @@ class FactorInertialKinematics_2KF : public testing::Test // KFB_->getP()->fix(); KFB_->getO()->fix(); // Not in the FT factor, so should be fixed (or absolute factor) // KFB_->getV()->fix(); - KFB_->getStateBlock("I")->fix(); // Imu + KFB_->getStateBlock('I')->fix(); // Imu // // ================ PROCESS Imu DATA @@ -286,7 +285,7 @@ class FactorInertialKinematics_2KF : public testing::Test CIKB_ = CaptureBase::emplace<CaptureInertialKinematics>(KFB_, tB_, SIK_, meas_ikinB, Iq, Lq, bias_p_); CIKB_->getSensorIntrinsic()->fix(); // IK bias FIKB_ = FeatureBase::emplace<FeatureInertialKinematics>(CIKB_, meas_ikinB, Q_ikin_err, Iq, Lq, FeatureBase::UncertaintyType::UNCERTAINTY_IS_COVARIANCE); - auto fac_inkinB = FactorBase::emplace<FactorInertialKinematics>(FIKB_, FIKB_, KFB_->getStateBlock("I"), nullptr, false); + auto fac_inkinB = FactorBase::emplace<FactorInertialKinematics>(FIKB_, FIKB_, KFB_->getStateBlock('I'), nullptr, false); // FORCE TORQUE FACTOR BETWEEEN KFA AND KFB @@ -458,7 +457,7 @@ class FactorInertialKinematics_3KF_ForceX : public FactorInertialKinematics_2KF_ // KFB_->getP()->fix(); // KFC_->getO()->fix(); // Not in the FT factor, so should be fixed (or absolute factor) // KFB_->getV()->fix(); - KFC_->getStateBlock("I")->fix(); + KFC_->getStateBlock('I')->fix(); // ================ FACTOR INERTIAL KINEMATICS ON KFB Vector3d pBC_measC = zero3; @@ -470,9 +469,9 @@ class FactorInertialKinematics_3KF_ForceX : public FactorInertialKinematics_2KF_ Eigen::Matrix9d Q_ikin_errC = computeKinCov(Qp_, Qv_, Qw_, meas_ikinC.head<3>()-bias_p_, meas_ikinC.tail<3>()-bias_imu_.tail<3>(), Iq); CIKC_ = CaptureBase::emplace<CaptureInertialKinematics>(KFC_, tC_, SIK_, meas_ikinC, Iq, Lq, bias_p_); - CIKC_->getStateBlock("I")->fix(); // IK bias + CIKC_->getStateBlock('I')->fix(); // IK bias auto feat_ikin_C = FeatureBase::emplace<FeatureInertialKinematics>(CIKC_, meas_ikinC, Q_ikin_errC, Iq, Lq, FeatureBase::UncertaintyType::UNCERTAINTY_IS_COVARIANCE); - FactorBase::emplace<FactorInertialKinematics>(feat_ikin_C, feat_ikin_C, CIKC_->getStateBlock("I"), nullptr, false); + FactorBase::emplace<FactorInertialKinematics>(feat_ikin_C, feat_ikin_C, CIKC_->getStateBlock('I'), nullptr, false); // FORCE TORQUE FACTOR BETWEEEN KFA AND KFB @@ -520,9 +519,9 @@ class FactorInertialKinematics_2KF_ForceX_Odom3d : public FactorInertialKinemati FactorBase::emplace<FactorOdom3d>(ftr_pose_base, ftr_pose_base, KFA_, nullptr, false); // With Odom3d the bias on relative base COM position is observable, we unfix the KFB state block - CIKB_->getStateBlock("I")->unfix(); + CIKB_->getStateBlock('I')->unfix(); // However this test is not sufficient to observe the bias at KFA - // CIKA_->getStateBlock("I")->unfix(); // this is not observable + // CIKA_->getStateBlock('I')->unfix(); // this is not observable } }; @@ -546,27 +545,27 @@ TEST_F(FactorInertialKinematics_2KF,ZeroMvt) Vector3d Lc_exp = zero3; Vector3d bp_exp = zero3; - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); // due to opposite - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), bp_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); // due to opposite + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), bp_exp, 1e-5); } TEST_F(FactorInertialKinematics_2KF_foot1turned,ZeroMvt) @@ -576,27 +575,27 @@ TEST_F(FactorInertialKinematics_2KF_foot1turned,ZeroMvt) Vector3d Lc_exp = zero3; Vector3d bp_exp = zero3; - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); // due to opposite - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), bp_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); // due to opposite + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), bp_exp, 1e-5); } TEST_F(FactorInertialKinematics_2KF_foot2turned,ZeroMvt) @@ -606,27 +605,27 @@ TEST_F(FactorInertialKinematics_2KF_foot2turned,ZeroMvt) Vector3d Lc_exp = zero3; Vector3d bp_exp = zero3; - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); // due to opposite - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), bp_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); // due to opposite + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), bp_exp, 1e-5); } @@ -637,27 +636,27 @@ TEST_F(FactorInertialKinematics_2KF_singleContactFoot1turned,ZeroMvt) Vector3d Lc_exp = zero3; Vector3d bp_exp = zero3; - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); // due to opposite - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), bp_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); // due to opposite + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), bp_exp, 1e-5); } @@ -668,27 +667,27 @@ TEST_F(FactorInertialKinematics_2KF_singleContactFoot2turned,ZeroMvt) Vector3d Lc_exp = zero3; Vector3d bp_exp = zero3; - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), bp_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), bp_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), bp_exp, 1e-5); } @@ -696,135 +695,135 @@ TEST_F(FactorInertialKinematics_2KF_singleContactFoot2turned,ZeroMvt) TEST_F(FactorInertialKinematics_2KF_ForceX,ZeroMvt) { // problem_->print(4,true,true,true); - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), (Vector3d()<<(tB_-tA_)*Acc1/2, 0, 0).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), (Vector3d()<<(tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), (Vector3d()<<(tB_-tA_)*Acc1/2, 0, 0).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), (Vector3d()<<(tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), zero3, 1e-5); } TEST_F(FactorInertialKinematics_2KF_ForceY,ZeroMvt) { - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), (Vector3d()<<0, (tB_ - tA_)*Acc2/2, 0).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), (Vector3d()<<0, (tB_ - tA_)*Acc2, 0).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), (Vector3d()<<0, (tB_ - tA_)*Acc2/2, 0).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), (Vector3d()<<0, (tB_ - tA_)*Acc2, 0).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), zero3, 1e-5); } TEST_F(FactorInertialKinematics_2KF_ForceZ,ZeroMvt) { - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), (Vector3d()<<0, 0, (tB_-tA_)*Acc1/2).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), (Vector3d()<<0, 0, (tB_-tA_)*Acc1).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), (Vector3d()<<0, 0, (tB_-tA_)*Acc1/2).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), (Vector3d()<<0, 0, (tB_-tA_)*Acc1).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), zero3, 1e-5); } // TEST_F(FactorInertialKinematics_3KF_ForceX,ZeroMvt) // { -// string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; +// string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // perturbateAllIfUnFixed(KFA_); // perturbateAllIfUnFixed(KFB_); // perturbateAllIfUnFixed(KFC_); // // problem_->print(4,true,true,true); -// report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; +// report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // // std::cout << report << std::endl; // // problem_->print(4,true,true,true); -// ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); -// // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); -// ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); -// ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), (Vector3d()<<(tB_-tA_)*Acc1/2, 0, 0).finished(), 1e-5); -// ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), (Vector3d()<<(tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); -// ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(KFC_->getStateBlock("C")->getState(), (Vector3d()<<(tC_-tB_)*Acc1/2 + (tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); // + -> due to initial vel of KFB -// ASSERT_MATRIX_APPROX(KFC_->getStateBlock("D")->getState(), (Vector3d()<<(tC_-tB_)*Acc1, 0, 0).finished(), 1e-5); // No acc btw B and C -> same vel -// ASSERT_MATRIX_APPROX(KFC_->getStateBlock("L")->getState(), zero3, 1e-5); -// ASSERT_MATRIX_APPROX(CIKC_->getStateBlock("I")->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); +// // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); +// ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); +// ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), (Vector3d()<<(tB_-tA_)*Acc1/2, 0, 0).finished(), 1e-5); +// ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), (Vector3d()<<(tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); +// ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(KFC_->getStateBlock('C')->getState(), (Vector3d()<<(tC_-tB_)*Acc1/2 + (tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); // + -> due to initial vel of KFB +// ASSERT_MATRIX_APPROX(KFC_->getStateBlock('D')->getState(), (Vector3d()<<(tC_-tB_)*Acc1, 0, 0).finished(), 1e-5); // No acc btw B and C -> same vel +// ASSERT_MATRIX_APPROX(KFC_->getStateBlock('L')->getState(), zero3, 1e-5); +// ASSERT_MATRIX_APPROX(CIKC_->getStateBlock('I')->getState(), zero3, 1e-5); // } TEST_F(FactorInertialKinematics_2KF_ForceX_Odom3d,ZeroMvt) { - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; perturbateAllIfUnFixed(KFA_); perturbateAllIfUnFixed(KFB_); // problem_->print(4,true,true,true); - report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; // problem_->print(4,true,true,true); - ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at("P"), 1e-5); - // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at("O"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at("V"), 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("C")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("D")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFA_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKA_->getStateBlock("I")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("C")->getState(), (Vector3d()<<(tB_-tA_)*Acc1/2, 0, 0).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("D")->getState(), (Vector3d()<<(tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); - ASSERT_MATRIX_APPROX(KFB_->getStateBlock("L")->getState(), zero3, 1e-5); - ASSERT_MATRIX_APPROX(CIKB_->getStateBlock("I")->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getP()->getState(), x_origin_.at('P'), 1e-5); + // ASSERT_MATRIX_APPROX(KFA_->getO()->getState(), x_origin_.at('O'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getV()->getState(), x_origin_.at('V'), 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('C')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('D')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFA_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKA_->getStateBlock('I')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('C')->getState(), (Vector3d()<<(tB_-tA_)*Acc1/2, 0, 0).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('D')->getState(), (Vector3d()<<(tB_-tA_)*Acc1, 0, 0).finished(), 1e-5); + ASSERT_MATRIX_APPROX(KFB_->getStateBlock('L')->getState(), zero3, 1e-5); + ASSERT_MATRIX_APPROX(CIKB_->getStateBlock('I')->getState(), zero3, 1e-5); } diff --git a/test/gtest_factor_inertial_kinematics.cpp b/test/gtest_factor_inertial_kinematics.cpp index 33b375ecaea8833c68d4c972d64b8d47b8c659c6..8dfb0f528b5389f9703d2244ecac5529b4006f09 100644 --- a/test/gtest_factor_inertial_kinematics.cpp +++ b/test/gtest_factor_inertial_kinematics.cpp @@ -32,7 +32,7 @@ FactorInertialKinematics_1KF_1v_bfix,ZeroMvt: // WOLF #include <core/problem/problem.h> -#include <core/ceres_wrapper/ceres_manager.h> +#include <core/ceres_wrapper/solver_ceres.h> #include <core/math/rotations.h> #include <core/capture/capture_base.h> #include <core/feature/feature_base.h> @@ -67,7 +67,7 @@ class FactorInertialKinematics_1KF : public testing::Test wolf::TimeStamp t_; ProblemPtr problem_; // SensorImuPtr sen_imu; - CeresManagerPtr ceres_manager_; + SolverCeresPtr solver_; // ProcessorBasePtr processor; // ProcessorImuPtr processor_imu; VectorComposite x_origin_; // initial state @@ -88,11 +88,10 @@ class FactorInertialKinematics_1KF : public testing::Test problem_ = Problem::create("POV", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - // ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH - // ceres_options.max_line_search_step_contraction = 1e-3; - // ceres_options.max_num_iterations = 1e4; - ceres_manager_ = std::make_shared<CeresManager>(problem_, ceres_options); + solver_ = std::make_shared<SolverCeres>(problem_); + // solver_->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + // solver_->getSolverOptions().max_line_search_step_contraction = 1e-3; + // solver_->getSolverOptions().max_num_iterations = 1e4; //===================================================== INITIALIZATION x_origin_ = VectorComposite("POV", {Vector3d(0,0,0), Quaterniond::Identity().coeffs(), Vector3d(0,0,0)}); @@ -112,13 +111,13 @@ class FactorInertialKinematics_1KF : public testing::Test StateBlockPtr sbb = make_shared<StateBlock>(bias_p_); sbbimu_ = make_shared<StateBlock>(bias_imu_); - KF0_->addStateBlock("C", sbc, problem_); - KF0_->addStateBlock("D", sbd, problem_); - KF0_->addStateBlock("L", sbL, problem_); - KF0_->addStateBlock("I", sbbimu_, problem_); // IMU bias + KF0_->addStateBlock('C', sbc, problem_); + KF0_->addStateBlock('D', sbd, problem_); + KF0_->addStateBlock('L', sbL, problem_); + KF0_->addStateBlock('I', sbbimu_, problem_); // IMU bias // Fix the one we cannot estimate - KF0_->getStateBlock("I")->fix(); // Imu + KF0_->getStateBlock('I')->fix(); // Imu // =============== SET DEFAULT" KIN MEASUREMENT AND COVARIANCE // Measurements @@ -149,8 +148,8 @@ class FactorInertialKinematics_1KF_Meas0_bpfix : public FactorInertialKinematics { FactorInertialKinematics_1KF::SetUp(); // Fix the bp bias - CIK0_->getStateBlock("I")->fix(); - KF0_->getStateBlock("C")->unfix(); + CIK0_->getStateBlock('I')->fix(); + KF0_->getStateBlock('C')->unfix(); Eigen::Vector3d ZERO3 = Eigen::Vector3d::Zero(); Eigen::Vector3d pBC_meas = ZERO3; @@ -174,8 +173,8 @@ class FactorInertialKinematics_1KF_1p_bpfix : public FactorInertialKinematics_1K { FactorInertialKinematics_1KF::SetUp(); // Fix the bp bias - CIK0_->getStateBlock("I")->fix(); - KF0_->getStateBlock("C")->unfix(); + CIK0_->getStateBlock('I')->fix(); + KF0_->getStateBlock('C')->unfix(); Eigen::Vector3d ZERO3 = Eigen::Vector3d::Zero(); Eigen::Vector3d pBC_meas; pBC_meas << 1,0,0; @@ -199,8 +198,8 @@ class FactorInertialKinematics_1KF_m1p_pfix : public FactorInertialKinematics_1K { FactorInertialKinematics_1KF::SetUp(); // Fix the COM position - CIK0_->getStateBlock("I")->unfix(); - KF0_->getStateBlock("C")->fix(); + CIK0_->getStateBlock('I')->unfix(); + KF0_->getStateBlock('C')->fix(); Eigen::Vector3d ZERO3 = Eigen::Vector3d::Zero(); Eigen::Vector3d pBC_meas; pBC_meas << 1,0,0; @@ -226,10 +225,10 @@ class FactorInertialKinematics_1KF_1v_bfix : public FactorInertialKinematics_1KF FactorInertialKinematics_1KF::SetUp(); // Fix the bp bias Eigen::Vector3d ZERO3 = Eigen::Vector3d::Zero(); - CIK0_->getStateBlock("I")->fix(); - KF0_->getStateBlock("C")->unfix(); + CIK0_->getStateBlock('I')->fix(); + KF0_->getStateBlock('C')->unfix(); bias_p_ = ZERO3; - CIK0_->getStateBlock("I")->setState(bias_p_); + CIK0_->getStateBlock('I')->setState(bias_p_); Eigen::Vector3d pBC_meas = ZERO3; Eigen::Vector3d vBC_meas; vBC_meas << 1,0,0; @@ -252,7 +251,7 @@ class FactorInertialKinematics_1KF_1v_bfix : public FactorInertialKinematics_1KF // public: // wolf::TimeStamp t_; // ProblemPtr problem_; -// CeresManager* ceres_manager_; +// SolverCeres* solver_; // VectorXd x_origin_; // MatrixXd P_origin_; // FrameBasePtr KF0_; @@ -279,7 +278,7 @@ class FactorInertialKinematics_1KF_1v_bfix : public FactorInertialKinematics_1KF // // ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH // // ceres_options.max_line_search_step_contraction = 1e-3; // // ceres_options.max_num_iterations = 1e4; -// ceres_manager_ = new CeresManager(problem_, ceres_options); +// solver_ = new SolverCeres(problem_, ceres_options); // // //===================================================== INITIALIZATION // x_origin_.resize(10); @@ -372,12 +371,12 @@ TEST_F(FactorInertialKinematics_1KF_Meas0_bpfix,ZeroMvt) // Eigen::Vector3d bp_exp = Eigen::Vector3d::Zero(); KF0_->perturb(); - string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; - ASSERT_MATRIX_APPROX(KF0_->getP()->getState(), x_origin_.at("P"), 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("L")->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getP()->getState(), x_origin_.at('P'), 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('L')->getState(), Lc_exp, 1e-5); } @@ -389,11 +388,11 @@ TEST_F(FactorInertialKinematics_1KF_1p_bpfix,ZeroMvt) // Eigen::Vector3d bp_exp = Eigen::Vector3d::Zero(); KF0_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("L")->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('L')->getState(), Lc_exp, 1e-5); } TEST_F(FactorInertialKinematics_1KF_m1p_pfix,ZeroMvt) @@ -404,12 +403,12 @@ TEST_F(FactorInertialKinematics_1KF_m1p_pfix,ZeroMvt) Eigen::Vector3d bp_exp; bp_exp << 1,0,0; KF0_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; - // ASSERT_MATRIX_APPROX(KF0_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("L")->getState(), Lc_exp, 1e-5); - ASSERT_MATRIX_APPROX(CIK0_->getStateBlock("I")->getState(), bp_exp, 1e-5); + // ASSERT_MATRIX_APPROX(KF0_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('L')->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(CIK0_->getStateBlock('I')->getState(), bp_exp, 1e-5); } TEST_F(FactorInertialKinematics_1KF_1v_bfix,ZeroMvt) @@ -420,11 +419,11 @@ TEST_F(FactorInertialKinematics_1KF_1v_bfix,ZeroMvt) // Eigen::Vector3d bp_exp = Eigen::Vector3d::Zero(); KF0_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("C")->getState(), c_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("D")->getState(), cd_exp, 1e-5); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("L")->getState(), Lc_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('C')->getState(), c_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('D')->getState(), cd_exp, 1e-5); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('L')->getState(), Lc_exp, 1e-5); } diff --git a/test/gtest_processor_force_torque_preint.cpp b/test/gtest_processor_force_torque_preint.cpp index 08fe7503940af68f8f93942a0ee693d54b45534c..d2c378112faff3c61c74a930fa1290b593e1b562 100644 --- a/test/gtest_processor_force_torque_preint.cpp +++ b/test/gtest_processor_force_torque_preint.cpp @@ -15,7 +15,7 @@ // WOLF #include <core/problem/problem.h> -#include <core/ceres_wrapper/ceres_manager.h> +#include <core/ceres_wrapper/solver_ceres.h> // #include <core/ceres_wrapper/qr_manager.h> @@ -66,7 +66,7 @@ public: wolf::TimeStamp t0_; ProblemPtr problem_; SensorImuPtr sen_imu_; - CeresManagerPtr ceres_manager_; + SolverCeresPtr solver_; SensorInertialKinematicsPtr sen_ikin_; SensorForceTorquePtr sen_ft_; ProcessorImuPtr proc_imu_; @@ -81,11 +81,10 @@ public: problem_ = Problem::create("POVCDL", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - // ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH - // ceres_options.max_line_search_step_contraction = 1e-3; - // ceres_options.max_num_iterations = 1e4; - ceres_manager_ = std::make_shared<CeresManager>(problem_, ceres_options); + solver_ = std::make_shared<SolverCeres>(problem_); + // solver_->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + // solver_->getSolverOptions().max_line_search_step_contraction = 1e-3; + // solver_->getSolverOptions().max_num_iterations = 1e4; //===================================================== INITIALIZATION // SENSOR + PROCESSOR INERTIAL KINEMATICS @@ -542,38 +541,38 @@ public: TEST_F(Cst2KFZeroMotion, ZeroMotionZeroBias) { // // TEST FIRST PURE INTEGRATION - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // // COM position on Z axis is not observable with this problem - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), ZERO3, 1e-6); // // COM position on Z axis is not observable with this problem - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); // THEN SOLVE problem_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), ZERO3.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), ZERO3.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), ZERO3.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), ZERO3.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); ASSERT_MATRIX_APPROX(KF1_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), ZERO3.head(2), 1e-6); ASSERT_MATRIX_APPROX(KF2_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), ZERO3.head(2), 1e-6); @@ -583,22 +582,22 @@ TEST_F(Cst2KFZeroMotionBias, ZeroMotionBias) { problem_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // problem_->print(4,true,true,true); // std::cout << report << std::endl; - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), ZERO3.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), ZERO3.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), ZERO3.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), ZERO3.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); // Bias value on Z axis is not observable with this problem ASSERT_MATRIX_APPROX(KF1_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), BIAS_PBC_SMAL.head(2), 1e-6); @@ -612,39 +611,39 @@ TEST_F(Cst2KFXaxisLinearMotion, XLinearMotionZeroBias) posi_diff[0] = 0.5*ACC * pow(3*DT,2); Vector3d vel_diff = ZERO3; vel_diff[0] = ACC * 3*DT; - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // // COM position on Z axis is not observable with this problem - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), posi_diff, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), vel_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), posi_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), vel_diff, 1e-6); // // COM position on Z axis is not observable with this problem - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState(), posi_diff, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), vel_diff, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState(), posi_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), vel_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); problem_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // problem_->print(4, true, true, true); // std::cout << report << std::endl; - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), ZERO3.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), ZERO3.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), posi_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), posi_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), vel_diff, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), posi_diff.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), vel_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), posi_diff.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); // Bias value on Z axis is not observable with this problem ASSERT_MATRIX_APPROX(KF1_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), ZERO3.head(2), 1e-6); @@ -657,38 +656,38 @@ TEST_F(Cst2KFXaxisLinearMotionPbc, XLinearMotionBias) posi_diff[0] = 0.5*ACC * pow(3*DT,2); Vector3d vel_diff = ZERO3; vel_diff[0] = ACC * 3*DT; - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // // COM position on Z axis is not observable with this problem - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), posi_diff, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), vel_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), posi_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), vel_diff, 1e-6); // // COM position on Z axis is not observable with this problem - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), vel_diff, 1e-6); - // ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), vel_diff, 1e-6); + // ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); problem_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // std::cout << report << std::endl; - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), posi_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), posi_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), vel_diff, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), vel_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); // Bias value on Z axis is not observable with this problem ASSERT_MATRIX_APPROX(KF1_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), ZERO3.head(2), 1e-6); @@ -699,7 +698,7 @@ TEST_F(Cst2KFXaxisLinearMotionPbcBias, XLinearMotionBias) { problem_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // problem_->print(4, true, true, true); // std::cout << report << std::endl; @@ -707,19 +706,19 @@ TEST_F(Cst2KFXaxisLinearMotionPbcBias, XLinearMotionBias) posi_diff[0] = 0.5*ACC * pow(3*DT,2); Vector3d vel_diff = ZERO3; vel_diff[0] = ACC * 3*DT; - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), posi_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), posi_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), vel_diff, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), vel_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); // Bias value on Z axis is not observable with this problem ASSERT_MATRIX_APPROX(KF1_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), BIAS_PBC_SMAL.head(2), 1e-6); @@ -730,7 +729,7 @@ TEST_F(Cst2KFXaxisLinearMotionPbcBiasPQbl, XLinearMotionBias) { problem_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; // problem_->print(4, true, true, true); // std::cout << report << std::endl; @@ -738,19 +737,19 @@ TEST_F(Cst2KFXaxisLinearMotionPbcBiasPQbl, XLinearMotionBias) posi_diff[0] = 0.5*ACC * pow(3*DT,2); Vector3d vel_diff = ZERO3; vel_diff[0] = ACC * 3*DT; - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("P")->getState(), posi_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("V")->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('P')->getState(), posi_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('V')->getState(), vel_diff, 1e-6); // COM position on Z axis is not observable with this problem - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("C")->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("D")->getState(), vel_diff, 1e-6); - ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('C')->getState().head(2), (PBCX + PBCY + PBCZ).head(2) + posi_diff.head(2), 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('D')->getState(), vel_diff, 1e-6); + ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), ZERO3, 1e-6); // Bias value on Z axis is not observable with this problem ASSERT_MATRIX_APPROX(KF1_->getCaptureOf(sen_ikin_)->getSensorIntrinsic()->getState().head(2), BIAS_PBC_SMAL.head(2), 1e-6); @@ -763,14 +762,14 @@ TEST_F(Cst2KFXaxisLinearMotionPbcBiasPQbl, XLinearMotionBias) // Vector3d Lc_diff; Lc_diff << M_PI, 0, 0; // Vector4d q_diff; q_diff << 1,0,0,0; -// ASSERT_MATRIX_APPROX(KF1_->getStateBlock("P")->getState(), ZERO3, 1e-6); -// ASSERT_MATRIX_APPROX(KF1_->getStateBlock("V")->getState(), ZERO3, 1e-6); -// ASSERT_MATRIX_APPROX(KF1_->getStateBlock("C")->getState(), ZERO3, 1e-6); -// ASSERT_MATRIX_APPROX(KF1_->getStateBlock("D")->getState(), ZERO3, 1e-6); -// ASSERT_MATRIX_APPROX(KF1_->getStateBlock("L")->getState(), ZERO3, 1e-6); - -// ASSERT_MATRIX_APPROX(KF2_->getStateBlock("O")->getState(), q_diff, 1e-6); -// ASSERT_MATRIX_APPROX(KF2_->getStateBlock("L")->getState(), Lc_diff, 1e-6); +// ASSERT_MATRIX_APPROX(KF1_->getStateBlock('P')->getState(), ZERO3, 1e-6); +// ASSERT_MATRIX_APPROX(KF1_->getStateBlock('V')->getState(), ZERO3, 1e-6); +// ASSERT_MATRIX_APPROX(KF1_->getStateBlock('C')->getState(), ZERO3, 1e-6); +// ASSERT_MATRIX_APPROX(KF1_->getStateBlock('D')->getState(), ZERO3, 1e-6); +// ASSERT_MATRIX_APPROX(KF1_->getStateBlock('L')->getState(), ZERO3, 1e-6); + +// ASSERT_MATRIX_APPROX(KF2_->getStateBlock('O')->getState(), q_diff, 1e-6); +// ASSERT_MATRIX_APPROX(KF2_->getStateBlock('L')->getState(), Lc_diff, 1e-6); // } diff --git a/test/gtest_processor_inertial_kinematics.cpp b/test/gtest_processor_inertial_kinematics.cpp index c8a95d15f0d356222e29e2b7a9e952518d151443..137b96f341e41d6c678165352d75143bbc124101 100644 --- a/test/gtest_processor_inertial_kinematics.cpp +++ b/test/gtest_processor_inertial_kinematics.cpp @@ -15,7 +15,7 @@ // WOLF #include <core/problem/problem.h> -#include <core/ceres_wrapper/ceres_manager.h> +#include <core/ceres_wrapper/solver_ceres.h> #include <core/math/rotations.h> #include <core/capture/capture_base.h> #include <core/capture/capture_pose.h> @@ -50,7 +50,7 @@ class FactorInertialKinematics_2KF : public testing::Test wolf::TimeStamp t_; ProblemPtr problem_; SensorImuPtr sen_imu_; - CeresManagerPtr ceres_manager_; + SolverCeresPtr solver_; SensorInertialKinematicsPtr sen_ikin_; VectorXd x_origin_; MatrixXd P_origin_; @@ -63,11 +63,10 @@ class FactorInertialKinematics_2KF : public testing::Test problem_ = Problem::create("POVCDL", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - // ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH - // ceres_options.max_line_search_step_contraction = 1e-3; - // ceres_options.max_num_iterations = 1e4; - ceres_manager_ = std::make_shared<CeresManager>(problem_, ceres_options); + solver_ = std::make_shared<SolverCeres>(problem_); + // solver_->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + // solver_->getSolverOptions().max_line_search_step_contraction = 1e-3; + // solver_->getSolverOptions().max_num_iterations = 1e4; //===================================================== INITIALIZATION x_origin_.resize(19); @@ -191,7 +190,7 @@ TEST_F(FactorInertialKinematics_2KF, sensor_and_processors_registration) KF0_->perturb(); - std::string report = ceres_manager_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; std::cout << report << std::endl; problem_->print(4,true,true,true); @@ -201,17 +200,17 @@ TEST_F(FactorInertialKinematics_2KF, sensor_and_processors_registration) FrameBasePtr KF1 = problem_->getTrajectory()->getLastKeyFrame(); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("P")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("V")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("C")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("D")->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF0_->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('P')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('V')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('C')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('D')->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF0_->getStateBlock('L')->getState(), ZERO3, 1e-6); - ASSERT_MATRIX_APPROX(KF1->getStateBlock("P")->getState(), pdiff, 1e-6); - ASSERT_MATRIX_APPROX(KF1->getStateBlock("V")->getState(), vdiff, 1e-6); - ASSERT_MATRIX_APPROX(KF1->getStateBlock("C")->getState(), pdiff, 1e-6); - ASSERT_MATRIX_APPROX(KF1->getStateBlock("D")->getState(), vdiff, 1e-6); - ASSERT_MATRIX_APPROX(KF1->getStateBlock("L")->getState(), ZERO3, 1e-6); + ASSERT_MATRIX_APPROX(KF1->getStateBlock('P')->getState(), pdiff, 1e-6); + ASSERT_MATRIX_APPROX(KF1->getStateBlock('V')->getState(), vdiff, 1e-6); + ASSERT_MATRIX_APPROX(KF1->getStateBlock('C')->getState(), pdiff, 1e-6); + ASSERT_MATRIX_APPROX(KF1->getStateBlock('D')->getState(), vdiff, 1e-6); + ASSERT_MATRIX_APPROX(KF1->getStateBlock('L')->getState(), ZERO3, 1e-6); }