Master-Slave správanie robotov – Lego Mindstorm NXT

01. August, 2012, Autor článku: Števo Stano, Elektrotechnika
Ročník 5, číslo 8 This page as PDF Pridať príspevok

Článok pojednáva o kolektívnom správaní robotov. Cieľom je vytvoriť robotov pomocou robotického stavebnicového systému LEGO Mindstorm NXT a overiť jej použitie v oblasti kolektívneho správania robotov. Komunikácia, ktorá je zabezpečená pomocou technológie Bluetooth, je obojsmerná, pričom oba roboty správy prijímajú a aj odosielajú.

Úvod

Robotika tvorí základ pre kolektívne správanie robotov. Toto odvetvie sa rozvíja veľmi rýchlo, pretože človek sa vždy snažil uľahčiť si svoju prácu alebo spraviť viac práce za rovnaký čas pomocou nástrojov, neskôr strojov a v dnešnej dobe robotov. Mobilná robotika ponúka robotom možnosť pohybu a vďaka senzorom aj možnosť sledovať svoje okolie a aj s ním komunikovať. Roboty, ktoré spolu komunikujú položili základný kameň pre oblasť kolektívneho správania robotov.

Táto oblasť sa v princípe zaoberá správaním robota alebo skupiny robotov v prostredí, ktoré nebolo vopred definované. Najznámejšími príkladmi z tejto oblasti sú robotický futbal, robotický vysávač, alebo simulácia kolónie na dosiahnutie globálneho cieľa. Vďaka pokrokom v tejto oblasti sa roboty stávajú čoraz inteligentnejšími a dokážu sa lepšie prispôsobovať okolitému prostrediu.

Lego Mindstorm je zo série Lego súprav zahŕňajúce programovateľnú jednotku “brick” s elektromotormi a snímačmi. Na simuláciu kolektívneho správania robotov sme použili dva roboty, ktoré spolu komunikujú pomocou technológie Bluetooth, ktorá je zabudovaná priamo v NXT kocke. LEGO Mindstorm NXT spája robotiku a programovanie. Zostavenie robotov je pritom jednoduchšie ako pri zostavovaní robotov z elektronických súčiastok. Na programovanie bol použitý programovací jazyk NXC, ktorý vychádza zo syntaxe jazyka C.

Charakteristika objektu skúmania

Úloha spočíva v spojení dvoch NXT kociek s cieľom ovládania SLAVE (robota) pomocou MASTER (robota). NXT kocky sme pomenovali podľa úloh, ktorú budú plniť. Prvá NXT kocka bude MASTER – Ovládač, a teda bude akýmsi veliteľom, ktorý bude vydávať pokyny. Druhá NXT kocka bude SLAVE – Mobilný robot, ktorý bude sluhom a bude počúvať pokyny.

Zostavenie robotov

Na zostavenie MASTER sme použili jednu NXT, dva gyroskopické senzory a dva tlakové senzory. Jeden senzor zaznamenáva natáčanie dopredu a dozadu a druhý doľava a doprava. Gyroskopické senzory sú zapojené na vstupných portoch č. 1 a 2 NXT kocky. Dva tlakové senzory na MASTER vyriešia problémy, ktoré súvisia s jednoduchším zastavením a zatáčaním SLAVE, ktoré si pri riadení pomocou gyroskopov vyžadujú značnú zručnosť. Stlačením oboch tlakových senzorov naraz SLAVE zastaví. Po uvoľnení tlakových senzorov ostane na svojom mieste, pokým nezačneme hýbať s MASTER.

Pre jednoduchšie zatáčanie využijeme tlakové senzory na zatáčanie namieste. Tlakové senzory sú pripojené na vstupných portoch č. 3 a 4 NXT kocky. Na obrázku 1 máme schematicky zobrazený MASTER. MASTER je zostavený tak, aby bolo možné zatlačiť tlakové senzory, či už jednotlivo alebo oba naraz. Pri gyroskopických senzoroch je nutné dávať pozor aby boli pripojené ku konštrukcii tak, ako je zobrazené na obrázku 1. Zlé pripojenie ku konštrukcii, by mohlo mať za následok, že riadenie by nefungovalo korektne.


Obrázok 1: Zloženie MASTER

Na zostavenie SLAVE sme použili NXT kocku, dva motory a jeden ultrasonický senzor. Keďže nieje zabezpečená spätná väzba od SLAVE, pridaním spomenutého ultrazvukového senzoru, SLAVE sleduje priestor pred sebou aby nenarazil do prekážky. Ultrasonický senzor je zapojený na vstupnom portoch č. 1 NXT kocky. Motory sú pripojené na výstupných portoch B a C. Na obrázku 2 máme schematicky zobrazený SLAVE (pohľad zospodu), pretože ultrasonický senzor a motory sú uložené pod kockou NXT. Pri SLAVE je dôležité aby boli motory upevnené v takej polohe, ako je zobrazené na obrázku 2 (rovným povrchom motora nadol, pri inom zapojení by sa SLAVE nepohyboval korektne).


Obrázok 2: Zloženie SLAVE

Zdrojový kód

