Implementation of a general inverse position kinematics algorithm to calculate the position transformation from Cartesian to joint space of a general KDL::Tree.
More...
|
| TreeIkSolverPos_Online (const double &nr_of_jnts, const std::vector< std::string > &endpoints, const JntArray &q_min, const JntArray &q_max, const JntArray &q_dot_max, const double x_dot_trans_max, const double x_dot_rot_max, TreeFkSolverPos &fksolver, TreeIkSolverVel &iksolver) |
| Constructor of the solver, it needs the number of joints of the tree, a list of the endpoints you are interested in, the maximum and minimum values you want to enforce and a forward position kinematics solver as well as an inverse velocity kinematics solver for the calculations. More...
|
|
| ~TreeIkSolverPos_Online () |
|
virtual double | CartToJnt (const JntArray &q_in, const Frames &p_in, JntArray &q_out) |
| Calculate inverse position kinematics, from cartesian coordinates to joint coordinates. More...
|
|
Implementation of a general inverse position kinematics algorithm to calculate the position transformation from Cartesian to joint space of a general KDL::Tree.
This class has been derived from the TreeIkSolverPos_NR_JL class, but was modified for online solving for use in realtime systems. Thus, the calculation is only done once, meaning that no iteration is done, because this solver is intended to run at a high frequency. It enforces velocity limits in task as well as in joint space. It also takes joint limits into account.
KDL::TreeIkSolverPos_Online::TreeIkSolverPos_Online |
( |
const double & |
nr_of_jnts, |
|
|
const std::vector< std::string > & |
endpoints, |
|
|
const JntArray & |
q_min, |
|
|
const JntArray & |
q_max, |
|
|
const JntArray & |
q_dot_max, |
|
|
const double |
x_dot_trans_max, |
|
|
const double |
x_dot_rot_max, |
|
|
TreeFkSolverPos & |
fksolver, |
|
|
TreeIkSolverVel & |
iksolver |
|
) |
| |
Constructor of the solver, it needs the number of joints of the tree, a list of the endpoints you are interested in, the maximum and minimum values you want to enforce and a forward position kinematics solver as well as an inverse velocity kinematics solver for the calculations.
- Parameters
-
nr_of_jnts | number of joints of the tree to calculate the joint positions for |
endpoints | the list of endpoints you are interested in |
q_min | the minimum joint positions |
q_max | the maximum joint positions |
q_dot_max | the maximum joint velocities |
x_dot_trans_max | the maximum translational velocity of your endpoints |
x_dot_rot_max | the maximum rotational velocity of your endpoints |
fksolver | a forward position kinematics solver |
iksolver | an inverse velocity kinematics solver |
- Returns
References delta_twists_, frames_, KDL::Frame::Identity(), q_dot_max_, q_max_, q_min_, x_dot_rot_max_, x_dot_trans_max_, and KDL::Twist::Zero().
double KDL::TreeIkSolverPos_Online::CartToJnt |
( |
const JntArray & |
q_init, |
|
|
const Frames & |
p_in, |
|
|
JntArray & |
q_out |
|
) |
| |
|
virtual |
Calculate inverse position kinematics, from cartesian coordinates to joint coordinates.
- Parameters
-
q_init | initial guess of the joint coordinates |
p_in | input cartesian coordinates |
q_out | output joint coordinates |
- Returns
- if < 0 something went wrong otherwise (>=0) remaining (weighted) distance to target
Implements KDL::TreeIkSolverPos.
References KDL::Add(), KDL::TreeIkSolverVel::CartToJnt(), delta_twists_, KDL::diff(), enforceCartVelLimits(), enforceJointVelLimits(), fksolver_, frames_, iksolver_, KDL::TreeFkSolverPos::JntToCart(), q_dot_, q_dot_max_, q_max_, q_min_, KDL::JntArray::rows(), and twist_.
void KDL::TreeIkSolverPos_Online::enforceCartVelLimits |
( |
| ) |
|
|
private |