Robot pro Robotický den 2015 Soutěž - Ketchup House (sklad kečupů)
Vysoké učení technické v Brně Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky
Vedoucí práce: Ing. Vlastimil Kříž Autoři práce: Pijáček Ondřej, Zedník Josef
MRBT 2015
Obsah Úvod ........................................................................................................................................................ 2 Zadání ...................................................................................................................................................... 2 Pravidla soutěže (disciplína „Ketchup House“) ....................................................................................... 3 1. Průběh soutěže ................................................................................................................................ 3 2. Robot ............................................................................................................................................... 3 3. Hřiště ............................................................................................................................................... 4 4. Kečup ............................................................................................................................................... 4 5. Pravomoc rozhodčího a organizátorů, odpovědnost ...................................................................... 5 Konstrukce robota ................................................................................................................................... 5 Snímače čar ......................................................................................................................................... 5 Pohonná část ....................................................................................................................................... 6 Snímače počtu nalezených plechovek................................................................................................. 7 Řídící deska .......................................................................................................................................... 7 Napájecí zdroj ...................................................................................................................................... 8 Detekce soupeřova robota .................................................................................................................. 8 Programová část robota .......................................................................................................................... 9 Popis nejdůležitějších funkcí ............................................................................................................... 9 Závěr ........................................................................................................................................................ 9
Úvod Cílem tohoto projektu bylo postavit robota na robotický den 2015 v Praze. V našem případě jsme zvolili disciplínu „Ketchup house“, v níž robot jezdí po čtvercové síti a sbírá plechovky kečupu, které následně převáží na svou základní čáru. Detailní popis pravidel soutěže je uveden níže. V této dokumentaci jsou také popsány jednotlivé části robota a funkce.
Zadání Úkolem bylo sestavit tým, který se zúčastní Robotického dne 2015 v soutěži „Ketchup House“ (viz. https://www.robotickyden.cz/). Nastudovat pravidla, navrhnout a postavit robota do soutěže.
Pravidla soutěže (disciplína „Ketchup House“) Dvojice robotů soupeří ve skladu, kdo bude mít na konci zápasu více plechovek s kečupem.
1. Průběh soutěže Během každého tříminutového zápasu se robot snaží dopravit na svou domácí čáru co nejvíce plechovek s kečupem. Plechovky jsou před zápasem umístěny ve skladu, dvě na známých pozicích, pět náhodně. Před startem soutěžící připraví svého robota na hřiště na základní pozice, teprve poté rozhodčí rozmístí kečup. Na pokyn rozhodčího soutěžící své roboty odstartují, ti pak mají za úkol na hřišti vyhledávat a převážet plechovky s kečupem tak, aby jich na konci zápasu měli co nejvíce na své domácí čáře (plechovka se musí alespoň malou částí dotýkat domácí čáry). Počítají se však pouze takové plechovky, které na konci zápasu budou mimo konvexní obal průmětu robota. Je povoleno manipulovat se všemi plechovkami, tedy i s těmi, které již soupeř dovezl k sobě domů. V první části soutěže budou jízdy organizovány systémem každý s každým (v případě většího počtu po skupinách), pro určení pořadí v první části soutěže se použije součet bodů získaných v jednotlivých kolech. Ve druhé části soutěže jsou vedeny jízdy vyřazovacím způsobem (v případě více základních skupin postoupí do vyřazovací části nejlepší ze základních skupin). Při rovnosti bodů mohou organizátoři vyzvat příslušné soutěžící k další jízdě.
2. Robot Robot je plně autonomní (samostatný) a nesmí být nebezpečný nebo nadmíru obtěžující. Při závodě včetně startu není povoleno žádné spojení robota s externími zařízeními. Od okamžiku, kdy soutěžící robota připraví ke startu, se jej kromě odstartování nikdo nesmí dotýkat ani jakkoli zasahovat do jeho činnosti a to až do té doby, kdy to rozhodčí opět povolí. Na horní straně robota musí být nouzový vypínač, jehož stisknutím se vypnou všechny pohony robota. Tento vypínač musí být dostatečně velký a vůči robotovi dostatečně výrazný, aby byl snadno rozpoznatelný, dosažitelný a použitelný. Na horní straně robota musí být místo pro jeho označení (nálepka 10x7 cm). Maximální rozměry robota jsou 30(š)x30(d) cm, výška není stanovena.
3. Hřiště Sklad kečupu je reprezentován sítí 7x7 černých čar s rozestupem cca 20 cm. Čáry jsou široké
Obrázek 1: Dráha robota
cca 1.5 cm, podlaha je bílá. Okolo skladu je na každou stranu cca 30 cm volná plocha (mohou na ní ale být popisky). Před zápasem je do skladu umístěno 7 kečupů: dva na pozicích D3 a D5 a pět náhodně, a to tak, že čtyři z nich středově symetricky ve sloupcích C, D, E a pátý na jednu z dosud volných pozic ve sloupcích C, D a E. Pokud při hře robot odebere některý z náhodně umístěných kečupů a vzdálí se s ním na více než jeden čtvereček a soupeř bude také alespoň 1 čtvereček daleko, bude na toto místo doplněn další kečup, a to až do celkového počtu 12 kečupů ve hře. Roboti startují na pozicích A4 resp. G4. Během hry se smějí pohybovat po celé ploše skladu, nejen po čarách.
4. Kečup Kečup je v plechovkách běžně prodávaných v obchodech, jejich rozměry jsou přibližně: průměr 5,5 cm, výška 7,5 cm, hmotnost 165 g.
5. Pravomoc rozhodčího a organizátorů, odpovědnost Pokud soutěžící či robot poruší pravidla, může rozhodčí jeho jízdu ukončit. Může také soutěžící či robota diskvalifikovat i pro další zápasy. Námitky vůči rozhodnutím rozhodčího nebo organizátorů nejsou přípustné. Organizátoři mohou kdykoli změnit pravidla soutěže například podle počtu účastníků nebo místních podmínek. Účastníci ručí za své roboty a jejich bezpečnost a jsou zodpovědní za veškeré škody způsobené jimi samými, jejich roboty nebo jejich vybavením. Organizátoři neodpovídají za žádné újmy účastníků ani za škody, které způsobí účastníci, jejich roboti nebo jejich vybavení.
Konstrukce robota Kostra robota je postavena ze stavebnice Merkur. Jako řídící jednotka je použit modul Arduino Mega 2560 s mikrokontrolérem ATmega2560.
Snímače čar Robot má 5 optických snímačů čáry (dva vepředu a tři vzadu). Tři snímače vzadu hlídají, aby se robot při rovné jízdě neodchyloval od čáry vlevo nebo vpravo. Snímače vepředu hlídají, zda robot narazil na čáru k němu kolmou, neboli se pohnul v hracím poli. Jedná se o klasické snímače v infračerveném spektru fotodioda-fototranzistor pro odolnost proti okolnímu osvětlení. Přítomnost čáry je vyhodnocena integrovaným obvodem NE555 ve funkci schmittova komparátoru s hysterezí. Hotový modul je vidět na následujícím obrázku 2.
Obrázek 2: Vyhodnocovací obvod levého předního snímače čáry
Obrázek 3: Pravý přední snímač čáry
Obrázek 4: zadní snímače čáry
Pohonná část Robot má 2 pohonná serva v režimu kontinuálního otáčení. Vzadu je místo kolečka umístěna všesměrová kulička (je možné ji vidět i na obrázku 3), která umožňuje lepší otáčení než kolečko. Každé servo je standartní velikosti a mý výrobcem udávaný tah 3kg/cm. Jejich nevýhodou je ovšem proudové zatížení zdroje, kdy při rozběhu a brždění dochází k velkým proudovým špičkám a na tuto skutečnost je třeba brát zřetel při návrhu napájecí časti robotu.
Obrázek 5: Pravé pohonné servo
Snímače počtu nalezených plechovek Je potřeba detekovat kolik má robot uvnitř nalezených plechovek, toto je řešeno třemi optozávorami (každá detekuje jednu sebranou plechovku). Celkem robot může pobrat až 3 plechovky najednou. Světelná část optozávory je řešena diodou „Infra LED 5mm LTSAL6100“, která vysílá světelný paprsek na fototranzistor „L-NP-3C1“.
Obrázek 6: Optozávory pro detekci přítomnosti plechovek
Řídící deska Jako mikrokontrolér je použita ATmega2560, umístěna na vývojové desce. Pro jednodušší zapojení jsme zvolili univerzální pájecí desku pro nadstavbu na Arduino a připojení všech periferií k procesoru. Ostatní subsystémy jako jsou snímače čar nebo napájecí zdroj se nachází vždy na vlastní desce.
Obrázek 6: Řídící deska robota
Napájecí zdroj Robot bude napájen z baterie, jejíž napětí bude stabilizováno zdrojem na obrázku 7. Jedná se o spínaný zdroj LM2576SX-5.0, který byl zvolen s ohledem na spotřebu servomotorů při zátěži. Robot by tak neměl mít problémy ani při posuvu s třemi plechovkami.
Obrázek 7: Napájecí zdroj
Detekce soupeřova robota Pro detekci soupeřova robota bude použit ultrazvukový snímač, aby nedocházelo ke zbytečným kolizím. Jednoduše by se tak mohlo stát, že nás soupeř vytlačí z dráhy a robot se tak nebude z důvodu absence absolutního snímače polohy vrátit na původní souřadnice. Jedná se tak o kompromis při následné délce a složitosti kódu.
Programová část robota Program se skládá z funkce void setup() a void loop(). Po restartu se prvně zavolá funkce void setup(), zde se nastaví jednotlivé piny vývojové desky, které jsou připojeny k jednotlivým periferiím. Následně je volána funkce void loop(), kde se volají jednotlivé funkce, které řídí robota.
Popis nejdůležitějších funkcí Jelikož se robot bude pohybovat po čtvercové síti zvolili jsme pro orientaci kartézský souřadnicový systém X,Y (levý dolní roh má souřadnice (0,0), roh o 1 výše má souřadnice (0,1) atd.). K tomuto účelu slouží funkce void GPS(int pozX,int pozY) zde se zadají souřadnice bodu ve čtvercové síti kam má robot dojet a robot na zadané místo s pomocí této funkce dojede. Tato funkce využívá funkci JetPoCaru() a Natoceni(int uhel). Funkce JetPoCaru() využívá předních snímačů čáry, po zavolání této funkce robot dojede po čáru a zastaví. Ten přední snímač, který jako první detekuje, čáru zastaví příslušné servo. Funkce Natoceni (int uhel) vždy natočí robota tak jak je potřeba podle aktuálního natočení. Další velice užitečnou funkcí je funkce void Jet(int leve, int prave), pomocí této funkce je možné ovládat serva (levé a pravé), aby robot mohl jet dopředu, dozadu případně se otočit s různou rychlostí pohybu.
Závěr Sestavili jsme robota, který je schopen pohybovat se po dráze, sbírat plechovky „Ketchupu“ a následně je dopravit na svou základní čáru. Hardware robota je v podstatě hotový, chybí jen přidělat ultrazvukový snímač pro detekci soupeřova robota. Je nutné ještě doladit programovou část robota (naprogramovat strategii pro sběr plechovek, a doladit detaily). V následující etapě by stálo za zvážení implementace absolutního snímače polohy, kdy by robot téměř pozbyl nutnost pohybovat se omezeně po vodících čarách a mohl tak mapovat celou hrací plochu.