Čtyřnohý kráčející robot Jan Šimurda (134 629) Martin Řezáč (134 600) Ivan Štefanisko (138 952) Radek Sysel (133 850) Vedoucí projektu: Ing. Vlastimil Kříž ÚSTAV AUTOMATIZACE A MĚŘÍCÍ TECHNIKY
Obsah 1. Úvod... 2 2. Zadání... 2 3. Teoretický rozbor... 2 4. pohyb robota... 2 4.1. Konstrukce nohy... 2 4.2. Řešení chůze robota... 4 5. Hardware... 5 5.1. Ultrazvukový snímač vzdálenosti SRF10... 5 5.2. Bluetooth modul ConnectBlue... 6 5.3. Realizace zapojení... 7 6. Softwarové řešení... 8 6.1. Popis programu... 8 6.1.1. Ovládání serv:... 8 6.1.2. Chůze:... 8 6.1.3. I2C:... 8 6.1.4. SRF10:... 9 7. Ovládání robota... 9 7.1. Ovládání pomocí PC... 10 7.2. Řízení pomocí mobilního telefonu... 10 8. Závěr... 12 9. Příloha... 13 1
1. ÚVOD Tento projekt je zaměřen na řízení čtyřnohého robota a jeho komunikaci s PC pomocí Bluetooth. Robot je poháněn dvanácti servomotory. Od vedoucího projektu jsme obdrželi čtyřnohého robota, který obsahuje desku s mikrokontrolérem ATmega 162, baterii, programátor pro ATmega a program pro jeho ovládání. Později jsme si z důvodu slabé výdrže baterie zapůjčili zdroj. 2. ZADÁNÍ Dokončete přestavbu kráčejícího robotu, kterou začali Vaši kolegové minulý rok. Navrhněte, vyrobte, osaďte a oživte desku plošných spojů. Vyzkoušejte navržený algoritmus řízení pro mcu a pc (případně navrhněte vlastní). Navrhněte a zrealizujte komunikaci s robotem pomocí Bluetooth. Vhodně doplňte robot o další snímače. 3. TEORETICKÝ ROZBOR Robot - je stroj pracující s určitou mírou samostatnosti, vykonávající určené úkoly. Mobilní robot vyznačují se schopností přemisťovat se, a to ať už samostatně (autonomní) nebo za pomoci operátora (dálkově řízené). Servisní roboti musí být schopni navigovat se přes nestrukturované prostředí prostřednictvím multisenzorového zpracovávání informací a automatickým plánováním dráhy, servisní roboti musí byt schopni pružně generovat v kontextu postupnosti úloh, aby se přizpůsobili "turbulentním" podmínkám prostředí. Robot na kterém jsme pracovali patří mezi kráčející mobilní servisní roboty, jehož konstrukce vychází z biologické inspirace čtyřnohých živočichů. 4. POHYB ROBOTA 4.1. Konstrukce nohy Každá ze čtyř nohou je ovládána pomocí 3 servomotorů(obrázek 1). Servo č.1 ovládá úhel natočení nohy, servo 2 řídí výšku nadzvednutí nohy a posledním servem, tedy číslem 3 ovládáme vzdálenost nohy od těla robota. 2
Servomotor č.1 Servomotor č.2 Servomotor č.3 Obrázek 1.: Model nohy robota 3
4.2. Řešení chůze robota Postup pro chůzi vpřed i otáčení jsme převzali z diplomové práce Ondřeje Pouchlého, který původně navrhoval tohoto robota. 4
5. HARDWARE 5.1. Ultrazvukový snímač vzdálenosti SRF10 Ultrazvukový snímač SRF 10(Obrázek 2) je hojně využívaný snímač vzdálenosti, který se k mikrokontroléru připojuje pomocí sběrnice I2C, kde se chová jako paměť EEPROM. Bázová adresa modulu je nastavena na 0xE0, ovšem je jí možné změnit. Je tedy patrné, že můžeme připojit až 16 modulů na jednu sběrnici. Je schopen měřit ve třech módech, kde vrací 5
výsledky v cm, palcích nebo v μs. V našem případě jsme zvolili odečítání vzdálenosti v centimetrech. Snímač vrací hodnotu v 16 bitech, které jsou rozděleny na dva 8-bitové registry (High a Low). Podařilo se nám vyhodnotit překážky vzdálené přibližně 70 cm, avšak pro přesnější měření by bylo třeba snímač kalibrovat. Obrázek 2.: Snímač SRF10 5.2. Bluetooth modul ConnectBlue Pro komunikaci mezi PC a robotem, jsme využili Bloutooth modul od firmy Spezial electronic (Obrázek 3), který slouží jako náhrada za standardní sériový kabel RS-232. Pomocí tohoto modulu jsme schopni zasílat příkazy ovládající pohyby robota a programovat mikrokontrolér Atmega162. Obrázek 3. : connectblue OBS410 6
5.3. Realizace zapojení Pro připojení modulu k desce s mikrokontrolérem ATmega162 bylo třeba vytvořit vhodné rozhraní. Díky použití tohoto modulu není třeba užívat integrovaný obvod MAX323. Dle dokumentace jsme vytvořili jednoduché rozhraní pro připojení modulu na mikrokontrolér. Návrh rozhraní jsme prováděli v programu Eagle, a skládá se ze dvou odporů a dvou obvodů typu NAND (Obrázek 4). Obrázek 4. : Schema zapojení rozhraní Poté jsme vytvořili desku plošných spojů, a již s použitím obvodu 7408N (čtyři obvody typu NAND), a odporů s hodnotami 2,2KΩ a 1,8KΩ. (Obrázek 5) Obrázek 5. : Deska plošných spojů 7
6. SOFTWAROVÉ ŘEŠENÍ 6.1. Popis programu 6.1.1. Ovládání serv: - Jsou použity dva 16-bitove čítače-časovače (číslo 1 a 3) - První využíváme pro obsluhu serv 1-6, druhý pro serva 7-12 Vznik PWM signálu: 1) Každé 3 ms je generován PWM signál pro jedno servo 2) Délku PWM udává hodnota v poli POZICE_SERV, 3) po uplynutí 3ms se inkrementuje bit portu 6.1.2. Chůze: - V programu řešena funkcí set_servo, jejíž vstupními parametry jsou číslo serva (Tabulka 1) a doba trvání PWM signálu (defaultní pozice = 15000) Tabulka 1.: Programové hodnoty serv Hodnota v programu Číslo serva na robotu Pohyb 0 4.1 nahoru 1 4 doprava 2 3.2 odsebe 3 3.1 nahoru 4 3 doprava 5 4.2 odsebe 6 1.1 nahoru 7 1.2 odsebe 8 2 doprava 9 2.1 nahoru 10 2.2 odsebe 11 1 doprava 6.1.3. I2C: - Virtuálně jsme na portu D vytvořili sběrnici I2C - Data vysílá/přijímá z PIN7, clock z PIN6 (Obrázek 10) - z datasheetu mikroprocesoru atmega128 jsme převzali průběh signálu data a clock 8
Obrázek 6.: Průběh přenosu dat ATmega 128 6.1.4. SRF10: Vyslání vlny: 1) start bit 2) adresa zařízení (defaultně nastaveno na 0xE0) 3) adresa na kterou zapisujeme (proměnná vzdálenost) 4) jednotky měření (v našem případě cm, dle tabulky z datasheet SRF10 hodnota 81) 5) stop bit čtení: 1) po uplynutí 65ms se vyšle : 2) start bit 3) adresa zařízení 4) adresa odkud budeme číst (0xE1) 5) repeat start (opakovaný start) 6) Přepne se do čtení ze zařízení: Pro uložení čtené hodnoty využíváme proměnnou vzdálenost. Do vrchních 8 bitů se uloží hodnotu z registru 2 a do spodních 8 bitů hodnotu z registru 3. 7) Nakonec vyšleme stop bit 7. OVLÁDÁNÍ ROBOTA Ovládání i programování je realizováno pomocí komunikace přes bluetooth. Ovládání jsme odzkoušeli pomocí Mobilního telefonu se systémem android, a pomocí notebooku. Zašleme-li příkaz pro chůzi vpřed, robot jej vykoná, následně snímač vyhodnotí vzdálenost překážky. Pokud je překážka vzdálená více než 20cm je možno vykonat další krok vpřed. Jeli však vzdálenost menší robot se sám pootočí o 90 doleva, a následně vykoná krok vpřed. Pokud je vzdálenost opět menší než 20cm pootočí se o dalších 90 atd. 9
7.1. Ovládání pomocí PC Pro ovládání jsme využili program AVR Burner (Obrázek 7), který jsme je možno volně stáhnout na adrese: http://technika.junior.cz/trac/wiki/avr232client. Abychom mohli komunikovat pomocí bluetooth s mikrokontrolérem ATMega 162 je nutné nainstalovat ještě bootloader builder, který je taktéž volně ke stažení na adrese: http://technika.junior.cz/~avakar/avr232boot/. Díky tomuto programu nemusíme vůbec využívat AVR programátor. Robot vrací název právě vykonaného pohybu Hodnota vzdálenosti, kterou vrací robot pomocí ultrazvukového čidla SRF10. Obrázek 7.: Ovládání prrogramem AVR Burner 7.2. Řízení pomocí mobilního telefonu Využili jsme program Yuni Client mobile. Pro tuto možnost ovládání je třeba přepsat bluetooth modul do kategorie 1. V programu je možno vybrat z několika různých typů ovládání. Pomocí tohoto programu zasíláme do robota předem nastavené příkazy. Robot po přijmutí příkazu odpoví krátkou zprávou o vykonaném pohybu. Ovládat je možno pohybem telefonu (Obrázek 8), kdy při naklonění dopředu se robot posune směrem vpřed, nebo pomocí tlačítek W, A, S, D (Obrázek 9), kdy W znamená vpřed, S vzad. Při stisknutí tlačítka A nebo D se robot pootočí doprava, nebo doleva o 90. 10
Obrázek 8. : Ovládání pomocí pohyu telefonem (pohyb vlevo) Obrázek 9. : Ovládání pomocí tlačítek, vrácené zprávy 11
8. ZÁVĚR Povedlo se nám zprovoznit komunikaci mezi PC a robotem, přesněji mikrokontrolérem Atmega162 pomocí Bluetooth. Díky tomu je možné ovládat robota pomocí bluetooth jednak přes notebook, ale i přes mobilní telefon. Program pro ovládání je napsán v jazyce C++ ( pomocí programu Microsoft Visual Studio 2010). Podařilo se nám vytvořit program pro chůzi robota vpřed, vzad a pro otáčení do obou stran. Ovládání je velmi jednoduché pomocí kláves W, A, S, D. Robot je za pomoci ultrazvukového snímače vzdálenosti schopen vyhnout se překážce, a to tak, že se při detekci překážky bližší než 20 centimetrů pootočí o 90 doleva a pokračuje v pohybu vpřed. 12
9. PŘÍLOHA Obrázek 10.: Schema zapojení ATmega162 13