Učni načrt predmeta

Predmet:
Razvoj in programiranje robotskih aplikacij
Course:
Developing and Programming Robot Applications
Študijski program in stopnja /
Study programme and level
Študijska smer /
Study field
Letnik /
Academic year
Semester /
Semester
Informacijske in komunikacijske tehnologije, 3. stopnja / 1 1
Information and Communication Technologies, 3rd cycle / 1 1
Vrsta predmeta / Course type
Izbirni / Elective
Univerzitetna koda predmeta / University course code:
IKT3-943
Predavanja
Lectures
Seminar
Seminar
Vaje
Tutorial
Klinične vaje
work
Druge oblike
študija
Samost. delo
Individ. work
ECTS
15 35 15 85 5

*Navedena porazdelitev ur velja, če je vpisanih vsaj 15 študentov. Drugače se obseg izvedbe kontaktnih ur sorazmerno zmanjša in prenese v samostojno delo. / This distribution of hours is valid if at least 15 students are enrolled. Otherwise the contact hours are linearly reduced and transfered to individual work.

Nosilec predmeta / Course leader:
izr. prof. dr. Andrej Gams
Sodelavci / Lecturers:
Jeziki / Languages:
Predavanja / Lectures:
slovenščina, angleščina
Vaje / Tutorial:
Pogoji za vključitev v delo oz. za opravljanje študijskih obveznosti:
Prerequisites:

Zaključena druga stopnja bolonjskega študija ali diploma univerzitetnega študijskega programa. Pri tem predmetu je potrebno predznanje programiranja ter osnov robotike.
Priporočeni predmeti: - humanoidna in servisna robotika - robotski vid

Completed Bologna second cycle study program or an equivalent pre-Bologna university study program. This course requires knowledge of computer programming and basics of robotics. Recommended courses: - Intelligent robot control - Robot vision

Vsebina:
Content (Syllabus outline):

- Programske paradigme v robotiki: komponentna in modularna programska arhitektura, ločitev zaznavanja okolice, načrtovanja, vodenja in izvajanja robotskih gibov. - Komunikacija v porazdeljenih sistemih: komunikacijski modeli, sinhronizacija, časovne zahteve, zanesljivost in robustnost. - Ponovljivost, eksperimentiranje in raziskovalna metodologija: zasnova eksperimentov, različice eksperimentalnih nastavitev ter dobre prakse za vrednotenje robotskih eksperimentov. - Osnove razvojnega okolja: osnovna orodja Linuxove ukazne vrstice, datotečni sistem, dovoljenja, upravljanje paketov, sistemi za nadzor različic.
- Uvod v Robotski operacijski sistem (ROS): vmesna programska oprema (middleware) za porazdeljene robotske sisteme ter ekosistem knjižnic, orodij in konvencij, ki standardizirajo razvoj robotskih aplikacij in dostop do strojne opreme. - Namestitev sistema ROS 2: upravljanje delovnega prostora in paketov, orodja za prevajanje, prevajanje in zaganjanje enostavnih vozlišč. - Osrednji koncepti in komunikacija v ROS-u: porazdeljeni sistem je predstavljen kot graf vozlišč, kjer so vozlišča neodvisni procesi, ki komunicirajo prek tem (pretakanje podatkov prek pošiljanja in prejamanja sporočil), storitev (mehanizem zahteva–odziv) ali akcij (dlje časa trajajoča opravila s sprotnimi povratnimi informacijami in potrditvijo končnega rezultata). - Delo z ROS: uporaba zagonskih datotek, parametrov, beleženje dnevnikov, orodja za spremljanje in analizo stanja sistema. - Simulacija z ROS: simulator Gazebo, opis robotov v formatu URDF, opis simulacijskih okolij v formatu SDF. - Uvod v tehnologijo vsebnikov: osnove Dockerja (slike, vsebniki, nosilci, omrežje), ključni ukazi in dobre prakse za namestitev aplikacij. - Zaganjanje in testiranje ROS aplikacij v vsebnikih. - Povezovanje in krmiljenje perifernih naprav, npr. prek vozlišč na platformi Raspberry Pi. - Zaključni projekt: študenti implementirajo manjšo aplikacijo v ROS.

