diff --git a/hello_wolf/processor_range_bearing.cpp b/hello_wolf/processor_range_bearing.cpp index 54bbb3aec498cacc736321f77abc127a24414106..dbd86a30e2a5c3499c4aca126f12f875d98b0a48 100644 --- a/hello_wolf/processor_range_bearing.cpp +++ b/hello_wolf/processor_range_bearing.cpp @@ -75,7 +75,7 @@ void ProcessorRangeBearing::processCapture(CaptureBasePtr _capture) { // new landmark: // - create landmark - lmk = std::static_pointer_cast<LandmarkPoint2D>(LandmarkBase::emplace<LandmarkPoint2D>(getProblem()->getMap(), id, invObserve(range, bearing))); + lmk = LandmarkBase::emplace<LandmarkPoint2D>(getProblem()->getMap(), id, invObserve(range, bearing)); WOLF_TRACE("new lmk(", id, "): ", lmk->getP()->getState().transpose()); // - add to known landmarks known_lmks.emplace(id, lmk); diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp index eab55cc02cf4d12045fddf7813c4d7cdf87f35b4..60b395cf8719bb2f10ce1e481888afe1c8c240f9 100644 --- a/src/problem/problem.cpp +++ b/src/problem/problem.cpp @@ -759,16 +759,10 @@ FrameBasePtr Problem::setPrior(const Eigen::VectorXs& _prior_state, const Eigen: // create origin capture with the given state as data // Capture fix only takes 3D position and Quaternion orientation CapturePosePtr init_capture; - CaptureBasePtr init_capture_base; - // init_capture = std::make_shared<CapturePose>(_ts, nullptr, _prior_state.head(7), _prior_cov.topLeftCorner(6,6)); - // init_capture = std::make_shared<CapturePose>(_ts, nullptr, _prior_state, _prior_cov); if (this->getFrameStructure() == "POV" and this->getDim() == 3) - init_capture_base = CaptureBase::emplace<CapturePose>(origin_keyframe, _ts, nullptr, _prior_state.head(7), _prior_cov.topLeftCorner(6,6)); + init_capture = CaptureBase::emplace<CapturePose>(origin_keyframe, _ts, nullptr, _prior_state.head(7), _prior_cov.topLeftCorner(6,6)); else - init_capture_base = CaptureBase::emplace<CapturePose>(origin_keyframe, _ts, nullptr, _prior_state, _prior_cov); - - init_capture = std::static_pointer_cast<CapturePose>(init_capture_base); - // origin_keyframe->addCapture(init_capture); + init_capture = CaptureBase::emplace<CapturePose>(origin_keyframe, _ts, nullptr, _prior_state, _prior_cov); // emplace feature and factor init_capture->emplaceFeatureAndFactor(); diff --git a/src/processor/processor_diff_drive.cpp b/src/processor/processor_diff_drive.cpp index 395a2520b00ddbb85ecabae25d4c03bc6e09dda2..a1abf31c8acfb5d58006b6c3ad170893bdfb6b1e 100644 --- a/src/processor/processor_diff_drive.cpp +++ b/src/processor/processor_diff_drive.cpp @@ -207,15 +207,15 @@ CaptureMotionPtr ProcessorDiffDrive::emplaceCapture(const FrameBasePtr& _frame_o StateBlockPtr i_ptr = _sensor->isIntrinsicDynamic()? std::make_shared<StateBlock>(3, false) : nullptr; - auto cap_motion = std::static_pointer_cast<CaptureMotion>(CaptureBase::emplace<CaptureWheelJointPosition>(_frame_own, - _ts, - _sensor, - _data, - _data_cov, - _frame_origin, - nullptr, - nullptr, - i_ptr)); + auto cap_motion = CaptureBase::emplace<CaptureWheelJointPosition>(_frame_own, + _ts, + _sensor, + _data, + _data_cov, + _frame_origin, + nullptr, + nullptr, + i_ptr); cap_motion->setCalibration(_calib); cap_motion->setCalibrationPreint(_calib_preint); @@ -225,8 +225,10 @@ CaptureMotionPtr ProcessorDiffDrive::emplaceCapture(const FrameBasePtr& _frame_o FactorBasePtr ProcessorDiffDrive::emplaceFactor(FeatureBasePtr _feature, CaptureBasePtr _capture_origin) { - auto fac_odom = FactorBase::emplace<FactorOdom2D>(_feature, _feature, _capture_origin->getFrame(), - shared_from_this()); + auto fac_odom = FactorBase::emplace<FactorOdom2D>(_feature, + _feature, + _capture_origin->getFrame(), + shared_from_this()); return fac_odom; } diff --git a/src/processor/processor_odom_2D.cpp b/src/processor/processor_odom_2D.cpp index 48a2747789e943fc76a171c894c5802635bc0093..16253a32fa230da41fb6f123f151304640cdef8f 100644 --- a/src/processor/processor_odom_2D.cpp +++ b/src/processor/processor_odom_2D.cpp @@ -153,7 +153,7 @@ CaptureMotionPtr ProcessorOdom2D::emplaceCapture(const FrameBasePtr& _frame_own, const VectorXs& _calib_preint, const FrameBasePtr& _frame_origin) { - auto cap_motion = std::static_pointer_cast<CaptureMotion>(CaptureBase::emplace<CaptureOdom2D>(_frame_own, _ts, _sensor, _data, _data_cov, _frame_origin)); + auto cap_motion = CaptureBase::emplace<CaptureOdom2D>(_frame_own, _ts, _sensor, _data, _data_cov, _frame_origin); cap_motion->setCalibration(_calib); cap_motion->setCalibrationPreint(_calib_preint); @@ -162,7 +162,9 @@ CaptureMotionPtr ProcessorOdom2D::emplaceCapture(const FrameBasePtr& _frame_own, FactorBasePtr ProcessorOdom2D::emplaceFactor(FeatureBasePtr _feature, CaptureBasePtr _capture_origin) { - auto fac_odom = FactorBase::emplace<FactorOdom2D>(_feature, _feature, _capture_origin->getFrame(), + auto fac_odom = FactorBase::emplace<FactorOdom2D>(_feature, + _feature, + _capture_origin->getFrame(), shared_from_this()); return fac_odom; } diff --git a/src/processor/processor_odom_3D.cpp b/src/processor/processor_odom_3D.cpp index 76fc35d3bc166eb30e878ab2e61b4f4fbe2950e3..3168276f93aa8da7c5220aaba098503863ff0e68 100644 --- a/src/processor/processor_odom_3D.cpp +++ b/src/processor/processor_odom_3D.cpp @@ -404,7 +404,7 @@ CaptureMotionPtr ProcessorOdom3D::emplaceCapture(const FrameBasePtr& _frame_own, const VectorXs& _calib_preint, const FrameBasePtr& _frame_origin) { - auto cap_motion = std::static_pointer_cast<CaptureMotion>(CaptureBase::emplace<CaptureOdom3D>(_frame_own, _ts, _sensor, _data, _data_cov, _frame_origin)); + auto cap_motion = CaptureBase::emplace<CaptureOdom3D>(_frame_own, _ts, _sensor, _data, _data_cov, _frame_origin); cap_motion->setCalibration(_calib); cap_motion->setCalibrationPreint(_calib_preint); diff --git a/test/gtest_ceres_manager.cpp b/test/gtest_ceres_manager.cpp index 1f508dbe5cb760e6c5360d4cab16d5f4eb378ac7..da5a01b80e98cf776957422d5bca8729b89ff038 100644 --- a/test/gtest_ceres_manager.cpp +++ b/test/gtest_ceres_manager.cpp @@ -321,7 +321,7 @@ TEST(CeresManager, AddFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f,f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f,f); // update solver ceres_manager_ptr->update(); @@ -343,7 +343,7 @@ TEST(CeresManager, DoubleAddFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f,f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f,f); // add factor again P->notifyFactor(c,ADD); @@ -368,7 +368,7 @@ TEST(CeresManager, RemoveFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f,f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f,f); // update solver ceres_manager_ptr->update(); @@ -396,7 +396,7 @@ TEST(CeresManager, AddRemoveFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f,f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f,f); // remove factor P->notifyFactor(c,REMOVE); @@ -423,7 +423,7 @@ TEST(CeresManager, DoubleRemoveFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f,f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f,f); // update solver ceres_manager_ptr->update(); @@ -550,8 +550,8 @@ TEST(CeresManager, FactorsRemoveLocalParam) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorQuaternionAbsolutePtr c1 = std::static_pointer_cast<FactorQuaternionAbsolute>(FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO())); - FactorQuaternionAbsolutePtr c2 = std::static_pointer_cast<FactorQuaternionAbsolute>(FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO())); + FactorQuaternionAbsolutePtr c1 = FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO()); + FactorQuaternionAbsolutePtr c2 = FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO()); // update solver ceres_manager_ptr->update(); @@ -592,8 +592,8 @@ TEST(CeresManager, FactorsUpdateLocalParam) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorQuaternionAbsolutePtr c1 = std::static_pointer_cast<FactorQuaternionAbsolute>(FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO())); - FactorQuaternionAbsolutePtr c2 = std::static_pointer_cast<FactorQuaternionAbsolute>(FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO())); + FactorQuaternionAbsolutePtr c1 = FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO()); + FactorQuaternionAbsolutePtr c2 = FactorBase::emplace<FactorQuaternionAbsolute>(f, F->getO()); // update solver ceres_manager_ptr->update(); diff --git a/test/gtest_factor_absolute.cpp b/test/gtest_factor_absolute.cpp index af452608f8a602ad2128ea5c44b81cf832b6004b..7213c1084cf13077a0413cbbea48af0676b330d8 100644 --- a/test/gtest_factor_absolute.cpp +++ b/test/gtest_factor_absolute.cpp @@ -38,7 +38,6 @@ CeresManager ceres_mgr(problem_ptr); FrameBasePtr frm0 = problem_ptr->emplaceFrame(KEY, problem_ptr->zeroState(), TimeStamp(0)); // Capture, feature and factor -// CaptureBasePtr cap0 = frm0->addCapture(std::make_shared<CaptureMotion>("IMU ABS", 0, nullptr, pose10, 10, 9, nullptr)); auto cap0 = CaptureBase::emplace<CaptureMotion>(frm0, "IMU ABS", 0, nullptr, pose10, 10, 9, nullptr); //////////////////////////////////////////////////////// @@ -49,9 +48,7 @@ auto cap0 = CaptureBase::emplace<CaptureMotion>(frm0, "IMU ABS", 0, nullptr, pos TEST(FactorBlockAbs, fac_block_abs_p) { - // FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("POSITION", pose10.head<3>(), data_cov.topLeftCorner<3,3>())); auto fea0 = FeatureBase::emplace<FeatureBase>(cap0, "POSITION", pose10.head<3>(), data_cov.topLeftCorner<3,3>()); - // fea0->addFactor(std::make_shared<FactorBlockAbsolute>(fea0->getFrame()->getP())); FactorBase::emplace<FactorBlockAbsolute>(fea0, fea0->getFrame()->getP()); ASSERT_TRUE(problem_ptr->check(0)); @@ -69,9 +66,7 @@ TEST(FactorBlockAbs, fac_block_abs_p) TEST(FactorBlockAbs, fac_block_abs_p_tail2) { - // FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("POSITION TAIL 2", pose10.segment<2>(1), data_cov.bottomRightCorner<2,2>())); auto fea0 = FeatureBase::emplace<FeatureBase>(cap0, "POSITION TAIL 2", pose10.segment<2>(1), data_cov.bottomRightCorner<2,2>()); - // fea0->addFactor(std::make_shared<FactorBlockAbsolute>(fea0->getFrame()->getP(),1,2)); FactorBase::emplace<FactorBlockAbsolute>(fea0, fea0->getFrame()->getP(),1,2); // Unfix frame 0, perturb frm0 @@ -87,9 +82,7 @@ TEST(FactorBlockAbs, fac_block_abs_p_tail2) TEST(FactorBlockAbs, fac_block_abs_v) { - // FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("VELOCITY", pose10.tail<3>(), data_cov.bottomRightCorner<3,3>())); auto fea0 = FeatureBase::emplace<FeatureBase>(cap0, "VELOCITY", pose10.tail<3>(), data_cov.bottomRightCorner<3,3>()); - // fea0->addFactor(std::make_shared<FactorBlockAbsolute>(fea0->getFrame()->getV())); FactorBase::emplace<FactorBlockAbsolute>(fea0, fea0->getFrame()->getV()); ASSERT_TRUE(problem_ptr->check(0)); @@ -107,9 +100,7 @@ TEST(FactorBlockAbs, fac_block_abs_v) TEST(FactorQuatAbs, fac_block_abs_o) { - // FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("QUATERNION", pose10.segment<4>(3), data_cov.block<3,3>(3,3))); auto fea0 = FeatureBase::emplace<FeatureBase>(cap0, "QUATERNION", pose10.segment<4>(3), data_cov.block<3,3>(3,3)); - // fea0->addFactor(std::make_shared<FactorQuaternionAbsolute>(fea0->getFrame()->getO())); FactorBase::emplace<FactorQuaternionAbsolute>(fea0, fea0->getFrame()->getO()); ASSERT_TRUE(problem_ptr->check(0)); diff --git a/test/gtest_factor_autodiff.cpp b/test/gtest_factor_autodiff.cpp index 108ae75cdb54fa50a3caf5eaa9733a096b893578..1ad1635a2a980b73771171e4b238e3db222f1d19 100644 --- a/test/gtest_factor_autodiff.cpp +++ b/test/gtest_factor_autodiff.cpp @@ -29,19 +29,12 @@ TEST(CaptureAutodiff, ConstructorOdom2d) SensorOdom2DPtr sensor_ptr = std::make_shared<SensorOdom2D>(Vector3s::Zero(), intrinsics_odo); // CAPTURE - // CaptureVoidPtr capture_ptr = std::make_shared<CaptureVoid>(TimeStamp(0), sensor_ptr); - // fr2_ptr->addCapture(capture_ptr); auto capture_ptr = CaptureBase::emplace<CaptureVoid>(fr2_ptr, TimeStamp(0), sensor_ptr); // FEATURE - // FeatureBasePtr feature_ptr = std::make_shared<FeatureOdom2D>(Eigen::Vector3s::Zero(), Eigen::Matrix3s::Identity()); - // capture_ptr->addFeature(feature_ptr); auto feature_ptr = FeatureBase::emplace<FeatureOdom2D>(capture_ptr, Eigen::Vector3s::Zero(), Eigen::Matrix3s::Identity()); // FACTOR - // FactorOdom2DPtr factor_ptr = std::make_shared<FactorOdom2D>(feature_ptr, fr1_ptr); - // feature_ptr->addFactor(factor_ptr); - // fr1_ptr->addConstrainedBy(factor_ptr); auto factor_ptr = FactorBase::emplace<FactorOdom2D>(feature_ptr, feature_ptr, fr1_ptr); ASSERT_TRUE(factor_ptr->getFeature()); @@ -67,23 +60,15 @@ TEST(CaptureAutodiff, ResidualOdom2d) SensorOdom2DPtr sensor_ptr = std::make_shared<SensorOdom2D>(Vector3s::Zero(), intrinsics_odo); // CAPTURE - // CaptureVoidPtr capture_ptr = std::make_shared<CaptureVoid>(TimeStamp(0), sensor_ptr); - // fr2_ptr->addCapture(capture_ptr); auto capture_ptr = CaptureBase::emplace<CaptureVoid>(fr2_ptr, TimeStamp(0), sensor_ptr); // FEATURE Eigen::Vector3s d; d << -1, -4, M_PI/2; - // FeatureBasePtr feature_ptr = std::make_shared<FeatureOdom2D>(d, Eigen::Matrix3s::Identity()); - // capture_ptr->addFeature(feature_ptr); auto feature_ptr = FeatureBase::emplace<FeatureOdom2D>(capture_ptr, d, Eigen::Matrix3s::Identity()); // FACTOR - // FactorOdom2DPtr factor_ptr = std::make_shared<FactorOdom2D>(feature_ptr, fr1_ptr); - // feature_ptr->addFactor(factor_ptr); - // fr1_ptr->addConstrainedBy(factor_ptr); - auto factor_ptr = FactorBase::emplace<FactorOdom2D>(feature_ptr, feature_ptr, fr1_ptr); // EVALUATE @@ -119,21 +104,14 @@ TEST(CaptureAutodiff, JacobianOdom2d) SensorOdom2DPtr sensor_ptr = std::make_shared<SensorOdom2D>(Vector3s::Zero(), intrinsics_odo); // CAPTURE - // CaptureVoidPtr capture_ptr = std::make_shared<CaptureVoid>(TimeStamp(0), sensor_ptr); - // fr2_ptr->addCapture(capture_ptr); auto capture_ptr = CaptureBase::emplace<CaptureVoid>(fr2_ptr, TimeStamp(0), sensor_ptr); // FEATURE Eigen::Vector3s d; d << -1, -4, M_PI/2; - // FeatureBasePtr feature_ptr = std::make_shared<FeatureOdom2D>(d, Eigen::Matrix3s::Identity()); - // capture_ptr->addFeature(feature_ptr); auto feature_ptr = FeatureBase::emplace<FeatureOdom2D>(capture_ptr, d, Eigen::Matrix3s::Identity()); // FACTOR - // FactorOdom2DPtr factor_ptr = std::make_shared<FactorOdom2D>(feature_ptr, fr1_ptr); - // feature_ptr->addFactor(factor_ptr); - // fr1_ptr->addConstrainedBy(factor_ptr); auto factor_ptr = FactorBase::emplace<FactorOdom2D>(feature_ptr, feature_ptr, fr1_ptr); // COMPUTE JACOBIANS @@ -204,25 +182,15 @@ TEST(CaptureAutodiff, AutodiffVsAnalytic) SensorOdom2DPtr sensor_ptr = std::make_shared<SensorOdom2D>(Vector3s::Zero(), intrinsics_odo); // CAPTURE - // CaptureVoidPtr capture_ptr = std::make_shared<CaptureVoid>(TimeStamp(0), sensor_ptr); - // fr2_ptr->addCapture(capture_ptr); auto capture_ptr = CaptureBase::emplace<CaptureVoid>(fr2_ptr, TimeStamp(0), sensor_ptr); // FEATURE Eigen::Vector3s d; d << -1, -4, M_PI/2; - // FeatureBasePtr feature_ptr = std::make_shared<FeatureOdom2D>(d, Eigen::Matrix3s::Identity()); - // capture_ptr->addFeature(feature_ptr); auto feature_ptr = FeatureBase::emplace<FeatureOdom2D>(capture_ptr, d, Eigen::Matrix3s::Identity()); // FACTOR - // FactorOdom2DPtr fac_autodiff_ptr = std::make_shared<FactorOdom2D>(feature_ptr, fr1_ptr); - // feature_ptr->addFactor(fac_autodiff_ptr); - // fr1_ptr->addConstrainedBy(fac_autodiff_ptr); auto fac_autodiff_ptr = FactorBase::emplace<FactorOdom2D>(feature_ptr, feature_ptr, fr1_ptr); - // FactorOdom2DAnalyticPtr fac_analytic_ptr = std::make_shared<FactorOdom2DAnalytic>(feature_ptr, fr1_ptr); - // feature_ptr->addFactor(fac_analytic_ptr); - // fr1_ptr->addConstrainedBy(fac_analytic_ptr); auto fac_analytic_ptr = FactorBase::emplace<FactorOdom2DAnalytic>(feature_ptr, feature_ptr, fr1_ptr); // COMPUTE JACOBIANS diff --git a/test/gtest_factor_autodiff_distance_3D.cpp b/test/gtest_factor_autodiff_distance_3D.cpp index 6fb4c644e4abc8045d1c842d533e5a73286cb431..bb5e6092e414b5520ff399b40803856f0f91e6cd 100644 --- a/test/gtest_factor_autodiff_distance_3D.cpp +++ b/test/gtest_factor_autodiff_distance_3D.cpp @@ -60,7 +60,7 @@ class FactorAutodiffDistance3D_Test : public testing::Test F2 = problem->emplaceFrame (KEY, pose2, 2.0); C2 = CaptureBase::emplace<CaptureBase>(F2, "Base", 1.0); f2 = FeatureBase::emplace<FeatureBase>(C2, "Dist", dist, dist_cov); - c2 = std::static_pointer_cast<FactorAutodiffDistance3D>(FactorBase::emplace<FactorAutodiffDistance3D>(f2, f2, F1, nullptr, false, FAC_ACTIVE)); + c2 = FactorBase::emplace<FactorAutodiffDistance3D>(f2, f2, F1, nullptr, false, FAC_ACTIVE); } diff --git a/test/gtest_factor_odom_3D.cpp b/test/gtest_factor_odom_3D.cpp index 7c239323a93e009a7e8f4c71eca650022ee2cd94..d6eb4ddf7ea7b07cdb675b96cb7af81e3adc3c8d 100644 --- a/test/gtest_factor_odom_3D.cpp +++ b/test/gtest_factor_odom_3D.cpp @@ -41,13 +41,9 @@ FrameBasePtr frm0 = problem_ptr->emplaceFrame(KEY, problem_ptr->zeroState(), Tim FrameBasePtr frm1 = problem_ptr->emplaceFrame(KEY, delta, TimeStamp(1)); // Capture, feature and factor from frm1 to frm0 -// CaptureBasePtr cap1 = frm1->addCapture(std::make_shared<CaptureMotion>("ODOM 3D", 1, nullptr, delta, 7, 6, nullptr)); auto cap1 = CaptureBase::emplace<CaptureMotion>(frm1, "ODOM 3D", 1, nullptr, delta, 7, 6, nullptr); -// FeatureBasePtr fea1 = cap1->addFeature(std::make_shared<FeatureBase>("ODOM 3D", delta, data_cov)); auto fea1 = FeatureBase::emplace<FeatureBase>(cap1, "ODOM 3D", delta, data_cov); -// FactorOdom3DPtr ctr1 = std::static_pointer_cast<FactorOdom3D>(fea1->addFactor(std::make_shared<FactorOdom3D>(fea1, frm0, nullptr))); // create and add -FactorOdom3DPtr ctr1 = std::static_pointer_cast<FactorOdom3D>(FactorBase::emplace<FactorOdom3D>(fea1, fea1, frm0, nullptr)); // create and add -// FactorBasePtr dummy = frm0->addConstrainedBy(ctr1); +FactorOdom3DPtr ctr1 = FactorBase::emplace<FactorOdom3D>(fea1, fea1, frm0, nullptr); // create and add //////////////////////////////////////////////////////// diff --git a/test/gtest_factor_pose_2D.cpp b/test/gtest_factor_pose_2D.cpp index c28a8946ef393b2e41de96d424108dd44691d84a..3c88521c95ab2966b839cd6ab551ef6224b27390 100644 --- a/test/gtest_factor_pose_2D.cpp +++ b/test/gtest_factor_pose_2D.cpp @@ -38,7 +38,7 @@ auto cap0 = CaptureBase::emplace<CaptureMotion>(frm0, "ODOM 2D", 0, nullptr, pos // FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("ODOM 2D", pose, data_cov)); auto fea0 = FeatureBase::emplace<FeatureBase>(cap0, "ODOM 2D", pose, data_cov); // FactorPose2DPtr ctr0 = std::static_pointer_cast<FactorPose2D>(fea0->addFactor(std::make_shared<FactorPose2D>(fea0))); -FactorPose2DPtr ctr0 = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(fea0, fea0)); +FactorPose2DPtr ctr0 = FactorBase::emplace<FactorPose2D>(fea0, fea0); //////////////////////////////////////////////////////// diff --git a/test/gtest_factor_pose_3D.cpp b/test/gtest_factor_pose_3D.cpp index eda34b179b9d579cfc535dc3d488c5fef74cbc7b..0b5032a27978d172432b7f68a04fdea28afc64ff 100644 --- a/test/gtest_factor_pose_3D.cpp +++ b/test/gtest_factor_pose_3D.cpp @@ -39,12 +39,9 @@ CeresManager ceres_mgr(problem); FrameBasePtr frm0 = problem->emplaceFrame(KEY, problem->zeroState(), TimeStamp(0)); // Capture, feature and factor -// CaptureBasePtr cap0 = frm0->addCapture(std::make_shared<CaptureMotion>("ODOM 3D", 0, nullptr, pose7, 7, 6, nullptr)); auto cap0 = CaptureBase::emplace<CaptureMotion>(frm0, "ODOM 3D", 0, nullptr, pose7, 7, 6, nullptr); -// FEATUREBASEPTR fea0 = cap0->addFeature(std::make_shared<FeatureBase>("ODOM 3D", pose7, data_cov)); auto fea0 = FeatureBase::emplace<FeatureBase>(cap0, "ODOM 3D", pose7, data_cov); -// FactorPose3DPtr ctr0 = std::static_pointer_cast<FactorPose3D>(fea0->addFactor(std::make_shared<FactorPose3D>(fea0))); -FactorPose3DPtr ctr0 = std::static_pointer_cast<FactorPose3D>(FactorBase::emplace<FactorPose3D>(fea0, fea0)); +FactorPose3DPtr ctr0 = FactorBase::emplace<FactorPose3D>(fea0, fea0); //////////////////////////////////////////////////////// diff --git a/test/gtest_frame_base.cpp b/test/gtest_frame_base.cpp index f02418eb99ce6d49eeaaee923755314c85c8fcc4..03f991c07c4a144f560a3759c4c081cdd2410ed1 100644 --- a/test/gtest_frame_base.cpp +++ b/test/gtest_frame_base.cpp @@ -68,25 +68,13 @@ TEST(FrameBase, LinksToTree) IntrinsicsOdom2D intrinsics_odo; intrinsics_odo.k_disp_to_disp = 1; intrinsics_odo.k_rot_to_rot = 1; - // SensorOdom2DPtr S = make_shared<SensorOdom2D>(Vector3s::Zero(), intrinsics_odo); - // P->getHardware()->addSensor(S); auto S = SensorBase::emplace<SensorOdom2D>(P->getHardware(), Vector3s::Zero(), intrinsics_odo); - // FrameBasePtr F1 = make_shared<FrameBase>(1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); - // T->addFrame(F1); auto F1 = FrameBase::emplace<FrameBase>(T, 1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); - // FrameBasePtr F2 = make_shared<FrameBase>(1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); - // T->addFrame(F2); auto F2 = FrameBase::emplace<FrameBase>(T, 1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); - // CaptureMotionPtr C = make_shared<CaptureMotion>("MOTION", 1, S, Vector3s::Zero(), 3, 3, nullptr); - // F1->addCapture(C); auto C = CaptureBase::emplace<CaptureMotion>(F1, "MOTION", 1, S, Vector3s::Zero(), 3, 3, nullptr); /// @todo link sensor & proccessor ProcessorBasePtr p = std::make_shared<ProcessorOdom2D>(make_shared<ProcessorParamsOdom2D>()); - // FeatureBasePtr f = make_shared<FeatureBase>("f", Vector1s(1), Matrix<Scalar,1,1>::Identity()*.01); - // C->addFeature(f); auto f = FeatureBase::emplace<FeatureBase>(C, "f", Vector1s(1), Matrix<Scalar,1,1>::Identity()*.01); - // FactorOdom2DPtr c = make_shared<FactorOdom2D>(f, F2, p); - // f->addFactor(c); auto c = FactorBase::emplace<FactorOdom2D>(f, f, F2, p); //TODO: WARNING! I dropped this comprovations since the emplacing operation is now atomic. @@ -97,9 +85,6 @@ TEST(FrameBase, LinksToTree) // tree is inconsistent since we are missing the constrained_by link // ASSERT_FALSE(P->check(0)); - // establish constrained_by link F2 -> c - // F2->addConstrainedBy(c); - // tree is now consistent ASSERT_TRUE(P->check(0)); diff --git a/test/gtest_problem.cpp b/test/gtest_problem.cpp index 9a4204d158505cb8647358567bfb8bbe3eaa2678..5c64c90b5dd35b0efa6bc85cc77d39b383b4940f 100644 --- a/test/gtest_problem.cpp +++ b/test/gtest_problem.cpp @@ -76,8 +76,6 @@ TEST(Problem, Sensors) ProblemPtr P = Problem::create("POV", 3); // add a dummy sensor - // SensorBasePtr S = std::make_shared<SensorBase>("Dummy", nullptr, nullptr, nullptr, 2, false); - // P->addSensor(S); auto S = SensorBase::emplace<SensorBase>(P->getHardware(), "Dummy", nullptr, nullptr, nullptr, 2, false); // check pointers @@ -94,14 +92,10 @@ TEST(Problem, Processor) ASSERT_FALSE(P->getProcessorMotion()); // add a motion sensor and processor - // SensorBasePtr Sm = std::make_shared<SensorOdom3D>((Eigen::Vector7s()<<0,0,0, 0,0,0,1).finished(), IntrinsicsOdom3D()); // with dummy intrinsics - // P->addSensor(Sm); auto Sm = SensorBase::emplace<SensorOdom3D>(P->getHardware(), (Eigen::Vector7s()<<0,0,0, 0,0,0,1).finished(), IntrinsicsOdom3D()); // add motion processor - // ProcessorMotionPtr Pm = std::make_shared<ProcessorOdom3D>(std::make_shared<ProcessorParamsOdom3D>()); - // Sm->addProcessor(Pm); - auto Pm = std::static_pointer_cast<ProcessorMotion>(ProcessorBase::emplace<ProcessorOdom3D>(Sm, std::make_shared<ProcessorParamsOdom3D>())); + auto Pm = ProcessorBase::emplace<ProcessorOdom3D>(Sm, std::make_shared<ProcessorParamsOdom3D>()); // check motion processor IS NOT by emplace ASSERT_EQ(P->getProcessorMotion(), Pm); diff --git a/test/gtest_solver_manager.cpp b/test/gtest_solver_manager.cpp index de653851d9de3aa625421088b4fb076e9b586afb..2616d61040d4f224cfd65020faec182d93e02376 100644 --- a/test/gtest_solver_manager.cpp +++ b/test/gtest_solver_manager.cpp @@ -518,7 +518,7 @@ TEST(SolverManager, AddFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f, f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f, f); // notification Notification notif; @@ -545,7 +545,7 @@ TEST(SolverManager, RemoveFactor) FrameBasePtr F = P->emplaceFrame(KEY, P->zeroState(), TimeStamp(0)); auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f, f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f, f); // update solver solver_manager_ptr->update(); @@ -579,7 +579,7 @@ TEST(SolverManager, AddRemoveFactor) auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f, f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f, f); // notification Notification notif; @@ -614,7 +614,7 @@ TEST(SolverManager, DoubleRemoveFactor) auto C = CaptureBase::emplace<CaptureVoid>(F, 0, nullptr); auto f = FeatureBase::emplace<FeatureBase>(C, "ODOM 2D", Vector3s::Zero(), Matrix3s::Identity()); - FactorPose2DPtr c = std::static_pointer_cast<FactorPose2D>(FactorBase::emplace<FactorPose2D>(f, f)); + FactorPose2DPtr c = FactorBase::emplace<FactorPose2D>(f, f); // update solver solver_manager_ptr->update();