Forward Kinematics
Before we start, about joints.
Data structure of Joint
struct Joint{
Joint * parent;
int length;
vec3 rotation; // Usually use a euler angle to represent rotation
vec3 translation; // 3D translation of one joint
};
- Rigid Body
-
Degree of freedom
- Left hand axis
- Cross product
Review
In the notation of this course:
- Transformation Matrix
- $F_{j}^{i}$ represents:
- The transformation matrix of the coordinate of one point $p$ in frame of reference $j$ to the frame of referece $i$.
- The transformation matrix from frame of reference $i$ to frame of reference $j$.
- Each column of $F_j^i$ represents the
- $F_{j}^{i}$ represents:
Forward Kinematics
- General form of kinematic chain
Take this image as an example. Assume that each joints all have 3 degrees of freedom of rotation and no translation.
We can have:
\[\vec{x} = f(\Theta)\]$f$ here represents a function of forward kinematics.
We can further expand the equation that:
\[\begin{align*} \textbf{x} &= f(\vec{\Theta}) \\ &= F_4^0 \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix}\\ &= F_1^0 F_2^1 F_3^2 F_4^3 \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix} % &= H_T(\vec{d_{0,1}^0})H_R(\vec{\theta_1})\\ % &H_T(\vec{d_{1,2}^1})H_R(\vec{\theta_2}) \\ % &H_T(\vec{d_{2,3}^2})H_R(\vec{\theta_3}) \\ % &H_T(\vec{d_{3,4}^3})H_R(\vec{\theta_4})\begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix} \end{align*}\]where the transformation matrix $F_j^i$ is
\[F_j^i = \begin{bmatrix} \textbf{R}_j^i \ \ \textbf{d}_{i, j}^{i} \\ \textbf{0} \ \ \ \ 1 \end{bmatrix}\]Please note here that, $\textbf{x}$ is not a linear combination of $\vec{\Theta}$. We can not write $\textbf{x}$ as $\textbf{x} = \textbf{M}{\vec{\Theta}} $. As $\vec{\Theta}$ here is the variable within each transformation matrix $F$.
To be more clear about this part:
\[\begin{align*} \textbf{x} &= f(\vec{\Theta}) \\ &= F_1^0(\vec{\Theta}_1) F_2^1(\vec{\Theta}_2) F_3^2(\vec{\Theta}_3) F_4^3(\vec{\Theta}_4) \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix} \end{align*}\](we assume there is no translation within each joint, thus $\textbf{d}$ is fixed)
Above is the basic procedure of forward kinematics. Given the status of each parent joints, we can determine the position of one joint easily through recursively calculating the transformation matrices.
Forward kinematic is nice! But not enough probably..
Inverse Kinematics
To go through inverse kinematics, we might need to highlight the reason why we would bother developing this method if we have already had one robust method of forward kinematics.
- Scenario 1: Imagine you are a animator, and you want to pose a specific gesture of one character.

