dart
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
dart::dynamics::InverseKinematics::ErrorMethod Class Referenceabstract

ErrorMethod is a base class for different ways of computing the error of an InverseKinematics module. More...

#include <InverseKinematics.hpp>

Inheritance diagram for dart::dynamics::InverseKinematics::ErrorMethod:
Inheritance graph
[legend]
Collaboration diagram for dart::dynamics::InverseKinematics::ErrorMethod:
Collaboration graph
[legend]

Classes

struct  Properties
 The Properties struct contains settings that are commonly used by methods that compute error for inverse kinematics. More...
 

Public Types

typedef std::pair< Eigen::Vector6d, Eigen::Vector6d > Bounds
 

Public Member Functions

 ErrorMethod (InverseKinematics *_ik, const std::string &_methodName, const Properties &_properties=Properties())
 Constructor.
 
virtual ~ErrorMethod ()=default
 Virtual destructor.
 
virtual std::unique_ptr< ErrorMethodclone (InverseKinematics *_newIK) const =0
 Enable this ErrorMethod to be cloned to a new IK module.
 
virtual Eigen::Vector6d computeError ()=0
 Override this function with your implementation of the error vector computation. More...
 
virtual Eigen::Isometry3d computeDesiredTransform (const Eigen::Isometry3d &_currentTf, const Eigen::Vector6d &_error)=0
 Override this function with your implementation of computing the desired given the current transform and error vector. More...
 
const Eigen::Vector6d & evalError (const Eigen::VectorXd &_q)
 This function is used to handle caching the error vector.
 
const std::string & getMethodName () const
 Get the name of this ErrorMethod.
 
void setBounds (const Eigen::Vector6d &_lower=Eigen::Vector6d::Constant(-DefaultIKTolerance), const Eigen::Vector6d &_upper=Eigen::Vector6d::Constant(DefaultIKTolerance))
 Set all the error bounds.
 
void setBounds (const std::pair< Eigen::Vector6d, Eigen::Vector6d > &_bounds)
 Set all the error bounds.
 
const std::pair< Eigen::Vector6d, Eigen::Vector6d > & getBounds () const
 Get all the error bounds.
 
void setAngularBounds (const Eigen::Vector3d &_lower=Eigen::Vector3d::Constant(-DefaultIKTolerance), const Eigen::Vector3d &_upper=Eigen::Vector3d::Constant(DefaultIKTolerance))
 Set the error bounds for orientation.
 
void setAngularBounds (const std::pair< Eigen::Vector3d, Eigen::Vector3d > &_bounds)
 Set the error bounds for orientation.
 
std::pair< Eigen::Vector3d, Eigen::Vector3d > getAngularBounds () const
 Get the error bounds for orientation.
 
void setLinearBounds (const Eigen::Vector3d &_lower=Eigen::Vector3d::Constant(-DefaultIKTolerance), const Eigen::Vector3d &_upper=Eigen::Vector3d::Constant(DefaultIKTolerance))
 Set the error bounds for translation.
 
void setLinearBounds (const std::pair< Eigen::Vector3d, Eigen::Vector3d > &_bounds)
 Set the error bounds for translation.
 
std::pair< Eigen::Vector3d, Eigen::Vector3d > getLinearBounds () const
 Get the error bounds for translation.
 
void setErrorLengthClamp (double _clampSize=DefaultIKErrorClamp)
 Set the clamp that will be applied to the length of the error vector each iteration. More...
 
double getErrorLengthClamp () const
 Set the clamp that will be applied to the length of the error vector each iteration. More...
 
void setErrorWeights (const Eigen::Vector6d &_weights)
 Set the weights that will be applied to each component of the error vector. More...
 
const Eigen::Vector6d & getErrorWeights () const
 Get the weights that will be applied to each component of the error vector. More...
 
void setAngularErrorWeights (const Eigen::Vector3d &_weights=Eigen::Vector3d::Constant(DefaultIKAngularWeight))
 Set the weights that will be applied to each angular component of the error vector. More...
 
Eigen::Vector3d getAngularErrorWeights () const
 Get the weights that will be applied to each angular component of the error vector. More...
 
void setLinearErrorWeights (const Eigen::Vector3d &_weights=Eigen::Vector3d::Constant(DefaultIKLinearWeight))
 Set the weights that will be applied to each linear component of the error vector. More...
 
Eigen::Vector3d getLinearErrorWeights () const
 Get the weights that will be applied to each linear component of the error vector. More...
 
