From 70d02c2ddb9d0c484c6332313d467c681d115d63 Mon Sep 17 00:00:00 2001 From: jcarpent <jcarpent@laas.fr> Date: Tue, 9 Aug 2016 13:21:14 +0200 Subject: [PATCH] [Joint] Clean JointModel --- src/multibody/joint/joint.hpp | 62 +++++++++++++---------------------- 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/src/multibody/joint/joint.hpp b/src/multibody/joint/joint.hpp index d56d9e98f..03892cfea 100644 --- a/src/multibody/joint/joint.hpp +++ b/src/multibody/joint/joint.hpp @@ -52,21 +52,22 @@ namespace se3 typedef Eigen::Matrix<double,Eigen::Dynamic,1> ConfigVector_t; typedef Eigen::Matrix<double,Eigen::Dynamic,1> TangentVector_t; }; + template<> struct traits<JointData> { typedef Joint JointDerived; }; template<> struct traits<JointModel> { typedef Joint JointDerived; }; struct JointData : public JointDataBase<JointData> , JointDataVariant { - typedef JointDataVariant JointDataBoostVariant; - + EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Joint JointDerived; + SE3_JOINT_TYPEDEF; - JointDataVariant& toVariant() { return *static_cast<JointDataVariant*>(this); } - const JointDataVariant& toVariant() const { return *static_cast<const JointDataVariant*>(this); } + JointDataVariant & toVariant() { return *static_cast<JointDataVariant*>(this); } + const JointDataVariant & toVariant() const { return *static_cast<const JointDataVariant*>(this); } const Constraint_t S() const { return constraint_xd(*this); } - const Transformation_t M() const { return joint_transform(*this); } // featherstone book, page 78 (sXp) + const Transformation_t M() const { return joint_transform(*this); } const Motion_t v() const { return motion(*this); } const Bias_t c() const { return bias(*this); } @@ -76,24 +77,25 @@ namespace se3 const D_t Dinv() const { return dinv_inertia(*this); } const UD_t UDinv() const { return udinv_inertia(*this); } - JointData() : JointDataBoostVariant() {} - JointData(const JointDataVariant & jdata) : JointDataBoostVariant(jdata) {} + JointData() : JointDataVariant() {} + JointData(const JointDataVariant & jdata) : JointDataVariant(jdata) {} }; struct JointModel : public JointModelBase<JointModel> , JointModelVariant { + EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef JointModelVariant JointModelBoostVariant; - typedef Joint JointDerived; + SE3_JOINT_TYPEDEF; SE3_JOINT_USE_INDEXES; using Base::id; using Base::setIndexes; using Base::operator==; - JointModel() : JointModelBoostVariant() {} - JointModel(const JointModelVariant & model_variant) : JointModelBoostVariant(model_variant) + JointModel() : JointModelVariant() {} + JointModel(const JointModelVariant & model_variant) : JointModelVariant(model_variant) {} JointModelVariant& toVariant() { return *static_cast<JointModelVariant*>(this); } @@ -103,50 +105,32 @@ namespace se3 void calc(JointData & data,const Eigen::VectorXd & q) const { calc_zero_order(*this,data,q); } - void calc (JointData & data, const Eigen::VectorXd & q, const Eigen::VectorXd & v) const - { - calc_first_order(*this,data,q,v); - } + void calc(JointData & data, const Eigen::VectorXd & q, const Eigen::VectorXd & v) const + { calc_first_order(*this,data,q,v); } void calc_aba(JointData & data, Inertia::Matrix6 & I, const bool update_I) const - { - ::se3::calc_aba(*this,data,I,update_I); - } + { ::se3::calc_aba(*this,data,I,update_I); } ConfigVector_t integrate_impl(const Eigen::VectorXd & q,const Eigen::VectorXd & v) const - { - return ::se3::integrate(*this,q,v); - } + { return ::se3::integrate(*this,q,v); } ConfigVector_t interpolate_impl(const Eigen::VectorXd & q0,const Eigen::VectorXd & q1, const double u) const - { - return ::se3::interpolate(*this,q0,q1,u); - } + { return ::se3::interpolate(*this,q0,q1,u); } ConfigVector_t randomConfiguration_impl(const ConfigVector_t & lower_pos_limit, const ConfigVector_t & upper_pos_limit) const throw (std::runtime_error) - { - return ::se3::randomConfiguration(*this,lower_pos_limit,upper_pos_limit); - } + { return ::se3::randomConfiguration(*this,lower_pos_limit,upper_pos_limit); } TangentVector_t difference_impl(const Eigen::VectorXd & q0,const Eigen::VectorXd & q1) const - { - return ::se3::difference(*this,q0,q1); - } + { return ::se3::difference(*this,q0,q1); } double distance_impl(const Eigen::VectorXd & q0,const Eigen::VectorXd & q1) const - { - return ::se3::distance(*this,q0,q1); - } + { return ::se3::distance(*this,q0,q1); } void normalize_impl(Eigen::VectorXd & q) const - { - return ::se3::normalize(*this,q); - } + { return ::se3::normalize(*this,q); } ConfigVector_t neutralConfiguration_impl() const - { - return ::se3::neutralConfiguration(*this); - } + { return ::se3::neutralConfiguration(*this); } std::string shortname() const { return ::se3::shortname(*this); } static std::string classname() { return "JointModel"; } @@ -162,7 +146,7 @@ namespace se3 void setIndexes(JointIndex id,int nq,int nv) { ::se3::setIndexes(*this,id, nq, nv); } }; - typedef std::vector<JointData> JointDataVector; + typedef std::vector<JointData> JointDataVector; typedef std::vector<JointModel> JointModelVector; } // namespace se3 -- GitLab