From 3cb2245f09c140f3bac52e3d4fc92b01740639a5 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel <guilhem.saurel@laas.fr> Date: Tue, 24 Jul 2018 10:47:22 +0200 Subject: [PATCH] clean *-benchmark.cpp --- src/pinocchio-benchmark.cpp | 45 ++++++++++++++++++++++++++++--------- src/rbdl-benchmark.cpp | 44 +++++++++++++++++++++++++++--------- 2 files changed, 67 insertions(+), 22 deletions(-) diff --git a/src/pinocchio-benchmark.cpp b/src/pinocchio-benchmark.cpp index 5f1c68b..02cb543 100644 --- a/src/pinocchio-benchmark.cpp +++ b/src/pinocchio-benchmark.cpp @@ -11,28 +11,51 @@ static void BM_Pinocchio_RNEA(benchmark::State& state) { se3::Model model; - - // Load an urdf file provided by the user se3::urdf::buildModel("models/simple_humanoid.urdf", se3::JointModelFreeFlyer(), model); - std::cout << "Pinocchio Benchmark" << std::endl; - std::cout << " model: " << "models/simple_humanoid.urdf" << std::endl; - std::cout << " nq: " << model.nq << std::endl; - std::cout << " nv: " << model.nv << std::endl; + se3::Data data(model); + + Eigen::VectorXd q = Eigen::VectorXd::Zero(model.nq); + Eigen::VectorXd qdot = Eigen::VectorXd::Zero(model.nv); + Eigen::VectorXd tau = Eigen::VectorXd::Zero(model.nv); + Eigen::VectorXd qddot = Eigen::VectorXd::Zero(model.nv); + + for (auto _: state) + { + state.PauseTiming(); + q = Eigen::VectorXd::Random(model.nq); + qdot = Eigen::VectorXd::Random(model.nv); + qddot = Eigen::VectorXd::Random(model.nv); + state.ResumeTiming(); + + se3::rnea(model, data, q, qdot, tau); + } +} + +static void BM_Pinocchio_ABA(benchmark::State& state) +{ + se3::Model model; + se3::urdf::buildModel("models/simple_humanoid.urdf", se3::JointModelFreeFlyer(), model); se3::Data data(model); + Eigen::VectorXd q = Eigen::VectorXd::Zero(model.nq); + Eigen::VectorXd qdot = Eigen::VectorXd::Zero(model.nv); + Eigen::VectorXd tau = Eigen::VectorXd::Zero(model.nv); + Eigen::VectorXd qddot = Eigen::VectorXd::Zero(model.nv); + for (auto _: state) { - Eigen::VectorXd q = Eigen::VectorXd::Random(model.nq); - Eigen::VectorXd qdot = Eigen::VectorXd::Random(model.nv); - Eigen::VectorXd tau = Eigen::VectorXd::Random(model.nv); - Eigen::VectorXd qddot = Eigen::VectorXd::Random(model.nv); + state.PauseTiming(); + q = Eigen::VectorXd::Random(model.nq); + qdot = Eigen::VectorXd::Random(model.nv); + tau = Eigen::VectorXd::Random(model.nv); + state.ResumeTiming(); se3::aba(model, data, q, qdot, tau); - //std::cout << "qddot after ABA: " << data.ddq.transpose() << std::endl; } } BENCHMARK(BM_Pinocchio_RNEA); +BENCHMARK(BM_Pinocchio_ABA); BENCHMARK_MAIN(); diff --git a/src/rbdl-benchmark.cpp b/src/rbdl-benchmark.cpp index 2984fe9..c5ba6e9 100644 --- a/src/rbdl-benchmark.cpp +++ b/src/rbdl-benchmark.cpp @@ -9,35 +9,57 @@ static void BM_RBDL_RNEA(benchmark::State& state) { RigidBodyDynamics::Model* model = new RigidBodyDynamics::Model(); + RigidBodyDynamics::Addons::URDFReadFromFile("models/simple_humanoid.urdf", model, true); + + RigidBodyDynamics::Math::VectorNd q = + RigidBodyDynamics::Math::VectorNd::Zero(model->q_size); + RigidBodyDynamics::Math::VectorNd qdot = + RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size); + RigidBodyDynamics::Math::VectorNd tau = + RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size); + RigidBodyDynamics::Math::VectorNd qddot = + RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size); - // Load an urdf file provided by the user + for (auto _: state) + { + state.PauseTiming(); + q = RigidBodyDynamics::Math::VectorNd::Random(model->q_size); + qdot = RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); + qddot = RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); + state.ResumeTiming(); + + RigidBodyDynamics::InverseDynamics(*model, q, qdot, tau, qddot); + } +} + +static void BM_RBDL_ABA(benchmark::State& state) +{ + RigidBodyDynamics::Model* model = new RigidBodyDynamics::Model(); RigidBodyDynamics::Addons::URDFReadFromFile("models/simple_humanoid.urdf", model, true); - std::cout << "RBDL Benchmark" << std::endl; - std::cout << " model: " << "models/simple_humanoid.urdf" << std::endl; - std::cout << " nq: " << model->q_size << std::endl; - std::cout << " nv: " << model->qdot_size << std::endl; RigidBodyDynamics::Math::VectorNd q = - RigidBodyDynamics::Math::VectorNd::Random(model->q_size); + RigidBodyDynamics::Math::VectorNd::Zero(model->q_size); RigidBodyDynamics::Math::VectorNd qdot = - RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); + RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size); RigidBodyDynamics::Math::VectorNd tau = - RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); + RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size); RigidBodyDynamics::Math::VectorNd qddot = - RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); + RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size); for (auto _: state) { + state.PauseTiming(); q = RigidBodyDynamics::Math::VectorNd::Random(model->q_size); qdot = RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); tau = RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); - qddot = RigidBodyDynamics::Math::VectorNd::Random(model->qdot_size); + state.ResumeTiming(); RigidBodyDynamics::ForwardDynamics(*model, q, qdot, tau, qddot); - //std::cout << "qddot after ABA: " << qddot.transpose() << std::endl; } } + BENCHMARK(BM_RBDL_RNEA); +BENCHMARK(BM_RBDL_ABA); BENCHMARK_MAIN(); -- GitLab