Simox  2.3.74.0
VirtualRobot::HierarchicalIK Class Reference
Inheritance diagram for VirtualRobot::HierarchicalIK:
HierarchicalIKSolver

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
 

Detailed Description

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

Constructor & Destructor Documentation

◆ HierarchicalIK()

VirtualRobot::HierarchicalIK::HierarchicalIK ( VirtualRobot::RobotNodeSetPtr  rns,
JacobiProvider::InverseJacobiMethod  method = JacobiProvider::eSVD 
)

◆ ~HierarchicalIK()

VirtualRobot::HierarchicalIK::~HierarchicalIK ( )
virtualdefault

Member Function Documentation

◆ computeStep()

Eigen::VectorXf VirtualRobot::HierarchicalIK::computeStep ( const std::vector< JacobiProviderPtr > &  jacDefs,
float  stepSize = 0.2f 
)

computes hierarchical Jacobi step

Parameters
jacDefsAll 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().
stepSizeThe deltas can be reduced in order to avoid oscillating behavior.

◆ setVerbose()

void VirtualRobot::HierarchicalIK::setVerbose ( bool  v)

Field Documentation

◆ method

JacobiProvider::InverseJacobiMethod VirtualRobot::HierarchicalIK::method
protected

◆ rns

RobotNodeSetPtr VirtualRobot::HierarchicalIK::rns
protected

◆ verbose

bool VirtualRobot::HierarchicalIK::verbose
protected