- Programming paradigms in robotics: component-based and modular software architectures, separation of perception, planning, control and execution of robot movements. - Communication in distributed systems: communication models, synchronization, timing considerations, reliability, and robustness. - Reproducibility, experimentation, and research methodology: experiment design, experiment setup versioning, and best practices for evaluating robotic experiments. - Development environment basics: basic Linux command-line tools, file system, permissions, package management, version control software.
- Introduction to the Robot Operating System (ROS): middleware for distributed robotic systems and ecosystem of libraries, tools, and conventions that standardize robotic application development and hardware access. - Installing ROS 2: workspace management and package setup, build tools, compiling and running simple nodes. - Core concepts and communication in ROS: a distributed system is represented as a graph of nodes, which are independent processes, that can communicate via topics (data streaming via the publisher-subscriber pattern), services (request-response pattern), or actions (long-running goals using a request-feedback-result cycle). - Working with ROS: launch files, parameters, logging, system state introspection tools. - Simulation with ROS: Gazebo simulator, robot models (URDF), simulation environments (SDF) - Introduction to containerization: basics of Docker (images, containers, volumes, networking), key commands and best practices for deployment. - Running and testing ROS applications in containerized environments. - Interfacing and controlling of peripheral devices, i.e., through Raspberry Pi-based nodes. - Final project: Students implement a small ROS application.

Temeljna literatura in viri / Readings:

Knjige/Books:
- The Linux Command Line, William Shots, https://linuxcommand.org/tlcl.php
- A Concise Introduction to Robot Programming with ROS 2, Francisco Martín Rico, 2023, CRC Press.; Source code: https://github.com/fmrico/book_ros2
- Using Docker, Adrian Mouat, https://www.oreilly.com/library/view/using-docker/9781491915752/
Članki/Papers:
- S. Macenski, T. Foote, B. Gerkey, C. Lalancette, W. Woodall, “Robot Operating System 2: Design, architecture, and uses in the wild,” Science Robotics vol. 7, May 2022.
- Simonič M, Pahič R, Gašpar T, Abdolshah S, Haddadin S, Catalano M G, Wörgötter F, Ude A; Modular ROS-based software architecture for reconfigurable, Industry 4.0 compatible robotic workcells Proceedings Article; 20th International Conference on Advanced Robotics (ICAR), pp. 44-51, IEEE Ljubljana, Slovenia, 2021.
Web resources:
- The Missing Semester of Your CS Education, https://missing.csail.mit.edu/
- ROS 2 Documentation: https://docs.ros.org/en/humble/index.html
- Gazebo tutorials: https://gazebosim.org/docs/fortress/tutorials
- ROS 2 on Raspberry Pi; https://docs.ros.org/en/rolling/How-To-Guides/Installing-on-Raspberry-Pi.html

Cilji in kompetence:
Objectives and competences:

Ta predmet zagotavlja teoretične osnove ter temeljno in praktično znanje za razvoj robotskih aplikacij z uporabo ROS 2. Udeleženci se bodo naučili osnov Linuxa, pomembnih za razvoj aplikacij v robotiki, osvojili ključne koncepte ROS 2 (vozlišča, sporočanje, storitve) ter se naučili uporabljati tehnologijo vsebnikov za gradnjo, nameščanje in upravljanje ponovljivih okolij za razvoj in distribucijo ROS 2 aplikacij. Ob zaključku predmeta bodo študenti sposobni razvijati, zaganjati in upravljati robotske aplikacije, temelječe na ROS 2, tako na lokalnih računalnikih kot v vsebnikih.

This course provides theoretical background and foundational and practical knowledge for developing robotic applications using ROS 2. Participants will learn Linux basics relevant to robotics development, master ROS 2 core concepts (nodes, messaging, services), and learn how to use containers to build, deploy and manage reproducible ROS 2 environments for development and distribution. By the end of the course, students will be able to build, run, and manage ROS 2-based robotics applications both on local machines and in containers.

Predvideni študijski rezultati:
Intendeded learning outcomes:

