21
Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil Kříž Vypracovali: Daniel Davídek, Michal Dvořák, Jiří Sliž 1 Obsah 1 Obsah 2 Teorie 2.1 Stručná pravidla soutěže 2.1.1 Mini Sumo 2.1.2 Line Follower – sledovač čáry 3 Konstrukce chasis 3.1 Modelování 3.2 Motory rozmístnění → převodovka 3.3 Kola 3.4 Pneumatiky 3.5 Baterie 3.6 Shield pro STM32 4 Desky plošných spojů 4.1 Návrhový systém 5 Senzory 5.1 Čidlo reflexivity 5.2 Ultrazvukové čidlo vzdálenosti 5.3 Řádková kamera 5.3.1 Základní Údaje 5.3.2 Princip použití 5.3.3 Proč řádková kamera 6 Aktuátory 7 Výpočetní hardware 7.1 MCU Platform 8 Prostředí, knihovna & debugger 8.1 CodeBlocks & libopencm3 & BlackMagicDebugger 8.2 Návod OpenSource STM32 9 Nízkoúrovňový software 9.1 Soubory zdrojových kódů 9.2 Popis kódu 9.2.1 Struktury v kódu 9.2.2 Inicializace periferií 9.2.3 Struktura S_Robot 9.3 Syntaxe zdrojových kódů 9.4 Knihovna pro LCD 10 Hlavní program 10.1 Sledovač čáry 10.1.1 Princip 10.1.2 Kamera 10.1.3 Regulátor 10.2 MiniSumo 10.2.1 Taktika 10.2.2 Stavový diagram 11 Účast v soutěži 1 / 21

Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

Embed Size (px)

Citation preview

Page 1: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT

Vedoucí: Vlastimil Kříž

Vypracovali: Daniel Davídek, Michal Dvořák, Jiří Sliž

1 Obsah

1 Obsah 2 Teorie

2.1 Stručná pravidla soutěže 2.1.1 Mini Sumo 2.1.2 Line Follower – sledovač čáry

3 Konstrukce chasis 3.1 Modelování 3.2 Motory rozmístnění → převodovka 3.3 Kola 3.4 Pneumatiky 3.5 Baterie 3.6 Shield pro STM32

4 Desky plošných spojů 4.1 Návrhový systém

5 Senzory 5.1 Čidlo reflexivity 5.2 Ultrazvukové čidlo vzdálenosti 5.3 Řádková kamera

5.3.1 Základní Údaje 5.3.2 Princip použití 5.3.3 Proč řádková kamera

6 Aktuátory 7 Výpočetní hardware

7.1 MCU Platform 8 Prostředí, knihovna & debugger

8.1 CodeBlocks & libopencm3 & BlackMagicDebugger 8.2 Návod OpenSource STM32

9 Nízkoúrovňový software 9.1 Soubory zdrojových kódů 9.2 Popis kódu

9.2.1 Struktury v kódu 9.2.2 Inicializace periferií 9.2.3 Struktura S_Robot

9.3 Syntaxe zdrojových kódů 9.4 Knihovna pro LCD

10 Hlavní program 10.1 Sledovač čáry

10.1.1 Princip 10.1.2 Kamera 10.1.3 Regulátor

10.2 Mini­Sumo 10.2.1 Taktika 10.2.2 Stavový diagram

11 Účast v soutěži

1 / 21

Page 2: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

11.1 Konstrukční úpravy 11.2 SW úpravy

12 Závěr 13 Poděkování 14 Bibliografie 15 Přílohy

15.1 PINOUT 15.2 Pravidla soutěže Line Follower

15.2.1 Průběh soutěže 15.2.2 Robot 15.2.3 Hřiště 15.2.4 Pravomoc rozhodčího a organizátorů, odpovědnost

15.3 Pravidla soutěže Mini Sumo 15.3.1 Průběh soutěže 15.3.2 Robot 15.3.3 Ring 15.3.4 Pravomoc rozhodčího a organizátorů, odpovědnost

2 Teorie 2.1 Stručná pravidla soutěže

2.1.1 Mini Sumo

Cílem soutěže, je zkonstruovat robota takového, který v soutěži Mini Sumo vytlačí protivníkova robota z ringu. Soutěž probíhá na v kruhovém ringu o definovaných rozměrech. Na počátku je dvojice robotů postavena na dané startovní pozice. Po odstartování se se roboti navzájem snaží jeden druhého vytlačit z ringu. Robot prohrává v okamžiku když se jeho libovolná část (i upadlá), dotkne plochy mimo ring. Robot musí být autonomní a nekomunikující s externími zařízeními. Maximální rozměry jsou 10x10cm na šířku a délku, výška je bez omezení, maximální váha pak 500g. Plné znění pravidel je pak možné prostudovat v příloze respektive na stránkách soutěže.

2.1.2 Line Follower – sledovač čáry

Cílem soutěže je zkonstruovat robota takového, který v soutěži Line Follower bude sledovat černou čáru a projet po ní trať v co nejkratším čase. Soutěž probíhá na bílém hřišti s černou čárou o šířce 1.5cm, čára nemá křižovatky, čas je měřen v intervalu od signálu rozhodčího ke startu po do okamžiku, kdy přední část robota překročí cílovou čáru. Pokud robot trasu nedojede do tří minut, rozhodčí jízdu ukončí. Plné znění pravidel je pak možné prostudovat v příloze respektive na stránkách soutěže.

