Orocos KDL
KDL::ChainIkSolverVel_pinv_nso Class Reference

#include <chainiksolvervel_pinv_nso.hpp>

Inheritance diagram for KDL::ChainIkSolverVel_pinv_nso:
KDL::ChainIkSolverVel KDL::SolverI

Public Member Functions

 ChainIkSolverVel_pinv_nso (const Chain &chain, const JntArray &opt_pos, const JntArray &weights, double eps=0.00001, int maxiter=150, double alpha=0.25)
 ChainIkSolverVel_pinv_nso (const Chain &chain, double eps=0.00001, int maxiter=150, double alpha=0.25)
 ~ChainIkSolverVel_pinv_nso ()
virtual int CartToJnt (const JntArray &q_in, const Twist &v_in, JntArray &qdot_out)
virtual int CartToJnt (const JntArray &, const FrameVel &, JntArrayVel &)
const JntArray & getWeights () const
const JntArray & getOptPos () const
const double & getAlpha () const
virtual int setWeights (const JntArray &weights)
virtual int setOptPos (const JntArray &opt_pos)
virtual int setAlpha (const double alpha)
int getSVDResult () const
virtual void updateInternalDataStructures ()
Public Member Functions inherited from KDL::ChainIkSolverVel
virtual ~ChainIkSolverVel ()
Public Member Functions inherited from KDL::SolverI
 SolverI ()
 Initialize latest error to E_NOERROR.
virtual ~SolverI ()
virtual int getError () const
 Return the latest error.
virtual const char * strError (const int error) const

Additional Inherited Members

Public Types inherited from KDL::SolverI
enum  {
  E_DEGRADED = +1 , E_NOERROR = 0 , E_NO_CONVERGE = -1 , E_UNDEFINED = -2 ,
  E_NOT_UP_TO_DATE = -3 , E_SIZE_MISMATCH = -4 , E_MAX_ITERATIONS_EXCEEDED = -5 , E_OUT_OF_RANGE = -6 ,
  E_NOT_IMPLEMENTED = -7 , E_SVD_FAILED = -8
}
Protected Attributes inherited from KDL::SolverI
int error
 Latest error, initialized to E_NOERROR in constructor.

Detailed Description

Implementation of a inverse velocity kinematics algorithm based on the generalize pseudo inverse to calculate the velocity transformation from Cartesian to joint space of a general KDL::Chain. It uses a svd-calculation based on householders rotations.

In case of a redundant robot this solver optimizes the following criterium: g=0.5*sum(weight*(Desired_joint_positions - actual_joint_positions))^2 as described in A. Liegeois. Automatic supervisory control of the configuration and behavior of multibody mechanisms. IEEE Transactions on Systems, Man, and Cybernetics, 7(12):868–871, 1977

Constructor & Destructor Documentation

◆ ChainIkSolverVel_pinv_nso() [1/2]

KDL::ChainIkSolverVel_pinv_nso::ChainIkSolverVel_pinv_nso ( const Chain & chain,
const JntArray & opt_pos,
const JntArray & weights,
double eps = 0.00001,
int maxiter = 150,
double alpha = 0.25 )

Constructor of the solver

Parameters
chainthe chain to calculate the inverse velocity kinematics for
opt_posthe desired positions of the chain used by to resolve the redundancy
weightsthe weights applied in the joint space
epsif a singular value is below this value, its inverse is set to zero, default: 0.00001
maxitermaximum iterations for the svd calculation, default: 150
alphathe null-space velocity gain

◆ ChainIkSolverVel_pinv_nso() [2/2]

KDL::ChainIkSolverVel_pinv_nso::ChainIkSolverVel_pinv_nso ( const Chain & chain,
double eps = 0.00001,
int maxiter = 150,
double alpha = 0.25 )
explicit

◆ ~ChainIkSolverVel_pinv_nso()

KDL::ChainIkSolverVel_pinv_nso::~ChainIkSolverVel_pinv_nso ( )

Member Function Documentation

◆ CartToJnt() [1/2]

virtual int KDL::ChainIkSolverVel_pinv_nso::CartToJnt ( const JntArray & ,
const FrameVel & ,
JntArrayVel &  )
inlinevirtual

not (yet) implemented.

Implements KDL::ChainIkSolverVel.

◆ CartToJnt() [2/2]

virtual int KDL::ChainIkSolverVel_pinv_nso::CartToJnt ( const JntArray & q_in,
const Twist & v_in,
JntArray & qdot_out )
virtual

Calculate inverse velocity kinematics, from joint positions and cartesian velocity to joint velocities.

Parameters
q_ininput joint positions
v_ininput cartesian velocity
qdot_outoutput joint velocities
Returns
if < 0 something went wrong

Implements KDL::ChainIkSolverVel.

◆ getAlpha()

const double & KDL::ChainIkSolverVel_pinv_nso::getAlpha ( ) const
inline

Request null space velocity gain

Returns
const reference to the null space velocity gain

◆ getOptPos()

const JntArray & KDL::ChainIkSolverVel_pinv_nso::getOptPos ( ) const
inline

Request the optimal joint positions

Returns
const reference to the optimal joint positions

◆ getSVDResult()

int KDL::ChainIkSolverVel_pinv_nso::getSVDResult ( ) const
inline

Retrieve the latest return code from the SVD algorithm

Returns
0 if CartToJnt() not yet called, otherwise latest SVD result code.

◆ getWeights()

const JntArray & KDL::ChainIkSolverVel_pinv_nso::getWeights ( ) const
inline

Request the joint weights for optimization criterion

Returns
const reference to the joint weights

◆ setAlpha()

virtual int KDL::ChainIkSolverVel_pinv_nso::setAlpha ( const double alpha)
virtual

Set null space velocity gain

Parameters
alphaNUllspace velocity cgain

◆ setOptPos()

virtual int KDL::ChainIkSolverVel_pinv_nso::setOptPos ( const JntArray & opt_pos)
virtual

Set optimal joint positions

Parameters
opt_posoptimal joint positions

◆ setWeights()

virtual int KDL::ChainIkSolverVel_pinv_nso::setWeights ( const JntArray & weights)
virtual

Set joint weights for optimization criterion

Parameters
weightsthe joint weights

◆ updateInternalDataStructures()

virtual void KDL::ChainIkSolverVel_pinv_nso::updateInternalDataStructures ( )
virtual

Update the internal data structures. This is required if the number of segments or number of joints of a chain/tree have changed. This provides a single point of contact for solver memory allocations.

Implements KDL::ChainIkSolverVel.


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