🔝​

1.1 Kinematics

1.1.1 Prerequisites

To get the most out of this Kinematics module, it’s helpful to have:

Basic Mathematics

  • Familiarity with trigonometry (sine, cosine, angle addition formulas).
  • Understanding of linear algebra (vectors, matrices, basic matrix operations).
  • Comfort with calculus (especially differentiation), which is useful for topics like velocity kinematics and the Jacobian.

Fundamental Physics or Mechanics

  • Basic concepts of rigid-body motion (translational and rotational movement).
  • General understanding of forces and torques can be helpful, though kinematics itself does not address them directly.

While you don’t need to be an expert in any one of these areas, having a comfortable grasp of each will make your study of kinematics more productive and enjoyable.

⚠️ Note on Course Level

This is a basic course on kinematics. Readers, interested in latest advances on kinematic control, should complete their training with the advanced kinematics module treating singularities and other advanced kinematics analysis.


1.1.2 General Motivation

Delta robot Pick and Place. YouTube video, 14 June 2021. Available at: https://www.youtube.com/watch?v=8j5hPlHTZI8

Have you ever watched a precision robot—like the Delta robot in the video—pick and place objects at incredible speed and accuracy? These agile machines are well known for their fluidity and precision. But behind the impressive motion lies a well-structured branch of mechanics called kinematics.

Kinematics, often referred to as the “geometry of movement,” is the study of how bodies move in space without considering the forces or torques causing the motion. By focusing on the geometry and arrangement of joints, links, and end-effectors, kinematics allows us to:

  • Predict and Control Robot Positions: For instance, a robotic arm used in an assembly line must position its end-effector (tip of the arm) at exact points in space. Kinematics provides the correspondence between a robot joint configuration (particular choice of value for each joint angle) and a specific position and orientation of the end-effector. This is necessary to translate a desired position and orientation of the robot end-effector in Cartesian space (think of translation along and rotation about x, y, z axes) to a set of robot joint values (think of set of values in radians).

  • Backbone to Path Planning: From pick-and-place tasks to drawing complex shapes, kinematics helps in calculating paths, ensuring the robot can move smoothly from one point to another without collisions or awkward joint motions. Kinematics is the back bone to all standard and advanced path planning techniques. Whether it’s a Delta robot on a factory floor or a humanoid robot in a research lab, it is necessary to design the robot and its kinematic structure to ensure that the path will be kinematically feasible, namely that it will satisfy the robot’s mechanical constraints.

In this chapter, you will explore different ways of representing positions and orientations in 3D space, understand the kinematics behind common robotic arms, and learn a systematic way to map your robot’s geometry into kinematic equations to enable control. By mastering kinematics, you’ll have a strong foundation for starting your journey into controling robots.


1.1.3 General Concepts

⚠️ Note on Notation:

Please be aware that notation, variable naming, and the style of writing equations may slightly differ between instructors. Always refer to the provided formulas and definitions in this course when working on assignments or exercises to avoid any confusion.

In this section we are first going to learn how to represent robots, what is a joint, degrees of freedom, etc. before diving into specific transformations (2D coordinate transformations, rotation matrices, homogeneous matrices) to link conceptual kinematic description of a robot to mathematical formalisms.


Robot Structure:

A rigid-body robot is composed of a series of rigid-links, attached to one another by joints. The joints allow a relative motion between links.

The simplest of these joint-based linkage is the revolute joint, also called hinge joint. This allows a link to rotate with respect to the previous link it is connected to.

In place of enabling the links to rotate around the joint, the joint can also allow the links to slide along each other. One then refers to these links as prismatic joint, also called a sliding or linear joint.

Joints can also enable either links to do more than one motion type (combining translation and rotation) or enable to connect three or more links simultaneously. The helical or screw joint allows simultaneous rotation and translation about a screw axis. The spherical joint, also called a ball-and-socket joint, enables rotation along three axes.

For our discussion in this chapter we will limit ourselves to simple joints with a single type of motion such as revolute joints or prismatic joints.

Joints
Figure: Types of Joints in Kinematics (screenshot from the video Modern Robotics, Chapter 2.2: Degrees of Freedom of a Robot, by Kevin Lynch, available at YouTube).

Serial vs. Parallel robots

Among the various configurations in which mechanical components can be arranged, two key architectures are particularly common in robotics:

  • Serial Chains: These consist of a series of rigid links connected sequentially by joints. Each link (except the first and last) is connected to exactly two other links. Serial chains are commonly seen in robotic arms.
  • Fully Parallel Mechanisms: These mechanisms have two primary components (often the base and the end-effector) connected by multiple independent chains. Each of these connecting chains itself typically forms a serial structure. An example is the Delta robot used in high-speed pick-and-place tasks.

For a visual comparison of these two robot types, refer to the following video:

Video showing the difference between Parallel (left) and Serial (right) robots. YouTube video, 13 juin 2019. Available at: https://www.youtube.com/watch?v=3fbmguBgVPA

Conceptual Questions

Question 1: Drag each characteristic to the correct robot category:

Serial Robot

Serial Robot

Parallel Robot

Parallel Robot
Open kinematic chain
Three serially linked segments
Closed kinematic chain robots

Question 2: A serial robot is a closed kinematic chain structure

True
False

Question 3: In a parallel robot, the end-effector (moving platform) is connected to the base by multiple kinematic chains (legs) in parallel.

True
False


Drawing kinematic diagrams

In robotics, accurately representing the structure of robots (left image below) through kinematic diagrams (right image below) is crucial. These diagrams help us clearly visualize joints, links, and their connections.

Kine
Figure: Structure of a 3-axes parallel robot (left) represented in an kinematic diagram (right)

By learning how to sketch these diagrams, you will be better prepared to analyze robot motion and systematically compute essential parameters such as mobility and degrees of freedom.

To draw a proper diagram, one needs to identify the number of links and type of joint that connects them.

Video Explanation

Here is a video explaining the step-by-step procedure to draw the kinematic diagram shown above.

Video: Step-by-step procedure to draw the kinematic diagram (created by Shujiro Shobayashi).
Hands-on exercices

Here is an exercises to learn how to draw the kinematic representation structures for three closed-chain robots. Give it a try !

