Difference between revisions of "Robotics"
(→Detailed course schedule) |
|||
(46 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
The following are last-minute news you should be aware of ;-) | The following are last-minute news you should be aware of ;-) | ||
+ | * 23/09/2024: Grades of 04/09/2024 call (with homework) [[Media:Grades_20240904.pdf|here]] | ||
+ | * 05/08/2024: Grades of 11/07/2024 call (with homework) [[Media:Grades_20240711.pdf|here]] | ||
+ | * 07/07/2024: Grades of 12/06/2024 call (with homework) [[Media:Grades_20240612.pdf|here]] | ||
+ | * 06/07/2024: Grades of all Homeworks + "laureandi" 12/06/2024 [[Media:Grades_20240612_HWs.pdf|here]] | ||
+ | * 05/06/2024: Grades for the first homework [[Media:Grades_20240605_HW1.pdf|here]]. | ||
+ | * 02/05/2024: Updated all slides decks up to SLAM. | ||
+ | * 24/04/2024: Updated detailed calendar, check it!! | ||
+ | * 08/03/2024: Updated detailed calendar, check it!! | ||
+ | * 21/02/2024: New course edition starts!! | ||
+ | <!-- | ||
+ | * 21/02/2024: Grades for the 12/02/2024 call with projects [[Media:Grades_20240212.pdf|here]]. | ||
* 21/01/2024: Grades for the 15/01/2024 call with projects [[Media:Grades_20240115.pdf|here]]. | * 21/01/2024: Grades for the 15/01/2024 call with projects [[Media:Grades_20240115.pdf|here]]. | ||
* 01/10/2023: Grades for the 29/08/2023 call with projects [[Media:Grades_20230829.pdf|here]]. | * 01/10/2023: Grades for the 29/08/2023 call with projects [[Media:Grades_20230829.pdf|here]]. | ||
Line 16: | Line 27: | ||
* 22/02/2023: Added today's recording in the detailed schedule | * 22/02/2023: Added today's recording in the detailed schedule | ||
* 22/02/2023: Lectures stat today! | * 22/02/2023: Lectures stat today! | ||
− | |||
* 19/02/2023: All grades of the [[Media:Grades_20230203.pdf|03/02/2023 call]]. | * 19/02/2023: All grades of the [[Media:Grades_20230203.pdf|03/02/2023 call]]. | ||
* 01/02/2023: All grades of the [[Media:Grades_20230112.pdf|12/01/2023 call]]. | * 01/02/2023: All grades of the [[Media:Grades_20230112.pdf|12/01/2023 call]]. | ||
Line 197: | Line 207: | ||
|Date || Day || Time || Room || Teacher || Type || Topic | |Date || Day || Time || Room || Teacher || Type || Topic | ||
|- | |- | ||
− | |21/02/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [Course/Robotics Intro] | + | |21/02/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=7eb66d2babb8e2c90f3153dff4d529ca Course/Robotics Intro] |
|- | |- | ||
− | |22/02/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [Actuators and Sensors] | + | |22/02/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=0e5853d8a07195ab5d6dd0dbd6f2b85f Actuators and Sensors] |
|- | |- | ||
− | |28/02/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [ROS Intro / Install instructions] | + | |28/02/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=e7cb13495a48c3fea52fb8f41f96b593 ROS Intro / Install instructions] |
|- | |- | ||
− | |29/02/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [Sensors] | + | |29/02/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=e8fb513ac12dafa4a58242576356edd2 Sensors and Intro to Kinematics] |
|- | |- | ||
− | |06/03/2024 || Wednesday || 12:15 - 14:15 || | + | |06/03/2024 || Wednesday || 12:15 - 14:15 || -- || -- || No Lecture || -- |
|- | |- | ||
− | |07/03/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [Kinematics] | + | |07/03/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=e8d87f29a7aa3dc35665abb5fb12ac50 Kinematics and Odometry] |
|- | |- | ||
|13/03/2024 || Wednesday || 12:15 - 14:15 || -- || -- || No Lecture || -- | |13/03/2024 || Wednesday || 12:15 - 14:15 || -- || -- || No Lecture || -- | ||
Line 213: | Line 223: | ||
|14/03/2024 || Thursday || 14:15 - 16:15 || -- || -- || No Lecture || -- | |14/03/2024 || Thursday || 14:15 - 16:15 || -- || -- || No Lecture || -- | ||
|- | |- | ||
− | |20/03/2024 || Wednesday || 12:15 - 14:15 || T2.1 || | + | |20/03/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=bfadcc536f154082d3cbbdb18a53ae1d Kinematics] |
|- | |- | ||
− | |21/03/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [ | + | |21/03/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=6591b8b5abe14445e8af700bf4c725a5 Docker /ROS Basics/ tools] |
|- | |- | ||
− | |27/03/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [ | + | |27/03/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=380d49a0066fff8ee7e9011d2b021632 Pub/Sub /launch messages] |
|- | |- | ||
− | |28/03/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [ | + | |28/03/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=9e81fdf3b340bf8a6cffd8a08c264b76 Service and Params/ timers] |
|- | |- | ||
− | |03/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || | + | |03/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=563fbe44a06b6e00c6a58b218149e6cd TF / Rviz / first project] |
|- | |- | ||
− | |04/04/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [Localization and | + | |04/04/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=f5ce972ce2f5e74769bc725ababc8da0 Localization and LIDARs] |
|- | |- | ||
− | |10/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [Localization and | + | |10/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=54235d0afeb417d8abde7d98b25620a7 Localization and Bayes Filters] |
|- | |- | ||
|11/04/2024 || Thursday || 14:15 - 16:15 || -- || -- || No Lecture || -- | |11/04/2024 || Thursday || 14:15 - 16:15 || -- || -- || No Lecture || -- | ||
|- | |- | ||
− | |17/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [Localization and | + | |17/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=b1bbccc508817d1adfdd852137e9f7ba Localization and Kalman Filters] |
|- | |- | ||
− | |18/04/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [ | + | |18/04/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=c5b1a81dee8baeef58adbf93a51848e9 Localization and Particle Filters] |
|- | |- | ||
− | |24/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [Mapping and SLAM] | + | |24/04/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=289b9fb27bd6f8ac3a1f689b51d70a23 Mapping and EKF-SLAM] |
|- | |- | ||
|25/04/2024 || Thursday || 14:15 - 16:15 || -- || -- || No Lecture || -- | |25/04/2024 || Thursday || 14:15 - 16:15 || -- || -- || No Lecture || -- | ||
Line 239: | Line 249: | ||
|01/05/2024 || Wednesday || 12:15 - 14:15 || -- || -- || No Lecture || -- | |01/05/2024 || Wednesday || 12:15 - 14:15 || -- || -- || No Lecture || -- | ||
|- | |- | ||
− | |02/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [ | + | |02/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=4712b5560dd4e0d5cbdc86bfa301064a FastSLAM and Graph-SLAM] |
|- | |- | ||
− | |08/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [Algorithms for Robot Navigation] | + | |08/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=3ede4b0405e20cbd6bfe48cb1c6e7ff9 Algorithms for Robot Navigation] |
|- | |- | ||
− | |09/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || | + | |09/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=ba53e99e14a07c5e2de5707a758df6e0 Message filters /rospy/rosbag] |
|- | |- | ||
− | |15/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [ | + | |15/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/recordingservice/sites/politecnicomilano/recording/2b555960830d45b48f753ae013506d57/playback?from_login=true ROS on Multiple Devices, actions] |
|- | |- | ||
− | |16/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [ | + | |16/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/recordingservice/sites/politecnicomilano/recording/f1ab4d9454814242854f5660abc4c60b/playback?from_login=true Robot Navigation] |
|- | |- | ||
− | |22/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [Robot Navigation] | + | |22/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/recordingservice/sites/politecnicomilano/recording/a2f2053930d4483cb5cf579e8519669a/playback?from_login=true Robot Navigation] |
|- | |- | ||
− | |23/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [ | + | |23/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Simone Mentasti || Laboratory || [https://politecnicomilano.webex.com/recordingservice/sites/politecnicomilano/recording/e88a5f426b1f4187a32a64ac5b361bf3/playback?from_login=true Future of ROS, ROS2, second project] |
|- | |- | ||
− | |29/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || | + | |29/05/2024 || Wednesday || 12:15 - 14:15 || T2.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=f6becd395366d5dd14a03c6717d09d5f Search based planning] |
|- | |- | ||
− | |30/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [ | + | |30/05/2024 || Thursday || 14:15 - 16:15 || 8.0.1 || Matteo Matteucci || Lecture || [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=cb5eb4826ee61baa4cdbe29f539d32e2 Sample based planning] |
|} | |} | ||
<!-- | <!-- | ||
Line 795: | Line 805: | ||
In the course project, you will use [http://www.ros.org/ ROS] to develop a simple autonomous mobile robot performing simple mapping, localization, and navigation task. The project requires some coding either in C++ / Python following what will be presented during the lectures (we suggest using C++ as it will be the language used in class). The project will be presented in two (2) parts you have about one month to do each. Details will follow. | In the course project, you will use [http://www.ros.org/ ROS] to develop a simple autonomous mobile robot performing simple mapping, localization, and navigation task. The project requires some coding either in C++ / Python following what will be presented during the lectures (we suggest using C++ as it will be the language used in class). The project will be presented in two (2) parts you have about one month to do each. Details will follow. | ||
− | |||
We checked and found solutions to use ROS on all operating systems. We provide a recap on how you can install ROS on your machine. Keep in mind that the most user-friendly solution is to have a native ubuntu 20.04-ros Noetic installation. Nevertheless, the other solution should work fine for the course. | We checked and found solutions to use ROS on all operating systems. We provide a recap on how you can install ROS on your machine. Keep in mind that the most user-friendly solution is to have a native ubuntu 20.04-ros Noetic installation. Nevertheless, the other solution should work fine for the course. | ||
+ | The first lab we will give you details on the system setup! | ||
+ | <!-- | ||
=====Linux===== | =====Linux===== | ||
If you have Ubuntu 20.04 simply install ROS Noetic using [http://wiki.ros.org/noetic/Installation/Ubuntu the official guide] | If you have Ubuntu 20.04 simply install ROS Noetic using [http://wiki.ros.org/noetic/Installation/Ubuntu the official guide] | ||
Line 818: | Line 829: | ||
The external SSD option was used by many students last year, and it works fine and allows you to have some more space. The only detail you have to handle properly is where grub will be placed and how the system will boot. [https://www.58bits.com/blog/2020/02/28/how-create-truly-portable-ubuntu-installation-external-usb-hdd-or-ssd Here a guide on how to do it]. The important thing with this is to buy decent disks because if they are too cheap and more similar to USB sticks than disks, they will not work well as a dual boot. | The external SSD option was used by many students last year, and it works fine and allows you to have some more space. The only detail you have to handle properly is where grub will be placed and how the system will boot. [https://www.58bits.com/blog/2020/02/28/how-create-truly-portable-ubuntu-installation-external-usb-hdd-or-ssd Here a guide on how to do it]. The important thing with this is to buy decent disks because if they are too cheap and more similar to USB sticks than disks, they will not work well as a dual boot. | ||
+ | --> | ||
==Teaching Material (the textbook)== | ==Teaching Material (the textbook)== | ||
Line 823: | Line 835: | ||
Lectures will be based on material from different sources, teachers will provide their slides to students as soon they are available. | Lectures will be based on material from different sources, teachers will provide their slides to students as soon they are available. | ||
− | ===Course Slides | + | ===Course Slides 2023/2024=== |
Slides from the lectures by Matteo Matteucci | Slides from the lectures by Matteo Matteucci | ||
− | *[[Media: | + | *[[Media:Robotics_00_2324_Course_Introduction.pdf|[2023/2024] Course Introduction]]: introductory slides of the course with useful information about the course syllabus, grading, and the course logistics. |
− | *[[Media: | + | *[[Media:Robotics_01_2324_Introduction.pdf|[2023/2024] Introduction to Robotics]]: Introduction to Robotics, definitions, examples and SAP cognitive model. |
− | *[[Media: | + | *[[Media:Robotics_02_2324_Sensors_Actuators.pdf |[2023/2024] Sensors and Actuators]]: an overview of most commonly used actuator and sensors in robotics, the DC motor and its characteristics, gears and torque. Sensor classification, common sensors in robotics with pros and cons. |
− | *[[Media: | + | *[[Media:Robotics_03_2324_Odometry.pdf |[2023/2024] Robot Odometry]]: Robot Localization intro, direct and inverse kinematics, robot odometry for different kinematics (differential drive, skid steering, Ackerman, etc.). |
− | *[[Media: | + | *[[Media:Robotics_04_2324_Localization.pdf |[2023/2024] Robot Localization]]: Sensor models, Robot Localization, Bayesian filtering, Kalman Filtering, Monte Carlo Localization. |
− | *[[Media: | + | *[[Media:Robotics_05_2324_SLAM.pdf |[2023/2024] Simultaneous Localization and Mapping]]: Mapping with known poses, scan matching, EKF-SLAM, FAST-SLAM, Graph-SLAM |
** [https://drive.google.com/drive/folders/1JO8AQIWaOYeW11d9rInox0pZPZG-fdfc?usp=sharing At this link] you can find the videos included in the slides about (simulataneous) localization and mapping | ** [https://drive.google.com/drive/folders/1JO8AQIWaOYeW11d9rInox0pZPZG-fdfc?usp=sharing At this link] you can find the videos included in the slides about (simulataneous) localization and mapping | ||
*[[Media:Robotics_06_2223_MotionControl.pdf |[2022/2023] Robot Motion Control]]: Introduction to motion control, Virtual Histogram methods, Dynamic Window Approach, Search-based and Sampling-based planners | *[[Media:Robotics_06_2223_MotionControl.pdf |[2022/2023] Robot Motion Control]]: Introduction to motion control, Virtual Histogram methods, Dynamic Window Approach, Search-based and Sampling-based planners | ||
Line 862: | Line 874: | ||
*[[Media:Robotics_L10_2019_ex.pdf|[2018/2019] Robot Localization]]: useful stuff for the course project ;-) | *[[Media:Robotics_L10_2019_ex.pdf|[2018/2019] Robot Localization]]: useful stuff for the course project ;-) | ||
--> | --> | ||
− | + | <!-- | |
===Year 2020/2021 Recording=== | ===Year 2020/2021 Recording=== | ||
As I registered these due to pandemics, I am making them available. They DO NOT REPLACE THIS YEAR classroom lectures which are to be considered as the official material of this year, but they might be useful to double-check your notes. | As I registered these due to pandemics, I am making them available. They DO NOT REPLACE THIS YEAR classroom lectures which are to be considered as the official material of this year, but they might be useful to double-check your notes. | ||
Line 890: | Line 902: | ||
* 12/05/2021 - Simone Mentasti [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=39ba34fc6ae649f0b308fa5630451297 Robot Navigation] | * 12/05/2021 - Simone Mentasti [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=39ba34fc6ae649f0b308fa5630451297 Robot Navigation] | ||
* 26/05/2021 - Simone Mentasti [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=a5e18e1b729a48c4a373873e0d3ea96d IMU Tools and robot localization] + [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=f0a14f56b26445b0929a7465abb9f8b0 Project Presentation] + [https://drive.google.com/drive/folders/1uMwWmQ50iwrMXTJnpTuJdt5YNmnQkrOV?usp=sharing Project folder] | * 26/05/2021 - Simone Mentasti [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=a5e18e1b729a48c4a373873e0d3ea96d IMU Tools and robot localization] + [https://politecnicomilano.webex.com/politecnicomilano/ldr.php?RCID=f0a14f56b26445b0929a7465abb9f8b0 Project Presentation] + [https://drive.google.com/drive/folders/1uMwWmQ50iwrMXTJnpTuJdt5YNmnQkrOV?usp=sharing Project folder] | ||
+ | --> | ||
===Useful stuff from the web=== | ===Useful stuff from the web=== | ||
Line 942: | Line 955: | ||
*[[Media:Robotics_willy2.zip | [2015/2016] willy2.zip]]: an improved gazebo model for a differential drive with a caster wheel | *[[Media:Robotics_willy2.zip | [2015/2016] willy2.zip]]: an improved gazebo model for a differential drive with a caster wheel | ||
*[[Media:Robotics_diffdrive.zip | [2015/2016] diffdrive.zip]]: a ROS motion control architecture for a diffdrive robot--> | *[[Media:Robotics_diffdrive.zip | [2015/2016] diffdrive.zip]]: a ROS motion control architecture for a diffdrive robot--> | ||
− | + | <!-- | |
===Course Projects=== | ===Course Projects=== | ||
− | |||
==== Homework 2021/2022 ==== | ==== Homework 2021/2022 ==== | ||
− | |||
* The First project con the Robotics class is available [https://polimi365-my.sharepoint.com/:f:/g/personal/10457911_polimi_it/EhsMssV_kDBKkp7gY-xGV3gBNGpBpnyoHPR_Gu5eAMebyw?e=2XCRe5 HERE!], deadline is 29/04/2022! | * The First project con the Robotics class is available [https://polimi365-my.sharepoint.com/:f:/g/personal/10457911_polimi_it/EhsMssV_kDBKkp7gY-xGV3gBNGpBpnyoHPR_Gu5eAMebyw?e=2XCRe5 HERE!], deadline is 29/04/2022! | ||
* The Second project con the Robotics class is available [https://goo.gl/GonArW HERE!], deadline is 26/06/2022! | * The Second project con the Robotics class is available [https://goo.gl/GonArW HERE!], deadline is 26/06/2022! | ||
+ | --> | ||
==Frequently Asked Questions== | ==Frequently Asked Questions== | ||
Line 1,096: | Line 1,108: | ||
* [http://www.ros.org/ ROS]: the Robot Operating System | * [http://www.ros.org/ ROS]: the Robot Operating System | ||
* [http://gazebosim.org/ Gazebo]: the Gazebo robot simulator | * [http://gazebosim.org/ Gazebo]: the Gazebo robot simulator | ||
− | + | <!-- | |
* [http://airlab.elet.polimi.it/index.php/ROS_HOWTO AIRLab ROS Howto]: a gentle introduction to ROS with node template and program examples | * [http://airlab.elet.polimi.it/index.php/ROS_HOWTO AIRLab ROS Howto]: a gentle introduction to ROS with node template and program examples | ||
+ | --> |
Latest revision as of 12:58, 24 September 2024
The following are last-minute news you should be aware of ;-)
* 23/09/2024: Grades of 04/09/2024 call (with homework) here * 05/08/2024: Grades of 11/07/2024 call (with homework) here * 07/07/2024: Grades of 12/06/2024 call (with homework) here * 06/07/2024: Grades of all Homeworks + "laureandi" 12/06/2024 here * 05/06/2024: Grades for the first homework here. * 02/05/2024: Updated all slides decks up to SLAM. * 24/04/2024: Updated detailed calendar, check it!! * 08/03/2024: Updated detailed calendar, check it!! * 21/02/2024: New course edition starts!!
Contents
Course Aim & Organization
This course will introduce basic concepts and techniques used within the field of autonomous mobile robotics. We analyze the fundamental challenges for autonomous intelligent systems when these move on wheels or legs and present the state of the art solutions currently employed in mobile robots and autonomous vehicles with a focus on autonomous navigation, perception, localization, and mapping.
Teachers
The course is composed by a blending of lectures and exercises by the course teacher and a teaching assistant.
- Matteo Matteucci: the course teacher and this is his webex room
- Simone Mentasti: the teaching assistant and this is his webex room
Course Program
Lectures will provide theoretical background and real-world examples. Lectures will be complemented with practical software exercises in simulation and on real data for all the proposed topics and the students will be guided in developing the algorithms to control an autonomous robot.
Among other topics, we will discuss:
- Mobile robots kinematics,
- Sensors and perception,
- Robot localization and map building,
- Simultaneous Localization and Mapping (SLAM),
- Path planning and collision avoidance.
Detailed course schedule
A detailed schedule of the course can be found here; topics are just indicative while days and teachers are correct up to some last-minute change (I will notify you by email). Please note that not all days we have lectures!!
Note: Lecture timetable interpretation
- On Wednesday, in T2.1, starts at 12:30 ends at 14:10
- On Thursday, in 8.0.1, starts at 14:30 ends at 16:10
Date | Day | Time | Room | Teacher | Type | Topic |
21/02/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Course/Robotics Intro |
22/02/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | Actuators and Sensors |
28/02/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Simone Mentasti | Laboratory | ROS Intro / Install instructions |
29/02/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | Sensors and Intro to Kinematics |
06/03/2024 | Wednesday | 12:15 - 14:15 | -- | -- | No Lecture | -- |
07/03/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | Kinematics and Odometry |
13/03/2024 | Wednesday | 12:15 - 14:15 | -- | -- | No Lecture | -- |
14/03/2024 | Thursday | 14:15 - 16:15 | -- | -- | No Lecture | -- |
20/03/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Kinematics |
21/03/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Simone Mentasti | Laboratory | Docker /ROS Basics/ tools |
27/03/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Simone Mentasti | Laboratory | Pub/Sub /launch messages |
28/03/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Simone Mentasti | Laboratory | Service and Params/ timers |
03/04/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Simone Mentasti | Laboratory | TF / Rviz / first project |
04/04/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | Localization and LIDARs |
10/04/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Localization and Bayes Filters |
11/04/2024 | Thursday | 14:15 - 16:15 | -- | -- | No Lecture | -- |
17/04/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Localization and Kalman Filters |
18/04/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | Localization and Particle Filters |
24/04/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Mapping and EKF-SLAM |
25/04/2024 | Thursday | 14:15 - 16:15 | -- | -- | No Lecture | -- |
01/05/2024 | Wednesday | 12:15 - 14:15 | -- | -- | No Lecture | -- |
02/05/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | FastSLAM and Graph-SLAM |
08/05/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Algorithms for Robot Navigation |
09/05/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Simone Mentasti | Laboratory | Message filters /rospy/rosbag |
15/05/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Simone Mentasti | Laboratory | ROS on Multiple Devices, actions |
16/05/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Simone Mentasti | Laboratory | Robot Navigation |
22/05/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Simone Mentasti | Laboratory | Robot Navigation |
23/05/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Simone Mentasti | Laboratory | Future of ROS, ROS2, second project |
29/05/2024 | Wednesday | 12:15 - 14:15 | T2.1 | Matteo Matteucci | Lecture | Search based planning |
30/05/2024 | Thursday | 14:15 - 16:15 | 8.0.1 | Matteo Matteucci | Lecture | Sample based planning |
Course Evaluation
Course evaluation is composed by two parts:
- A written examination covering the whole program graded up to 26/32
- A home project in simulation practicing the topics of the course graded up to 6/32
The final score will sum the grade of the written exam and the grade of the home project.
Course Project (i.e., the two [2] homeworks)
In the course project, you will use ROS to develop a simple autonomous mobile robot performing simple mapping, localization, and navigation task. The project requires some coding either in C++ / Python following what will be presented during the lectures (we suggest using C++ as it will be the language used in class). The project will be presented in two (2) parts you have about one month to do each. Details will follow.
We checked and found solutions to use ROS on all operating systems. We provide a recap on how you can install ROS on your machine. Keep in mind that the most user-friendly solution is to have a native ubuntu 20.04-ros Noetic installation. Nevertheless, the other solution should work fine for the course.
The first lab we will give you details on the system setup!
Teaching Material (the textbook)
Lectures will be based on material from different sources, teachers will provide their slides to students as soon they are available.
Course Slides 2023/2024
Slides from the lectures by Matteo Matteucci
- [2023/2024] Course Introduction: introductory slides of the course with useful information about the course syllabus, grading, and the course logistics.
- [2023/2024] Introduction to Robotics: Introduction to Robotics, definitions, examples and SAP cognitive model.
- [2023/2024] Sensors and Actuators: an overview of most commonly used actuator and sensors in robotics, the DC motor and its characteristics, gears and torque. Sensor classification, common sensors in robotics with pros and cons.
- [2023/2024] Robot Odometry: Robot Localization intro, direct and inverse kinematics, robot odometry for different kinematics (differential drive, skid steering, Ackerman, etc.).
- [2023/2024] Robot Localization: Sensor models, Robot Localization, Bayesian filtering, Kalman Filtering, Monte Carlo Localization.
- [2023/2024] Simultaneous Localization and Mapping: Mapping with known poses, scan matching, EKF-SLAM, FAST-SLAM, Graph-SLAM
- At this link you can find the videos included in the slides about (simulataneous) localization and mapping
- [2022/2023] Robot Motion Control: Introduction to motion control, Virtual Histogram methods, Dynamic Window Approach, Search-based and Sampling-based planners
Slide from the teaching assistant, including code examples and homework descriptions are available in their respective folders
- Last version of slides from the lectures by Simone Mentasti are available HERE!.
Useful stuff from the web
These are videos from the web which might be useful to understand better the material presented in the lectures
- Understanding DC Brushed Motors by Learn Engineering
- Understanding DC Brushless Motors by Learn Engineering
- Understanding DC Stepper Motors by Learn Engineering
This blog post can be useful to better understand the EKF-SLAM idea and implementation
- EKF-SLAM hands-on tutorial by Jihong Ju
If you have problems in installing Linux on your machine you can use a USB drive distro and boot on it instead of your OS. Note: We are testing this guide these days we might have some tips and tricks for it so stay tuned!
- How to install a complete ubuntu on a USB flash drive (need to have the USB drive inserted to boot)
The ROS framework is C++ based, if you want to check some C++ tutorial online you can have a look at
- Simple, basic topics about C++
- A more detailed tutorial about C++
- An even more detailed tutorial on C++ (you can just focus on some particular chapters. In particular, Ch. 11 seems interesting as a detailed overview of Object-Oriented Programming, if you are not familiar with it.)
Useful readings
These are papers which explain some of the topics in the lecture with a higher level of details
- Analysis and experimental kinematics of a skid-steering wheeled robot based on a laser scanner sensor. Wang, Tianmiao, Yao Wu, Jianhong Liang, Chenhao Han, Jiao Chen, and Qiteng Zhao. Sensors 15, no. 5 (2015): 9681-9702.
- Simultaneous localization and mapping with the extended Kalman filter. Joan Sola'.
- FastSLAM: An Efficient Solution to the Simultaneous Localization And Mapping Problem with Unknown Data Association. Sebastian Thrun, Michael Montemerlo, Daphne Koller, Ben Wegbreit, Juan Nieto, and Eduardo Nebot.
- The Dynamic Window Approach to Collision Avoidance. Dieter Fox, Wolfram Burgard, and Sebastian Thrun.
Frequently Asked Questions
Course Structure
What is the biggest difference with the course 093217 ROBOTICS AND DESIGN?
- Robotics and Design is a practical course focused on the development of a robotics application, you will not learn about the theoretical aspects of robotics, but you will build a robot with a purpose which changes every year. I consider the two courses as complimentary.
Exams and Evaluation
Are there any solutions available for the past exams?
- No, if you have doubts or questions, just send me your proposed solution and I will reply tailoring the answer to your current understanding.
Is it important to buy/read the text book to be able to follow the course? I can’t find it in the library, is there any alternative book?
- No, it is not required, as from past experience attending classes and checking the material provided y the teachers is enough. Obviously reading the book will provide much more information..
Homeworks and ROS
In the schedule when it says ROS, are these lectures as well or are they practical work i.e. lab/excercise?
- They are ex-cathedra lectures where you are expected to bring your laptop, it is not mandatory and you can follow the class in a classical passive way, but I suggest to consider it as a lab and take your laptop with you if you can.
Out of all the scheduled activities this semester, approximately how many of these are practical lab/excercise?
- Indeed not all ROS lectures will present coding exercises, I expect half of them will be about coding and the other half more on the technical background you need to understand what you are coding.
Should I install ROS on my laptop/desktop?
- Absolutely yes. This means you need to have linux on your machine, possibly ubuntu 16.04 or 18.04. This can be achieved in different ways, we suggest a native install via dual boot or as main operating system (we do not take any responsibility of something happening to your data or hardware in doing this operation). Other options such as virtual machine or live distro are not as effective as a real install, but they work.
Which editor/IDE should I use for ROS?
- We do not suggest any particular editor for ROS, standard text editors such as nano/gedit/sublime + a terminal are enough. Nevertheless, you can use the environment you prefer for C++ development; some students, in the past, have used Eclipse or Clion. You can also check the list of supported ROS editors or Roboware, the latter has been designed for ROS, but it does not offer any special feature you will miss using standard C/C++ editors.
As I understand the “homework/project” is a group project. Is this correct and how are the groups formed?
- It is not a group project, while it is allowed to do it in groups (up to 3 people). I expect the groups to form naturally in classes. We usually set up a slack group for the project you can organize autonomously. Nevertheless, you can do the project alone as well (but we advise you to do it in groups).
When “Part 1” of the homework/project will start?
- Right after we have finished the first block of lectures about ROS. This should happen around Easter plus/minus a week.
Past Years Useful Material
Here you find material from past editions of the course that you might find useful in preparing the exam.
Past Exams and Sample Questions
Since the 2015/2016 Academic Year the course has changed the teacher and this has changed significantly the program and the exam format as well. For this reason we do not have many past exams to share with you, they will accumulate along the years tho.
- Exam of 17/07/2017
- Exam of 01/07/2017
- Exam of 26/09/2016
- Exam of 05/09/2016
- Exam of 20/07/2016
- Exam of 27/06/2016
Note on 06/07/2022 Exam
This is a short note on the grading of the 06/07/2022 exam. On average has not been different from the others calls except one exercise you might want to know more about, i.e., exercise 1. I take this opportunity to comment on the grading of all exercises so you can get an immediate comment and if there is something missing you can then write to me.
- Exercise 1: the key point here is the use of a "single RGB camera", because of this, we do not have distance measurements and cannot consider the sensor as lidar, sonar, or stereo vision system. Because of this, beam or scan sensor models dedicated to range sensors are not applicable. In this case, you need to use a landmark-based sensor model getting landmarks from the vision system, e.g., a door or a fire extinguisher (examples made multiple times during lectures). As for the localization system any solution which leverages this sensor model is ok, it could be an Extended Kalman Filter, or a Monte Carlo Localization (as the soccer dog example we made in class and you find in the slides), but what is important is to motivate the system on the characteristics of the landmark sensor, not just provide a generic description of a localization algorithm.
- Exercise 2: more or less all exams got the first two points correct, as for the third two options equally correct exist. A) you specify the actuator on the back wheels for forward motion and on the frontal wheels for steering and then you provide the derivation of the Ackerman kinematics; B) you specify that frontal wheels are just caster wheels for support and then you have 2 independent motors on the back deriving then the differential drive kinematics. Partial answers get partial grades. If you are curious the "real" robot is made like B)
- Exercise 3: the decision on the action to choose is based on a scoring function which is different in the cases of 3.1, 3.2, and 3.3. Describing these scoring functions provides full marks, only stating they exist or mixing them up only partial mark, not mentioning these scoring functions zero mark. As for 3.4, the solution is manually (or automatically) tuning the coefficients via trial and errors possibly in simulation.
- Exercise 4: not stating clearly the characteristics of topics, services and actions gives partial credit.
- Exercise 5: most of you got the point, full SLAM requires to estimate the map and the full trajectory. If you want to implement it using an EKF-SLAM algorithm you need to add all the poses to the state of the EKF and estimate jointly the map and the trajectory. This makes the state grow linearly with time and the complexity quadratically with the size of the state ... if you are curios you can check SAM (Smoothing and Mapping) id does exactly this.
- Exercise 6: who has applied A* got full mark, who has just searched for the path and found it by looking at the graph exploring it partially got very low mark. Intermediate marks are give because of incomplete solutions or errors in the execution.
Past Course Project
Here you find past course projects in case you are interested in checking what your colleagues have been pass through before you. In some cases they may have been more lucky in some others you might be the lucky one ... that's life! ;-)
Homework 2020/2021
Here they are the curse homework projects:
- The first course project has been published on 14/04/2021
- The second course project has been published on 26/05/2021
Homework 2019/2020
Here they are the curse homework projects:
- First project deadline 8th of May 2020.
- Second project presentation deadline 5th of July 2020.
Homework 2018/2019
The 2018/2019 course project is divided in two releases. The homework philosophy should be "You have to struggle, but not too much!". Indeed the homework is made to challenge you and make you exercising and learn by doing, nevertheless if you find yourself stuck please write us and we will give you the required hints to continue and complete ... this includes extending the deadline (for all) or allowing you to use python instead of C++ (for selected students).
Advice: Start as soon as possible doing the homework!
Homework
- 2018/2019 Course Project Part 1: due on Wednesday 29/05/2019, this is the first part of the 2018/2019 course project.
- 2018/2019 Course Project Part 2: due on Monday 08/07/2019, this is the second and last part of the 2018/2019 course project.
Homework 2016/2017
The 2016/2017 course project is divided in two releases to provide you something to work on as early as possible during the course. The homework philosophy should be "You have to struggle, but not too much!". Indeed the homework is made to challenge you and make you exercising and learn by doing, nevertheless if you find yourself stuck please write us and we will give you the required hints to continue and complete.
Advice: Start as soon as possible doing the homework!
Homework
- 2016/2017 Course Project Part A v1.1: due on Wednesday 31/05/2017 (6 weeks from now), this is the first part of the 2016/2017 course project.
- 2016/2017 Course Project Part B v1.0: due on Wednesday 28/07/2017 (6 weeks from now), this is the second part of the 2016/2017 course project.
- 2016/2017 Model for Course Project part B v1.0: thi si the gazebo model to be used in exercise 4 in the second part of 2016/2017 course project.
Homework 2015/2016
This year project is divided in steps; each of them is worth some points out of the 5/32 points available for the final mark. You find the project description here, it is complete, it contains parts up to 4, parts 5 is optional, but we suggest to do it anyway since it requires a limited amount of time.:
- 2015/2016 Course Project v1.0
- 2015/2016 Kobra STL files: in case you want to make your simulation look more real here you find the STL files of the Kobra robot in the "Safer" version. Unfortunately the STL files are scaled down with respect to the real robot, so you have to modify those if you want to use.
Additional Resources
If you are interested in a more deep treatment of the topics presented by the teachers you can refer to the following books and papers:
- Probabilistic Robotics by Dieter Fox, Sebastian Thrun, and Wolfram Burgard.
The following are links to online sources which might be useful to complement the material above
- ISO 8373:2012: ISO Standard "Robots and robotic devices -- Vocabulary"
- ROS: the Robot Operating System
- Gazebo: the Gazebo robot simulator