3 Konstrukce chasis 3.1 Modelování Návrh mechanických součástí robotu byl proveden v programu Blender, který slouží mimo jiné jako 3D opensource modelovací nástroj. Jednotlivé součásti byly následně vytištěny na 3D tiskárně. Na obrázku níže je pohled zepředu robotu. Na obrázku jsou znázorněny, také vnější rozměry. Výška je spíše orientační, protože nejsou započteny velikosti součástek. Půdorys je, jak stanovují pravidla, 10x10 cm.

2 / 21

Page 3: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

O3.1 Pohled zepředu na robot, rozměry.

3.2 Radlice pro čidla čáry Pro soutěž sledování čáry máme k dispozici přídavnou “radlici” na níž jsou umístěny infračervené reflexní senzory. Toto byl původní návrh a nakones jsme se rozhodli onu “radlici” nahradit lineární kamerou TSL1401CL, která je v sekci senzorů popsána níže. Robot s přídavnou radlicí by vypadal následovně:

O3.2 Radlice se senzory připevněná k robotu.

3.2 Motory rozmístnění → převodovka Abychom docílili co největšího tahu robotu, což se bude hodit při soutěži miniSumo, rozhodli jsme se pro pohod 4x4. Každé kolo má vlastní DC motor s převodovkou. Jak je zmíněno výše, robot nesmí přesáhnout

3 / 21

Page 4: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

rozměry půdorysu 10x10 cm, proto jsme umístily motory za sebe a pro 2 z nich jsou vymodelovány převody 1:1. Situace je dobře viditelná na následujícím obrázku:

O3.3: Fotka bříška našeho robůtku

3.3 Kola Kola jsou vyrobena z hliníku na CNC u spřízněného technika. Mají kruhovou díru na hřídel, kterou je kolmo z obou stran možno přitáhnout šrouby. Jsou navržena tak aby se na ně později nalepil povrch “pneumatik”.

3.4 Pneumatiky O povrchu koleček jsme dlouho přemýšleli. Před dvěma lety jsme využili nanopodložku, jenž se sice co se týče tření osvědčila, avšak při opravdovém záběru se z ní odštípáváli a odlétaly kousky. Otázka pneumatik dosud není dořešena, ve hře jsou materiály: Polyurethan, lakovací vosk, nanopodložka, silikonové bužírky, silikon z tavné pistole, chemopren. V případě že se kolečka budou odlévat jsme navrhli formu pro odlévání, pro vytisknutí na 3d tiskárně. Domluvili jsme spolupráci s Ph.D. Františkem Kučerou z Fakulty chemické, se kterým budeme mít konzultaci ohledně výroby polyurethanových pneumatik popřípadě z jiného materiálu.

3.5 Baterie Pro napájení jsme využili baterii LiPol o napětí 7,4V a kapacitě 1000mAh.

3.6 Shield pro STM32 Pro propojení veškerých snímačů a aktuátorů s výpočetní jednotkou byla navržena násadná DPS (tzv. shield). Ten obsahuje:

Konetory Senzory

4× čidla čáry (4 piny každé) 4× ultrazvokové senzory (4 piny každý) 1x řádková kamera

Aktuátory

4 / 21

Page 5: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

4x motor (2 piny každý) Výpočetní jednotka

1x STM32F4­Discovery (2x [2x25] řadový konektor) Komunikace

1x UART debugging konektor (4 piny) Baterie

1x LiPol baterie (2 piny) Integrované obvody:

Budiče 2x MC33932 dvoukanálové

Stabilizátor napětí 1x LDO Stabilizátor stejnosměrného napět 5V LF50CDT­TR

Na následující straně je kompletní schéma zapojení Shieldu. V sektoru A5­6 je zapojen Low Dropout stabilizátor na 5V, který napájí jak senzory, tak řídicí desku STM32F4Discovery. V sektoru A4 je zapojení DIP přepínače, pomocí něhož se volí aktuální mód robotu. K dispozici jsou módy: line follow, mini sumo, race a debug. První 2 jsou určeny přímo pro zmíněné soutěže, režim debug je určen pro ladění a testování. Poslední režim race je zde pro případ, že už před samotnou soutěží už budeme mít vše hotovo, abychom mohli robot připravit ještě pro jednu disciplínu. Dále na schématu jsou v sektoru B3 až D6 zapojeny dvo dvojtné H­můstky MC33932 pro ovládání motorů. Na souřadnicích A1­B1 jsou konektory pro připojení čtyř ultrazvukových čidel. Na A2­B2 jsou také obdobně 4 konektory, tentokrát pro připojení čtyř IR reflexních čidel CNY70, které budou umístěny v jednotlivých rozích robotu. V sektoru D3­4 je konektor pro připojení řádkové kamery TSL1401CL. Připojení výše popsaných periferií k řídící DPS STM32F4Discovery můžete vidět v sektoru C1 až D2.

5 / 21

Page 6: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

6 / 21

Page 7: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

4 Desky plošných spojů 4.1 Návrhový systém Pro návrh DPS byl použit program Eagle, který nabízí rychlé a intuitivní prostředí pro návrh desek plošných spojů. Navic obsahuje rozsahlou sbírku knihoven součástek ze sortimentu Farnell.

O4.5 Motiv DPS ­ TOP O4.6 Motiv DPS ­ BOTTOM

