From 939c994cd5bf64f71a3230bac117aa13a05d7c30 Mon Sep 17 00:00:00 2001 From: jcarpent <jcarpent@laas.fr> Date: Fri, 18 Dec 2015 18:53:55 +0100 Subject: [PATCH] [C++] Uniformize naming of the algorithm for forward kinematics --- benchmark/timings.cpp | 10 ++--- src/algorithm/center-of-mass.hxx | 2 +- src/algorithm/energy.hpp | 4 +- src/algorithm/kinematics.hpp | 73 +++++++++++++++----------------- src/python/algorithms.hpp | 36 ++++++++-------- 5 files changed, 61 insertions(+), 64 deletions(-) diff --git a/benchmark/timings.cpp b/benchmark/timings.cpp index e6cf7557b..2ef6d5e1f 100644 --- a/benchmark/timings.cpp +++ b/benchmark/timings.cpp @@ -151,7 +151,7 @@ int main(int argc, const char ** argv) timer.tic(); SMOOTH(NBT) { - geometry(model,data,qs[_smooth]); + forwardKinematics(model,data,qs[_smooth]); } std::cout << "Geometry = \t"; timer.toc(std::cout,NBT); @@ -159,16 +159,16 @@ int main(int argc, const char ** argv) timer.tic(); SMOOTH(NBT) { - kinematics(model,data,qs[_smooth],qdots[_smooth]); + forwardKinematics(model,data,qs[_smooth],qdots[_smooth]); } - std::cout << "Kinematics = \t"; timer.toc(std::cout,NBT); + std::cout << "First Order Kinematics = \t"; timer.toc(std::cout,NBT); timer.tic(); SMOOTH(NBT) { - dynamics(model,data,qs[_smooth],qdots[_smooth], qddots[_smooth]); + forwardKinematics(model,data,qs[_smooth],qdots[_smooth], qddots[_smooth]); } - std::cout << "Dynamics = \t"; timer.toc(std::cout,NBT); + std::cout << "Second Order Kinematics = \t"; timer.toc(std::cout,NBT); std::cout << "--" << std::endl; return 0; diff --git a/src/algorithm/center-of-mass.hxx b/src/algorithm/center-of-mass.hxx index 8621dbead..449710cf0 100644 --- a/src/algorithm/center-of-mass.hxx +++ b/src/algorithm/center-of-mass.hxx @@ -104,7 +104,7 @@ namespace se3 data.acom[0].setZero (); // Forward Step - dynamics(model, data, q, v, a); + forwardKinematics(model, data, q, v, a); for(Model::Index i=1;i<(Model::Index)(model.nbody);++i) { const double mass = model.inertias[i].mass(); diff --git a/src/algorithm/energy.hpp b/src/algorithm/energy.hpp index 0fb14ee37..ad5538259 100644 --- a/src/algorithm/energy.hpp +++ b/src/algorithm/energy.hpp @@ -74,7 +74,7 @@ namespace se3 data.kinetic_energy = 0.; if (update_kinematics) - kinematics(model,data,q,v); + forwardKinematics(model,data,q,v); for(Model::Index i=1;i<(Model::Index)(model.nbody);++i) data.kinetic_energy += model.inertias[i].vtiv(data.v[i]); @@ -93,7 +93,7 @@ namespace se3 const Motion::ConstLinear_t & g = model.gravity.linear(); if (update_kinematics) - geometry(model,data,q); + forwardKinematics(model,data,q); for(Model::Index i=1;i<(Model::Index)(model.nbody);++i) data.potential_energy += model.inertias[i].mass() * data.oMi[i].translation().dot(g); diff --git a/src/algorithm/kinematics.hpp b/src/algorithm/kinematics.hpp index 3181e00fb..9d700a7a4 100644 --- a/src/algorithm/kinematics.hpp +++ b/src/algorithm/kinematics.hpp @@ -23,29 +23,27 @@ namespace se3 { - inline void geometry(const Model & model, - Data & data, - const Eigen::VectorXd & q); - - - - inline void kinematics(const Model & model, - Data & data, - const Eigen::VectorXd & q, - const Eigen::VectorXd & v); + inline void forwardKinematics(const Model & model, + Data & data, + const Eigen::VectorXd & q); + + inline void forwardKinematics(const Model & model, + Data & data, + const Eigen::VectorXd & q, + const Eigen::VectorXd & v); - inline void dynamics(const Model & model, - Data & data, - const Eigen::VectorXd & q, - const Eigen::VectorXd & v, - const Eigen::VectorXd & a); + inline void forwardKinematics(const Model & model, + Data & data, + const Eigen::VectorXd & q, + const Eigen::VectorXd & v, + const Eigen::VectorXd & a); } // namespace se3 /* --- Details -------------------------------------------------------------------- */ namespace se3 { - struct GeometryStep : public fusion::JointVisitor<GeometryStep> + struct ForwardKinematicZeroStep : public fusion::JointVisitor<ForwardKinematicZeroStep> { typedef boost::fusion::vector<const se3::Model &, se3::Data &, @@ -53,7 +51,7 @@ namespace se3 const Eigen::VectorXd & > ArgsType; - JOINT_VISITOR_INIT (GeometryStep); + JOINT_VISITOR_INIT (ForwardKinematicZeroStep); template<typename JointModel> static void algo(const se3::JointModelBase<JointModel> & jmodel, @@ -79,21 +77,20 @@ namespace se3 }; inline void - geometry(const Model & model, - Data & data, - const Eigen::VectorXd & q) + forwardKinematics(const Model & model, + Data & data, + const Eigen::VectorXd & q) { for (Model::Index i=1; i < (Model::Index) model.nbody; ++i) { - GeometryStep::run(model.joints[i], + ForwardKinematicZeroStep::run(model.joints[i], data.joints[i], - GeometryStep::ArgsType (model,data,i,q) + ForwardKinematicZeroStep::ArgsType (model,data,i,q) ); } } - - struct KinematicsStep : public fusion::JointVisitor<KinematicsStep> + struct ForwardKinematicFirstStep : public fusion::JointVisitor<ForwardKinematicFirstStep> { typedef boost::fusion::vector< const se3::Model&, se3::Data&, @@ -102,7 +99,7 @@ namespace se3 const Eigen::VectorXd & > ArgsType; - JOINT_VISITOR_INIT(KinematicsStep); + JOINT_VISITOR_INIT(ForwardKinematicFirstStep); template<typename JointModel> static void algo(const se3::JointModelBase<JointModel> & jmodel, @@ -134,20 +131,20 @@ namespace se3 }; inline void - kinematics(const Model & model, Data& data, - const Eigen::VectorXd & q, - const Eigen::VectorXd & v) + forwardKinematics(const Model & model, Data & data, + const Eigen::VectorXd & q, + const Eigen::VectorXd & v) { data.v[0].setZero(); for( Model::Index i=1; i<(Model::Index) model.nbody; ++i ) { - KinematicsStep::run(model.joints[i],data.joints[i], - KinematicsStep::ArgsType(model,data,i,q,v)); + ForwardKinematicFirstStep::run(model.joints[i],data.joints[i], + ForwardKinematicFirstStep::ArgsType(model,data,i,q,v)); } } - struct DynamicsStep : public fusion::JointVisitor<DynamicsStep> + struct ForwardKinematicSecondStep : public fusion::JointVisitor<ForwardKinematicSecondStep> { typedef boost::fusion::vector< const se3::Model&, se3::Data&, @@ -157,7 +154,7 @@ namespace se3 const Eigen::VectorXd & > ArgsType; - JOINT_VISITOR_INIT(DynamicsStep); + JOINT_VISITOR_INIT(ForwardKinematicSecondStep); template<typename JointModel> static void algo(const se3::JointModelBase<JointModel> & jmodel, @@ -189,18 +186,18 @@ namespace se3 }; inline void - dynamics(const Model & model, Data & data, - const Eigen::VectorXd & q, - const Eigen::VectorXd & v, - const Eigen::VectorXd & a) + forwardKinematics(const Model & model, Data & data, + const Eigen::VectorXd & q, + const Eigen::VectorXd & v, + const Eigen::VectorXd & a) { data.v[0].setZero(); data.a[0].setZero(); for( Model::Index i=1; i < (Model::Index) model.nbody; ++i ) { - DynamicsStep::run(model.joints[i],data.joints[i], - DynamicsStep::ArgsType(model,data,i,q,v,a)); + ForwardKinematicSecondStep::run(model.joints[i],data.joints[i], + ForwardKinematicSecondStep::ArgsType(model,data,i,q,v,a)); } } } // namespace se3 diff --git a/src/python/algorithms.hpp b/src/python/algorithms.hpp index b31ae65d2..fdfb0fd9f 100644 --- a/src/python/algorithms.hpp +++ b/src/python/algorithms.hpp @@ -113,28 +113,28 @@ namespace se3 computeJacobians( *model,*data,q ); } - static void geometry_proxy(const ModelHandler & model, - DataHandler & data, - const VectorXd_fx & q) + static void fk_0_proxy(const ModelHandler & model, + DataHandler & data, + const VectorXd_fx & q) { - geometry(*model,*data,q); + forwardKinematics(*model,*data,q); } - static void kinematics_proxy( const ModelHandler& model, - DataHandler & data, - const VectorXd_fx & q, - const VectorXd_fx & qdot ) + static void fk_1_proxy( const ModelHandler& model, + DataHandler & data, + const VectorXd_fx & q, + const VectorXd_fx & qdot ) { - kinematics( *model,*data,q,qdot ); + forwardKinematics(*model,*data,q,qdot); } - static void dynamics_proxy(const ModelHandler& model, - DataHandler & data, - const VectorXd_fx & q, - const VectorXd_fx & v, - const VectorXd_fx & a) + static void fk_2_proxy(const ModelHandler& model, + DataHandler & data, + const VectorXd_fx & q, + const VectorXd_fx & v, + const VectorXd_fx & a) { - dynamics(*model,*data,q,v,a); + forwardKinematics(*model,*data,q,v,a); } static void computeAllTerms_proxy(const ModelHandler & model, @@ -245,20 +245,20 @@ namespace se3 "Configuration q (size Model::nq)"), "Compute the jacobian of the center of mass, put the result in Data and return it."); - bp::def("kinematics",kinematics_proxy, + bp::def("kinematics",fk_1_proxy, bp::args("Model","Data", "Configuration q (size Model::nq)", "Velocity v (size Model::nv)"), "Compute the placements and spatial velocities of all the frames of the kinematic " "tree and put the results in data."); - bp::def("geometry",geometry_proxy, + bp::def("geometry",fk_0_proxy, bp::args("Model","Data", "Configuration q (size Model::nq)"), "Compute the placements of all the frames of the kinematic " "tree and put the results in data."); - bp::def("dynamics",dynamics_proxy, + bp::def("dynamics",fk_2_proxy, bp::args("Model","Data", "Configuration q (size Model::nq)", "Velocity v (size Model::nv)", -- GitLab