kine_ex1
Figure: Robot Structure 1 (adapted from the course Basics of Robotics for Manipulation)
Click here for Solution
Video: Step-by-step procedure to draw the kinematic diagram of Robot Structure 1 (created by author).

kine_ex2
Figure: Robot Structure 2 (adapted from 2017 Exams from Seoul National University, with solutions, Problem 1, Fig. 1(b), available at this PDF).
Click here for Solution
Video: Step-by-step procedure to draw the kinematic diagram of Robot Structure 2 (created by author).

kine_ex3
Figure: Robot Structure 3 (adapted from 2018 Exams from Seoul National University, with solutions, Problem 1, Fig. 1(a), available at this PDF).
Click here for Solution

Formalism

The structure of the robot determines entirely its mobility. For instance, the extent by which one link can move it determined by the extent to which it can rotate or slide only the joints it is attached to. The length of the robot’s links and the range of motion at each joint determines the volume of the space surrounding the robot that can be reached or travelled through by the robot. To analyse this volume of motion is crucial. For instance, when controling robots tasked to pick and place objects, it allows to determine the regions the robot can reach the object successfully. It also enables to determine the regions of the space free of robot, and hence safe for humans to move around. To control robots, it is hence crucial to be able to express mathematically the range of motion it can do. We refer to this as the robot’s structural mobility.

The first key mathematical notion you must get accustomed to is the notion of:

  • Degrees of Freedom (DoF): it refers to the number of independent parameters required to completely specify the position and orientation of a robot or its parts in space. For instance, a rigid body in three-dimensional space has six degrees of freedom—three translational (moving along the x, y, and z axes) and three rotational (rotating around these axes).

The state and structural mobility of the robot are expressed through its:

  • Configuration: consists of a the set of parameters that completely specifies the position and orientation of every robot’s link. For revolute(or prismatic)-jointed robots, it is represented as a vector of joint angles(or lengths). For instance, the two-link serial robot (2R-arm) we saw earlier can be described by two scalars, denoting the two angles formed by the two links with the preceding link.
  • Configuration space (called C-space) is the space of all configurations that can be reached by the robot.

See next a video that introduce this formalism:

Northwestern Robotics (2018) Modern Robotics, Chapter 2.1: Degrees of Freedom of a Rigid Body. YouTube video, 26 August 2017. Available at: https://www.youtube.com/watch?v=z29hYlagOYM

Lynch, K.M. and Park, F.C. (2017) Modern Robotics: Mechanics, Planning, and Control. Cambridge: Cambridge University Press.

From this video, we have learned a general rule which holds for any system, not just rigid bodies: $$ \boxed{ \text{DoF} = \sum_{}^{} \text{freedoms of } \textbf{points} - \text{number of independent constraints} } $$

And since the robots are made of rigid bodies, $$ \boxed{ \text{DoF} = \sum_{}^{} \text{freedoms of } \textbf{bodies} - \text{number of independent constraints} } $$

The number of direction of motion enabled at a joint is described by the number of DoFs associated with the joint. For instance, revolute (R), prismatic (P), and helical (H) joints all have one degree of freedom. Joints can also have multiple DoFs. The cylindrical joint (C) has two DoFs and allows independent translations and rotations about a single fixed joint axis. The universal joint (U) is another two-degree-of-freedom joint that consists of a pair of revolute joints arranged so that their joint axes are orthogonal. The spherical joint (S) has three DoFs. To understand the following table, recall that a planar motion has 3 Dof (2 translations and one rotation) while in spatial motion we have 6 DoF.

Joint type DoF (f) Constraints (c) between two planar rigid bodies Constraints (c) between two spatial rigid bodies
Revolute (R) 1 2 5
Prismatic (P) 1 2 5
Helical (H) 1 N/A 5
Cylindrical (C) 2 N/A 4
Universal (U) 2 N/A 4
Spherical (S) 3 N/A 3

Note. The counts agree with the mobility relation ( f + c = m ), where ( m = 3 ) for planar motion and ( m = 6 ) for spatial motion (assuming independent constraints).


Grübler’s formula and its application

Grübler’s formula is a powerful tool to quickly calculate the DOFs of mechanisms, especially useful for complex robot configurations: $$ \boxed{ \text{DoF} = m(N - 1 - J) + \sum_{i=1}^{J} \text{f}_i } $$

Where:

  • $m$ is the number of DoFs of the robot’s body in space (e.g., $m = 3$ if robot is constrained to move in translation only, such as so called planar robots, $m = 6$ for robots that can both translate and rotate in space).
  • $N$ is the number of links (including the frame).
  • $J$ is the number of joints.
  • $f_i$ is the number of DoFs permitted at each joint $i$.

To understand how this formula is applied, check out the following detailed explanation:

Detailed explanation of Grübler’s formula and practical examples of its application.

Northwestern Robotics (2018) Modern Robotics, Chapter 2.2: Degrees of Freedom of a Robot. YouTube video, 26 August 2017. Available at: https://www.youtube.com/watch?v=z29hYlagOYM

Lynch, K.M. and Park, F.C. (2017) Modern Robotics: Mechanics, Planning, and Control. Cambridge: Cambridge University Press.

Mathematical Development Questions

Let’s try to compute the DoF of the robot we have seen before:

Kine
Figure: Robot Structure 1 (adapted from 2017 Exams from Seoul National University, with solutions, Problem 1, Fig. 1(c), available at this PDF).
Click here for Solution

Applying the spatial version ($ m =6 $) of Grübler’s formula leads to the following:

  • $ N = 3 \times 3 \\ (\text{links}) + 1 \\ (\text{ground}) + 1 \\ (\text{end effector}) = 11 $

  • $ J = 3 \\ (\text{R joints}) + 4 \times 3 \\ (\text{S joints}) = 15 $

  • $ \sum f_i = 3 \times 1 \\ (\text{R joints}) + 3 \times 12 \\ (\text{S joints}) = 39 $

  • $ \text{dof} = m(N - 1 - J) + \sum f_i = 6(11 - 1 - 15) + 39 = 9 $

This Delta robot as designed with the parallel bars and spherical joints has 6 supplementary DoFs, enabled by the rotation of each bar around its principal axis. These DoFs are referred to as internal DoFs, as they are not affecting the translation of the mobile plate. They are actually related to the rotation of each bar around its principal axis.


