Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék
Szabó Bence Károly
FALKAIRÁNYÍTÁS LEGO ROBOTOKKAL Önálló laboratórium záró jegyzőkönyv 2014/15. II. félév
KONZULENS 1 Dr. Kiss Bálint BUDAPEST, 2015
Tartalomjegyzék 1.
2.
Bevezetés .................................................................................................................. 4 1.1.
Feladat ............................................................................................................... 4
1.2.
Robot bemutatása .............................................................................................. 4
1.3.
Robotok programozása ..................................................................................... 5
Megvalósított Algoritmusok................................................................................... 6 2.1.
Sebességbecslő .................................................................................................. 6
2.2.
Bluetooth küldő protokoll ................................................................................. 7
2.3.
Bluetooth fogadó protokoll ............................................................................... 8
2.4.
Program indulás ................................................................................................ 9
3.
Összegzés................................................................................................................ 11
4.
Továbbfejleszthetőségi irányok ........................................................................... 13
Irodalomjegyzék............................................................................................................ 14 Függelék ......................................................................................................................... 15
HALLGATÓI NYILATKOZAT Alulírott Szabó Bence Károly, hallgató kijelentem, hogy ezt a záró jegyzőkönyvet meg nem engedett segítség nélkül, saját magam készítettem, csak a megadott forrásokat (szakirodalom, eszközök stb.) használtam fel. Minden olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva más forrásból átvettem, egyértelműen, a forrás megadásával megjelöltem. Hozzájárulok, hogy a jelen munkám alapadatait (szerző(k), cím, angol és magyar nyelvű tartalmi kivonat, készítés éve, konzulens(ek) neve) a BME VIK nyilvánosan hozzáférhető elektronikus formában, a munka teljes szövegét pedig az egyetem belső hálózatán keresztül (vagy hitelesített felhasználók számára) közzétegye. Kijelentem, hogy a benyújtott munka és annak elektronikus verziója megegyezik. Dékáni engedéllyel titkosított diplomatervek esetén a dolgozat szövege csak 3 év eltelte után válik hozzáférhetővé. Kelt: Budapest, 2015. 05. 18.
...……………………………………………. Szabó Bence Károly
1. Bevezetés 1.1.
Feladat
Az önálló laboratóriumi témám alkalmával három Lego Mindstorm típusú robotból álló falkával ismerkedtem meg. A kívánt működés egy rendezett mozgás létrehozása, amely során egy robotot követ a többi, autonóm módon. Ehhez megvalósításra került egy kommunikációs protokoll, mely segítségével távolságadatok kerülnek elküldésre az eszközök bluetooth moduljainak segítségével. A mozgás egy dimenzióban történik, egy egyenes mentén.
1.2.
Robot bemutatása
A feladat megvalósításához három az 1.2 1-es ábrához hasonló robotot használtam.
1. ábra: NXT robot
4
A robotokon rendre megtalálható egy ultrahangos távolságérzékelő, differenciális meghajtású lánctalp és egy NXT tégla, mely tartalmazza a 32-bites ARM7-es mikroprocesszort, valamint a mögöttük lévő robot távolság-érzékelését segítő falat. A téglákban/téglákon foglal helyet a bluetooth modul, motor- és szenzorportok, továbbá egy USB 2.0-ás port. Minden egységbe 6 elem szükséges vagy egy speciális tölthető akkumulátor. A robotok távolságérzékelése cm-es felbontású, 6cm és 40-50 cm között megbízható, de efölött és ez alatt elég bizonytalan.
1.3.
Robotok programozása
A robotokat LabView 2014Error! Reference source not found.-ben programoztam. Ehhez rengeteg segítséget adtak a Programozható irányítóberendezések és szenzorrendszerek laboratórium megfelelő laborfoglalkozásai Error! Reference source not found.. Segítségemre volt továbbá egy ingyenesen elérhető program a virtual NXT Error! Reference source not found., mely segítségével otthonról tudtam szimulálni egy-egy NXT kijelzőjét és a megírt algoritmusokat.
5
2. Megvalósított Algoritmusok 2.1.
Sebességbecslő
2. ábra: Sebességbecslő, motorvezérlés
A 2.1 1-es képen látható probléma a következő: nem ismerjük a v1 sebességet, viszont mérhető a d távolság. Ezek tükrében felírható a következő képlet:
(2.1) Ebből kifejezhető a v1 sebesség. A szabályozás során shiftregisztereket felhasználva megadható a deltad és deltat, amelyek az előző alkalommal mért és az újonnan regisztrált értékek különbségei. Az idő mérésére felhasználható egy belső timer, amivel könnyen számolható az eltelt idő. Az így kapott értéket egy P erősítő taggal használom fel a szabályozáshoz. Szabályozni kívánjuk továbbá a két robot közötti távolságot. Erre egy P szabályzót használtam fel. Itt megadható egy alapjel, ami a példaprogramban 20 (cm) egység, majd ezt szorozza a paraméterben megadható P értékkel. A két sebességérték egy-egy súlyozó tényezővel megszorozva kerül átlagolásra. Ezt azért tartottam fontosnak, mert így kalibrálható, hogy mely tulajdonság fontosabb, a sebességbecslés vagy a távolságtartás. Ezután az aktuális sebesség értéken elvégeztem egy mozgó átlagolást. Mivel a távolság érték cm-es felbontásban áll rendelkezésre, így gyakori volt a hirtelen sebességváltozás. Kiegészítve egy 16 elemű FILO sorral, ami minden mintavételnél új elemmel bővül, majd a legrégebbit elhagyva tartja az elemszámot, és kiszámolja az elemek átlagát. Ez az érték kerül a motorok sebességet 6
meghatározó bemeneteire.
3. ábra: Sebességbecslő, motorvezérlés
2.2.
Bluetooth küldő protokoll
Az emberi beavatkozást szolgáló kapcsolat bluetooth-on keresztül biztosítható. Jelen esetben három decimális, 100-nál kisebb számot kívánunk átküldeni egyik robotról a másikra. Ezek rendre: a távolság az előző kocsitól (alapjel) és két távolságadat, hogy az egyes robotok hány cm-re vannak éppen az előttük lévőtől. A célja ezen adatoknak, hogy egy számítógéppel zárva, mintegy kommunikációs kört kialakítva PC-ről állítható a távolság és a kezelő is informálódik a további robot helyzetéről.
4. ábra: Küldő protokoll
7
A küldőrutin egy hatjegyű számba konvertálja az egy tömbben tárolt adatokat. Megszorozza 10000-rel az elsőt, majd 100-zal a másodikat, és összeadja. Mind ezután szükséges elvégezni egy „szám to string” konverziót, mivel valamely okból a rendszer nem válaszol jól az egész, decimális számok küldésére. Erre lenne külön Virtual Instrument (a továbbiakban: VI), de ha ezt használtam, akkor gyakran lefagyott a tégla. Ezt kiküszöböltem ezzel a string konverzióval, így ugyanaz a program lefutott és működött is.
2.3.
Bluetooth fogadó protokoll
5. ábra: Fogadó protokoll
8
A fogadó protokoll dekódolja a kapott üzenetet. Először megnézi, hogy a fogadott
üzenet
különbözik-e nullától, ugyanis
ez
a mailboxból
kiolvasott
alapértelmezett érték. Ha nem érkezett üzenet, akkor nem történik adatváltozás. Amennyiben nem nulla az érték, dekódolja az adott számból a kívánt három értéket osztásokkal és típuskonverziókkal. Ennek célja, hogy a rendszer levágja a nemkívánatos törtrészeket. Az így kapott kétszámjegyű egész szám az első fontos adat, ezt elmenti a saját tömbjébe, majd ezt visszaszorozva 10000-rel kivonja az üzenetből. Ezt megismétli kétszer, csak nem 10000-rel, hanem a megfelelő értékkel. Mindezek után beíródik az adott egység adatait tároló tömbbe. Itt egy különleges blokk gondoskodik arról, hogy az adatok sorban, egymás után töltsék fel azt. Az üzenetek kiolvasása másodpercenként egyszer ismétlődik. Ez a frekvencia növelhető lenne, de a mostani feladathoz ez is elegendőnek bizonyult.
2.4.
Program indulás
6. ábra: Indító programrészlet
9
A program kezdetén három dolog történik párhuzamosan.
Kiíródok az adattömb a képernyő aljára. Ez a további programfutás alkalmával is megtörténik mintegy ellenőrző jelleggel.
Küld egy bluetooth üzenetet a következő robotnak, hogy az elindulhat.
Továbbá várja az üzenetet az előző robottól. Csak akkor indul el a motorvezérlés, ha kapott string megfelelő, jelen esetben „OK1”. A robot ez idő alatt nem változtatja helyét.
10
3. Összegzés Feladatom végrehajtása során behatóbban megismerkedtem a LabView nevű programmal, grafikus fejlesztőkörnyezetével. Sok oktatóvideót megnéztem az NI weboldaláról, ezek nagyon hasznosnak bizonyultak a munkám során. Az általam készített sebesség és távolság szabályozás remekül működött, erről látható egy videó az irodalomjegyzék Error! Reference source not found. hivatkozás alatt. Azt NXT-k használata során néhány anomáliába ütköztem. Nem találtam olyan dokumentációt, amiben ezek hivatalosan le lettek volna írva. Ezért csak fórumozók ötleteit tudtam felhasználni, amik hol működtek, hol nem. Először is firmware frissítés közben előfordul, hogy a labview nem képes befejezni azt, ezért hibával leáll. Ilyenkor az NXT tégla bekerül egy firmware-re váró állapotba. Valamilyen oknál fogva a windows7/8 nem volt képes felismerni, hogy egyáltalán csatlakoztatták a számítógéphez az eszközt. Így lehetetlennek bizonyult elindítani a robotokat. Ezt a problémát Windows xp operációs rendszerrel el lehet kerülni, és sikeresen telepíteni az új firmware-t Még egy probléma adódott a bluetooth kapcsolattal. Az elkészült program olyan pont-pont kapcsolatot feltételez, ahol van egy master és egy slave modul. A master tud üzenetet küldeni a slave-nek, de a slave nem tud a master-nek, ő csupán a mailboxait képes kiolvasni. Az általam megalkotni kívánt konfigurációban három robot (első, középső, hátsó) sorban kapcsolódott volna a mögötte haladó modulhoz. Ennek értelmében páronként az első robot a master, a hátsó a slave. Így a középső robot egyszerre lenne slave és master is, de ezt általam nem ismert okok miatt képtelen volt teljesíteni. Amint a középső modul felcsatlakozott a hátsóra és elkezdett neki üzenetet küldeni, az első már nem volt képes csatlakozni a középsőhöz. Egy másik érdekesség, ahhoz, hogy bloetooth-on üzeneteket lehessen továbbítani egyik NXT-ről a másikra, kézileg kell csatlakoztatni egymáshoz őket, különben nem történik meg az üzenetek küldése/olvasása. Az üzenetek küldése, dekódolása remekül működött ameddig egy vonalon valósult meg a kommunikáció, de amint még egy elemet szerettem volna csatlakoztatni
11
a hálózatba, az már nem tudott a vonal terheltségére hivatkozva teljesíteni ezt. Erre a sajnálatos hibára nem találtam megoldást. A szabályozó algoritmus eredménye megtekinthető az általam feltöltött videón.
12
4. Továbbfejleszthetőségi irányok Számítógépes összeköttetés bluetooth modul felhasználásával gyűrű topológiában. Az újabb EV3 jelzésű tégla felhasználásával egy stabilabb csillag kapcsolat kialakítása bluetooth/wifi modulok használatával. Az üzenetben elküldött adatok mennyiségének növelése összetettebb mozgások kialakításának reményében.
13
Irodalomjegyzék [1]
National Istruments: LabVIEW grafikus fejlesztői környezet leírása, http://www.ni.com/ (2015. május 16.))
[2]
virtualNXT: virtuális NXT, http://www.robotvirtualworlds.com/virtualbrick/(2015. május 16.)
[3]
Programozható irányítóberendezések és szenzorrendszerek laboratórium: silabusz, Programozható irányítóberendezések és szenzorrendszerek laboratórium 7. mérés (2015. május 16.)
[4]
Programozható irányítóberendezések és szenzorrendszerek laboratórium: silabusz, Programozható irányítóberendezések és szenzorrendszerek laboratórium 9. mérés (2015. május 16.)
[5]
Szabályozás: video, lego NXT velocity estimation (205. május 16.)
14
Függelék 1. ábra: NXT robot ................................................................................................ 4 2. ábra: Sebesség becslő, motorvezérlés ............................................................... 6 3. ábra: Sebesség becslő, motorvezérlés ............................................................... 7 4. ábra: Küldő protokoll ........................................................................................ 7 5. ábra: fogadó protokoll ....................................................................................... 8 6. ábra: induló program ......................................................................................... 9
15