se2ez
se2ez::TreeIK Class Reference

#include <ik.h>

Inheritance diagram for se2ez::TreeIK:
[legend]

Public Member Functions

 TreeIK (const RobotPtr &robot, const std::vector< std::string > &frames, unsigned int iterations=50, double eps=1e-4)
 Constructor. More...
 
 TreeIK (const TreeIK &)=delete
 
 TreeIK (TreeIK &&)=delete
 
bool solve (StatePtr state, const tf::EigenMap< std::string, Eigen::Isometry2d > &frames, const std::map< std::string, Request > &request={})
 Solve an IK request. More...
 
void setJointWeight (const std::string &frame, const Eigen::VectorXd &weights) override
 Sets the weights on a specific joint in the robot for IK solving. More...
 
void setJointWeights (const Eigen::VectorXd &weights) override
 Sets the weights for all joints in the robot for IK solving. More...
 
void setLambda (double lambda) override
 Sets lambda, damping constant in WDLS. More...
 
- Public Member Functions inherited from se2ez::IKSolver
 IKSolver (const IKSolver &)=delete
 
 IKSolver (IKSolver &&)=delete
 
void setRestarts (unsigned int restarts)
 Sets the number of random restarts to use when solving a request. More...
 

Protected Member Functions

bool setTask (KDL::Frames &goals, const tf::EigenMap< std::string, Eigen::Isometry2d > &frames, const std::map< std::string, Request > &request)
 Sets current task matrix and goals according to request. More...
 
virtual bool doIK (KDL::JntArray &in, KDL::JntArray &out, const KDL::Frames &goals)
 Actually solve an IK query. More...
 
- Protected Member Functions inherited from se2ez::IKSolver
 IKSolver (const RobotPtr &robot, unsigned int frames)
 Constructor. Protected so only derived classes can create this. More...
 
void setRequest (unsigned int task, Request request)
 Sets the task matrix values for a task at index task according to a request. More...
 
void setTask (unsigned int task, Index index, bool active)
 Sets the specific index component of a task to active. More...
 
void setRandom (KDL::JntArray &array) const
 Sets a KDL array to random values between joint limits. More...
 

Protected Attributes

const std::map< std::string, unsigned int > frames_
 Mapping of task frame name to index. More...
 
const KDL::Tree tree_
 KDL tree used for solving. More...
 
KDL::TreeFkSolverPos_recursive fk_
 Forward kinematics solver. More...
 
KDL::TreeIkSolverVel_wdls velIK_
 Inverse velocity solver. More...
 
KDL::TreeIkSolverPos_NR_JL posIK_
 Inverse position solver. More...
 
std::mutex mutex_
 Thread mutex. More...
 
- Protected Attributes inherited from se2ez::IKSolver
const unsigned int n_
 Number of joint variables. More...
 
const unsigned int t_
 Number of tasks. More...
 
const RobotPtr robot_
 Reference to robot. More...
 
const KDL::JntArray min_
 Joint minimums. More...
 
const KDL::JntArray max_
 Joint maximums. More...
 
KDL::MatrixXd weights_
 Joint variable weights. More...
 
KDL::MatrixXd tasks_
 Task weights. More...
 
double lambda_ {0.01}
 Lambda, WDLS constant. More...
 
unsigned int restarts_ {10}
 Number of random restarts. More...
 

Additional Inherited Members

- Public Types inherited from se2ez::IKSolver
enum  Request {
  NONE = 0,
  X_AXIS = 1 << 0,
  Y_AXIS = 1 << 1,
  ROTATION = 1 << 2,
  POSITION = X_AXIS | Y_AXIS,
  ALL = POSITION | ROTATION
}
 A bitmask specification of what task components should this IK request satisfy. More...
 
- Protected Types inherited from se2ez::IKSolver
enum  Index {
  POS_X = 0,
  POS_Y = 1,
  POS_Z = 2,
  ROT_X = 3,
  ROT_Y = 4,
  ROT_Z = 5
}
 KDL specific indices for different components of the task matrix. More...
 

Detailed Description

Definition at line 135 of file ik.h.

Constructor & Destructor Documentation

◆ TreeIK() [1/3]

