diff --git a/test/gtest_problem.cpp b/test/gtest_problem.cpp index dddd4bc84c77e69acfac3f0da3ac3ad892f28319..898a311d759446f18b0f78f41070f679652f0475 100644 --- a/test/gtest_problem.cpp +++ b/test/gtest_problem.cpp @@ -10,6 +10,7 @@ #include "core/problem/problem.h" #include "core/sensor/sensor_base.h" +#include "core/sensor/sensor_odom_2D.h" #include "core/sensor/sensor_odom_3D.h" #include "core/processor/processor_odom_3D.h" #include "core/processor/processor_tracker_feature_dummy.h" @@ -203,16 +204,16 @@ TEST(Problem, StateBlocks) std::string wolf_root = _WOLF_ROOT_DIR; ProblemPtr P = Problem::create("PO 3D"); - Eigen::Vector7s xs; + Eigen::Vector7s xs3d; + Eigen::Vector3s xs2d; // 2 state blocks, fixed - SensorBasePtr Sm = P->installSensor ("ODOM 3D", "odometer",xs, wolf_root + "/src/examples/sensor_odom_3D.yaml"); + SensorBasePtr Sm = P->installSensor ("ODOM 3D", "odometer",xs3d, wolf_root + "/src/examples/sensor_odom_3D.yaml"); ASSERT_EQ(P->consumeStateBlockNotificationMap().size(), (unsigned int) 2); - //TODO: TO BE FIXED: Since the splitting the core has no camera sensor, so this test fails. - // 3 state blocks, fixed - SensorBasePtr St = P->installSensor ("CAMERA", "camera", xs, wolf_root + "/src/examples/camera_params_ueye_sim.yaml"); - ASSERT_EQ(P->consumeStateBlockNotificationMap().size(), (unsigned int) (/*2 + */3)); // consume empties the notification map, so only should contain notification since last call + // 2 state blocks, fixed + SensorBasePtr St = P->installSensor ("ODOM 2D", "other odometer", xs2d, ""); + ASSERT_EQ(P->consumeStateBlockNotificationMap().size(), (unsigned int) (2/* + 3*/)); // consume empties the notification map, so only should contain notification since last call ProcessorParamsTrackerFeaturePtr params = std::make_shared<ProcessorParamsTrackerFeature>(); params->time_tolerance = 0.1; @@ -224,7 +225,7 @@ TEST(Problem, StateBlocks) ProcessorBasePtr pm = P->installProcessor("ODOM 3D", "odom integrator", "odometer", wolf_root + "/src/examples/processor_odom_3D.yaml"); // 2 state blocks, estimated - P->emplaceFrame("PO 3D", KEY_FRAME, xs, 0); + P->emplaceFrame("PO 3D", KEY_FRAME, xs3d, 0); ASSERT_EQ(P->consumeStateBlockNotificationMap().size(), (unsigned int)(/*2 + 3*/ + 2)); // consume empties the notification map, so only should contain notification since last call // P->print(4,1,1,1); @@ -232,6 +233,8 @@ TEST(Problem, StateBlocks) // change some SB properties St->unfixExtrinsics(); ASSERT_TRUE(P->consumeStateBlockNotificationMap().empty()); // changes in state_blocks status (fix/state/localparam) does not raise a notification in problem, only ADD/REMOVE + // ASSERT_EQ(P->getStateBlockPtrList().size(), (unsigned int)(2 + 2 + 2)); + // ASSERT_EQ(P->getStateBlockNotificationMap().size(),(unsigned int)(2 + 2 + 2 /*+ 2*/)); // XXX: 2 more notifications on the same SB! // P->print(4,1,1,1); } @@ -241,10 +244,11 @@ TEST(Problem, Covariances) std::string wolf_root = _WOLF_ROOT_DIR; ProblemPtr P = Problem::create("PO 3D"); - Eigen::Vector7s xs; + Eigen::Vector7s xs3d; + Eigen::Vector3s xs2d; - SensorBasePtr Sm = P->installSensor ("ODOM 3D", "odometer",xs, wolf_root + "/src/examples/sensor_odom_3D.yaml"); - SensorBasePtr St = P->installSensor ("CAMERA", "camera", xs, wolf_root + "/src/examples/camera_params_ueye_sim.yaml"); + SensorBasePtr Sm = P->installSensor ("ODOM 3D", "odometer",xs3d, wolf_root + "/src/examples/sensor_odom_3D.yaml"); + SensorBasePtr St = P->installSensor ("ODOM 2D", "other odometer", xs2d, ""); ProcessorParamsTrackerFeaturePtr params = std::make_shared<ProcessorParamsTrackerFeature>(); params->time_tolerance = 0.1; @@ -257,7 +261,7 @@ TEST(Problem, Covariances) // 4 state blocks, estimated St->unfixExtrinsics(); - FrameBasePtr F = P->emplaceFrame("PO 3D", KEY_FRAME, xs, 0); + FrameBasePtr F = P->emplaceFrame("PO 3D", KEY_FRAME, xs3d, 0); // set covariance (they are not computed without a solver) P->addCovarianceBlock(F->getP(), Eigen::Matrix3s::Identity());