O4.7 Osazovací plán DPS.

7 / 21

Page 8: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

Nakonec jsme se rozhodli upustit od radlice, takže tato DPS pro řadu CNY70 nikdy nevznikla. Na Shield je zařazen pouze konektor pro připojení řádkové kamery. Pro jednotlivé disciplíny je možné potřebné senzory připojit a nepotřebné naopak jednoduše odpojit. Vše je propojeno pomocé praktickýchkonektorů.

5 Senzory 5.1 Čidlo reflexivity Pro detekci okraje arény v soutěži mini­sumo a pro detekci čáry trajektrorie v soutěži line­follower bylo zvoleno čidlo CNY70, jelikož jsme s ním měli tu čest je za přiměřenou cenu, a měli jsme ještě pár kusů takže jsme je nemuseli dokupovat. Integruje v sobě IR diodu jako vysílač a fototranzistor jako příjmač v kompaktním pouzdře. Jeho výstupem je tedy hodnota napětí na tranzistorovém kolektoru, jenž je úměrná reflexivitě povrchu jenž je přítomný ve vzdálenosti cca půl centimetru od detekční strany. Bílá barva tedy způsobí vyšší hodnoty napětí než černá.

O1: Čidlo reflexivity CNY70

5.2 Ultrazvukové čidlo vzdálenosti Na robotu jsme se rozhodli použít 4 ultrazvuková čidla HC­SR04, která svým dosahem (40dm) dostačují potřebné detekované vzdálenosti protivníka v soutěži minisumo (teor. max 77cm). Čidla jsme nakoupili asi ve větším počtu ze zahraničí, kdy i jediný kus s dopravou stál 30Kč/ks. Což nás ohromilo jelikož minulý rok jsme kupovali 2ks s velmi podobnými parametry za 250Kč/ks. Neshodli jsme se na tom jak je možné že cena tak klesla. Možné je, že je to vyšší poptávkou od vývojářů například Arduina, nebo použitím více levných běžných součástek namísto jednoho integrovaného čipu (tak jak to měl to starší dražší čidlo). Popřípadě jestli jde o kvalitu provedení DPS či zvukových hlav popřípadě kvalitu velikost detekčního laloku. Každopádně s čidly je možné měřit v potřebném rozsahu, což nás v kombinaci s tak nízkou cenou velmi potěšilo.

O2: Ultračidlo HC­SR04

5.3 Řádková kamera

Řádková kamera TFC Camera, z TFC­Kit: The Freescale Cup Intelligent Car Development System. 8 / 21

Page 9: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

Řádková kamera byla zapůjčena Ing. Richterem, Ph.D.

5.3.1 Základní Údaje

Snímač TSL1401CL se skládá z lineárního senzorového pole o 128 foto diodách. Jako vstupy slouží hodinový signál CLK a sériový vstup SI. Integrační čas je nastavitelný a pochybuje se v rozmezí 34μs až 100ms. Výstupem pak je analogový signál na pinu AO, který drží napětí přímo úměrné světelné intenzitě dopadající na korespondující pixel. Kamera je již vybavena optikou, ostření je prováděno manuálně, fokální délka je 7.9mm.

Pohled zepředu Pohled zezadu Fotka s optikou

T5.3.1 Pinout

AO Analogový výstup

SI Seriový vstup

CLK Hodiny

VDD Napájení

GND Zem

5.3.2 Princip použití

Vyčítání dat z kamery probíhá postupně s pomocí pinů CLK a SI. Doba integrace se nastavuje intervalem mezi 19tým pulzem CLK a následujícím pulzem SI. Vyčítaná data pak jsou hodnoty získané předchozí integrací. Aby integrační čas byl nezatížen dobou převodu na AD převodníku, bude čtení dat předcházet „dummy“ čtení ve kterém provedeme nastavení integračního času bez skutečného čtení dat z předchozí integrace a následně vyčteme nová data regulérně.

5.3.3 Proč řádková kamera

Způsob snímání čáry musel probíhat opticky. Metody jak tuto informaci získat jsme zvažovali dvě, buď s pomocí využití pole reflexních čidel (stejná čidla která u Sumo módu používáme pro detekci okrajů) nebo použít kameru. Zvolili jsme druhou možnost a to ze dvou důvodů. Kamera nám díky svému vyššímu umístění umožní analyzovat dráhu dopředu a tak zrychlit dobu odezvy na vnější změny (zatáčky). Druhým důvodem je pak větší rozlišení, díky kterému budeme schopni detekovat čáru přesněji.

9 / 21

Page 10: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

6 Aktuátory 6.1 Motory Jelikož v obou soutěže jichž se účastníme je síla jenž je robot schopen vyvinout respektive jeho rychlost velmi důležitá, rozhodli jsme se použít 4 na místo pouhých 2 DC motorů použitých na robotu jenž jsme vyvynuli před 2­mi lety. Díky použití plastové chasis namísto merkurové jsme, totiž získali velkou rezervu v hmotnostním limitu. Používáme [Pololu 1162] (6V, 440RPM, 29:1),stejný typ DC motorů s převodovkou jako naposledy, pouze jsme 2 přikoupili. Při objednání u českého distributora, měli na skladu opět poslední kus, takže jsme museli čekat na dodávku z ameriky, a tak byly motory doručeny až pár dní před odevzdáním dokumentace.

