Misplaced Pages

Inverse kinematics: Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Browse history interactively← Previous editContent deleted Content addedVisualWikitext
Revision as of 15:15, 28 July 2018 editAndreas1113 (talk | contribs)45 edits Inverse kinematics and 3D animation← Previous edit Latest revision as of 03:24, 27 December 2024 edit undoDiscospinster (talk | contribs)Administrators464,478 editsm Reverted edits by 181.174.249.24 (talk) (HG) (3.4.12)Tags: Huggle Rollback 
(86 intermediate revisions by 57 users not shown)
Line 1: Line 1:
{{short description|Computing joint values of a kinematic chain from a known end position}}
<!--{{Context|date=October 2009}}-->
]
]. Inverse kinematics computes the joint trajectories needed for the robot to guide the welding tip along the part.]]


In ] and ], '''inverse kinematics''' is the mathematical process of calculating the variable ] parameters needed to place the end of a ], such as a robot ] or ], in a given position and orientation relative to the start of the chain. Given joint parameters, the position and orientation of the chain's end, e.g. the hand of the character or robot, can typically be calculated directly using multiple applications of ], a process known as ]. However, the reverse operation is, in general, much more challenging.<ref>. PhD thesis, Stanford University, Department of Mechanical Engineering, October 24, 1968.</ref><ref name=":0">{{Cite book |last1=Lynch |first1=Kevin M. |url=https://books.google.com/books?id=5NzFDgAAQBAJ |title=Modern Robotics |last2=Park |first2=Frank C. |date=2017-05-25 |publisher=Cambridge University Press |isbn=978-1-107-15630-2 |language=en}}</ref><ref>{{Cite book |last1=Siciliano |first1=Bruno |url=https://books.google.com/books?id=QbgKkAEACAAJ |title=Springer Handbook of Robotics |last2=Khatib |first2=Oussama |date=2016-06-27 |publisher=Springer International Publishing |isbn=978-3-319-32550-7 |language=en}}</ref>
'''Inverse kinematics''' is the mathematical process of recovering the movements of an object in the world from some other data, such as a film of those movements, or a film of the world as seen by a camera which is itself making those movements. This is useful in robotics and in film animation.


Inverse kinematics is also used to recover the movements of an object in the world from some other data, such as a film of those movements, or a film of the world as seen by a camera which is itself making those movements. This occurs, for example, where a human actor's filmed movements are to be ].
In robotics, inverse kinematics makes use of the ] equations to determine the joint parameters that provide a desired position for each of the robot's ].<ref>{{cite book | last = Paul | first = Richard | title = Robot manipulators: mathematics, programming, and control : the computer control of robot manipulators | publisher = MIT Press, Cambridge, MA | year = 1981 | url = https://books.google.com/books?id=UzZ3LAYqvRkC&printsec=frontcover#v=onepage&q&f=false | isbn =978-0-262-16082-7
}}</ref> Specification of the movement of a robot so that its end-effectors achieve the desired tasks is known as ]. Inverse kinematics transforms the motion plan into joint ] trajectories for the robot. Similar formulae determine the positions of the skeleton of an ] that is to move in a particular way in a film, or of a vehicle such as a car or boat containing the camera which is shooting a scene of a film. Once a vehicle's motions are known, they can be used to determine the constantly-changing viewpoint for computer-generated imagery of objects in the landscape such as buildings, so that these objects change in ] while not themselves appearing to move as the vehicle-borne camera goes past them.


