odometry
KinematicModel.hpp
Go to the documentation of this file.
1 
49 #ifndef ODOMETRY_KINEMATIC_MODEL_HPP
50 #define ODOMETRY_KINEMATIC_MODEL_HPP
51 
52 #include <string> // std string library
53 #include <vector> // std vector library
54 #include <base/Eigen.hpp> //base eigen of rock
55 
56 namespace odometry
57 {
93  template <typename _Scalar, int _RobotTrees, int _RobotJointDoF, int _SlipDoF, int _ContactDoF>
95  {
96  public:
98  static const unsigned int MAX_CHAIN_DOF = _RobotJointDoF+_SlipDoF+_ContactDoF;
99 
101  static const unsigned int MODEL_DOF = _RobotJointDoF+_RobotTrees*(_SlipDoF+_ContactDoF);
102 
103  public:
106  inline int getNumberOfTrees()
107  {
108  return _RobotTrees;
109  }
112  inline int getRobotJointDoF(void)
113  {
114  return _RobotJointDoF;
115  }
118  inline int getSlipDoF(void)
119  {
120  return _SlipDoF;
121  }
124  inline int getContactDoF()
125  {
126  return _ContactDoF;
127  }
130  inline unsigned int getMaxChainDoF()
131  {
132  return MAX_CHAIN_DOF;
133  }
136  inline unsigned int getModelDOF()
137  {
138  return MODEL_DOF;
139  }
140 
143  virtual std::string name() = 0;
144 
153  virtual void contactPointsPerTree (std::vector<unsigned int> &contactPoints) = 0;
154 
161  virtual void setPointsInContact (const std::vector<int> &pointsInContact) = 0;
162 
176  virtual void fkBody2ContactPointt(const int chainIdx, const std::vector<_Scalar> &positions, Eigen::Affine3d &fkTrans, base::Matrix6d &fkCov) = 0;
177 
188  virtual void fkSolver(const std::vector<_Scalar> &positions, std::vector<Eigen::Affine3d> &fkRobot, std::vector<base::Matrix6d> &fkCov) = 0;
189 
198  virtual Eigen::Matrix<_Scalar, 6*_RobotTrees, MODEL_DOF> jacobianSolver(const std::vector<_Scalar> &positions) = 0;
199  };
200 }
201 
202 #endif // ODOMETRY_KINEMATIC_MODEL_HPP
203 
virtual std::string name()=0
The name of the Kinematic Model.
virtual Eigen::Matrix< _Scalar, 6 *_RobotTrees, MODEL_DOF > jacobianSolver(const std::vector< _Scalar > &positions)=0
Computes the Robot Jacobian.
int getNumberOfTrees()
return the number of Trees
Definition: KinematicModel.hpp:106
static const unsigned int MAX_CHAIN_DOF
Definition: KinematicModel.hpp:98
unsigned int getModelDOF()
return .
Definition: KinematicModel.hpp:136
static const unsigned int MODEL_DOF
Definition: KinematicModel.hpp:101
virtual void fkSolver(const std::vector< _Scalar > &positions, std::vector< Eigen::Affine3d > &fkRobot, std::vector< base::Matrix6d > &fkCov)=0
Forward Kinematics Solver.
virtual void fkBody2ContactPointt(const int chainIdx, const std::vector< _Scalar > &positions, Eigen::Affine3d &fkTrans, base::Matrix6d &fkCov)=0
Forward Kinematic.
virtual void setPointsInContact(const std::vector< int > &pointsInContact)=0
Assign the current point in contact.
int getSlipDoF(void)
return the dimension of the slip model.
Definition: KinematicModel.hpp:118
int getRobotJointDoF(void)
return the complete robot number of Joints
Definition: KinematicModel.hpp:112
unsigned int getMaxChainDoF()
return . Equivalent to the number of columns in teh Jacobian.
Definition: KinematicModel.hpp:130
Definition: BodyState.cpp:5
Eigen::Matrix< double, 6, 6 > Matrix6d
Definition: ContactOdometry.hpp:14
int getContactDoF()
return the dimension of the contact angle model
Definition: KinematicModel.hpp:124
Definition: KinematicModel.hpp:94
virtual void contactPointsPerTree(std::vector< unsigned int > &contactPoints)=0
Number of contact points per Tree.