Simox
2.3.74.0
|
Public Member Functions | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | HierarchicalIK (RobotNodeSetPtr rns, JacobiProvider::InverseJacobiMethod method=JacobiProvider::eSVD) |
virtual | ~HierarchicalIK () |
Eigen::VectorXf | computeStep (const std::vector< JacobiProviderPtr > &jacDefs, float stepSize=0.2f) |
void | setVerbose (bool v) |
Protected Attributes | |
RobotNodeSetPtr | rns |
bool | verbose |
JacobiProvider::InverseJacobiMethod | method |
With hierarchical IK methods several tasks/constraints can be considered for IK solving. Internally a hierarchical gradient descent is generated where the Nullspace of the preceding task definition is used for the computation of the joint delta in the current task.
This implementation is based on the following publication: "A general framework for managing multiple tasks in highly redundant robotic systems.", Siciliano, B. ; Slotine, J.-J.E., Advanced Robotics, 1991. 'Robots in Unstructured Environments', 91 ICAR., Fifth International Conference on
VirtualRobot::HierarchicalIK::HierarchicalIK | ( | VirtualRobot::RobotNodeSetPtr | rns, |
JacobiProvider::InverseJacobiMethod | method = JacobiProvider::eSVD |
||
) |
|
virtualdefault |
Eigen::VectorXf VirtualRobot::HierarchicalIK::computeStep | ( | const std::vector< JacobiProviderPtr > & | jacDefs, |
float | stepSize = 0.2f |
||
) |
computes hierarchical Jacobi step
jacDefs | All Jacobians an the corresponding error vectors that should be considered for computing a gradient step. The jacProviders specify the Jacobian and InverseJacobian functions. Jacobians must cover the same RobotNodeSet (i.e., the same number of DoF). The deltas specify the error for each Jacobian (e.g. in workspace). deltas[i].rows() must be equal to jacobies[i].rows(). |
stepSize | The deltas can be reduced in order to avoid oscillating behavior. |
void VirtualRobot::HierarchicalIK::setVerbose | ( | bool | v | ) |
|
protected |
|
protected |
|
protected |