Skip to content
Snippets Groups Projects
pinocchio-test.cpp 1.22 KiB
Newer Older
#include <iostream>
#include <fstream>

#include <pinocchio/multibody/model.hpp>
#include <pinocchio/parsers/urdf.hpp>
#include <pinocchio/algorithm/rnea.hpp>
#include <pinocchio/algorithm/aba.hpp>

#include "models.h"

void pinocchio_test(std::string model_file)
{
  se3::Model model;
  se3::urdf::buildModel(pinocchio_benchmarks::path + model_file + ".urdf",
      se3::JointModelFreeFlyer(), model);

  std::cout << "Pinocchio Test" << std::endl;
  std::cout << "  model: " << model_file << 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);
Guilhem Saurel's avatar
Guilhem Saurel committed
  q(0) = 1;
  q.segment(0, 4).normalize();

  se3::aba(model, data, q, qdot, tau);
  std::cout << "qddot after ABA: " << data.ddq.transpose() << std::endl;

  se3::rnea(model, data, q, qdot, qddot);
  std::cout << "tau aftern RNEA: " << data.tau.transpose() << std::endl;
}

int main()
{
  for (auto& model : pinocchio_benchmarks::models)
  {
    pinocchio_test(model);
  }
  return 0;
}