2d edition
Automation MOOC, Linear Control with a State Space approach
Luc Jaulin


  1. Introduction
  2. Dates
  3. Post your work
  4. Files
  5. Lessons and Videos
  6. Other MOOCs
  7. Liste of students who got the diploma


About AutoMOOC

AutoMOOC is a free course in English open to anyone. It corresponds to the book "Automation for robotics, Luc Jaulin (2015), ISTE editions" (see below).
To follow this course, you need to have some basics in mathematics (e.g., those that are required to enter an engineer school).


To register fill the form :
The registration is not mandatory to follow the MOOC and to see the videos. But it is needed to have to get the diploma.


To follow AutoMOOC, you should have some basic notions in Python and 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.


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.


To get the diploma, you need at least 50 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.
An example of the diploma you can obtain :


, 12:00. Lesson 1. Introduction
, 12:00. Lesson 2. Modeling
, 12:00. Lesson 3. Simulation
, 12:00. Lesson 4. Linear systems
, 12:00. Lesson 5. Linear control
, 12:00. Lesson 6. Linearized control
, 12:00. All exercises should be posted.
, 12:00. Diplomas are sent by email

Post your work

For each lesson, you should send your solution by email to
For the exercises that require the execution of a program, You should provide the Python (or other) code.
You also have to send in your email a video capture with your running program. A video should last for less than 1 minute, if possible.
A possibility is to open a youtube channel so that you can send me the associated link in the email
For the video capture, you may use 'SimpleScreenRecorder' for Linux or 'CamStudio' for Windows.
For some exercises, the solution corresponds to text and equations and no 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.

You can Python (or other) online

We use PyGame (Python online). Go to the project
Run to check the program is fine
Fork (for this, you will have to create an account).
Modify the program as you want.
To post your program, just send the link.


Lessons and exercises in pdf.
Python start programs.
Librairy to be used

Lessons and videos

Lesson 1. Introduction

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

Abstract. Biological, economic or mechanical systems surrounding us can often be described by a state equations. This lesson introduces the notion of state, trajectory, inputs and outputs. It also presents the concepts of controller and closed-loop representation.

Exercise 1.1. Underwater robot (1 point)
Exercise 1.2. Sailboat robot (1 point)
Exercise 1.3. Chaotic system (1 point)
Exercise 1.4. Hénon Map (1 point)

View more : Effet papillon

Lesson 2. Modeling


Abstract. We will call modeling the procedure which consists of finding a more or less accurate state representation of the system we are looking at. In general, constant parameters appear in the state equations (such as the mass or the inertial moment of a body, the coefficient of viscous friction, the capacitance of a capacitor, etc.). In these cases, an identification step may prove to be necessary. Here, we will assume that all the parameters are known. Of course, no systematic methodology exists that can be used to model a system. The goal of this lesson and of the following exercises is to present, using several varied examples, how to obtain a state representation.

Exercise 2.1. First and second order systems (1 point)

Exercise 2.2. Mass-spring system (1 point)

Exercise 2.3. Model a pendulum (1 point)

Exercise 2.4. Hamilton method (1 point)

Exercise 2.5. Dynamic modeling of an inverted rod pendulum (1 point)

Exercise 2.6. Dynamic modeling of the Segway (1 point)

Exercise 2.7. Model a car (1 point)

Exercise 2.8. RLC circuit (1 point)

Exercise 2.9. DC-motor (1 point)

Exercise 2.10. Water tanks (1 point)

Exercise 2.11. Fibonacci sequence (1 point)

Exercise 2.12. Buses (1 point)

Lesson 3. Simulation


Abstract. In this chapter, we will show how to perform a computer simulation of a non-linear system described by its state equations. This step is important in order to test the behavior of a system (controlled or not). Before presenting the simulation method, we will introduce the concept of vector fields. This concept will allow us to better understand the simulation method as well as certain behaviors which could appear in non-linear systems. We will also give several concepts of graphics necessary for the graphical representation of our systems.

Exercise 3.1. Predator-prey model (1 point)

Exercise 3.2. Simple pendulum (1 point)
Start from the file

Exercise 3.3. Van der Pol (1 point)

Exercise 3.4. Simulation of a car (1 point)

Exercise 3.5. Integration with Taylor (1 point)
Start from the file

Exercise 3.6. Rotating cube (1 point)

Exercise 3.7. Three-dimensional simulation of a tricycle (1 point)

Exercise 3.8. Manipulator robot (1 point)

