MATLAB File Help: HebiKinematics/getInverseKinematics
HebiKinematics/getInverseKinematics
  getInverseKinematics (getIK) calculates positions for a 
  desired end effector pose.  
 
    This method computes the joint positions associated to a 
    desired end-effector configuration. The end effector is 
    assumed to be the last body in the kinematic chain. 
 
    getInverseKinematics uses a gradient-descent based local 
    optimizer to find a valid configuration.  This means that
    the quality of the solution depends on a good starting
    point for the optimization. See 'initialPositions' detail
    below, as this parameter should be used if at all possible.
 
    There are a variety of optimization criteria that can be 
    combined depending on the application. Available parameters 
    include:
 
       Parameter       EndEffector Target      Size / Units
 
       'XYZ'           xyz position in [m]     3x1 in [m]
 
       'TipAxis'       z-axis orientation      3x1 unit vector
                       of the last body in
                       in chain [unit vector]
 
       'SO3'           3-DoF orientation       3x3 rotation 
                                                   matrix
 
       Note that 'XYZ' supports NaN for dimensions that 
       should be ignored. For example, a planar arm may use
       the target position of [x y NaN].
 
       All target positions and orientations are expressed in
       the base frame.
 
    'MaxIterations' ('MaxIter') sets the maximum allowed
    iterations of the numerical optimization before returning.
    This can prevent IK from taking a long time to run, at the
    expense of solutions that are potentially less accurate.
    The default value is 150 iterations.
 
    'InitialPositions' ('Initial') provides the seed for the
    numerical optimization. By default the optimization seeds
    with all zeros. It is highly recommended that you specify
    seed positions whenever you are using getInverseKinematics. 
 
    Examples:
       % Inverse kinematics for a 3-DoF arm, specifying initial 
       % joint angle positions.
       xyz = [0.2 0.1 0.0];
       initialJointAngs = [0 -pi/4 pi/2];
       waypoints = kin.getInverseKinematics( 'XYZ', xyz, ...
                     'IntialPositions', initialJointAngs );
 
       % Inverse kinematics for a 5-DoF arm, specifying initial 
       % joint angle positions.
       xyz = [0.2 0.1 0.0];
       tipAxis = [0 0 -1];  % end effector points straight down
       initialJointAngs = [0 -pi/4 pi/2 pi/4 0];
       waypoints = kin.getIK( 'XYZ', xyz, ... 
                              'TipAxis', tipAxis, ...
                              'initial', initialJointAngs );
 
       % Inverse kinematics for full 6-DoF arm, using the
       % latest feedback as the seed position for IK.     
       xyz = [0.3 -0.1 0.2];
       rotMatrix = eye(3);
       fbk = group.getNextFeedback();
       positions = kin.getIK( 'XYZ', xyz, ...
                              'SO3', rotMatrix, ...
                              'initial', fbk.position );
See also
Method Details
Access public
Sealed false
Static false