====== B3B33LAR - Cvičení ====== Cvičí: Pavel Krsek, Libor Wagner, Vladimír Petrík **[[https://cw.felk.cvut.cz/brute/|Odevzdávací systém]]** **Přímé odkazy** * Návod pro práci s robotem [[https://gitlab.fel.cvut.cz/robolab/lar/-/blob/master/README.md]] * Návod pro programování robota [[https://gitlab.fel.cvut.cz/robolab/robolab_turtlebot]] * {{:courses:b3b33lar:krsek_lar23_cs.pdf | P.Krsek: Metody zpracování dat z RGB kamery. Prezentace 3. cvičení (2023) }} * {{ :courses:b3b33lar:petrik_lar23_depth_en.pdf | V. Petrík: Odhadování hloubky. Prezentace 4. cvičení (2023) }} [[https://github.com/CTURobotics/lar_ransac_example | RANSAC Python]] * {{ :courses:b3b33lar:krsek_lar23_zpravy_cs.pdf | P.Krsek: Obsah technické zprávy. Prezentace 5. cvičení (2023)}} * {{ :courses:b3b33lar:konicek_lar23_jak_programovat_v_pythonu.pdf | D.Koníček: Jak programovat v Pythonu. Prezentace 6. a 7. cvičení (2023)}} * **Závěr:** {{ :courses:b3b33lar:krsek_lar23_zaver_cs.pdf | P.Krsek: Záverecné cvicení}} ===== Forma cvičení ===== Cvičení je vedeno formou samostatné práce na zadaném úkolu. Studenti utvoří maximálně 3 členné týmy. V těchto týmech řeší samostatně zadaný úkol. Na začátku semestru jsou studenti seznámeni s programovým vybavením a technickými prostředky. Dále jsou představeny některé algoritmy pro zpracování dat ze senzorů, které je možné použít k řešení zadané úlohy. Přibližně v polovině semestru studenti předvedou vyučujícímu svoje stávající řešení. Na konci semestru studenti předvedou výsledné řešení, odevzdají program a technickou zprávu popisující toto řešení a formou krátké prezentace představí své řešení kolegům na cvičení v zápočtovém týdnu. Cvičení obvykle probíhá na robotech TurtleBot v laboratoři KN:E-130. Práce na robotech je možná v době cvičení a ve stanovené době, kdy je robotická laboratoř přístupná. ===== Bodování ===== Vaše práce (řešení) budou bodovány s ohledem na obtížnost úlohy, včasnost a funkčnost řešení. Celkem můžete získat maximálně 100 bodů. Body získáváte za plnění jednotlivých částí úlohy v tomto maximálním počtu: * Předvedení stávajícího řešení na příslušném cvičení - maximálně 10 bodů. * Technická zpráva je hodnocena cvičícím při konzultaci - maximálně 15 bodů. * Funkčnost řešení v závislosti na obtížnosti úlohy - maximálně 40, 55, nebo 70 bodů. * Prezentace řešení na cvičení v zápočtovém týdnu - maximálně 5 bodů. Za pozdní odevzdání bude bodové hodnocení sníženo. Toto snížení je uvedeno v odevzdávacím systému. Při nadprůměrném řešení můžete získat v některých případech i více než uvedený počet bodů. ===== Podmínky zápočtu ===== * Byla odevzdána technická zpráva popisující řešení zadané úlohy. * Cvičící s Vámi prodiskutoval a schválil Vaši zprávu. * Bylo odevzdáno a předvedeno funkční řešení úlohy, které odpovídá zadání a popisu ve zprávě. * Získali jste minimálně 50 bodů. Známka bude udělena dle počtu dosažených bodů obvyklým způsobem. ===== Časový plán cvičení ===== ^ č.t. ^ datum ^ náplň ^ | 1 | 22. a 23.2. | Úvod, organizace, zadání úlohy. | | 2 | 1. a 2.3. | Seznámení s programovým vybavením (ROS, Simulátor, rozhraní v Python). | | 3 | 8. a 9.3. | Kamera, obraz a jeho zpracování (barevný prostor, segmentace). | | 4 | 15. a 16.3. | Model kamery a 3D data (projekce, algoritmus RANSAC, transformace RGB / 3D). | | 5 | 22. a 23.3. | Technická zpráva a její obsah (kratší prezentace a dotazy). | | 6 | 29. a 30.3. | Jak programovat, čitelný a čistý kód. | | 7 | 5.4. a 6.4. | Jak programovat, struktura souboru, moduly a nástroje. \\ **Předvedení stávajícího řešení** cvičícímu. | | 8 - 13 | 12.4. - 18.5. | //Samostatné řešení úlohy a konzultace.// | | | 21. 5. 2023 | **Termín odevzdání úlohy** | | 14 | 24. a 25.5. | **Předvedení řešení úlohy**, udělení zápočtu - konec semestru | ===== Zadání úlohy ===== === Úkoly === - Analyzujte popsaný problém. - Popište principy, které použijete k řešení problému. - Nalezněte postup, který povede k řešení problému. - Postup implementujte a vyzkoušejte. - Odvoďte, za jakých podmínek bude Vaše řešení fungovat. - Vyhotovte technickou zprávu, ve které zdokumentujete všechny kroky. Uveďte a případně zhodnoťte také výsledky. - Navrhněte úlohu pro příští rok a stručně jí v technické zprávě popište. Berte v úvahu technické možnosti robotů i zkušenosti studentů. \\ === Technické zadání === **[[courses:b3b33lar:tasks:garaz_cs|Zadání úlohy]]**. \\ === Odevzdání práce === * Zprávu a programy nahrajte do odevzdávacího systému (datum odevzdání). * Vaše řešení předvedete vyučujícímu. Zpráva musí být při předvedení k dispozici. * V rámci předvedení Vašeho řešení proběhne také diskuze nad odevzdanou zprávou. * V zápočtovém týdnu je možné předvést řešení a předat zprávu v době cvičení. Před a po zápočtovém týdnu (nebo pokud Vám termín nevyhovuje) pošlete minimálně 48 hodin předem email cvičícímu, ve kterém navrhnete Vám vyhovující termíny odevzdání. Jeden ze cvičících odpoví, jestli mu některý z navržených termínů vyhovuje a upřesní čas. * Zpráva i implementace může být vrácena k přepracování pokud obsahuje vážné nedostatky. * Při předvedení mají být přítomni všichni řešitelé (celý tým). ===== Obsah zprávy ===== Zpráva by měla obsahovat minimálně následující informace: - Název práce, jména řešitelů, datum. - Stručný popis řešeného problému. - Rozbor problému, návrh postupu řešení, očekávaná funkčnost sytému. (specifikace) - Změny specifikace, ke kterým došlo v průběhu řešení. - Řešení problému, matematický popis, algoritmy. - Implementace a způsob spuštění (nezacházet do detailů). - Experimentální výsledky (uveďte výsledky pro jednotlivé snímky např. formou tabulky). - Diskuse výsledků, co by bylo vhodné na Vaší práci zlepšit, kdyby bylo více času a prostředků. - Návrh úlohy pro příští rok. Mohou být uvedena i další doporučení pro příští cvičení. - Přílohy (jsou-li nutné). Zpráva může být vysázena v libovolném nástroji, který umí sázet také matematiku, kterou bude zpráva pravděpodobně obsahovat. Zpráva ani specifikace by neměly obsahovat věcné ani gramatické chyby. Měla by být formulována jasně a jednoznačně. Formální matematické zápisy by měly být ve formě používané v matematických knihách, ne ve formě programátorského pseudokódu. Více informací k obsahu a formě technické zprávy můžete nalézt na stránce "[[help:common:writing_style|Jak napsat správně zprávu]]" kde jsou uvedeny především relevantní externí odkazy. ===== Boj proti plagiátorství ===== V rámci předmětu se požaduje samostatná práce týmů. [[https://cw.felk.cvut.cz/doku.php/help/common/plagiaty_opisovani|O plagiátorství podrobněji]] Je dovoleno užívat různé knihovny, které implementují standardní algoritmy. V takovém případě je třeba ve zprávě citovat použité zdroje. Mělo by se jedna o zdroje volně dostupné z pohledu studenta. Není dovoleno používat práce Vašich kolegů či předchůdců. Každý tvůrce je odpovědný za to, že se jeho dílo nedostane do rukou dalším kolegům. V případě odevzdání shodných prací se penalizují všichni dotčení studenti, tedy i ti, kteří dali dílo k dispozici. Uvedená definice plagiátorství nijak nezužuje obvyklé zvyklosti na této univerzitě, a proto mohou být obvyklým způsobem trestány i jiné formy porušování studijních předpisů a zvyklostí. ===== Čistý / čitelný kód ===== Očekáváme, že Váš **kód bude splňovat požadavky na čitelný a udržovatelný kód, dle [[https://peps.python.org/pep-0008/ | PEP 8 - Style Guide for Python Code]]** \\ ([[https://pep8.org/ | přehledněji]]). Zejména budeme sledovat: * Pro odsazení a oddělení bude použito správného počtu mezer. * Všechny identifikátory budou splňovat požadavky PEP 8. Identifikátory budou čitelné a anglicky. * Přítomnost blokových či jednořádkových komentářů v místech kódu, která považujete za důležitá komentovat z hlediska čitelnosti a srozumitelnosti. * Pomocí Docstring budou komentovány soubory (moduly), třídy, funkce a metody. Výběr formátu Docstring ([[https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings | Google]], [[https://docutils.sourceforge.io/rst.html | reStructured]], [[https://numpydoc.readthedocs.io/en/latest/format.html | Numpy/Scipy]] či [[https://epydoc.sourceforge.net/epytext.html | Epytext]]) je na vás, ale měl by být jednotný pro celý tým. * Můžete si zvolit výjimky z pravidel PEP 8, které budou dále zvyšovat čitelnost kódu. Tyto výjimky musíte být schopni zdůvodnit. * Konzistenci použitých pravidel, výjimek a stylů. **Kvalita kódu bude hodnocena v rozsahu 3 bodů, které jsou součástí hodnocení úlohy.** Kontrola nebude integrována v systému BRUTE, ale bude posuzována vyučujícím. Kvalitu kódu můžete případně (ne nutně) doložit například obrazovkou grafického vývojového prostředí, nebo výstupem z CLI nástroje [[https://pypi.org/project/flake8/ | flake8]]. Buďte připraveni v případě pochybností doložíte kvalitu interaktivně přímo ve vývojovém prostředí. **Pokud budete chtít, můžete získat navíc až 3 body pokud:** * Z Vašeho kódu, tedy na základě řetězců "Docstring", úspěšně vygenerujete HTML, nebo PDF dokumentaci. * Splníte požadavky na definici typů dle [[https://peps.python.org/pep-0484/ | PEP 484 - Type Hints]] ===== Prostředky pro řešení úlohy ===== * Návod pro práci s robotem [[https://gitlab.fel.cvut.cz/robolab/lar/-/blob/master/README.md]] * Návod pro programování robota [[https://gitlab.fel.cvut.cz/robolab/robolab_turtlebot]] ===== Další zdroje informací ===== * {{ :courses:b3b33lar:krsek_lar22_cs.pdf | P.Krsek: Metody zpracování dat ze senzorů. Prezentace 3. cvičení (2022)}} * {{ :courses:b3b33lar:petrik_lar22_en.pdf | V.Petrík: Metody odhadování hloubky. Prezentace 4. cvičení (2022)}} * {{ :courses:b3b33lar:krsek_lar22_zpravy_cs.pdf | P.Krsek: Obsah technické zprávy. Prezentace 5. cvičení (2022)}} * {{ :courses:b3b33lar:krsek_lar21_cs.pdf | P.Krsek, V.Petrík, L. Wagner: Metody zpracování dat ze senzorů. Prezentace 3. cvičení (2021)}} * {{ :courses:b3b33lar:petrik_lar21_en.pdf | P.Krsek, V.Petrík, L. Wagner: Odhadování hloubky. Prezentace 4. cvičení (2021)}} * {{:courses:b3b33lar:krsek_lar20_cs.pdf| P.Krsek, V.Petrík, L. Wagner: Metody zpracování dat ze senzorů. Prezentace 2. cvičení (2020)}} * {{:courses:b3b33lar:petrik_lar20_en.pdf| V.Petrík: LAR 2020, Depth Estimation. Prezentace z 3. cvičení (2020)}} * {{:courses:b3b33lar:krsek_lar19_methods_cs.pdf | P.Krsek, L. Wagner: Metody zpracování dat ze senzorů. Prezentace z 3/4 cvičení (2019)}} * {{:courses:b3b33lar:python_header_template.py | D.Koníček: Šablona Python souboru s metadaty (2023)}} ===== Kontaktní informace ===== Pavel Krsek, místnosti B-608 (budova B, Dejvice, ulice Jugoslávských partyzánů), telefon 4194, pavel.krsek@cvut.cz,\\ Vladimír Petrík, místnost B-640 (budova B, Dejvice, ulice Jugoslávských partyzánů), telefon 4225, vladimir.petrik@cvut.cz,\\ Libor Wagner, místnosti B-635 (budova B, Dejvice, ulice Jugoslávských partyzánů), telefon 4283, wagnelib@cvut.cz,\\ David Koníček, místnost B-605 (budova B, Dejvice, ulice Jugoslávských partyzánů), telefon 4274, david.konicek@cvut.cz.