Exercise 3.9. Omni wheel robot (1 point)
Start from the file

Exercise 3.10. Snake (1 point)
Start from the file

Exercise 3.11. Swimbox (1 point)

Exercise 3.12. Virus (1 point)

Lesson 4. Linear systems


Abstract. The study of linear systems is fundamental for the proper understanding of the concepts of stability and the design of linear controllers. This lesson introduces the notion of stability and makes the link between a state space representation and the more classical transfer approach.

Exercise 4.1. Solution of a state equation (1 point)

Exercise 4.2. Stability criterion (1 point)

Exercise 4.3. Laplace variable (1 point)

Exercise 4.4. Transfer function of elementary systems (1 point)

Exercise 4.5. Transfer function of composite systems (1 point)

Exercise 4.6. Transfer matrix (1 point)

Exercise 4.7. Change of basis (1 point)

Exercise 4.8. Controllable canonical form (1 point)

Exercise 4.9. Second order system (1 point)

Exercise 4.10. Combination of systems (1 point)

Exercise 4.11. Transfer function (1 point)

Exercise 4.12. Canonical control form (1 point)

Exercise 4.13. Canonical observation form (1 point)

Exercise 4.14. Modal form (1 point)

Exercise 4.15. Jordan form (1 point)

Lesson 5. Linear control


Abstract. We will study the design of controllers for systems given by linear state equations. After having defined the fundamental concepts of controllability and observability, we will propose two approaches for the design of controllers. First of all, we will assume that the state is accessible on demand. Even though this hypothesis is generally not verified, it will allow us to establish the principles of the pole placement method. In the second phase, we will no longer assume that the state is accessible. We will then have to develop state estimators capable of approximating the state vector in order to be able to employ the tools developed in the first phase.

Exercise 5.1. Non-observable states, non-controllable state (1 point)

Exercise 5.2. Using the controllability and observability criteria (1 point)

Exercise 5.3. Controllability criterion in discrete time (1 point)

Exercise 5.4. Controllability criterion in continuous time (1 point)

Exercise 5.5. Observability criterion (1 point)

Exercise 5.6. Kalman decomposition (1 point)

Exercise 5.7. Resolution of the pole placement equation (1 point)

Exercise 5.8. Output feedback of a scalar system (1 point)

Exercise 5.9. Separation principle (1 point)

Exercise 5.10. Proportional and derivative control of a pump (1 point)

Exercise 5.11. PID control (1 point)

Exercise 5.12. Canonical control form (1 point)

Exercise 5.13. State feedback with integral effect, monovariate case (1 point)

Exercise 5.14. State feedback with integral effect, general case (1 point)

Exercise 5.15. Luenberger observer (1 point)

Exercise 5.16. Demodulator (1 point)

Exercise 5.17. Output feedback of a non-strictly proper system (1 point)

Exercise 5.18. Output feedbock with integral effect (1 point)

Exercise 5.19. Poincaré map (2 points)

Lesson 6. Linearized control


Abstract. In the previous chapter, we have shown how to design controllers for linear systems. However, in practice, the systems are rarely linear. Nevertheless, if their state vector remains localized in a small zone of the state space, the system may be considered linear and the linear techniques can then be used. We will first show how to linearize a non-linear system around a given point of the state space. We will then discuss how to stabilize these non-linear systems.

Exercise 6.1. Linearization of the predator-prey model (1 point)

Exercise 6.2. Water car (1 point)

Exercise 6.3. First order nonlinear system (1 point)

Exercise 6.4. State feedback (1 point)

Exercise 6.5. Control of the segway (2 points)
Start from the files and

Exercise 6.6. Controlling an inverted rod pendulum (2 points)
Start from the file

Exercise 6.7. Linear Quadratic Regulator (1 point)
Start from the file

Exercise 6.8. Autonomous car (2 points)
Start from the file

Exercise 6.9. Follow the car (1 point)

List of the students who got the diploma

Matias Barla
Evandro Bernardes
Jules Lesaulnier
Paul Pineau
Agustin Zorzano
Emmanuel Charron
Jean-Louis Cougnon
Bastien Depeyre
Isabelle Maroger
Steven Wang
Théo Chassanite
Stéphane Yang
Ahmad Hably
Wanchen Li
Dimitri Léca
Ronan Guermeur
Georges Daher
Jose Eduardo Carvajal Rubio
Bernardo Hummes Flores
Camille Apamon
Marwan Johra
Mathilde Roques
Célia Saghour
Sylvain Hernandez
Amine Lagzouli