==Robotics==
The movement of a ], 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. ] uses the joint parameters to compute the configuration of the chain, and inverse kinematics reverses this calculation to determine the joint parameters that achieve a desired configuration.<ref>J. M. McCarthy, 1990, ''Introduction to Theoretical Kinematics,'' MIT Press, Cambridge, MA.</ref><ref name=Uicker2003>J. J. Uicker, G. R. Pennock, and J. E. Shigley, 2003, '''Theory of Machines and Mechanisms,''' Oxford University Press, New York.</ref><ref name=McCarthy2010>J. M. McCarthy and G. S. Soh, 2010, Springer, New York.</ref>
In robotics, inverse kinematics makes use of the ] equations to determine the joint parameters that provide a desired configuration (position and rotation) for each of the robot's ].<ref>{{cite book | last = Paul | first = Richard | title = Robot manipulators: mathematics, programming, and control : the computer control of robot manipulators | publisher = MIT Press, Cambridge, MA | year = 1981 | url = https://books.google.com/books?id=UzZ3LAYqvRkC | isbn =978-0-262-16082-7
}}</ref> This is important because robot tasks are performed with the end effectors, while control effort applies to the joints. Determining the movement of a robot so that its end-effectors move from an initial configuration to a desired configuration is known as ]. Inverse kinematics transforms the motion plan into joint ] trajectories for the robot.<ref name=":0" /> Similar formulas determine the positions of the skeleton of an ] that is to move in a particular way in a film, or of a vehicle such as a car or boat containing the camera which is shooting a scene of a film. Once a vehicle's motions are known, they can be used to determine the constantly-changing viewpoint for computer-generated imagery of objects in the landscape such as buildings, so that these objects change in ] while themselves not appearing to move as the vehicle-borne camera goes past them.

The movement of a ], 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. ] uses the joint parameters to compute the configuration of the chain, and inverse kinematics reverses this calculation to determine the joint parameters that achieve a desired configuration.<ref>J. M. McCarthy, 1990, ''Introduction to Theoretical Kinematics,'' MIT Press, Cambridge, MA.</ref><ref name=Uicker2003>J. J. Uicker, G. R. Pennock, and J. E. Shigley, 2003, '''Theory of Machines and Mechanisms,''' Oxford University Press, New York.</ref><ref name=McCarthy2010>J. M. McCarthy and G. S. Soh, 2010, Springer, New York.</ref>


==Kinematic analysis== ==Kinematic analysis==
Line 15: Line 18:
Inverse kinematics is an example of the kinematic analysis of a constrained system of rigid bodies, or ]. The ] 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 ] of the system. Inverse kinematics is an example of the kinematic analysis of a constrained system of rigid bodies, or ]. The ] 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 ] of the system.


While analytical solutions to the inverse kinematics problem exist for a wide range of kinematic chains, computer modeling and animation tools often use ] to solve the non-linear kinematics equations. While analytical solutions to the inverse kinematics problem exist for a wide range of kinematic chains, computer modeling and animation tools often use ] to solve the non-linear kinematics equations.<ref name=":0" /> When trying to find an analytical solution it is often convenient to exploit the geometry of the system and decompose it using ].<ref>{{Cite thesis |title=Kinematics and Control of Robot Manipulators |url=https://ui.adsabs.harvard.edu/abs/1985PhDT........94P |date=1985-01-01 |first=Bradley Evan |last=Paden|bibcode=1985PhDT........94P }}</ref><ref>{{Cite book |last1=Murray |first1=Richard M. |url=https://books.google.com/books?id=D_PqGKRo7oIC&q=murray+li+sastry |title=A Mathematical Introduction to Robotic Manipulation |last2=Li |first2=Zexiang |last3=Sastry |first3=S. Shankar |last4=Sastry |first4=S. Shankara |date=1994-03-22 |publisher=CRC Press |isbn=978-0-8493-7981-9 |language=en}}</ref>


Other applications of inverse kinematic algorithms include ], ] and ]. Other applications of inverse kinematic algorithms include ], ] and ].
Line 21: Line 24:
==Inverse kinematics and 3D animation== ==Inverse kinematics and 3D animation==
{{Further|Robotics|Computer animation}} {{Further|Robotics|Computer animation}}
Inverse kinematics is important to ] and ], where it is used to connect ] physically to the world, such as feet landing firmly on top of terrain (see <ref>Andreas Aristidou, Joan Lasenby, Yiorgos Chrysanthou, and Ariel Shamir. Inverse Kinematics Techniques in Computer Graphics: A Survey. Computer Graphics Forum, 37(6): 35-58, 2018. </ref> for a comprehensive survey on ). Inverse kinematics is important to ] and ], where it is used to connect ] physically to the world, such as feet landing firmly on top of terrain (see <ref>A. Aristidou, J. Lasenby, Y. Chrysanthou, A. Shamir. . Computer Graphics Forum, 37(6): 35-58, 2018. </ref> for a comprehensive survey on ).