Kine
Figure: Robot Structure 1 (adapted from 2017 Exams from Seoul National University, with solutions, Problem 1, Fig. 1(b), available at this PDF).
Click here for Solution

Each box can be regarded as a link connected to ground by a 2-dof PP joint. Applying the spatial version ($ m =6 $) of Grübler’s formula leads to the following:

  • $ N = 3 \times 2 \\ (\text{links}) + 1 \\ (\text{ground}) + 1 \\ (\text{end effector}) = 8 $

  • $ J = 3 \\ (\text{R joints}) + 3 \\ (\text{S joints}) + 3 \\ (\text{2-dof joints}) = 9 $

  • $ \sum f_i = 3 \times 1 \\ (\text{R joints}) + 3 \times 3 \\ (\text{S joints}) + 2 \times 3 \\ (\text{2-dof joints}) = 18 $

  • $ \text{dof} = m(N - 1 - J) + \sum f_i = 6(8 - 1 - 9) + 18 = 6 $


Kine
Figure: Robot Structure 1 (adapted from 2018 Exams from Seoul National University, with solutions, Problem 1, Fig. 1(a), available at this PDF).

Here consider that the three prismatic joints and three revolute joints at the base are locked.

Click here for Solution

Applying the spatial version ($ m =6 $) of Grübler’s formula leads to the following:

  • $ N = 3 \times 2 \\ (\text{links}) + 1 \\ (\text{ground}) + 1 \\ (\text{end effector}) = 8 $

  • $ J = 3 \\ (\text{S joints}) + 3 \\ (\text{P joints}) + 2 \times 3 \\ (\text{PR joints}) = 9 $

  • $ \sum f_i = 3 \times 3 \\ (\text{S joints}) + 1 \times 3 \\ (\text{P joints}) + 2 \times 3 \\ (\text{PR joints}) = 18 $

  • $ \text{dof} = m(N - 1 - J) + \sum f_i = 6(8 - 1 - 9) + 18 = 6 $

Observe that if the three prismatic joints and three revolute joints at the base are locked, then unless if the legs are all parallel, it is impossible for the legs to extend in length, implying that the mechanism becomes a structure in this case. Therefore this mechanism has six dof.


1.1.3.1 : Introduction to Robotics | Kinematics & Modeling

Now that we have seen some basics notions, we move to an more in-depth exploration of kinematics and modeling. To start off, you may want to watch this short video that gives you an introduction of the meaning of kinematics and modeling.

This video gives you an introduction of the meaning of kinematics and modeling and will present you how his videos will be strucured.

Introduction to Robotics 101 tutorial series (2022) Kinematics and modeling of 2D & 3D robots. YouTube video, 22 May 2022. Available at: https://www.youtube.com/watch?v=K_xIJBlbjg4

Conceptual Questions

Question 1: Forward kinematics (FK) allows to compute...

the position/orientation of the robot's end-effector from given robot's joint configuration
the robot's joint configuration from the robot's end-effector position and orientation
neither of these two


1.1.3.2: Coordinate Transformations in 2D | Mapping

In this chapter, we focus on 2D coordinate transformations, specifically, pure translations and pure rotations for planar (serial) robots.

This video gives you an introduction to 2D translations and rotations.

Coordinate Transformations in 2D (Part 1)| Mapping | Robotics 101. YouTube video, 22 May 2022. Available at: https://www.youtube.com/watch?v=H_94DTWd8ck

Explains how translations and rotations combine simultaneously

Coordinate Transformations in 2D (Part 2)| Mapping | Robotics 101. YouTube video, 27 May 2022. Available at: https://www.youtube.com/watch?v=TWTMoFvcBFc

Discusses how to handle successive coordinate transformations step by step

Coordinate Transformations in 2D (Part 3)| Mapping | Robotics 101. YouTube video, 27 May 2022. Available at: https://www.youtube.com/watch?v=R_hxO5xBYfI

As you have seen, a general motion in the plane can be described by a combination of translations and rotations around the origin. A sequence of translations and rotations comes up against the fact that the translation is a vector addition while the rotation a matrix multiplication.

It would be very desirable to be able to integrate rotation and translation in a single operation in order to be able to link them together. The homogeneous matrices allow this integration of the translation into the transformation matrix. The price to pay is to increase the order of the matrix by one. Within the rotation matrix (R), with orientation (θ), the translation vector (t) on x and y axis is added to the right and a line [0 0 1] at the bottom:

$$ \begin{bmatrix} R & \mathbf{t} \cr 0 & 1 \end{bmatrix} = \begin{bmatrix} \cos \theta & -\sin \theta & t_x \cr \sin \theta & \cos \theta & t_y \cr 0 & 0 & 1 \end{bmatrix} $$

Conceptual Questions

Question 1: Is the following equality true?

R(θ1) · R(θ2) = R(θ2) · R(θ1)

True
False

Question 2: The matrix

\[ \begin{bmatrix} \cos \theta & -\sin \theta & t_x \\ \sin \theta & \cos \theta & t_y \\ 0 & 0 & 1 \end{bmatrix} \]

correspond to ...

A translation followed by a rotation
A rotation followed by a translation

Mathematical Development Questions

Calculate the following 2D rotation matrices:

  1. $R(\theta = 0)$.
  2. $R(-\theta) $.
  3. $ \left(R(\theta)\right)^{-1} $.
  4. Find $\theta$ such that $R(\theta) = R(\theta_2)\,R(\theta_1) $.

  5. Give the homogeneous matrix (no need to expand, just write the matrix product) for the follwing sequence of operations: $$ t_1 → R(\theta_{1}) → t_2 → R(\theta_{1}) $$

Hint: Start by computing the homogeneous matrix corresponding to the pure translation $t=\begin{bmatrix} t_x \\ t_y \end{bmatrix}$ and pure rotation $R(\theta)=\begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix}$.

Exercice insipired from the course Basics of Robotics for Manipulation

Click here for Solutions

1: $R(\theta = 0)=\begin{bmatrix} 1 & 0 \\ 1 & 0 \end{bmatrix}$.


2: $R(-\theta)=\begin{bmatrix} \cos -\theta & -\sin -\theta \\ \sin -\theta & \cos -\theta \end{bmatrix} =\begin{bmatrix} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{bmatrix}$.


3: As $\begin{bmatrix} a & b \\ c & d \end{bmatrix}^{-1} = \frac{1}{\text{det}} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}$, therefore: $$ (R(-\theta))^{1}=\frac{1}{(\cos \theta)^2 + (\sin \theta)^2} \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} = \begin{bmatrix} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{bmatrix} = (R(-\theta))^{T} = R(-\theta) $$


4: $R(\theta_2)\,R(\theta_1)$ $$ = \begin{bmatrix} \cos \theta_{2} & \sin -\theta_{2} \\ \sin \theta_{2} & \cos \theta_{2} \end{bmatrix} \, \begin{bmatrix} \cos \theta_{1} & -\sin \theta_{1} \\ \sin \theta_{1} & \cos \theta_{1} \end{bmatrix} = \begin{bmatrix} \cos \theta_{1+2} & -\sin \theta_{1+2} \\ \sin \theta_{1+2} & \cos \theta_{1+2} \end{bmatrix} = R(\theta_{1} + \theta_{2}) $$


5: Let’s proceed step by step:

  • Homogeneous matrix of a pure translation: $$ M_t = \begin{bmatrix} 1 & 0 & t_x \cr 0 & 1 & t_y \cr 0 & 0 & 1 \end{bmatrix} $$

  • Homogeneous matrix of a pure rotation with an angle $\theta$ around the origin
    ($c=\cos\theta,\; s=\sin\theta$): $$ M_r = \begin{bmatrix} c & -s & 0 \cr s & \;\;c & 0 \cr 0 & \;\;0 & 1 \end{bmatrix} $$

  • Homogeneous matrix for the sequence $t \rightarrow R(\theta)$: $$ M_r M_t = \begin{bmatrix} c & -s & 0 \cr s & \;\;c & 0 \cr 0 & \;\;0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & t_x \cr 0 & 1 & t_y \cr 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} c & -s & c\,t_x - s\,t_y \cr s & \;\;c & s\,t_x + c\,t_y \cr 0 & \;\;0 & 1 \end{bmatrix} = \begin{bmatrix} R(\theta) & R(\theta)\,t \cr 0 & 1 \end{bmatrix} $$

Therefore: $$ \boxed{M_{r_2} M_{t_2} M_{r_1} M_{t_1}} = \begin{bmatrix} R(\theta_{1}) & R(\theta_{1})\,t \cr 0 & 1 \end{bmatrix} \begin{bmatrix} R(\theta_{2}) & R(\theta_{2})\,t \cr 0 & 1 \end{bmatrix} $$

Additional Content

For further understanding of the definition of Homogeneous Transformation Matrices, the following concise and informative video is recommended:

Northwestern Robotics (2018) Modern Robotics, Chapter 3.3.1: Homogeneous Transformation Matrices. YouTube video, 27 August 2017. Available at: https://www.youtube.com/watch?v=vlb3P7arbkU

Lynch, K.M. and Park, F.C. (2017) Modern Robotics: Mechanics, Planning, and Control. Cambridge: Cambridge University Press.


1.1.3.3: Forward Kinematics of robots | Planar 2D robots

In robotics, understanding how each joint movement translates into precise actions is essential.

Watch the following video for an intuitive overview of forward kinematics before we delve into the mathematical details.

In this chapter, we will dive into forward kinematics (also called Direct Geometric Model, DGM), a fundamental method that allows us to calculate exactly where a robot’s end-effector (such as a gripper or tool) ends up in space based on its joint configurations (for example its position (x,y) and orientation(θ) in 2D). We will start by exploring simple planar 2D robots, laying a clear foundation for mastering more complex robotic systems.

Forward Kinematics of robots | Planar 2D robots | Robotics 101. YouTube video, 12 June 2022. Available at: https://www.youtube.com/watch?v=svyhLDAoyKc


1.1.3.4: Forward Kinematics (with solved examples) | Homogeneous Transformations

Here you will see some examples of how to find this end effector positions in 2D using homogeneous transforms as we have seen in Section 1.1.3.1.

First solved example of how to find this end effector positions in 2D using homogeneous transforms

Homogeneous Transformations (example 1) | Robotics 101. YouTube video, 12 June 2022. Available at: https://www.youtube.com/watch?v=mO7JJxaVtkE

Second solved example of how to find this end effector positions in 2D using homogeneous transforms

Homogeneous Transformations (example 1) | Robotics 101. YouTube video, 12 June 2022. Available at: https://www.youtube.com/watch?v=zg5sS9LZGAM

Now that we have seen how to compute forward kinematics using homogeneous transformations, let’s explore another insightful way to approach planar rotations. Sometimes, it is more intuitive or practical to represent motion as rotation around an arbitrary point ( p ) rather than just around the origin.

A rotation around an arbitrary point ( p ) can be expressed through three intuitive steps:

  1. Translate the point ( p ) to the origin.
  2. Rotate around the origin by angle (θ).
  3. Translate back by moving the origin back to point ( p ).

Mathematically, this can be represented as:

$ \begin{bmatrix} I & p \cr 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} R & 0 \cr 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} I & -p \cr 0 & 1 \end{bmatrix} = \begin{bmatrix} R & p - R \cdot p \cr 0 & 1 \end{bmatrix} $

This expression clearly shows that:

  • A rotation about any point ( p ) is equivalent to a rotation about the origin, followed by a particular translation ( p - R p ).
  • Conversely, any combination of rotation and translation in the plane can be represented as a pure rotation around a certain center ( p ).

Understanding this concept is powerful because it provides deeper insight into robot movements, especially when dealing with practical scenarios involving complex rotations or articulations around joints positioned away from the base.

let’s get familiriar with this type of method doing similar exercise:

Mathematical Development Questions

let’s consider this following robotic arm. Give the forward kinematic model that expresses the coordinates (x,y) of point P as a function of the joint coordinates $\theta_1$ and $\theta_2$

Fig 1

Hint: Use the homogeneous matrices of the transformations:

  1. Rotation of $\theta_2$ around $(L_1,0)$
  2. Rotation of $\theta_1$ around the origin $(0,0)$

Exercice insipired from the course Basics of Robotics for Manipulation

Click here for Solutions

First, place the arm in its reference position as shown in the figure below. Then, develop the homogeneous matrices at each joint, starting from the last one (the end effector).

Fig 1 sol
  1. Homogenous matrix corresponding to the rotation $\theta_2$ around the end of the first arm $p_{10}$ with coordinates $(L_1,0)$: $$ H_{q_2} = \begin{bmatrix} R_2 & p_{10} - R_2 \cdot p_{10} \cr 0 & 1 \end{bmatrix} = \begin{bmatrix} cos(\theta_2) & -sin(\theta_2) & L_1 (1-cos(\theta_2)) \cr sin(\theta_2) & cos(\theta_2) & -L_1 sin(\theta_2) \cr 0 & 0 & 1 \end{bmatrix} $$

  2. Homogenous matrix corresponding to the rotation $q_1$ around the origin: $$ H_{\theta_1} = \begin{bmatrix} c_1 & -s_1 & 0 \cr s_1 & c_1 & 0 \cr 0 & 0 & 1 \end{bmatrix} $$

The combined homogenous matrix of the sequence of the two rotations is equal to: $$ H = H_{\theta_1} \cdot H_{\theta_2} = \begin{bmatrix} c_1 & -s_1 & 0 \cr s_1 & c_1 & 0 \cr 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} c_2 & -s_2 & L_1 (1-c_2) \cr s_2 & c_2 & -L_1 s_2 \cr 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} c_{1+2} & -s_{1+2} & L_1 (c_1 (1-c_2) + s_1 s_2) \cr s_{1+2} & c_{1+2} & L_1 (s_1 (1-c_2) - c_1 s_2) \cr 0 & 0 & 1 \end{bmatrix} $$

Therefore to find the coordinates $(x,y)$ of the point P: $$ \boxed{ \begin{pmatrix} x \cr y \cr 1 \end{pmatrix} = H \cdot \begin{pmatrix} L_1 + L_2 \cr 0 \cr 1 \end{pmatrix} = \begin{pmatrix} L_1 c_1 + L_2 c_{1+2} \cr L_1 s_1 + L_2 s_{1+2} \cr 1 \end{pmatrix} } $$


1.1.3.5: Introduction to Quaternions

Quaternions Explained

Quaternions Explained

Representing orientations is a very interesting problem. In robotics, Euler angles were used to represent orientation of the robot’s end-effector. They are represented as an ordered set of rotations about X, Y or Z-axes (most commonly used is the Z-X-Z Euler angle representation). While Euler angles are common ways to describe rotations in robotics, they have some limitations, notably the phenomenon known as gimbal lock: phenomenon that occurs when using Euler angles (roll, pitch, yaw) to represent orientations or rotations, typically in three-dimensional space. It happens when two of the rotation axes align, causing the loss of one degree of rotational freedom. In simpler terms, you become unable to rotate around one particular axis because two axes have essentially “collapsed” into one. Here is a video explaining this phenomenon.

To avoid this representational singularity, we can use rotation matrices, axis-angle representation or Quaternions. All these representations are representation singularity-free. While rotation matrices require 6 independent parameters to represent the orientation, bot axis-angle and Quaternion representation need only 4. Quaternions are an elegant mathematical alternative for representing 3D rotations, avoiding issues like gimbal lock and allowing smooth rotational interpolations. They are widely used in robotics, computer graphics, and aerospace for their efficiency and accuracy in handling rotations.

For an intuitive, visual understanding of quaternions, it is recommended to watch the following engaging videos from the channel 3Blue1Brown:

Definition about Quaternions

Visualizing quaternions (4D numbers) with stereographic projection. YouTube video, 6 September 2018. Available at: https://www.youtube.com/watch?v=d4EgbgTm0Bg

With some reminder about euler angles and complex number, this video will introduce you how to describe 3D rotation using quaternions from 3:58

Quaternions and 3D rotation, explained interactively. YouTube video, 26 October 2018. Available at: https://www.youtube.com/watch?v=zjMuIxRvygQ

As you have understood in these previous videos (if not we suggest you to re-watch from 17:25 on the first video), Quaternions are a generalization of complex numbers containing:

  • a real scalar part $ \lambda_0 $
  • three imaginary components $ [\lambda_1, \lambda_2, \lambda_3]^T$, which can be interpreted as a vector part $\underline{\lambda} $.

The direction of the axis of rotation $[x, y, z]^T$ is given by this vector $ \underline{\lambda} = [\lambda_1, \lambda_2, \lambda_3]^T $.

The angle of rotation $\theta$ is introduced in the following way in the quaternion $ Q $:

$$ \lambda_0 = \cos(\theta / 2), \quad \underline{\lambda} = \sin(\theta / 2)[x, y, z]^T,\quad ||x,y,z||=1
$$

The rotations are therefore represented by unit quaternions:

$$ \lambda_0^2 + \lambda_1^2 + \lambda_2^2 + \lambda_3^2 = 1 $$

The quaternion multiplication rules are a generalization of the complex number multiplication rules:

$$ \boxed{ Q = [ {\lambda_0, \lambda_1, \lambda_2, \lambda_3} ] = [ {\lambda_0, \underline{\lambda}} ] = [ \lambda_0 + i \lambda_1 + j \lambda_2 + k \lambda_3 ] } $$

with

$$ i^2 = j^2 = k^2 = ijk = -1 $$ $$ ij = k,\quad ji = -k,\quad jk = i,\quad kj = -i,\quad ki = j,\quad ik = -j $$

Note the multiplication is non-commutative! (William Rowan Hamilton, Dublin, 1843)

These rules lead to a sequence of rotation M and L: $$ Q_M Q_L = \begin{pmatrix} \mu_0 \\ \underline{\mu} \end{pmatrix} \cdot \begin{pmatrix} \lambda_0 \\ \underline{\lambda} \end{pmatrix} = \begin{pmatrix} \mu_0\lambda_0 - \underline{\mu}^T\underline{\lambda} \\ \mu_0\underline{\lambda} + \lambda_0\underline{\mu} + \underline{\mu}\times\underline{\lambda} \end{pmatrix} $$

Useful formulas

The conversion from quaternion to direction cosines (rotation matrix) and vice versa is given by:

$$ R = \begin{pmatrix} 2(\lambda_0^2 + \lambda_1^2) - 1 & 2(\lambda_1\lambda_2 - \lambda_0\lambda_3) & 2(\lambda_1\lambda_3 + \lambda_0\lambda_2) \\ 2(\lambda_1\lambda_2 + \lambda_0\lambda_3) & 2(\lambda_0^2 + \lambda_2^2) - 1 & 2(\lambda_2\lambda_3 - \lambda_0\lambda_1) \\ 2(\lambda_1\lambda_3 - \lambda_0\lambda_2) & 2(\lambda_2\lambda_3 + \lambda_0\lambda_1) & 2(\lambda_0^2 + \lambda_3^2) - 1 \end{pmatrix} = \begin{pmatrix} r_{11} & r_{21} & r_{31} \\ r_{12} & r_{22} & r_{23} \\ r_{13} & r_{23} & r_{33} \end{pmatrix} $$

and the inverse transformation from the rotation matrix to quaternion is:

$ \lambda_0 = \frac{1}{2}\sqrt{r_{11}+r_{22}+r_{33}+1} $

$ \underline{\lambda} = \frac{1}{2} \begin{pmatrix} \text{sgn}(r_{32}-r_{23})\sqrt{r_{11}-r_{22}-r_{33}+1} \\ \text{sgn}(r_{13}-r_{31})\sqrt{r_{22}-r_{11}-r_{33}+1} \\ \text{sgn}(r_{21}-r_{12})\sqrt{r_{33}-r_{22}-r_{11}+1} \end{pmatrix} $

Conceptual Questions

Question 1: Calculation of an orientation quaternion gives {1/2, 1/3, 1/3, 1/3}. Can this be correct?

True
False

Question 2: The quaternion {1/2, -1/2, -1/2, -1/2} represents a rotation of:

60 degrees
120 degrees or -120 degrees, depending on axis direction
-60 degrees
Is not a unit quaternion

Additional Content

For further understanding of the definition of Quaternions, the following concise and informative site is recommended for interactive version of these visuals:

Visualization Quaternions



1.1.3.6: Inverse Kinematics of Robots

Inverse Kinematics (IK), also known as the Indirect Geometric Model (IGM), allows us to determine the required joint positions (angles and link lengths) based on the desired position and orientation of the robot’s end-effector, given the geometric parameters of its links. This process is essentially the opposite of forward kinematics.

How can we use IK to move a robot from point A to point B?
Inverse Kinematics is one of the most fundamental concepts in robotics that provides a map between the position and orientation of the robot’s end-effector and the different configurations that can achieve it. For serial robots, forward kinematics is a many-to-one map (i.e. many configurations may represent a single pose in Cartesian space). Inverse kinematics as the name suggests is the inverse map (one-to-many) that maps a given pose of robot’s end-effector to different configurations that can achieve it. In this course, we will introduce the inverse kinemtics of a very simple case of 6R robot.

Watch the following video for a clear introduction to inverse kinematics:

In this video, you will explore another example of inverse kinematics using a planar robot. Interestingly, this robot features both revolute and prismatic joints, making its parameters a combination of joint angles and link lengths. This type of robot is specifically known as an ‘RRP’ robot.

Inverse Kinematics of Robots | Robotics 101. YouTube video, 23 July 2022. Available at: https://www.youtube.com/watch?v=WQTnCIhkzNc

Solved example of Inverse Kinematics with a planar robot

Inverse Kinematics of Robots (with solved example) | Robotics 101. YouTube video, 31 July 2022. Available at: https://www.youtube.com/watch?v=EzZDRwmk8Nw

Conceptual Questions

Question 1: Inverse kinematics gives position and orientation of the end-effector in function of joint angles

True
False

Mathematical Development Questions

Find the IGM (Inverse geometric model) of a 2DOF planar robot (see figure below): given x and y, what are $θ_1$ and $θ_2$?

  • $x = L_1 \cos{\theta_1} + L_2 \cos{(\theta_1 + \theta_2)}$
  • $y = L_1 \sin{\theta_1} + L_2 \sin{(\theta_1 + \theta_2)}$

*Hint: Use the trigonometric formulas for the sine and cosine of the sum of two angles, as well as the identity involving the sum of the squares of sine and cosine. Also, recall that we computed the forward kinematics in the exercise from Section 1.1.3.3

Fig 2

Exercice insipired from the course Basics of Robotics for Manipulation

Click here for Solutions

As we have seen on the exercise from Section 1.1.3.3,

  • $x = L_1 c_1 + L_2 c_{1+2}$
  • $y = L_1 s_1 + L_2 s_{1+2}$ and we also know that:
  • $c^2 + s^2 = 1$

Using the law of cosines we see that the angle $\theta_2$ is given by:

  • $c_2 = \frac{x^2 + y^2-L_{1}^2-L_{2}^2}{2 L_1 L_2}$
  • $s_2 = \pm \sqrt(1-(c_2)^2)$

Hence, $\theta_2$ can be found by: $\boxed{\theta_2 = \arctan \frac{\pm \sqrt(1-(c_2)^2)}{c_2}}$

The choice of $\pm$ is arbitrary but important (it must be consistent) for pairs of final solutions.

Moreover, finding the angle of $\theta_{2}$ by using the $\arctan$ function is advantageous, since it recovers both elbow-up and elbow-down solutions by choosing the positive and negative signs, respectively.


Fig 6

$\theta_1$ can be defined as $\theta_1 = \alpha - \beta$ where

  • $\alpha = \arctan \frac{y}{x}$
  • $\beta = \arctan \frac{L_2 s_2}{L_1 + L_2 c_2}$

Therefore,
$\boxed{\theta_1 = \arctan \frac{y}{x} - \arctan \frac{L_2 s_2}{L_1 + L_2 c_2}}$


1.1.3.7: Velocity Kinematics - Meet the Jacobian !

Ready to dive deeper into robotics? This section introduces you to one of the coolest concepts in robot motion: the Jacobian Matrix!

Ever wondered how quickly and smoothly a robot’s gripper moves in space? Here you will learn exactly how to calculate both the linear and angular velocities of a robot’s end-effector. But that is not all—the Jacobian acts like a map, converting joint velocities into precise end-effector movements. Mastering it means you’re unlocking a powerful tool that robotics experts use every day!

Watch the following video to get an understanding of velocity kinematics and the powerful Jacobian matrix:

Velocity Kinematics & Jacobian Matrix | Robotics 101. YouTube video, 21 August 2022. Available at: https://www.youtube.com/watch?v=Wud3aCXiSm8

And there is even more! Discover how the Jacobian connects to the fascinating world of Manipulability Ellipsoids, showing you visually how robots move, avoid obstacles, and perform complex tasks efficiently.

Check it this video here:

Velocity Kinematics & Manipulability Ellipsoids | Robotics 101. YouTube video, 3 September 2022. Available at: https://www.youtube.com/watch?v=gdSTcJwf3L0

Conceptual Questions

Question 1: The Jacobian matrix of a robot related the joint positions with the joint torques

True
False

Question 2: The Jacobian matrix of a robot relates the position at the level of the tool woth the articular positions

True
False

Question 3: The Jacobian matrix of a robot relates the force applied to the level of the tool with the joint torques

True
False

Now that you have understood the exciting concept of the Jacobian, let’s practice calculating it ourselves! Follow along with this detailed solved example in the video below, and then reinforce your skills with some hands-on exercises. Give it a try!

Detailed example of how to solve jacobian Matrix

Jacobian | Robotics 101. YouTube video, 16 September 2022. Available at: https://www.youtube.com/watch?v=EdvAHmIONMs

Mathematical Development Questions

From Practice Exercise 5.1, MODERN ROBOTICS, Practice Exercices

Exercice 1:

Figure 4.1 shows the KUKA LBR iiwa 7R robot arm. The figure defines an {s} frame at the base with the ŷ_s-axis pointing out of the page and a {b} frame aligned with {s} at the end-effector. The robot is at its home configuration. The screw axes for the seven joints are illustrated (positive rotation about these axes is by the right-hand rule). The axes for joints 2, 4, and 6 are aligned, and the axes for joints 1, 3, 5, and 7 are identical at the home configuration. The dimensions are $L_1 = 0.34 \, m$, $L_2 = 0.4 \, m$, $L_3 = 0.4 \, m$, and $L_4 = 0.15 \, m$.

(a) What is the space Jacobian when the robot is at its home configuration?

(b) What is the body Jacobian when the robot is at its home configuration?

(c) What is the rank of the space and body Jacobian at the home configuration? (It is always the same.) Is the home configuration a singularity?
What is the dimension of the space of feasible twists at the home configuration?

For the remaining questions, assume the angles of the joints are $i\pi/16$ for joints $i = 1 \dots 7$.

(d) What is the space Jacobian? What joint torques are needed to generate the wrench
$\mathcal{F}_s = (1 \, Nm, 1 \, Nm, 1 \, Nm, 1 \, Nm, 1 \, N, 1 \, N, 1 \, N)$?
What is the manipulability measure $\mu_2$ for the angular velocity manipulability ellipsoid in the space frame?
What is the manipulability measure $\mu_2$ for the linear manipulability ellipsoid in the space frame?

(e) What is the body Jacobian? What joint torques are needed to generate the wrench
$\mathcal{F}_b = (1 \, Nm, 1 \, Nm, 1 \, Nm, 1 \, Nm, 1 \, N, 1 \, N, 1 \, N)$?
What is the manipulability measure $\mu_2$ for the angular velocity manipulability ellipsoid in the body frame?
What is the manipulability measure $\mu_2$ for the linear manipulability ellipsoid in the body frame?

Fig 4.1
Figure 4.1. The KUKA LBR iiwa 7-dof robot (LBR = Leichtbauroboter, German for lightweight robot; iiwa = intelligent industrial work assistant).

From Practice Exercise 5.3, MODERN ROBOTICS, Practice Exercices

Exercice 2:

Figure 5.1 shows an RPR robot that is confined to the plane of the page.
An end-effector frame {b} is illustrated, where the $\hat{x}_b$-axis is out of the page.
The directions of positive motion of the three joints are indicated by arrows.
The axes of the two revolute joints are out of the page, and the prismatic joint moves in the plane of the page. Joint 1 is at $q_1 = (0, -5, -7)$ in {b} and joint 3 is at $q_3 = (0, -1, -3)$ in {b}.

Write the body Jacobian $J_b(\theta)$ for the configuration shown.
All entries of your $J_b(\theta)$ matrix should be numerical (no symbols or math).

Fig 5.1
Figure 5.1. An RPR robot
Click here for Solutions

Exercice 1:

Angular units are radians and linear units are mm.

(a)
$$ J_s = \begin{bmatrix} 0 & 1 & 0 & 1 & 0 & 1 & 0 \cr 0 & 0 & 0 & 0 & 0 & 0 & 0 \cr 1 & 0 & 1 & 0 & 1 & 0 & 1 \cr 0 & 0 & 0 & 0 & 0 & 0 & 0 \cr 0 & 0.34 & 0 & 0.74 & 0 & 1.14 & 0 \cr 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}. $$

(b)
$$ J_b = \begin{bmatrix} 0 & 1 & 0 & 1 & 0 & 1 & 0 \cr 0 & 0 & 0 & 0 & 0 & 0 & 0 \cr 1 & 0 & 1 & 0 & 1 & 0 & 1 \cr 0 & 0 & 0 & 0 & 0 & 0 & 0 \cr 0 & -0.95 & 0 & -0.55 & 0 & -0.15 & 0 \cr 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}. $$

(c)
The rank is three. Columns 2, 3, and 4 of the Jacobians are linearly independent;
all feasible velocity directions are linear combinations of these three columns.
The space of feasible twists is three dimensional.

(d) Calculate $J_s(\theta)$ using JacobianSpace.

$$ \tau = J_s^{T}(\theta)\,\mathcal{F}_s = \begin{bmatrix} 1 & 1.44 & 0.78 & 1.72 & 1.13 & 0.54 & 2.29 \end{bmatrix}^{T}. $$

$$ \mu_2(J_{sw} J_{sw}^{T}) = 2.427, \qquad \mu_2(J_{sv} J_{sv}^{T}) = 30.5. $$

(e) Calculate $J_b(\theta)$ using JacobianBody.

$$ \tau = J_b^{T}(\theta)\,\mathcal{F}_b = \begin{bmatrix} -0.19 & 1.76 & 0.18 & 0.26 & 1.36 & -0.96 & 1 \end{bmatrix}^{T}. $$

$$ \mu_2(J_{bw} J_{bw}^{T}) = 2.427, \qquad \mu_2(J_{bv} J_{bv}^{T}) = 20.6. $$


Exercice 2: $$ J_b = \begin{bmatrix} 1 & 0 & 1 \cr 0 & 0 & 0 \cr 0 & 0 & 0 \cr 0 & 0 & 0 \cr -7 & 1/\sqrt(2) & -3 \cr 5 & 1/\sqrt(2) & 1 \end{bmatrix} $$

You can see this by visualization (imagine turntables at joints 1 and 3 and visualize the motion of a point at the origin of $b$, and imagine a conveyor moving in the direction of joint 2) or by recognizing that $\omega_1 = \omega_3 = (1, 0, 0)$ and points on the joint 1 and 3 axes are $q_1$ and $q_3$ and calculating $v_i = -\,\omega_i \times q_i$. For joint 2, the linear direction of positive motion is given by $v_2 = (q_3 - q_1)/\lVert q_3 - q_1 \rVert$.


1.1.3.9: Robot Singularities & how to find them

Singularities occur when a robot configuration causes it to lose the ability to move or become blocked in certain directions. Understanding and identifying these singularities is essential to safe and efficient robot operation.

Definition of robot singularities are and how you can find them

Singularities | Robotics 101. YouTube video, 17 October 2022. Available at: https://www.youtube.com/watch?v=WXEOr7X2bPE

For serial manipulators, the singular positions result from the loss of degrees of freedom while in a parallel manipulator, they result of the gain of one or more degrees of freedom. Most of the time, passing through a singularity causes over constraint, thus inducing the loss of control of one or more degrees of freedom. Which means, not controllable, which is not good.

Conceptual Questions

Question 1: What condition must be satisfied to identify a robot's singularity ? det(J) = ...

Identity Matrix
0
Non-zero value

Question 2: Consider the following Delta robot:

Delta robot

Which of the following diagrams represent singularities of this Delta robot? (Multiple answers possible)

Singularities of Delta robot

a) When the 6 bars (3 pairs) are all parallel in the same direction
b) When 4 bars (2 pairs) are parallel
c) When 4 bars (2 pairs) lie in the same plane or two parallel planes
d) When the 3 parallelograms are arranged in three parallel or coincident planes

Exercice insipired from the course Basics of Robotics for Manipulation

Additional Content

For further understanding of the definition of Singularities, the following concise and informative video is recommended:

Northwestern Robotics (2018) Modern Robotics, Chapter 5.3: Singularities. YouTube video, 27 August 2017. Available at: https://www.youtube.com/watch?v=vjJgTvnQpBs

Lynch, K.M. and Park, F.C. (2017) Modern Robotics: Mechanics, Planning, and Control. Cambridge: Cambridge University Press.


1.1.4 Programming

let’s move on to maybe the most exciting part: applying the kinematics concepts you have learned in code and seeing your robot working right in front of you!

(Please refer to the Install Webots section if you haven’t installed it yet.)

Exercise 1: Dobot Pick-and-Place (Forward Kinematics)

Step 1: Setup your environment

  1. 📁 Download the dobot folder
  2. Extract the downloaded .zip file.
  3. Launch Webots. From the top-left corner select File → Open World.
  4. Navigate to the extracted dobot_2025/world folder and select your .wbt file.

Step 2: let’s start coding!

Once successfully opened, your robot and its environment should appear, as illustrated in the screenshot below:

Kinematics Image

Now, follow the instructions provided on the right side panel within Webots, and complete the code to make your robot do the “Pick and Place”.

💡 Helpful Suggestion:
For detailed explanations of variables, robot schematics, and further clarifications that could greatly assist your understanding and coding, we strongly recommend reviewing the figures and content available on this page from Robotics for Creative Practice.

If the Python file isn’t open, select your robot in the scene tree (left panel), right-click and choose Edit controller, or load it manually via Webots’ text editor (right panel) dobot_2025/controllers/dobot folder and select your .py .

Once you have implemented all the “COMPLETE THIS LINE OF CODE” sections, click “Build” or “Save”(CTRL+S) to compile your project, and then start the simulation.

Good luck and have fun!

Answer

After you have attempted the exercise and want to verify your solution, you can download this file to check your answers and compare values:

📁 Answers_Dobot


Exercise 2: IRB Robot Inverse Kinematics (Using IKPy)

Step 1: Coding

  1. 📁 Download the irb folder (follow the same step as before).
  2. Extract the folder, open Webots, and load the .wbt file from the extracted irb/worlds folder.
  3. Follow the on-screen instructions in Webots, filling in sections marked "COMPLETE THIS LINE OF CODE".
Answer

After you have attempted the exercise and want to verify your solution, you can download this file to check your answers and compare values:

📁 Answers_irl

Step 2: Understanding the Process (Feedback)

As you have probably noticed by completing the coding exercise, manually programming inverse kinematics can become quite complex, especially for practical robotics applications. Usually, in real-world scenarios, specialized software or libraries are utilized to handle these calculations efficiently, rather than implementing all functions by hand. So you are very lucky for this chapter, you only need to understand how to use it !

In this example with your robot, a Python library called ikpy is used. This library provides convenient functions for computing inverse kinematics: you simply input the desired position (x, y, z), and the current joint positions, and ikpy performs all the necessary calculations.

If you’re curious about how these calculations are done internally or if you’d like to learn more about this library, you can explore the official documentation here.

Step 3: Observation

You can also have some fun by clicking on the yellow-black sphere and translating or rotating it. If your code is correct, the robot arm will continuously attempt to reach the sphere, as long as it remains within its workspace.


1.1.5 Credits

This course page was created by Shujiro Shobayashi, MSc in Robotics at EPFL, revised by Durgesh Haribhau Salunkhe, Postdoctoral Researcher, LASA lab, EPFL, and funded by IEEE RAS and EPFL.

This course uses videos content shared by Mohammad Zainullah Khan and closely follows the structure, videos and exercises from Kevin Lynch courses, with some additional videos and conceptual and mathematical exercises.

1.1.6 Resources

Books

For those looking to deepen their understanding or seeking clear explanations of more complex topics, we also suggest additional short and highly instructive videos by Kevin Lynch. These videos are based on the book “Modern Robotics: Mechanics, Planning, and Control,” by Kevin Lynch and Frank Park, Cambridge University Press 2017. See http://modernrobotics.org for information on the book, free software, and other materials

Videos

Exercices


Back to Top