2001. április 1., vasárnap

LEGO Robotok


Robottörténelem

A modern SCI-FI-k szinte mindegyikében szerepelnek robotok. Idegen fajok nyelveit fordítják, gyógyítanak vagy gépeket szerelnek, egyszóval univerzálisak. A való világban azonban a robotok (egyelőre?) nem ilyenek! Inkább szürke munkások, javarészt helyhez kötve éjjel-nappal végzik a feladatot, amire beprogramozták őket. Autót hegesztenek, elektronikai eszközöket szerelnek össze, leveleket válogatnak címzettek szerint. Már a mai robotok is igen sok feladatra alkalmasak, annak ellenére, hogy intelligensnek nem nevezhetjük őket.

Bár a vágy, hogy mindennapi feladatainkat "mások" (kezdetben állatok, mostanság gépek) végezzék helyettünk elég régi, de maga a robotika szó egészen új keletű. Carel Capek használta először Rossum Univerzális Robotjai című színdarabjában 1921-ben. A "robota" szó csehül munkát jelent, Capek robotjai azonban nem csak dolgoztak, a színdarabban felülkerekedtek az emberiségen, és rabszolgasorsba döntötték alkotóikat.

Egészen 1950-ig a robot szó nem volt elterjedt. Isaac Asimov tette azzá, mikor Én, a robot c. novellásgyűjteményében lefektette a robotika három alaptörvényét annak érdekében, hogy a capeki fordulatokat, a robotok emberek fölé kerekedését megelőzze.
1. A robot nem árthat az embernek, és nem nézheti tétlenül, ha az embert veszély fenyegeti.
2. A robot engedelmeskedni tartozik az emberek parancsainak, kivéve, ha ezek a parancsok az Első Törvénybe ütköznek.
3. A robot köteles megvédeni magát mindaddig, amíg ez nem ütközik az Első vagy a Második Törvénybe.

1950 táján a tudósok úgy hitték, az intelligens robotok készítésétől már csak néhány apró lépés, mindössze pár év választja el őket, ezért is kerültek hirtelen előtérbe a fentebb említett problémák. A gyakorlat azonban azt mutatta, hogy nemcsak az emberi, de még a fejlettebb állati intelligencia megvalósítását sem teszi lehetővé sem az akkori, de még napjaink technikai színvonala sem. Az egyre bonyolultabb, fejlettebb rendszerek ellenére sem tudunk elérhető közelségébe jutni az emberi agy intelligenciájának. Maradtak hát a próbálkozások, letettünk az univerzális robot építésének tervéről, és hódító útjukra indultak az egyszerű programozott ipari robotok. Elsősorban Japánban terjedtek el, ahol a munkaerőhiány miatt a gazdaság szinte kikényszeríthette az automatizált megoldásokat. Az intelligens robotok kifejlesztésére irányuló kutatások pedig csendben, apró eredmények elérésével folytak tovább. A fő megrendelő és kutatásfinanszírozó a hadsereg és az űrkutatás lett.

Mára elértük azt a technikai színvonalat, hogy a robotika és mesterséges intelligencia kilépve a gyárak kapui közül, a szórakoztatóelektronikai eszközökbe épülve - egyenlőre borsos áron ugyan - mindenki számára megvásárolható. Aibo, a robotkutya intelligenciája ugyan még elmarad a legbutább kutyuska képességeitől is, de a büszke gazdák szerint ugyan olyan érdekes személyiség, mintha egy igazi kutya lenne. Nem csoda, hogy így hiszik, Aibo ugyanis egyszerű fogalmakat, mozgássorozatokat meg tud tanulni, "hangulata" van, amit viselkedésével ki is fejez. Mozgásában, kinézetében kölyökkutyát utánoz, "szemével" képes bizonyos tárgyakat - például saját labdáját - felismerni. Sok tekintetben olyasfélén viselkedik, ahogy csak élőlények szoktak.

A jövő mindenképpen abba az irányba mutat, hogy az "intelligens" eszközök egyre elterjedtebbek lesznek. Először a szórakoztatóelektronikai eszközökön keresztül, később a mindennapi háztartási eszközökbe építve a robotika megjelenik majd a mindennapokban. Végül a mikroelektronikai eszközök fejlődésének hatására előbb-utóbb elterjedhetnek majd az univerzális, intelligens robotok is.

LEGO Robotok

LEGO játék elemeiből könnyen és gyorsan építhetünk különböző szerkezeteket. A LEGO Technics elemei már korábban is alkalmasak voltak mechanikai szerkezetek építésére, melyet kis elektromos motorok segítségével is működésbe hozhattunk. Hiányzott azonban a vezérlő elektronika megléte.

