Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

B3B33LAR - Cvičení

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

  1. Analyzujte popsaný problém.
  2. Popište principy, které použijete k řešení problému.
  3. Nalezněte postup, který povede k řešení problému.
  4. Postup implementujte a vyzkoušejte.
  5. Odvoďte, za jakých podmínek bude Vaše řešení fungovat.
  6. Vyhotovte technickou zprávu, ve které zdokumentujete všechny kroky. Uveďte a případně zhodnoťte také výsledky.
  7. 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í

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:

  1. Název práce, jména řešitelů, datum.
  2. Stručný popis řešeného problému.
  3. Rozbor problému, návrh postupu řešení, očekávaná funkčnost sytému. (specifikace)
  4. Změny specifikace, ke kterým došlo v průběhu řešení.
  5. Řešení problému, matematický popis, algoritmy.
  6. Implementace a způsob spuštění (nezacházet do detailů).
  7. Experimentální výsledky (uveďte výsledky pro jednotlivé snímky např. formou tabulky).
  8. Diskuse výsledků, co by bylo vhodné na Vaší práci zlepšit, kdyby bylo více času a prostředků.
  9. Návrh úlohy pro příští rok. Mohou být uvedena i další doporučení pro příští cvičení.
  10. 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 “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ů.

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 PEP 8 - Style Guide for Python Code
( 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 ( Google, reStructured, Numpy/Scipy či 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 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 PEP 484 - Type Hints

Prostředky pro řešení úlohy

Další zdroje informací

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.

courses/b3b33lar/cviceni.txt · Last modified: 2023/05/25 09:29 by krsek