inverseKinematics
Create inverse kinematic solver
Description
The inverseKinematics
System object™ creates an inverse kinematic (IK) solver to calculate joint
configurations for a desired end-effector pose based on a specified rigid body tree model.
Create a rigid body tree model for your robot using the rigidBodyTree class. This model defines all the joint constraints that the solver
enforces. If a solution is possible, the joint limits specified in the robot model are
obeyed.
To specify more constraints besides the end-effector pose, including aiming constraints,
position bounds, or orientation targets, consider using generalizedInverseKinematics. This object allows you to compute multiconstraint IK
solutions.
For closed-form analytical IK solutions, see analyticalInverseKinematics.
To compute joint configurations for a desired end-effector pose:
Create the
inverseKinematicsobject and set its properties.Call the object with arguments, as if it were a function.
To learn more about how System objects work, see What Are System Objects?
Creation
Description
creates an inverse
kinematic solver. To use the solver, specify a rigid body tree model in the
ik = inverseKinematicsRigidBodyTree property.
specifies properties of the inverse kinematics solver using one or more optional
name-value arguments. For example, ik = inverseKinematics(PropertyName=Value)SolverAlgorithm="fminconsqp" uses
the fmincon SQP solver as the inverse kinematics solver.
Properties
Usage
Description
[
finds a joint configuration that achieves the specified end-effector pose. Specify an
initial guess for the configuration and your desired weights on the tolerances for the six
components of configSol,solInfo]
= ik(endeffector,pose,weights,initialguess)pose. Solution information related to execution of the
algorithm, solInfo, is returned with the joint configuration
solution, configSol.
Input Arguments
Output Arguments
Object Functions
To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named obj, use
this syntax:
release(obj)
Examples
References
[1] Badreddine, Hassan, Stefan Vandewalle, and Johan Meyers. "Sequential Quadratic Programming (SQP) for Optimal Control in Direct Numerical Simulation of Turbulent Flow." Journal of Computational Physics. 256 (2014): 1–16. doi:10.1016/j.jcp.2013.08.044.
[2] Bertsekas, Dimitri P. Nonlinear Programming. Belmont, MA: Athena Scientific, 1999.
[3] Goldfarb, Donald. "Extension of Davidon’s Variable Metric Method to Maximization Under Linear Inequality and Equality Constraints." SIAM Journal on Applied Mathematics. Vol. 17, No. 4 (1969): 739–64. doi:10.1137/0117067.
[4] Nocedal, Jorge, and Stephen Wright. Numerical Optimization. New York, NY: Springer, 2006.
[5] Sugihara, Tomomichi. "Solvability-Unconcerned Inverse Kinematics by the Levenberg–Marquardt Method." IEEE Transactions on Robotics Vol. 27, No. 5 (2011): 984–91. doi:10.1109/tro.2011.2148230.
[6] Zhao, Jianmin, and Norman I. Badler. "Inverse Kinematics Positioning Using Nonlinear Programming for Highly Articulated Figures." ACM Transactions on Graphics Vol. 13, No. 4 (1994): 313–36. doi:10.1145/195826.195827.