O3: DC motor Pololu 1162

7 Výpočetní hardware 7.1 MCU Platform Pro řídící jednotku byla zvolena vývojová deska STM32F4­Discovery, z důvodů dostatečného počtu pinů (100), množství periferií pro další rozvoj a dostupnosti. Jeden kus jsme v týmu měli zakoupený a pro vývoj jsme si zapůjčili další ze školy. Jak už název napovídá vývojová DPS je osazená čipem STM32F4, který obsahuje dostatečný počet TIMerů (8) pro PWM pro budiče motorů, infračidla a ultrazvuková čidla. Dále je vybavena rozhráním UART pro debugging, SPI pro ovládání řádkové kamery a akcelerometrem, jenž jsme prozatím nevyužili.

O4: STM32F4 Discovery

8 Prostředí, knihovna & debugger 8.1 CodeBlocks & libopencm3 & BlackMagicDebugger Pro vývoj nad naším MCU od STM jsou uvolněna mnohá IDE. Jedněmi z používanějších jsou například TrueStudio, IAR, CoIDE. Nakonec jsme se ale rozhodli pro kombinaci otevřeného vývojového prostředí

10 / 21

Page 11: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

[CodeBlocks] spolu s open­source knihovnou pro stm [libopencm3] a debuggerem [BlackMagic], jelikož postup se nám zamlouvala myšlenka open­source a multiplatformnosti (ne všichni používáme OS Windows), a taktéž proto, že na stránce robotiky na VUT byl uveden pěkný návod na rozchození v této kombinaci. Ve spolupráci s Ing. Františkem Burianem jsme flashnuli [BlackMagic] debugger na [Discovery] a mohli jsme začít programovat. Pro verzování jsme použili velmi rozšířený a solidní program git, spolu s repozitářem na githubu.

8.2 Návod OpenSource STM32 V rámci projektu byl taktéž vypracován návod [OpenSource STM32], jenž popisuje postup instalace a nastavení jednotlivých součástí spolu s možnýmy problémy a drawbacky jenž mohou nastat, právě při použití námi zvolené kombinace prostřédí a knihovny. Odkaz je uveden v seznamu literatury.

9 Nízkoúrovňový software 9.1 Soubory zdrojových kódů Jména zdrojových kódů:

actuator actuator_dcmotor ­ nastavéní a ovládání motorů

dev ­ zařízení dev_buzzer ­ jednoduché vyvolání zvuku togglováním gpio pinu dev_LCD_HD44780 ­ pro přístup k LCD při debuggingu ­ lze zapisovat pomocí fprintf dev_serial ­ pro přístup k UART rozhraní ­ lze zapisovat pomocí fprintf

main ­ hlavní smyčky programu main ­ obsahuje detekci jumperů na pinech a následnou volbu módu main_debug ­ obsahuje hlavní smyčku pro mód debugging main_line ­ obsahuje hlavní smyčku pro mód line­followera main_sumo ­ obsahuje hlavní smyčku pro mód mini­sumo

robot ­ konfigurace a přerušení robot_config ­ obsahuje inicializace všech periferií, spolu s definicí hlavní struktury S_robot robot_interrupts ­ obsahuje definice všech obslužných funkcí

sensor sensor_button ­ obsluha a nastavení tlačítek, přepínačů a jumperů sensor_infrared ­ vyčítání a inicializace čidel CNY70 sensor_lineCamera ­ obsluha řádkové kamery sensor_ultrasonic ­ obsluha a nastavení ultrazvukového čidla

other waitin ­ nastavení časovačů a funkce pro měření intervalů [tic], [toc] led_f4 ­ predefinice a nastavení led pinů a portů LCD_HD44780 ­ nízkoúrovňová obsluha komunikace se znakovým zobrazovačem

9.2 Popis kódu

9.2.1 Struktury v kódu

Jednotlivé senzory, zařízení a aktuátory mají vždy vytvořenou strukturu (s prefixem S_), jenž zastřešuje všechny potřebné proměnné pro jednotlivé komponenty. Např: piny, porty, nastavení šířky displaye, střídy, koeficienty pro přepočty, prahovací úrovně atp. Poté má každá komponenta předdefinováno globální pole (s prefixem predef_) s používanými nastaveními jejich proměnných.

11 / 21

Page 12: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

9.2.2 Inicializace periferií

V iniciačních procedurách (INIT_) jednotlivých komponent se nastaví a spustí potřebné periferie mikrokontroléru právě na základě výběru jednoho prvku pole z předdefinovaných nastavení komponent a vrátí ukazatel do pole predef_. V zdrojovém kódu [robot_config] jsou potom inicializace jednotlivých skupin komponent zastřešena tak aby se jednotlivé ukazatele uložili do hlavní struktury S_robot.

9.2.3 Struktura S_Robot

Hlavní struktura [S_robot] obsahuje instance struktur skupin komponent (prefix S_robot_). Struktury skupin komponent zastřešují všechny instance jednotlivých komponent. Obsahují ukazatele na jednotlivé komponenty. Tato téměř objektová kompozice zaručuje, že ke všem potřebným proměnným se můžeme dostat skrze instanci struktury S_robot. Tato je globální aby do ní mohli přistupovat i obslužné rutiny přerušení (ISR). Avšak tam kde to jde je pro přehlednost předávána ukazatelem jako parametr každé funkce jenž ji potřebuje.

