hpp-constraints 9.0.2
Definition of basic geometric constraints for motion planning
hpp::constraints::MinManipulability Class Reference

#include <hpp/constraints/min-manipulability.hh>

Inheritance diagram for hpp::constraints::MinManipulability:
Collaboration diagram for hpp::constraints::MinManipulability:

Public Member Functions

virtual ~MinManipulability ()
 
void lockJoint (const JointPtr_t &joint)
 
const DevicePtr_trobot () const
 Get robot. More...
 
- Public Member Functions inherited from hpp::constraints::DifferentiableFunction
virtual ~DifferentiableFunction ()
 
LiegroupElement operator() (vectorIn_t argument) const
 
void value (LiegroupElementRef result, vectorIn_t argument) const
 
void jacobian (matrixOut_t jacobian, vectorIn_t argument) const
 
const ArrayXbactiveParameters () const
 
const ArrayXbactiveDerivativeParameters () const
 
size_type inputSize () const
 Get dimension of input vector. More...
 
size_type inputDerivativeSize () const
 
LiegroupSpacePtr_t outputSpace () const
 Get output space. More...
 
size_type outputSize () const
 Get dimension of output vector. More...
 
size_type outputDerivativeSize () const
 Get dimension of output derivative vector. More...
 
const std::string & name () const
 Get function name. More...
 
virtual std::ostream & print (std::ostream &o) const
 Display object in a stream. More...
 
std::string context () const
 
void context (const std::string &c)
 
void finiteDifferenceForward (matrixOut_t jacobian, vectorIn_t arg, DevicePtr_t robot=DevicePtr_t(), value_type eps=std::sqrt(Eigen::NumTraits< value_type >::epsilon())) const
 
void finiteDifferenceCentral (matrixOut_t jacobian, vectorIn_t arg, DevicePtr_t robot=DevicePtr_t(), value_type eps=std::sqrt(Eigen::NumTraits< value_type >::epsilon())) const
 
bool operator== (DifferentiableFunction const &other) const
 
bool operator!= (DifferentiableFunction const &b) const
 
virtual std::pair< JointConstPtr_t, JointConstPtr_tdependsOnRelPoseBetween (DeviceConstPtr_t) const
 

Static Public Member Functions

static MinManipulabilityPtr_t create (DifferentiableFunctionPtr_t function, DevicePtr_t robot, std::string name)
 
- Static Public Member Functions inherited from hpp::constraints::DifferentiableFunction
static DifferentiableFunctionPtr_t extract (DifferentiableFunctionPtr_t original, interval_t interval)
 

Protected Member Functions

 MinManipulability (DifferentiableFunctionPtr_t function, DevicePtr_t robot, std::string name)
 Concrete class constructor should call this constructor. More...
 
void impl_compute (LiegroupElementRef result, vectorIn_t argument) const
 User implementation of function evaluation. More...
 
void impl_jacobian (matrixOut_t jacobian, vectorIn_t arg) const
 
bool isEqual (const DifferentiableFunction &other) const
 
- Protected Member Functions inherited from hpp::constraints::DifferentiableFunction
 DifferentiableFunction (size_type sizeInput, size_type sizeInputDerivative, size_type sizeOutput, std::string name=std::string())
 Concrete class constructor should call this constructor. More...
 
 DifferentiableFunction (size_type sizeInput, size_type sizeInputDerivative, const LiegroupSpacePtr_t &outputSpace, std::string name=std::string())
 Concrete class constructor should call this constructor. More...
 
virtual void impl_compute (LiegroupElementRef result, vectorIn_t argument) const =0
 User implementation of function evaluation. More...
 
virtual void impl_jacobian (matrixOut_t jacobian, vectorIn_t arg) const =0
 
virtual bool isEqual (const DifferentiableFunction &other) const
 
 DifferentiableFunction ()
 

Additional Inherited Members

- Protected Attributes inherited from hpp::constraints::DifferentiableFunction
size_type inputSize_
 Dimension of input vector. More...
 
size_type inputDerivativeSize_
 Dimension of input derivative. More...
 
LiegroupSpacePtr_t outputSpace_
 Dimension of output vector. More...
 
ArrayXb activeParameters_
 
ArrayXb activeDerivativeParameters_
 

Detailed Description

Enforce minimal manipulability

This function takes as input another differentiable function $f_1$ defined over the same configuration space and computes a one dimensional value as follows:

\[
f(\mathbf{q}) = \max \left(-\log\det(J_1 J_1^T), 0\right)
\]

where $J_1$ is the Jacobian matrix of $f_1$.

As a consequence when,

  • $\det(J_1 J_1^T) \geq 1$, the function is uniformly equal to 0,
  • $\det(J_1 J_1^T) < 1$, the function is positive.

Inserting a constraint with this function with comparison type EQUAL_TO_ZERO into a numerical solver will make the solution lie in the domain defined by $\det(J_1 J_1^T) \geq 1$, where the Jacobian of $f_1$ has a manipulability index (product of singular values) greater than 1.

Lock joints

In some cases, it is useful not to consider some joints in the kinematic chain. For example, when evaluating the manipulability of a robotic arm moving on a prismatic rail, it can be useful to consider the manipulability of the system when the rail is locked. To do so, call method MinManipulability::lockJoint.

Note
The Jacobian of this function is computed by finite difference.

Constructor & Destructor Documentation

◆ ~MinManipulability()

virtual hpp::constraints::MinManipulability::~MinManipulability ( )
inlinevirtual

◆ MinManipulability()

hpp::constraints::MinManipulability::MinManipulability ( DifferentiableFunctionPtr_t  function,
DevicePtr_t  robot,
std::string  name 
)
protected

Concrete class constructor should call this constructor.

Parameters
functionthe function which must be analysed
namefunction's name

Member Function Documentation

◆ create()

static MinManipulabilityPtr_t hpp::constraints::MinManipulability::create ( DifferentiableFunctionPtr_t  function,
DevicePtr_t  robot,
std::string  name 
)
inlinestatic

◆ impl_compute()

void hpp::constraints::MinManipulability::impl_compute ( LiegroupElementRef  result,
vectorIn_t  argument 
) const
protectedvirtual

User implementation of function evaluation.

Implements hpp::constraints::DifferentiableFunction.

◆ impl_jacobian()

void hpp::constraints::MinManipulability::impl_jacobian ( matrixOut_t  jacobian,
vectorIn_t  arg 
) const
protectedvirtual

◆ isEqual()

bool hpp::constraints::MinManipulability::isEqual ( const DifferentiableFunction other) const
inlineprotectedvirtual

◆ lockJoint()

void hpp::constraints::MinManipulability::lockJoint ( const JointPtr_t joint)

Lock a joint

Consider this joint as fixed when computing the manipulability

◆ robot()

const DevicePtr_t & hpp::constraints::MinManipulability::robot ( ) const
inline

Get robot.


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