An animated figure is modeled with a skeleton of rigid segments connected with joints, called a ]. The kinematics equations of the figure define the relationship between the joint angles of the figure and its pose or configuration. The ] 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. An animated figure is modeled with a skeleton of rigid segments connected with joints, called a ]. The kinematics equations of the figure define the relationship between the joint angles of the figure and its pose or configuration. The ] 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.
Line 27: Line 30:
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 manipulating 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. 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 manipulating 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 ] usually also requires that the figure move within reasonable ] limits. 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 ]. 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 ] usually also requires that the figure move within reasonable ] limits.

A method of comparing both forward and inverse kinematics for the animation of a character can be defined by the advantages inherent to each. For instance, blocking animation where large motion arcs are used is often more advantageous in forward kinematics. However, more delicate animation and positioning of the target end-effector in relation to other models might be easier using inverted kinematics. Modern digital creation packages (DCC) offer methods to apply both forward and inverse kinematics to models.


== Analytical solutions to inverse kinematics == == Analytical solutions to inverse kinematics ==


=== Generic solutions ===
An analytic solution to an inverse kinematics problem is a closed-form expression that takes the end-effector pose as input and gives joint positions as output, <math>q = f(x)</math>. Analytical inverse kinematics solvers can be significantly faster than numerical solvers and provide more than one solution for a given end-effector pose.
In some, but not all cases, there exist ] to inverse kinematic problems. One such example is for a 6-] (DoF) robot (for example, 6 revolute joints) moving in 3D space (with 3 position degrees of freedom, and 3 rotational degrees of freedom). If the degrees of freedom of the robot exceeds the degrees of freedom of the end-effector, for example with a 7 DoF robot with 7 revolute joints, then there exist infinitely many solutions to the IK problem, and an analytical solution does not exist. Further extending this example, it is possible to fix one joint and analytically solve for the other joints, but perhaps a better solution is offered by numerical methods (next section), which can instead optimize a solution given additional preferences (costs in an optimization problem).


An analytic solution to an inverse kinematics problem is a closed-form expression that takes the end-effector pose as input and gives joint positions as output, <math>q = f(x)</math>. Analytical inverse kinematics solvers can be significantly faster than numerical solvers and provide more than one solution, but only a finite number of solutions, for a given end-effector pose.
The ] open-source program can solve for the complete analytical solutions of most common robot manipulators and generate C++ code for them. The generated solvers cover most degenerate cases and can finish in microseconds on recent computers.{{Advert inline|date=September 2017}}


Many different programs (Such as ] programs ] and ) are able to solve these problems quickly and efficiently using different algorithms such as the ]. One issue with these solvers, is that they are known to not necessarily give locally smooth solutions between two adjacent configurations, which can cause instability if iterative solutions to inverse kinematics are required, such as if the IK is solved inside a high-rate control loop.
== Approximating solutions to IK systems ==

=== Ortho-parallel Basis and a Spherical Wrist ===
]
Many industrial 6DOF robots feature three rotational joints with intersecting axes ("spherical wrist"). These robots, known as robots with an "Ortho-parallel Basis and a Spherical Wrist," can be defined by 7 kinematic parameters that are distances in their assumed standard geometry.<ref>Mathias Brandstötter, Arthur Angerer, Michael Hofbaur (2014). An Analytical Solution of the Inverse Kinematics Problem of Industrial Serial Manipulators with an Ortho-parallel Basis and a Spherical Wrist. Proceedings of the Austrian Robotics Workshop 2014.
22-23 May, 2014, Linz, Austria.</ref> These robots may have up to 8 independent solutions for any given position and rotation of the robot tool head. Open-source solutions for ]<ref>opw_kinematics </ref> and ]<ref>Rust is for Robotics (curated collection), </ref> exist. OPW has also been integrated into ROS framework. <ref>moveit_opw_kinematics_plugin (ROS Wiki) </ref>

== Numerical solutions to IK problems ==


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 than the original system. 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 than the original system.
Line 41: Line 54:
=== The Jacobian inverse technique === === The Jacobian inverse technique ===


