diff --git a/include/core/state_block/local_parametrization_angle.h b/include/core/state_block/local_parametrization_angle.h index 6c063da65a74ae9234a61a1583520f4fffbc8e17..4cec6ba238a51a87509d1ef507ffc2b4167d8ea2 100644 --- a/include/core/state_block/local_parametrization_angle.h +++ b/include/core/state_block/local_parametrization_angle.h @@ -23,7 +23,7 @@ class LocalParametrizationAngle : public LocalParametrizationBase virtual bool plus(Eigen::Map<const Eigen::VectorXd>& _h, Eigen::Map<const Eigen::VectorXd>& _delta, Eigen::Map<Eigen::VectorXd>& _h_plus_delta) const; virtual bool computeJacobian(Eigen::Map<const Eigen::VectorXd>& _h, - Eigen::Map<Eigen::MatrixXd>& _jacobian) const; + Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const; virtual bool minus(Eigen::Map<const Eigen::VectorXd>& _x1, Eigen::Map<const Eigen::VectorXd>& _x2, Eigen::Map<Eigen::VectorXd>& _x2_minus_x1); @@ -50,7 +50,7 @@ inline bool LocalParametrizationAngle::plus(Eigen::Map<const Eigen::VectorXd>& _ } inline bool LocalParametrizationAngle::computeJacobian(Eigen::Map<const Eigen::VectorXd>& _h, - Eigen::Map<Eigen::MatrixXd>& _jacobian) const + Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const { _jacobian(0) = 1.0; return true; diff --git a/include/core/state_block/local_parametrization_base.h b/include/core/state_block/local_parametrization_base.h index e7a8d2200376445124ebbb89ec0eafda17b7638d..32599d9dc72a556c06f9ade7df6339f38cc7c8cf 100644 --- a/include/core/state_block/local_parametrization_base.h +++ b/include/core/state_block/local_parametrization_base.h @@ -25,7 +25,7 @@ class LocalParametrizationBase{ virtual bool plus(Eigen::Map<const Eigen::VectorXd>& _x, Eigen::Map<const Eigen::VectorXd>& _delta, Eigen::Map<Eigen::VectorXd>& _x_plus_delta) const = 0; - virtual bool computeJacobian(Eigen::Map<const Eigen::VectorXd>& _x, Eigen::Map<Eigen::MatrixXd>& _jacobian) const = 0; + virtual bool computeJacobian(Eigen::Map<const Eigen::VectorXd>& _x, Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const = 0; virtual bool minus(Eigen::Map<const Eigen::VectorXd>& _x1, Eigen::Map<const Eigen::VectorXd>& _x2, Eigen::Map<Eigen::VectorXd>& _x2_minus_x1) = 0; diff --git a/include/core/state_block/local_parametrization_homogeneous.h b/include/core/state_block/local_parametrization_homogeneous.h index 31b3a82b9a13f789be6b255be8f4caca89a1ef4d..f91bdacc6b9effab0c0da1f2cd52ff102b408006 100644 --- a/include/core/state_block/local_parametrization_homogeneous.h +++ b/include/core/state_block/local_parametrization_homogeneous.h @@ -43,7 +43,7 @@ class LocalParametrizationHomogeneous : public LocalParametrizationBase virtual bool plus(Eigen::Map<const Eigen::VectorXd>& _h, Eigen::Map<const Eigen::VectorXd>& _delta, Eigen::Map<Eigen::VectorXd>& _h_plus_delta) const; - virtual bool computeJacobian(Eigen::Map<const Eigen::VectorXd>& _h, Eigen::Map<Eigen::MatrixXd>& _jacobian) const; + virtual bool computeJacobian(Eigen::Map<const Eigen::VectorXd>& _h, Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const; virtual bool minus(Eigen::Map<const Eigen::VectorXd>& _h1, Eigen::Map<const Eigen::VectorXd>& _h2, Eigen::Map<Eigen::VectorXd>& _h2_minus_h1); diff --git a/include/core/state_block/local_parametrization_quaternion.h b/include/core/state_block/local_parametrization_quaternion.h index 32799f565b678c760d5540d5019a47e6e62bfd5b..1d43ace31892c4d3a4b72be1b3a2883dd3ba787a 100644 --- a/include/core/state_block/local_parametrization_quaternion.h +++ b/include/core/state_block/local_parametrization_quaternion.h @@ -69,7 +69,7 @@ public: Eigen::Map<Eigen::VectorXd>& _q_plus_delta_theta) const; virtual bool computeJacobian(Eigen::Map<const Eigen::VectorXd>& _q, - Eigen::Map<Eigen::MatrixXd>& _jacobian) const; + Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const; virtual bool minus(Eigen::Map<const Eigen::VectorXd>& _q1, Eigen::Map<const Eigen::VectorXd>& _q2, Eigen::Map<Eigen::VectorXd>& _q2_minus_q1); diff --git a/src/ceres_wrapper/local_parametrization_wrapper.cpp b/src/ceres_wrapper/local_parametrization_wrapper.cpp index 4607161970aa0c67928c5587cfc8a42db66407d0..1cb1425c08c761a56ad615a63f9e26786c37600a 100644 --- a/src/ceres_wrapper/local_parametrization_wrapper.cpp +++ b/src/ceres_wrapper/local_parametrization_wrapper.cpp @@ -13,7 +13,7 @@ bool LocalParametrizationWrapper::Plus(const double* x_raw, const double* delta_ bool LocalParametrizationWrapper::ComputeJacobian(const double* x, double* jacobian) const { Eigen::Map<const Eigen::VectorXd> x_map((double*)x, GlobalSize()); - Eigen::Map<Eigen::MatrixXd> jacobian_map((double*)jacobian, GlobalSize(), LocalSize()); + Eigen::Map<Eigen::MatrixRowXd> jacobian_map((double*)jacobian, GlobalSize(), LocalSize()); return local_parametrization_ptr_->computeJacobian(x_map, jacobian_map); }; diff --git a/src/state_block/local_parametrization_homogeneous.cpp b/src/state_block/local_parametrization_homogeneous.cpp index 8fbf3ce24f9394ca46d3bfbb90355f6d2e1a7d37..b2fa1c111e028445333236e01384144aeafc31a6 100644 --- a/src/state_block/local_parametrization_homogeneous.cpp +++ b/src/state_block/local_parametrization_homogeneous.cpp @@ -38,7 +38,7 @@ bool LocalParametrizationHomogeneous::plus(Eigen::Map<const Eigen::VectorXd>& _h } bool LocalParametrizationHomogeneous::computeJacobian(Eigen::Map<const Eigen::VectorXd>& _h, - Eigen::Map<Eigen::MatrixXd>& _jacobian) const + Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const { assert(_h.size() == global_size_ && "Wrong size of input quaternion."); assert(_jacobian.rows() == global_size_ && _jacobian.cols() == local_size_ && "Wrong size of Jacobian matrix."); diff --git a/src/state_block/local_parametrization_quaternion.cpp b/src/state_block/local_parametrization_quaternion.cpp index bc9d702739fb0b99b9558b959dad9ff8aae88aee..727fa0de8f737dee986eb69e99581ad49b343355 100644 --- a/src/state_block/local_parametrization_quaternion.cpp +++ b/src/state_block/local_parametrization_quaternion.cpp @@ -9,8 +9,8 @@ namespace wolf { template <> bool LocalParametrizationQuaternion<DQ_LOCAL>::plus(Eigen::Map<const Eigen::VectorXd>& _q, - Eigen::Map<const Eigen::VectorXd>& _delta_theta, - Eigen::Map<Eigen::VectorXd>& _q_plus_delta_theta) const + Eigen::Map<const Eigen::VectorXd>& _delta_theta, + Eigen::Map<Eigen::VectorXd>& _q_plus_delta_theta) const { assert(_q.size() == global_size_ && "Wrong size of input quaternion."); @@ -28,7 +28,7 @@ bool LocalParametrizationQuaternion<DQ_LOCAL>::plus(Eigen::Map<const Eigen::Vect template <> bool LocalParametrizationQuaternion<DQ_LOCAL>::computeJacobian(Eigen::Map<const Eigen::VectorXd>& _q, - Eigen::Map<Eigen::MatrixXd>& _jacobian) const + Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const { assert(_q.size() == global_size_ && "Wrong size of input quaternion."); assert(_jacobian.rows() == global_size_ && _jacobian.cols() == local_size_ && "Wrong size of Jacobian matrix."); @@ -44,8 +44,8 @@ bool LocalParametrizationQuaternion<DQ_LOCAL>::computeJacobian(Eigen::Map<const template <> bool LocalParametrizationQuaternion<DQ_LOCAL>::minus(Eigen::Map<const Eigen::VectorXd>& _q1, - Eigen::Map<const Eigen::VectorXd>& _q2, - Eigen::Map<Eigen::VectorXd>& _q2_minus_q1) + Eigen::Map<const Eigen::VectorXd>& _q2, + Eigen::Map<Eigen::VectorXd>& _q2_minus_q1) { assert(_q1.size() == global_size_ && "Wrong size of input quaternion."); assert(_q2.size() == global_size_ && "Wrong size of input quaternion."); @@ -61,8 +61,8 @@ bool LocalParametrizationQuaternion<DQ_LOCAL>::minus(Eigen::Map<const Eigen::Vec template <> bool LocalParametrizationQuaternion<DQ_GLOBAL>::plus(Eigen::Map<const Eigen::VectorXd>& _q, - Eigen::Map<const Eigen::VectorXd>& _delta_theta, - Eigen::Map<Eigen::VectorXd>& _q_plus_delta_theta) const + Eigen::Map<const Eigen::VectorXd>& _delta_theta, + Eigen::Map<Eigen::VectorXd>& _q_plus_delta_theta) const { assert(_q.size() == global_size_ && "Wrong size of input quaternion."); @@ -80,7 +80,7 @@ bool LocalParametrizationQuaternion<DQ_GLOBAL>::plus(Eigen::Map<const Eigen::Vec template <> bool LocalParametrizationQuaternion<DQ_GLOBAL>::computeJacobian(Eigen::Map<const Eigen::VectorXd>& _q, - Eigen::Map<Eigen::MatrixXd>& _jacobian) const + Eigen::Map<Eigen::MatrixRowXd>& _jacobian) const { assert(_q.size() == global_size_ && "Wrong size of input quaternion."); assert(_jacobian.rows() == global_size_ && _jacobian.cols() == local_size_ && "Wrong size of Jacobian matrix."); @@ -96,8 +96,8 @@ bool LocalParametrizationQuaternion<DQ_GLOBAL>::computeJacobian(Eigen::Map<const template <> bool LocalParametrizationQuaternion<DQ_GLOBAL>::minus(Eigen::Map<const Eigen::VectorXd>& _q1, - Eigen::Map<const Eigen::VectorXd>& _q2, - Eigen::Map<Eigen::VectorXd>& _q2_minus_q1) + Eigen::Map<const Eigen::VectorXd>& _q2, + Eigen::Map<Eigen::VectorXd>& _q2_minus_q1) { assert(_q1.size() == global_size_ && "Wrong size of input quaternion."); assert(_q2.size() == global_size_ && "Wrong size of input quaternion."); diff --git a/test/gtest_local_param.cpp b/test/gtest_local_param.cpp index bcb7d34288912977e6d111acd67380f11c87c655..39684eaf17c71ab8fcd4637683fe37f05139b5e2 100644 --- a/test/gtest_local_param.cpp +++ b/test/gtest_local_param.cpp @@ -51,7 +51,7 @@ TEST(TestLocalParametrization, QuaternionLocal) Map<VectorXd> da(&x_storage(4),3); da /= 10.0; Map<VectorXd> qo_m(&x_storage(7),4); - Map<MatrixXd> J(&M_storage(0,0),4,3); + Map<MatrixRowXd> J(&M_storage(0,0),4,3); MatrixXd J_num(4,3); LocalParametrizationQuaternion<DQ_LOCAL> Qpar_loc; @@ -96,7 +96,7 @@ TEST(TestLocalParametrization, QuaternionGlobal) Map<VectorXd> da(&x_storage(4),3); da /= 10.0; Map<VectorXd> qo_m(&x_storage(7),4); - Map<MatrixXd> J(&M_storage(0,0),4,3); + Map<MatrixRowXd> J(&M_storage(0,0),4,3); MatrixXd J_num(4,3); LocalParametrizationQuaternion<DQ_GLOBAL> Qpar_glob; @@ -138,7 +138,7 @@ TEST(TestLocalParametrization, Homogeneous) Map<VectorXd> d(&x_storage(15),3); d << .1,.2,.3; Map<VectorXd> ho_m(&x_storage(18),4); - Map<MatrixXd> J(&M_storage(0,0),4,3); + Map<MatrixRowXd> J(&M_storage(0,0),4,3); MatrixXd J_num(4,3); LocalParametrizationHomogeneous Hpar;