kinematics-dynamics
ChainIkSolverPos_ST.hpp
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
2 
3 #ifndef __CHAIN_IK_SOLVER_POS_ST_HPP__
4 #define __CHAIN_IK_SOLVER_POS_ST_HPP__
5 
6 #include <kdl/chainiksolver.hpp>
7 
8 #include "ScrewTheoryIkProblem.hpp"
9 #include "ConfigurationSelector.hpp"
10 
11 namespace roboticslab
12 {
13 
23 class ChainIkSolverPos_ST : public KDL::ChainIkSolverPos
24 {
25 public:
27  virtual ~ChainIkSolverPos_ST();
28 
39  int CartToJnt(const KDL::JntArray & q_init, const KDL::Frame & p_in, KDL::JntArray & q_out) override;
40 
48  void updateInternalDataStructures() override;
49 
58  const char * strError(const int error) const override;
59 
69  static KDL::ChainIkSolverPos * create(const KDL::Chain & chain, const ConfigurationSelectorFactory & configFactory);
70 
72  static const int E_SOLUTION_NOT_FOUND = -100;
73 
75  static const int E_OUT_OF_LIMITS = -101;
76 
78  static const int E_NOT_REACHABLE = 100;
79 
80 private:
81  ChainIkSolverPos_ST(const KDL::Chain & chain, ScrewTheoryIkProblem * problem, ConfigurationSelector * config);
82 
83  const KDL::Chain & chain;
84 
85  ScrewTheoryIkProblem * problem;
86 
87  ConfigurationSelector * config;
88 };
89 
90 } // namespace roboticslab
91 
92 #endif // __CHAIN_IK_SOLVER_POS_ST_HPP__
IK solver using Screw Theory.
Definition: ChainIkSolverPos_ST.hpp:24
static KDL::ChainIkSolverPos * create(const KDL::Chain &chain, const ConfigurationSelectorFactory &configFactory)
Create an instance of ChainIkSolverPos_ST.
Definition: ChainIkSolverPos_ST.cpp:82
static const int E_SOLUTION_NOT_FOUND
Return code, IK solution not found.
Definition: ChainIkSolverPos_ST.hpp:72
void updateInternalDataStructures() override
Update the internal data structures.
Definition: ChainIkSolverPos_ST.cpp:64
int CartToJnt(const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) override
Calculate inverse position kinematics.
Definition: ChainIkSolverPos_ST.cpp:36
static const int E_OUT_OF_LIMITS
Return code, target pose out of robot limits.
Definition: ChainIkSolverPos_ST.hpp:75
virtual ~ChainIkSolverPos_ST()
Destructor.
Definition: ChainIkSolverPos_ST.cpp:25
static const int E_NOT_REACHABLE
Return code, solution out of reach.
Definition: ChainIkSolverPos_ST.hpp:78
const char * strError(const int error) const override
Return a description of the last error.
Definition: ChainIkSolverPos_ST.cpp:106
Base factory class for ConfigurationSelector.
Definition: ConfigurationSelector.hpp:183
Abstract base class for a robot configuration strategy selector.
Definition: ConfigurationSelector.hpp:20
Proxy IK problem solver class that iterates over a sequence of subproblems.
Definition: ScrewTheoryIkProblem.hpp:95
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6