The ] inverse technique is a simple yet effective way of implementing inverse kinematics. Let there be <math>m</math> variables that govern the forward-kinematics equation, i.e. the position function. These variables 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(x): \Re^m \rightarrow \Re^3</math>. Let <math>p_0 = p(x_0)</math> give the initial position of the system, and The ] inverse technique is a simple yet effective way of implementing inverse kinematics. Let there be <math>m</math> variables that govern the forward-kinematics equation, i.e. the position function. These variables may be joint angles, lengths, or other arbitrary real values. If, for example, the IK system lives in a 3-dimensional space, the position function can be viewed as a mapping <math>p(x): \mathbb{R}^m \rightarrow \mathbb{R}^3</math>. Let <math>p_0 = p(x_0)</math> give the initial position of the system, and


<math>p_1 = p(x_0 + \Delta x)</math> :<math>p_1 = p(x_0 + \Delta x)</math>


be the goal position of the system. The Jacobian inverse technique iteratively computes an estimate of <math>\Delta x</math> that minimizes the error given by <math>||p(x_0 + \Delta x) - p_0||</math>. be the goal position of the system. The Jacobian inverse technique iteratively computes an estimate of <math>\Delta x</math> that minimizes the error given by <math>||p(x_0 + \Delta x_{estimate}) - p_1||</math>.


For small <math>\Delta x</math>-vectors, the series expansion of the position function gives: For small <math>\Delta x</math>-vectors, the series expansion of the position function gives


<math>p(x_1) \approx p(x_0) + J_p(x_0)\Delta x</math> :<math>p(x_1) \approx p(x_0) + J_p(x_0)\Delta x</math>,


Where <math>J_p(x_0)</math> is the (3 x m) ] of the position function at <math>x_0</math>. where <math>J_p(x_0)</math> is the (3 × m) ] of the position function at <math>x_0</math>.


Note that the (i, k)-th entry of the Jacobian matrix can be determined numerically: The (i, k)-th entry of the Jacobian matrix can be approximated numerically


<math>\frac{\partial p_i}{\partial x_k} \approx \frac{p_i(x_{0,k} + h) - p_i(x_0)}{h}</math> :<math>\frac{\partial p_i}{\partial x_k} \approx \frac{p_i(x_{0,k} + h) - p_i(x_0)}{h}</math>,


Where <math>p_i(x)</math> gives the i-th component of the position function, <math>x_{0,k} + h</math> is simply <math>x_0</math> with a small delta added to its k-th component, and <math>h</math> is a reasonably small positive value. where <math>p_i(x)</math> gives the i-th component of the position function, <math>x_{0,k} + h</math> is simply <math>x_0</math> with a small delta added to its k-th component, and <math>h</math> is a reasonably small positive value.


Taking the ] of the Jacobian (computable using a ]) and re-arranging terms results in: Taking the ] of the Jacobian (computable using a ]) and re-arranging terms results in


<math>\Delta x \approx J_p^+(x_0)\Delta p</math> :<math>\Delta x \approx J_p^+(x_0)\Delta p</math>,


Where <math>\Delta p = p(x_0 + \Delta x) - p(x_0)</math>. where <math>\Delta p = p(x_0 + \Delta x) - p(x_0)</math>.


Applying the inverse Jacobian method once will result in a very rough estimate of the desired <math>\Delta x</math>-vector. A ] should be used to scale this <math>\Delta x</math> to an acceptable value. The estimate for <math>\Delta x</math> can be improved via the following algorithm (known as the ] method): Applying the inverse Jacobian method once will result in a very rough estimate of the desired <math>\Delta x</math>-vector. A ] should be used to scale this <math>\Delta x</math> to an acceptable value. The estimate for <math>\Delta x</math> can be improved via the following algorithm (known as the ]):


<math>\Delta x_{k+1} = J_p^+(x_k)\Delta p_k</math> :<math>\Delta x_{k+1} = J_p^+(x_k)\Delta p_k</math>


Once some <math>\Delta x</math>-vector has caused the error to drop close to zero, the algorithm should terminate. Existing methods based on the ] of the system have been reported to converge to desired <math>\Delta x</math> values using fewer iterations, though, in some cases more computational resources. Once some <math>\Delta x</math>-vector has caused the error to drop close to zero, the algorithm should terminate. Existing methods based on the ] of the system have been reported to converge to desired <math>\Delta x</math> values using fewer iterations, though, in some cases more computational resources.


=== Heuristic Methods === === Heuristic methods ===


