Search
Bohužel vývoj epidemiologické situace a s tím související nařízená omezení nám neumožnila setkávat se společně v laboratoři nad řešením původní úlohy pro tento semestr. Tím byla ovlivněna podstatná část semestru. Proto jsme i pře očekávané uvolnění pravidel připravili náhradní úlohu, kterou můžete řešit z domova. Tato úloha vychází z původní úlohy Slalom, ale všechny potřebné údaje jsou uvedeny níže.
Robotem byly nasnímána data jejichž zpracování (off-line) bude na Vás.
Zadání je rozděleno do tří úkolů podle náročnosti řešení:
Fig. 1: Startovní pozice a branka
Slalomová dráha je vyznačena brankami. Jednotlivé branky jsou vymezeny dvěma tyčkami stejné barvy. Tyčky tvoří v našem případě různobarevné papírové válce o průměru 50mm a výšce cca 350mm. Samotná branka je definována jako spojnice mezi středy příslušných tyček. Střed branky je středem této spojnice. Osa branky je kolmice na spojnici tyček, která prochází středem branky. Šířka branky je dána vzdáleností bližších stěn tyček, které vymezují danou branku. Dráha začíná startovní brankou, která je následována jednou, nebo více traťovými brankami.
Startovní/cílová branka je vyznačena dvěma zelenými tyčkami. Její šířka je 500mm +/- 20mm (přesnost umístění). Traťové branky jsou vyznačeny červenými a modrými tyčkami. Startovní branka je vyznačena na figure 1.
Startovní pozice je ve směru jízdy před startovní brankou. Střed robotu ve startovní pozici bude umístěn minimálně ve vzdálenosti 500mm od startovní branky (měřeno rovnoběžně s její osou). Střed robotu bude od osy startovní branky vzdále maximálně o 600mm (na obě strany). Podélná osa robotu bude odkloněna od směru osy startovní branky maximálně o ± 60º, ale vždy tak, aby byly obě tyčky startovní branky v zorné poli RGB kamery. Startovní pozice vůči startovní brance je znázorněna na výkresu figure 1.
Data jsou organizována do datových sad, které jsou uloženy v ZIP souborech. Datové sady relevantní pro jednotlivé úkoly jsou uvedeny v rámci jejich zadání. Datové sady sestávají z jednotlivých “snímků” (sady po 5 snímcích). Tyto “snímky” jsou uloženy v samostatných souborech. Soubory jsou ve formátu MAT. Tento formát slouží pro ukládání proměnných z prostředí Matlab (firmy Mathworks). V jednom souboru může být několik proměnných s různými jmény. Data je možné načíst a zpracovat v Matlabu, nebo v Pythonu. Pro načtení dat v Pythonu slouží funkce “loadmat”. Jejím výstupem je slovník (dictionary), který má klíče tvořeny názvy proměnných. Příklad načtení dat ze souboru “file_name” a vypsání jedné z proměnných:
from scipy.io import loadmat data = loadmat(file_name) # načtení dat print(data['image_rgb']) # zobrazení jedné proměnné
Každý “snímek” obsahuje 5 proměnných, které představují zaznamenaná data ze senzorů robotu:
Body v RGB snímku, hloubkové snímku a 3D body jsou vzájemně přibližně registrovány. To znamená, že si vzájemně odpovídají hodnoty na stejných pozicích (řádek, sloupec).
Kamera / hloubkový snímač je umístěn přibližně 355 mm nad pojezdovou rovinou (podlahou) a je skloněn mírně k této rovině. Výška nad podlahou odpovídá přibližně výšce slalomových tyček. Směr od kamery k hornímu konci tyčky je prakticky rovnoběžný s pojezdovou rovinou. Z hlediska vodorovné roviny je kamera umístěna ve středu půdorysu robotu. Půdorys tvoří kruh o průměru 360mm.
Fig. 2: Poloha robotu vůči brance
Výstupem programu by měly být parametry určující polohu robotu vůči nejbližší (případně startovní) brance. Přehlede hledaných číselných parametrů (požadované parametry se mění dle úkolu):
Program musí být napsaný v programovacím jazyku Python, nebo Matlab. Vstupem programu bude název souboru (“snímek”), který má být vyhodnocen. Výstupem budou parametry dle požadavku zadání vypsané na monitoru (textový výstup). Parametry musí být popsány tak, aby bylo jasné o jaký parametr se jedná. Způsob spuštění a formu výstupu nezapomeňte popsat ve zprávě.
Na základě jednoho snímku určete polohu startovní branky v RGB snímku (zelené tyčky). Při výpočtu můžete počítat s tím, že bude robot umístěn na startovní pozici dle obrázku figure 1. Hledanými parametry je poloha c středu branky vůči středu obrazu a šířka branky g ve snímku. Za splnění tohoto úkolu může být maximálně uděleno 40 bodů.
Datové sady:
Na základě jednoho snímku určete polohu robotu vůči startovní brance (zelené tyčky). Při výpočtu můžete počítat s tím, že bude robot umístěn na startovní pozici dle obrázku figure 1. Výstupem vašeho algoritmu bude poloha robotu definovaná parametry α, β (úhel vůči průvodiči a brance), v (vzdálenost k brance) jak jsou znázorněny na figure 2. Určete také šířku branky d, nebo zda robot brankou projede pokud bude pokračovat ve směru průvodiče ke středu branky (šířka robotu 40cm). Za splnění tohoto úkolu může být maximálně uděleno 60 bodů.
Fig. 3: Vzájemná poloha branek obřího slalomu
Úkolem je určit polohu robotu vůči nejbližší brance. Robot bude umístěn vždy tak, aby viděl obě tyčky dané branky a zároveň aby bylo zachováno pořadí tyček vzhledem ke směru průjezdu. Levá tyčka bude vždy i ve snímku vlevo od tyčky pravé. V rámci tohoto úkolu je nutné určit barvu nejbližší branky a polohu robotu vůči ní. Hledaná poloha robotu je definovaná parametry α, β (úhel vůči průvodiči a brance), v (vzdálenost k brance) jak jsou znázorněny na figure 2. Určete také šířku branky d, nebo zda robot brankou projede pokud bude pokračovat ve směru průvodiče ke středu branky (šířka robotu 40cm). Za splnění úlohy může být maximálně uděleno 80 bodů.
Parametry startovní branky jsou dány stejně pro všechny úkoly. Ostatní branky mají geometrické uspořádání odpovídající výkrasu na figure 1. Branky jsou tvořeny vždy dvěma tyčkami. Šířka branek je d = 450 až 600mm. Minimální vzdálenost bližší tyčky následující branky h ≥ 600mm. Maximální příčná vzdálenost středů následujících branek s ≤ 300mm. Následující branka může být skloněna vůči projížděné brance maximálně o ±30° (|α| ≤ 30°).
Aby bylo možné lepší testování a případně “kalibrace” parametrů, realizovali jsem s robotem a brankami dva experimenty. Jejich popis a odpovídajíc data jsou k dispozici. Rozměrový náčrtek experimentu s popisem pozic je součástí ZIP archivu s daty.
Náročnosti dané úlohy odpovídá uvedené maximální bodové hodnocení. Každý z týmů může v průběhu semestru řešit jednu či více úloh. Tým získá bodové hodnocení odpovídající bodovému hodnocení úlohy s největší náročností, kterou úspěšně vyřešil. Uvedený maximální počet bodů odpovídá bezchybnému splnění úlohy. Počet udělených bodů může být nižší v závislosti na funkčnosti řešení.
Všichni členové týmu obdrží stejné bodové hodnocení (bodové hodnocení týmu). V případě, že některý z členů týmu v rámci tohoto předmětu nepracuje, mohou ostatní členové týmu navrhnout cvičícímu jeho vyřazení z týmu čí snížení jeho bodového hodnocení. Cvičící tento požadavek posoudí, prodiskutuje ho se všemi členy týmu a o hodnocení dotčeného studenta rozhodne.