Skip to content
Snippets Groups Projects
Commit e756fe40 authored by Joan Solà Ortega's avatar Joan Solà Ortega
Browse files

Replace StateBlock by some derived types

parent 3bab18bd
No related branches found
No related tags found
2 merge requests!466devel->main,!456Resolve "Migrate from StateBlock to StateDerived"
Pipeline #11827 passed
...@@ -80,7 +80,7 @@ int main(int argc, char** argv) ...@@ -80,7 +80,7 @@ int main(int argc, char** argv)
// Wolf problem // Wolf problem
ProblemPtr wolf_problem_autodiff = new Problem(FRM_PO_2d); ProblemPtr wolf_problem_autodiff = new Problem(FRM_PO_2d);
ProblemPtr wolf_problem_analytic = new Problem(FRM_PO_2d); ProblemPtr wolf_problem_analytic = new Problem(FRM_PO_2d);
SensorBasePtr sensor = new SensorBase("ODOM 2d", std::make_shared<StateBlock>(Eigen::VectorXd::Zero(2)), std::make_shared<StateBlock>(Eigen::VectorXd::Zero(1)), std::make_shared<StateBlock>(Eigen::VectorXd::Zero(2)), 2); SensorBasePtr sensor = new SensorBase("ODOM 2d", std::make_shared<StatePoint2d>(Eigen::VectorXd::Zero(2)), std::make_shared<StateAngle>(0), std::make_shared<StateParams2>(Eigen::VectorXd::Zero(2)), 2);
// Ceres wrapper // Ceres wrapper
SolverCeres* ceres_manager_autodiff = new SolverCeres(wolf_problem_autodiff, ceres_options); SolverCeres* ceres_manager_autodiff = new SolverCeres(wolf_problem_autodiff, ceres_options);
......
...@@ -27,12 +27,13 @@ ...@@ -27,12 +27,13 @@
*/ */
#include "landmark_point_2d.h" #include "landmark_point_2d.h"
#include "core/state_block/state_block_derived.h"
namespace wolf namespace wolf
{ {
LandmarkPoint2d::LandmarkPoint2d(int _id, const Eigen::Vector2d& _xy) : LandmarkPoint2d::LandmarkPoint2d(int _id, const Eigen::Vector2d& _xy) :
LandmarkBase("LandmarkPoint2d", std::make_shared<StateBlock>(_xy)) LandmarkBase("LandmarkPoint2d", std::make_shared<StatePoint2d>(_xy))
{ {
setId(_id); setId(_id);
} }
......
...@@ -20,17 +20,19 @@ ...@@ -20,17 +20,19 @@
// //
//--------LICENSE_END-------- //--------LICENSE_END--------
#include "core/sensor/sensor_odom_2d.h" #include "core/sensor/sensor_odom_2d.h"
#include "core/state_block/state_block.h" #include "core/state_block/state_block_derived.h"
#include "core/state_block/state_angle.h" #include "core/state_block/state_angle.h"
namespace wolf { namespace wolf {
SensorOdom2d::SensorOdom2d(Eigen::VectorXd _extrinsics, const ParamsSensorOdom2d& _intrinsics) : SensorOdom2d::SensorOdom2d(Eigen::VectorXd _extrinsics, const ParamsSensorOdom2d& _intrinsics) :
SensorBase("SensorOdom2d", std::make_shared<StateBlock>(_extrinsics.head(2), true), std::make_shared<StateAngle>(_extrinsics(2), true), nullptr, 2), SensorBase("SensorOdom2d", std::make_shared<StatePoint2d>(_extrinsics.head(2), true), std::make_shared<StateAngle>(_extrinsics(2), true), nullptr, 2),
k_disp_to_disp_(_intrinsics.k_disp_to_disp), k_disp_to_disp_(_intrinsics.k_disp_to_disp),
k_rot_to_rot_(_intrinsics.k_rot_to_rot) k_rot_to_rot_(_intrinsics.k_rot_to_rot)
{ {
assert(_extrinsics.size() == 3 && "Wrong extrinsics vector size! Should be 3 for 2d."); assert(_extrinsics.size() == 3 && "Wrong extrinsics vector size! Should be 3 for 2d.");
getStateBlock('P')->setNonTransformable();
getStateBlock('O')->setNonTransformable();
// //
} }
......
...@@ -28,14 +28,14 @@ ...@@ -28,14 +28,14 @@
#include "core/sensor/sensor_odom_3d.h" #include "core/sensor/sensor_odom_3d.h"
#include "core/state_block/state_block.h" #include "core/state_block/state_block_derived.h"
#include "core/state_block/state_quaternion.h" #include "core/state_block/state_quaternion.h"
#include "core/math/rotations.h" #include "core/math/rotations.h"
namespace wolf { namespace wolf {
SensorOdom3d::SensorOdom3d(const Eigen::VectorXd& _extrinsics_pq, const ParamsSensorOdom3d& _intrinsics) : SensorOdom3d::SensorOdom3d(const Eigen::VectorXd& _extrinsics_pq, const ParamsSensorOdom3d& _intrinsics) :
SensorBase("SensorOdom3d", std::make_shared<StateBlock>(_extrinsics_pq.head(3), true), std::make_shared<StateQuaternion>(_extrinsics_pq.tail(4), true), nullptr, 6), SensorBase("SensorOdom3d", std::make_shared<StatePoint3d>(_extrinsics_pq.head(3), true), std::make_shared<StateQuaternion>(_extrinsics_pq.tail(4), true), nullptr, 6),
k_disp_to_disp_(_intrinsics.k_disp_to_disp), k_disp_to_disp_(_intrinsics.k_disp_to_disp),
k_disp_to_rot_(_intrinsics.k_disp_to_rot), k_disp_to_rot_(_intrinsics.k_disp_to_rot),
k_rot_to_rot_(_intrinsics.k_rot_to_rot), k_rot_to_rot_(_intrinsics.k_rot_to_rot),
...@@ -43,6 +43,8 @@ SensorOdom3d::SensorOdom3d(const Eigen::VectorXd& _extrinsics_pq, const ParamsSe ...@@ -43,6 +43,8 @@ SensorOdom3d::SensorOdom3d(const Eigen::VectorXd& _extrinsics_pq, const ParamsSe
min_rot_var_(_intrinsics.min_rot_var) min_rot_var_(_intrinsics.min_rot_var)
{ {
assert(_extrinsics_pq.size() == 7 && "Bad extrinsics vector size! Should be 7 for 3d."); assert(_extrinsics_pq.size() == 7 && "Bad extrinsics vector size! Should be 7 for 3d.");
getStateBlock('P')->setNonTransformable();
getStateBlock('O')->setNonTransformable();
noise_cov_ = (Eigen::Vector6d() << min_disp_var_, min_disp_var_, min_disp_var_, min_rot_var_, min_rot_var_, min_rot_var_).finished().asDiagonal(); noise_cov_ = (Eigen::Vector6d() << min_disp_var_, min_disp_var_, min_disp_var_, min_rot_var_, min_rot_var_, min_rot_var_).finished().asDiagonal();
setNoiseCov(noise_cov_); // sets also noise_std_ setNoiseCov(noise_cov_); // sets also noise_std_
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment