Barna Zsombor, Kiss Ádám
Robotkommunikáció 1. rész BEVEZETŐ ÉS PROJEKTSPECIFIKÁCIÓ A kommunikáció az információcsere folyamata. Minden olyan eseményt tekintsünk kommunikációnak, amelyben valamely dolog (adó) kibocsát egy jelet, amelyre egy másik dolog (vevő) valamilyen válaszfolyamattal reagál. Az állatvilágban is megfigyelhető a kommunikáció számos formája. A különböző fajok nagyon eltérő jelrendszert használnak a kommunikációjuk során. Ez lehet hang, szín, illat, mozgás, … Az emberi kommunikációnak is nagyon sok formája és közege létezik. Információt hordozhat pl.: a hangsúly, a mimika, a mozgás. Az informatika alapvetően a kommunikációra épül, akár hálózati számítógépek közötti kommunikációról van szó, akár egyetlen számítógép különböző hardver vagy szoftver eszközeiről. A számítástechnika fejlődése maga után vonta a robotika megjelenését és fejlődését is. Az 1960-as évek elejétől beszélhetünk mobil- illetve ipari robotokról. Ettől kezdve felgyorsult a robotika fejlődése. Bár a science fiction irodalomban vázolt intelligens robotok megjelenésétől még távol vagyunk, de a mesterséges intelligencia kutatásnak már vannak eredményei. A robotok közötti kommunikáció pedig korlátlan lehetőségeket biztosít. A projektünkben a robotkommunikációnak egy „evolúcióját” mutatjuk be abban az értelemben, hogy egyre összetettebb, bonyolultabb kommunikációs technikát használunk. Eszközként a MINDSTORMS NXT robotokat alkalmazzuk, amelyek rendelkeznek beépített bluetooth alapú adó-vevővel. Tehát a kommunikációs csatornaként rádióhullámokat használunk. A Mindtsorms NXT robotok kommunikációjának technikai részleteit röviden bemutatjuk, hogy a további specifikáció érthető legyen. Összesen négy NXT minikomputer kapcsolható össze alapesetben bluetooth-on hálózattá. Ezek közül az egyiknek kitüntetett szerepe van, ez a master robot, a többi a slave. A slave robotok csak a masteren keresztül küldhetnek üzeneteket egymásnak (az üzenet lehet szám, szöveg, vagy logikai érték). A kapcsolat létrehozása során a master roboton meg kell adni az adott slave melyik kommunikációs csatornára kapcsolódik (1-es, 2es, vagy 3-as). Minden minikomputer tartalmaz 10 db mailboxot, amelyek puffer jellegű tárolók, a küldött adatok tárolására. Tehát egy robot 10 különböző értéket tud egyszerre kommunikációs szempontból tárolni (a puffer kiürítésével ezek a tárolók újra használhatók). Az információküldés során az adat a pufferbe kerül, a tényleges továbbítás még nem történik meg. Az olvasási művelet során kerül át az adat az egyik robotról a másikra, így minden robot lehet master és slave is, hiszen nincs szükség többletpufferekre.
1.a alprojekt Egyirányú kommunikáció. A konstrukció két NXT minikomputert tartalmaz. Az egyik egy egyszerű lánctalpas jármű, amely mozgását két szervo motor biztosítja, mindkét lánctalpnál egy-egy. A másik egy távirányító, amely szintén két szervo motort tartalmaz. Ezekre a motorokra szerelt karok elfordításával lehet a járművet irányítani. A távvezérlő botkormányának elfordulási szögét küldi át a robot bluetooth-on a járműnek, amely az elfordulási szög nagyságát használja fel a motor sebességeként. A két botkormány vezérli 1
tehát a két motort, mindkettő egyet-egyet. Pl.: a távvezérlő bal oldali botkormányának 80o-kal történő elfordítása a jármű bal oldali motorjának 80-as sebességű forgását fogja jelenteni (maximum: 100). Az ellentétes irányú mozgást egy-egy vezérlő gomb (touch szenzor) szabályozza. Ennek megnyomására a távvezérlő megváltoztatja a mért elfordulási szög előjelét, így a negatív szög ellentétes forgásirányt eredményez. A jármű nem küld vissza adatokat, csak fogadja és végrehajtja a távvezérlő jeleit, így a kommunikáció egyirányú. Távirányító
Lánctalpas jármű
1.b alprojekt Kétirányú, különböző csatornás kommunikáció. Az 1a alprojektben bemutatott távirányítási módszer csak abban az esetben működik, ha robot belátható helyen van, hiszen a távirányítót ember kezeli és a vizuális információi alapján adja ki az utasításokat. A „beláthatóság” kritériuma könnyen mellőzhető. Ha a robotra egy kamerát helyezünk, amely a képet folyamatosan közvetíti pl. egy számítógépre, akkor nem szükséges, hogy közvetlen rálátás nyíljon a robotra. A kommunikáció csak látszólagosan vált a robotok szempontjából kétirányúvá, hiszen a wireless kamera képét nem a robot továbbítja, ő csak hordozóként vesz részt a visszafelé irányuló kommunikációban. A vezérlő utasításokat továbbra is a távvezérlőn keresztül kapja a robot, kiegészítve egy harmadik motorral, amely a kamera körbeforgatását teszi lehetővé. Wireless kamera
Kamerával felszerelt robot
A kommunikáció tehát kétirányú ugyan, de a két irány különböző csatornán zajlik (wireless és bluetooth). A konstrukció jól használható olyan helyeken, ahová az akadályok miatt az ember nem képes bejutni. A konstrukciók és a programok részletes leírása a későbbiekben.
2
2. alprojekt Kétirányú, azonos csatornás kommunikáció. A wireless kamera jelét nem képes a robot továbbítani a bluetooth technológia átviteli sebessége miatt. A tényleges kétirányú kommunikációhoz nem kameraképet sugárzunk, hanem ultrahangos távolságérzékelővel mért távolságadatokat. Tehát a robotot továbbra is egy távirányító vezérli, de járműre szerelt ultrahangszenzor képes 180o-os látószöggel szkennelni a környezetét. Az így mért távolságértékeket bluetooth-on visszaküldi a távvezérlőnek, amely LCD képernyőjén megjeleníti a radarjeleket (miután a polár-koordinátákat descartes-koordinátákká transzformálja). Most már valódi kétirányú kommunikációról van szó, hiszen a robotok odavissza ugyanazon a csatornán cserélnek információt. A radarkép alapján a távvezérlőt még mindig egy ember irányítja. A kamerás megoldáshoz képest az előny, hogy a használt ultrahang technológia miatt nincs szükség fényre a környezet észleléséhez, így sötétben is teljes hatékonysággal működik. Az elkészített járműkonstrukció lényegesen bonyolultabb, mint a korábbiak. Két hajtott és két pár forduló kerékkel rendelkezik. A hajtott kerekek differenciálműhöz csatlakoznak, míg a forduló kerekek felfüggesztése mozgatható és rugalmas, valamint az első illetve hátsó kerékpár szinkronban, de ellentétesen fordul. A konstrukció és a programok részletes leírása a későbbiekben. Távirányító
Radaros jármű
3
3. alprojekt (lásd: Robotkommunikáció 2. rész) Autonóm robotkommunikáció. Amennyiben a kommunikációs folyamatból az emberi tényezőt is ki szeretnénk zárni, akkor olyan információ feldolgozó programot kellene írni az előző alprojektben bemutatott konstrukcióhoz, amely meghaladja az NXT minikomputer lehetőségeit, hiszen a beérkező radarjelek feldolgozását a minikomputernek kellene önállóan elvégezni. Így egy másik példán keresztül szemléltetjük a folyamatot. Az elmúlt évi Szabadfogású számítógép versenyen már bemutatott robotkéz konstrukció egy lényegesen továbbfejlesztett változatát készítettük el. Elkészült két kéz, egy jobb és egy bal. A két kéz a közismert kő-papír-olló játékot játszza egymással, emberi beavatkozás nélkül. Mindkét kéz két-két NXT minikomputert tartalmaz, és a teljes játékot egy különálló egység vezérli (automatikusan). Összesen 5 db NXT tégla kommunikál egymással. Azért, hogy az emberi tevékenységet ne zárjuk ki teljesen, a konstrukciót kiegészítettük egy fogadó egységgel, amelyen keresztül téteket lehet feltenni arra, hogy melyik kéz nyeri a játékot. A játék látványos, és helyenként intelligensnek tűnő módon viselkednek a kezek, hiszen egymás információira reagálnak, de a háttérben a véletlenszám előállítás dominál, amelyre egyszerű döntési algoritmusok épülnek. Ezeknek a döntési algoritmusoknak a mesterséges intelligencia előállítása szempontjából is nagy szerepük van, hiszen az emberi irányítási folyamat nagy része is ezen alapul (információk alapján a cél érdekében döntéseket hozni). A konstrukciós és programozási részletek a továbbiakban olvashatók.
A KONSTRUKCIÓK (HARDVER) BEMUTATÁSA Mint az előbbiekben mát leírtuk, három pályamunkánkkal neveztünk mellyel a robotok közötti kommunikáció különböző rétegeit mutatjuk be. Az alábbiakban a konstrukciókról esik néhány szó. 1.a és 1.b alprojekt konstrukciói. Ebben az esetben megpróbáltuk a legminimálisabb szintre szorítani a robot felépítésének komplexitását. (Occam borotvája vagy Murphy törvénye: Ami elromolhat, az el is romlik.) A jármű robot két lánctalpból, ezeket meghajtó két motorból, valamit egy intelligens NXT mini komputerből áll. Kiegészítésként rászereltünk egy 360 fokban körbeforgatható forgózsámolyt, melyre egy wireless mini videokamerát erősítettünk (1.b alprojekt). A kommunikáció mikéntje ezzel nem változott, azonban erről majd a későbbiekben. A forgózsámoly meghajtásáért egy, az alatta elhelyezett motor felel, melytől a meghajtás egy 90 fokban elfordított áttétel segítségével jut el a forgózsámolyig. A lánctalpak meghajtása 4
annyiban egyszerűbb, hogy itt a motorok közvetlenül a lánctalp csillagkerekeinek tengelyeihez csatlakoznak, minden áttétel nélkül. Többek közt ez adja a robot nagyfokú mozgékonyságát. A robot hátrányai közé tartozik aszimmetrikus felépítése mely megnehezíti az irányíthatóságot. És most essen pár szó a távvezérlőről is. A konstrukció itt is szinte minimalista kivitelben készült el. A távvezérlő két oldalán található karok a sebességváltoztatást szolgálják oldalhelyesen (a távvezérlő jobb karja a robot jobb oldali motorját vezérli). A motorok alatt elhelyezésre került két nyomógomb, amelyek az irányváltásért felelősek. Mintha a robotot fékezés nélkül hátramenetbe kapcsolnánk. A tégla középen helyezkedik el, ezzel elősegítve a kényelmesebb fogást és a súlyponti stabilizációt. A forgózsámolyt vezérlő motor a távvezérlő elülső felén, középen található, jobbra fordításánál a kamera jobbra kezd el forogni és fordítva. A robot alkalmas, ember számára nem megközelíthető helyek felderítésére. Azonban túlságosan egyenetlen terepen való mozgásra magas súlypontja miatt nem használható. A robot továbbfejleszthető egy elülső és egy hátulsó traktussal, melyek segítségével a lejtők megmászására is alkalmassá lehetne tenni. Ezen kívül a távvezérlőn kényelmesebb fogást lehetne kialakítani. 2. alprojekt konstrukció. A következő robotunk a kétirányú kommunikációt szemlélteti. A robot felépítése ebben az esetben inkább egy közúti járműre emlékeztet. Középső kerékpárja hajtott, valamit ez rendelkezik felfüggesztésekkel. Az elülső és hátsó kerékpárok az alap (párhuzamos) állapothoz képest mindkét irányban 45-45 fokot képesek kitérni. A jármű a megszokott két fordulókerék helyett néggyel rendelkezik, így a fordulókör jóval lecsökken, ennek köszönhetően a robot meglepően kis helyen, akár egy 30 cm átmérőjű körben képes megfordulni. Azonban a fordulókerékkel rendelkező járművek egyik problémája itt is kiütközött, miszerint a körön forduló járműveknél a külső íven forduló kerekeknek gyorsabban kell fordulniuk, mint a belsőknek. A merev tengelyű járművek erre nem képesek, viszont ha megszakítjuk, az összeköttetést a kerekek között, egy motorral nem lehet őket meghajtani, így egy az életnagyságú járműveknél bevált megoldáshoz folyamodtunk és beépítettünk egy differenciálművet. Mint a neve mutatja, ez a szerkezet kiegyenlíti a különbséget a két oldalsó kerék fordulatszáma között, valamit szükség esetén megengedi az eltérést.
5
A differenciálmű egy fogaskerékbe összeszerelt fogaskerékrendszer, melyen belül a fogaskerekek képesek függetlenül a háztól elfordulni. A képen mindez jól megfigyelhető.
A hat kerék közül melyekkel a robot rendelkezik csak kettő hajtott. A maradék négy, úgynevezett „szabadon futó” kerék, melyeknél így nem lép föl fordulatszám különbség probléma. Ezen 4 kerék tengelyszögének változtatásáért 1 motor felelős. Mivel a robot alváza fölött rögzített tengely fordítja mind a két pár kereket ezért forgásszinkronizációs problémáink sincsenek. A Kerekek ki és befordításáért egy fogaslécsor felelős, míg a tengelyt egy 30-szoros áttételű fogaskerék áttétel forgatja, ezáltal a kerékfordítás esetleges egy fokos hibája egy harmincad fokra csökken. A tégla az alváz fölött nem sokkal helyezkedi el, ezáltal tartva alacsonyan a robot súlypontját, ezzel is erősítve a stabilitást. A stabilitásért felelős még a két középső, hajtott keréken elhelyezett egy centi magasságváltozást tolerálni képes felfüggesztés, valamint, egy a rovarvilágból merített ötlet. A robot középső kerekeinek távolsága nagyobb, mint a másik két párnál. ezáltal is növelve az alátámasztási felületet. A robot csak akkor borul fel, ha a súlypont kimozdul az alátámasztás fölül, azonban mivel a súlypontunk igen alacsonyan van, a robot akár hatvan fokos oldalirányú megdöntés esetén is a kerekeire érkezik vissza. A robot elején elhelyezésre került egy az előző roboton látotthoz hasonló forgózsámoly. Ezúttal azonban kamera helyett egy ultrahangszenzor került rá, mellyel a robot akár sötétben is képes „kitapogatni a környezetét”. Az áttétel ez esetben is igen nagy, így csökkentve a hibahatárt. Az érzékelő az alvázhoz van rögzítve, így menet közben sem remeg. A robot alváza igen vastag, mivel itt került elhelyezésre a három motorból kettő valamit a differenciálmű. A következőkben essen pár szó a távvezérlőről. A jobb oldalon található kar segítségével a sebesség tetszés szerint növelhető vagy csökkenthető. Azonban az elfordulást két nyomógombbal lehet vezérelni, melyek konstansértékkel fordítják el a kerekeket. A távvezérlőn még két gomb található melyek közül az egyikkel az ultrahangszenzoros mintavételezést lehet elindítani. Mivel a robotot arra terveztük, hogy nem belátható terepen is lehessen irányítani, ezért az ultrahangos letapogatás alapján, a távvezérlő képernyőjére rajzolt kép ugyan tájékoztat a környezeti terepviszonyokról, de ez alapján a robotot csak abban az esetben lehet irányítani, ha fordítás során azt is látjuk a képernyőn, hogy az eleje éppen merre 6
néz. Ezért a programba beépítettünk egy olyan pozíciómeghatározó algoritmust, amely képes egy irányvektort mozgatva a képernyőn megjeleníteni a robot aktuális „előre” irányát. A második nyomógomb ezt a funkciót aktivizálja és jeleníti meg a távvezérlő képernyőjén a vektort. Mindezekkel együtt a távirányító inkább asztalra vagy sima felületre letéve használhatóbb, mintsem kézben tartva, ellentétben az előzőkkel (1.a és 1.b alprojekt távvezérlői).
A terepviszonyok és a radarkép, valamint az irányvektor képernyőn megjelenő képe (részletesebb szemléltetés a mellékelt videón).
A terepviszonyok.
A terepviszonyoknak megfelelő radarkép.
7
Az irányvektor pozíciója a képernyőn (más terepviszonyok mellett).
A PROGRAMOK (FORRÁSKÓD) BEMUTATÁSA Mivel négy konstrukció készült el a projekt keretei között, ezért a hosszú és részletes bemutatás elkerülése érdekében csak a 3. alprojekthez készült forráskódot mutatjuk be részletesen. Valamennyi forráskódot tartalmazó állomány szerepel a CD mellékleten az egyes utasításokhoz fűzött kommentekkel együtt. A forráskódok Bricx Command Center keretprogrammal készültek. Alapvetően a C nyelvi struktúrájúak. 1.a és 1.b alprojektek forrsákódjai Mindkét esetben két program szükséges a konstrukció működtetéséhez. A master robot a távvezérlő és a kommunikációs kapcsolatban a slave szerepét tölti be a jármű. A távvezérlő programjának elve, hogy a minikomputerhez csatlakoztatott két szervo motor elfordulási szögét olvassuk ki és tároljuk egy-egy változóban. Ezeket az egész értékeket küldi át a master robot bluetooth-on a járműnek, amely a két motorjának sebesség értékeként használja fel a számokat. Minél nagyobb szöggel fordítottuk el a távvezérlő motorjára szerelt botkormányt, annál nagyobb sebességgel forog a jármű adott motorja. A bal oldali szervo elfordulási szögét a jármű bal oldali motorjának sebességparamétereként használjuk, míg a jobb oldalit hasonlóan. Az 1.b alprojektben egy harmadik szervo motort is tartalmaz a konstrukció, amely a járműre szerelt kamerát forgatja. A távvezérlőre is felkerült ennek megfelelően egy harmadik motor, amely az irányítást szabályozza. A különböző irányú mozgásokhoz két különböző elvet használtunk. A motorok mozgatása esetén az irányváltást egy-egy nyomógomb benyomása biztosítja, amely -1-el megszorozza a mért elfordulási szög értékét, így az előjelváltás ellentétes irányú forgatást eredményez. A kamera mozgatásánál az elfordulási szöget eleve előjelesen mérjük, így ott nincs szükség a szorzásra, csupán a kapott érték bluetooth-on keresztüli átküldésére. A távvezérlő program forráskódja (Egyirany_master.nxc):
8
9
A slave jaármű programjának forráskódja (Egyirany_slave.nxc):
2. alprojekt forrsákódjai A távvezérlő programjának kommentekkel ellátott forráskódja (Ketirany_master.nxc):
10
A távvezérlő programjának kommentekkel ellátott forráskódja (Ketirany_slave.nxc):
11
12
13
A projektek elkészítése során használt szoftverek, források
Szoftverek Képszerkesztés
Video szerkesztés
PIP video szerkesztés
Wireless képátvitel
Programozói szoftverkörnyezet
A programírás során felhasznált források Kiss Róbert, Pásztor Attila: Mobil robotok programozása NXC és NXT-G nyelven, Kecskeméti Főiskola GAMF Kar, főiskolai jegyzet, 2009 Kiss Róbert, Badó Zsolt: Egyszerű robotika A Mindstorms NXT robotok programozásának alapjai, National Instruments Hungary, elektronikus könyv, 2010 Dave Baum: NQC Programmer's Guide, elektronikus könyv, 2003 Doxygen: NXC Version 1.2.1 r4, elektronikus könyv, 2010
14