RobWorkProject
Public Types | Public Member Functions | Protected Member Functions | List of all members
IterativeMultiIK Class Referenceabstract

Interface for iterative inverse kinematics algorithms for problems or devices that utilize more than one end-effector. More...

#include <IterativeMultiIK.hpp>

Inherited by JacobianIKSolverM, and IKGPMMSolver.

Public Types

typedef rw::common::Ptr< IterativeMultiIKPtr
 smart pointer type to this class
 

Public Member Functions

virtual ~IterativeMultiIK ()
 Destructor.
 
virtual std::vector< rw::math::Qsolve (const std::vector< math::Transform3D<> > &baseTend, const kinematics::State &state) const =0
 Calculates the inverse kinematics. More...
 
virtual void setMaxError (const std::vector< double > &maxError)
 Sets the maximal error for a solution. More...
 
virtual std::vector< double > getMaxError () const
 Returns the maximal error for a solution. More...
 
virtual void setMaxIterations (int maxIterations)
 Sets the maximal number of iterations allowed. More...
 
virtual int getMaxIterations () const
 Returns the maximal number of iterations.
 
virtual rw::common::PropertyMapgetProperties ()
 Returns the PropertyMap. More...
 
virtual const rw::common::PropertyMapgetProperties () const
 Returns the PropertyMap return Reference to the PropertyMap.
 

Protected Member Functions

 IterativeMultiIK (size_t nrOfEndEff)
 Constructor.
 

Detailed Description

Interface for iterative inverse kinematics algorithms for problems or devices that utilize more than one end-effector.

The IterativeMultiIK interface provides an interface for calculating the inverse kinematics of a device with multiple end-effectors. That is to calculate $\mathbf{q}$ such that $\robabx{base}{end}{\mathbf{T}}(\mathbf{q})= \robabx{}{desired}{\mathbf{T}}$.

By default it solves the problem beginning at the robot base and ending with the frame defined as the end of the devices, and which is accessible through the Device::getEnd() method.

Member Function Documentation

◆ getMaxError()

virtual std::vector<double> getMaxError ( ) const
virtual

Returns the maximal error for a solution.

Returns
Maximal error

◆ getProperties()

virtual rw::common::PropertyMap& getProperties ( )
virtual

Returns the PropertyMap.

Returns
Reference to the PropertyMap

◆ setMaxError()

virtual void setMaxError ( const std::vector< double > &  maxError)
virtual

Sets the maximal error for a solution.

The error between two transformations is defined as the maximum of infinite-norm of the positional error and the angular error encoded as EAA.

Parameters
maxError[in] the maxError. It will be assumed that maxError > 0

◆ setMaxIterations()

virtual void setMaxIterations ( int  maxIterations)
virtual

Sets the maximal number of iterations allowed.

Parameters
maxIterations[in] maximal number of iterations

◆ solve()

virtual std::vector<rw::math::Q> solve ( const std::vector< math::Transform3D<> > &  baseTend,
const kinematics::State state 
) const
pure virtual

Calculates the inverse kinematics.

Given a desired $\robabx{}{desired}{\mathbf{T}}$ and the current state, the method solves the inverse kinematics problem. If no solution is found with the required precision and within the specified number of iterations it will return an empty list.

If the algorithm is able to identify multiple solutions (e.g. elbow up and down) it will return all of these. Before returning a solution, it is checked to be within the bounds of the configuration space.

Parameters
baseTend[in] Desired base to end transformation $ \robabx{}{desired}{\mathbf{T}}$
state[in] State of the device from which to start the iterations
Returns
List of solutions. Notice that the list may be empty.

Implemented in JacobianIKSolverM, and IKGPMMSolver.


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