T1: Příklady hlavních struktur

Structure encapsulating ultrasonic sensor

typedef struct _S_sensor_ultra uint32_t clk; uint32_t txport; uint32_t rxport; uint16_t txpin; uint16_t rxpin; // interrupts uint32_t exti; // exti line uint8_t irq; // NVIC irq uint8_t priority; // tick counting uint32_t ticksStart; uint32_t ticksEnd; uint32_t nTicks; // distance double dist; double coef[ROB_ULTRA_COEF_COUNT]; // dist = coef[0] + coef[1]*nTicks + coef[2]*nTicks2 + .. + coef[N]*nTicksN // .. where N = ROB_ULTRA_COEF_COUNT S_sensor_ultra;

Structure defining all ultrasonic sensors of the robot

typedef struct _S_robot_ultras S_sensor_ultra* uFL; // pointer to front left ultrasonic sensor S_sensor_ultra* uFR; // pointer to front right ultrasonic sensor S_sensor_ultra* uL; // pointer to side left ultrasonic sensor S_sensor_ultra* uR; // pointer to side right ultrasonic sensor S_sensor_ultra* u[ROB_ULTRA_MAX_COUNT]; // array of poiners to ultra_predef S_robot_ultras;

Structure defining all components of the robot

12 / 21

Page 13: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

typedef struct _S_robot // sensors S_robot_buttons btns; S_robot_ultras ults; S_robot_infras infs; S_sensor_lincam* cam; // devices S_dev_lcd* lcd; S_robot_buzzers buzs; // actuators S_robot_dcmotors dcs; // usart FILE *fus; // FILE USART - pointer to usart device to write strings to uint8_t rbuf[ROB_US_RBUFSZ]; // recieve buffer (using ring buffer logic) uint8_t tbuf[ROB_US_TBUFSZ]; // transmission buffer (using ring buffer logic) // lcd FILE *flcd; // FILE LCD - pointer to lcd device display to write strings to uint8_t lcd_dbuf[ROB_LCD_DBUFSZ]; // lcd data buffer (will use ring buffer logic)

9.3 Syntaxe zdrojových kódů Pro unifikaci stylu všech zdrojových kódů bylo vytvořena a použita šablona [gr4viton_2014_A], jenž zaručuje stejné vzezření jednotlivých souborů.

9.4 Knihovna pro LCD V rámci projektu byla pro debugging vytvořena obecná knihovna pro výpis na znakový display [LCD_HD44780], jenž umožňuje komunikaci jak v 8 tak v 4bitovém módu a podporuje základní příkazy pro posun, mazání atd. Tato knihovna bude později uvolněna jako open­source. Pro jednoduché používání je knihovna doplněna o rozhraní [dev_LCD_HD44780] jenž umožňuje případné jednoduché připojení více LCD, kdy se ke každému zařízení přistupuje jako k souboru. Zápis je tedy prováděn příkazem fprintf, kde je zvolen “soubor” rozhraní LCD.

10 Hlavní program u sledování čáry třeba jestli ty nějaký regulátory, popřípadě přifrnknout tam pár větama ten simulátor co našel jirka.. a u řízení sumobota co tě napadne.. zejména novinka že budeme mít 4 motory, a 4 ultračidla.. ­ rychlost detekce, síla..

10.1 Sledovač čáry

10.1.1 Princip

Sledovač čáry můžeme brát jednoduše jako klasický zpětnovazební regulátor, kde řídíme polohu čáry na snímači na konstantu (na polohu uprostřed) a změna relativní polohy čáry, kterou pozorujeme jednořádkovou kamerou, představuje poruchu kterou je třeba kompenzovat, aby došlo k ustálení polohy uprostřed. O jakou hodnotu je třeba kompenzovat, se dozvíme s pomocí kamery která je připojená do zpětné vazby a hodnotu odchylky od konstanty nám změří.

13 / 21

Page 14: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

O10.1: Princip regulace Robota v modu Line Follower (poloha0 = střed)

10.1.2 Kamera

Řádková kamera byla zvolena díky zvýšenému rozlišení což nám dává schopnost reagovat už na poruchy s nízkou amplitudou a obecně díky možnostem plynulejší regulace. Druhým důvodem, pak je schopnost pozorovat čáru nenulovou vzdálenost před vozidlem, díky čemuž budeme částečně kompenzovat výpočetní zpoždění a budeme schopni reagovat na poruchy předtím než se k ním robot dostane. Toto řešení bylo zvoleno namísto pásu reflexních čidel, kde by výše zmíněné výhody neplatili. Vzhledem k fokální délce 7.9mm a velikosti čipu 12mm, pozorovací úhel kamery je 73.7°, aby čára o šířce 1.5cm zabírala alespoň 8px, je třeba dát kameru do výšky 24cm nebo níže. Tato skutečnost nepředstavuje problém.

10.1.3 Regulátor

