====== B(E)3M33MRS Multi-robot Aerial Systems / Multirobotické Letecké Systémy ======
* Links to [[https://cw.felk.cvut.cz/forum|discussions]], [[https://cw.felk.cvut.cz/brute/|BRUTE]]
* [[https://cw.fel.cvut.cz/wiki/help/common/plagiarism_cheating|Plagiarism and cheating]]
* [[https://fel.cvut.cz/cz/education/rozvrhy-ng/public/html/predmety/66/52/p6652206.html|schedule]]
===== The subject focus =====
The subject aims to provide an overview of the current knowledge in the multi-robotics field, specifically using aerial vehicles. The lectures will briefly introduce the common denominator of today's aerial research: multirotor helicopters. Furthermore, the lecture will span sensors, robot mapping, planning, centralized and decentralized multi-robot group control, and communication.
In the labs, we focus on providing practical experience by implementing common approaches in the field. The students will obtain hands-on experience with
* multirotor UAV control and state estimation,
* centralized robot formation control,
* decentralized robot swarm control.
===== Evaluation =====
The final grade will be based on the ECTS grading scale, is composed of:
* Final exam (maximum 40 points, minimum 20 points to pass the exam),
* Points earned during the practical labs (60 points).
The subject is lab-oriented.
Therefore, there are no midterm tests during the semester.
You need to complete all lab assignments (meeting the minimum requirements for each) to receive a 'zápočet' and be eligible to attend the exam.
===== Lectures: Monday, 09:15-10:45, KN-E112 =====
Lecturers: Martin Saska (MS), Tomáš Báča (TB), Robert Pěnička (RP)
^ Week ^ Date ^ Topic ^ Materials ^
| 1 | Sep, 22 (MS) | Autonomous aerial system, architectures, and taxonomies (sensors, actuators, applications; fixed wing, multirotor, VTOL - convertibles, ...) | [[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/lectures/lecture_01.pdf|lecture_01]] |
| 2 | Sep, 29 (TB) | Multirotor helicopter dynamics model and control | [[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/lectures/lecture_02.pdf|lecture_02]] [[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/lectures/lecture_02_notes.pdf|lecture_02_notes]] |
| 3 | Oct, 06 (TB) | Multirotor helicopter state estimation and localization | {{ :courses:mrs:lectures:lecture_03.pdf |}} {{ :courses:mrs:lectures:lecture_03_notes.pdf |}} |
| 4 | Oct, 13 (RP) | Single-robot aerial robot mapping and planning | [[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/lectures/lecture_04.pdf|lecture_04]] |
| 5 | Oct, 20 (RP) | Multi-robot planning, mapping, and exploration | |
| 6 | Oct, 27 (MS) | Multi-robot architectures and taxonomies (centralized, decentralized, and distributed…) | |
| 7 | Nov, 03 (MS) | Formation control | |
| 8 | Nov, 10 (MS) | Behavior-based systems (swarm robotics, bio-inspired flocking algorithms) | |
| | Nov, 17 | National holiday | |
| 9 | Nov, 24 (MS) | Cooperative localization of team members (nearby robots) | |
| 10 | Dec, 01 (MS) | Communication architectures and communication issues in reactive multi-robot systems | |
| 11 | Dec, 08 (TB) | Transportation and manipulation by aerial robots | |
| 12 | Dec, 15 (RP) | Task assignment and collective decision-making | |
| 13 | Jan, 05 (RP) | Learning for aerial robots - Learning to coordinate | |
| 14 | --not-given-- | | |
===== Labs: Wednesday =====
* labs overseer: Tomáš Báča
* labs tutors: Michal Werner, Martin Jiroušek
* labs attendance: voluntary
During the labs, students will focus on the practical use and implementation of control and estimation algorithms for mobile robots and their groups. The class will utilize a dedicated software container system to provide students with development and simulation environments. We strive to shield students as much as possible from unnecessary technical overhead. The prerequisites for working on the lab tasks are the following:
* basic knowledge of operating within Linux terminal (moving within folders, executing scripts),
* basic knowledge of ''C++'' programming (being able to orient yourselves in an existing code skeleton),
* basic knowledge of ''git'' (to be able to backup up and version your code).
All the lab work will be conducted by working on a standalone C++ program, using libraries limited to the //standard libraries// and the //Eigen// algebraic library.
==== Using a personal laptop ====
Using a personal laptop is encouraged. The requirements for running the tasks are the following:
* natively installed Linux (it does not matter which one),
* at least 4 GB of RAM,
* at least a 4-core CPU,
* 5 GB of disk space.
However, the development and simulation environment will be available on the computers in the lab for those who don't have the option to run Linux.
==== Troubleshooting ====
== GUI Issues ==
If the GUI of the simulator does not appear, the issue is likely related to the display server. You can resolve this in two ways:
- **Ensure You’re Using the Xorg Display Server**
* If you’re using the Wayland display server (the default in Ubuntu 24.04 LTS), switch to Xorg. You can do this at the login screen by selecting Xorg before logging in. This should resolve the issue in most cases.
- **Use xhost to Grant Display Access**
*Run the following command to allow processes under your username (including Singularity) to access the display server:
*xhost +si:localuser:$(whoami)
This method is less secure. It grants all processes under your username access to the display server, which could be exploited by malicious software. To minimize risk, remember to revoke this access once you’ve finished using Singularity by running:
xhost -si:localuser:$(whoami)
== .Xauthority error ==
If you encounter the following error when running task_01_controller/simulation/compile.sh (or any other script):
realpath: /$HOME/.Xauthority: No such file or directory
./singularity.sh: "SOURCE[$i/2]=$( realpath -e "${MOUNTS[$i]}" )" command failed with exit code 1
you can resolve it by creating the missing file with:
touch ~/.Xauthority
After running this command, the error should disappear and the script will work as expected.
== Gazebo Simulation is too computationally intensive ==
You can turn off the Gazebo GUI. How to do that?
* Open file **/simulation/tmux/session.yaml** and set GUI=false on line 4: pre_window: export GUI=false; export realtime_factor=1.0; export uav_name=uav1; export run_type=simulation; export uav_type=t650; export world_name=simulation; export sensors=""; export odometry_type="gps"; export debug=false
==== Using the lab's computer ====
The lab's computers are available for in-person and **remote use**.
Follow this [[courses:mrs:tutorials:start|link to learn how to connect to the lab remotely]].
==== Labs: Wednesday, 11:00-12:30, 12:45-14:15, KN:E-230 ====
^ Week ^ Date ^ Topic ^ Deadlines ^ Materials ^
| 1 | Sep, 24 | Introduction, preparing software environment | |[[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/tutorials/lab_01_slides_2526.pdf|slides]],[[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/tutorials/task_01_controller_2526.tar.gz|task_01_controller.tar.gz]],[[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/tutorials/task_01_controller.pdf|task_01_controller.pdf]] |
| 2 | Oct, 01 | Introduction to task 01 (Control), Feedback and feedforward UAV Control | | [[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/tutorials/eigen-doc.zip|Eigen documentation]] |
| 3 | Oct, 08 | Linear Kalman Filter | | [[https://cw.fel.cvut.cz/wiki/_media/courses/mrs/tutorials/lab_03_slides.pdf|slides]] |
| 4 | Oct, 15 | Work on task 01 | | |
| 5 | Oct, 22 | Introduction to task 02 (Formation) | Task 01 (Oct 22, 8pm) | |
| 6 | Oct, 29 | Prioritized multi-robot planning | | |
| 7 | Nov, 05 | Ranging multi-lateration | | |
| 8 | Nov, 12 | Work on task 02 | | |
| 9 | Nov, 19 | Introduction to task 03 (Swarm) | Task 02 (Nov 19, 8pm) | |
| 10 | Nov, 26 | Multi-robot consensus | | |
| 11 | Dec, 03 | Aerial Swarming | | |
| 12 | Dec, 10 | ORCA, Consultations + work on task 03 | | |
| 13 | Dec, 17 | Task assignment (Hungarian algorithm), Work on task 03 | | [[https://www.hungarianalgorithm.com/solve.php|online solver]] |
| 14 | Jan, 07 | Recap, Work on task 03 | Task 03 (Jan 12, 8pm) | |
==== Lab Tasks ====
Students will work **individually** on three lab assignments.
The assignments will be evaluated automatically using the BRUTE system.
The final point counts will be confirmed manually.
Each task will earn students a //base// score when the minimum requirements are met.
Some tasks will earn additional points based on the solution's performance.
^ Task ^ Base points ^ Bonus points ^
| 1 | 10 | 0 |
| 2 | 10 | 15 |
| 3 | 10 | 15 |
==== Final evaluation ====
The total amount of points is the summation of
* The points from the semester (maximum 60 points)
* The points from the exam (minimum 20 points to pass, maximum 40 points).
^ Points ^ [0,50) ^ [50,60) ^ [60,70) ^ [70,80) ^ [80,90) ^ [90,100] ^
| Mark | F | E | D | C | B | A |
==== Late submissions ====
Late submissions will be penalized by 2 points per each week of submission after the deadline.
===== Contacts =====
Lectures:
* [[http://mrs.felk.cvut.cz/people/martin-saska|Doc. Ing. Martin Saska, Ph.D.]], martin.saska@fel.cvut.cz (Guarantee)
* [[http://mrs.felk.cvut.cz/people/tomas-baca|Ing. Tomáš Báča, Ph.D.]], tomas.baca@fel.cvut.cz
* [[http://mrs.felk.cvut.cz/people/robert-penicka|Ing. Robert Pěnička, Ph.D.]], robert.penicka@fel.cvut.cz
Labs:
* [[http://mrs.felk.cvut.cz/people/tomas-baca|Ing. Tomáš Báča, Ph.D.]], tomas.baca@fel.cvut.cz, KN-E224 (Guarantee)
* [[https://mrs.fel.cvut.cz/members/phdstudents/michal-werner|Ing. Michal Werner]], wernemic@fel.cvut.cz, KN-E224
* [[https://mrs.fel.cvut.cz/members/phdstudents/martin-jirousek|Ing. Martin Jiroušek]], jirouma5@fel.cvut.cz, KN-E123