diff --git a/include/gnss/factor/factor_gnss_fix_2D.h b/include/gnss/factor/factor_gnss_fix_2D.h index 0a1e49c45a68d7039e451377ba1f4d7abf3da002..9adb73314ac0cc8776579d0359855395fa22dc27 100644 --- a/include/gnss/factor/factor_gnss_fix_2D.h +++ b/include/gnss/factor/factor_gnss_fix_2D.h @@ -31,10 +31,10 @@ class FactorGnssFix2D : public FactorAutodiff<FactorGnssFix2D, 3, 2, 1, 3, 3, 1, _ftr_ptr->getFrame()->getP(), _ftr_ptr->getFrame()->getO(), _sensor_gnss_ptr->getStateBlock(0), - _sensor_gnss_ptr->getEnuMapTranslationState(), - _sensor_gnss_ptr->getEnuMapRollState(), - _sensor_gnss_ptr->getEnuMapPitchState(), - _sensor_gnss_ptr->getEnuMapYawState()), + _sensor_gnss_ptr->getEnuMapTranslation(), + _sensor_gnss_ptr->getEnuMapRoll(), + _sensor_gnss_ptr->getEnuMapPitch(), + _sensor_gnss_ptr->getEnuMapYaw()), sensor_gnss_ptr_(_sensor_gnss_ptr) { WOLF_WARN_COND(!sensor_gnss_ptr_->isEnuDefined() && _status == FAC_ACTIVE, "Creating an active GNSS Fix 2D factor without initializing ENU"); diff --git a/include/gnss/factor/factor_gnss_fix_3D.h b/include/gnss/factor/factor_gnss_fix_3D.h index 89628d4c8e7ba7fe3355f7816ca30bc2ad390892..4f47dad9fe30e61dda3c60ccfb70ccee12ac8155 100644 --- a/include/gnss/factor/factor_gnss_fix_3D.h +++ b/include/gnss/factor/factor_gnss_fix_3D.h @@ -30,10 +30,10 @@ class FactorGnssFix3D : public FactorAutodiff<FactorGnssFix3D, 3, 3, 4, 3, 3, 1, _ftr_ptr->getFrame()->getP(), _ftr_ptr->getFrame()->getO(), _sensor_gnss_ptr->getStateBlock(0), - _sensor_gnss_ptr->getEnuMapTranslationState(), - _sensor_gnss_ptr->getEnuMapRollState(), - _sensor_gnss_ptr->getEnuMapPitchState(), - _sensor_gnss_ptr->getEnuMapYawState()), + _sensor_gnss_ptr->getEnuMapTranslation(), + _sensor_gnss_ptr->getEnuMapRoll(), + _sensor_gnss_ptr->getEnuMapPitch(), + _sensor_gnss_ptr->getEnuMapYaw()), sensor_gnss_ptr_(_sensor_gnss_ptr) { WOLF_WARN_COND(!sensor_gnss_ptr_->isEnuDefined() && _status == FAC_ACTIVE, "Creating an ACTIVE GNSS Fix 3D factor without initializing ENU"); diff --git a/include/gnss/factor/factor_gnss_single_diff_2D.h b/include/gnss/factor/factor_gnss_single_diff_2D.h index 1d52171a42388e0030848fe8fd5fa5f28f164d83..3cadfcb2413f6d94429cbd04c94cb94bad90d353 100644 --- a/include/gnss/factor/factor_gnss_single_diff_2D.h +++ b/include/gnss/factor/factor_gnss_single_diff_2D.h @@ -33,9 +33,9 @@ class FactorGnssSingleDiff2D : public FactorAutodiff<FactorGnssSingleDiff2D, 3, _ftr_ptr->getFrame()->getP(), _ftr_ptr->getFrame()->getO(), _sensor_gnss_ptr->getStateBlock(0), - _sensor_gnss_ptr->getEnuMapRollState(), - _sensor_gnss_ptr->getEnuMapPitchState(), - _sensor_gnss_ptr->getEnuMapYawState()), + _sensor_gnss_ptr->getEnuMapRoll(), + _sensor_gnss_ptr->getEnuMapPitch(), + _sensor_gnss_ptr->getEnuMapYaw()), sensor_gnss_ptr_(_sensor_gnss_ptr) { WOLF_WARN_COND(!sensor_gnss_ptr_->isEnuDefined(), "Creating a GNSS SingleDiff 2D factor without initializing ENU"); diff --git a/include/gnss/sensor/sensor_gnss.h b/include/gnss/sensor/sensor_gnss.h index 2bbbe94fb171e16b5be021b99afa987904ea6a94..3c5ed1466e020c1903dfe803706f5e83ff19a617 100644 --- a/include/gnss/sensor/sensor_gnss.h +++ b/include/gnss/sensor/sensor_gnss.h @@ -63,15 +63,18 @@ class SensorGnss : public SensorBase bool isEnuMapInitialized() const; // ENU_MAP - StateBlockPtr getEnuMapTranslationState() const; - StateBlockPtr getEnuMapRollState() const; - StateBlockPtr getEnuMapPitchState() const; - StateBlockPtr getEnuMapYawState() const; + StateBlockPtr getEnuMapTranslation() const; + StateBlockPtr getEnuMapRoll() const; + StateBlockPtr getEnuMapPitch() const; + StateBlockPtr getEnuMapYaw() const; void initializeEnuMap(const Eigen::VectorXs& _pose_MAP_frameENU, const Eigen::Vector3s& _t_ECEF_antenaENU, const Eigen::VectorXs& _pose_MAP_frame2, const Eigen::Vector3s& _t_ECEF_antena2); void initializeEnuMapYaw(const Eigen::VectorXs& _pose_MAP_frame1, const Eigen::VectorXs& _pose_MAP_frame2, const Eigen::Vector3s& _v_ECEF_antena1_antena2); void setEnuMapTranslationState(const Eigen::Vector3s& t_ENU_MAP); + void setEnuMapRollState(const Scalar& roll_ENU_MAP); + void setEnuMapPitchState(const Scalar& pitch_ENU_MAP); + void setEnuMapYawState(const Scalar& yaw_ENU_MAP); // Gets const Eigen::Matrix3s& getREnuEcef() const; @@ -95,22 +98,22 @@ inline bool SensorGnss::isEnuMapInitialized() const return ENU_MAP_initialized_; } -inline StateBlockPtr SensorGnss::getEnuMapTranslationState() const +inline StateBlockPtr SensorGnss::getEnuMapTranslation() const { return getStateBlockPtrStatic(3); } -inline StateBlockPtr SensorGnss::getEnuMapRollState() const +inline StateBlockPtr SensorGnss::getEnuMapRoll() const { return getStateBlockPtrStatic(4); } -inline StateBlockPtr SensorGnss::getEnuMapPitchState() const +inline StateBlockPtr SensorGnss::getEnuMapPitch() const { return getStateBlockPtrStatic(5); } -inline StateBlockPtr SensorGnss::getEnuMapYawState() const +inline StateBlockPtr SensorGnss::getEnuMapYaw() const { return getStateBlockPtrStatic(6); } diff --git a/src/processor/processor_gnss_fix.cpp b/src/processor/processor_gnss_fix.cpp index a12da6a372a1d77000b14c38e2d4e6290342d48a..92acb31151678c77efdbc81c471499bb8b2b2d40 100644 --- a/src/processor/processor_gnss_fix.cpp +++ b/src/processor/processor_gnss_fix.cpp @@ -122,10 +122,10 @@ bool ProcessorGnssFix::rejectOutlier(FactorBasePtr fac_ptr) Eigen::VectorXs x(gnss_ftr_ptr->getCapture()->getFrame()->getP()->getState()); Eigen::VectorXs o(gnss_ftr_ptr->getCapture()->getFrame()->getP()->getState()); Eigen::VectorXs x_antena(sensor_gnss_ptr_->getStateBlock(0)->getState()); - Eigen::VectorXs t_ENU_map(sensor_gnss_ptr_->getEnuMapTranslationState()->getState()); - Eigen::VectorXs roll_ENU_map(sensor_gnss_ptr_->getEnuMapRollState()->getState()); - Eigen::VectorXs pitch_ENU_map(sensor_gnss_ptr_->getEnuMapPitchState()->getState()); - Eigen::VectorXs yaw_ENU_map(sensor_gnss_ptr_->getEnuMapYawState()->getState()); + Eigen::VectorXs t_ENU_map(sensor_gnss_ptr_->getEnuMapTranslation()->getState()); + Eigen::VectorXs roll_ENU_map(sensor_gnss_ptr_->getEnuMapRoll()->getState()); + Eigen::VectorXs pitch_ENU_map(sensor_gnss_ptr_->getEnuMapPitch()->getState()); + Eigen::VectorXs yaw_ENU_map(sensor_gnss_ptr_->getEnuMapYaw()->getState()); // create Scalar* array of a copy of the state Scalar* parameters[7] = {x.data(), o.data(), x_antena.data(), t_ENU_map.data(), roll_ENU_map.data(), pitch_ENU_map.data(), yaw_ENU_map.data()}; diff --git a/src/sensor/sensor_gnss.cpp b/src/sensor/sensor_gnss.cpp index 35f0d57c63ade592d6e2c651c26dcf6a63d9964c..b048757fce4ca5c7f9f4eeb440a744066dfa9373 100644 --- a/src/sensor/sensor_gnss.cpp +++ b/src/sensor/sensor_gnss.cpp @@ -142,21 +142,19 @@ void SensorGnss::initializeEnuMap(const Eigen::VectorXs& _pose_MAP_frameENU, con // initialize yaw Scalar theta_ENU = atan2(v_ENU(1),v_ENU(0)); Scalar theta_MAP = atan2(v_MAP(1),v_MAP(0)); - Scalar yaw = theta_ENU-theta_MAP; - this->getEnuMapYawState()->setState(Eigen::Vector1s(yaw)); + Scalar yaw_ENU_MAP = theta_ENU-theta_MAP; + setEnuMapYawState(yaw_ENU_MAP); // initialize translation Eigen::Vector3s t_ENU_MAP(Eigen::Vector3s::Zero()); - Eigen::Matrix2s R_ENU_MAP = computeREnuMap(getEnuMapRollState()->getState()(0), - getEnuMapPitchState()->getState()(0), - getEnuMapYawState()->getState()(0)).topLeftCorner<2,2>(); + Eigen::Matrix2s R_ENU_MAP = computeREnuMap(getEnuMapRoll()->getState()(0), + getEnuMapPitch()->getState()(0), + getEnuMapYaw()->getState()(0)).topLeftCorner<2,2>(); t_ENU_MAP.head<2>() = -R_ENU_MAP * t_MAP_antenaENU; // set translation state setEnuMapTranslationState(t_ENU_MAP); - ENU_MAP_initialized_ = true; - //std::cout << "-----------------------------------------\n"; //std::cout << "t_ECEF_antenaENU: " << _t_ECEF_antenaENU.transpose() << std::endl; //std::cout << "t_ECEF_antena2: " << _t_ECEF_antena2.transpose() << std::endl; @@ -204,14 +202,35 @@ void SensorGnss::initializeEnuMapYaw(const Eigen::VectorXs& _pose_MAP_frame1, co Scalar theta_MAP = atan2(v_MAP_antena1_antena2(1),v_MAP_antena1_antena2(0)); Scalar yaw_ENU_MAP = theta_ENU-theta_MAP; - this->getEnuMapYawState()->setState(Eigen::Vector1s(yaw_ENU_MAP)); + setEnuMapYawState(yaw_ENU_MAP); +} + +void SensorGnss::setEnuMapTranslationState(const Eigen::Vector3s& t_ENU_MAP) +{ + getEnuMapTranslation()->setState(t_ENU_MAP); ENU_MAP_initialized_ = true; } -void SensorGnss::setEnuMapTranslationState(const Eigen::Vector3s& t_ENU_MAP) +void SensorGnss::setEnuMapRollState(const Scalar& roll_ENU_MAP) +{ + getEnuMapRoll()->setState(Eigen::Vector1s(roll_ENU_MAP)); + + ENU_MAP_initialized_ = true; +} + +void SensorGnss::setEnuMapPitchState(const Scalar& pitch_ENU_MAP) { - this->getEnuMapTranslationState()->setState(t_ENU_MAP); + getEnuMapPitch()->setState(Eigen::Vector1s(pitch_ENU_MAP)); + + ENU_MAP_initialized_ = true; +} + +void SensorGnss::setEnuMapYawState(const Scalar& yaw_ENU_MAP) +{ + getEnuMapYaw()->setState(Eigen::Vector1s(yaw_ENU_MAP)); + + ENU_MAP_initialized_ = true; } // Define the factory method diff --git a/test/gtest_factor_gnss_fix_2D.cpp b/test/gtest_factor_gnss_fix_2D.cpp index 1f3330a8987edfb2df8de89e1ac038a572fd8788..61a1780a8626d9618c3551f8a712c7adf4ff2e7c 100644 --- a/test/gtest_factor_gnss_fix_2D.cpp +++ b/test/gtest_factor_gnss_fix_2D.cpp @@ -27,10 +27,10 @@ void resetStates(SensorGnssPtr gnss_sensor_ptr, FrameBasePtr frame_ptr, const Vector1s& o_map_base) { // ENU-MAP - gnss_sensor_ptr->getEnuMapRollState()->setState(Eigen::Vector1s::Zero()); - gnss_sensor_ptr->getEnuMapPitchState()->setState(Eigen::Vector1s::Zero()); - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map); - gnss_sensor_ptr->getEnuMapTranslationState()->setState(t_enu_map); + gnss_sensor_ptr->getEnuMapRoll()->setState(Eigen::Vector1s::Zero()); + gnss_sensor_ptr->getEnuMapPitch()->setState(Eigen::Vector1s::Zero()); + gnss_sensor_ptr->getEnuMapYaw()->setState(o_enu_map); + gnss_sensor_ptr->getEnuMapTranslation()->setState(t_enu_map); // Antena gnss_sensor_ptr->getP()->setState(t_base_antena); // Frame @@ -41,10 +41,10 @@ void resetStates(SensorGnssPtr gnss_sensor_ptr, FrameBasePtr frame_ptr, void fixAllStates(SensorGnssPtr gnss_sensor_ptr, FrameBasePtr frame_ptr) { // ENU-MAP - gnss_sensor_ptr->getEnuMapRollState()->fix(); - gnss_sensor_ptr->getEnuMapPitchState()->fix(); - gnss_sensor_ptr->getEnuMapYawState()->fix(); - gnss_sensor_ptr->getEnuMapTranslationState()->fix(); + gnss_sensor_ptr->getEnuMapRoll()->fix(); + gnss_sensor_ptr->getEnuMapPitch()->fix(); + gnss_sensor_ptr->getEnuMapYaw()->fix(); + gnss_sensor_ptr->getEnuMapTranslation()->fix(); // Antena gnss_sensor_ptr->getP()->fix(); // Frame @@ -101,9 +101,9 @@ TEST(FactorGnssFix2DTest, configure_tree) // Configure sensor and processor gnss_sensor_ptr->setEnuMapTranslationState(t_enu_map); - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map); - gnss_sensor_ptr->getEnuMapRollState()->fix(); - gnss_sensor_ptr->getEnuMapPitchState()->fix(); + gnss_sensor_ptr->setEnuMapYawState(o_enu_map(0)); + gnss_sensor_ptr->getEnuMapRoll()->fix(); + gnss_sensor_ptr->getEnuMapPitch()->fix(); gnss_sensor_ptr->setEnuEcef(R_ecef_enu.transpose(), R_ecef_enu.transpose()*(-t_ecef_enu)); ProcessorParamsGnssFixPtr gnss_params_ptr = std::make_shared<ProcessorParamsGnssFix>(); @@ -117,8 +117,7 @@ TEST(FactorGnssFix2DTest, configure_tree) problem_ptr->keyFrameCallback(frame_ptr, nullptr, 1.0); // Create & process GNSS Fix capture - auto cap = CaptureBase::emplace<CaptureGnssFix>(nullptr, TimeStamp(0), gnss_sensor_ptr, t_ecef_antena, 1e-3*Matrix3s::Identity()); - CaptureGnssFixPtr cap_gnss_ptr = std::static_pointer_cast<CaptureGnssFix>(cap); + CaptureGnssFixPtr cap_gnss_ptr = std::make_shared<CaptureGnssFix>(TimeStamp(0), gnss_sensor_ptr, t_ecef_antena, 1e-3*Matrix3s::Identity()); gnss_sensor_ptr->process(cap_gnss_ptr); // Checks @@ -228,12 +227,12 @@ TEST(FactorGnssFix2DTest, gnss_1_enu_map_yaw) // --------------------------- fixing/unfixing states fixAllStates(gnss_sensor_ptr, frame_ptr); - gnss_sensor_ptr->getEnuMapYawState()->unfix(); + gnss_sensor_ptr->getEnuMapYaw()->unfix(); // --------------------------- distort: yaw enu_map - Vector1s o_enu_map_dist = gnss_sensor_ptr->getEnuMapYawState()->getState(); + Vector1s o_enu_map_dist = gnss_sensor_ptr->getEnuMapYaw()->getState(); o_enu_map_dist(0) += 0.18; - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map_dist); + gnss_sensor_ptr->getEnuMapYaw()->setState(o_enu_map_dist); // --------------------------- update solver ceres_mgr_ptr->update(); @@ -255,7 +254,7 @@ TEST(FactorGnssFix2DTest, gnss_1_enu_map_yaw) ASSERT_EQ(ceres_mgr_ptr->getSummary().num_residuals_reduced, 3); // --------------------------- check solver solution - ASSERT_MATRIX_APPROX(gnss_sensor_ptr->getEnuMapYawState()->getState(), o_enu_map, 1e-6); + ASSERT_MATRIX_APPROX(gnss_sensor_ptr->getEnuMapYaw()->getState(), o_enu_map, 1e-6); } /* @@ -271,13 +270,13 @@ TEST(FactorGnssFix2DTest, gnss_1_enu_map_position) // --------------------------- fixing/unfixing states fixAllStates(gnss_sensor_ptr, frame_ptr); - gnss_sensor_ptr->getEnuMapTranslationState()->unfix();// enu-map yaw translation + gnss_sensor_ptr->getEnuMapTranslation()->unfix();// enu-map yaw translation // --------------------------- distort: position enu_map - Vector3s t_enu_map_dist = gnss_sensor_ptr->getEnuMapTranslationState()->getState(); + Vector3s t_enu_map_dist = gnss_sensor_ptr->getEnuMapTranslation()->getState(); t_enu_map_dist(0) += 0.86; t_enu_map_dist(1) += -0.34; - gnss_sensor_ptr->getEnuMapTranslationState()->setState(t_enu_map_dist); + gnss_sensor_ptr->getEnuMapTranslation()->setState(t_enu_map_dist); // --------------------------- update solver ceres_mgr_ptr->update(); @@ -299,7 +298,7 @@ TEST(FactorGnssFix2DTest, gnss_1_enu_map_position) ASSERT_EQ(ceres_mgr_ptr->getSummary().num_residuals_reduced, 3); // --------------------------- check solver solution - ASSERT_MATRIX_APPROX(gnss_sensor_ptr->getEnuMapTranslationState()->getState().head(2), t_enu_map.head(2), 1e-6); + ASSERT_MATRIX_APPROX(gnss_sensor_ptr->getEnuMapTranslation()->getState().head(2), t_enu_map.head(2), 1e-6); } /* diff --git a/test/gtest_factor_gnss_single_diff_2D.cpp b/test/gtest_factor_gnss_single_diff_2D.cpp index 2c70d8c0cd705aa0a70176e9fa6a2d92aefe4bd0..4b4ad70cc739f2af3c67a5a586b386b5c92b18ce 100644 --- a/test/gtest_factor_gnss_single_diff_2D.cpp +++ b/test/gtest_factor_gnss_single_diff_2D.cpp @@ -65,15 +65,13 @@ class FactorGnssSingleDiff2DTest : public testing::Test // gnss sensor gnss_sensor_ptr = std::static_pointer_cast<SensorGnss>(problem_ptr->installSensor("GNSS", "gnss", t_base_antena, std::make_shared<IntrinsicsBase>())); - gnss_sensor_ptr->getEnuMapRollState()->fix(); - gnss_sensor_ptr->getEnuMapPitchState()->fix(); + gnss_sensor_ptr->getEnuMapRoll()->fix(); + gnss_sensor_ptr->getEnuMapPitch()->fix(); gnss_sensor_ptr->setEnuEcef(R_ecef_enu.transpose(), R_ecef_enu.transpose()*(-t_ecef_enu)); - std::cout << "gnss sensor installed" << std::endl; // gnss processor ProcessorParamsBasePtr gnss_params_ptr = std::make_shared<ProcessorParamsBase>(true, 1.0); problem_ptr->installProcessor("GNSS SINGLE DIFFERENCES", "gnss single difference", gnss_sensor_ptr, gnss_params_ptr); - std::cout << "gnss processor installed" << std::endl; // odom sensor & processor IntrinsicsOdom2DPtr odom_intrinsics_ptr = std::make_shared<IntrinsicsOdom2D>(); @@ -132,13 +130,12 @@ TEST_F(FactorGnssSingleDiff2DTest, check_tree) TEST_F(FactorGnssSingleDiff2DTest, gnss_1_map_base_position) { // Create GNSS Fix capture - CaptureGnssSingleDiffPtr cap_gnss_ptr = std::static_pointer_cast<CaptureGnssSingleDiff>(CaptureBase::emplace<CaptureGnssSingleDiff>(nullptr, TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr)); - + CaptureGnssSingleDiffPtr cap_gnss_ptr = std::make_shared<CaptureGnssSingleDiff>(TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr); gnss_sensor_ptr->process(cap_gnss_ptr); // fixing things - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map); // enu-map yaw orientation - gnss_sensor_ptr->getEnuMapYawState()->fix(); + gnss_sensor_ptr->setEnuMapYawState(o_enu_map(0)); // enu-map yaw orientation + gnss_sensor_ptr->getEnuMapYaw()->fix(); cap_gnss_ptr->getFrame()->getO()->setState(o_map_base2); // frame orientation cap_gnss_ptr->getFrame()->getO()->fix(); @@ -152,7 +149,6 @@ TEST_F(FactorGnssSingleDiff2DTest, gnss_1_map_base_position) // solve for frm std::string report = ceres_mgr_ptr->solve(SolverManager::ReportVerbosity::BRIEF); - std::cout << report << std::endl; ASSERT_TRUE(cap_gnss_ptr->getFrame()->isKey()); ASSERT_MATRIX_APPROX(cap_gnss_ptr->getFrame()->getState().head(2), t_map_base2.head(2), 1e-6); @@ -167,12 +163,12 @@ TEST_F(FactorGnssSingleDiff2DTest, gnss_1_map_base_position) TEST_F(FactorGnssSingleDiff2DTest, gnss_1_map_base_orientation) { // Create GNSS Fix capture - CaptureGnssSingleDiffPtr cap_gnss_ptr = std::static_pointer_cast<CaptureGnssSingleDiff>(CaptureBase::emplace<CaptureGnssSingleDiff>(nullptr, TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr)); + CaptureGnssSingleDiffPtr cap_gnss_ptr = std::make_shared<CaptureGnssSingleDiff>(TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr); gnss_sensor_ptr->process(cap_gnss_ptr); // fixing things - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map); // enu-map yaw orientation - gnss_sensor_ptr->getEnuMapYawState()->fix(); + gnss_sensor_ptr->setEnuMapYawState(o_enu_map(0)); // enu-map yaw orientation + gnss_sensor_ptr->getEnuMapYaw()->fix(); cap_gnss_ptr->getFrame()->getP()->setState(t_map_base2.head(2)); // frame position cap_gnss_ptr->getFrame()->getP()->fix(); @@ -197,11 +193,11 @@ TEST_F(FactorGnssSingleDiff2DTest, gnss_1_map_base_orientation) TEST_F(FactorGnssSingleDiff2DTest, gnss_1_enu_map_yaw) { // Create GNSS Fix capture - CaptureGnssSingleDiffPtr cap_gnss_ptr = std::static_pointer_cast<CaptureGnssSingleDiff>(CaptureBase::emplace<CaptureGnssSingleDiff>(nullptr, TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr)); + CaptureGnssSingleDiffPtr cap_gnss_ptr = std::make_shared<CaptureGnssSingleDiff>(TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr); gnss_sensor_ptr->process(cap_gnss_ptr); // unfixing things - gnss_sensor_ptr->getEnuMapYawState()->unfix(); + gnss_sensor_ptr->getEnuMapYaw()->unfix(); // fixing things cap_gnss_ptr->getFrame()->getP()->setState(t_map_base2.head(2)); // frame position cap_gnss_ptr->getFrame()->getP()->fix(); @@ -209,15 +205,15 @@ TEST_F(FactorGnssSingleDiff2DTest, gnss_1_enu_map_yaw) cap_gnss_ptr->getFrame()->getO()->fix(); // distort yaw enu_map - Vector1s o_enu_map_dist = gnss_sensor_ptr->getEnuMapYawState()->getState(); + Vector1s o_enu_map_dist = gnss_sensor_ptr->getEnuMapYaw()->getState(); o_enu_map_dist(0) += 1.8; - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map_dist); + gnss_sensor_ptr->setEnuMapYawState(o_enu_map_dist(0)); // solve for frm std::string report = ceres_mgr_ptr->solve(SolverManager::ReportVerbosity::QUIET); ASSERT_TRUE(cap_gnss_ptr->getFrame()->isKey()); - ASSERT_MATRIX_APPROX(gnss_sensor_ptr->getEnuMapYawState()->getState(), o_enu_map, 1e-6); + ASSERT_MATRIX_APPROX(gnss_sensor_ptr->getEnuMapYaw()->getState(), o_enu_map, 1e-6); } /* @@ -229,14 +225,14 @@ TEST_F(FactorGnssSingleDiff2DTest, gnss_1_enu_map_yaw) TEST_F(FactorGnssSingleDiff2DTest, gnss_1_base_antena) { // Create GNSS Fix capture - CaptureGnssSingleDiffPtr cap_gnss_ptr = std::static_pointer_cast<CaptureGnssSingleDiff>(CaptureBase::emplace<CaptureGnssSingleDiff>(nullptr, TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr)); + CaptureGnssSingleDiffPtr cap_gnss_ptr = std::make_shared<CaptureGnssSingleDiff>(TimeStamp(0), gnss_sensor_ptr, t_ecef_antena2-t_ecef_antena1, 1e-6*Matrix3s::Identity(), prior_frame_ptr); gnss_sensor_ptr->process(cap_gnss_ptr); // unfixing things gnss_sensor_ptr->getP()->unfix(); // fixing things - gnss_sensor_ptr->getEnuMapYawState()->setState(o_enu_map); // enu-map yaw orientation - gnss_sensor_ptr->getEnuMapYawState()->fix(); + gnss_sensor_ptr->setEnuMapYawState(o_enu_map(0)); // enu-map yaw orientation + gnss_sensor_ptr->getEnuMapYaw()->fix(); cap_gnss_ptr->getFrame()->getP()->setState(t_map_base2.head(2)); // frame position cap_gnss_ptr->getFrame()->getP()->fix(); cap_gnss_ptr->getFrame()->getO()->setState(o_map_base2); // frame orientation