TreeIK::TreeIK ( const RobotPtr robot,
const std::vector< std::string > &  frames,
unsigned int  iterations = 50,
double  eps = 1e-4 
)

Constructor.

Parameters
[in]robotRobot to construct IK solver for.
[in]framesFrames to use as task frames.
[in]iterationsMaximum number of iterations to use in solver.
[in]epsSolution tolerance.

TreeIK

Definition at line 108 of file ik.cpp.

◆ TreeIK() [2/3]

se2ez::TreeIK::TreeIK ( const TreeIK )
delete

◆ TreeIK() [3/3]

se2ez::TreeIK::TreeIK ( TreeIK &&  )
delete

Member Function Documentation

◆ doIK()

bool TreeIK::doIK ( KDL::JntArray &  in,
KDL::JntArray &  out,
const KDL::Frames &  goals 
)
protectedvirtual

Actually solve an IK query.

Parameters
[in]inInitial seed joint angles.
[out]outOutput joint angles.
[in]goalsGoals to satisfy.
Returns
True on success false on failure.

Reimplemented in se2ez::CollisionAwareTreeIK.

Definition at line 162 of file ik.cpp.

◆ setJointWeight()

void TreeIK::setJointWeight ( const std::string frame,
const Eigen::VectorXd &  weights 
)
overridevirtual

Sets the weights on a specific joint in the robot for IK solving.

Parameters
[in]frameFrame to set weights for.
[in]weightsWeights to use for frame.

Reimplemented from se2ez::IKSolver.

Definition at line 207 of file ik.cpp.

◆ setJointWeights()

void TreeIK::setJointWeights ( const Eigen::VectorXd &  weights)
overridevirtual

Sets the weights for all joints in the robot for IK solving.

Parameters
[in]weightsWeights to use.

Reimplemented from se2ez::IKSolver.

Definition at line 213 of file ik.cpp.

◆ setLambda()

void TreeIK::setLambda ( double  lambda)
overridevirtual

Sets lambda, damping constant in WDLS.

Parameters
[in]lambdaLambda to use.

Reimplemented from se2ez::IKSolver.

Definition at line 219 of file ik.cpp.

◆ setTask()

bool TreeIK::setTask ( KDL::Frames &  goals,
const tf::EigenMap< std::string, Eigen::Isometry2d > &  frames,
const std::map< std::string, Request > &  request 
)
protected

Sets current task matrix and goals according to request.

Parameters
[out]goalsGoals for IK to set.
[in]framesDesired position of task frames.
[in]requestRequest to satisfy.
Returns
True if possible, false on error.

Definition at line 127 of file ik.cpp.

◆ solve()

bool TreeIK::solve ( StatePtr  state,
const tf::EigenMap< std::string, Eigen::Isometry2d > &  frames,
const std::map< std::string, Request > &  request = {} 
)

Solve an IK request.

Parameters
[in,out]stateState to set to result of IK query. Input value is used as first seed.
[in]framesMap of frame name to desired values for query.
[in]requestMap of frame names to requested components. Uses ALL by default.
Returns
True on success, false on failure.

Definition at line 183 of file ik.cpp.

Member Data Documentation

◆ fk_

KDL::TreeFkSolverPos_recursive se2ez::TreeIK::fk_
protected

Forward kinematics solver.

Definition at line 197 of file ik.h.

◆ frames_

const std::map<std::string, unsigned int> se2ez::TreeIK::frames_
protected

Mapping of task frame name to index.

Definition at line 194 of file ik.h.

◆ mutex_

std::mutex se2ez::TreeIK::mutex_
protected

Thread mutex.

Definition at line 201 of file ik.h.

◆ posIK_

KDL::TreeIkSolverPos_NR_JL se2ez::TreeIK::posIK_
protected

Inverse position solver.

Definition at line 199 of file ik.h.

◆ tree_

const KDL::Tree se2ez::TreeIK::tree_
protected

KDL tree used for solving.

Definition at line 196 of file ik.h.

◆ velIK_

KDL::TreeIkSolverVel_wdls se2ez::TreeIK::velIK_
protected

Inverse velocity solver.

Definition at line 198 of file ik.h.


The documentation for this class was generated from the following files: