Robotika feladatmegoldások

S ha elfedi is füstünk az eget,
majd szertefoszlik s csillag gyúl-remeg,
mert bár súlyunk és erőnk nagy, úgylehet,
mindannyiunkat elméd szülte meg.

Rudyard Kipling: A gépek titka (Tellér Gyula fordítása)
<Patrician|Away> what does your robot do, sam
<bovril> it collects data about the surrounding environment, then discards it and drives into walls

http://www.bash.org/?240849

Akik részt vettek a robotok, a filmek és a weblap elkészítésében vagy ehhez segítséget nyújtottak:

Mik is ezek a robotok?

Lego építőkockákból összeszerelt, motorokat vezérelni képes, fény-, forgás- és nyomásérzékelők segítségével tájékozódó, programozható számítógépek. Lelkük az RCX számítógépegység, mely a Lego Mindstorms széria fő alkotóelemeként tett szert igen komoly érdeklődésre világszerte. Tekintettel arra, hogy a Lego cég leginkább műanyagfröccsentéshez rendelkezik mérnökökkel és munkásokkal, csak nehezen lenne elvárható tőlük, hogy használható programozói felületet nyújtsanak az érdeklődők számára, amivel komoly problémák is megoldhatók. Ezért a profi fejlesztések elősegítéséért létrejött a BrickOS nevű szabadszoftveres megoldás, ami igen jól tölti be a Lego által hagyott programozástechnikai űrt.

Első feladat, nyomvonalkövetés

Feladatunk egy olyan robot létrehozása, amely egy fehér asztalra fekete szigetelőszalaggal leragasztott zárt út mentén az elem lemerüléséig megy körbe-körbe.

Hardver

Egy-egy hajtott féltengely, két mozgásérzkelő (melyek az út szélét tartják maguk előtt és így az utat középen). A fordulásokat a motorok ellentétes vezérlésével érjük el.

Szoftver

Maximális egyszerűségű BrickOS-hez fordítható C program, mely természetesen szabadon elérhető vagy megtekinthető. Lényege, hogy sűrűn ellenőrzi a fényérzékelők állapotát és amennyiben

Média

Letölthető 1 perces akciófilm AVI (7 Mbyte) és OGG Theora (14 Mbyte) formátumban.

Második feladat, útvesztőről térképkészítés

Feladatunk egy olyan robot létrehozása, amely egy fehér asztalra fekete szigetelőszalaggal leragasztott űtvesztőt bejár (nem csal, nem vág át falon), közben a memóriájában térképet készít, melyet a kiindulópontba visszaérve a számítógépnek infravörös kapcsolaton keresztül átad, a számítógépen ezt egy program a képernyőn megjelníti. Ezen program elkészítése is a feladat része.

A feladatnak kétszer is nekiláttunk, mivel az elsőnek épített robot hardvere sosem lett elég pontos ahhoz, hogy olyan szoftvert készítsünk hozzá, ami nem téved.

Az első változat hardvere

Egy-egy hajtott féltengely áttételekkel, három mozgásérzkelő úgy elhelyezve, hogy az utat is tudják követni és elágazásokban az elágazás útjainak meghatározása is könnyű legyen. Érdemes lett volna még beépíteni valamelyik tengelyhez egy forgásérzékelőt, hogy távolságot is tudjunk mérni, azonban ezt az egyetem erőforrásai nem tették lehetővé.

Az első változat szoftvere

A robotban futó program folyamatosan épít egy gráfot a memóriájában, amely gráfot Tremaux algoritmusával próbálja teljesen feltérképezni. Az algoritmus lényege, hogy a csomópontok közötti élekhez színeket rendelünk (feketét, ha még nem jártunk rajta, csak már tudunk róla, zöldet, ha egyszer végigmentünk rajta, pirosat, ha kétszer végigmentünk rajta). Ha abban a csomópontban, ahol éppen tartózkodunk van kivezető fekete él, ami ismeretlen csúcsba vezet, akkor mindig arra megyünk. Ha ilyen már nincs, akkor vissza kell fordulnunk. A visszaforduláskor biztos, hogy csak egy zöld él van, az mutatja a visszafele vezető utat. Miután egyet mentünk a zöld úton, elképzelhető, hogy már tudunk fekete, ismeretlen csúcsba vezető utat követni, ha nem, akkor továbbra is visszalépünk. Ezen algoritmus garantálja, hogy az egész útvesztőt bejárja a robot, nem zavarják meg a körök és a befejeződésekor a kiinduló pontban van.

