dart
Public Member Functions | List of all members
dart::dynamics::InverseKinematics::JacobianTranspose Class Reference

JacobianTranspose will simply apply the transpose of the Jacobian to the error vector in order to compute the gradient. More...

#include <InverseKinematics.hpp>

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

Public Member Functions

 JacobianTranspose (InverseKinematics *_ik, const Properties &properties=Properties())
 Constructor.
 
virtual ~JacobianTranspose ()=default
 Virtual destructor.
 
std::unique_ptr< GradientMethodclone (InverseKinematics *_newIK) const override
 Enable this GradientMethod to be cloned to a new IK module.
 
void computeGradient (const Eigen::Vector6d &_error, Eigen::VectorXd &_grad) override
 Override this function with your implementation of the gradient computation. More...
 
- Public Member Functions inherited from dart::dynamics::InverseKinematics::GradientMethod
 GradientMethod (InverseKinematics *_ik, const std::string &_methodName, const Properties &_properties)
 Constructor.
 
virtual ~GradientMethod ()=default
 Virtual destructor.
 
void evalGradient (const Eigen::VectorXd &_q, Eigen::Map< Eigen::VectorXd > _grad)
 This function is used to handle caching the gradient vector and interfacing with the solver. More...
 
const std::string & getMethodName () const
 Get the name of this GradientMethod.
 
void clampGradient (Eigen::VectorXd &_grad) const
 Clamp the gradient based on the clamp settings of this GradientMethod.
 
void setComponentWiseClamp (double _clamp=DefaultIKGradientComponentClamp)
 Set the component-wise clamp for this GradientMethod. More...
 
double getComponentWiseClamp () const
 Get the component-wise clamp for this GradientMethod.
 
void applyWeights (Eigen::VectorXd &_grad) const
 Apply weights to the gradient based on the weight settings of this GradientMethod. More...
 
void setComponentWeights (const Eigen::VectorXd &_weights)
 Set the weights that will be applied to each component of the gradient. More...
 
const Eigen::VectorXd & getComponentWeights () const
 Get the weights of this GradientMethod.
 
void convertJacobianMethodOutputToGradient (Eigen::VectorXd &grad, const std::vector< std::size_t > &dofs)
 Convert the gradient that gets generated by Jacobian methods into a gradient that can be used by a GradientDescentSolver. More...
 
Properties getGradientMethodProperties () const
 Get the Properties of this GradientMethod.
 
void clearCache ()
 Clear the cache to force the gradient to be recomputed. More...
 
InverseKinematicsgetIK ()
 Returns the IK module that this GradientMethod belongs to.
 
const InverseKinematicsgetIK () const
 Returns the IK module that this GradientMethod belongs to.
 
- Public Member Functions inherited from dart::common::Subject
virtual ~Subject ()
 Destructor will notify all Observers that it is destructing.
 

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.
 
- Protected Attributes inherited from dart::dynamics::InverseKinematics::GradientMethod
common::sub_ptr< InverseKinematicsmIK
 The IK module that this GradientMethod belongs to.
 
std::string mMethodName
 The name of this method.
 
Eigen::VectorXd mLastPositions
 The last positions that was passed to this GradientMethod.
 
Eigen::VectorXd mLastGradient
 The last gradient that was computed by this GradientMethod.
 
Properties mGradientP
 Properties for this GradientMethod.
 
- Protected Attributes inherited from dart::common::Subject
std::set< Observer * > mObservers
 List of current Observers.
 

Detailed Description

JacobianTranspose will simply apply the transpose of the Jacobian to the error vector in order to compute the gradient.

This method tends to be very smooth but imprecise, requiring more iterations before converging and being less precise in general. This method is suitable for animations where smoothness is prefered over precision.

Member Function Documentation

◆ computeGradient()

void dart::dynamics::InverseKinematics::JacobianTranspose::computeGradient ( const Eigen::Vector6d &  _error,
Eigen::VectorXd &  _grad 
)
overridevirtual

Override this function with your implementation of the gradient computation.

The direction that this gradient points in should make the error worse if applied to the joint positions, because the Problem is configured as a gradient descent error minimization Problem.

The error vector that is passed in will be determined by the IK module's ErrorMethod. The expectation is that the first three components of the vector 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.

Implements dart::dynamics::InverseKinematics::GradientMethod.


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