A programozható LEGO elemeknek is megvan a saját történetük, mely az MIT-ről (Massachusetts Institute of Technology) indult. Itt kísérleteztek először azzal, hogy a hallgatók robotika oktatását Technics LEGO elemekkel tegyék "gyakorlativá". Saját vezérlő egységet építettek, ami alkalmas volt a 9V-os LEGO motorok meghajtására. Ezek a központi egységek azonban nem voltak egyszerűen programozhatók és megépíthetők, ezért a mérnökhallgatók képzésén kívül nem terjedtek el. Ezzel párhuzamosan, némileg eltérő úton fejlődtek a LEGO cég termékei, melyek kezdetekben nem voltak alkalmasak mobil robotok létrehozására. (A program maga a számítógépen futott, amit egy adatátviteli kábel kötött a robothoz.) A most piacon lévő RCX programozható LEGO tégla a két irányvonal tulajdonságainak egyesítéséből jött létre. Teljesen autonóm egység számítógép nélkül is képes működni, 6 darab ceruzaelem biztosítja az érzékelők, motorok és a vezérlőegység számára az energiát. Több előre összeállított készletet kínál a LEGO, melyekből érdekes robotok építhetők, de itt is - mint mindig - az az igazi kihívás, ha "olyat építünk, ami nincs rajta a dobozon"! Ezt minden gond nélkül megtehetjük, hiszen a hagyományos LEGO elemek felhasználhatók az építkezésben. Azonban a hagyományos LEGO-val ellentétben, itt nem csak modellünk alakját, hanem viselkedését is befolyásolhatjuk.

Egy robot működése során környezetéről érzékelői segítségével szerezhet információkat, az adatokat és esetleges előzetes tudását mérlegelve vezérlő, beavatkozó szervei segítségével tud környezetére hatást gyakorolni, cselekedni. Ezeket aktoroknak nevezzük. Így működnek a LEGO-ból felépített robotok is. Az RCX egészen pontosan 3 db érzékelőt és 3 db aktort (legtöbbször motort) tud egyszerre kezelni. Az érzékelők és aktorok minősége, pontossága alapvetően befolyásolja azt, mire lesz alkalmas megépített robotunk.

A LEGO által kínált érzékelő típusok: nyomás érzékelő (egyszerű nyomógomb), elfordulás érzékelő, hőmérséklet érzékelő, fény-intenzitás érzékelő. Az érzékelők minősége a kitűzött feladatokhoz általában elegendő, de arra az esetre, ha valamilyen oknál fogva mégis nagyobb pontosságot kell elérni, kapható egy ún. szenzor adapter más (pontosabb és sajnos jóval drágább) érzékelőkhöz. Ráadásul új szenzorokkal bővíthetjük készletünket, a kínálatban megjelennek PH detektorok, relatív páratartalom mérők, stb.

Aktor kétféle van, lámpa és motor. Ez csak elsőre tűnhet szegényesnek, egyszerű motor segítségével számtalan funkció megvalósítható. Itt a lényeg azon van, mit építünk a motor köré, a robot kerekeit, kormányművét, robotkarját esetleg lépegető lábait hajtjuk meg. A lehetőségeknek csak a képzelet szabhat határt.

Ha elkészült a robotunk nekifoghatunk a programozásnak. Hála az Internetnek és a robotika népszerűségének, itt is számtalan programnyelv és programozási környezet közül választhatunk. Itt most két, egymástól alapvetően különböző nyelvet mutatunk be.

Az NQC (Not Quite C) programozási nyelvet is az RCX programozására fejlesztették. Készítője, Dave Baum egy olyan nyelvet szeretett volna készíteni, mely hatékony eszközzé válhat az RCX programozására olyan emberek kezében, akik programozásban már jártasak. Az NQC nyelv szintaktikája a C nyelvére hasonlít, és tulajdonképpen egy megszokott proceduláris, struktúrált nyelvről van szó, mely az RCX programozásához szükséges utasításokat is tartalmazza. Windows környezetben a hatékony programozást lehetővé tevő fejlesztőkörnyezetek is készültek az NQC-hez melyek szintén ingyenesen letölthetők az Internetről, és mivel az NQC nyelv forráskódja is elérhető a Neten, ezért tetszőleges operációs rendszer alól (pl.: Linux) végezhetjük a fejlesztést.

A Robolab programnyelvet maga a LEGO készítette. Nem ingyenes, de még magyar viszonyok között is igen olcsón beszerezhető nyelv. Kifejezetten gyerekek számára készült, ikonok segítségével programozhatjuk robotunkat. Ráadásul a programozásnak több szintje lehet, a környezet alapszinten elrejti előlünk a sok bonyolult funkciót, a legmagasabb szinten viszont az eszköz minden lehetőségét kihasználhatjuk. A különböző készletekhez előre elkészített példaprogramokat is kapunk és a súgó (help) is részletes információkkal szolgál, sajnos csak angolul. De maga a programozás igen egyszerű, szinte magától értetődő. A program egy kis zölden világító közlekedési lámpától indul és a pirosnál ér véget. Közéjük tetszőleges ikonokat helyezhetünk, melyeket dróttal kell összekötni, így határozhatjuk meg az ikonokkal szimbolizált utasítások végrehajtási sorrendjét. Ha egy utasításnak paraméterekre is szüksége van, akkor azt szintén ikonként tehetjük a képernyőre, és más, vékonyabb dróttal kell az utasítás ikonjába "belevezetnünk". A program szerkezete jól leolvasható a képernyőről, hiszen a program "megírásával" egyidejűleg egyfajta folyamatábra is elkészül. A Robolab szoftver Windows 9x operációs rendszer alatt és Machintosh számítógépen fut.

Az Interneten számtalan más nyelvet találhatunk az RCX programozásához (pl.: LegOS, Java), ehhez a lent található linkek adhatnak kiinduló pontot.