The Inverse Kinematics problem can also be approximated using heuristic methods. These methods perform simple, iterative operations to gradually lead to an approximation of the solution. The heuristic algorithms have low computational cost (return the final pose very quickly), and usually support joint constraints. The most popular heuristic algorithms are: ] (CCD)<ref>D. G. Luenberger. 1989. Linear and Nonlinear Programming. Addison Wesley.</ref>, and (FABRIK)<ref>A. Aristidou, and J. Lasenby. 2011. FABRIK: A fast, iterative solver for the inverse kinematics problem. Graph. Models 73, 5, 243–260.</ref>. The inverse kinematics problem can also be approximated using heuristic methods. These methods perform simple, iterative operations to gradually lead to an approximation of the solution. The heuristic algorithms have low computational cost (return the final pose very quickly), and usually support joint constraints. The most popular heuristic algorithms are ] (CCD)<ref>D. G. Luenberger. 1989. Linear and Nonlinear Programming. Addison Wesley.</ref> and (FABRIK).<ref>A. Aristidou, and J. Lasenby. 2011. . Graph. Models 73, 5, 243–260.</ref>


== See also == == See also ==
Line 82: Line 95:
*] *]
*] *]
*]
*] *]
*] *]
*]
*]
*] *]
*]<!-- an alternative way of getting realistic CGI in film -->
*] *]
*] *]
Line 91: Line 106:
*] *]
*] *]
*]<!--an alternative way of getting realistic CGI in film-->
{{div col end}} {{div col end}}


Line 99: Line 113:
==External links== ==External links==
* *
* {{es icon}} * {{in lang|es}}
* - Given an OpenRAVE robot kinematics description, generates a C++ file that analytically solves for the complete IK. * - Given an OpenRAVE robot kinematics description, generates a C++ file that analytically solves for the complete IK.
* *
* *
* with an explanation of inverse kinematics * with an explanation of inverse kinematics
Line 107: Line 121:
* *
* *
* *
* *
* *

Latest revision as of 03:24, 27 December 2024

Computing joint values of a kinematic chain from a known end position
Forward vs. inverse kinematics

In computer animation and robotics, inverse kinematics is the mathematical process of calculating the variable joint parameters needed to place the end of a kinematic chain, such as a robot manipulator or animation character's skeleton, in a given position and orientation relative to the start of the chain. Given joint parameters, the position and orientation of the chain's end, e.g. the hand of the character or robot, can typically be calculated directly using multiple applications of trigonometric formulas, a process known as forward kinematics. However, the reverse operation is, in general, much more challenging.

Inverse kinematics is also used to recover the movements of an object in the world from some other data, such as a film of those movements, or a film of the world as seen by a camera which is itself making those movements. This occurs, for example, where a human actor's filmed movements are to be duplicated by an animated character.

Robotics

In robotics, inverse kinematics makes use of the kinematics equations to determine the joint parameters that provide a desired configuration (position and rotation) for each of the robot's end-effectors. This is important because robot tasks are performed with the end effectors, while control effort applies to the joints. Determining the movement of a robot so that its end-effectors move from an initial configuration to a desired configuration is known as motion planning. Inverse kinematics transforms the motion plan into joint actuator trajectories for the robot. Similar formulas determine the positions of the skeleton of an animated character that is to move in a particular way in a film, or of a vehicle such as a car or boat containing the camera which is shooting a scene of a film. Once a vehicle's motions are known, they can be used to determine the constantly-changing viewpoint for computer-generated imagery of objects in the landscape such as buildings, so that these objects change in perspective while themselves not appearing to move as the vehicle-borne camera goes past them.

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 achieve a desired configuration.

Kinematic analysis

A model of the human skeleton as a kinematic chain allows positioning using inverse kinematics.

Kinematic analysis is one of the first steps in the design of most industrial robots. Kinematic analysis allows the designer to obtain information on the position of each component within the mechanical system. This information is necessary for subsequent dynamic analysis along with control paths.

Inverse kinematics is an example of the kinematic analysis of a constrained system of rigid bodies, or kinematic chain. The kinematic 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.

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. When trying to find an analytical solution it is often convenient to exploit the geometry of the system and decompose it using subproblems with known solutions.

Other applications of inverse kinematic algorithms include interactive manipulation, animation control and collision avoidance.

Inverse kinematics and 3D animation

Further information: Robotics and Computer animation

Inverse 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 (see for a comprehensive survey on Inverse Kinematics Techniques in Computer Graphics).

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 manipulating 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.

