Automation MOOC, Linear Control with a State Space approach
Open : 1 april 2020
Closed : 31 june 2020
Luc Jaulin

Lab-STICC UBO GDR MACS GDR Robotique ENSTA Bretagne DGA ROBEX Sperob Gth Rob

  1. Introduction
  2. Acces to Moodle (post your work)
  3. Lessons and Videos
  4. Other MOOCs
  5. 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).


The registration is not mandatory to follow the MOOC and to see the videos. But it is 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 AutoMOOC, you should have some basic notions in Python and some knowledges 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.


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 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 :


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

Python online

For simplicity, you may want to use Python online.
See the video for help :
If you want to test, download in your computer the file :
Use PyGame (Python online) :

Upload the file in Pygame

Copy-paste the following lines in the program window. Run.

from autolib import * 
def f(x,u):
    return array([[cos(x3)],[sin(x3)],[u]])
for t in arange(0,10,dt):

If you want me to test your program quikly, you can share your program :


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

Lessons and videos

Lesson 1. Introduction

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)
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 point)

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 point)
Start from the files and
Exercise 6.6. Controlling an inverted rod pendulum (2 point)
Start from the file
Exercise 6.7. Linear Quadratic Regulator (1 point)
Start from the file
Exercise 6.8. Autonomous car (2 point)
Start from the file
Exercise 6.9. Follow the car (1 point)

List of the students who got the diploma

18 in 2020

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