TÁVIRÁNYÍTÓS AUTÓ Ember-gép interfész házi feladat
Készítették:
Fodor Bálint
S02ZLO
Paróczi Zsombor
WRVU7O
Távirányítós autó – Ember-gép interfész házi feladat
1 FELADAT Távirányítós autók irányítására és visszajelzésre több módszer van. A feladat ezek felkutatása, összefoglalása, összehasonlítása. A lehetséges módszerek közül néhány nem szokványos megoldás demonstrálása, például beszédvezérlés. Minimum követelmény: •
Meglévő rendszerek vizsgálata
•
Korrekt, szerkesztett tanulmány
•
Javaslat új rendszer megoldásokra, részletes elemzéssel
Elsődleges modalitás(ok): •
mozgás
•
billentyű
Lehetséges kiegészítő modalitás(ok): •
beszéd
•
grafikus
Választható programnyelvek: •
Symbian C++ (Symbian platform esetén)
•
.NET Compact Framework C# (Windows Mobile esetén)
•
xCode (Apple iPhone)
Választható platformok: •
Apple iPhone
•
Windows Mobile
•
Symbian
A feladat megoldásához egy bluetooth kommunikációval rendelkező távirányítós autót kaptunk, amivel a félév során dolgozhattunk. Az első prezentáció alkalmával rögzítettük, hogy mit is szeretnénk megvalósítani a félév során. Ezek a következőek voltak: •
Meglévő irányítási rendszerek vizsgálata, különös tekintettel a mobiltelefon készülékek lehetőségeire
•
Alaprendszer elkészítése, amivel az irányítás megvalósítható
•
Kétfajta irányítási rendszer kidolgozása és megvalósítása mobil készülékre: o
Billentyűkkel irányítás
o
Szemmozgással irányítás (ha a félév időkerete elegendő lesz rá)
2 / 14
Távirányítós autó – Ember-gép interfész házi feladat
2 LEHETSÉGES VEZÉRLÉS Csapatunk a feladat kiírásban szereplő, vezérlési lehetőségek feltérképezésével kezdte a félévet. Ehhez sorra vettük a jelenleg kereskedelmi forgalomban lévő mobiltelefon készülékek lehetőségeit. Egy távirányítós autó irányításához mindenképen szükség van valamilyenfajta bemeneti csatornára, amin keresztül a vezérlés megvalósítható. Felvetődött az kérdés is, hogy kell-e kimeneti csatornát biztosítani a felhasználó felé. Hiszen ha látja az autó „reakcióit”, azaz képes mozgását megfigyelni, akkor nem szükséges, hogy a mobil készülék is jelezze a (predikált) mozgást, elküldött vezérlési parancsokat. Ez az állítás a legtöbb esetben helytállónak bizonyult, de bizonyos esetekben mégis szükséges kimeneti csatornát biztosítani. A mobil készülékeknél tehát megvizsgáltuk az irányításhoz felhasználható „eszközöket”.
2.1 BEMENETI CSATORNA A bemeneti csatornának használható interfészeket különböző kategóriákba soroltuk, ezek a „konvencionális” (billentyű, érintőképernyő, készülék mozgatása), „beszéd-hallás”, „kamera”, „hibrid” kategória neveket kapták.
A konvencionális vezérlés kategóriájába tartozó bemeneti
csatornák használata igen elterjedt, az általunk talált rendszerek kivétel nélkül ezeket használták.
2.1.1 BILLENTYŰKKEL VEZÉRLÉS A legtöbb mobiltelefon készülék rendelkezik billentyűzettel, a legtöbb készüléknél
ez
tekinthető
elsődleges
bemeneti
csatornának.
Hívás
kezdeményezéséhez, menü kezeléséhez, SMS írásához ezt használja a legtöbb felhasználó, így a billentyűket felhasználva egy egyszerű, felhasználók számára megszokott vezérlési mechanizmus biztosítható. Fontos azonban megjegyezni, hogy aki még soha sem használt ilyen készüléket, annak nem lesz intuitív ez a fajta vezérlés, sőt, az idősebb valamint gyengén látó felhasználóknak akár nehézséget is jelenthet a billentyűs vezérlés. Egy
távirányítós
autó
vezérlésénél
célszerű
az
autó
irányítását
összehangolni az irányító billentyűk elhelyezkedésével, tehát a bal oldalon lévő gomb a balra kanyarodást, a jobb oldalon lévő a jobbra kanyarodást, 1. ábra
hasonlóan a fel a gyorsítást, a le a lassítást jelentse. Egy átlagos mobiltelefon billentyű kiosztását vizsgálva (1. ábra), a 2 – fel, 4
– balra, 6 – jobbra, 8 – le billentyűkiosztást találtuk a legmegfelelőbbnek. Kényelmi szempontok miatt nem tartottuk megfelelőnek az 5-ös billentyű „le” jellegű használatát, az átlagos mobiltelefon billentyűzeten nem férnek el egy felnőtt férfi ujjai, ha az 5-ös billentyűt is használjuk.
3 / 14
Távirányítós autó – Ember-gép interfész házi feladat
2.1.2 ÉRINTŐKÉPERNYŐS VEZÉRLÉS A 2005-ös év nagy újdonsága volt az érintőképernyős mobiltelefonok megjelenése, ami 2007-ben terjedt el igazán. A mobil készülékek kijelzőjének mérete drasztikusan megnőtt, így a felhasználó számára több információt lehetett közölni. Az érintőképernyő csak részben váltotta fel a billentyűkkel történő vezérlést, a billentyűzet nélküli telefonokban úgynevezett „virtuális billentyűzet” kapott helyet. Ez lényegében egy kijelzőn megjelenített billentyűzetnek felel meg. Az érintőképernyő kihasználására csapatunk egy kormánykerék és váltó megjelenítést talált ki első ízben. Ebben az esetben az érintőképernyőn a váltó kart „tolva” lehet a sebességet változtatni és a kormány bal és jobb oldalának kanyarodni.
érintésével A
2.
ábrán
lehet látható
elrendezés lehetővé teszi, hogy a jobb hüvelykujjal
2. ábra
akár
folyamatosan
változtassuk a sebességet, míg a bal hüvelykujjal adhatjuk meg az irányt. A felület kezelése intuitív és egyszerű, a részletes ábrák és az „autó belső terének” analógiája a felhasználók számára érthető, így nem kell külön magyarázatot fűzni a kezeléshez.
Második ötletünk alapját az érintőképernyős irányításra a kétfajta irányítás (előre-hátra, jobbra-balra) összevonhatósága adta, így egy „radar” szerű (3. ábra) felületen egyszerre határozható meg a sebesség és az irány is. A radar felületét megérintve egy ponton meghatározhatjuk a kívánt irányt és sebességet (kvantálás után). Ehhez a radar középpontjából egy irányított vektort veszünk fel a megérintett pontig, majd ezt a vektort vetítjük le a képernyő x és y koordinátáira. Így a sebesség és irány is meghatározható. Ebben az esetben az irányításhoz nem szükséges mindkét kéz, egy 3. ábra
ujj is elegendő a megfelelő irány és sebesség beállításához. A felület egyszerűsége miatt nem igényel tanulást.
Harmadik ötletünk az érintőképernyő kihasználására egy rajztábla szerű megvalósítás, ahol a felhasználó egy szabadkézi rajzot készít (összefüggő „görbe” vonal). A szoftver a rajz kiindulási pontjától kezdve megvizsgálja a görbe vonalát (relatív görbületét – esetleg deriválással) és ez alapján
4 / 14
Távirányítós autó – Ember-gép interfész házi feladat vezérli a távirányítós autót. Ebben az esetben nem valós idejű a vezérlés, hanem egy előre megrajzolt útvonalat követ a kisautó, végig azonos sebességgel haladva. Ezen ötletünk jelentősen eltér az előzőktől, egy előre meghatározott útvonal „tervét” hajtja végre az alkalmazás. Sok esetben bizonyulhat azonban ez is jó ötletnek, ha például egy szoba alaprajzát vetítjük a rajzoló felületre. Ilyenkor meghatározható előre az útvonal, „szükségtelen” a valós idejű irányítás, kivéve persze, ha az a cél.
2.1.3 KÉSZÜLÉK MOZGATÁSA Az utóbbi években egyre több mobiltelefon készülékbe építettek giroszkópot, ezzel téve interaktívabbá az egyes alkalmazásokat, játékokat. A gyorsulásmérők eredményeit felhasználva így további bemeneti csatorna érhető el. A modern készülékek egy része képes érzékelni, hogy milyen pozícióban tartjuk telefonunkat, milyen irányba és milyen gyorsan mozgatjuk. A WII játékkonzolhoz készült repülőgép szimulátorok nagy részét a kontroller mozgatásával lehet vezérelni úgy, mintha egy modell repülőgépet tartanánk a kezünkben. Tehát a kontrollert előrefele megdöntve a repülőgép orrát lefele irányíthatjuk, a kontroller oldalra döntésével fordulhatunk. Ezt azt elvet egy távirányítós autó irányításához is felhasználhatjuk, mint említettük, a mobil készülékek egy része is rendelkezik a megfelelő szenzorokkal. A kezelés ebben az esetben rendkívül intuitív, az irányítás magától értetődő. Másik ötletünk, hogy az iPhone autós játékaiban a járműveket a telefon forgatásával lehet kormányozni és a képernyő bizonyos pontjainak megérintésével lehet a sebességet szabályozni (gyorsítani, lassítani). Így, hasonlóan a csak érintőképernyős megvalósításhoz, a kormánykerék egy valósághoz
közelibb
illúzióját
keltjük
a
felhasználóban.
(Demo:
http://www.youtube.com/watch?v=gRhpBvALz4E) A konvencionális irányítási fajták tehát a legtöbb felhasználó számára már ismertek, találkozhattak velük különböző konzolos/mobiltelefonos környezetben. Egyszerűek, könnyen tanulhatóak, viszont speciális esetekben – idősek, látássérültek – nem célszerű használatuk.
2.1.4 BESZÉD-HALLÁS Interfész tervezés során külön figyelmet kell szentelni a fogyatékkal élőkre. Látáskárosultak számára a beszédvezérlés az egyik legfontosabb bemeneti csatorna, viszont számukra szükséges egy alternatív kimeneti csatorna biztosítására is – révén a kijelzőn megjelenő üzenetek olvasása nehézséget okoz számukra. Így a mobiltelefon készülék hangszóróját kihasználva hangokkal vagy beszéddel (text-to-speech) tudunk visszajelzést küldeni. Jelen esetben egy távirányítós autó irányításánál célszerű egyes parancsokat definiálni, amit a felhasználó kimondva irányíthatja az autót. „Menj előre” vagy „Állj” parancsok felismeréséhez valamilyen Speech-to-text technológia szükséges, ha ennek megbízhatósága kétséges, akkor érdemes a felhasználó megerősítését kérni. Például „Menjek előre?”, amire egy igen kötött („Nem” – „Igen”) válaszlehetőséget kínálunk. Minél kevesebb szót kell megkülönböztetni, annál biztosabb a felismerés.
5 / 14
Távirányítós autó – Ember-gép interfész házi feladat Csapatunk egy különleges és nagy valószínűséggel működőképes alternatív megoldást is kitalált a hanggal történő vezérlésre. Ezt „brümmögés”-nek neveztük. Alapvetően négyféle parancsot kell a rendszernek kezelni (előre, hátra, jobbra, ballra – kiegészítésként az állj), valamint ezek közül az irányítás és a sebesség egyidejű kezelését is célszerű támogatni. Ehhez elegendő a hangmagasság – hangerő, vagy hangmagasság – „valamilyen frekvencia” vizsgálata. A járművek motorjához hasonló „brümmögő” hangot adva tehát nagy valószínűséggel képesek lennénk egy távirányítós autót vezérelni. Bonyolult teszteket nem végeztünk ezzel a módszerrel, azt a feltevésünket, hogy a módszer működőképes,
korábbi
tanulmányainkra
alapoztuk.
(Médiatechnológiák,
Beszédinformációs
rendszerek). A kezelés utóbbi esetben interaktív, viszont hosszútávon kimerítő lehet a felhasználónak a folyamatos „brümmögés”. A zajos környezet és a mobil készülékek mikrofonjainál tapasztalható pontatlan hangfeldolgozás tovább nehezítheti a beszéd-hallás és hang alapú módszerek működését.
2.1.5 KAMERA HASZNÁLATA A legtöbb, jelenleg kereskedelmi forgalomban kapható készülék rendelkezik beépített kamerával. Ez a trend 2003-ben kezdődött, azóta – ha szüksége van rá a felhasználónak, ha nincs – szinte kivétel nélkül ellátják a készülékeket kamerával. 0,3 megapixeltől 8 megapixeles felbontásig nagyon sokféle beépített, kép és videó készítésére alkalmas kamerát találhatunk a készülékekben. 100% 80% 60% 40% 20% 0% Wlan
2000
2001
2002
2003
2004
2005
2006
2007
2008
0%
0%
0%
0%
3%
4%
6%
15%
18%
Bluetooth
0%
0%
1%
2%
14%
38%
68%
72%
78%
Mobil kamera
0%
0%
9%
38%
71%
71%
83%
85%
86%
Külső memóriabővítés
0%
0%
13%
13%
31%
37%
55%
68%
73%
RAM
0%
3%
8%
25%
61%
61%
72%
64%
60%
4. ábra Mobilkészülékek hardver elemei (2000-2008 Q3)
Célszerűnek tűnt csapatunk számára kihasználni a mobiltelefon készülékek ezen bemeneti csatornáját is. Első ötletünk a „báb mozgatása” analógiájára épült, azaz a mobil készüléket a távirányítós autó fölé tartva, kameráját a kisautóra irányítva bábként felfogva a kisautót lehet az irányítást megvalósítani. Ebben az esetben a készüléket mozgatva a kamera képet felhasználva az autót úgy irányítanánk, hogy az kövesse a kamera kép által mutatott középponti helyzetet. Ehhez megfelelő színekkel rendelkező távirányítós autó esetében markerekre sincs szükség, hiszen elég az autó irányát és relatív pozícióját megállapítani, majd ezt felhasználva a kamerakép középpontja felé mozgatni. Több problémát is felvet ez az ötlet, azaz mekkora területet képes a készülék kamerája belátni, hiszen ha a kisautó nincs a képen, akkor az irányítás lehetetlenné válik. Ezen kívül kérdésként
6 / 14
Távirányítós autó – Ember-gép interfész házi feladat fogalmazódott meg bennünk, hogy mennyire tekinthető ez a fajta irányítás „távirányításnak”. Inkább a felhasználói mozgás követésének véltük a módszert. A 2.1.2 fejezetben harmadik ötletként említett érintőképernyőre rajzolás is kiegészíthető kamerakép használatával, egyfajta augmented reality szemléletben. Ekkor egy rögzített kameraképen megjelöljük vagy felismerjük a távirányítós autó helyzetét, majd egy rajzzal vagy távoli pont kijelölésével megjelöljük az útvonalat / célt. Nem szükséges 3D rekonstrukciót végezni a környezetről, a kisautó helyzetét és irányát felismerve a kamera kép segítségével folyamatosan követhetjük, hogy a kiszámított irányba mozgatás közelít-e a célponthoz, vagy nem. Folyamatos korrekciókkal csapatunk szerint elérhető, hogy lehetőségekhez mérten kövesse a kisautó a kijelölt útvonalat. Természetesen a „terepviszonyok” felismerése nem része az algoritmusnak, ezért lehetséges, hogy fizikálisan lehetetlen a kijelölt célt elérni. Ebben az esetben is egyszerű, gyorsan tanulható az irányítás mechanizmusa, a technikai megvalósítás azonban több problémát is felvet, mint például a kamera mozgatása vagy a kisautó irányának és helyzetének pontos azonosítása. A kamerát nem csak a távirányítós autóra irányítva lehet használni, hanem a felhasználó arcát is felvehetjük vele. Ezzel kapcsolatban csapatunknak két ötlete is támadt, egyrészt a mimikát lehetne felhasználni irányításhoz, másrészt a szem mozgását. A mimikával történő irányításhoz a szemöldök, szem, száj „állását” és mozgását gondoltuk valamilyen módszerrel felhasználni, tényleges kidolgozásig nem jutottunk el, ugyanis a „brümmögéshez” hasonlóan ezt is nehézkesnek véltük hosszú távú irányítás megvalósításához. A szemmozgás feldolgozásának koncepciója módfelett tetszett nekünk, ezért ezzel kezdtünk el komolyabban foglalkozni. A későbbiekben térünk ki rá, hogy milyen megvalósítási módszereket találtunk ki.
2.1.6 HIBRID A hibrid vezérlés kategóriájába soroltuk azokat az irányítási módszereket, amik több be és kimeneti csatornát is használnak. A „brümmögés” (2.1.4) ötletünk egy továbbfejlesztett változatát soroltuk ide, ahol a sebességet a felhasználó által kiadott hang hangereje/hangmagassága határozza meg, a jobbra-balra fordulást pedig a készülék kormánykerékként használata (2.1.3) adja. Ezzel gyakorlatilag az autóvezetés élményét próbáltuk lemásolni, hanggal és a kormánykerék illúziójával. Másik koncepciónk a „Hallható gombok” nevet kapta, ahol az irányítás gombokkal történik (2.1.1), de a visszajelzés (kimeneti csatorna) is megjelenik, méghozzá a lenyomva tartott gombok hatására a készülék bizonyos magasságú hangot ad ki. Alternatívaként szóba került a lenyomott billentyű „nevének” felolvasása is. Hasznos lehet ez olyan esetekben, ahol nem látjuk közvetlenül a készüléket, mert például a zsebünkben van.
7 / 14
Távirányítós autó – Ember-gép interfész házi feladat
2.1.7 LEHETSÉGES VEZÉRLÉSEK ÖSSZEFOGLALÁSA
5. ábra Kezelés és megvalósítás "nehézsége"
Az általunk megvizsgált és tervezett rendszereket a kezelés könnyűsége – intuitív kezelés, valamint a megvalósítás technikai nehézsége szerint rendszereztük (5. ábra). Figyelembe vettük, hogy egy mobil készüléket keveset vagy egyáltalán nem használó felhasználó számára mennyire tűnik magától értetődőnek a kezelés, ennek alapja az emberi kommunikáció volt. Így például könnyen kezelhetőnek bizonyult a parancs bemondása, hiszen a beszéd minden ember számára természetes. A megvalósítás nehézsége alatt az implementációra ráfordítandó idő volt a mérvadó, mennyire kell bonyolult algoritmusokat implementálni, mennyire kell a készülék képességeit (számítási teljesítmény, kamera felbontása/sebessége) kihasználni.
8 / 14
Távirányítós autó – Ember-gép interfész házi feladat
3 RENDSZER TERVEZÉSE ÉS MEGVALÓSÍTÁSA Csapatunk egy tényleges rendszert is el kívánt készíteni a félév során, amihez a kapott távirányítós autót felhasználhatta. A TMIT tanszékről kapott Nokia N95-ös készülékre készítettük el implementációinkat. Célunk a rendszer elkészítése után a billentyűkkel való irányítás megvalósítása, valamint a félév hátralévő részében a szemmozgással történő irányítás kidolgozása és megvalósítása, ha időnk engedi.
3.1 TÁVIRÁNYÍTÓS AUTÓ A tárgy keretein belül kaptunk egy CAR-100 nevezetű bluetooth kommunikációt használó távirányítós autót. A kisautó a Sony Ericsson cég terméke, hardveréről kevés információ érhető el. Töltéséhez egy USB
kábelt
használtunk, amit speciálisan erre a célra alakítottak át. Magát az autót egy egyszerű bluetooth eszközként ismerik
fel
a
kommunikációt
mobil ismerő
készülékek
és
számítógépek.
a
bluetooth Az
eszköz
párosításához a 0000 beégetett kódot kell használni. 6. ábra CAR-100
Az irányításhoz speciális parancsokat kell küldeni az autónak, ezeket az interneten elérhető, az irányításhoz
készített JAVA nyelvű implementációból tudtuk meg, hivatalos dokumentáció hiányában. Állapot alapú az autó belső rendszere, tehát az állapotváltozási információkat kell elküldeni a kommunikációs csatornán. Az autó iránya kezdetben „előre” (lehetséges még „jobbra” és „ballra”) sebessége „áll” (lehetséges még „előre 1”, „előre 2” valamint „hátra”). A különböző sebességi fokozatok között nem tapasztaltunk eltérést, ezért az „előre 2” állapotot kihagytuk az implementációnkból. Kommunikáció során a kisautó néha küld válaszüzeneteket, amiben töltöttségi állapotát („töltés alatt”, „normál”) valamint irányát és sebességét közli. Tesztjeink során bebizonyosodott, hogy nagy valószínűséggel szoftverében a beérkező üzeneteknek nem tart fent várakozási sort, mert a gyors egymásutánban küldött üzenetek közül véletlenszerűen dolgozott fel csak párat. Éppen ezért előfordulhat, hogy az általunk megvalósított program által tárolt állapot (állapotgép jelenlegi állapota) eltérő a távirányítós autó állapotától. Ekkor „beragad” a kisautó valamelyik irányba (folyamatosan balra kanyarodik), vagy sebesség változás nem jut érvényre (folyamatosan hátra megy, pedig előre szeretnénk, hogy menjen). Nem készítettünk javítást / késleltetést megvalósító részeket programunkba, a hiba csak ritkán fordult elő a tesztek során. Ezen kívül sok esetben nem lehettünk biztosak abban, hogy a késleltetés volt a hiba forrása, a bluetooth hatótávolsága és terjedése kiszámíthatatlan, maga a protokoll nem garantál veszteségmentes átvitelt, a kisautó pedig nem küldd pozitív nyugtát a megérkezett üzenetekről – így előfordulhat, hogy elveszik egy-két csomag.
9 / 14
Távirányítós autó – Ember-gép interfész házi feladat
3.2 RENDSZER FELÉPÍTÉSE
7. ábra Rendszer felépítése
A rendszer megtervezése során alapvető koncepciónk volt, hogy a tényleges irányítási interfész elváljon az alaprendszertől, így bármikor „lecserélhető” másikra. Megvalósítás során így nyugoddtan elkészíthetjük a billentyűkkel irányítást, majd ha bármilyen más interfészt akarunk a rendszerhez csatlakoztatni, akkor egész egyszerűen az új kódot kell csak összekapcsolni a keretrendszer többi részével. Az összekapcsolódási pontok minimalizálása a cél mindig egy rendszernél. Éppen ezért a Bluetooth irányítást, a keretrendszer magját alkotó állapot alapú (3.1 leképezése) kisautó irányítást elválasszuk a megvalósított interfésztől. Az ábrán keretrendszerrel jelölt résznek kettős feladata van, egyrészt felelős az alkalmazás elindításáért, valamint a hozzá kapcsolódó modulok egyes funkcióinak meghívásáért, valamint egy állapot alapú – távirányítós autó állapotgépével megegyező – irányítási osztályt is tartalmaz. Ezt az osztályt a megvalósított interfész függvényhívásokon keresztül éri el (pl.: előre parancs átadása), az állapotgép az új irány/sebesség függvényében „kiszámolja”, milyen üzenetet kell küldeni a kisautónak. Ezt követően meghívja az Bluetooth irányításért modul üzenet küldésért felelős részét, ami továbbítja az üzenetet a kisautóhoz. A Bluetooth irányítás feladata a távirányítós autóval történő kapcsolat felépítése, valamint biztosítania kell függvényhívásokon keresztül a kommunikációt. Ez mind windows, mind S60 környezetben alapvető kérdés, így nem kerül át feleslegesen a kapcsolat kezeléséért felelős kód a keretrendszer/megvalósított interfész részbe. A Megvalósított interfész tehát lényegében a bemeneti és kimeneti csatornákat kezeli – felhasználó irányában – a beérkező kéréseket továbbítja a keretrendszernek, valamint képes a keretrendszerből lekérdezni a megjeleníteni kívánt információt.
10 / 14
Távirányítós autó – Ember-gép interfész házi feladat
3.2.1 WINDOWS MEGVALÓSÍTÁS Először Windows operációs rendszeren készítettük el a keretrendszert, ez azért volt egyszerűbb, mint az S60 keretrendszer, mert a bluetooth kommunikációhoz az operációs rendszer egy virtuális soros
portot
hoz
létre.
Így
nem
felépítésével/lebontásával/kezelésével
kell
eszköz
foglalkozni.
párosítással,
Vizuális
kommunikációs
felület
csatorna
megvalósításával
nem
foglalkoztunk, a ténylegesen használt keretrendszer irányításáért felelős osztályának megírása és tesztelése volt a cél. Visual C++ nyelven készítettük el a programot, a billentyűkkel történő irányítást megvalósítottuk és teszteltük is. Mindkettőnk laptopja rendelkezik bluetooth kapcsolat kiépítéséhez szükséges hardverrel, így magával a távirányítós autóval dolgoztunk, nem pedig szimulációval.
3.2.2 S60 IMPLEMENTÁCIÓ – BILLENTYŰS IRÁNYÍTÁS Az S60-as implementációhoz először létrehoztunk egy VMWare virtuális gépet, mert a fejlesztő környezet nem támogatta a Windows 7 operációs rendszert. A virtuális gépre feltelepítettük a megfelelő szoftvereket (Nokia tools, Carbide C++, S60 3rd Edition SDK), valamint összekapcsoltuk a tanszékről kapott
mobilkészülékkel.
Szerencsére
az
USB
kapcsolat
átirányítását támogatta a virtuális gép szoftvere. Implementáció során először a bluetooth eszközök kezelését megvalósító
részt
implementáltuk,
ehhez
egy
kiterjedt
példaprogramot írtunk át, hiszen a CAR-100 nem nevezhető 8. ábra Implementáció tesztelése
teljes értékű bluetooth eszköznek (service ID beállítása, kapcsolat kezelés paramétereinek „próbálgatás” alapú beállítása).
Miután képesek voltunk létrehozni és fenntartani a bluetooth kapcsolatot, portoltuk a windows alatt elkészített keretrendszer állapotgépét, sajnos nem tudtuk egy az egyben átemelni az elkészített kódot a két programozási nyelv (Visual C++, Carbide C++) eltérősége miatt, de pár sor átjavítása után már működött is a megoldásunk. Ezt követően a billentyűkkel történő irányítást implementáltuk, ehhez egy View-ra helyeztünk egy ListBox-ot, amiben a kimenő üzeneteket jelenítettük meg, valamint a View-hoz tartozó EventHandlebe a billentyűk lenyomását és felengedését jelző eseményeket „összekötöttük” az állapot alapú géppel. Az implementációt teszteltük is, a tesztek során bizonyos esetekben elvesztette a kisautó a mobil készülékkel a kapcsolatot, ekkor általában elégnek bizonyult ki- és bekapcsolni a távirányítós autót, de előfordul az is, hogy „reset”-elni kellett a kisautót, majd újra elvégezni az eszközök párosítását.
11 / 14
Távirányítós autó – Ember-gép interfész házi feladat
3.3 SZEMMOZGÁS DETEKTÁLÁSA Csapatunknak két eltérő ötlete is támadt arra, hogy hogyan lehetne a szemmozgás detektálást megvalósítani. Szemmozgás felhasználását mint bemeneti csatorna nem mi találtuk ki, az Egyesült Államok légiereje évek óta használ vadászpilótáknál olyan interfészt, aminek használatával a pilótának csak „rá kell néznie” egy adott objektumra, és a szembogár pozíciójából a szoftver kiszámolja, pontosan hova néz. Ezzel választhatják ki a pilóták a megtámadni kívánt objektumokat.
9. ábra "Sötét pixelek" elmozdulása
Bálint ötlete alapján a szemről készült felvétel egyes képkockáit meghatározott pontok alapján egymásra illesztjük, ezzel az esetleges kamera elmozdulást kompenzáljuk, majd meghatározzuk, hogy a kvantált színtérben a „sötét” pixelek melyik irányba mozdultak el. (9. ábra) Tehát ha a balra nézünk, akkor a szembogár balra mozdul el az eredeti pozícióhoz képest, ezt egy egyszerű súlyozással megállapíthatjuk, sőt, az elmozdulás mértékét is becsülhetjük. Ilyen módon a tényleges mozgást (tehát nem a szembogár helyzetét) detektáljuk.
10. ábra Kvantált színsúlyok módszere
Zsombor egy másik irányból közelítette meg a kérdést, a szemünkről készült felvételek képkockáit színtérben kvantálva megállapítottuk, hogy a szem „fehér része” egyszerűen detektálható. Ezt kihasználva a szemgolyó „körbevágható” a bejövő kameraképen. Miután megkaptuk a körbevágott szemgolyó képét (10. ábra), felosztjuk a szemet 4 részre szimmetrikusan. Ezek után a 4 térrészben
12 / 14
Távirányítós autó – Ember-gép interfész házi feladat található fehér színné kvantált pixelek arányát kell vizsgálni. Így anélkül, hogy tudnánk a szembogár pozícióját, megállapítható, hogy a felhasználó milyen irányba néz. A súlyok megállapításához természetesen szükséges egy előzetes kalibrálás, hogy tudjuk, a felhasználó mikor néz a képernyő (bal felső, jobb alsó, stb) „sarkaiba”. A második, kvantált színsúly alapú megoldást ítéltük egyszerűbben megvalósíthatónak, valamint kevésbé érzékeny a kamera elmozdulására. El is kezdtük a Matlab alapú implementációt, de a félév végéig nem sikerült tökéletesíteni a módszert.
3.3.1 SZEMMOZGÁS DETEKTÁLÁSA – S60 IMPLEMENTÁCIÓ A szemmozgás detektálásának kidolgozásával egy időben elkezdtük a mobil készülékre megírni a megfelelő interfészt. Ehhez inicializálnunk kellett a kamerát, beállítani a paramétereit, valamint kinyerni a képet. Az N95-ös készülék két kamerával is rendelkezik, a kamerák – szem – kisautó tervezett pozícióját és a kamerák látóterét a 11. ábra szemlélteti.
11. ábra Kamerák látótere
A felhasználó, mivel a készülék kijelzőjét nézi, ezért nem látja közvetlenül a távirányítós autót. Így mindenképen biztosítani kell valamilyen kimeneti csatornát, hogy megfigyelhesse irányításának „eredményét”. Kényelmetlen és részben megvalósíthatatlan lenne a felhasználó szemszögéből az, hogy a kisautót nézze, miközben figyel arra, hogy szemmozgásával irányít.
13 / 14
Távirányítós autó – Ember-gép interfész házi feladat
12. ábra Rész - irány megfeleltetés
Éppen ezért a kijelzőn az N95-ös „hátsó” kamerájának képét jelenítjük meg, egy 9 részre felosztott felhasználói interfészen. Mind a 9 részen ugyanaz a kép látható, ezért a felhasználó kiválaszthatja, melyik négyzetet nézi. A négyzet „kiválasztásával” végzi a tényleges irányítást is, mindegyik négyzet egy iránynak felel meg. (12. ábra) Az implementációból egyedül a szemmozgást felismerő algoritmus hiányzik, a bemenő adatok („első” kamera képe) és az állapotváltásért felelős részek teljes egészében elkészültek.
4 ÖSSZEFOGLALÁS A félév során megvizsgáltuk a távirányítós autók irányításának lehetőségeit mobil készülékekkel. Az egyes létező megvalósításokon kívül több saját ötletet is kitaláltuk az irányítás megvalósítására. A tárgy keretein belül kapott bluetooth kommunikációt használó távirányítós autót és a TMIT tanszékről kapott Nokia N95 mobiltelefon készülék segítségével megterveztünk és megvalósítottunk egy billentyűket használó irányítást. Teszteléshez elkészítettük ugyanennek a rendszernek a Windows alapú megvalósítását is. Szemmozgással történő irányítás alapelvét és két algoritmust is megterveztünk, ezek kapcsolódási pontjait és a kamera kezelést implementáltuk a mobilkészüléken. A szemmozgásért felelős algoritmus mobil implementációja időhiány miatt nem készült el a félév során.
14 / 14