===== Praktická robotika - cvičení (zima 2022/23) ===== ==== Organizace cvičení ==== * Na začátku semestru budou studenti rozděleni do dvoučlenných skupin. * Každá skupina bude implementovat aplikaci realizující úlohu explorace neznámého prostředí (viz [[zadani|zadání]]). * Jednotlivé podsystémy realizovaného klienta (v rámci samostatných úloh) budou studenti zkoušet nejprve na simulátoru [[http://gazebosim.org/|Gazebo]] a poté na reálných robotech TurtleBot. Zápočet bude udělen na základě následujících kritérií: * chování robotu při závěrečném předvedení cvičícím, * ústní prezentace funkčního algoritmu klienta cvičícímu, * znalost předloženého kódu klienta * K získání zápočtu je nutná pravidelná účast studenta na cvičení (povoleny jsou dvě absence). * Hodnocení ze cvičení je **jedinou** součástí celkového hodnocení studenta (známky z předmětu). {{:courses:a0m33par:lab.jpg?600| Lab}} {{ :courses:a0m33par:ex1.zip |}} ==== Úloha 1 - Obstacle avoidance ==== * Cílem cvičení je seznámit se se základní robotickou smyčkou, vyčitání senzorů a řízení robotu na úloze vyhýbání se překážkám (obstacle avoidance). * {{ :courses:a0m33par:ex1.zip | Šablona kódu}} * {{ :courses:a0m33par:modely_gazebo.zip | Modely gazebo}} - extrahujte do složky ~/.gazebo/ ve vašem domovském adresáři * {{ :courses:a0m33par:ex1.pdf | Postup řešení}} * Pro použití s reálným robotem: zaměňte v kódu při inicializaci robotu příkaz "robot.enableRequestResponseServices();" za příkaz "robot.setAsyncMode();" {{:courses:a0m33par:switch.png}} a v terminálu exportujte proměnnou "IGN_PARTITION=bridge" {{:courses:a0m33par:export.png}} * [[https://www.youtube.com/embed/dJT0tmQoFsY?rel=0&autoplay=1 | Video: motivační ukázka řešení v systému Syrotek]] ==== Úloha 2 - Plánování na binární mřížce ==== * Plánování cesty je jednou ze základních úloh, které musí řešit autonomní mobilní robot při realizaci téměř libovolné úlohy. Cílem cvičení je naimplementovat Dijkstrův algoritmus pro plánování na binární mřížce. * {{ :courses:a0m33par:ex2.zip | Šablona kódu}} * {{ :courses:a0m33par:ex2.pdf | Postup řešení }} * {{ :courses:a0m33par:planning.pdf | O plánování na mřížce}} * Videa {{ :courses:a0m33par:Dijkstra_alg_example.mp4 | Video - Dijkstra na grafu}} {{ :courses:a0m33par:Dijkstra_alg_grid.mp4 | Video - Dijkstra na mřížce}} {{ :courses:a0m33par:Dijkstra_exploration.mp4 | Video - prohledávání Dijkstrovým algoritmem}} ==== Úloha 3 - Prohledávání neznámého prostředí ==== * Prohledávání neznámého prostředí je komplexní úloha zahrnující řadu základních robotických dovedností – tvorbu mapy, plánování, řízení, lokalizaci a vyšší plánování. S některými těmito dovednostmi jste se již seznámili na předchozích cvičeních, další budete v rámci této úlohy implementovat. Výstupem by pak měl být algoritmus navigující robot v neznámém prostředí za účelem vytvoření mapy tohoto prostředí. V této úloze se předpokládá, že pozice robotu je známá. * **Propojení plánovacího modulu** (úloha 3_0) * Načtěte předpřipravenou mapu prostředí. * V mapě naplánujte cestu a tu realizujte za pomocí driveru SND. * Ověřte funkčnost vašeho řešení. * (Dobrovolná úloha, na které si můžete vyzkoušet propojení vašeho plánovače s navigačnám modulem SND bez nutnosti mapování prostředí.) * {{ :courses:a0m33par:ex3_0.pdf | Postup řešení}} * {{ :courses:a0m33par:simplelab.txt | "Mapa" laboratoře}} * {{ :courses:a0m33par:par_lab3.txt | Mapa pro simulaci}} * **Prohledávání neznámého prostředí** * Modifikujte mapu prostředí na základě aktuálních dat z laserového dálkoměru. * Najděte v mapě tzv. frontiers a vyberte z nich následující cíl. * K vybranému cíli naplánujte cestu a tuto cestu realizujte driverem SND. * Proveďte experimenty v simulátoru i na reálném systému. * {{ :courses:a0m33par:ex3_v2.zip | Šablona kódu}} * {{ :courses:a0m33par:ex3.pdf | Postup řešení}} * {{ :courses:a0m33par:intro.pdf | Úvod k prohledávání}} * {{ :courses:a0m33par:mapping.pdf | O mapování}} * [[https://www.youtube.com/embed/LmOUyKEAAcI?rel=0&autoplay=1 | Video: ukázka řešení v systému Syrotek]] [[start|Zpět]] na stránky předmětu.