Študent-ka z uspešno opravljenimi obveznostmi tega predmeta bo sposoben-na:
- razumeti arhitekture in arhitekturne kompromise programske opreme ter načrtovati nove ali raziskovalno usmerjene arhitekture robotske programske opreme;
- razumeti časovne omejitve, da lahko presodi primernost za napredne pristope vodenja in z njimi povezane varnostne vidike (npr. pri sodelovanju človek–robot);
- razumeti, kako infrastrukturne izbire vplivajo na znanstveno veljavnost in ponovljivost raziskav;
- uporabljati orodja Linuxove ukazne vrstice za razvoj in upravljanje sistema;
- razumeti arhitekturo ROS 2: vozlišča, teme, storitve, akcije in zagonske mehanizme;
- vzpostaviti in upravljati delovne prostore in pakete ROS 2 ter prevajati in zaganjati vozlišča;
- uporabljati vsebnike za aplikacije ROS 2 ter zanesljivo upravljati odvisnosti med različnimi okolji;
- namestiti aplikacije ROS 2 znotraj kontejnerjev in upravljati pravice za dostop do strojne opreme;
- razhroščevati in testirati aplikacije ROS 2.

Student successfully completing this course will be able to:
- Reason about architectures and architectural trade-offs and design novel or research-oriented robotic software architectures.
- Understand timing constraints in order to evaluate suitability for advanced control and implied safety issues (e.g. for human–robot collaboration).
- Understand how infrastructure choices affect scientific validity and replicability.
- Use Linux command-line tools confidently for development and system management.
- Understand the architecture of ROS 2: nodes, topics, services, actions, launch mechanisms.
- Build and manage ROS 2 workspaces, packages, and compile/launch nodes.
- Use container environments ROS 2 applications and manage dependencies reliably across environments.
- Deploy ROS 2 applications inside containers and set appropriate hardware access rights.
- Debug and test ROS 2 applications.

Metode poučevanja in učenja:
Learning and teaching methods:

- kombinacija teoretičnih predstavitev, demonstracij v živo ter praktičnih laboratorijskih vaj;
- praktične vaje in mini projekti;
- zaključni projekt.

- Mix of theoretical tutorials, live demonstrations, and practical/lab-based sessions.
- Hands-on exercises and mini-projects - Final Project

Načini ocenjevanja:
Delež v % / Weight in %
Assesment:
Vaje
25 %
Exercises/assignments
Projektne laboratorijsje vaje
25 %
Mini-projects
Seminarska naloga
50 %
Final project
Reference nosilca / Lecturer's references:
1. JAQUIER, Noemie, WELLE, Michael C., GAMS, Andrej, YAO, Kunpeng, FICHERA, Bernardo, BILLARD, Aude, UDE, Aleš, ASFOUR, Tamim, KRAGIČ, Danica. Transfer learning in robotics : An upcoming breakthrough? A review of promises and challenges. The international journal of robotics research. [Print ed.]. 2025, vol. 44, iss. 3, str. 465-485. ISSN 0278-3649. DOI: 10.1177/02783649241273565.
2. SIMONIČ, Mihael, UDE, Aleš, NEMEC, Bojan. Hierarchical learning of robotic contact policies. Robotics and computer-integrated manufacturing. Apr. 2024, vol. 86, [article no.] 102657, 1-12 str., ilustr. ISSN 1879-2537. https://www.sciencedirect.com/science/article/pii/S0736584523001321, DOI: 10.1016/j.rcim.2023.102657
3. GAMS, Andrej, PETRIČ, Tadej, NEMEC, Bojan, UDE, Aleš. Manipulation learning on humanoid robots. Current robotics reports. 2022, vol. 3, str. 97-109. ISSN 2662-4087. DOI: 10.1007/s43154-022-00082-9.
4. UDE, Aleš, SIMONIČ, Mihael, KUSTER, Boris, MAVSAR, Matija, BEM, Martin, WÖRGÖTTER, Florentin, et al. The challenges of using robots to automate the recycling of electronic devices : a new approach incorporating ai, modularity, and soft robotics. IEEE robotics & automation magazine. <in press> 2025, vol. , iss. , 1-15 str. ISSN 1070-9932. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=11220802, DOI: 10.1109/MRA.2025.3619331
5. LONČAREVIĆ, Zvezdan, GAMS, Andrej, REBERŠEK, Simon, NEMEC, Bojan, ŠKRABAR, Jure, SKVARČ, Jure, UDE, Aleš. Specifying and optimizing robotic motion for visual quality inspection. Robotics and computer-integrated manufacturing. 2021, vol. 72, str. 102200-102200-14. ISSN 0736-5845. DOI: 10.1016/j.rcim.2021.102200