A method of comparing both forward and inverse kinematics for the animation of a character can be defined by the advantages inherent to each. For instance, blocking animation where large motion arcs are used is often more advantageous in forward kinematics. However, more delicate animation and positioning of the target end-effector in relation to other models might be easier using inverted kinematics. Modern digital creation packages (DCC) offer methods to apply both forward and inverse kinematics to models.

Analytical solutions to inverse kinematics

Generic solutions

In some, but not all cases, there exist analytical solutions to inverse kinematic problems. One such example is for a 6-Degrees of Freedom (DoF) robot (for example, 6 revolute joints) moving in 3D space (with 3 position degrees of freedom, and 3 rotational degrees of freedom). If the degrees of freedom of the robot exceeds the degrees of freedom of the end-effector, for example with a 7 DoF robot with 7 revolute joints, then there exist infinitely many solutions to the IK problem, and an analytical solution does not exist. Further extending this example, it is possible to fix one joint and analytically solve for the other joints, but perhaps a better solution is offered by numerical methods (next section), which can instead optimize a solution given additional preferences (costs in an optimization problem).

An analytic solution to an inverse kinematics problem is a closed-form expression that takes the end-effector pose as input and gives joint positions as output, q = f ( x ) {\displaystyle q=f(x)} . Analytical inverse kinematics solvers can be significantly faster than numerical solvers and provide more than one solution, but only a finite number of solutions, for a given end-effector pose.

Many different programs (Such as FOSS programs IKFast and Inverse Kinematics Library) are able to solve these problems quickly and efficiently using different algorithms such as the FABRIK solver. One issue with these solvers, is that they are known to not necessarily give locally smooth solutions between two adjacent configurations, which can cause instability if iterative solutions to inverse kinematics are required, such as if the IK is solved inside a high-rate control loop.

Ortho-parallel Basis and a Spherical Wrist

Spherical wrist (axes of the last three joints of the robot intersect).

Many industrial 6DOF robots feature three rotational joints with intersecting axes ("spherical wrist"). These robots, known as robots with an "Ortho-parallel Basis and a Spherical Wrist," can be defined by 7 kinematic parameters that are distances in their assumed standard geometry. These robots may have up to 8 independent solutions for any given position and rotation of the robot tool head. Open-source solutions for C++ and Rust exist. OPW has also been integrated into ROS framework.

Numerical solutions to IK problems

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 than the original system.

The Jacobian inverse technique

The Jacobian inverse technique is a simple yet effective way of implementing inverse kinematics. Let there be m {\displaystyle m} variables that govern the forward-kinematics equation, i.e. the position function. These variables may be joint angles, lengths, or other arbitrary real values. If, for example, the IK system lives in a 3-dimensional space, the position function can be viewed as a mapping p ( x ) : R m R 3 {\displaystyle p(x):\mathbb {R} ^{m}\rightarrow \mathbb {R} ^{3}} . Let p 0 = p ( x 0 ) {\displaystyle p_{0}=p(x_{0})} give the initial position of the system, and

p 1 = p ( x 0 + Δ x ) {\displaystyle p_{1}=p(x_{0}+\Delta x)}

be the goal position of the system. The Jacobian inverse technique iteratively computes an estimate of Δ x {\displaystyle \Delta x} that minimizes the error given by | | p ( x 0 + Δ x e s t i m a t e ) p 1 | | {\displaystyle ||p(x_{0}+\Delta x_{estimate})-p_{1}||} .

For small Δ x {\displaystyle \Delta x} -vectors, the series expansion of the position function gives

p ( x 1 ) p ( x 0 ) + J p ( x 0 ) Δ x {\displaystyle p(x_{1})\approx p(x_{0})+J_{p}(x_{0})\Delta x} ,

where J p ( x 0 ) {\displaystyle J_{p}(x_{0})} is the (3 × m) Jacobian matrix of the position function at x 0 {\displaystyle x_{0}} .

The (i, k)-th entry of the Jacobian matrix can be approximated numerically

p i x k p i ( x 0 , k + h ) p i ( x 0 ) h {\displaystyle {\frac {\partial p_{i}}{\partial x_{k}}}\approx {\frac {p_{i}(x_{0,k}+h)-p_{i}(x_{0})}{h}}} ,

