From 4f10166a0fdcb7f1082047e3d8013c785f7ccb7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu> Date: Fri, 24 Jun 2022 19:58:51 +0200 Subject: [PATCH] use derived state blocks --- src/capture/capture_inertial_kinematics.cpp | 6 ++-- src/sensor/sensor_inertial_kinematics.cpp | 4 +-- test/gtest_factor_force_torque.cpp | 33 +++++++++++++-------- test/gtest_factor_inertial_kinematics.cpp | 14 +++++---- 4 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/capture/capture_inertial_kinematics.cpp b/src/capture/capture_inertial_kinematics.cpp index 3640f6b..3f3c387 100644 --- a/src/capture/capture_inertial_kinematics.cpp +++ b/src/capture/capture_inertial_kinematics.cpp @@ -23,6 +23,8 @@ #include "bodydynamics/capture/capture_inertial_kinematics.h" #include "bodydynamics/sensor/sensor_inertial_kinematics.h" #include "core/state_block/state_quaternion.h" +#include "core/state_block/state_block_derived.h" + namespace wolf { @@ -37,7 +39,7 @@ CaptureInertialKinematics::CaptureInertialKinematics(const TimeStamp& _init_ts, _sensor_ptr, nullptr, nullptr, - std::make_shared<StateBlock>(_bias_pbc, false)), + std::make_shared<StateParams3>(_bias_pbc, false)), data_(_data), B_I_q_(_B_I_q), B_Lc_m_(_B_Lc_m) @@ -56,7 +58,7 @@ CaptureInertialKinematics::CaptureInertialKinematics(const TimeStamp& _init_ts, _sensor_ptr, nullptr, nullptr, - std::make_shared<StateBlock>(3, false)), + std::make_shared<StateParams3>(Vector3d::Zero(), false)), data_(_data), B_I_q_(_B_I_q), B_Lc_m_(_B_Lc_m) diff --git a/src/sensor/sensor_inertial_kinematics.cpp b/src/sensor/sensor_inertial_kinematics.cpp index 33369c5..5cfaa76 100644 --- a/src/sensor/sensor_inertial_kinematics.cpp +++ b/src/sensor/sensor_inertial_kinematics.cpp @@ -21,7 +21,7 @@ //--------LICENSE_END-------- #include "bodydynamics/sensor/sensor_inertial_kinematics.h" -#include "core/state_block/state_block.h" +#include "core/state_block/state_block_derived.h" #include "core/state_block/state_quaternion.h" namespace wolf { @@ -30,7 +30,7 @@ SensorInertialKinematics::SensorInertialKinematics(const Eigen::VectorXd& _extri SensorBase("SensorInertialKinematics", nullptr, // no position nullptr, // no orientation - std::make_shared<StateBlock>(Eigen::Vector3d(0,0,0), false), // bias; false = unfixed + std::make_shared<StateParams3>(Eigen::Vector3d(0,0,0), false), // bias; false = unfixed (Eigen::Vector6d() << _params->std_pbc,_params->std_pbc,_params->std_pbc, _params->std_vbc,_params->std_vbc,_params->std_vbc).finished(), false, false, true), diff --git a/test/gtest_factor_force_torque.cpp b/test/gtest_factor_force_torque.cpp index 16bd8d8..0ccf513 100644 --- a/test/gtest_factor_force_torque.cpp +++ b/test/gtest_factor_force_torque.cpp @@ -58,6 +58,7 @@ FactorInertialKinematics_2KF_1v_bfix,ZeroMvt: #include <core/capture/capture_base.h> #include <core/feature/feature_base.h> #include <core/factor/factor_block_absolute.h> +#include <core/state_block/state_block_derived.h> // Imu // #include "imu/internal/config.h" @@ -169,18 +170,26 @@ void perturbateAllIfUnFixed(const FrameBasePtr& KF) } } -FrameBasePtr createKFWithCDLI(const ProblemPtr& problem, const TimeStamp& t, VectorComposite x_origin, - Vector3d c, Vector3d cd, Vector3d Lc, Vector6d bias_imu) +FrameBasePtr createKFWithCDLI(const ProblemPtr& problem, + const TimeStamp& t, + VectorComposite x_origin, + Vector3d c, + Vector3d cd, + Vector3d Lc, + Vector6d bias_imu) { - FrameBasePtr KF = FrameBase::emplace<FrameBase>(problem->getTrajectory(), t, "POV", x_origin); - StateBlockPtr sbc = make_shared<StateBlock>(c); KF->addStateBlock('C', sbc, problem); - StateBlockPtr sbd = make_shared<StateBlock>(cd); KF->addStateBlock('D', sbd, problem); - StateBlockPtr sbL = make_shared<StateBlock>(Lc); KF->addStateBlock('L', sbL, problem); - StateBlockPtr sbbimu = make_shared<StateBlock>(bias_imu); KF->addStateBlock('I', sbbimu, problem); // Simulating IMU + FrameBasePtr KF = FrameBase::emplace<FrameBase>(problem->getTrajectory(), t, "POV", x_origin); + StateBlockPtr sbc = make_shared<StatePoint3d>(c); + KF->addStateBlock('C', sbc, problem); + StateBlockPtr sbd = make_shared<StateVector3d>(cd); + KF->addStateBlock('D', sbd, problem); + StateBlockPtr sbL = make_shared<StateVector3d>(Lc); + KF->addStateBlock('L', sbL, problem); + StateBlockPtr sbbimu = make_shared<StateParams6>(bias_imu); + KF->addStateBlock('I', sbbimu, problem); // Simulating IMU return KF; } - class FactorInertialKinematics_2KF : public testing::Test { public: @@ -247,10 +256,10 @@ class FactorInertialKinematics_2KF : public testing::Test // ADD THE STATEBLOCKS AND SET THEIR DEFAULT VALUES bias_p_ = zero3; bias_imu_ = zero6; - StateBlockPtr sbcA = make_shared<StateBlock>(zero3); KFA_->addStateBlock('C', sbcA, problem_); - StateBlockPtr sbdA = make_shared<StateBlock>(zero3); KFA_->addStateBlock('D', sbdA, problem_); - StateBlockPtr sbLA = make_shared<StateBlock>(zero3); KFA_->addStateBlock('L', sbLA, problem_); - StateBlockPtr sbbimuA = make_shared<StateBlock>(bias_imu_); KFA_->addStateBlock('I', sbbimuA, problem_); + StateBlockPtr sbcA = make_shared<StatePoint3d>(zero3); KFA_->addStateBlock('C', sbcA, problem_); + StateBlockPtr sbdA = make_shared<StateVector3d>(zero3); KFA_->addStateBlock('D', sbdA, problem_); + StateBlockPtr sbLA = make_shared<StateVector3d>(zero3); KFA_->addStateBlock('L', sbLA, problem_); + StateBlockPtr sbbimuA = make_shared<StateParams6>(bias_imu_); KFA_->addStateBlock('I', sbbimuA, problem_); // Fix the one we cannot estimate // KFA_->getP()->fix(); diff --git a/test/gtest_factor_inertial_kinematics.cpp b/test/gtest_factor_inertial_kinematics.cpp index 45034d6..0f63fd9 100644 --- a/test/gtest_factor_inertial_kinematics.cpp +++ b/test/gtest_factor_inertial_kinematics.cpp @@ -58,6 +58,7 @@ FactorInertialKinematics_1KF_1v_bfix,ZeroMvt: #include <core/capture/capture_base.h> #include <core/feature/feature_base.h> #include <core/factor/factor_block_absolute.h> +#include <core/state_block/state_block_derived.h> // Imu //#include "imu/internal/config.h" @@ -72,6 +73,7 @@ FactorInertialKinematics_1KF_1v_bfix,ZeroMvt: #include "bodydynamics/capture/capture_inertial_kinematics.h" #include "bodydynamics/feature/feature_inertial_kinematics.h" #include "bodydynamics/factor/factor_inertial_kinematics.h" +#include <core/state_block/state_block_derived.h> #include <Eigen/Eigenvalues> @@ -126,11 +128,11 @@ class FactorInertialKinematics_1KF : public testing::Test // ADD THE STATEBLOCKS AND SET THEIR DEFAULT VALUES bias_p_ = ZERO3; bias_imu_ = ZERO6; - StateBlockPtr sbc = make_shared<StateBlock>(ZERO3); - StateBlockPtr sbd = make_shared<StateBlock>(ZERO3); - StateBlockPtr sbL = make_shared<StateBlock>(ZERO3); - StateBlockPtr sbb = make_shared<StateBlock>(bias_p_); - sbbimu_ = make_shared<StateBlock>(bias_imu_); + StateBlockPtr sbc = make_shared<StatePoint3d>(ZERO3); + StateBlockPtr sbL = make_shared<StateVector3d>(ZERO3); + StateBlockPtr sbd = make_shared<StateVector3d>(ZERO3); + StateBlockPtr sbb = make_shared<StateParams3>(bias_p_); + sbbimu_ = make_shared<StateParams6>(bias_imu_); KF0_->addStateBlock('C', sbc, problem_); KF0_->addStateBlock('D', sbd, problem_); @@ -328,7 +330,7 @@ class FactorInertialKinematics_1KF_1v_bfix : public FactorInertialKinematics_1KF // Vector6d ZERO6; ZERO6 << ZERO3, ZERO3; // Vector3d bias_p_ = ZERO3; // Vector6d bias_imu_ = ZERO6; -// StateBlockPtr sbc = make_shared<StateBlock>(ZERO3); +// StateBlockPtr sbc = make_shared<StatePoint3d>(ZERO3); // StateBlockPtr sbd = make_shared<StateBlock>(ZERO3); // StateBlockPtr sbL = make_shared<StateBlock>(ZERO3); // StateBlockPtr sbb = make_shared<StateBlock>(bias_p_); -- GitLab