Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef KDLCHAINIKSOLVERPOS_NR_JL_Mimic_HPP
00029 #define KDLCHAINIKSOLVERPOS_NR_JL_Mimic_HPP
00030
00031 #include "kdl/chainiksolver.hpp"
00032 #include "kdl/chainfksolver.hpp"
00033
00034 #include <moveit/kdl_kinematics_plugin/joint_mimic.hpp>
00035
00036 namespace KDL
00037 {
00046 class ChainIkSolverPos_NR_JL_Mimic : public ChainIkSolverPos
00047 {
00048 public:
00066 ChainIkSolverPos_NR_JL_Mimic(const Chain& chain, const JntArray& q_min, const JntArray& q_max,
00067 ChainFkSolverPos& fksolver, ChainIkSolverVel& iksolver, unsigned int maxiter = 100,
00068 double eps = 1e-6, bool position_ik = false);
00069
00070 ~ChainIkSolverPos_NR_JL_Mimic();
00071
00072 virtual int CartToJnt(const JntArray& q_init, const Frame& p_in, JntArray& q_out);
00073
00074 virtual int CartToJntAdvanced(const JntArray& q_init, const Frame& p_in, JntArray& q_out, bool lock_redundant_joints);
00075
00076 bool setMimicJoints(const std::vector<kdl_kinematics_plugin::JointMimic>& mimic_joints);
00077
00078 private:
00079 const Chain chain;
00080 JntArray q_min;
00081 JntArray q_min_mimic;
00082 JntArray q_max;
00083 JntArray q_max_mimic;
00084 JntArray q_temp;
00085 ChainFkSolverPos& fksolver;
00086 ChainIkSolverVel& iksolver;
00087 JntArray delta_q;
00088 Frame f;
00089 Twist delta_twist;
00090 unsigned int maxiter;
00091 double eps;
00092 std::vector<kdl_kinematics_plugin::JointMimic> mimic_joints;
00093 void qToqMimic(const JntArray& q,
00094 JntArray& q_result);
00095 void qMimicToq(const JntArray& q, JntArray& q_result);
00096 bool position_ik;
00097 };
00098 }
00099
00100 #endif