Simox  2.3.50
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 ()
 
virtual float getPoseQuality ()
 
virtual float getManipulability (ManipulabilityIndexType i)
 
virtual float getPoseQuality (const Eigen::VectorXf &direction)
 
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)
 
virtual bool consideringJointLimits ()
 Indicates if joint limits are considered. More...
 
- 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

Enumerator
eMultiplySV 
eMinMaxRatio 

Constructor & Destructor Documentation

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

Member Function Documentation

bool VirtualRobot::PoseQualityManipulability::consideringJointLimits ( )
virtual

Indicates if joint limits are considered.

Reimplemented from VirtualRobot::PoseQualityMeasurement.

Reimplemented in VirtualRobot::PoseQualityExtendedManipulability.

float VirtualRobot::PoseQualityManipulability::getJointLimitPenalizationFactor ( )
protected
float VirtualRobot::PoseQualityManipulability::getManipulability ( ManipulabilityIndexType  i)
virtual
float VirtualRobot::PoseQualityManipulability::getManipulability ( const Eigen::VectorXf &  direction,
int  considerFirstSV = -1 
)
virtual
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)

float VirtualRobot::PoseQualityManipulability::getPoseQuality ( )
virtual

Returns the manipulability of the current configuration.

Reimplemented from VirtualRobot::PoseQualityMeasurement.

Reimplemented in VirtualRobot::PoseQualityExtendedManipulability.

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

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.

Reimplemented in VirtualRobot::PoseQualityExtendedManipulability.

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

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

Eigen::MatrixXf VirtualRobot::PoseQualityManipulability::getSingularVectorCartesian ( )
std::string VirtualRobot::PoseQualityManipulability::getTypeName ( )
static
void VirtualRobot::PoseQualityManipulability::penalizeJointLimits ( bool  enable,
float  k = 50.0f 
)
virtual

Field Documentation

bool VirtualRobot::PoseQualityManipulability::convertMMtoM
protected

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

VirtualRobot::DifferentialIKPtr VirtualRobot::PoseQualityManipulability::jacobian
protected
ManipulabilityIndexType VirtualRobot::PoseQualityManipulability::manipulabilityType
protected
float VirtualRobot::PoseQualityManipulability::penalizeRotationFactor
protected
bool VirtualRobot::PoseQualityManipulability::penJointLimits
protected
float VirtualRobot::PoseQualityManipulability::penJointLimits_k
protected