Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares VARGA Máté1, PÓGÁR István2, VÉGH János 1
Programtervező informatikus BSc szakos hallgató Programtervező informatikus MSc szakos hallgató Debreceni Egyetem, Informatikai Kar, Informatikai rendszerek és hálózatok tanszék 2
ABSTRACT An ongoing development at University of Debrecen, Faculty of Informatics is to convert a remote controlled all-terrain robot into an autonomous robot. In that process, a key role was devoted to understanding the original robot control software, as well as to design and implement a new software for both driving the robot motion parts and the newly developed sensors. A state-of-art report is presented. Keywords: robot, software, FPGA, GPS
ÖSSZEFOGLALÓ A Debreceni Egyetem Informatikai Karán elkezdtünk átépíteni egy készen vásárolt távvezérelhető terepjáró robotot autonóm robottá. A munkában kulcsszerepe volt a robotot vezérlő szoftver megértésének, és annak alapján saját, a robotot meghajtását és az ahhoz illesztett saját érzékelők kezelését is megvalósító program implementálásának. Az ezt megvalósító munkát írjuk le. Kulcsszavak: robot, szoftver, FPGA, GPS
BEVEZETÉS Egy jól működő robot megalkotása komoly feladat. Mechanikai, elektronikai és legtöbb esetben szoftverfejlesztés összehangolt folyamatát igényli. A fejlesztési idő rövidítésének egyik módja egy mechanikailag megfelelő, kész robot vásárlása, és annak hardveres és szoftveres átalakítása a kitűzött cél elérése érdekében. Fejlesztésünket olyan, speciális célokra használt terepjáró robotra[1] alapoztuk, amelynek mechanikai kiépítése nagyon stabil, de amelyet eredetileg csak a gyártó által megadott távvezérelt működési módban lehetett használni. A robot egy négy-kerék meghajtású jármű, melyet vezeték nélküli hálózaton keresztül tudunk irányítani. A kocsira egy IP kamera is rögzítve van, melynek képét figyelve egy kontrollerrel irányítani lehet az eszközt, viszont a robot autonóm mozgások megtételére nem alkalmas. Az első fontos feladat a szükséges mozgást vezérlő szoftverek fejlesztése volt.
1. VEZÉRLÉS EMBERI BEAVATKOZÁSSAL Az eszköz eredetileg a SuperDroidRobots nevű cég terméke, amelyet megvásárláskor „as is” módon bocsátottak rendelkezésünkre. A megfelelő szoftverek, telepítésük után, vezeték nélküli pontpont kapcsolaton keresztül biztosítottak lehetőséget a robot távvezérlésére, melyet a robot elején elhelyezett IP kamera képén lehetett nyomon követni. A gyártói dokumentáció csak a távirányítós működtetésre vonatkozott, nem támogatta az eszköz átépítését autonóm robottá.
1.1. A gyártó által szolgáltatott szoftvercsomag A robot mozgásáért felelős négy motort vezérlő elektronika kellően jól működött az alapcsomagban, ezért úgy döntöttünk, hogy azt addig nem cseréljük le, amíg nem szükséges kifinomultabb vezérlés kialakítása. A vezérlő elektronikához egy RS232 csatlakozóval kapcsoltak egy iPocket232 nevű eszközt, amely Ethernet csomagok adat része és UART frame-ek közötti kétirányú konverzióra volt konfigurálva. Ez az eszköz volt hozzákapcsolva a wireless bridge-hez, amellyel a távoli számítógépen futó VSP (Virtual Serial Port) program kommunikált. A VSP által létrehozott virtuális soros portra kellett a tényleges vezérlést irányító programmal csatlakozni. A szoftverek csak Windows operációs rendszerre lettek implementálva és működésükhöz Microsoft .NET 3.5 framework és DirectX 9.0c API csomag telepítését is igénylik (más verziókkal nem működik).
1.2. Az általunk elkészített szoftverek Az eredeti szoftveres megoldás függőségei miatt először egy sokkal hordozhatóbb verzió implementációját tűztük ki célul. Ennek megvalósításához meg kellett érteni a vezérlést, paramétereinek szerepét és az adatkommunikáció módját. Szükség volt továbbá (legalább a fejlesztés kezdeti fázisában) egyfajta szimulátorra, hogy az esetlegesen előforduló implementációs és algoritmus hibák ne károsíthassák a valódi berendezést. A fejlesztés során a gyári vezérlőprogram működtetése során, ismert funkciók működtetésével parancsokat küldtünk a vezérlőnek és a hálózati forgalom monitorozásával , a vezérlési paramétereket folyamatosan változtatva, sikerült azonosítanunk a vezérlő elektronika felé küldendő adatokat, azok reprezentációját, továbbá azt hogy milyen adatokat küld vissza a vezérlő egység. Az ezen információk birtokában, C nyelven implementált saját vezérlő programunk, a virtuális soros port kihagyásával, sikeresen mozgásra bírta a robotot. A robotot szimuláló program nemcsak az algoritmus és implementáció tesztelésekhez bizonyult rendkívül hasznosnak, hanem a későbbi off-line teszteléshez is. A későbbi fejlesztés eredményeként a vezérlő programot kibővítettük X Window System-en helyesen megjelenő virtuális joystick, és a népszerű VLC lejátszó API-jával történő kamerakép megjelenítés funkciókkal is. Ezen API-ok mindegyike nyílt forráskódú. A C nyelv elterjedtsége miatt a mozgást irányító programban használt adatkonverziós függvények nagyszámú mikroprocesszoron újrahasznosíthatók.
1. ábra A megvásárolt, illetve az általunk fejlesztett vezérlő szoftverek kezelői felülete futás közben
2. ÖNÁLLÓ MOZGÁS MEGVALÓSÍTÁSA Ahhoz hogy a robot önálló mozgásra is képes legyen, lehetőséget kell biztosítani a vezérlést végző szoftverek számára, hogy a robot mindenkori környezetéről információkat szerezhessenek. Ehhez szenzorokra van szükség. Fedélzeti számító egységként többféle lehetőséget is számba vettünk: gyors prototípus fejlesztésre laptop PCt használtunk, végleges megoldásként pedig FPGA alapú rendszert. A számítóegységet az eszközhöz rögzítjük. A jelen munkában egy (közép szintű) Altera DE2 Development and Education Board [2] fejlesztői kártyát használtunk. Ezzel párhuzamosan folyik egy magasabb szintű FPGA kártyán[3] is a fejlesztés, a további feladatok megoldására.
2.1. A GPS modul A robot tervezett megoldandó feladatai között szerepel, hogy önállóan jusson el egy GPS koordinátákkal megadott helyre Erre a célra egy GPS panelt készítettünk[4], amelyet a DE2 kártyához illesztettünk. A panelen egy Fastrax IT321 típusú chip kapott helyet, amely másodpercenként egyszer tudja a globális pozíciót a GPS jelből meghatározni. A chip UART protokollal kommunikál és az általunk használt konfigurációban automatikusan minden másodpercben egyszer kiküldi az NMEA 0183 specifikációnak megfelelő adatmondatokat.
2.2. Autonóm tesztút fedélzetre szerelt FPGA fejlesztői panellel A GPS panelt a DE2 kártyához illesztve, hozzákezdtünk egy olyan szoftver készítéséhez, amely önállóan mozgatja a robotot, közben pedig a GPS modul által lekérdezett koordinátákat naplózza. A robot vezérléséhez szükséges hardvermodulok megírása nagyon hosszú időt vett volna igénybe, ezért kezdésnek az Altera fejlesztői környezetében megtalálható előre elkészített paraméteresen generálható modulokat használtuk. Ezek között megtalálható egy processzor is, amelynek standard verziója az ingyenes verzióban is generálható és időkorlát nélkül használható. A fejlesztést megkönnyítette az Altera Qsys nevű rendszer építő programja, amellyel ezek közül kiválaszthatjuk a számunkra szükségeseket, a köztük lévő kapcsolatokat és a kapcsolatok kezeléséhez szükséges segédmodulokat. A rendszer ezután kigenerálható, majd egy saját készítésű modulban példányosítható. Az általunk készített rendszer tartalmaz egyet a következő modulokból: • NIOS II/s processzort és a működéséhez szükséges modulokat, • UART vezérlő a GPS modullal történő kommunikációhoz, • UART a vezérlő elektronikával történő kommunikációhoz, • LCD vezérlő modult, amely a DE2-es panelen megtalálható kijelző irányítására alkalmas, • PIO modult, amely a processzoron futó program és a példányosító modulban használt regiszterek és vezetékek számára biztosít a rendszer által használt memóriában közös, ütközésmentes elérést, • SRAM vezérlő modult, amely a kártyán található 512KB-os SRAM meghajtására alkalmas. Ezt a rendszert egy saját, Verilog HDL nyelven megírt modulban példányosítottuk és bekötöttük a megfelelő I/O vezetékeket a rendszerbe. Azért hogy a robotot veszély esetén le lehessen állítani, illetve csak akkor induljon el, amikor már megfelelő terepen vagyunk, a motorok felé irányuló UART modul kimeneti jelét egy kapcsolótól függővé tettük. A napló lementése céljából egy kapcsolót a rendszerben szereplő PIO bemenetére kötöttünk.
2. ábra A jelenlegi elrendezés blokkvázlata A processzorhoz tartozó fejlesztő környezettel generáltattunk egy úgynevezett Board Support Package-et, amelyben az Altera HAL minimális hardver absztrakciós réteget használtuk. Ez a csomag a rendszerben használt modulok Unix stílusú elérését teszi lehetővé, valamint további ANSI C header állományoknak megfeleltethető fájlokat tartalmaz. A program másodpercenként tárolja az aktuális koordinátákat a memóriában, amíg az erre szánt terület (500 koordináta pár) be nem telik. A PIO modulhoz rendelt kapcsoló állapotától függően a program az RS232-es porthoz kapcsolt UART modul kimeneteként a motoroknak szánt vezérlőmondatot vagy a tárolt koordinátákat küldi ki. A robot megállítása után csatlakoztatható egy PC-hez, a megfelelő kapcsoló elmozdítása után az adatok rögzítése egy terminálon keresztül könnyedén megoldható.
3. ábra Egy teszt út folyamán rögzített GPS koordinátáknak megfelelő pozíciók (2011 Google – Ábrázolás 2011 GeoEye, Térképadatok 2011 Tele Atlas)
KONKLÚZIÓ ÉS JÖVŐBENI TERVEK A robot részegységei közötti kommunikáció és a vezérlési paraméterek megértése után lehetővé vált saját, hordozható vezérlőprogram írása. Első lépésként megszületett a robot távvezérlését végző, hordozható programcsomag; továbbá egy olyan, a robot fedélzetén működő alkalmazás, amely lehetővé teszi a robot tesztelése közben lekérdezett GPS koordináták utólagos vizsgálatát. A munka továbbfejlesztéseként most készül egy, a GPS és a fordulatszámmérők által szolgáltatott adatok összehasonlítására alkalmas alkalmazás. Távlati célunk egy a robotot relatív pozícióba eljuttatni képes szoftver fejlesztése is. Tapasztalataink alapján specifikálunk egy, az eszközkezelést leíró modellt, amely biztosítaná új szenzoroknak a rendszerhez történő dinamikus hozzáadását, a vezérelhető eszközökkel történő kommunikáció absztrakcióját, továbbá programozási interfészt nyújtana az irányítást végző programnak és lehetővé tenné, hogy bármilyen platformon implementálhassuk az ennek megfelelő komponenseket.
Köszönetnyilvánítás A publikáció elkészítését a TÁMOP 4.2.1./B-09/1/KONV-2010-0007 és TÁMOP-4.2.2/B-10/12010-0024 számú projektek támogatták. A projektek az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósultak meg.
HIVATKOZÁSOK [1] http://www.robotshop.com/eu/superdroids-4wd-wifi-controlled-atr-all-terrain-robot-eu.html [2] http://www.altera.com/education/univ/materials/boards/de2/unv-de2-board.html [3] http://sine.ni.com/nips/cds/view/p/lang/en/nid/205898 [4] Pógár et al, a konferencia anyagban.