Simox
2.3.74.0
|
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 |
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).
VirtualRobot::PoseQualityManipulability::PoseQualityManipulability | ( | VirtualRobot::RobotNodeSetPtr | rns, |
ManipulabilityIndexType | i = eMinMaxRatio |
||
) |
|
default |
|
overridevirtual |
Reimplemented from VirtualRobot::PoseQualityMeasurement.
|
overridevirtual |
Indicates if joint limits are considered.
Reimplemented from VirtualRobot::PoseQualityMeasurement.
|
protected |
|
virtual |
|
virtual |
Reimplemented in VirtualRobot::PoseQualityExtendedManipulability.
|
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)
|
overridevirtual |
Returns the manipulability of the current configuration.
Reimplemented from VirtualRobot::PoseQualityMeasurement.
|
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.
direction | A 3d or 6d vector with the Cartesian direction to investigate. |
Reimplemented from VirtualRobot::PoseQualityMeasurement.
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 | ( | ) |
|
static |
|
virtual |
|
protected |
if set, the Jacobian is computed in [m], while assuming the kinematic definitions to be in [mm]
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |