First edition
A MOOC on inertial tools for robotics
Luc Jaulin, ENSTA-Bretagne, UBO, Lab-STICC


  1. Introduction to InMOOC
  2. Acces to Moodle (Submissions and forum)
  3. Dates
  4. Files
  5. Videos
  6. Other MOOCs


InMOOC is a free MOOC open to everybody. It corresponds to chapter 1 of the book "Mobile Robotics, Luc Jaulin (2015), ISTE editions". This MOOC requires notions in mathematics (typically those that are needed to enter engineering schools in France).
It is supposed to be in English, but some videos associated to exercises are still in French.


Inertial techniques are used in several topics of mobile robotics such as
- in inertial measurement unit (IMU), a device that measures angular rates and accelerations to estimate a position of a robot
- for finding a dynamical model for a robot in a 3D environment with a position and orientation that may change with respect to the different forces and torques.
- to compute the input to apply to the robot so that it will move toward the right direction
Inertial tools are used in different types of robots /vehicles such as autonomous aircraft, underwater robots, satellites, car, etc.
In this MOOC, you will learn who to:
- Build the sensors that are able to measure the angular rate and the accelerations of a body inside its own frame;
- Derive the state equations which a 3D robot controlled with accelerations or forces;
- Integrate these state equations using an integration algorithm (Runge-Kutta for instance);
- Characterize and control the integration errors


The registration is not mandatory to follow the MOOC and to see the videos. But it is needed to have an access to the forum, to post your work and to get the diploma. To register, go to the Moodle platform


To follow InMOOC, you should have some basic notions in Python and good knowledge in mathematics. If you do not know Python, but any other programming language, you may learn easily the required notions in this MOOC.
You will have to install Python 3 in your machine (see below).


You will have to do some exercises and to post them on Moodle. A video with explanations related to each exercise is given as soon as the lesson opens. You are not obliged to follow the method that is given in the video. For some exercises, the solution corresponds to text and equations and no Python program is required. In such a case, you should post a scan of your paper sheet, (taken with you phone for instance) or any pdf file.


To get the diploma, you need at least 23 points. Therefore, doing all exercises is not mandatory.
The participants who got enough points will receive a diploma corresponding this MOOC.
This diploma can be used by students to obtain the corresponding ECTS from their PhD courses, or to comply with any other requests by their home university.
If needed by your doctoral school, I can also provide a 20 minutes Skype exam with a mark, once the MOOC is finished.
An example of the diploma you can obtain :


For all questions, you should try to use the forum in Moodle, so that anyone can reply or see answers from others. Otherwise, for questions related to specific problems (delay, etc) send an email to


, 12:00. Lesson 1. Set a rigid body in a 3D space
, 12:00. Lesson 2. Euler angles
, 12:00. Lesson 3. Inertial mechanization
, 12:00. Lesson 4. Control
, 12:00. All exercises should be posted.
, 12:00. Diplomas are sent by email


pdf files for the lessons and the exercises.
Starting programs for Python users.
For Python users, use the library
For Python users, draw in 3D


Lesson 1. Set a rigid body in a 3D space

Open :
Lesson 1 is open in advance, to allow some adaptations and see how the MOOC works.

Abstract: We present the mathematical tools needed to understand inertial tools. More precisely, we introduce the rotation matrices, rotation vectors, Lie algebra and systems of coordinates.

Exercice 1. Propriété de la matrice adjointe (1 point)

Exercice 2. Identité de Jacobi

Exercice 3. Formule de Varignon (1 point)

Exercice 4. Formule de Rodrigues (1 point)

Exercice 5. Quaternions (1 point)
Start from the file in

Exercice 6. Car on the sphere (2 points)
Start from the file

Lesson 2. Euler angles

Open :

Abstract: We provide a parametrization of SO(3), the set of 3D rotations, via the Euler angles. The differential calculus in SO(3) and the link with rotation vectors. These concepts are illustrated through various examples such as the drawing of 3D objects.

Exercice 7. Pendule de Schuler (1 point)
Partez du fichier

Exercice 8 Immersion (2 points)
Start from the file

Exercice 9. Car on the torus (2 points)
Start from the file

Exercice 10. Détecteur de freinage (1 point)

Exercice 11. Robot manipulateur (1 point)
Partez du fichier

Lesson 3. Inertial mechanization

Open :

Abstract: In this lesson, we show how to build an inertial unit system that will be embedded inside a mobile robot. For this, we will provide a kinematic model of a body moving and rotating freely in the space. Using an integration of the corresponding differential equation, we will show how we can estimate the position, the orientation and the speed of the robot.

Exercice 12. Modélisation d'un robot sous-marin (1 point)

Exercice 13. Graphisme robot 3D (1 point)

Partez du fichier

Exercice 14. Dzhanibekov effect (2 points)

Start from the file

Exercice 15. Euler vector field (2 points)

Start from the file

Exercice 16. Floating wheel (2 points)

Start from the file

Exercice 17. Schuler oscillations in an inertial unit (1 point)

Start from the file

View more : Pendule de Foucault
View more : Gyroscopic precession
View more : Gyroscopic instruments

Lesson 4. Control

Open :

Abstract: In this lesson, you only have exercises. We give some applications of the previous theoretical tools for control, dealing with some specific problems related to mobile robotics.

Exercice 18. Lie bracket for control. (1 point)

Start from the file

Exercice 19. Follow the equator. (1 point)
Start from the file
Start from the file

Exercice 20. Modeling and control of a torpedo. (2 points)

Start from the file

Exercice 21. Geodesic. (2 points)

Start from the file