# The Forward Kinematic Problem

By | September 13, 2020

Here is the summary of section 2 of Chapter 6; Robotics and Automatic Geometric Theorem Proving of the book {Ideals, Varieties, and Algorithms} By‎ David A. Cox , John Little and Donal O’Shea

## The Forward Kinematic Problem

Can ‎we ‎give ‎explicit ‎description ‎or ‎formula ‎for‎ $f: \mathcal{J} \to \mathcal{C}$ in terms of the joint setings (our coordinates on ‎ $‎\mathcal{J}‎$ ‎) and the dimensions of the segments of the robot “arms”?‎‎

The ‎asnwer ‎is ‎”Yes”. ‎In ‎other ‎words, ‎we ‎can ‎determine ‎the ‎position ‎and ‎orientation ‎of ‎the ‎”hand” ‎from ‎joint ‎settings ‎of ‎the ‎”arms”, ‎by ‎describing ‎the ‎relation ‎positions ‎of ‎the ‎segments ‎on ‎either ‎side ‎of a‎ ‎joint.‎

‎[Note that when a planar robot arm has three (or more) revolute joints, the equation $f(j) = c$ has several solutions.]

## Constraint in Motion of Real World Robots

‎If ‎our ‎real ‎world ‎robot ‎is ‎to ‎work ‎in a‎ ‎space ‎containing ‎physical ‎obstacles ‎or ‎barriers ‎to ‎movement ‎in ‎certain ‎directions, ‎it ‎may b‎e ‎the ‎case ‎that ‎some ‎of ‎the ‎solution‎s of $f: \mathcal{J} \to \mathcal{C}$ for a given $c \in ‎\mathcal{C}‎$ ‎correspond ‎to ‎positions ‎that ‎are ‎not ‎physically ‎reachable.‎‎

## ‎Relative Position

For ‎describing ‎the ‎relative ‎position‎s of the segments meeting at a joint, we introduce a local local rectangular coordinate system at each of revolute joints.‎

At a‎ ‎revolute ‎joint‎ ‎ $i$ ‎, we introduce an $(x_{i+1},y_{i+1})$ ‎coordinate ‎system ‎in ‎the ‎following ‎way. ‎The ‎origin ‎is ‎placed ‎at ‎joint‎ ‎ $i$ . ‎We ‎take ‎the ‎positive‎ $x_{i+1}$-axis ‎to ‎lie ‎along ‎the ‎direction ‎of ‎segment‎ ‎ $i+1$ ‎(in the robot’s current position). ‎Then ‎the ‎positive‎ ‎ $y_{i+1}$-axis ‎is ‎determined ‎to ‎form a‎ ‎normal ‎right‎-handed rectangular coordinate system. Note for each ‎ $i \ge 2$ , ‎the‎ ‎ $(x_i,y_i)$ ‎coordinate ‎of ‎joint‎ ‎ $i$ ‎are‎ ‎ $(\ell_i,0)$ , ‎where‎ ‎ $\ell_i$ ‎is ‎the ‎length ‎of ‎segment‎ ‎ $i$ .‎‎

Now the ‎question‎ is; when we have a point in $(x_{i+1},y_{i+1})$ coordinate, how can we describe it in $(x_i,y_i)$ coordinate?

Let‎ ‎ $\theta‎_i$ ‎be ‎the ‎counterclockwise ‎angle ‎from ‎the‎ $x_i$‎-axis to the ‎ $x_{i+1}$-axis‎, and ‎ $q = (a_{i+1},b_{i+1})$, ‎then‎ ‎ $q = (a_i,b_i)$ ‎in‎ $(x_i,y_i)$ coordinate is:‎
$\begin{bmatrix} a_i \\ b_i \\ \end{bmatrix} =‎ \begin{bmatrix} \cos ‎\theta‎_i & -\sin \theta_i \\ \sin \theta_i &\cos \theta_i \\ \end{bmatrix}‎ .‎ \begin{bmatrix} a_{i+1} \\ b_{i+1}\\ \end{bmatrix} ‎‎‎+‎ \begin{bmatrix} \ell_i \\ 0 \\ \end{bmatrix}$
consider a planar robot with a fixed segment ‎ $1$ ,‎‎ $n$ ‎revolute ‎joints ‎linking ‎segments ‎of ‎length‎ ‎ $\ell_2, \ldots, \ell_n$ . ‎The ‎hand ‎is ‎segment‎ $n+1$, attached ‎to ‎segment‎ ‎ $n$ ‎by ‎joint‎ $n$ ‎. Now by induction on ‎ $n$ we can conclude that ‎‎‎the mapping $f: \mathcal{J} \to \mathcal{C}$ for this robot has the following form‎:
‎‎ $‎f(‎\theta‎_1, \ldots, ‎\theta‎_n)‎ =‎ \begin{bmatrix} \sum\limits_{i=1}^{n-1} \ell_{i+1} \cos \big (\sum\limits_{j=1}^i ‎\theta‎_j \big ) \\ \sum\limits_{i=1}^{n-1} \ell_{i+1} \sin \big (\sum\limits_{j=1}^i \theta_j \big ) \\‎ \sum\limits_{i=1}^n \theta_i \end{bmatrix}$
With using the notion of ‎ Algebraic Variety ‎we ‎have ‎defined a‎ ‎polynomial ‎mapping ‎from ‎the ‎variety‎ $‎\mathcal{J} = V \big ({x_1}^2 + {y_1}^2 - 1 , \ldots , {x_n}^2 + {y_n}^2 - 1\big )$ ‎to‎ ‎ $‎\mathbb{R}^2‎$ .‎‎‎‎