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

#include <solveri.hpp>

Inheritance diagram for KDL::SolverI:
Inheritance graph
[legend]

List of all members.

Public Types

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
}

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 void updateInternalDataStructures ()=0
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
 {
 public:
    static const int E_CHILDFAILD = xxx;

    MySolver(SomeOtherSolver& other);
    virtual ~MySolver();
          int CartToJnt(...);
    virtual const char* strError(const int error) const;
 protected:
    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
Enumerator:
E_DEGRADED 

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

E_NOERROR 

No error.

E_NO_CONVERGE 

Failed to converge.

E_UNDEFINED 

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

E_NOT_UP_TO_DATE 

Chain size changed.

E_SIZE_MISMATCH 

Input size does not match internal state.

E_MAX_ITERATIONS_EXCEEDED 

Maximum number of iterations exceeded.

E_OUT_OF_RANGE 

Requested index out of range.

E_NOT_IMPLEMENTED 

Not yet implemented.

E_SVD_FAILED 

Internal svd calculation failed.

Definition at line 87 of file solveri.hpp.


Constructor & Destructor Documentation

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

Initialize latest error to E_NOERROR.

Definition at line 111 of file solveri.hpp.

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

Definition at line 115 of file solveri.hpp.


Member Function Documentation

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

Return the latest error.

Definition at line 119 of file solveri.hpp.

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

Return a description of the latest error

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

Reimplemented in KDL::ChainIkSolverVel_wdls, KDL::ChainIkSolverPos_LMA, KDL::ChainJntToJacDotSolver, KDL::ChainIkSolverPos_NR_JL, KDL::ChainIkSolverVel_pinv, and KDL::ChainIkSolverPos_NR.

Definition at line 125 of file solveri.hpp.

virtual void KDL::SolverI::updateInternalDataStructures ( ) [pure virtual]

Member Data Documentation

int KDL::SolverI::error [protected]

Latest error, initialized to E_NOERROR in constructor.

Definition at line 149 of file solveri.hpp.


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


orocos_kdl
Author(s):
autogenerated on Fri Jun 14 2019 19:33:23