A számítógép és a robot között, a feltérképezett rész közvetítéséhez szükség van valamilyen (lehetőleg szöveges) reprezentációra, amit a robot a memóriájában lévő útvesztőből elő tud állítani, a számítógép pedig meg tud jeleníteni. Ez legyen a következő:

A reprezentáló karakterlánc előállításakor az ismeretlenbe vívő utakat az u betű jelzi, a már reprezentált részbe vívőket az x, míg, ha egy út nem létezik, arra a 0 jelölést vezettük be.

Gyakorló feladat: rajzoljuk fel, hogy mit reprezentál a {a{a0a0axa{a0ax{axa0a0au}a0}}a0a0a0} karakterlánc!

Az ismertett adatszerkezetek robotbeli implementációjáért a graph.c modul felel (letöltés, megtekintés), a navigálásért a robotools.c (letöltés, megtekintés), míg Tremaux algoritmusát implementálja a főprogram, a masodik.c (letöltés, megtekintés).

Fényképek az első változatról

adovevo Az infraport
alulrol Alulról
balrol Balról
elolrol1 Szemből
elolrol2 Szemből
felulrol Felülről
hatulrol Hátulról
jobbrol Jobbról
kozben1 Működés közben
kozben2 Működés közben
kozben3 Működés közben
kozben4 Működés közben
kozben5 Működés közben
laptop1 Kép a gépen
laptop2 Kép a gépen
utveszto1 Az útvesztő
utveszto2 Kis hiba 1.
utveszto3 Kis hiba 2.
utveszto4 Kis hiba 3.

Filmek az első változatról

Film, amely alatt a robot kétszer hibázik, a második alkalommal akkorát, ami miatt útját már nem tudja folyatatni:

HosszHang, zeneMinőségFormátum
7:56 (eredeti)Hangok nélkül360x288, normálAVI (15 MB) OGG Theora (15 MB)
7:56 (eredeti)Eredeti hangok360x288, normálAVI (23 MB) OGG Theora (19 MB)
7:56 (eredeti)Eredeti hangok720x576, normálAVI (66 MB) OGG Theora (52 MB)
7:56 (eredeti)Eredeti hangok720x576, kiemelkedőAVI (124 MB) OGG Theora (96 MB)
3:00 (gyorsított)Hangok nélkül360x288, normálAVI (6 MB) OGG Theora (7 MB)
3:00 (gyorsított)Pachelbel - Canon360x288, normálAVI (8 MB) OGG Theora (8 MB)
3:00 (gyorsított)Pachelbel - Canon720x576, normálAVI (26 MB) OGG Theora (25 MB)
3:00 (gyorsított)Pachelbel - Canon720x576, kiemelkedőAVI (48 MB) OGG Theora (45 MB)

Készült egy másik felvétel is, amiben a hiba máshol jelentkezik: AVI (63 Mbyte) és OGG Theora (64 Mbyte) formátumban.

A második változat ötlete, hardvere és szoftvere

Az első változat bizonytalanságai és hibái mind abból adódtak, hogy nincs kellő információnk a körülöttünk lévő utak helyéről, csupán a három érzékelőből és forgolódásból kell meghatároznunk a robot állapotát. Ugyanakkor a forgolódás közben olyan elmozdulások is történnek, amik nem megjósolhatók és épp eléggé befolyásolják a robot pozícióját ahhoz, hogy aztán hibázzon.

A megoldás az, hogy az érzékelést függetlenítjük a fordulásoktól és egyéb mozgásoktól. Ezt úgy valósítjuk meg, hogy a három fényérzékelő helyett csupán egyet használunk, azonban azt egy daru szerű karra szerelve, magunk körül 360 fokban körbeforgathatóvá tesszük. A darut vezérlő tengelyre egy forgásérzékelőt szerelve azt is meg tudjuk mondani, hogy az olvasó fej éppen hol érzékel.