Na obrázku 3 sa nachádza reálna podoba zdrojového kódu, konkrétne ide o funkciu ‘dopredu_dozadu’. Táto funkcia zistí akým smerom a ako rýchlo je natáčaný MASTER, t.j. rieši natáčanie dopredu a dozadu. Hodnota premennej „x“ reprezentuje aktuálnu hodnotu výstup z gyroskopu č.1. Rovnako funguje aj funkcia ‘dostran’, ale aktuálnu hodnotu z gyroskopu č.2 reprezentuje hodnota premennej „a“.

void dopredu_dozadu()
{
 if(x>1)
 {
  if(x>y)
  {
   if(z<100){z=z+x;}   }  }  else if(x<-1)  {   if(x-100){z=z+x;}
  }
 }
 NumOut(5,LCD_LINE1,x);
 NumOut(5,LCD_LINE2,y);
 NumOut(5,LCD_LINE3,z);
 y=x;
 dostran();
}

Komunikácia medzi MASTER a SLAVE je zabezpečená bezdrôtovou technológiou Bluetooth (obr. 3). Blok MASTER sa skladá z funkcie ‘main’ a funkcie ’BTCheck’ a blok SLAVE sa skladá z funkcií ‘main’, ‘BTCheck’, ‘dopredu_dozadu’, ‘dostran’ a funkcie ‘pohyb’.


Obrázok 3: Vzťah medzi blokmi MASTER a SLAVE a ich vnútorná štruktúra

SLAVE – Funkcia ‘dopredu_dozadu’

Vývojový diagram funkcie je na obrázku 4. Funkcia určuje, ktorým smerom sa gyroskop 1 pohol, či bol natočený smerom dopredu, alebo dozadu. Prvá podmienka („x“>1) reprezentuje natočenie smerom dopredu. Druhá podmienka („x“>„y“) určuje či aktuálna hodnota premennej „x“ je väčšia ako predchádzajúca, ktorá bola uložená do premennej „y“. Z toho je možné určiť, že gyroskop 1 je natáčaný v rovnakom smere, a že sa jeho pohyb nezastavil. Dôvod tretej podmienky („z“<100) je, že motory na SLAVE dokážu pracovať len s hodnotami ±100.

Ak sú splnené všetky tri podmienky, tak sa k hodnote premennej „z“ pripočíta hodnota premennej „x“, znamená to, že pohyb dopredu bude rýchlejší (dozadu pomalší). Nasledujúce tri podmienky sú ekvivalentom prvých troch, ale so zápornými číslami. Záporná hodnota premennej „x“ reprezentuje natočenie smerom dozadu. Ak sú splnené všetky tri podmienky, tak sa k premennej „z“ pripočíta (záporná) hodnota premennej „x“, znamená to, že pohyb dozadu bude rýchlejší (dopredu pomalší). Posledná operácia je spustenie funkcie ‘dostran’.


Obrázok 4: SLAVE – Funkcia ‘dopredu_dozadu’

Záver

Úloha spojenia dvoch robotov pomocou technológie Bluetooth a zaručenie obojsmernej komunikácie bola výrazne zjednodušená použitím stavebnice LEGO Mindstorm NXT (voči zostaveniu robotov z elektroniky). Ďalšia výhoda je možnosť využitia vstavanej funkcie pre komunikáciu pomocou Bluetooth. Vytvorení roboti MASTER a SLAVE boli následne naprogramovaní v BrixCC. Overenie funkčnosti riešenia[6] ako aj funkčnosť komunikácie medzi MASTER a SLAVE odhalilo niekoľko nedostatkov (stavebnice LEGO Mindstorm NXT), ktoré obmedzujú ich použitie pre oblasť kolektívneho správania robotov.

Prvým nedostatkom je počet vstupov a výstupov na NXT kocke, ktorý obmedzuje počet senzorov a motorov na jedného robota. Tento problém čiastočne riešia produkty od firmy HiTechnic[4], ktorá poskytuje produkt na rozšírenie počtu portov. Druhý problém je závažnejší. Týka sa dosahu komunikácie cez technológiu Bluetooth medzi MASTER a SLAVE. Komunikácia funguje veľmi dobre na vzdialenosť niekoľkých metrov, ale ak sa roboty od seba príliš vzdialia tak sa spojenie preruší.

V rámci uvedených rozmerov je Lego Mindstor NXT použiteľný aj pre simulovanie správania sa hmyzu (napríklad mravcov, pri hľadaní potravy alebo pri obrane teritória). Roboty by tak používali kompas a akcelerometer (pre detekciu smeru pohybu, rýchlosti a času pohybu). Pracovný priestor musí byť dostatočne veľký aby sa roboty vedeli pohybovať, ale zároveň dostatočne malý, aby fungovala komunikácia.

Literárne zdroje

  1. http://mindstorms.lego.com/en-us/support/files/default.aspx#Driver
  2. http://sourceforge.net/projects/bricxcc/files/bricxcc
  3. http://virtuallab.kar.elf.stuba.sk/robowiki/images/9/99/NXT_tutorial_sk.pdf
  4. http://www.hitechnic.com/products
  5. http://www.nxtprograms.com/castor_bot/steps.html

Spoluautorom článku je Bc. Lukáš Krchnavý, Fakulta elektrotechniky a informatiky, Slovenská technická univerzita

Napísať príspevok