From b62ca5d338ab208257cf87d90773edd5fd81ae09 Mon Sep 17 00:00:00 2001 From: Mansard <nmansard@laas.fr> Date: Fri, 12 Sep 2014 13:15:55 +0200 Subject: [PATCH] IVIGIT: added unittest/timings. --- CMakeLists.txt | 4 +++ unittest/timings.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 unittest/timings.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 39f7a5c03..d6e5ff92f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,10 @@ ADD_EXECUTABLE(crba EXCLUDE_FROM_ALL unittest/crba.cpp) PKG_CONFIG_USE_DEPENDENCY(crba eigenpy) PKG_CONFIG_USE_DEPENDENCY(crba urdfdom) +ADD_EXECUTABLE(timings EXCLUDE_FROM_ALL unittest/timings.cpp) +PKG_CONFIG_USE_DEPENDENCY(timings eigenpy) +PKG_CONFIG_USE_DEPENDENCY(timings urdfdom) + ADD_EXECUTABLE(jacobian EXCLUDE_FROM_ALL unittest/jacobian.cpp) PKG_CONFIG_USE_DEPENDENCY(jacobian eigenpy) diff --git a/unittest/timings.cpp b/unittest/timings.cpp new file mode 100644 index 000000000..a4a3291f3 --- /dev/null +++ b/unittest/timings.cpp @@ -0,0 +1,72 @@ +#include "pinocchio/spatial/fwd.hpp" +#include "pinocchio/spatial/se3.hpp" +#include "pinocchio/multibody/joint.hpp" +#include "pinocchio/multibody/visitor.hpp" +#include "pinocchio/multibody/model.hpp" +#include "pinocchio/algorithm/crba.hpp" +#include "pinocchio/algorithm/rnea.hpp" +#include "pinocchio/algorithm/cholesky.hpp" +#include "pinocchio/algorithm/jacobian.hpp" +#include "pinocchio/multibody/parser/urdf.hpp" +#include "pinocchio/multibody/parser/sample-models.hpp" + +#include <iostream> + +#include "pinocchio/tools/timer.hpp" + + +int main(int argc, const char ** argv) +{ + using namespace Eigen; + using namespace se3; + + StackTicToc timer(StackTicToc::US); + const int NBT = 1000*100; + se3::Model model; + + std::string filename = "../models/simple_humanoid.urdf"; + if(argc>1) filename = argv[1]; + if( filename == "HS") + se3::buildModels::humanoidSimple(model,true); + else if( filename == "H2" ) + se3::buildModels::humanoid2d(model); + else + model = se3::buildModel(filename,true); + std::cout << "nq = " << model.nq << std::endl; + + se3::Data data(model); + VectorXd q = VectorXd::Random(model.nq); + VectorXd qdot = VectorXd::Random(model.nv); + VectorXd qddot = VectorXd::Random(model.nv); + + timer.tic(); + SMOOTH(NBT) + { + rnea(model,data,q,qdot,qddot); + } + std::cout << "RNEA = \t\t"; timer.toc(std::cout,NBT); + + timer.tic(); + SMOOTH(NBT) + { + crba(model,data,q); + } + std::cout << "CRBA = \t\t"; timer.toc(std::cout,NBT); + + timer.tic(); + SMOOTH(NBT) + { + cholesky::decompose(model,data); + } + std::cout << "Cholesky = \t"; timer.toc(std::cout,NBT); + + timer.tic(); + SMOOTH(NBT) + { + computeJacobian(model,data,q); + } + std::cout << "Jacobian = \t"; timer.toc(std::cout,NBT); + + std::cout << "--" << std::endl; + return 0; +} -- GitLab