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 );

Method Details

Access | public |

Sealed | false |

Static | false |