diff --git a/demos/demo_factor_imu.cpp b/demos/demo_factor_imu.cpp index 913932a305c57780ac2a5499d0b0d2c0e2b2c83b..581d7429331d13a0bf67f847f7d9924c0814358e 100644 --- a/demos/demo_factor_imu.cpp +++ b/demos/demo_factor_imu.cpp @@ -1,4 +1,6 @@ //Wolf +#include <core/ceres_wrapper/solver_ceres.h> + #include "core/capture/capture_imu.h" #include "core/processor/processor_imu.h" #include "core/sensor/sensor_imu.h" @@ -8,7 +10,6 @@ #include "core/factor/factor_odom_3D.h" #include "core/state_block/state_block.h" #include "core/state_block/state_quaternion.h" -#include "core/ceres_wrapper/ceres_manager.h" //#define DEBUG_RESULTS @@ -30,11 +31,10 @@ int main(int argc, char** argv) wolf_problem_ptr_->installProcessor("IMU", "IMU pre-integrator", "Main IMU", ""); // Ceres wrappers - 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; - CeresManager* ceres_manager_wolf_diff = new CeresManager(wolf_problem_ptr_, ceres_options, true); + SolverCeres* ceres_manager_wolf_diff = new SolverCeres(wolf_problem_ptr_); + ceres_manager_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + ceres_manager_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + ceres_manager_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // Time and data variables TimeStamp t; diff --git a/demos/demo_imuDock.cpp b/demos/demo_imuDock.cpp index 73f693e491acf81eb4020cfc99099f66f09ed94e..e218a88cbf8f48b7537954f52d02ce7c7ee957f1 100644 --- a/demos/demo_imuDock.cpp +++ b/demos/demo_imuDock.cpp @@ -5,11 +5,12 @@ * \author: Dinesh Atchuthan */ +#include <core/ceres_wrapper/solver_ceres.h> + #include "core/processor/processor_imu.h" #include "core/sensor/sensor_imu.h" #include "core/common/wolf.h" #include "core/problem/problem.h" -#include "core/ceres_wrapper/ceres_manager.h" #include "core/sensor/sensor_odom_3D.h" #include "core/processor/processor_odom_3D.h" @@ -102,7 +103,7 @@ int main(int argc, char** argv) // ___Create the WOLF Problem + define origin of the problem___ ProblemPtr problem = Problem::create("PQVBB 3D"); - CeresManager* ceres_manager = new CeresManager(problem); + SolverCeres* ceres_manager = new SolverCeres(problem); // ___Configure Ceres if needed___ diff --git a/demos/demo_imuDock_autoKFs.cpp b/demos/demo_imuDock_autoKFs.cpp index cfd482b6faea95d6bd606c04fdc1e9370ba9a837..d5bd9aa8bc357f6be1c5135d8c1ad7730c4858da 100644 --- a/demos/demo_imuDock_autoKFs.cpp +++ b/demos/demo_imuDock_autoKFs.cpp @@ -5,11 +5,12 @@ * \author: Dinesh Atchuthan */ +#include <core/ceres_wrapper/solver_ceres.h> + #include "core/processor/processor_imu.h" #include "core/sensor/sensor_imu.h" #include "core/common/wolf.h" #include "core/problem/problem.h" -#include "core/ceres_wrapper/ceres_manager.h" #include "core/sensor/sensor_odom_3D.h" #include "core/processor/processor_odom_3D.h" @@ -111,7 +112,7 @@ int main(int argc, char** argv) // ___Create the WOLF Problem + define origin of the problem___ ProblemPtr problem = Problem::create("PQVBB 3D"); - CeresManager* ceres_manager = new CeresManager(problem); + SolverCeres* ceres_manager = new SolverCeres(problem); // ___Configure Ceres if needed___ diff --git a/demos/demo_imuPlateform_Offline.cpp b/demos/demo_imuPlateform_Offline.cpp index a3565850e74ecc27f58b0e47248813d75fe98bb3..628c4b65ed2e8b88a3cdfbedc8f07ef80f906001 100644 --- a/demos/demo_imuPlateform_Offline.cpp +++ b/demos/demo_imuPlateform_Offline.cpp @@ -1,4 +1,6 @@ //Wolf +#include <core/ceres_wrapper/solver_ceres.h> + #include "core/capture/capture_imu.h" #include "core/processor/processor_imu.h" #include "core/sensor/sensor_imu.h" @@ -9,9 +11,6 @@ #include "core/state_block/state_block.h" #include "core/state_block/state_quaternion.h" #include "core/processor/processor_odom_3D.h" -#include "core/ceres_wrapper/ceres_manager.h" - -//std #include <iostream> #include <fstream> #include <iomanip> @@ -75,11 +74,10 @@ int main(int argc, char** argv) TimeStamp t(0); // 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; - CeresManager* ceres_manager_wolf_diff = new CeresManager(wolf_problem_ptr_, ceres_options); + SolverCeres* ceres_manager_wolf_diff = new SolverCeres(wolf_problem_ptr_); + ceres_manager_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + ceres_manager_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + ceres_manager_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR IMU SensorBasePtr sen0_ptr = wolf_problem_ptr_->installSensor("IMU", "Main IMU", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_imu.yaml"); diff --git a/demos/demo_imu_constrained0.cpp b/demos/demo_imu_constrained0.cpp index 3f6a245ddec51b5f9f5f7ae043099c2e49021d1d..66db5c1c71e81035aa6ea70e000a8a92d29b4af6 100644 --- a/demos/demo_imu_constrained0.cpp +++ b/demos/demo_imu_constrained0.cpp @@ -1,4 +1,6 @@ //Wolf +#include <core/ceres_wrapper/solver_ceres.h> + #include "core/capture/capture_imu.h" #include "core/processor/processor_imu.h" #include "core/sensor/sensor_imu.h" @@ -9,9 +11,6 @@ #include "core/state_block/state_block.h" #include "core/state_block/state_quaternion.h" #include "core/processor/processor_odom_3D.h" -#include "core/ceres_wrapper/ceres_manager.h" - -//std #include <iostream> #include <fstream> #include <iomanip> @@ -96,11 +95,10 @@ int main(int argc, char** argv) imu_data_input >> origin_bias[0] >> origin_bias[1] >> origin_bias[2] >> origin_bias[3] >> origin_bias[4] >> origin_bias[5]; // 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; - CeresManager* ceres_manager_wolf_diff = new CeresManager(wolf_problem_ptr_, ceres_options); + SolverCeres* ceres_manager_wolf_diff = new SolverCeres(wolf_problem_ptr_); + ceres_manager_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + ceres_manager_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + ceres_manager_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR IMU SensorBasePtr sen0_ptr = wolf_problem_ptr_->installSensor("IMU", "Main IMU", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_imu.yaml"); diff --git a/include/imu/factor/factor_imu.h b/include/imu/factor/factor_imu.h index cf15fb37a5d8c1130211126835f675ca0afa599b..2be43b54d15773093796950d7bb89a9e1581d43d 100644 --- a/include/imu/factor/factor_imu.h +++ b/include/imu/factor/factor_imu.h @@ -398,6 +398,31 @@ inline bool FactorImu::residual(const Eigen::MatrixBase<D1> & _p1, ////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// PRINT VALUES /////////////////////////////////// #if 0 + if (sizeof(T) == sizeof(double)) + { + std::cout << "Frames " << getFrame()->id() << " - " << getFrameOther()->id() << std::endl; + std::cout << "\tpreint: " << acc_bias_preint_.transpose() + << " " << gyro_bias_preint_.transpose() << std::endl; + std::cout << "\tb1: " << _ab1(0) << " " + << _ab1(1) << " " + << _ab1(2) << " " + << _wb1(0) << " " + << _wb1(1) << " " + << _wb1(2) << "\n"; + std::cout << "\tb2: " << _ab2(0) << " " + << _ab2(1) << " " + << _ab2(2) << " " + << _wb2(0) << " " + << _wb2(1) << " " + << _wb2(2) << "\n"; + std::cout << "\tb2-b1 " << _ab2(0)-_ab1(0) << " " + << _ab2(1)-_ab1(1) << " " + << _ab2(2)-_ab1(2) << " " + << _wb2(0)-_wb1(0) << " " + << _wb2(1)-_wb1(1) << " " + << _wb2(2)-_wb1(2) << "\n"; + } + // print values ----------------------- Matrix<T, 10, 1> x1; x1 << _p1 , _q1.coeffs(), _v1; Matrix<T, 10, 1> x2; x2 << _p2 , _q2.coeffs(), _v2; diff --git a/include/imu/math/imu_tools.h b/include/imu/math/imu_tools.h index 5be0bbd2b3ff0ace7264b83db249f382740ba362..d9b0b58454132c8abaa11d50a5847d18b829337f 100644 --- a/include/imu/math/imu_tools.h +++ b/include/imu/math/imu_tools.h @@ -80,9 +80,9 @@ inline Matrix<T, 10, 1> identity() inline VectorComposite identityComposite() { VectorComposite D; - D.emplace("P", Vector3d::Zero()); - D.emplace("O", Quaterniond::Identity().coeffs()); - D.emplace("V", Vector3d::Zero()); + D.emplace('P', Vector3d::Zero()); + D.emplace('O', Quaterniond::Identity().coeffs()); + D.emplace('V', Vector3d::Zero()); return D; } @@ -194,13 +194,13 @@ inline void compose(const MatrixBase<D1>& d1, inline void compose(const VectorComposite& d1, const VectorComposite& d2, double dt, VectorComposite& dc) { - compose(d1.at("P"), d1.at("O"), d1.at("V"), d2.at("P"), d2.at("O"), d2.at("V"), dt, dc["P"], dc["O"], dc["V"]); + compose(d1.at('P'), d1.at('O'), d1.at('V'), d2.at('P'), d2.at('O'), d2.at('V'), dt, dc['P'], dc['O'], dc['V']); } inline VectorComposite compose(const VectorComposite& d1, const VectorComposite& d2, double dt) { VectorComposite dc("POV", {3,4,3}); - compose(d1.at("P"), d1.at("O"), d1.at("V"), d2.at("P"), d2.at("O"), d2.at("V"), dt, dc["P"], dc["O"], dc["V"]); + compose(d1.at('P'), d1.at('O'), d1.at('V'), d2.at('P'), d2.at('O'), d2.at('V'), dt, dc['P'], dc['O'], dc['V']); return dc; } @@ -258,33 +258,33 @@ inline void compose(const VectorComposite& d1, { // Some useful temporaries - Matrix3d dR1 = q2R(d1.at("O")); //dq1.matrix(); // First Delta, DR - Matrix3d dR2 = q2R(d2.at("O")); //dq2.matrix(); // Second delta, dR + Matrix3d dR1 = q2R(d1.at('O')); //dq1.matrix(); // First Delta, DR + Matrix3d dR2 = q2R(d2.at('O')); //dq2.matrix(); // Second delta, dR // Jac wrt first delta // TODO find optimal way to re-use memory allocation!!! J_sum_d1.clear(); - J_sum_d1.emplace("P","P", Matrix3d::Identity()); // dDp'/dDp = I - J_sum_d1.emplace("P","O", - dR1 * skew(d2.at("P"))) ; // dDp'/dDo - J_sum_d1.emplace("P","V", Matrix3d::Identity() * dt); // dDp'/dDv = I*dt - J_sum_d1.emplace("O","P", Matrix3d::Zero()); - J_sum_d1.emplace("O","O", dR2.transpose()); // dDo'/dDo - J_sum_d1.emplace("O","V", Matrix3d::Zero()); - J_sum_d1.emplace("V","P", Matrix3d::Zero()); - J_sum_d1.emplace("V","O", - dR1 * skew(d2.at("V"))) ; // dDv'/dDo - J_sum_d1.emplace("V","V", Matrix3d::Identity()); // dDv'/dDv = I + J_sum_d1.emplace('P','P', Matrix3d::Identity()); // dDp'/dDp = I + J_sum_d1.emplace('P','O', - dR1 * skew(d2.at('P'))) ; // dDp'/dDo + J_sum_d1.emplace('P','V', Matrix3d::Identity() * dt); // dDp'/dDv = I*dt + J_sum_d1.emplace('O','P', Matrix3d::Zero()); + J_sum_d1.emplace('O','O', dR2.transpose()); // dDo'/dDo + J_sum_d1.emplace('O','V', Matrix3d::Zero()); + J_sum_d1.emplace('V','P', Matrix3d::Zero()); + J_sum_d1.emplace('V','O', - dR1 * skew(d2.at('V'))) ; // dDv'/dDo + J_sum_d1.emplace('V','V', Matrix3d::Identity()); // dDv'/dDv = I // Jac wrt second delta J_sum_d2.clear(); - J_sum_d2.emplace("P","P", dR1); // dDp'/ddp - J_sum_d2.emplace("P","O", Matrix3d::Zero()) ; // dDp'/ddo - J_sum_d2.emplace("P","V", Matrix3d::Zero()); // dDp'/ddv - J_sum_d2.emplace("O","P", Matrix3d::Zero()); - J_sum_d2.emplace("O","O", Matrix3d::Identity());// dDo'/ddo - J_sum_d2.emplace("O","V", Matrix3d::Zero()); - J_sum_d2.emplace("V","P", Matrix3d::Zero()); - J_sum_d2.emplace("V","O", Matrix3d::Zero()) ; // dDv'/ddo - J_sum_d2.emplace("V","V", dR1); // dDv'/ddv + J_sum_d2.emplace('P','P', dR1); // dDp'/ddp + J_sum_d2.emplace('P','O', Matrix3d::Zero()) ; // dDp'/ddo + J_sum_d2.emplace('P','V', Matrix3d::Zero()); // dDp'/ddv + J_sum_d2.emplace('O','P', Matrix3d::Zero()); + J_sum_d2.emplace('O','O', Matrix3d::Identity());// dDo'/ddo + J_sum_d2.emplace('O','V', Matrix3d::Zero()); + J_sum_d2.emplace('V','P', Matrix3d::Zero()); + J_sum_d2.emplace('V','O', Matrix3d::Zero()) ; // dDv'/ddo + J_sum_d2.emplace('V','V', dR1); // dDv'/ddv // compose deltas -- done here to avoid aliasing when calling with input `d1` and result `sum` referencing the same variable compose(d1, d2, dt, sum); @@ -428,14 +428,14 @@ inline void composeOverState(const VectorComposite& x, T dt, VectorComposite& x_plus_d) { - assert(x_plus_d.count("P") && "provided reference does not have key 'P'"); - assert(x_plus_d.count("O") && "provided reference does not have key 'O'"); - assert(x_plus_d.count("V") && "provided reference does not have key 'V'"); + assert(x_plus_d.count('P') && "provided reference does not have key 'P'"); + assert(x_plus_d.count('O') && "provided reference does not have key 'O'"); + assert(x_plus_d.count('V') && "provided reference does not have key 'V'"); - composeOverState(x.at("P"), x.at("O"), x.at("V"), - d.at("P"), d.at("O"), d.at("V"), + composeOverState(x.at('P'), x.at('O'), x.at('V'), + d.at('P'), d.at('O'), d.at('V'), dt, - x_plus_d["P"], x_plus_d["O"], x_plus_d["V"]); + x_plus_d['P'], x_plus_d['O'], x_plus_d['V']); } template<class T> @@ -592,7 +592,7 @@ inline Matrix<typename D1::Scalar, 10, 1> plus(const MatrixBase<D1>& d1, inline void plus(const VectorComposite& x, const VectorComposite& tau, VectorComposite& res) { - plus(x.at("P"), x.at("O"), x.at("V"), tau.at("P"), tau.at("O"), tau.at("V"), res.at("P"), res.at("O"), res.at("V")); + plus(x.at('P'), x.at('O'), x.at('V'), tau.at('P'), tau.at('O'), tau.at('V'), res.at('P'), res.at('O'), res.at('V')); } inline VectorComposite plus(const VectorComposite& x, const VectorComposite& tau) @@ -755,22 +755,12 @@ inline void body2delta(const MatrixBase<D1>& body, { MatrixSizeCheck<6,1>::check(body); -// _delta["P"] = Vector3d(); -// _delta["O"] = Vector4d(); -// _delta["V"] = Vector3d(); - body2delta(body.block(0,0,3,1), body.block(3,0,3,1), dt, - _delta["P"], - _delta["O"], - _delta["V"]); -// body2delta(body.block(0,0,3,1), -// body.block(3,0,3,1), -// dt, -// _delta.at("P"), -// _delta.at("O"), -// _delta.at("V")); + _delta['P'], + _delta['O'], + _delta['V']); } template<typename D1, typename D2, typename D3> @@ -808,29 +798,12 @@ inline void body2delta(const MatrixBase<D1>& body, Matrix<T, 3, 1> w = body.block(3,0,3,1); -// jac_body.setZero(); -// jac_body.block(0,0,3,3) = 0.5 * dt * dt * Matrix<T, 3, 3>::Identity(); -// jac_body.block(3,3,3,3) = dt * jac_SO3_right(w * dt); -// jac_body.block(6,0,3,3) = dt * Matrix<T, 3, 3>::Identity(); - -// Matrix<double, 3, 6> J_dp_data; -// Matrix<double, 3, 6> J_do_data; -// Matrix<double, 3, 6> J_dv_data; - -// jac_body.emplace("P","I", MatrixXd(3,6)); -// jac_body.emplace("O","I", MatrixXd(3,6)); -// jac_body.emplace("V","I", MatrixXd(3,6)); -// -// jac_body.at("P","I") << 0.5 * dt * dt * Matrix3d::Identity() , Matrix3d::Zero() ; -// jac_body.at("O","I") << Matrix3d::Zero() , dt * jac_SO3_right(w * dt) ; -// jac_body.at("V","I") << dt * Matrix3d::Identity() , Matrix3d::Zero() ; - - jac_body.emplace("P","a", 0.5 * dt * dt * Matrix3d::Identity()); // 0,0 - jac_body.emplace("P","w", Matrix3d::Zero()); // 0,3 - jac_body.emplace("O","a", Matrix3d::Zero()); // 3,0 - jac_body.emplace("O","w", dt * jac_SO3_right(w * dt)); // 3,3 - jac_body.emplace("V","a", dt * Matrix3d::Identity()); // 6,0 - jac_body.emplace("V","w", Matrix3d::Zero()); // 6,6 + jac_body.emplace('P','a', 0.5 * dt * dt * Matrix3d::Identity()); // 0,0 + jac_body.emplace('P','w', Matrix3d::Zero()); // 0,3 + jac_body.emplace('O','a', Matrix3d::Zero()); // 3,0 + jac_body.emplace('O','w', dt * jac_SO3_right(w * dt)); // 3,3 + jac_body.emplace('V','a', dt * Matrix3d::Identity()); // 6,0 + jac_body.emplace('V','w', Matrix3d::Zero()); // 6,6 } template<typename D1, typename D2, typename D3, typename D4, typename D5, typename D6, typename D7> diff --git a/src/processor/processor_imu.cpp b/src/processor/processor_imu.cpp index 42361d86e834f8572fb08d6d6071d667e5f8d6a6..bf1fe72b6241c7b66dca58738d4fe168903c8773 100644 --- a/src/processor/processor_imu.cpp +++ b/src/processor/processor_imu.cpp @@ -87,6 +87,8 @@ FeatureBasePtr ProcessorImu::emplaceFeature(CaptureMotionPtr _capture_motion) VectorXd ProcessorImu::getCalibration (const CaptureBasePtr _capture) const { + assert(_capture && "called with a null capture"); + assert(_capture->getSensorIntrinsic() && "null sensor intrinsics state block"); return _capture->getSensorIntrinsic()->getState(); } diff --git a/test/gtest_factor_imu.cpp b/test/gtest_factor_imu.cpp index 04f4ef9fc8f02bc2a4006acdaf7e757d72523507..f53f9af38ff6da00ba0f57d815d4b3a336267e9e 100644 --- a/test/gtest_factor_imu.cpp +++ b/test/gtest_factor_imu.cpp @@ -5,6 +5,7 @@ * \author: Dinesh Atchuthan */ +#include <core/ceres_wrapper/solver_ceres.h> #include <core/utils/utils_gtest.h> #include <core/utils/logging.h> @@ -17,9 +18,6 @@ //Wolf #include <core/factor/factor_pose_3d.h> #include <core/processor/processor_odom_3d.h> -#include <core/ceres_wrapper/ceres_manager.h> - -// debug #include <iostream> #include <fstream> @@ -43,7 +41,7 @@ class FactorImu_biasTest_Static_NullBias : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr KF0; @@ -66,11 +64,10 @@ class FactorImu_biasTest_Static_NullBias : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -132,7 +129,7 @@ class FactorImu_biasTest_Static_NonNullAccBias : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr KF0; @@ -154,11 +151,10 @@ class FactorImu_biasTest_Static_NonNullAccBias : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -216,7 +212,7 @@ class FactorImu_biasTest_Static_NonNullGyroBias : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -238,11 +234,10 @@ class FactorImu_biasTest_Static_NonNullGyroBias : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + //solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + //solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + //solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -300,7 +295,7 @@ class FactorImu_biasTest_Static_NonNullBias : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -322,11 +317,10 @@ class FactorImu_biasTest_Static_NonNullBias : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -386,7 +380,7 @@ class FactorImu_biasTest_Move_NullBias : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -408,11 +402,10 @@ class FactorImu_biasTest_Move_NullBias : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -473,7 +466,7 @@ class FactorImu_biasTest_Move_NonNullBias : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -495,11 +488,10 @@ class FactorImu_biasTest_Move_NonNullBias : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -556,7 +548,7 @@ class FactorImu_biasTest_Move_NonNullBiasRotCst : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -578,11 +570,10 @@ class FactorImu_biasTest_Move_NonNullBiasRotCst : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -649,7 +640,7 @@ class FactorImu_biasTest_Move_NonNullBiasRotAndVCst : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -671,11 +662,10 @@ class FactorImu_biasTest_Move_NonNullBiasRotAndVCst : 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_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -750,7 +740,7 @@ class FactorImu_biasTest_Move_NonNullBiasRot : public testing::Test wolf::TimeStamp t; SensorImuPtr sen_imu; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; FrameBasePtr origin_KF; @@ -772,11 +762,10 @@ class FactorImu_biasTest_Move_NonNullBiasRot : public testing::Test problem = Problem::create("POV", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - ceres_options.minimizer_type = ceres::TRUST_REGION; - ceres_options.max_line_search_step_contraction = 1e-3; - ceres_options.max_num_iterations = 1e4; - ceres_manager_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -846,7 +835,7 @@ class FactorImu_ODOM_biasTest_Move_NonNullBiasRot : public testing::Test public: wolf::TimeStamp t; ProblemPtr problem; - CeresManagerPtr ceres_manager; + SolverCeresPtr ceres_manager; SensorBasePtr sensor; SensorImuPtr sensor_imu; SensorOdom3dPtr sensor_odo; @@ -874,9 +863,8 @@ class FactorImu_ODOM_biasTest_Move_NonNullBiasRot : public testing::Test problem = Problem::create("POV", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - ceres_options.minimizer_type = ceres::TRUST_REGION; - ceres_manager = std::make_shared<CeresManager>(problem, ceres_options); + ceres_manager = std::make_shared<SolverCeres>(problem); + ceres_manager->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH // SENSOR + PROCESSOR Imu sensor = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -1032,7 +1020,7 @@ class FactorImu_ODOM_biasTest_Move_NonNullBiasRotY : public testing::Test SensorImuPtr sen_imu; SensorOdom3dPtr sen_odom3d; ProblemPtr problem; - CeresManager* ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor_; ProcessorImuPtr processor_imu; ProcessorOdom3dPtr processor_odom3d; @@ -1055,11 +1043,10 @@ class FactorImu_ODOM_biasTest_Move_NonNullBiasRotY : public testing::Test problem = Problem::create("POV", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - ceres_options.minimizer_type = ceres::TRUST_REGION; - ceres_options.max_line_search_step_contraction = 1e-3; - ceres_options.max_num_iterations = 1e4; - ceres_manager_wolf_diff = new CeresManager(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -1173,7 +1160,7 @@ class FactorImu_ODOM_biasTest_Move_NonNullBiasRotXY : public testing::Test SensorImuPtr sen_imu; SensorOdom3dPtr sen_odom3d; ProblemPtr problem; - CeresManagerPtr ceres_manager_wolf_diff; + SolverCeresPtr solver_wolf_diff; ProcessorBasePtr processor; ProcessorImuPtr processor_imu; ProcessorOdom3dPtr processor_odom3d; @@ -1197,11 +1184,10 @@ class FactorImu_ODOM_biasTest_Move_NonNullBiasRotXY : public testing::Test problem = Problem::create("POV", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - ceres_options.minimizer_type = ceres::TRUST_REGION; - ceres_options.max_line_search_step_contraction = 1e-3; - ceres_options.max_num_iterations = 1e4; - ceres_manager_wolf_diff = std::make_shared<CeresManager>(problem, ceres_options); + solver_wolf_diff = std::make_shared<SolverCeres>(problem); + solver_wolf_diff->getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;ceres::LINE_SEARCH + solver_wolf_diff->getSolverOptions().max_line_search_step_contraction = 1e-3; + solver_wolf_diff->getSolverOptions().max_num_iterations = 1e4; // SENSOR + PROCESSOR Imu SensorBasePtr sen0_ptr = problem->installSensor("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -1362,7 +1348,7 @@ TEST_F(FactorImu_biasTest_Static_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_initOK) KF1->getV()->fix(); KF1->getCaptureOf(sen_imu)->setCalibration((Vector6d()<<-1,-2,-3,-1,-2,-3).finished()); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1396,7 +1382,7 @@ TEST_F(FactorImu_biasTest_Static_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1414,7 +1400,7 @@ TEST_F(FactorImu_biasTest_Static_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1432,7 +1418,7 @@ TEST_F(FactorImu_biasTest_Static_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1452,7 +1438,7 @@ TEST_F(FactorImu_biasTest_Static_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1478,7 +1464,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullAccBias,VarB1B2_InvarP1Q1V1P2Q2V2_initOK KF1->getO()->fix(); KF1->getV()->fix(); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1512,7 +1498,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullAccBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBia KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1530,7 +1516,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullAccBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBia KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1548,7 +1534,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullAccBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBia KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1568,7 +1554,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullAccBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBia KF0->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); KF1->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(KF0->getCaptureOf(sen_imu)->getCalibration().head(3), origin_bias.head(3), wolf::Constants::EPS) //Acc bias @@ -1594,7 +1580,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullGyroBias,VarB1B2_InvarP1Q1V1P2Q2V2_initO last_KF->getO()->fix(); last_KF->getV()->fix(); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1626,7 +1612,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullGyroBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); last_KF ->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1641,7 +1627,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullGyroBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); last_KF->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1656,7 +1642,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullGyroBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); last_KF->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1673,7 +1659,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullGyroBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->getCaptureOf(sen_imu)->setCalibration(perturbed_bias); last_KF->getCaptureOf(sen_imu)->setCalibration(origin_bias); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1705,7 +1691,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed @@ -1721,7 +1707,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1736,7 +1722,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1753,7 +1739,7 @@ TEST_F(FactorImu_biasTest_Static_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport; //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1775,7 +1761,7 @@ TEST_F(FactorImu_biasTest_Move_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_initOK) last_KF->getO()->fix(); last_KF->getV()->fix(); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1806,7 +1792,7 @@ TEST_F(FactorImu_biasTest_Move_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1821,7 +1807,7 @@ TEST_F(FactorImu_biasTest_Move_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1836,7 +1822,7 @@ TEST_F(FactorImu_biasTest_Move_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1853,7 +1839,7 @@ TEST_F(FactorImu_biasTest_Move_NullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(last_KF ->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1874,7 +1860,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_initOK) last_KF->getO()->fix(); last_KF->getV()->fix(); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1905,7 +1891,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF); // 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1920,7 +1906,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1935,7 +1921,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1952,7 +1938,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBias,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBias) origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -1974,7 +1960,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotCst,VarB1B2_InvarP1Q1V1P2Q2V2_initO last_KF->getO()->fix(); last_KF->getV()->fix(); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2005,7 +1991,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotCst,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2020,7 +2006,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotCst,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2035,7 +2021,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotCst,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2052,7 +2038,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotCst,VarB1B2_InvarP1Q1V1P2Q2V2_ErrBi origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2074,7 +2060,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst,VarB1B2_InvarP1Q1V1P2Q2V2_i last_KF->getO()->fix(); last_KF->getV()->fix(); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2105,7 +2091,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst,VarB1B2_InvarP1Q1V1P2Q2V2_E origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2120,7 +2106,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst,VarB1B2_InvarP1Q1V1P2Q2V2_E origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2135,7 +2121,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst,VarB1B2_InvarP1Q1V1P2Q2V2_E origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2152,7 +2138,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst,VarB1B2_InvarP1Q1V1P2Q2V2_E origin_KF->setState(x_origin); last_KF->setState(expected_final_state); - report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2174,7 +2160,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst, VarB1B2V1P2V2_InvarP1Q1Q2_ last_KF->setState(expected_final_state); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2195,7 +2181,7 @@ TEST_F(FactorImu_biasTest_Move_NonNullBiasRotAndVCst, VarB1B2V1P2V2_InvarP1Q1Q2_ // // last_KF->setState(expected_final_state); // -// std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport +// std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport // // //Only biases are unfixed // ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-3) @@ -2221,8 +2207,8 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2_InvarP1Q1V1P2Q2V2_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport - ceres_manager_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + solver_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); //Only biases are unfixed ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2266,8 +2252,8 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2V2_InvarP1Q1V1P2Q2_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport - ceres_manager_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + solver_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) ASSERT_MATRIX_APPROX(last_KF ->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2313,8 +2299,8 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2V1V2_InvarP1Q1P2Q2_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport - //ceres_manager_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + //solver_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) ASSERT_MATRIX_APPROX(last_KF ->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2342,7 +2328,7 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2V1Q2V2_InvarP1Q1P2_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) ASSERT_MATRIX_APPROX(last_KF ->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2372,7 +2358,7 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2V1P2V2_InvarP1Q1Q2_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport ASSERT_MATRIX_APPROX(origin_KF->getV()->getState(), x_origin.segment(7,3), wolf::Constants::EPS*1000) ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2400,7 +2386,7 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2V1P2Q2V2_InvarP1Q1_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport ASSERT_MATRIX_APPROX(origin_KF->getV()->getState(), x_origin.segment(7,3), wolf::Constants::EPS*10000) ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2429,8 +2415,8 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarB1B2P2Q2V2_InvarP1Q1V1_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport - ceres_manager_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + solver_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); ASSERT_MATRIX_APPROX(origin_KF->getV()->getState(), x_origin.segment(7,3), wolf::Constants::EPS*1000) ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2487,8 +2473,8 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotY, VarQ1B1B2P2Q2_InvarP1V1V2_i Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport - ceres_manager_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + solver_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); ASSERT_MATRIX_APPROX(origin_KF->getV()->getState(), x_origin.segment(7,3), wolf::Constants::EPS*1000) ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) @@ -2548,8 +2534,8 @@ TEST_F(FactorImu_ODOM_biasTest_Move_NonNullBiasRotXY, VarQ1B1B2P2Q2_InvarP1V1V2_ Eigen::Vector6d bias = origin_KF->getCaptureOf(sen_imu)->getCalibration(); origin_KF->getCaptureOf(sen_imu)->setCalibration(bias + random_err); - std::string report = ceres_manager_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport - ceres_manager_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); + std::string report = solver_wolf_diff->solve(SolverManager::ReportVerbosity::BRIEF);// 0: nothing, 1: BriefReport, 2: FullReport + solver_wolf_diff->computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL); ASSERT_MATRIX_APPROX(origin_KF->getV()->getState(), x_origin.segment(7,3), wolf::Constants::EPS*1000) ASSERT_MATRIX_APPROX(origin_KF->getCaptureOf(sen_imu)->getCalibration(), origin_bias, 1e-5) diff --git a/test/gtest_feature_imu.cpp b/test/gtest_feature_imu.cpp index bc87d0be0abc0c5118f772b106c7676c87f52642..916dc5c53d7064d1f4ca26bf941bb206fccd3c7a 100644 --- a/test/gtest_feature_imu.cpp +++ b/test/gtest_feature_imu.cpp @@ -50,21 +50,15 @@ class FeatureImu_test : public testing::Test // Time and data variables TimeStamp t; - Eigen::Vector6d data_; + Eigen::Vector6d data_=Eigen::Vector6d::Zero(); t.set(0); // Set the origin VectorComposite x0("POV", {Vector3d::Zero(), Quaterniond::Identity().coeffs(), Vector3d::Zero()}); VectorComposite s0("POV", {Vector3d(1,1,1), Vector3d(1,1,1), Vector3d(1,1,1)}); - problem->setPriorOptions("factor", 0.01, x0, s0); - // initial dummy capture process for seting prior at t=0 - std::make_shared<CaptureImu>(t, - sensor_ptr, - data_, - Eigen::Matrix6d::Identity()*0.01, - Eigen::Vector6d::Zero())->process(); - origin_frame = problem->getTrajectory()->getFirstFrame(); + origin_frame = problem->setPriorFactor(x0, s0, t, 0.01); + processor_motion_ptr_->setOrigin(origin_frame); // Emplace one capture to store the Imu data arriving from (sensor / callback / file / etc.) // give the capture a big covariance, otherwise it will be so small that it won't pass following assertions diff --git a/test/gtest_imu.cpp b/test/gtest_imu.cpp index 98695a245cd761d49733a4af2dd3658ee522fb9e..60d54ca54c8a6da097ae9b91381f47b2422b5b3d 100644 --- a/test/gtest_imu.cpp +++ b/test/gtest_imu.cpp @@ -6,6 +6,8 @@ */ //Wolf +#include <core/ceres_wrapper/solver_ceres.h> + #include "imu/processor/processor_imu.h" #include "imu/sensor/sensor_imu.h" @@ -14,8 +16,6 @@ #include <core/common/wolf.h> #include <core/sensor/sensor_odom_3d.h> #include <core/processor/processor_odom_3d.h> -#include <core/ceres_wrapper/ceres_manager.h> - #include <core/utils/utils_gtest.h> //#include <core/utils/logging.h> @@ -34,7 +34,7 @@ class Process_Factor_Imu : public testing::Test public: // Wolf objects ProblemPtr problem; - CeresManagerPtr ceres_manager; + SolverCeresPtr solver; SensorImuPtr sensor_imu; ProcessorImuPtr processor_imu; CaptureImuPtr capture_imu; @@ -105,8 +105,7 @@ class Process_Factor_Imu : public testing::Test problem = Problem::create("POV", 3); // CERES WRAPPER - ceres::Solver::Options ceres_options; - ceres_manager = make_shared<CeresManager>(problem, ceres_options); + solver = make_shared<SolverCeres>(problem); // SENSOR + PROCESSOR Imu SensorBasePtr sensor = problem->installSensor ("SensorImu", "Main Imu", (Vector7d()<<0,0,0,0,0,0,1).finished(), wolf_root + "/demos/sensor_imu.yaml"); @@ -524,7 +523,7 @@ class Process_Factor_Imu : public testing::Test string solveProblem(SolverManager::ReportVerbosity verbose = SolverManager::ReportVerbosity::BRIEF) { - string report = ceres_manager->solve(verbose); + string report = solver->solve(verbose); bias_0 = C_0->getSensorIntrinsic()->getState(); bias_1 = C_1->getSensorIntrinsic()->getState(); diff --git a/test/gtest_processor_imu.cpp b/test/gtest_processor_imu.cpp index d04e18cbc06050de3be8259d49b09f8f3bf933a1..9ba48e91aee18e61ab938eba4179ad5de2ea7104 100644 --- a/test/gtest_processor_imu.cpp +++ b/test/gtest_processor_imu.cpp @@ -16,9 +16,6 @@ #include "core/utils/logging.h" #include "core/math/rotations.h" -#include "core/ceres_wrapper/ceres_manager.h" - - #include <cmath> #include <iostream> @@ -61,6 +58,7 @@ class ProcessorImut : public testing::Test processor_motion = std::static_pointer_cast<ProcessorMotion>(processor_ptr); // Time and data variables + t.set(0); data = Vector6d::Zero(); data_cov = Matrix6d::Identity();