Properties getErrorMethodProperties () const
 Get the Properties of this ErrorMethod.
 
void clearCache ()
 Clear the cache to force the error to be recomputed. More...
 
- Public Member Functions inherited from dart::common::Subject
virtual ~Subject ()
 Destructor will notify all Observers that it is destructing.
 

Protected Attributes

common::sub_ptr< InverseKinematicsmIK
 Pointer to the IK module of this ErrorMethod.
 
std::string mMethodName
 Name of this error method.
 
Eigen::VectorXd mLastPositions
 The last joint positions passed into this ErrorMethod.
 
Eigen::Vector6d mLastError
 The last error vector computed by this ErrorMethod.
 
Properties mErrorP
 The properties of this ErrorMethod.
 
- Protected Attributes inherited from dart::common::Subject
std::set< Observer * > mObservers
 List of current Observers.
 

Additional Inherited Members

- Protected Member Functions inherited from dart::common::Subject
void sendDestructionNotification () const
 Send a destruction notification to all Observers. More...
 
void addObserver (Observer *_observer) const
 Add an Observer to the list of Observers.
 
void removeObserver (Observer *_observer) const
 Remove an Observer from the list of Observers.
 

Detailed Description

ErrorMethod is a base class for different ways of computing the error of an InverseKinematics module.

Member Function Documentation

◆ clearCache()

void dart::dynamics::InverseKinematics::ErrorMethod::clearCache ( )

Clear the cache to force the error to be recomputed.

It should generally not be necessary to call this function.

◆ computeDesiredTransform()

Eigen::Isometry3d dart::dynamics::InverseKinematics::ErrorMethod::computeDesiredTransform ( const Eigen::Isometry3d &  _currentTf,
const Eigen::Vector6d &  _error 
)
pure virtual

Override this function with your implementation of computing the desired given the current transform and error vector.

If you want the desired transform to always be equal to the Target's transform, you can simply call ErrorMethod::computeDesiredTransform to implement this function.

Implemented in dart::dynamics::InverseKinematics::TaskSpaceRegion.

◆ computeError()

virtual Eigen::Vector6d dart::dynamics::InverseKinematics::ErrorMethod::computeError ( )
pure virtual

Override this function with your implementation of the error vector computation.

The expectation is that the first three components of the vector will correspond to orientation error (in an angle-axis format) while the last three components correspond to translational error.

When implementing this function, you should assume that the Skeleton's current joint positions corresponds to the positions that you must use to compute the error. This function will only get called when an update is needed.

Implemented in dart::dynamics::InverseKinematics::TaskSpaceRegion.

◆ getAngularErrorWeights()

Eigen::Vector3d dart::dynamics::InverseKinematics::ErrorMethod::getAngularErrorWeights ( ) const

Get the weights that will be applied to each angular component of the error vector.

◆ getErrorLengthClamp()

double dart::dynamics::InverseKinematics::ErrorMethod::getErrorLengthClamp ( ) const

Set the clamp that will be applied to the length of the error vector each iteration.

◆ getErrorWeights()

const Eigen::Vector6d & dart::dynamics::InverseKinematics::ErrorMethod::getErrorWeights ( ) const

Get the weights that will be applied to each component of the error vector.

◆ getLinearErrorWeights()

Eigen::Vector3d dart::dynamics::InverseKinematics::ErrorMethod::getLinearErrorWeights ( ) const

Get the weights that will be applied to each linear component of the error vector.

◆ setAngularErrorWeights()

void dart::dynamics::InverseKinematics::ErrorMethod::setAngularErrorWeights ( const Eigen::Vector3d &  _weights = Eigen::Vector3d::Constant(DefaultIKAngularWeight))

Set the weights that will be applied to each angular component of the error vector.

◆ setErrorLengthClamp()

void dart::dynamics::InverseKinematics::ErrorMethod::setErrorLengthClamp ( double  _clampSize = DefaultIKErrorClamp)

Set the clamp that will be applied to the length of the error vector each iteration.

◆ setErrorWeights()

void dart::dynamics::InverseKinematics::ErrorMethod::setErrorWeights ( const Eigen::Vector6d &  _weights)

Set the weights that will be applied to each component of the error vector.

◆ setLinearErrorWeights()

void dart::dynamics::InverseKinematics::ErrorMethod::setLinearErrorWeights ( const Eigen::Vector3d &  _weights = Eigen::Vector3d::Constant(DefaultIKLinearWeight))

Set the weights that will be applied to each linear component of the error vector.


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