Theoretical Robotics

An introduction to the theoretical basics of robotics and kinematics.

What is a Robot?

The Oxford dictionary defines a robot as a a machine — especially one programmable by a computer — capable of carrying out a complex series of actions automatically. However, if we follow this definition, an industrial coffee machine or your fancy kitchen machine would be a robot. While this might by the case, we often associate industrial robot arms assembling cars or humanoid robots carrying packages around with being actual robots.

Let's approach this question from both a theoretical and a quite pragmatic side. Would you consider the following thing a robot? It has one joint that you can move with the slider below. It is a robot arm in its most abstract form and reduced to a single degree of freedom.

One could argue whether a single degree of freedom is enough to be considered a robot. In fact, I had this discussion with my colleagues when I was a PhD student. Be careful when answering this question, since it determines whether the toaster in your kitchen is a robot or not. Let's circumvent this existential question by increasing the degrees of freedom to two.

As you can see, the robot consists of two rotational joints and two segments connecting them. The last point of a robot arm is often called the end-effector, where tools like grippers, suction cups or spray painters could be installed. Knowing the position of the end-effector is important to fulfilling most tasks. However, the position depends on the state of the joints, which we will discuss in the next section.

Describing the Robot's State

The robot has sensors in its joints that tell it the current position of the joints. The positions of all joints describe the robot's state completely. We will call these positions joint values \(q_1\), \(q_2\), etc. Then, the complete state can be described as a vector \(\boldsymbol{q}\) of all joint values: $$ \boldsymbol{q} = \left(\begin{matrix} q_1 \\ q_2 \\ ... \end{matrix} \right) $$

Let's look at the example robot with two degrees of freedom. Both joints are limited to a certain range of angles. This might be due to physical limits in the mechanism or to avoid collisions with itself or the environment. We call these joint limits. For the example robot, the joint limits are defined as follows: $$ \begin{eqnarray} \frac{1}{4} \pi &\leq q_1 &\leq \frac{3}{4} \pi \\ -\frac{1}{2} \pi &\leq q_2 &\leq \frac{1}{2} \pi \end{eqnarray} $$

All valid joint value combination \((q_1, q_2)\) within the joint limits form the so called configuration space \(C\). The configuration space is usually a subset of all possible combinations, here \(\mathbb{R}^2\): $$ (q_1, q_2) \in C \subset \mathbb{R}^2 $$ For the example robot, the configuration space forms a rectangle in the 2D plane. You can move the current position in that rectangle by clicking and moving it or using the sliders for the individual joints.

What Places can the Robot Reach?

While the joint values in the configuration space describe the robot's state completely, often we are more interested in the position of the robot's gripper or tool. In general, we call this the end-effector of the robot. Let's think about how we could calculate all reachable end-effector positions for our example robot. Since the state of the robot can be fully described by the state vector \(\mathbf{q}=(q_1, q_2)^T\), we should be able to find a function \(f\) that takes the state vector as input and produces the end-effector position \(\mathbf{x}=(x, y)^T\) as output: $$ \mathbf{x} = f(\mathbf{q}) $$

Even simple robots like the one in our example have a non-linear function \(f\) that can generate a suprisingly complex set of reachable end-effector positions. The set of all reachable end-effector positions is called the workspace \(W\). $$ W = \{\mathbf{x} = f(\mathbf{q}) \mid \mathbf{q} \in C\} $$

Try out different joint values to see which end-effector positions are reachable. Reached positions are marked as red in the workspace plot on the right. You can use the "Sample Workspace" button to get a better idea of the workspace.