V tuto chvíli ještě není rozhodnuté konečné řešení kvůli zdržení s konstrukcí robota a rozhodnutí se bude odvíjet podle toho, který algoritmus se v nadcházející praxi více osvědčí. V tuto chvíli je rozpracované řešení formou PID regulátoru a nezávisle pomocí Fuzzy regulace. Fuzzy regulace se jeví jako velice atraktivní řešení právě díky vysokému rozlišení kamery a vzhledem k relativní výpočetní nenáročnosti. V prostředí Matlab byl navrhnut regulátor kde množina crisp, která byla reprezentována změnou polohy čáry vůči středu, je fuzzyfikována do hodnot [Left, Right, Inbetween]. Regulátor pracující z těmito hodnotami má jako výstup míru zpomalení motoru, které povede k zatočení, množina [TurnLeft, TurnRight, GoStraight], následnou defuzzyfikací obdržíme číslo v rozsahu [­1,1] hodnoty < 0 povedou k instrukci na zpomalení takové aby došlo k otočení doleva a >0 naopak doprava. Reguláror je uvažován tak, aby změny v okolí 0 byli minimální a nedošlo ke zbytečnému kmitání a se stoupající odchylkou se hodnota akčního zásahu zvětšuje, na obrázku níže si můžeme všimnou že v případě maximální odchylky vlevo (poloha čáry == ­64), by akční zásah znamenal zastavení pohonu levé strany a vozidlo by se do znovu nalezení čáry otáčelo na místě. Další obrázek pak reprezentuje závislost výstupu regulátoru na vstupu pro celý rozsah.

14 / 21

Page 15: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

Poloha čáry = ­64, [1;2;3] <­64; 64>

Směr zatáčení = ­1, [1;2;3] <­1.35; 1.35>

O10.2: Příklad vyhodnocení fuzzy regulátoru

Poloha čáry = ­37.9, [1;2;3] <­64; 64>

Směr zatáčení = ­0.27, [1;2;3] <­1.35; 1.35>

O10.2: Příklad vyhodnocení fuzzy regulátoru

15 / 21

Page 16: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

G10.1: Charakteristika regulátoru (X=poloha čáry; Y=Směr zatáčení)

10.2 Mini-Sumo

10.2.1 Taktika

Z principu je program pro mini­sumo jednodušší než sledovač čary, pokud se tedy pokoušíme o standartní seek & destroy taktiku. Tedy nevidíme­li protivníka, začneme se rychle otáčet na jednu stranu, jakmile ho zaznamenáme dootočíme se na něj a přepneme do módu přibližování a jedeme středně rychle k němu a vyrovnáváme odchylku aby jsme ho měli pořád na mušce. Jakmile už ho máme po nějakou dobu uprostřed znamená to, že už se pravděpodobně přetláčíme takže můžeme zapnout motory naplno ­ berserk. Mód hledání může být doplněn o nahodilé ježdění skrze bludiště. Po celou dobu musíme vždy kontrolovat jestli nám některé z okrajových čidel nezahlásí najetí na okrajovou čáru, v tom případě se od ní musíme co nejrychleji dostat.

10.2.2 Stavový diagram

Prakticky vzato lze celý program vyjádřit stavovým diagramem:

16 / 21

Page 17: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

O10.2.2: Stavový diagram pro mini­sumo

V budoucnu můžeme pro detekci přetláčení využít inerciální akcelerometr osazený na STM32, namísto prostého intervalu než se zapnou berserk čidla: Vidím protivníka před sebou, jedu dopředu ale akcelerometr hlásí, že nejedu → Zapnout motory naplno.

11 Účast v soutěži Sice už jsme zaregistrováni, ale vzhledem k tomu že soutěž bude probíhat až 21­22.6 nemůžeme se v tuto chvíli pochlubit našimi jistě skvělými výsledky. Avšak, protože jsme se již účastnili předchozího ročníku, je na místě se zamyslet, jak tato předchozí zkušenost ovlivnila náš letošní projekt.

11.1 Konstrukční úpravy Vítězem minulého robotické dne byl účastník, jehož robot se od našeho lišil v dvou zásadních rozhodujících odlišnostech. Byl to tvar konstrukce a počet motorů. Vítězný robot měl totiž extrémně nízký profil, díky čemuž jeho těžiště bylo nízko a mnoho vítězství získal tak že poté co se srazil s druhým robotem, podařilo se mu druhého robota ze spodka odlehčit a následně odvézt zatímco on byl proti této taktice takřka imunní. Z tohoto důvodu jsme letos tiskli obal na míru na 3D tiskárně a podařilo se nám tak naše těžiště snížit. Při souboji s výherním robotem jsme narazili na ještě jeden problém, přestože díky příhodnému sražení

17 / 21

Page 18: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

robotů nemohl vítěz využít své nižší těžiště, náš robot nebyl schopen druhého tlačit. Po dotázání jsme zjistili že přestože vítěz obsahoval motory podobné těm naším, namísto dvou měl čtyři a byl schopen lépe kompenzovat smyk. Tento poznatek vedl k tomu že náš letošní návrh obsahuje oproti minulému čtyři motory.

11.2 SW úpravy Úprava priority. Při minulé účasti jsme zaznamenali mrzutý problém. Robot měl implementované HW přerušení, kde v případě nájezdu na čáru, měl dle použitého čidla udělat manévr který by ho zavedl od čáry pryč. Bohužel toto přerušení mělo vyšší prioritu a to i v okamžiku kdy už robot tlačil druhého robota pryč. To mělo za následek spuštění manévru vyhnutí se čáře při přetlačování na okraji ringu a druhý robot nás mezi tím stačil vytlačit ven ze hřiště. Tyto abstraktnější scénáře v tomto projektu zohledňujeme tak, že za provozu náš robot prochází více stupni priority a v konečných stupních zápasu bude HW přerušení fungovat jinak než v pátracích částech.

