Tesseract
Motion Planning Environment
Loading...
Searching...
No Matches
kdl_inv_kin_chain_nr.h
Go to the documentation of this file.
1
26#ifndef TESSERACT_KINEMATICS_KDL_INV_KIN_CHAIN_NR_H
27#define TESSERACT_KINEMATICS_KDL_INV_KIN_CHAIN_NR_H
30#include <kdl/tree.hpp>
31#include <kdl/chain.hpp>
32#include <kdl/chainiksolverpos_nr.hpp>
33#include <kdl/chainiksolvervel_pinv.hpp>
34#include <kdl/chainfksolverpos_recursive.hpp>
35#include <unordered_map>
36#include <console_bridge/console.h>
37#include <mutex>
38
41
44
46{
47static const std::string KDL_INV_KIN_CHAIN_NR_SOLVER_NAME = "KDLInvKinChainNR";
48
53{
54public:
55 // LCOV_EXCL_START
56 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
57 // LCOV_EXCL_STOP
58
59 using Ptr = std::shared_ptr<KDLInvKinChainNR>;
60 using ConstPtr = std::shared_ptr<const KDLInvKinChainNR>;
61 using UPtr = std::unique_ptr<KDLInvKinChainNR>;
62 using ConstUPtr = std::unique_ptr<const KDLInvKinChainNR>;
63
64 ~KDLInvKinChainNR() override = default;
69
79 const std::string& base_link,
80 const std::string& tip_link,
81 std::string solver_name = KDL_INV_KIN_CHAIN_NR_SOLVER_NAME);
82
91 const std::vector<std::pair<std::string, std::string> >& chains,
92 std::string solver_name = KDL_INV_KIN_CHAIN_NR_SOLVER_NAME);
93
95 const Eigen::Ref<const Eigen::VectorXd>& seed) const override final;
96
97 std::vector<std::string> getJointNames() const override final;
98 Eigen::Index numJoints() const override final;
99 std::string getBaseLinkName() const override final;
100 std::string getWorkingFrame() const override final;
101 std::vector<std::string> getTipLinkNames() const override final;
102 std::string getSolverName() const override final;
103 InverseKinematics::UPtr clone() const override final;
104
105private:
107 std::unique_ptr<KDL::ChainFkSolverPos_recursive> fk_solver_;
108 std::unique_ptr<KDL::ChainIkSolverVel_pinv> ik_vel_solver_;
109 std::unique_ptr<KDL::ChainIkSolverPos_NR> ik_solver_;
111 mutable std::mutex mutex_;
114 IKSolutions calcInvKinHelper(const Eigen::Isometry3d& pose,
115 const Eigen::Ref<const Eigen::VectorXd>& seed,
116 int segment_num = -1) const;
117};
118
119} // namespace tesseract_kinematics
120#endif // TESSERACT_KINEMATICS_KDL_INV_KIN_CHAIN_NR_H
#define vector(a, b, c)
Definition: FloatMath.inl:3227
Inverse kinematics functions.
Definition: inverse_kinematics.h:47
KDL Inverse kinematic chain implementation.
Definition: kdl_inv_kin_chain_nr.h:53
std::mutex mutex_
KDL is not thread safe due to mutable variables in Joint Class.
Definition: kdl_inv_kin_chain_nr.h:111
std::shared_ptr< KDLInvKinChainNR > Ptr
Definition: kdl_inv_kin_chain_nr.h:59
KDLInvKinChainNR & operator=(const KDLInvKinChainNR &other)
Definition: kdl_inv_kin_chain_nr.cpp:71
IKSolutions calcInvKin(const tesseract_common::TransformMap &tip_link_poses, const Eigen::Ref< const Eigen::VectorXd > &seed) const override final
Calculates joint solutions given a pose for each tip link.
Definition: kdl_inv_kin_chain_nr.cpp:137
std::unique_ptr< KDL::ChainIkSolverPos_NR > ik_solver_
KDL Inverse kinematic solver.
Definition: kdl_inv_kin_chain_nr.h:109
std::string getBaseLinkName() const override final
Get the robot base link name.
Definition: kdl_inv_kin_chain_nr.cpp:148
std::string solver_name_
Name of this solver.
Definition: kdl_inv_kin_chain_nr.h:110
std::unique_ptr< KDL::ChainFkSolverPos_recursive > fk_solver_
KDL Forward Kinematic Solver.
Definition: kdl_inv_kin_chain_nr.h:107
std::unique_ptr< KDLInvKinChainNR > UPtr
Definition: kdl_inv_kin_chain_nr.h:61
KDLInvKinChainNR & operator=(KDLInvKinChainNR &&)=delete
std::shared_ptr< const KDLInvKinChainNR > ConstPtr
Definition: kdl_inv_kin_chain_nr.h:60
KDLChainData kdl_data_
KDL data parsed from Scene Graph.
Definition: kdl_inv_kin_chain_nr.h:106
std::string getSolverName() const override final
Get the name of the solver. Recommend using the name of the class.
Definition: kdl_inv_kin_chain_nr.cpp:154
Eigen::Index numJoints() const override final
Number of joints in robot.
Definition: kdl_inv_kin_chain_nr.cpp:146
std::unique_ptr< const KDLInvKinChainNR > ConstUPtr
Definition: kdl_inv_kin_chain_nr.h:62
std::vector< std::string > getJointNames() const override final
Get list of joint names for kinematic object.
Definition: kdl_inv_kin_chain_nr.cpp:144
std::unique_ptr< KDL::ChainIkSolverVel_pinv > ik_vel_solver_
KDL Inverse kinematic velocity solver.
Definition: kdl_inv_kin_chain_nr.h:108
IKSolutions calcInvKinHelper(const Eigen::Isometry3d &pose, const Eigen::Ref< const Eigen::VectorXd > &seed, int segment_num=-1) const
calcFwdKin helper function
Definition: kdl_inv_kin_chain_nr.cpp:82
InverseKinematics::UPtr clone() const override final
Clone the forward kinematics object.
Definition: kdl_inv_kin_chain_nr.cpp:67
std::vector< std::string > getTipLinkNames() const override final
Get the names of the tip links of the kinematics group.
Definition: kdl_inv_kin_chain_nr.cpp:152
std::string getWorkingFrame() const override final
Get the inverse kinematics working frame.
Definition: kdl_inv_kin_chain_nr.cpp:150
KDLInvKinChainNR(KDLInvKinChainNR &&)=delete
Definition: graph.h:125
A basic scene graph using boost.
Eigen::VectorXd seed
Definition: ikfast_kinematics_7dof_unit.cpp:48
auto scene_graph
Definition: ikfast_kinematics_7dof_unit.cpp:51
Inverse kinematics functions.
Tesseract KDL utility functions.
Common Tesseract Macros.
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
Definition: macros.h:71
Definition: create_convex_hull.cpp:36
AlignedMap< std::string, Eigen::Isometry3d > TransformMap
Definition: types.h:66
Definition: forward_kinematics.h:44
static const std::string KDL_INV_KIN_CHAIN_NR_SOLVER_NAME
Definition: kdl_inv_kin_chain_nr.h:47
std::vector< Eigen::VectorXd > IKSolutions
The inverse kinematics solutions container.
Definition: types.h:41
The KDLChainData struct.
Definition: kdl_utils.h:95
auto pose
Definition: tesseract_environment_collision.cpp:118
Link base_link("base_link")