1 Issues v L A TEX Odsazeni prvniho radku v kazdem odstavci. Graficka uprava a oramovani tabulky. I2C upravit nejak rozumeji na I 2 C doplnit kde je DOPLNIT vlozit obrazek nebo jiny objekt kde je OBRAZEK trosku dost lita jedna tabulka z papiru uvozovky oramovani tabulek a styl Reference: ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/listings/listings.pdf http://www.it.cas.cz/manual/latex/g.html - bibliografie Křížové odkazy odkazy napříč uvnitř textu http://vavricek.cs.vsb.cz/index.php/latex/drobečky http://www.root.cz/clanky/jak-na-latex-plovouci-prostredi/ Datasheety: ATmega128, GPS, accelerometer, compass, součástky na desce, Bluetooth modul, WiFi modul, Odkazy: SD card protokol, PWM řízení, Podobná zařízení: arduino, ZigBee, Kecy: systém PWM ( kde???) 1A vypadá jako šipka 1
Obsah 1 Issues v L A TEX 1 2 Motivace, využití a výhody 3 3 Uživatelská specifikace Yunifly 4 3.1 Instalace a implementace hardwaru............................. 4 3.1.1 Deska Basic...................................... 4 3.1.2 Deska Main...................................... 4 3.1.3 Baterie napájení.................................. 4 3.1.4 Motory, serva, regulátory.............................. 5 3.1.5 Analogové vstupy.................................. 5 3.1.6 Digitální vstupy/výstupy.............................. 5 3.1.7 Komunikace...................................... 5 3.2 Funkce hardwaru....................................... 5 3.2.1 Komunikace desky Basic a Main.......................... 5 3.2.2 MicroSD/SDHC karta................................ 6 3.2.3 Serva a regulátory řízené pomocí PWM...................... 6 3.2.4 RC přijímač...................................... 6 3.2.5 GPS.......................................... 6 3.2.6 Akcelerometr..................................... 7 3.2.7 Kompas........................................ 7 3.2.8 Bluetooth....................................... 7 3.2.9 WiFi.......................................... 7 3.2.10 Tabulka testovaných externích zařízení....................... 7 3.3 Náklady na pořízení elektroniky Yunifly.......................... 8 4 Podrobná specifikace Yunifly Datasheet 8 4.1 Hmotnost a rozměry..................................... 8 4.2 Pinová konfigurace...................................... 8 4.3 Schéma zapojení elektroniky................................. 10 4.4 Knihovna funkcí pro Yunifly................................. 10 4.4.1 Ovládání konektorů................................. 10 4.4.2 Komunikace s deskou Basic............................. 12 4.4.3 Komunikace s externími moduly.......................... 12 4.4.4 Řízení stability letounu............................... 13 4.5 Firmware pro desku Basic.................................. 14 4.5.1 Použití firmwaru................................... 14 4.5.2 Nouzový režim.................................... 14 5 Swarm robotics a elektronika Yunifly 14 5.1 Základní algoritmus umělé inteligence........................... 14 5.2 Diagramy architektury algoritmu umělé inteligence.................... 15 5.3 Použití umělé inteligence pro Yunifly............................ 15 6 Shrnutí 16 2
2 Motivace, využití a výhody Stále častěji se setkáváme s mnohými typy robotů od ručně ovládaných strojů až po autonomní mobilní roboty či výrobní linky. Samostatnou kategorii představují bezpilotní letouny, ponorky nebo jiné stroje s možností pohybu ve všech rozměrech. Pokud vyvíjíme nebo již vlastníme zařízení s podobným účelem, potřebujeme lehkou, výkonnou a mechanicky odolnou elektroniku, která bude náš stroj řídit. Elektronika Yunifly je dvouprocesorová programovatelná řídicí elektronika, která je primárně určená pro řízení lehkých, nízkonákladových letounů. Hmotnost i rozměry desky jsou minimalizovány (podrobně v kapitole DOPLNIT Datasheet rozměry ). Pořízovací cena Yunifly je srovnatelná s cenou běžného RC přijímače. Můžeme ji využít jako rozšiřující autonomní řízení standartních RC modelů nebo pro létání v režimu učitel/žák, nebot k řídicí desce můžeme připojit až čtyři na sobě nezávislé RC přijímače. Vzhledem k tomu, že Yunifly je možné libovolně programovat dle vlastního uvážení, můžeme celou elektroniku považovat také za vývojový kit pro účely bezpilotního létání. Pokud Yunifly srovnáme s již existujícími vývojovými kity, jako například DOPLNIT Arduino, nebo jednoúčelovými modelářskými moduly, shledáme mnoho zásadních výhod. 1. Autorovi není znám žádný finančně dostupný vývojový modul nabízející real-time ochranu proti selhání či poškození, které může náš letoun nevratně zničit. 2. Rozměry a hmotnost Yunifly je minimalizována tak, aby mohla být použita i v malých RC modelech. 3. Přiložený software i knihovna jsou kompatibilní se všemi procesory řady ATmega. 4. Desku je možné libovolně přeprogramovat vlastním programem bez jakýchkoliv omezení. Díky vestavěnému bootloaderu je možné oba čipy programovat přes sériovou linku například bezdrátově pomocí technologie bluetooth. 5. Pokud používáme podporu nouzového režimu, můžeme jeden z procesorů přeprogramovat dokonce za letu. 6. Yunifly je kompaktibilní s libovolných softwarem určeným pro procesory Atmel. Díky tomu můžeme využívat již existující vlastní knihovny. 7. Díky technologii bluetooth může Yunifly komunikovat s mobilním telefonem nebo být řízena přes mobilní internet. Součástí hardwaru je i knihovna záklaních funkcí v jazyce C++, určená pro obsluhu připojených zařízení, a řídicí program pro základní desku, který podporuje nouzový režim. Nouzový režim je automaticky spuštěn v případě hardwarového nebo softwarového výpadku řídicího procesoru. Pokud je letoun řízen ze země, nouzový režim je spuštěn právě v době ztráty signálu. Knihovna dále obsahuje funkce pro udržení stability během letu, které jsou použity při autonomním letu v nouzovém režimu. Stabilizační funkce řídí letoun na základě sdělené orientace vůči směru gravitace a požadovaného směru letu. Více informací o stabilizaci letounu je uvedeno v sekci DOPLNIT stabilizace. K Yunifly je možné připojit řadu dalších zařízení, některá z nich byla otestována a do knihovny Yunifly byly přidány funkce, které tato zařízení obsluhují. Podrobný popis těchto zařízení nalezneme v kapitole DOPLNIT Uživateslá specifikace Yunifly. Tato kapitola se dělí na obecný popis a možnosti použití, které jsou popsány v sekci DOPLNIT Instalace a implementace hardwaru. Seznam testovaných připojených zařízení včetně popisu je uveden v sekci DOPLNIT Funkce hardwaru. Předpokládá se také využití Yunifly včetně přiloženého softwaru k praktickému testování umělé inteligence a robotického učení popsaného v práci DOPLNIT Inteligence robotické populace ve virtuálním světě Bedřich Said, 2011. Více infomací je uvedeno v kapitole DOPLNIT AI testované programy. 3
3 Uživatelská specifikace Yunifly 3.1 Instalace a implementace hardwaru Elektronika Yunifly se skládá ze dvou částí, z desky Basic a desky Main. Obě desky jsou na sobě nezávislé a lze je použít jak samostatně, tak v níže DOPLNIT znázorněném propojení. Desky mezi sebou mohou komunikovat pomocí rozhraní I2C nebo USART. (DOPLNIT I2C a USART zdroj) Připojení jednotlivých zařízení k Yunifly není povinné. Nutné je pouze připojení napájení a deskou ovládaných zařízení. Podrobná specifikace všech zařízení je uvedena v DOPLNIT Datasheetu. 3.1.1 Deska Basic Deska Basic je řízena jedním AVR CPU ATmega128 (DOPLNIT odkaz na datasheet), které disponuje 4KB EEPROM, 4KB SRAM a 128KB flash paměti. Pokud používáme desku Basic propojenou s deskou Main, můžeme mít na Basic desce nahraný operační systém, který plní příkazy od Main desky. V případě, že Main deska přestane fungovat díky hardwarovému nebo softwarovému selhání, je Basic deska přepnuta do nouzového režimu a celý systém řídí sama nezávisle na Main desce. Díky tomu předejdeme zbytečné havárii letounu nebo jiného zařízení. Deska Basic disponuje 8 PWM výstupy, kde každý výstup může být připojen but přímo k regulátoru, nebo k decodéru, který zajistí připojení více na sobě nezávislých zařízení na jeden PWM výstup. Dále jsou vyvedeny dvě sériové linky a sloty pro připojení I2C, které umožňují komunikaci s libovolným externím zařízením. V neposlední řadě jsou vyvedeny dva ICP vstupy, které zpracovávají signál z RC přijímače. Díky tomu je možné letoun ovládat dvěma nezávislými RC vysílači. Tato skutečnost může být využita například při létání v režimu učitel/žák. Každý z výše zmíněných slotů lze také použít jako obecný digitální vstup nebo výstup. Jednotlivé piny nebo sloty lze konfigurovat programově za provozu desky. 3.1.2 Deska Main Deska Main je řízena obdobně jako deska Basic jedním AVR CPU ATmega128 (DOPLNIT odkaz na datasheet), Přímo na desce se nachází port pro vložení microsd nebo microsdhc karty. Na desce je vyvedena sada osmi napájecích konektorů, které můžeme použít jako vstup pro napájení desky a jako výstup pro napájení dalších PWM zařízení jako jsou například serva. Další napájecí konektory, které jsou vyvedeny k jednolivým komunikačním slotům jsou stabilizovány na 3,3V. Sada osmi napájecích konektorů není nijak stabilizována. Předpokládá se připojení 5V výstupu od modelářského regulátoru. Můžeme ale připojit libovolné napájení do 3,3 12V. Dále jsou vyvedeny dvě sériové linky a jedna I2C sběrnice určená pro komunikaci s libovolným zařízením. Další čtyři piny můžeme použít jako analogové vstupy, které měří vstupní napětí v rozsahu GND AVCC (od nuly po připojené napětí) s rozlišením na 1024 stupňů. Všechny výše uvedené piny lze použít obdobně jako u Basic desky jako digitální vstupy/výstupy. 3.1.3 Baterie napájení Každá deska odebírá za provozu 3,3V / 100mA. Napájení můžeme připojit but přímo, nebo přes vestavěný stabilizátor TS1117CW33 (DOPLNIT odkaz na datasheet), který lze připojit maximálně na 12V/1A. Obě desky jsou mezi sebou propojeny stabilizovaným napájením, postačí tedy připojení pouze jedné desky k napájení. 4
Maximální napájení Stabilizované napájení Nutné minimální napájení Klidový režim Deska Basic/Main 12V / 1A 3,3V / 1A 3,3V / 100mA 3,3V / 20mA (DOPLNIT doplnit korektní údaje) 3.1.4 Motory, serva, regulátory Všechna zařízení ovládaná pulsní šířkovou modulací (PWM) jsou připojena k jednomu z osmi PWM konektorů nebo k decodéru. Zařízení je možné ovládat ve dvou režimech, jako serva nebo jako libovolné PWM zařízení s plným rozsahem hodnot. 3.1.5 Analogové vstupy Analogové piny měří na svém vstupu napětí v rozsahu od nuly do napájecího napětí. Lze takto měřit například stupeň vybití baterií a zavčas tak varovat před jejich vybitím. Dále tyto konektory můžeme využít pro čtení analogových sensorů a dalších zařízení. 3.1.6 Digitální vstupy/výstupy Každý konektor na desce je možné naprogramovat jako standartní digitální vstup nebo výstup. V každém taktu procesoru tak můžeme přečíst nebo zapsat na každém pinu jednu logickou nulu nebo jedničku. 3.1.7 Komunikace Desky podporují komunikaci pomocí linek USART, SPI a sběrnice I2C. Komunikaci lze konvertovat množství dalších protokolů včetně bezdrátové komunikace. Maximální podporovaná rychlost komunikace je 512Kb/s. Schéma ukazuje zapojení samostatně běžící desky Basic (případně Main). Deska Basic zachovává všechny funkce desky Main, avšak nedisponuje slotem pro připojení microsd karty. 3.2 Funkce hardwaru Základní elektronika Yunifly je navržena tak, aby bylo možné připojit co nejvyšší počet různých komponent, se kterými je Yunifly kompaktibilní. Níže je uveden seznam testovaných komponent, které úspěšně spolupracovali s elektronikou Yunifly. Softwarová implementace jednotlivých komponent je popsána v kapitole (DOPLNIT Podrobná specifikace softwaru?). 3.2.1 Komunikace desky Basic a Main Komunikace mezi oběma deskami probíhá po sběrnici I2C. Tato sběrnice je také vyvedena na desce jako konektor. Je tedy možné do komunikace zapojovat i další zařízení podporující tuto sběrnici. Pokud používáme desku Basic s operačním systémem Yunifly, zasíláme veškeré požadavky a příkazy z desky Main přes sběrnici I2C desce Basic. Při podpoře nouzového režimu programujeme pouze desku Main. Deska Basic obsahuje program Yunifly, který je schopen autonomě řídit celý stroj, případně poslouchat příkazy od desky Main. 5
Obrázek 1: Schéma samostané desky Main 3.2.2 MicroSD/SDHC karta Slot pro vložení microsd karty se nachází na desce Main. Je připojen k SPI portu, který umožňuje komunikaci nejen s SD kartou, ale s libovolným zařízením, které podporuje tuto sériovou linku. Komunikace byla testována s kartou microsd 2GB a kartou microsdhc 4GB. Maximální rychlost čtení i zápisu je omezena rychlostí CPU na 512 kb/s. 3.2.3 Serva a regulátory řízené pomocí PWM Deska obsahuje 8 PWM výstupů, které umožňují řízení serv a regulátorů k motorům či jiným zařízením. Regulátory můžeme ovládat but v režimu servo nebo v celém rozsahu hodnot. Nemusíme ručně přepočítávat hodnoty ekvivalentní pro řízení serv. Při testování byla využita modelářská serva Hitec 8.0g HS-55 Feather Standard Micro RC Servo. (DOPLNIT odkaz na datasheet) 3.2.4 RC přijímač Obě desky podporují připojení až dvou RC přijímačů. Yunifly postupně čte data, která jsou přijímačem zasílána a může je dále libovolně zpracovávat. Může přímo na základě dat z přijímače ovládat další zařízení nebo data z přijímače nějak upravovat. (DOPLNIT odkaz na datasheet) Díky tomu deska Yunifly nabízí létání v režimu učitel/žák, kde jsou připojeny dva přijímače. Jeden přijímač je veden jako prioritní. Pokud žák udělá při létání nějakou chybu nebo řízení přestane zvládat, učitel může jedním pohybem převzít celou kontrolu nad letounem, aniž by si s žákem vyměňovat ovládací zařízení. Yunifly může data z RC přijímače využívat za úplně jiným účelem. Můžeme ovládat například aktuální pohled externí kamery při autonomním letu, což by bez procesorem řízené elektroniky bylo zcela nemyslitelné. 3.2.5 GPS Kompaktibilita Yunifly byla testována s GPS modulem GPS smart antenna module, LS20032. GPS je k Yunifly připojena přes universal asynchronous receiver/transmitter (USART). V knihovně 6
Yunifly v jazyce C++ je implementována třída GPS, která umožňuje komunikaci s výše uvedeným GPS modulem. (DOPLNIT odkaz na datasheet) 3.2.6 Akcelerometr Kompaktibilita Yunifly byla testována s trojosým akcelerometrem CHR-6d Digital Inertial Measurement Unit, který komunikuje po sběrnici I2C. V knihovně Yunifly je implementována třída accelerometer, která umožňuje čtení aktuálního zrychlení a přepínání citlivosti akcelerometru. (DO- PLNIT odkaz na datasheet) 3.2.7 Kompas Při testování byl použit elektronický kompas CMPS03 - Compass Module komunikující po sběrnici I2C. Knihovna Yunifly umožňuje čtení aktuálního směru pomocí třídy compass, která uživateli vrací úhel odklonu od severního směru. (DOPLNIT odkaz na datasheet) 3.2.8 Bluetooth S deskou Yunifly je možné komunikovat pomocí bluetooth modulu například s počítačem, který umožňuje nové naprogramování elektroniky Yunifly nebo přepsání interní paměti. Díky tomu můžeme s Yunifly pracovat absolutně bezdrátově včetně programování. Pokud používáme obě desky s podporou nouzového režimu, můžeme desku Main přeprogramovávat dokonce za letu. Dále bluetooth modul umožňuje standartní komunikaci, avšak nevýhodou jeho použití je krátký dosah signálu. Pokud chceme naše zařízení ovládat například mobilním telefonem, můžeme bluetooth modul použít pro vzájemnou komunikaci. Deska Yunifly může být díky tomu řízena přes internet, ke kterému se připojí právě přes mobilní telefon. Kompaktibilita Yunifly byla testována s bluetooth modulem SERIAL PORT ADAPTER OEM 310I CB-OEMSPA310I-04. (DOPLNIT odkaz na datasheet) 3.2.9 WiFi WiFi modul je použit obdobně jako bluetooth modul. Funkce a implementace je totožná. Kompaktibilita byla testována s modulem WIFI 802.11 B/G/N 3.3V - SG901-1059-3C - RF and RFID. (DOPLNIT odkaz na datasheet) 3.2.10 Tabulka testovaných externích zařízení Typ zařízení Název zařízení Komunikační protokol D GPS GPS smart antenna module, LS20032 USART Akcelerometr CHR-6d Digital Inertial Measurement Unit I2C Kompas CMPS03 - Compass Module I2C Bluetooth SERIAL PORT ADAPTER OEM 310I CB-OEMSPA310I-04 USART WiFi WIFI 802.11 B/G/N 3.3V - SG901-1059-3C - RF and RFID USART RC přijímač Spektrum DSM2 AR6100 ICP Servo Hitec 8.0g HS-55 Feather Standard Micro RC Servo PWM MicroSD karta KINGSTON Micro Secure Digital (Micro SD) 2GB SPI 7
3.3 Náklady na pořízení elektroniky Yunifly Jedním z cílů vývoje Yunifly bylo udržet co nejnižší pořizovací náklady a umožnit tak spolupráci více robotů. Výhodou nízkých pořizovacích nákladů je také větší dostupnost programovatelné elektroniky pro modeláře a jiné koníčky zabývající se stavbou malých mobilních strojů. Níže uvedená tabulka shrnuje pořizovací náklady jedné kopie elekroniky Yunifly. V této práci nejsou popsány náklady na vyvinutí prototypu a dalších spolupracujících zařízení. Ceny jednotlivých komponent jsou platné k 15.2.2011. DOPLNIT DATA Deska Basic/Main 12V / 1A 3,3V / 1A 3,3V / 100mA 3,3V / 20mA (DOPLNIT doplnit korektní údaje) Deska Basic/Main 12V / 1A 3,3V / 1A 3,3V / 100mA 3,3V / 20mA (DOPLNIT doplnit korektní údaje) Zdroj: GM electronic Czech Republic http://www.gme.cz/ 4 Podrobná specifikace Yunifly Datasheet OBRAZEK fotky Yunifly obe desky zvlast + dohromady + top view - merge to one 4.1 Hmotnost a rozměry Elektronika Yunifly je složena ze dvou samostatných částí, které můžeme použít jako jeden dvouprocesorový celek. V tabulce (DOPLNIT cislo) jsou uvedeny hmotnosti jednotlivých částí elektroniky. Hmotnost elektroniky Yunifly Název součásti Hmotnost [g] Deska Basic DOPLNIT hmotnost Deska Main DOPLNIT hmotnost Yunifly celá DOPLNIT hmotnost Obě desky jsou navrženy tak, aby jejich vzájemné propojení bylo co nejvíce kompaktní. Desku Main můžeme nasadit na konektor desky Basic a získáme tak dvě propojené desky stejných rozměrů, které se dohromady uzavírají do kvádru. Jsou tak odolnější vůči vnějšímu mechanickému poškození. OBRAZEK spojovaciho konektoru OBRAZEK rozmery 4.2 Pinová konfigurace OBRAZEK Pinova konfigurace obou desek vcetne legendy Propojovaci konektor 8
Pin VCC GND SDA, SCL CONTROL-XCK CONTROL-PWM RESET Popis Napájení 3.3V, které je rozvedeno po celé desce od stabilizátoru. Konektor je možné využít pro napájení dalších zařízení do 500mA. Ground I2C linka, která je využita ke komunikaci mezi deskou Basic a deskou Main. Pin, kterým je propojena deska Main s deskou Basic. Pokud nastane selhání desky Main, nabyde tento pin hodnoty LOW a deska Basic je přepnuta do nouzového režimu. Pin, kterým je propojena deska Main s deskou Basic. Tímto pinem předáváme desce Basic informaci o jednom ze dvou stavů, jejichž výběr nastavíme programově. Reset procesoru dané desky. Deska Basic Pin BATT VCC GND PWM0..7 ACC-RXD, ACC-TXD FREERX-RXD, FREERX-TXD KOMPAS-SDA, KOMPAS-SCL OTHER-SDA, OTHER-SCL ICP1..2 START Popis Napájení desky 5-12V a detekce stavu vybití baterií. Napájení 3.3V, které je rozvedeno po celé desce od stabilizátoru. Konektor je možné využít pro napájení dalších zařízení do 500mA. Ground Konektory pulsní šířkové modulace (PWM), ke kterým je možné připojit serva a jiné regulátory. Konektor sériové linky, primárně určený k připojení akcelerometrů. (Lze připojit libovolné zařízení s podporou USART.) RXD-receiver, TXD-transmitter Konektor sériové linky. Lze připojit libovolné USART zařízení, například bluetooth. RXD-receiver, TXDtransmitter Konektor I2C sběrnice. Primárně určený pro připojení kompasu. Druhý paralelní konektro I2C sběrnice. Dva nezávislé konektory pro zpracování multi PWM signálu od RC přijímače nebo jiného zařízení totožného protokolu. Testpad, ke kterému lze připojit programově detekovatelné tlačítko. Deska Main 9
Pin Popis BATT Napájení desky 5-12V a detekce stavu vybití baterií. VCC Napájení 3.3V, které je rozvedeno po celé desce od stabilizátoru. Konektor je možné využít pro napájení dalších zařízení do 500mA. GND Ground GPS-RXD, GPS-TXD Konektor sériové linky, primárně určený k připojení GPS. (Lze připojit libovolné zařízení s podporou USART.) RXDreceiver, TXD-transmitter ZEM-RXD, ZEM-TXD Konektor sériové linky. Lze připojit libovolné zařízení s podporou USART. RXD-receiver, TXD-transmitter ADC0..3 10bit analogové vstupy. Naměřené napětí je programu předáno jako 10bit číslo v rozsahu od GND po hodnotu VCC. SD Slot microsd karty. Yunifly je kompaktibilní s microsd/sdhc kartami. OC0..3 Testpady, které lze použít pro připojení dalších zařízení ovládaných pomocí PWM. ICP3 Testpad, který lze použít jako příjímač multipwm signálu. START2 Testpad, ke kterému lze připojit programově detekovatelné tlačítko. Každý z výše uvedených pinů lze použít jako digitální vstup nebo výstup. Použití každého pinu je dáno programem. Pokud chceme použít jednotlivé piny jako digitální vstupy nebo výstupy, použijeme označení PORT A..G (PA0..PA7..PF0..PF7..PG0..PG4). DOPLNIT Viz datasheet ATmega128 strana 5-6. 4.3 Schéma zapojení elektroniky OBRAZEK schema Main OBRAZEK schema Basic OBRAZEK obe desky eagle 4.4 Knihovna funkcí pro Yunifly Yunifly je možné naprogramovat libovolným programem určeným pro procesory Atmel řady ATmega. V této sekci jsou popsány funkce, které můžeme použít k usnandnění tvorby našeho programu pro elektroniku Yunifly. 4.4.1 Ovládání konektorů Digitální porty Digitální porty jsou ovládány totožným způsobem, jako je uvedeno s DOPLNIT datasheetu ATmega128. Každý z pinů můžeme použít v režimu čtení a v režimu zápisu. V režimu čtení můžeme číst hodnotu vybraného pinu jako LOW (0V) nabo HIGH (3.3V) a v režimu zápisu můžeme nastavit vybranému pinu hodnotu LOW nebo hodnotu HIGH. USART, I2C Vzhledem k tomu, že obě desky využívají totožný procesor, je možné pomocí jedné knihovny ovládat porty na obou deskách. Každá deska má vyvedeny dvě sériové linky USART (USART0 a USART1), dále jednu I2C sběrnici (I2C), která může být paralelizována a jednu SPI linku, která poskytuje komunikaci s microsd kartou. Knihovna nabízí komunikaci pomocí tříd, které obsluhují jednotlivé linky. Níže je uvedena ukázka použití třídy USART0. Každá třída obsahuje tyto funkce: 10
Funkce Popis char C = USART0. read ( ) ; Přečte první příchozí znak ve frontě. Pokud je příchozí fronta prázdná, čeká se na přijetí nového znaku. bool A = USART0. peek ( char & C) ; Pokud je fronta prázdná, A==false, jinak A==true a do proměnné C je uložen první znak ve frontě. USART0. w r i t e ( c ) ; Znak v proměnné C je odeslán. USART0. w r i t e ( any s t r i n g ) ; Odesláno pole znaků. Funkce je obdobná jako cyklické volání funkce USART0.write(c). USART0. writenumber ( int I ) ; Odesláno 32bit číslo, které je převedeno na pole odpovídajících znaků v dekadickém zápisu. Ovládání PWM zařízení PWM zařízení ovládáme nastavením hodnoty, která je převáděna na signál PWM. Nastavená hodnota je zasílána až do jejího dalšího přepsání programem. Signál PWM je generován hardwarově, není tedy třeba další softwarová obsluha. Pro obsluhu použijeme funkci setpwm( int value, int id ) ; kde proměnná id označuje zařízení, pro které nastavujeme aktuální hodnotu v proměnné value. ICP a příjem signálu z RC přijímače Procesor disponuje dvěma ICP porty (ICP0 a ICP1), které jsou na sobě nezávislé. Knihovna Yunifly obsahuje totožné struktury ICP0 a ICP1, které obsluhují příjem dat přes ICP port. DOPLNIT jde to tak vubec? class ICP0 { public : void setnumberofchannels ( int count ) ; int value = getchannelvalue ( int id ) ; } ; MicroSD karta Připojenou microsd kartu můžeme číst, pokud je naformátována jako FAT32. Knihovna Yunifly podporuje tyto funkce: DOPLNIT popis funkcí bool formatsd ( ) ; bool e r a s e B l o c k s ( int s t a r t, int end ) ; bool w r i t e B l o c k s ( int s t a r t, int end, char data ) ; char readblocks ( int s t a r t, int end ) ; class { public : f i l e L i s t char filename ; bool f o l d e r ; char type ; int s i z e ; } ; f i l e L i s t g e t F i l e L i s t ( ) ; bool c r e a t e F i l e ( char filename ) ; bool d e l e t e F i l e ( char filename ) ; char r e a d F i l e ( char filename, int s t a r t, int end ) ; bool w r i t e F i l e ( char filename, int s t a r t, int end ) ; AD převodníky Procesor ATmega128 má 8 vyvedených AD převodníků. Elektronika Yunifly má z kapacitních důvodů vyvedeny pouze 4 piny. Je vyveden každý sudý AD převodník. Softwarově ale můžeme číst všech 8 přecodníků pomocí funkce 11
int getsensorvalue ( int id ) ; kde proměnná id udává identifikační číslo daného AD převodníku. Funkce vrací plný rozsah 10bit čísla. Ovládání LED na desce Každá deska obsahuje dvě LED, které můžeme programově ovládat. K dispozici máme funkce pro rozsvícení a zhasnutí červené a zelené LED. Dále potom funkce ke zjištění aktuálního stavu obou LED. void setredled ( bool l i g h t ) ; void setgreenled ( bool l i g h t ) ; bool getredled ( ) ; bool getgreenled ( ) ; Stav baterií Aktuální stav baterií je na desce Baisc měřen na ADC7 (AD převodník). Baterie je k ADC7 připojena přes rezistorový dělič 15kΩ na 5kΩ. Stav baterií můžeme číst jako 10bit číslo, kde 0 odpovídá 0V a 1023 odpovídá 3.3 4 = 13.2V. 4.4.2 Komunikace s deskou Basic Obě desky spolu komunikují pomocí I2C linky a pinů CONTROL-XCK a CONTROL-PWM. Knihocna Yunifly obsahuje funkce pro desku Main určené ke komunikaci s firmwarem na desce Basic. Nouzový režim Pokud nechceme, aby deska Basic pracovala v nouzovém režimu, musí deska Main držet pin CONTROL-XCK na hodnotě HIGH. Pokud deska Basic zaznamená změnu na hodnotu LOW, je automaticky přepnuta do nouzového režimu. Nastavení PWM PWM zařízení obsluhuje deska Basic z důvodu možnosti řízení při výdadku desky Main. Přes I2C zašle deska Main zprávu, jak se má změnit nastavení PWM regulátorů. Použijeme funkci bool sendbasicpwm ( int value, int id ) ; kde id je identifikator PWM regulátoru, který nastavujeme na 10bit hodnotu value. Funkce vrací true, pokud bylo nastavení úspěšné. Příjem dat od RC přijímače Funguje obdobně, jako nastavování hodnot PWM. První funkce nastaví počet kanálů, které jsou naslouchány na ICP portu desky Basic. Druhá funkce získá aktuálně přijatou hodnotu na kanále v proměnné id. bool sendbasicicpports ( int count ) ; int getbasicicp ( int id ) ; 4.4.3 Komunikace s externími moduly Zde jsou posány funkce, které slouží pro obsluhu konkrétních zařízení uvedených v sekci DOPLNIT tabulka s typem GPS, ACC atd. GPS Pro komunikaci s GPS je podporována funkce pro získání souřadnic severní šířky a východní délky jako celé číslo v desetimiliontinách stupně (v případě jižní šířky a západní délky jsou hodnoty záporné), dále funkce pro získání nadmořské výšky v metrech, přesnosti měření v metrech a čas v počtu uplynulých sekund od 1.1.1970. Poslední funkce zjistí, zda je GPS připojena a přípravena na zaslání aktuálních souřadnic. 12
int GPSgetNorth ( ) ; int GPSgetEast ( ) ; int GPSgetAltitude ( ) ; int GPSgetAccurary ( ) ; int GPSgetTime ( ) ; bool GPSrunning ( ) ; Při selhání GPS jsou všechny návratové hodnoty nulové. Akcelerometr Použitý trojosý akcelerometr komunikuje s deskou Main pomocí sběrnice I2C. Pomocí tří funkcí můžeme získat aktuální akceleraci. Vždy je vrácena hodnota akcelerace v ose X, Y nebo Z v rozlišení 16bit čísla do přetížení 60G. int ACCgetXValue ( ) ; int ACCgetYValue ( ) ; int ACCgetZValue ( ) ; Kompas Kompas elektronice Yunifly vrací odchylku od severního směru v ose X, Y a Z jako 8bit signed int číslo, kde kladná hodnota značí odchylku v kladném směru. Hodnota ±255 značí jižní směr. int COMPASgetX ( ) ; int COMPASgetY ( ) ; int COMPASgetZ ( ) ; WiFi, Bluetooth WiFi a bluetooth moduly jsou k elektronice Yunifly připojeny přímo k sériové lince. Nepotřebují další obsluhu ze strany Yunifly. Automatcky se připojí k zařízení nebo k PC, které o připojení požádá a odešlě správný párovací klíč. Automaticky se zpracuje veškerá komunikace zaslaná a přijatá na příslušnou linku USART. 4.4.4 Řízení stability letounu Účelem řízení stability je udržet letoun v nulovém zrychlení vzhledem k vybraným osám akcelerometrů. Stabilizaci předáváme čtyři hodnoty, které reprezentují aktuální směr letu. 1. Výkon motoru, který není dále regulován. 2. Naklonění ve směru osy Y. 3. Naklonění ve směru osy X. 4. Naklonění ve směru osy Z. OBRAZEK naklopení ve směru daných os a klapky na křídlech - ktere osy ktere klapky Na základě hodnot z akcelerometrů je určena aktuální poloha letounu vůči směru gravitačního zrychlení. Na základě tohoto směru jsou vypočítány chyby od požadované polohy letounu. Následuje PID regulace, která nastaví polohy příslušných směrových klapek. void s t a b i l i z a t i o n ( unsigned int f u e l, signed int rotx, signed int roty, signed int rotz, signed int accelerometerx, signed int accelerometery, signed int accelerometerz, signed int & PWMfuel, signed int & PWMrotX, 13
) ; signed int & PWMrotY, signed int & PWMrotZ, OBRAZEK schema VUE postupu vypoctu stabilizace 4.5 Firmware pro desku Basic 4.5.1 Použití firmwaru Firmware pro desku Basic je určen zejména pro létání s podporou nouzového režimu. V opačném případě zpracovává pokyny a požadavky desky Main, které jsou podrobně posány v sekci DOPLNIT komunikace s deskou Basic. 4.5.2 Nouzový režim Nouzový režim je spuštěn právě v těchto případech: 1. Port CONTROL-XCK je nastaven na hodnotu LOW. 2. Deska Main je vypnuta. 3. Deska Basic obdrží požadavek od externího zařízení - nastavena událost, která uvede nouzový režim v aktivitu. V nouzovém režimu je obsluhován pouze RC přijímač, který je přímo propojen s PWM regulátory. Pokud je RC přijímač nedostupný, tak je primárně vypnut motor a letoun je stabilizován do přistávací polohy. Uživatel může desce Basic předat funkci, která je cyklicky volána při spuštění nouzového režimu. Funkce má k dispozici ovládání PWM regulátorů a dalších funkčních zařízení připojených k desce Basic. DOPLNIT staci takto? - me sem nic dalsiho nenapada, vse uz je receno vyse 5 Swarm robotics a elektronika Yunifly Jak již bylo zmíněno, elektroniku Yunifly lze libovolně programovat. Máme k dispozici dva procesory ATmega128 a pamět ovou kartu microsd/sdhc, která nám slouží jako úložiště dat. Obě desky Yunifly splňují požadavky pro testování základního algoritmu umělé inteligence, která je doposud vyvíjena na simulátoru Yunimin (DOPLNIT odkaz na práci). 5.1 Základní algoritmus umělé inteligence Algoritmus byl vyvinut tak, abychom při učení nemuseli znát správné řešení problému. Algoritmu cyklicky předáváme vstupní data a jeho aktuální úspěšnost, pro jejíž výsledek nepotřebujeme znát řešení problému. Úspěšnost zjistíme na základě odchylky od stavu, kterého chceme dosáhnout. Inteligence již sama najde postup, pomocí kterého dosáhne ideálního stavu. Je tak sama schopna zjistit, co je jejím úkolem. Problémy, které řeší zmíněná umělá inteligence, lze předat k řešení většímu množství strojů zároveň. Výpočet probíhá obdobně jako parallel computing nebo multitasking u víceprocesorových počítačů. Každý stroj dostává vlastní vstupní a výstupní data, avšak s ostatními sdílí některé globální informace. Za použití swarm intelligence lze pozorovat i kolektivní chování robotů v neznámém prostoru. Každý robot pracuje sám na základě své inteligence, ale jeho vstupní data jsou ovlivňována polohou a činností ostatních robotů. Díky tomu jsou roboti na sebe vázáni a můžeme sledovat vzájemné interakce v jejich chování. Všichni roboti mohou řešit stejný úkol, který závisí na spolupráci všech. Na základě jejich interakcí získají zkušenosti, které jim pomohou v kolektivním jednání. 14
5.2 Diagramy architektury algoritmu umělé inteligence Popis algoritmů a všech součástí umělé inteligence je popsán v práci (DOPLNIT odkaz na Swarm Yunimin). Níže jsou uvedeny diagramy, které ukazují základní architekturu zmíněné umělé inteligence. (OBRAZEK 2 schemata funkcnosti) 5.3 Použití umělé inteligence pro Yunifly Abychom byli schopni napsat libovolný ovládací software, musíme disponovat souborem základních funkcí a procedur, jejichž vhodným voláním splníme zadaný úkol. Pokud chceme, aby naši práci zastala zmíněná umělá inteligence, musíme jí předat soubor základních funkcí a procedur jako databázi axiomatických zkušeností. Na základě těchto zkušeností a funkce, která vrací aktuální úspěšnost robota, bude umělá inteligence hledat řešení daného problému. Pomocí elektroniky Yunifly se bude testovat, zda je zmíněná inteligence schopna se samostatně naučit řídit letoun tak, jak je žádáno uživatelem na základě fitness funkce. 15
6 Shrnutí Úspěšně se podařilo navrhnout, vyrobit a odzkoušet prototyp elektroniky Yunifly. Deska byla otestována na RC modelu akrobatického letounu. Jako součást elektroniky byl napsán firmware pro desku Basic, který podporuje spolupráci obou desek s podporou nouzového režimu, který je spuštěn při hardwarovém nebo softwarovém selhání řídicí elektroniky. Součástí je dále knihovna v jazyce C++, která obsahuje základní funkce pro řízení elektroniky, konektorů a podporovaných externě připojených zařízení. Další vývoj desky Yunifly předpokládám zejména v širším spektru softwarové podpory externě připojených zařízení. Pokud bude deska Yunifly strojně osazována, bude možné použít menší pouzdra některých součástek, jako například procesoru. Díky tomu bude možné celou elektroniku ještě zmenšit a získat tak nižší hmotnost a vyšší použitelnost v ještě menších strojích. 16