12 Závěr Tento projekt byl pro nás přínosem nejen v oblasti elektro­teoretické a programovací, ale taktéž jsme se naučili využívat prostředky pro týmovou spolupráci (git, gdocs) a pracovat v týmu. Taktéž jsme si vyzkoušeli, že ne vždy jsou výsledky 3d tisku optimální a hodně záleží na nastavení. Na nadcházející soutěž už se těšíme, jelikož ačkoliv ještě nejsme úplně u konce, máme díky chasis na míru, návrhům řízení a programu vysoké ambice.

13 Poděkování Abychom nebyli sobečtí chtěli bychom na tomto místě poděkovat těm, kteří nám při řešení projektu pomohli.

Ing. Vlastimil Kříž ­ Děkujeme za cenné rady a podporu. Bc. Lubomír Jagoš & ÚTEE ­ Děkujeme za spolupráci při tisku na 3D tiskárně Bc. Honza Brázdil ­ Děkujeme za spolupráci při tisku na 3D tiskárně a za cené rady a náměty při

návrhu DPS pro budiče Ing. František Burian ­ Děkujeme za rozsáhlé a věcné rady ohledně knihovny libopencm3 a

verzovacího systému git. Mgr. František Kučera, Ph.D. ­ Děkujeme za kladný postoj při pomoci s výrobou pneumatik. Ing. Miloslav Richter, Ph.D. ­ Za zapůjčení řádkové kamery

14 Bibliografie 1. Knihovna libopencm3 [online]. [cit. 2014. 07.05] http://libopencm3.org/wiki/Main_Page 2. Stránka robotiky na VUT [online]. [cit. 2014. 07.05] https://sites.google.com/site/vutrobotika/ 3. Stránka soutěže ­ pravidla soutěží [online]. [cit. 2014. 07.05] http://www.robotickyden.cz/ 4. Návod OpenSource STM32 [online]. [cit. 2014. 07.05] http://goo.gl/SSdBK2 5. repozitář projektu na github.com [online]. [cit. 2014. 07.05] https://github.com/gr4viton/stm32­robotics 6. Šablona: DOCSTYLE: gr4viton_2014_A [online]. [cit. 2014. 07.05] http://goo.gl/1deDBa 7. Ŕádková kamera použití [online]. [cit. 2014. 07.05] https://community.freescale.com/docs/DOC­1030 8. Řádková kamera info [online]. [cit. 2014. 07.05]

http://www.ams.com/eng/Products/Light­Sensors/Linear­Array­Sensors/TSL1401CL

15 Přílohy

18 / 21

Page 19: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

15.1 PINOUT T15.1 ­ Tabulka propojení pinů

Periferie Piny STM32 con Piny popořadě Prefix / sufix Funkce Určení

GPIO A0 × × × Tlačítko Spouštěcí GPIO C6; C7; C8; C9 × × × Přepínače Volba módu ADC C1 4 +5V; GND; [Vin]; GND IFL_ Infračidlo Levé přední ADC C0 4 +5V; GND; [Vin]; GND IFR_ Infračidlo Pravé přední ADC C3 4 +5V; GND; [Vin]; GND IBL_ Infračidlo Levé zadní ADC C2 4 +5V; GND; [Vin]; GND IBR_ Infračidlo Pravé zadní

GPIO+TIM2 D2; D0 4 +5V; GND; [ECHO; TRIG] UFL_ Ultračidlo Levé přední GPIO+TIM2 D3; D1 4 +5V; GND; [ECHO; TRIG] UFR_ Ultračidlo Pravé přední GPIO+TIM2 D4; D6 4 +5V; GND; [ECHO; TRIG] UL_ Ultračidlo Levé boční GPIO+TIM2 D7; D5 4 +5V; GND; [ECHO; TRIG] UR_ Ultračidlo Pravé boční GPIO+TIM3 A6 × [EN; PWM] _FL Budič pro DCmotor Levý přední GPIO+TIM3 A7 × [EN; PWM] _FR Budič pro DCmotor Pravý přední GPIO+TIM3 B0 × [EN; PWM] _BL Budič pro DCmotor Levý zadní GPIO+TIM3 B1 × [EN; PWM] _BR Budič pro DCmotor Pravý zadní

× × 2 OUT1; OUT2 _FL DC Motor Levý přední × × 2 OUT1; OUT2 _FR DC Motor Pravý přední × × 2 OUT1; OUT2 _BL DC Motor Levý zadní × × 2 OUT1; OUT2 _BR DC Motor Pravý zadní

UART3 C11; C10 4 +5V; GND; [RX; TX] Komunkace UART debug ADC+GPIO C4; B4; B6 5 +5V; GND; [A0; SI; CLK] Řádková kamera

× × 2 VBAT, GND Baterie LiPol

15.2 Pravidla soutěže Line Follower Úkolem robota v soutěži Line Follower je sledovat černou čáru a projet po ní trať v co nejkratším čase.

15.2.1 Průběh soutěže

