You can find the Google Classroom invite link here. Please join our Classroom! It will be used to keep track of your midterms and exam results!
The course is planned to start on the week of September 22 2025
This course aims at providing the students with skills to develop robotic software that is not covered directly in other courses.
We assume the students are familiar with structured programming languages, as we will focus on fundamental tools when it comes to develop fast, energy efficient and robust robotic software. In this edition of the course we will operate exclusively on the Linux operating system.
We will introduce:
C++, a fundamental language that is behind the core aspects of real-time and on-line software and firmware
ROS, an operating environment for supporting the development of robotic modules. ROS is the de-facto standard when it comes to robotic middlewares.
Concepts of Mobile Robot Navigation
The course is organized in frontal lessons and programming exercises.
B115 - DIAG
B120 - DIAG
B120 - DIAG
IMPORTANT: For the communication concerning the course write an email to all teachers adding [RP] at the beginning of the email subject. Not doing so decreases the priority of the email.
A reasonable knowledge of the C programming language, Calculus, and Linear Algebra.
We recommend a native installation of a Linux distro (recommend: Ubuntu 24.04 LTS). As an alternative, you can use a less efficient virtual machine.
If you are using Windows, please set up a Linux environment using WSL
If you are using a MacBook (osx-arm64), you should be okay.
Please contact the tutor Emanuele Giacomini if you face any compatibility problems.
The test consists of two parts:
Either
a ROS/C++ project to be assigned at the end of the course
OR
2 out of 3 homeworks that will be assigned during the lessons (still ROS/C++)
a questionnaire on the topics of the course. The questionnaire is designed to be easy for those that followed the lessons and developed the project autonomously. We will provide examples at the end of the lessons. THE QUESTIONNAIRE HAS TO BE TAKEN AFTER THE PROJECT/HOMEWORK HAS BEEN DELIVERED.
The project/homeworks will be evaluated by
Checking the correctness of the result
Inspecting the git history of the development
Asking questions about specific parts of the developed code
Cases of plagiarism, copy and improper use of AI tools will be resolved by invalidating the project and assigning a new one. When we suspect such situations we will ask the student to perform a (simple) live modification of the his/her project done. Failure in being able to satisfy our request will be interpreted as an evidence of improper behavior and addressed accordingly.
TBD
The lessons are preferrably attended in presence. To help students that are prevented to partecipate to the class, will provide recordings on youtube, and link then in the lesson's page.
Wednesday 11:00-13:00
Thursday 10:00-13:00
Viale Regina Elena 295, room 201
Viale Regina Elena 295, room 201
On Programming languages
compilers/interpreters/virtual machines
build systems (cmake)
C++
Basics and syntax
Classes
Metaprogramming
Concrete Cases
ROS
Basics and build system
ROS-Robot Setup
ROS-Navigation
Extras: c++ Course By Igor
We remind that the knowledge of C++ is not mandatory for the exam. Still, we believe that this programming skill might be useful for your career in Robotics.