Az ezen meggondolások alapján születő robot kicsit otrombább, több hardvert használ, mint elődje, talán megépíteni is kicsit hosszadalmasabb, azonban pontossága, vezérelhetősége sokkal kifinomultabb, a szoftverében így kevesebb heurisztikára van szükség: graph.c (változatlan) (letöltés, megtekintés), robotools.c (letöltés, megtekintés), main.c (letöltés, megtekintés).

Fényképek az második változatról

elolrol1 Elölről
elolrol2 Elölről
elolrol3 Elölről
hatulrol Hátulról
balrol Balról
jobbrol Jobbról
felulrol Felülről
alulrol Alulról
emblema Fagyi, ovis jel :)
erzekelo A fényérzékelő
vezerlopult Gombok, kijelző
modularis Moduláris, szétszedhető
bazis A bázis
torony1 A torony
torony2 A torony
torony3 A torony

Filmek a második változatról

Film, amely alatt a robot végigmegy a pályán és a végén közli az eredményt a számítógéppel:

HosszHang, zeneMinőségFormátum
21:24 (eredeti)Hangok nélkül360x288, normálAVI (40 MB) OGG Theora (43 MB)
21:24 (eredeti)Beethoven - Piano Sonata nr. 15 in D major op. 28 "Pastoral"360x288, normálAVI (61 MB) OGG Theora (53 MB)
21:24 (eredeti)Beethoven - Piano Sonata nr. 15 in D major op. 28 "Pastoral"720x576, normálAVI (179 MB) OGG Theora (150 MB)
21:24 (eredeti)Beethoven - Piano Sonata nr. 15 in D major op. 28 "Pastoral"720x576, kiemelkedőAVI (335 MB) OGG Theora (282 MB)
10:00 (gyorsított)Hangok nélkül360x288, normálAVI (19 MB) OGG Theora (26 MB)
10:00 (gyorsított)Liszt - Hungarian Rhapsody No. 5360x288, normálAVI (29 MB) OGG Theora (30 MB)
10:00 (gyorsított)Liszt - Hungarian Rhapsody No. 5720x576, normálAVI (84 MB) OGG Theora (84 MB)
10:00 (gyorsított)Liszt - Hungarian Rhapsody No. 5720x576, kiemelkedőAVI (157 MB) OGG Theora (154 MB)
3:00 (erősen gyorsított)Hangok nélkül360x288, normálAVI (6 MB) OGG Theora (11 MB)
3:00 (erősen gyorsított)Pachelbel - Canon360x288, normálAVI (9 MB) OGG Theora (12 MB)
3:00 (erősen gyorsított)Pachelbel - Canon720x576, normálAVI (26 MB) OGG Theora (33 MB)
3:00 (erősen gyorsított)Pachelbel - Canon720x576, kiemelkedőAVI (48 MB) OGG Theora (60 MB)

Készült egy másik felvétel is, digitális fényképezőgéppel, azonban azon két sarokkal a vége előtt elfogyott a hely. Újabb felvétel készítésébe nem kezdtünk.

A számítógépen futó szoftverek

Az útvesztőt ábrázoló karakterfüzér fogadására az lnphost nevű programot használtuk, míg az ember számára érthető megjelenítésre saját QT alapú visualizer programot írtunk.

Jogi megjegyzések

A robotikáról szóló weblapom és azon szereplő minden program jogtulajdonosa Riskó Gergely ( (C) Riskó Gergely, 2006.). Hozzájárulásomat adom ahhoz, hogy a programokat a GPL, az LGPL vagy a módosított BSD (2.2.1-es pont) licenszek rendelkezéseit betartva terjesszék vagy felhasználják. Minden olyan cselekmény megengedett, amit az említett licenszek bármelyike megenged.

A filmek alatt szereplő zene mindegyike a Wikimedia Commonsból származik, azok felhasználása megengedett, ha azonos licensz alatt terjesztem a módosított művet. Ezért a videókra a felhasznált zene licensze vonatkozik (ez minden esetben a Creative Commons Attribution ShareAlike 1.0 licensz).