Robot po odstartování projede trať vyznačenou černou čarou. Výsledné pořadí robotů je dáno časem, který robot pro jízdu spotřeboval. Čas se měří od signálu rozhodčího ke startu do okamžiku, kdy přední část robota překročí cílovou čáru. Pokud by doba přesahovala 3 minuty, rozhodčí jízdu ukončí. Při startu musí být robot pině za startovní čárou. Robot, který ztratí sledovanou čáru, musí obnovit kontakt v bodě, kde ho ztratil nebo v některém místě blíže ke startu. Organizátoři mohou povolit další soutěžní kola / jízdy, pro určení pořadí v první části soutěže se použije nejlepší výsledek ze všech jízd robota. Ve druhé části soutěže jsou vedeny jízdy vyřazovacím způsobem. V případě rovnosti časů mohou organizátoři vyzvat příslušné soutěžící k další jízdě.

15.2.2 Robot

Robot nesmí být nebezpečný nebo nadmíru obtěžující. Robot je autonomní (samostatný) a při závodě včetně startu není povoleno žádné jeho spojení s externími zařízeními. Od okamžiku, kdy soutěžící robota odstartuje, se jej nikdo nesmí dotýkat ani jakkoli zasahovat do jeho činnosti a to až do té doby, kdy to rozhodčí opět povolí. Maximální rozměry robota jsou 32(š)x32(v) cm, délka není stanovena.

15.2.3 Hřiště

Plocha hřiště je bílá. Čára je černá o šířce cca 1,5 cm. Čára neprotíná sama sebe (nemá křižovatky). Startovní a cílová čára jsou vyznačeny dvěma kolmými značkami ve vzdálenosti 5 cm od čáry. Minimální vzdálenost čáry od okraje hřiště je 15 cm, minimální průměr zatáčky je 10 cm. Robot, který překročí okraj

19 / 21

Page 20: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

hřiště, bude diskvalifikován. Za překročení okraje se považuje situace, kdy kterékoliv kolo, pás nebo noha robota zasahuje celá mimo hřiště.

15.2.4 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í.

15.3 Pravidla soutěže Mini Sumo Úkolem robota v soutěži Mini Sumo je vytlačit protivníkova robota z ringu.

15.3.1 Průběh soutěže V kruhovém ringu soutěží vždy dvojice robotů, kteří jsou před startem umístěni na dané startovní pozice. Po odstartování souboje se snaží vytlačit jeden druhého mimo ring. Pokud se jeden z robotů dotkne jakoukoli svou částí plochy mimo ring, prohrává. To platí i v případě, když z robota odpadne jakákoliv část a ta následně bude protivníkem vytlačena nebo se sama dotkne plochy mimo ring.

15.3.2 Robot Robot nesmí být nebezpečný nebo nadmíru obtěžující. Robot je autonomní (samostatný) a při souboji není povoleno žádné jeho spojení s externími zařízeními. Od okamžiku, kdy soutěžící robota odstartuje, se jej nikdo nesmí dotýkat ani jakkoli zasahovat do jeho činnosti a to až do ukončení zápasu. Hmotnost robota: maximálně 500 g. Maximální rozměry robota jsou 10(š)x10(d) cm, výška není omezena. Robot může být vytvořen z jakéhokoliv materiálu. Po startu robot může změnit své rozměry a tvar libovolným způsobem. Robot se vlastní silou může libovolně otáčet či převracet, může se také rozdělit na několik samostatných částí. Robot nesmí být agresivní a destruktivní. Činnost robota nesmí vést k poškození soupeřova robota ani dalších zařízení, například ringu. Robot nesmí vypouštět žádné kapalné ani plynné látky, nesmí vydávat kouř nebo oheň, nesmí znečišťovat ring ani soupeřova robota. Robot také nesmí nic vrhat nebo střílet a nesmí používat žádné prostředky pro znemožnění pohybu soupeře. Robot musí být v neustálém kontaktu s ringem. V případě rozdělení robota musí v každém okamžiku být v kontaktu s ringem alespoň jedna část robota. Může být použita i létající část robota (jako například navigační prostředky, kamery apod.), v kterémkoli okamžiku však soupeři musí být umožněno vytlačit protihráče. Technologie, které mění hmotnost robota, nejsou dovoleny a je zakázáno použít prostředky k přichycení robota k ringu. Při kvalifikaci robota se použije následující pravidlo k posouzení způsobilosti z hlediska adheze: Robot se má za způsobilý, pokud je položen na list papíru a při aktivovaných technologiích ke zvýšení adheze zůstane po zvednutí robota do výšky papír ležet na podložce.

15.3.3 Ring Ring, na kterém roboti soutěží, je plochý disk o průměru 77 cm. Základní povrch ringu je matně černý, okraje ringu jsou leskle bílé o šířce 2,5 cm. Povrch ringu je jednolitý a neobsahuje žádné předěly nebo vyvýšeniny, které mohou ovlivnit pohyby robota. Startovní čáry jsou hnědé o šířce 1 cm a délce 10 cm a jsou umístěny 10 cm od sebe ve středu hřiště.

20 / 21

Page 21: Robot pro Robotický den 2014 - uamt.feec.vutbr.czrobotika/2014_MRBT/2014_MS11a_minisumo… · Robot pro Robotický den 2014 Dokumentace k projektu do předmětu MRBT Vedoucí: Vlastimil

15.3.4 Pravomoc rozhodčího a organizátorů, odpovědnost Pokud soutěžící či robot poruší pravidla, může rozhodčí souboj 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 pravidla soutěže kdykoli změnit, například podle počtu účastníků nebo aktuálních 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í.

21 / 21