Simox  2.3.74.0
VirtualRobot::PoseQualityManipulability Class Reference
Inheritance diagram for VirtualRobot::PoseQualityManipulability:
VirtualRobot::PoseQualityMeasurement VirtualRobot::PoseQualityExtendedManipulability

Public Types

enum  ManipulabilityIndexType { eMultiplySV, eMinMaxRatio }
 

Public Member Functions

 PoseQualityManipulability (VirtualRobot::RobotNodeSetPtr rns, ManipulabilityIndexType i=eMinMaxRatio)
 
 ~PoseQualityManipulability ()
 
float getPoseQuality () override
 
virtual float getManipulability (ManipulabilityIndexType i)
 
float getPoseQuality (const Eigen::VectorXf &direction) override
 
virtual float getManipulability (const Eigen::VectorXf &direction, int considerFirstSV=-1)
 
virtual float getManipulability (ManipulabilityIndexType i, int considerFirstSV)
 
Eigen::VectorXf getSingularValues ()
 
Eigen::MatrixXf getSingularVectorCartesian ()
 
virtual void penalizeJointLimits (bool enable, float k=50.0f)
 
bool consideringJointLimits () override
 Indicates if joint limits are considered. More...
 
PoseQualityMeasurementPtr clone (RobotPtr newRobot) override
 
- Public Member Functions inherited from VirtualRobot::PoseQualityMeasurement
EIGEN_MAKE_ALIGNED_OPERATOR_NEW PoseQualityMeasurement (VirtualRobot::RobotNodeSetPtr rns)
 
 ~PoseQualityMeasurement ()
 
void setVerbose (bool v)
 
VirtualRobot::RobotNodeSetPtr getRNS ()
 
std::string getName ()
 A string that identifies the type of pose quality measure. More...
 
virtual void setObstacleDistanceVector (const Eigen::Vector3f &directionSurfaceToObstance)
 
virtual void disableObstacleDistance ()
 

Static Public Member Functions

static std::string getTypeName ()
 

Protected Member Functions

float getJointLimitPenalizationFactor ()
 

Protected Attributes

VirtualRobot::DifferentialIKPtr jacobian
 
ManipulabilityIndexType manipulabilityType
 
bool penJointLimits
 
float penJointLimits_k
 
float penalizeRotationFactor
 
bool convertMMtoM
 if set, the Jacobian is computed in [m], while assuming the kinematic definitions to be in [mm] More...
 
- Protected Attributes inherited from VirtualRobot::PoseQualityMeasurement
std::string name
 
VirtualRobot::RobotNodeSetPtr rns
 
bool considerObstacle
 
Eigen::Vector3f obstacleDir
 
bool verbose
 

Detailed Description

This measurement computes the Yoshikawa's manipulability index by computing the Singular value Decomposition (SVD) of the Jacobian. Two modes are offered: Either all singular values are multiplied or the ratio of minimum and maximum singular value is returned (also known as (inverted) Condition number).

Member Enumeration Documentation

◆ ManipulabilityIndexType

Enumerator
eMultiplySV 
eMinMaxRatio 

Constructor & Destructor Documentation

◆ PoseQualityManipulability()

VirtualRobot::PoseQualityManipulability::PoseQualityManipulability ( VirtualRobot::RobotNodeSetPtr  rns,
ManipulabilityIndexType  i = eMinMaxRatio 
)

◆ ~PoseQualityManipulability()

VirtualRobot::PoseQualityManipulability::~PoseQualityManipulability ( )
default

Member Function Documentation

◆ clone()

PoseQualityMeasurementPtr VirtualRobot::PoseQualityManipulability::clone ( RobotPtr  newRobot)
overridevirtual

◆ consideringJointLimits()

bool VirtualRobot::PoseQualityManipulability::consideringJointLimits ( )
overridevirtual

Indicates if joint limits are considered.

Reimplemented from VirtualRobot::PoseQualityMeasurement.

◆ getJointLimitPenalizationFactor()

float VirtualRobot::PoseQualityManipulability::getJointLimitPenalizationFactor ( )
protected

◆ getManipulability() [1/3]

float VirtualRobot::PoseQualityManipulability::getManipulability ( ManipulabilityIndexType  i)
virtual

◆ getManipulability() [2/3]

float VirtualRobot::PoseQualityManipulability::getManipulability ( const Eigen::VectorXf &  direction,
int  considerFirstSV = -1 
)
virtual

◆ getManipulability() [3/3]

float VirtualRobot::PoseQualityManipulability::getManipulability ( ManipulabilityIndexType  i,
int  considerFirstSV 
)
virtual

Considers the first considerFirstSV singular values and ignores any remaining entries in the sv vector. This can be useful, when constrained motions should be analyzed (e.g. 2d motions in 3d)

◆ getPoseQuality() [1/2]

float VirtualRobot::PoseQualityManipulability::getPoseQuality ( )
overridevirtual

Returns the manipulability of the current configuration.

Reimplemented from VirtualRobot::PoseQualityMeasurement.

◆ getPoseQuality() [2/2]

float VirtualRobot::PoseQualityManipulability::getPoseQuality ( const Eigen::VectorXf &  direction)
overridevirtual

The quality is determined for a given Cartesian direction. The current configuration of the corresponding RNS is analyzed and the quality is returned. See derived classes for details.

Parameters
directionA 3d or 6d vector with the Cartesian direction to investigate.

Reimplemented from VirtualRobot::PoseQualityMeasurement.

◆ getSingularValues()

Eigen::VectorXf VirtualRobot::PoseQualityManipulability::getSingularValues ( )

Returns the singular values of the current Jacobian. The values are ordered, starting with the largest value.

◆ getSingularVectorCartesian()

Eigen::MatrixXf VirtualRobot::PoseQualityManipulability::getSingularVectorCartesian ( )

◆ getTypeName()

std::string VirtualRobot::PoseQualityManipulability::getTypeName ( )
static

◆ penalizeJointLimits()

void VirtualRobot::PoseQualityManipulability::penalizeJointLimits ( bool  enable,
float  k = 50.0f 
)
virtual

Field Documentation

◆ convertMMtoM

bool VirtualRobot::PoseQualityManipulability::convertMMtoM
protected

if set, the Jacobian is computed in [m], while assuming the kinematic definitions to be in [mm]

◆ jacobian

VirtualRobot::DifferentialIKPtr VirtualRobot::PoseQualityManipulability::jacobian
protected

◆ manipulabilityType

ManipulabilityIndexType VirtualRobot::PoseQualityManipulability::manipulabilityType
protected

◆ penalizeRotationFactor

float VirtualRobot::PoseQualityManipulability::penalizeRotationFactor
protected

◆ penJointLimits

bool VirtualRobot::PoseQualityManipulability::penJointLimits
protected

◆ penJointLimits_k

float VirtualRobot::PoseQualityManipulability::penJointLimits_k
protected