AUV-Coop-Assembly
Master Thesis for Robotics Engineering. Cooperative peg-in-hole assembly with two underwater vehicles guided by vision
kdlTry.cpp
1 #include <kdl_parser/kdl_parser.hpp>
2 #include <kdl/chain.hpp>
3 #include <kdl/chainjnttojacsolver.hpp>
4 #include <urdf/model.h>
5 
6 #include "support/header/conversions.h"
7 
8 
9 int main(int argc, char **argv){
10 
11 
12  std::string filename = "/home/tori/UWsim/UWsim/src/uwsim/data/scenes/g500ARM5.urdf";
13  TiXmlDocument file_xml(filename);
14  file_xml.LoadFile();
15 
16  // parse URDF arm model
17  KDL::Tree my_tree;
18  urdf::Model my_model;
19  if (!my_model.initXml(&file_xml)){
20  ROS_ERROR("Failed to parse urdf robot model");
21  return false;
22  }
23  if (!kdl_parser::treeFromUrdfModel(my_model, my_tree)){
24  ROS_ERROR("Failed to construct kdl tree");
25  return false;
26  }
27  KDL::Chain myChain;
28  my_tree.getChain("base_link", "part4_base", myChain);
29  //std::cout<< myChain.getNrOfJoints() << "\n";
30  KDL::ChainJntToJacSolver solver(myChain);
31 
32  KDL::JntArray jointpositions = KDL::JntArray(myChain.getNrOfJoints());
33 
34  std::vector<double> pos;
35  pos.push_back(0.1);
36  pos.push_back(0.5);
37  pos.push_back(0.8);
38  pos.push_back(1.0);
39  pos.push_back(0.15);
40  for(unsigned int i=0; i<myChain.getNrOfJoints(); i++){
41 
42  jointpositions(i)=pos[i];
43  }
44 
45  KDL::Jacobian jacob;
46  jacob.resize(myChain.getNrOfJoints());
47  solver.JntToJac(jointpositions, jacob);
48 
49 
50  Eigen::MatrixXd jacob_eig = CONV::jacobian_kdl2eigen(jacob);
51  std::cout << jacob.data << "\n\n";
52  std::cout << jacob_eig << "\n\n";
53 
54 
55 }
56