Projekt do předmětu MRBT RoboCarts dokumentace vypracovali: Ctibor Mazal Martin Maléř Matúš Kozovský vedoucí projektu: Ing. Vlastimil Kříž Květen 2014
Obsah 1 Úvod... 4 1.1 Pravidla soutěže RoboCarts... 4 2 Mechanická konstrukce robota... 5 2.1 Základní chassis... 5 2.2 Systém pohonu... 6 2.3 Použité senzory a jejich zavěšení... 7 2.3.1 Balluff BFS 26K-PS-L01-S115... 7 2.3.2 Omron E3S-AD83... 7 2.3.3 Omron E3F2... 8 2.4 Napájení... 8 2.5 Deska pro připojení senzorů... 9 2.6 Uchycení Raspberry Pi... 9 3 Řízení robotu... 10 3.1 Raspberry Pi... 10 3.2 Návrh DPS pro připojení snímačů... 11 3.2.1 Popis konektorů... 13 3.2.2 Ukázka návrhu desky... 14 3.3 Popis programu robota... 15 3.3.1 Umístnění do boxů... 15 3.3.2 Start... 16 3.3.3 Závodní režim... 16 3.3.4 Otáčení z protisměru... 17 3.3.5 Detekce nárazu... 18 4 Soutěžní dráha... 19 5 Závěr... 21 2
Seznam Obrázků Obrázek 1 Jednotlivá patra robotu... 5 Obrázek 2 Vedení kabeláže spodní stranou robota... 6 Obrázek 3 Systém pohonu robotu... 6 Obrázek 4 Optický senzor Balluf BFS 26K-PS-L01-S115... 7 Obrázek 5 Optický senzor Omron E3S-AD83... 7 Obrázek 6 Optický senzor Omron E3F2... 8 Obrázek 7 Baterie v robotu... 8 Obrázek 8 Deska pro připojení senzorů... 9 Obrázek 9 Raspberry Pi... 10 Obrázek 10 Soustava odporových děličů... 11 Obrázek 11 Připojení stabilizátoru... 11 Obrázek 12 Připojení měničů motorů... 12 Obrázek 13 Čip s měniči motorů... 13 Obrázek 14 DPS... 14 Obrázek 15 Maska DPS... 14 Obrázek 16 Umístění v boxech... 15 Obrázek 17 Základní stavy... 16 Obrázek 18 Detekce špatné strany... 17 Obrázek 19 Chybové stavy... 18 Obrázek 20 Dráha pro RoboCarts a Bear Rescue... 20 Obrázek 21 Složená dráha... 20 3
1 Úvod Naším zadáním bylo sestrojit robota pro robotický den. Zvolili jsme si kategorii RoboCarts, jelikož nás ze všech nejvíc oslovila. Pro úspěšné zvládnutí úlohy jsme si práci rozdělili na tři části. První je sestrojení robota po mechanické stránce a jeho osazení příslušnými senzory. Druhým bodem je vytvoření řídícího algoritmu pro robota aby byl schopný projet dráhu a obcházet překážky. Dalším bodem je zhotovení dráhy, na které by bylo možné tyto algoritmy odzkoušet a zdokonalit. 1.1 Pravidla soutěže RoboCarts Cílem týmů je projet stanovený počet kol co nejrychleji. Roboti startují společně ve stejný okamžik. Každému robotu je přidělen startovní box o velikostech 220 x 120 mm. Robot musím být plně autonomní o maximálních rozměrech 200 x 100 x 100 mm. Před startem týmy umístí své roboty do přidělených boxů a na jeho nastavení mají 30 sekund. Poté již není dovoleno do robota zasahovat. Závod je odstartován otevřením přední strany boxů. Úspěšné projetí cílem znamená, že robot celý přejede cílovou čáru. Závod končí ve chvíli, kdy poslední robot projede stanovený počet kol nebo vyprší časový limit. Na dodržování pravidel dohlíží rozhodčí, jehož pravomocí je robota vyloučit při porušování pravidel. Podrobné informace o pravidlech lze nalézt na oficiálních stránkách www.robotickyden.org nebo přímo na odkaze [1]. [1] MATEMATICKO-FYZIKÁLNÍ FAKULTA UK, občanské sdružení Robonika. RoboCarts Robokáry. 2014/1. Praha, 2014. Dostupné z: http://www.robotickyden.cz/2014/rules/2014-robocarts-czv1.pdf 4
2 Mechanická konstrukce robota Pro konstrukci robota jsme zvolili stavebnici merkur. Konstrukce touto metodou je levná a jednoduchá. Pravidly soutěže byly určeny limitní rozměry robota jako 20x10x10cm (délka x šířka x výška), do kterých se nám podařilo vejít. Rozměry našeho robota jsou 15x9.8x9.8cm. Pro pohon jsme zvolili diferenční podvozek poháněný dvěma 12V DC motory. 2.1 Základní chassis Základ konstrukce tvoří obdélníkový skelet a nezávislé zavěšení kol uprostřed. Touto metodou byla zajištěna plná ovladatelnost při použití pouze dvou kol. Na tento základ jsou dále v patrech umístěny motory, senzory, baterie a kontrolér. Obrázek 1 Jednotlivá patra robotu 5
Spodní strana robota byla využita pro vedení kabeláže. Obrázek 2 Vedení kabeláže spodní stranou robota 2.2 Systém pohonu Pro pohon robotu byly zvoleny 12V DC motory MIG 2025 s 14000ot/min na prázdno. Tyto motory byly zvoleny malé ceně a velikosti společně s nízkým odběrem proudu (~100mA v maximální zátěži). Nevýhodou těchto motorů je obrovský pokles otáček v zátěži, což velice ztěžuje regulaci. Obrázek 3 Systém pohonu robotu Pro přenos otáček z motoru na kola byly zvoleny pásy, které zároveň slouží jako převodovka. Tato metoda je velice jednoduchá a šetří místo uprostřed chassis, které je potřeba pro elektroniku robotu. Oproti druhé zvažované metodě, ozubenému převodu, je méně přesná, ale umožnila nám splnit rozměrové limity robotu. 6
2.3 Použité senzory a jejich zavěšení Mezi použitými senzory jsou výhradně průmyslové optické senzory vzdálenosti. 2.3.1 Balluff BFS 26K-PS-L01-S115 Jedná se o optický senzor vzdálenosti s možností naprogramovat detekci různých barev a různých vzdáleností. Obrázek 4 Optický senzor Balluf BFS 26K-PS-L01-S115 Jde o průmyslový senzor, tudíž s uchycením nebyl problém, jelikož už z výroby se uchycením počítá a výrobce umístil do rohů senzoru díry pro šrouby. V naší aplikace je umístěn v prvním patře v přední části robota a je orientován do levé strany. Ve výsledném řízení se používá, kvůli schopnosti rozpoznat barvu, pro detekci správné, resp. špatné stěny a tím udržování správného směru robota. 2.3.2 Omron E3S-AD83 Optický senzor s nastavitelnou vzdáleností detekce. Uchycení nebylo díky závitům pro šrouby problémem. Obrázek 5 Optický senzor Omron E3S-AD83 Senzor je využíván pro detekci čáry, jelikož při přejezdu černé barvy se signál neodrazí a senzor nedetekuje podlahu. Negací tohoto signálu získáme reakci na čáru. Tento 7
senzor je umístěn v prvním patře přímo na kostře chassis. Druhý senzor tohoto typu se používá jako pomocný při udržování správné vzdálenosti od stěny. Tento senzor je pomocí izolační pásky připevněn ve 3. patře na baterii. 2.3.3 Omron E3F2 Optický senzor s možností detekovat překážku vzdálenou až 4m. Pro správné uchycení bylo potřeba vytvořit ze stavebnice merkur držák, který je možno natáčet dle potřeby. Samotný senzor je umístěn v čele robota ve druhém patře nad senzorem Balluf. Obrázek 6 Optický senzor Omron E3F2 V naší aplikaci se využívá pro detekci otevření garáže a obecně detekci překážky před robotem. 2.4 Napájení Robot je napájen tří článkovou baterií o maximálním napětí 12V. Pro naše potřeby byly vyvedeny dva články pro Raspberry Pi, které využívá 5V napájení a stabilizace 15V na 5V produkovala velké tepelné ztráty. Baterie je umístěna ve druhém patře vedle senzoru Omron E3F2. Obrázek 7 Baterie v robotu 8
2.5 Deska pro připojení senzorů Pro správný rozvod napájení pro jednotlivé senzory, motory a samotnou řídící jednotku byla vytvořena deska, která je umístěna ve druhém patře v zadní části robotu. Obrázek 8 Deska pro připojení senzorů 2.6 Uchycení Raspberry Pi Raspberry Pi je umístěno ve 3. patře robotu, jelikož s ním bylo potřeba často manipulovat a umístění v jakémkoliv jiném patře by bylo nepraktické. Samotné uchycení bylo vyřešeno pomocí sedla ze stavebnice merkur, které bylo přichyceno ke speciálnímu obalu od Raspberry Pi pomocí dvou šroubů s podložkami. 9
3 Řízení robotu Jak nám vyplývá z konstrukce a použitých senzorů, je nutné řídit dva motory a získávat informace ze 4 digitálních senzorů (celkem 7 vstupů a 4 výstupy). Kvůli jednoduchosti řešení a možnosti rychlého a snadného programování jsme si za hlavní řídící jednotku zvolili jednodeskový počítač Raspberry Pi, u kterého nízko úrovňové periferie umožňují jak načítání těchto informací tak i řízení motorů. 3.1 Raspberry Pi Raspberry Pi je jednodeskový počítač o rozměrech přibližně 6x9cm (bez osazené SD karty). Vyvinutý byl britskou nadací Raspberry Pi Foundation s cílem podpořit výuku informatiky na školách. Základem počítače je čip BCM2835 firmy Broadcom, který v sobě obsahuje procesor ARM1176JZF-S taktovaným na 700MHz a taktéž grafický procesor VideoCore IV a 512 MB paměti RAM (u námi použitého modelu). Operační systém je na SD kartě, která je zasunutá do Raspberry Pi. Další důležitou a námi využívanou vlastností tohoto počítače je přístup ke GPIO pinům procesoru, kterých je v základě vyvedených 17, ale je možné dostat se k vícerým. Obrázek 9 Raspberry Pi 10
3.2 Návrh DPS pro připojení snímačů Pro připojení snímačů k Raspberry Pi je nutné přizpůsobit napěťové úrovně výstupů ze snímačů. Jelikož všechny použité snímače budou napájené napětím přibližně 12V, je nutné zabezpečit převod výstupných signálů, které mají stejnou napěťovou úroveň jako je napájecí napětí, na logické úrovně, které je možné přivést na GPIO piny. Pro tento účel jsme se rozhodli zrealizovat jednoduché odporové děliče. Maximální hodnota log 1 na vstupu je 3,3 V, avšak minimální úroveň pro log 1 je 1,8 V. Z tohoto důvodu jsme se rozhodli pro dělič použít odpory 10 kω a 2,2 kω, který nám z 12 V udělá 2,16 V. Táto hodnota je dostačující a nemusíme se obávat poškození řídicího počítače. Obrázek 10 Soustava odporových děličů Deska taktéž obsahuje stabilizátor napětí na 5 V pro samotné napájení Raspberry pi. Bylo by vhodné použít DC/DC zdroj, avšak z důvodu poměrně vysoké ceny za tuto součástku jsme se rozhodli použít lacinější, ale energeticky neefektivní řešení. Obrázek 11 Připojení stabilizátoru 11
Posledními komponentami na DPS jsou měniče pro motory, každý měnič je schopný dodat proud přibližně 0,5 A a podle stavu na vstupech (2 vstupy) je schopný přepínat jeden z výstupních režimů, které jsou vpřed, vzad, brzdění anebo odpojené výstupy. Obrázek 12 Připojení měničů motorů 12
3.2.1 Popis konektorů Konektor JP1 - slouží pro připojení výstupů ze snímačů (0 12 V ) Konektor JP2 - slouží na přepojení upravených napěťových úrovní (0-2,2 V) do Raspberry Pi Konektor JP7 - Připojení baterie (GND, 8V, 12V) Konektor JP3,JP4 - příkazy z Raspberry Pi pro měniče motorů Konektor JP5,JP6 - připojení motorů Konektor JP8 - připojení napájecího napětí pro snímače Obrázek 13 Čip s měniči motorů 13
3.2.2 Ukázka návrhu desky Celková DPS by mohla vypadat následovně: Obrázek 14 DPS V pravé časti, jsou odporové děliče, nad nimi je konektor pro napájení snímačů. V střední části stabilizátor. A v levé časti řízení pro motory. Z důvodu jednoduchosti celé desky byla realizovaná na univerzální plošný spoj. Maska pro případnou výrobu: Obrázek 15 Maska DPS 14
3.3 Popis programu robota Řídící algoritmus je rozdělený na několik samostatných celků a robot se chová vždy výhradně podle jednoho. Přechod z jednoho do druhého je daný buď časovými značkami, anebo vzniknutými událostmi. Základní struktura je následovná: 1 Načítání vstupů. 2 Vyhodnocení vstupů a nastavení žádaného výkonu motoru. 3 Nastavení výstupů podle žádaného výkonu. 4 Aktívní čekání na časovou značku (udává základní takt, ve kterém program pracuje) Taktéž vyhodnocení probíhá různě, podle toho, ve které odhadované situaci se robot nachází. Rozlišujeme tyto situace: 1. Robot umístněný v boxu, čekající na otevření dveří. 2. Stav těsně po otevření dveří a jeho přiblížení ke vnitřní stěně dráhy 3. Závodní režim (sledování vnitřní stěny) 4. Poruchový stav v případě že se robot dostal do protisměru 3.3.1 Umístnění do boxů Obrázek 16 Umístění v boxech Do tohoto režimu se dostane robot tak, že snímač čáry hlásí přítomnost čáry (takže stav kdy nepřichází odraz) a zároveň je snímač detekce objektu před robotem aktivní (nachází se překážka). Tento stav musí samozřejmě trvat po jistou dobu, aby nedošlo k nežádoucímu přepnutí do tohoto stavu během samotného závodu. Tato doba je nastavená na 2s. Z tohoto stavu je možné přejít jen do stavu těsně po startu, splněním podmínky, že po dobu 1ms nebude před robotem překážka (10 načítaní ze snímače). Do některého z dalších stavů, není možné přejít, protože v ostatních stavech se vyhodnocuje případný signál zelené barvy od snímače na levé straně robota. To by znamenalo, že robot se nachází v protisměru, protože obvodová stěna dráhy je zelená a je nutné se co nejdříve otočit, avšak boxy mají taktéž zelenou barvu a toto vyhodnocovaní musí být dočasně odstavené, aby se robot hned po startu nesnažil otočit, což by bylo nevhodné. 15
3.3.2 Start Robot vystartuje a snaží se detekovat přítomnost čáry. Z pravidel vyplývá, že robot startuje v jednom z pěti boxů. Jelikož nemáme snímač přiblížení ke stěně na levé straně robota, musíme předpokládat, že se nacházíme v nejhorším možném stavu, což je v pátém boxu (box při vnější stěně dráhy) v tomto stavu musíme zatáčet mírně doleva, abychom se vzdalovali od této vnější stěny dostatečně dlouho, aby bylo možné začít se přibližovat k vnitřní stěně (tento čas je nastavený přibližně na 2s). Pokud by došlo k detekci čáry, od tohoto okamžiku víme, že se nacházíme buď v prvním, nebo druhém boxu. V tomto případě upravíme směr, tak, aby se přibližoval ke středu dráhy po přímé trajektorii. V tomto pohybu setrváme přibližně jednu sekundu. Po uplynutí těchto časových úseků přecházíme do závodního režimu. 3.3.3 Závodní režim Obrázek 17 Základní stavy V tomto režimu se sleduje přítomnost červené stěny po levé straně robota, stejně jako přítomnost překážky případně stěny před robotem (přední snímač je nastavený asi na 20cm). Pomocí jednoduchých pravidel se snažíme udržet stálou vzdálenost od vnitřní stěny (asi 3cm) díky dvěma signálům od snímače na levé straně. První signál značí, že jsme příliš daleko a druhý naopak, že jsme příliš blízko. Pro správnou funkčnost je nutné mít snímač správně kalibrovaný. V případě, že nepřichází ani jeden z požadovaných signálů, předpokládáme, že je nutné zatočit doleva a otáčet se, až dokud znovu nedostaneme signál od předního, nebo bočního snímače. 16
3.3.4 Otáčení z protisměru Obrázek 18 Detekce špatné strany V případě, že se robot dostane kolizí, nebo jiným způsobem do protisměru, je nutné, aby se otočil a pokračoval v závodění. Pro tento účel nám slouží barevně citlivý snímač, u kterého je výstup 1 nakonfigurovaný pro detekci zelené barvy. V případě, že dojde k tomuto signálu od zmíněného snímače, robot začne točit doprava po dobu přibližně 1s. Během tohoto časového intervalu by se měl robot spolehlivě otočit a následně přechází do režimu závodění, takže se snaží přiblížit k vnitřní stěně dráhy a pokračovat v závodění. 17
3.3.5 Detekce nárazu Obrázek 19 Chybové stavy Robot se může dostat do dvou stavů, kdy potřebuje couvat. Prvním je stav, když nabourá do stěny. Programově předpokládám, že stěnu dokáže detektovat s dostatečným předstihem, a proto v případě signálu z předního snímače se snažím jen zatáčet doprava a ne couvat. Ovšem pokud tento signál přichází nepřetržitě po dobu 2s, program předpokládá, že robot je nabouraný a pokusí se couvat. Druhým případem je zachycení robota na jedné z hran. V tomto případě nepřichází žádná informace od předního senzoru, a proto dalším stavem, kdy program vyhodnotí nabourání je situace, kdy nedochází ke změně na žádném ze snímačů. Tento stav taktéž musí trvat minimálně po dobu 2s. 18
4 Soutěžní dráha V pravidlech pro Robotický den 2014 jsou na dráhu pro soutěž RoboCarts kladeny tyto požadavky: Plocha hřiště je bílá. Hřiště je ohraničeno mantinelem a na jeho ploše jsou vnitřní zdi, které tvoří závodní trať (viz obrázek). Mantinel i vnitřní zdi jsou asi 10 cm vysoké, robot je nesmí přejíždět. Vnitřní zdi jsou červené, vnější zelené. Přibližně středem závodní dráhy vede černá čára o šířce 1,5-2 cm. Jezdí se proti směru hodinových ručiček. [1] Abychom mohli robota testovat a odladit řídicí algoritmus, postavili jsme dráhu podle těchto předpisů. Dráha je koncipována jako rozebíratelná a modifikovatelná na hřiště pro soutěž Bear Rescue. Je sestavena z desek o rozměrech 110 x 8 x 1400 mm a 110 x 8 x 700 mm. To znamená, že dlouhé vnější zdi jsou tvořeny dvěma spojenými deskami. Jak znázorňuje Obrázek 20, každá dvojice desek je na krajích spojů označena čísly, aby bylo jasné, které dvě desky patří k sobě. Krátké desky tvořící mantinely vystupující dovnitř dráhy jsou také očíslovány. Číslo odpovídá číslu desky, ke které má být namontována. Všechny tyto vnější stěny mají zelenou barvu. Uprostřed dráhy je volně položen mantinel červené barvy ve tvaru H. Opět je pro snadnou montáž označen značkami. V levém dolním rohu jsou volně umístěny startovací boxy. Pro modifikaci dráhy na hřiště pro soutěž Bear Rescue je potřeba odmontovat jeden díl spojených desek 2 a 4, a také krátké mantinely 1 a 3. Vnitřní červené mantinely také nebudou použity. Dále je potřeba namontovat na místo krátkého mantinelu 1 desku o rozměrech 110 x 10 x 900 mm a k ní přišroubovat mantinel číslo 3. Mantinel 1 se připevní k desce 4. Modifikace znázorňuje levý Obrázek 20. Všechny mantinely budou mít zelenou barvu z důvodu, že jsou určeny primárně pro soutěž RoboCarts. V pravidlech pro soutěž Bear Rescue není barva mantinelů nijak specifikována. 19
Obrázek 20 Dráha pro RoboCarts a Bear Rescue Obrázek 21 Složená dráha 20
5 Závěr Při stavbě robota musely být provedeny mnohé kompromisy, z nichž se jako nejproblémovější ukázal systém pohonu. Gumy, které slouží jako přenos momentu z hřídele motoru na kolo dodávají do systému dodatečné zpoždění a robot není schopen okamžité reakce na změnu signálů ze senzorů. Tento problém se nejvíce projevuje při jízdě velice blízko u stěny, kdy se robot snadno zasekne, tak že narazí levou přední stranou do zdi. Další nevýhodou je potřeba časté kalibrace motorů díky opotřebení dříve zmíněné převodové gumy. Toto opotřebení značně ovlivňuje maximální napětí gumy, a tím pádem moment, který je potřeba pro otáčení kol. Při dalších pokusech o stavbu robotu bychom se této metody vyvarovaly. Sice přinesla mnohá zjednodušení, ale značně zkomplikovala proces programování. Program vytvořený pomocí jazyku C se ukázal jako dostatečně rychlý pro řízení i sběr dat ze všech senzorů. Bylo využito senzoru rozpoznávajícího barvu, pomocí kterého dokážeme detekovat pohyb do protisměru. Tato funkce by nám měla dát určitou výhodu nad soupeři, kteří budou využívat především ultrazvukových senzorů. Přes zmíněné problémy se podařilo vytvořit fungující robot, který doufáme, že je konkurenceschopný a připravený se zúčastnit soutěže RoboCarts. 21