STATE ESTIMATION AND FILTERING

Academic Year 2025-2026


This is the second module (6 cfu) of the System Identification and Data Analysis course, for the Master of Science in Artificial Intelligence and Automation Engineering (Curriculum Robotics and Automation)


Instructor

Andrea Garulli

Office hours: Thursday at 11.00, upon request via e-mail (Torre Rossa, room r202)


News

The lecture on March 17th will not be held.


How the course works: things you must know about the course organization

Prerequisites

It is assumed students are familiar with:
- Linear algebra and calculus
- Basics of probability theory, random variables, stochastic processes
- Basics of dynamic systems theory: input-output and state space representations; transfer function; Z-transform (discrete-time systems)
- A programming language (Matlab, Python)

How to pass the exam

The exam is organized in two steps:
a) a project work concerning the solution of a state estimation problem arising in a specific application domain;
b) an oral exam involving the discussion of the project work and questions about all the topics treated during the course (yes, we mean all!).

How to do the project

The project can be done individually or in small groups.
A project report explaining the adopted methodologies and the obtained results in a well-documented and concise fashion is required. Such report must be written in LaTeX (a LaTeX tutorial is available here).
A LaTeX template for the project report is provided here.
Additional information will be provided during the course.

Golden rules

Rule 1: The right time to do the exam is at the end of the course, during the summer exam session. You are strongly encouraged to do that!
Rule 2: In case you need to do the exam in subsequent sessions, you have to deliver the project report at least 7 days before the date of the oral exam. Ask for the project well in advance.
Rule 3: Do the project by yourself and report them carefully. During the oral exam you will have to explain and motivate the methods and tools adopted within the project.
Rule 4: Ask questions! (both in classes and in office hours).


Bibliography


Course Notes

The Course Notes are a summary of the topics treated in the course. They have to be intended as a work in progress: please send an email to the instructor if you find errors or typos. Thanks!


Contents and materials

1 Bayesian Estimation. Basics of multivariate distributions and stochastic processes. Bayesian estimation. Minimum mean square error estimators. Linear estimators.
Ref.: [Soderstrom, 5.1-5.3].
Homework: Homework_Bayesian_Estimation;   Solution (matlab).
Materials: Solution_Ex1_1.m.

2. State estimation for linear systems. Non stationary stochastic systems. The state estimation problem and the Kalman filter. Asymptotic properties of the Kalman filter.
Ref.: [Soderstrom, 3.3; 4.2; 6.1-6.3; 6.7]
Lab session: Lab_session_Kalman_Filter;   data_kf_dcmotor.npz;   data_kf_dcmotor.mat;   solution (python);   solution (matlab).
Homework: Homework_Kalman_Filter;   data_kf_cattle.mat;   solution (python);   solution (matlab).

3. State estimation for nonlinear systems. State estimation in nonlinear stochastic systems. The Extended Kalman Filter. Advanced nonlinear filtering techniques: unscented filter; sequential Monte Carlo methods.
Ref.: [Soderstrom, 9.1-9.5].
Lab session: Lab_session_Nonlinear_State_Estimation;   data1_ekf_mr.npz;   data2_ekf_mr.npz;   data1_ekf_mr.mat;   data2_ekf_mr.mat;   solution (python);   solution (matlab).

4. Project work 2026.
Project work notes   Part A - April 29, 2026.
Project work notes   Part B - May 6, 2026.
Project work notes   Part C - May 13, 2026.

Data files:
data_point_land_1.npz    data_point_land_2.npz
data_sim_lidar_1.npz    data_sim_lidar_2.npz

Supporting functions:
plotellipse.py
PlotMapSN.py (plots San Niccolò map)



Please report errors or problems to:   andrea.garulli  at  unisi.it
Thanks!