Skip to content
Snippets Groups Projects
rbdl-test.cpp 1.44 KiB
Newer Older
Guilhem Saurel's avatar
Guilhem Saurel committed
#include <iostream>
#include <fstream>

#include <rbdl/rbdl.h>
#include <rbdl/addons/urdfreader/urdfreader.h>

Guilhem Saurel's avatar
Guilhem Saurel committed

void rbdl_test(std::string model_file)
{
Guilhem Saurel's avatar
Guilhem Saurel committed
  RigidBodyDynamics::Model* model = new RigidBodyDynamics::Model();
  RigidBodyDynamics::Addons::URDFReadFromFile((pinocchio_benchmarks::path +
      model_file).c_str(), model, true);
  std::cout << "RBDL Test" << std::endl;
  std::cout << "  model: " << model_file << std::endl;
Guilhem Saurel's avatar
Guilhem Saurel committed
  std::cout << "  nq: " << model->q_size << std::endl;
  std::cout << "  nv: " << model->qdot_size << std::endl;

  RigidBodyDynamics::Math::VectorNd q =
    RigidBodyDynamics::Math::VectorNd::Zero(model->q_size);
Guilhem Saurel's avatar
Guilhem Saurel committed
  RigidBodyDynamics::Math::VectorNd qdot =
    RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size);
Guilhem Saurel's avatar
Guilhem Saurel committed
  RigidBodyDynamics::Math::VectorNd tau =
    RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size);
Guilhem Saurel's avatar
Guilhem Saurel committed
  RigidBodyDynamics::Math::VectorNd qddot =
    RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size);
  q[0] = 1;
Guilhem Saurel's avatar
Guilhem Saurel committed

  RigidBodyDynamics::ForwardDynamics(*model, q, qdot, tau, qddot);
  std::cout << "qddot after ABA: " << qddot.transpose() << std::endl;

  qddot = RigidBodyDynamics::Math::VectorNd::Zero(model->qdot_size);

Guilhem Saurel's avatar
Guilhem Saurel committed
  RigidBodyDynamics::InverseDynamics(*model, q, qdot, qddot, tau);
  std::cout << "tau aftern RNEA: " << tau.transpose() << std::endl;
Guilhem Saurel's avatar
Guilhem Saurel committed

  delete model;
}

int main()
{
  for (auto& model : pinocchio_benchmarks::models)
  {
    rbdl_test(model);
  }
Guilhem Saurel's avatar
Guilhem Saurel committed
  return 0;
}