where p i ( x ) {\displaystyle p_{i}(x)} gives the i-th component of the position function, x 0 , k + h {\displaystyle x_{0,k}+h} is simply x 0 {\displaystyle x_{0}} with a small delta added to its k-th component, and h {\displaystyle h} is a reasonably small positive value.

Taking the Moore–Penrose pseudoinverse of the Jacobian (computable using a singular value decomposition) and re-arranging terms results in

Δ x J p + ( x 0 ) Δ p {\displaystyle \Delta x\approx J_{p}^{+}(x_{0})\Delta p} ,

where Δ p = p ( x 0 + Δ x ) p ( x 0 ) {\displaystyle \Delta p=p(x_{0}+\Delta x)-p(x_{0})} .

Applying the inverse Jacobian method once will result in a very rough estimate of the desired Δ x {\displaystyle \Delta x} -vector. A line search should be used to scale this Δ x {\displaystyle \Delta x} to an acceptable value. The estimate for Δ x {\displaystyle \Delta x} can be improved via the following algorithm (known as the Newton–Raphson method):

Δ x k + 1 = J p + ( x k ) Δ p k {\displaystyle \Delta x_{k+1}=J_{p}^{+}(x_{k})\Delta p_{k}}

Once some Δ x {\displaystyle \Delta x} -vector has caused the error to drop close to zero, the algorithm should terminate. Existing methods based on the Hessian matrix of the system have been reported to converge to desired Δ x {\displaystyle \Delta x} values using fewer iterations, though, in some cases more computational resources.

Heuristic methods

The inverse kinematics problem can also be approximated using heuristic methods. These methods perform simple, iterative operations to gradually lead to an approximation of the solution. The heuristic algorithms have low computational cost (return the final pose very quickly), and usually support joint constraints. The most popular heuristic algorithms are cyclic coordinate descent (CCD) and forward and backward reaching inverse kinematics (FABRIK).

See also

References

  1. Donald L. Pieper, The kinematics of manipulators under computer control. PhD thesis, Stanford University, Department of Mechanical Engineering, October 24, 1968.
  2. ^ Lynch, Kevin M.; Park, Frank C. (2017-05-25). Modern Robotics. Cambridge University Press. ISBN 978-1-107-15630-2.
  3. Siciliano, Bruno; Khatib, Oussama (2016-06-27). Springer Handbook of Robotics. Springer International Publishing. ISBN 978-3-319-32550-7.
  4. 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.
  5. J. M. McCarthy, 1990, Introduction to Theoretical Kinematics, MIT Press, Cambridge, MA.
  6. J. J. Uicker, G. R. Pennock, and J. E. Shigley, 2003, Theory of Machines and Mechanisms, Oxford University Press, New York.
  7. J. M. McCarthy and G. S. Soh, 2010, Geometric Design of Linkages, Springer, New York.
  8. Paden, Bradley Evan (1985-01-01). Kinematics and Control of Robot Manipulators (Thesis). Bibcode:1985PhDT........94P.
  9. Murray, Richard M.; Li, Zexiang; Sastry, S. Shankar; Sastry, S. Shankara (1994-03-22). A Mathematical Introduction to Robotic Manipulation. CRC Press. ISBN 978-0-8493-7981-9.
  10. A. Aristidou, J. Lasenby, Y. Chrysanthou, A. Shamir. Inverse Kinematics Techniques in Computer Graphics: A Survey. Computer Graphics Forum, 37(6): 35-58, 2018.
  11. Mathias Brandstötter, Arthur Angerer, Michael Hofbaur (2014). An Analytical Solution of the Inverse Kinematics Problem of Industrial Serial Manipulators with an Ortho-parallel Basis and a Spherical Wrist. Proceedings of the Austrian Robotics Workshop 2014. 22-23 May, 2014, Linz, Austria.
  12. opw_kinematics
  13. Rust is for Robotics (curated collection),
  14. moveit_opw_kinematics_plugin (ROS Wiki)
  15. D. G. Luenberger. 1989. Linear and Nonlinear Programming. Addison Wesley.
  16. A. Aristidou, and J. Lasenby. 2011. FABRIK: A fast, iterative solver for the inverse kinematics problem. Graph. Models 73, 5, 243–260.

External links

Categories: