Overview
Inverse Kinematics is one of the fundamental tools in robotics, it accepts trajectories in cartesian space and generate trajectories in generalized coordinates. In this note, inverse kinematics is demonstrated with a bit of Lie group theory to ease the concept and bring in more insight of the computation.
Problem Statement
With kinematics function which satisfies
where include the translation and rotation, belongs to a valid set of generalized coordinate. The target is finding the corresponding for a given .
Numerical Algorithm and Computation on SE(3)
Initialize a generalized coordinate , take the Taylor expansion of it
Rearrange we have
We could do integration with a time parameter
Now we have an iterative algorithm, but how to calculate it, because involves translation and rotation. Lie group would help! Consider and , which are the representation of and , respectively. We could then do
where is a 6D vector in cartesian space. Note that here means the right minus operator because the Jacobian is define in the local frame.
The idea behind is inverse kinematics use the difference of and on the manifold as a search direction, then map it back to the generalized coordinates. Because
ideally we have to use the operator in configuration space to do integration. But since the tangent space of and the generalized coordinate of both belongs to , we only need to do simple Euler integration.
Of course, there are a lot of details when implement the algorithm, e.g.
- How to calculate the inverse of Jacobian, usually pseudo inverse is used;
- You could also used the left subtraction, but then the Jacobian must in global coordinate defined on Lie algebra;
For implementation, one can check the code here, implemented with pinocchio pinocchio inverse kinematics.