Revision as of 01:34, 26 February 2013 editAddbot (talk | contribs)Bots2,838,809 editsm Bot: Migrating 12 interwiki links, now provided by Wikidata on d:q1501872 (Report Errors)← Previous edit | Revision as of 07:53, 4 May 2013 edit undoVedantkumar (talk | contribs)28 edits Added incomplete section on solving IK systemsNext edit → | ||
Line 55: | Line 55: | ||
Other applications of inverse kinematic algorithms include ], ] and ]. | Other applications of inverse kinematic algorithms include ], ] and ]. | ||
--> | --> | ||
== Approximating solutions to IK systems == | |||
There are many methods of modelling and solving inverse kinematics problems. The most flexible of these methods typically rely on ] to seek out an approximate solution, due to the difficulty of inverting the forward kinematics equation and the possibility of an empty ]. The core idea behind several of these methods is to model the forward kinematics equation using a ] expansion, which can be simpler to invert and solve. | |||
=== The Jacobian inverse technique === | |||
The ] inverse technique is a simple yet effective example of an approximation-based method. Let there be <math>m</math> variables that govern the the forward-kinematics equation, i.e the position function. These parameters may be joint angles, lengths, or other arbitrary real values. If the IK system lives in a 3-dimensional space, the position function can be viewed as a mapping <math>p(\hat{x}): \Re^m \rightarrow \Re^3</math>. Let <math>p(\hat{x_0})</math> give the initial position of the system, and <math>p(\hat{x_0} + \sigma)</math> be the goal position of the system. The Jacobian inverse technique simply attempts to generate iteratively improved estimates of <math>\sigma</math> to solve the system. Each one of the intermediate estimates can be added to <math>\hat{x_0}</math> and evaluated by the position function to ] the system. | |||
For small <math>\sigma</math>-vectors, the series expansion of the position function gives: | |||
<math>p(\hat{x_0} + \sigma) \approx p(\hat{x_0}) + J_p(\hat{x_0})\sigma</math> | |||
Where <math>J_p(\hat{x})</math> is the <math>3 \times m</math> Jacobian matrix of the position function. | |||
Note that each column vector of the Hessian matrix can be determined numerically: | |||
<math>\frac{\partial p}{\partial x_i} \approx \frac{p(\hat{x_0} + \hat{h_i}) - p(\hat{x_0})}{||\hat{h_i}||}</math> | |||
Where <math>\hat{h_i}</math> differs from the ] only in its <math>i^{th}</math> component, by a very small value. | |||
Taking the ] of the Jacobian results in: | |||
<math>\sigma \approx J_p^+(\hat{x_0})\delta p</math> | |||
Where <math>\delta p = p(\hat{x_0} + \sigma) - p(\hat{x_0})</math>. It is possible to use a ] to obtain the pseudo-inverse of the Jacobian. | |||
Applying the inverse Jacobian method once will result in a very rough estimate of the desired <math>\sigma</math>-vector. A ] should be used to scale this <math>\sigma</math> to an acceptable value. The estimate for <math>\sigma</math> can be improved via the following algorithm (known as the ] method): | |||
<math>\sigma_{k+1} = J_p^+(\hat{x_k})\delta p_k</math> | |||
== See also == | == See also == |
Revision as of 07:53, 4 May 2013
Inverse kinematics refers to the use of the kinematics equations of a robot to determine the joint parameters that provide a desired position of the end-effector. Specification of the movement of a robot so that its end-effector achieves a desired task is known as motion planning. Inverse kinematics transforms the motion plan into joint actuator trajectories for the robot.
The movement of a kinematic chain whether it is a robot or an animated character is modeled by the kinematics equations of the chain. These equations define the configuration of the chain in terms of its joint parameters. Forward kinematics uses the joint parameters to compute the configuration of the chain, and inverse kinematics reverses this calculation to determine the joint parameters that achieves a desired configuration.
For example, inverse kinematics formulas allow calculation of the joint parameters that position a robot arm to pick up a part. Similar formulas determine the positions of the skeleton of an animated character that is to move in a particular way.
Kinematic analysis
Inverse kinematics is an example of the kinematic analysis of a constrained system of rigid bodies, or kinematic chain. The kinematics equations of a robot can be used to define the loop equations of a complex articulated system. These loop equations are non-linear constraints on the configuration parameters of the system. The independent parameters in these equations are known as the degrees of freedom of the system.
The IKFast open-source program can solve for the complete analytical solutions of most common robot manipulators and implement the solution in C++ code. The generated solvers cover most degenerate cases and can finish in microseconds on recent computers.
While analytical solutions to the inverse kinematics problem exist for a wide range of kinematic chains, computer modeling and animation tools often use Newton's method to solve the non-linear kinematics equations.
Other applications of inverse kinematic algorithms include interactive manipulation, animation control and collision avoidance.
Inverse kinematics and 3D animation
Further information: Robotics and Computer animationInverse kinematics is important to game programming and 3D animation, where it is used to connect game characters physically to the world, such as feet landing firmly on top of terrain.
An animated figure is modeled with a skeleton of rigid segments connected with joints, called a kinematic chain. The kinematics equations of the figure define the relationship between the joint angles of the figure and its pose or configuration. The forward kinematic animation problem uses the kinematics equations to determine the pose given the joint angles. The inverse kinematics problem computes the joint angles for a desired pose of the figure.
It is often easier for computer-based designers, artists and animators to define the spatial configuration of an assembly or figure by moving parts, or arms and legs, rather than directly manipulate joint angles. Therefore, inverse kinematics is used in computer-aided design systems to animate assemblies and by computer-based artists and animators to position figures and characters.
The assembly is modeled as rigid links connected by joints that are defined as mates, or geometric constraints. Movement of one element requires the computation of the joint angles for the other elements to maintain the joint constraints. For example, inverse kinematics allows an artist to move the hand of a 3D human model to a desired position and orientation and have an algorithm select the proper angles of the wrist, elbow, and shoulder joints. Successful implementation of computer animation usually also requires that the figure move within reasonable anthropomorphic limits.
Approximating solutions to IK systems
There are many methods of modelling and solving inverse kinematics problems. The most flexible of these methods typically rely on iterative optimization to seek out an approximate solution, due to the difficulty of inverting the forward kinematics equation and the possibility of an empty solution space. The core idea behind several of these methods is to model the forward kinematics equation using a Taylor series expansion, which can be simpler to invert and solve.
The Jacobian inverse technique
The Jacobian inverse technique is a simple yet effective example of an approximation-based method. Let there be variables that govern the the forward-kinematics equation, i.e the position function. These parameters may be joint angles, lengths, or other arbitrary real values. If the IK system lives in a 3-dimensional space, the position function can be viewed as a mapping . Let give the initial position of the system, and be the goal position of the system. The Jacobian inverse technique simply attempts to generate iteratively improved estimates of to solve the system. Each one of the intermediate estimates can be added to and evaluated by the position function to animate the system.
For small -vectors, the series expansion of the position function gives:
Where is the Jacobian matrix of the position function.
Note that each column vector of the Hessian matrix can be determined numerically:
Where differs from the zero vector only in its component, by a very small value.
Taking the Moore-Penrose pseudoinverse of the Jacobian results in:
Where . It is possible to use a singular value decomposition to obtain the pseudo-inverse of the Jacobian.
Applying the inverse Jacobian method once will result in a very rough estimate of the desired -vector. A line search should be used to scale this to an acceptable value. The estimate for can be improved via the following algorithm (known as the Newton-Raphson method):
See also
- 321 kinematic structure
- Arm solution
- Forward kinematic animation
- Forward kinematics
- Kinemation
- Jacobian
- Joint constraints
- Levenberg–Marquardt algorithm
- Physics engine
- Pseudoinverse
- Ragdoll physics
- Robot kinematics
- Denavit–Hartenberg parameters
References
- Paul, Richard (1981). Robot manipulators: mathematics, programming, and control : the computer control of robot manipulators. MIT Press, Cambridge, MA. ISBN 978-0-262-16082-7.
- J. M. McCarthy, 1990, Introduction to Theoretical Kinematics, MIT Press, Cambridge, MA.
- J. J. Uicker, G. R. Pennock, and J. E. Shigley, 2003, Theory of Machines and Mechanisms, Oxford University Press, New York.
- J. M. McCarthy and G. S. Soh, 2010, Geometric Design of Linkages, Springer, New York.
External links
- Robotics and 3D Animation in FreeBasic Template:Es icon
- Analytical Inverse Kinematics Solver - Given an OpenRAVE robot kinematics description, generates a C++ file that analytically solves for the complete IK.
- Inverse Kinematics algorithms
- Robot Inverse solution for a common robot geometry
- HowStuffWorks.com article How do the characters in video games move so fluidly? with an explanation of inverse kinematics
- 3D Theory Kinematics
- Protein Inverse Kinematics
- Simple Inverse Kinematics example with source code using Jacobian
- Detailed description of Jacobian and CCD solutions for inverse kinematics