Public Types | Public Member Functions | Protected Attributes
KDL::SolverI Class Reference

#include <solveri.hpp>

Inheritance diagram for KDL::SolverI:
Inheritance graph

List of all members.

Public Types

enum  { E_DEGRADED = +1, E_NOERROR = 0, E_NO_CONVERGE = -1, E_UNDEFINED = -2 }

Public Member Functions

virtual int getError () const
 Return the latest error.
 SolverI ()
 Initialize latest error to E_NOERROR.
virtual const char * strError (const int error) const
virtual ~SolverI ()

Protected Attributes

int error
 Latest error, initialized to E_NOERROR in constructor.

Detailed Description

Solver interface supporting storage and description of the latest error.

Error codes: Zero (0) indicates no error, positive error codes indicate more of a warning (e.g. a degraded solution, but motion can continue), and negative error codes indicate failure (e.g. a singularity, and motion can not continue).

Error codes between -99 and +99 (inclusive) are reserved for system-wide error codes. Derived classes should use values > +100, and < -100.

Example use

 class MySolver : public SolverI
    static const int E_CHILDFAILD = xxx;

    MySolver(SomeOtherSolver& other);
    virtual ~MySolver();
          int CartToJnt(...);
    virtual const char* strError(const int error) const;
    SomeOtherSolver& child;


 int MySolver::CartToJnt(...)
     error = child->SomeCall();
     if (E_NOERROR != error) {
         error = E_CHILDFAILED;
     } else {
     return error;

 const char* MySolver::strError(const int error) const
     if (E_CHILDFAILED == error) return "Child solver failed";
     else return SolverI::strError(error);

 void someFunc()
     SomeOtherSolver child = new SomeOtherSolver(...);
     MySolver parent = new MySolver(child);
     int rc = parent->CartToJnt(...);
     if (E_NOERROR != rc) {
         if (MySolver::E_CHILDFAILED == rc) {
             rc = child->getError();
             // cope with child failure 'rc'

Definition at line 84 of file solveri.hpp.

Member Enumeration Documentation

anonymous enum

Converged but degraded solution (e.g. WDLS with psuedo-inverse singular)


No error.


Failed to converge.


Undefined value (e.g. computed a NAN, or tan(90 degrees) )

Definition at line 87 of file solveri.hpp.

Constructor & Destructor Documentation

KDL::SolverI::SolverI ( ) [inline]

Initialize latest error to E_NOERROR.

Definition at line 99 of file solveri.hpp.

virtual KDL::SolverI::~SolverI ( ) [inline, virtual]

Definition at line 103 of file solveri.hpp.

Member Function Documentation

virtual int KDL::SolverI::getError ( ) const [inline, virtual]

Return the latest error.

Definition at line 107 of file solveri.hpp.

virtual const char* KDL::SolverI::strError ( const int  error) const [inline, virtual]

Return a description of the latest error

if error is known then a description of error, otherwise "UNKNOWN ERROR"

Reimplemented in KDL::ChainIkSolverVel_wdls, KDL::ChainIkSolverVel_pinv, KDL::ChainIkSolverPos_NR, and KDL::ChainJntToJacSolver.

Definition at line 113 of file solveri.hpp.

Member Data Documentation

int KDL::SolverI::error [protected]

Latest error, initialized to E_NOERROR in constructor.

Definition at line 122 of file solveri.hpp.

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

autogenerated on Mon Oct 6 2014 03:11:17