Lego Mindstorms

thumb|250px|Lego Mindstorms hiru sentsorerekin (ukimen-, argi- eta biraketa-sentsoreak) eta motor elektrikoarekin.
250px|thumb|Lego Mindstorms-ek dakartzan zenbait pieza eta haren CDa.
**Lego Mindstorms** Lego etxeak haurrentzat egindako robotikako jokoa da, zeinak robotikako teoria oinarrizkoa lantzeko elementuak dituen, hala nola piezak elkarren artean lotu eta ekintzak programatu, modu interaktiboan. Robot hau 1998-ko irailean merkaturatu zen lehen aldiz.

Komertzialki, **«Robotic Invention System»** izenarekin zabaltzen da, gaztelaniaz, Sistema de Invención Robotizado (RIS). Hezkuntzarako tresna moduan saltzen da, jatorrian Lego-ren eta MITen arteko elkarte baten bidez. Hezkuntzako bertsioak **«Lego Mindstorms for Schools»** du izena, euskaraz eskolarako Lego Mindstorms, eta Robolab-en GUIan oinarritutako programazio-softwarearekin dator.

Atal elektromekanikoak dituzten eta ordenagailu bidez kontrola daitezkeen sistema integratuen ereduak eraikitzeko erabil daiteke Lego Mindstorms. Bizitza arrunteko ia edozer gauza adieraz daiteke piezen bitartez, hala nola igogailu bat edo-eta robot industrialak.

## Historia 
Lego Mindstorms MITen eta Lego-ren arteko lankidetza emankorraren emaitza izan zen. Lankidetza hori industriaren eta ikerkuntzaren arteko harremanaren adibide gisa erabiltzen da, bi bazkideentzat oso onuragarria dena.

### MITeko epistemologia eta ikasketa taldearekin lankidetza 
Lego Mindstorms ildoa Lego-ren garai zailean jaio zen, Lego-ren eta MITren akordio baten ondorioz. Akordio horren baitan, Lego-k MITeko epistemologia eta ikasketa taldeko ikerkuntzak finantziatuko zituen eta, ordainean, bere produktuetarako ideia berriak jasoko zituen, merkaturatu ahal izango zituenak MITi erregaliarik ordaindu gabe. Lankidetza horren fruitua izan zen *MIT Programmable Brick* (*Adreilu programagarria*).

Seymour Papert taldeko aholkularia 1960ko hamarkadatik zegoen interesatuta zientziaren, ezagueraren jabetzaren eta haur-adimenaren garapenaren arteko erlazioarekin. Izan ere, produktuaren *Mindstorms* izena haren liburu baten izenburuan du jatorria: *MindStorms: Children, Computers, and Powerful Ideas*, zeinetan ordenagailuen erabilerak ikasketan duen bultzadaren inguruko burutazioak deskribatzen dituen. Programatzen irakasteko tresna gisa hedatuta dagoen Logo programazio-lengoaiaren sortzaileetako bat izan zen Papert-ek Jean Piaget-etik hartzen du haurra bera, buru-egitura propioen eraikitzailearen kontzeptua. Konstrukzionismoaren aldekoa da, haurrak haren ezaguera forma aktiboan sortu eta hezkuntzak jarduera hori bultzatzeko tresnak erraztu behar dizkiola sostengatzen duen tesia. Haren liburuaren irakurketak bultzatu zuen Lego-ko zuzendaria MITekin kontaktatzera, talde biek haur-ikasketaren inguruko antzeko burutazioak zituztela pentsatzera bultzatu baitzuen.

Garapen lerro horrek 1993an jarraituko zuenControl Lab-en jarutiketarekin, software hobetuarekin.

Lego eraikuntza bati konektatuta zegoen ordenagailua programatu ordez, eraikuntza horretako bloke bat programatzeko urratsa luze aztertutako ideia naturala zen. 90ko hamarkadaren hasieratik hasi zen aukera hori ikertzen. Hala ere, proiektuak itxaron egin behar izan zuen merkatua egokia izan arte. Alde batetik, teknologiaren kostua gehiegizkoa zen hasiera batean. Bestalde, blokea ordenagailu batetik programatuko zen, eta garai horretan ordenagailuak ez zeuden zortzi urte geroago bezain hedatuta, eta horrek eskaerari negatiboki eragingo zion. Bost bat urte itxaron behar izan ziren baldintza egokiak izan eta RCX blokea izango zenaren garapena serio hartu arte, mikrokontrolagailu bat duen eta Mindstorms produktuaren bihotza den Lego blokea. Era honetan Lego eraikuntzak egitura estatiko izatetik munduarekin eragiten duten makina dinamikoak izatera pasatzen ziren. Bestalde, hainbat kasutan Lego produktuek helburu finkoa zuen zerbait eraikitzeko piezak zekartzaten, hala nola tren bat edo zubi bat, eta horrek "eraikiaz ikasteko" aukera ematen zuen arren, bloke berriaren garapenean Papert eta Resnick-en "diseinatuz ikasteko" filosofia jarraitu zen, eta beste hainbat aukera irekiak utziz.

### Diseinuaren erabakiak 
Hautatutako merkatu segmentua 10 eta 14 urte arteko haurrena izan zen, batez ere mutilena, nahiz eta MITen garapenetan ez zen sexu arteko bereizketarik egiten. Hau ere zen Lego-ren segmentu tradizionala. Publiko horren aukerak zehaztu zituen diseinuaren erabakiak eta "Programmable Brick" (adreilu edo bloke programagarri) izeneko MITeko garapenaren, eta Lego-k MITekin batera egindako ikerketatik oinarrituz modu independentean diseinatu eta garatutako RCX blokearen artean. MITeko diseinua erabili ordez zerotik abiatuz produktu berri bat egitea justifikatzen da erakunde bien helburu desberdinengatik. MITeko sistema haurren ikaste prozesuan fokatua zegoen eta horrek sistemaren produkzioa garestiago egiten zuen ezingo baitziren unitate asko egin, eta hauskorragoa, beti egongo baitzen norbait konpontzeko ingeniariz betetako laborategi batean. Lego-ren blokea, ordea, aurrenerabeen salmentara zegoen zuzenduta eta, beraz, sendoa eta atzigarria izan behar zuen. eta burutazioak trukatzen hainbat web-orri sortu zituen.

RCX blokeaz gain beste bloke programagarri batzuk existitu ziren, NXTren behin betiko bertsioa garatu arte mailaz maila garatzen joan zirena.k 1998tik aurrera lerroaren hasiera merkaturatu zen *Cybermaster* robotarekin. 2004ko hasieran, Lego-k aurreko urtean izan zituen emaitza txarren ondorioz, 1400 milioi DKK daniar koroi (188 milioi euro inguru) galera erregistratu zuen, Mindstorms lerroa utzi eta merkatu tradizionalera itzuliko zen zurrumurrua zabaldu zen. Hala ere, 2006ko urtarrilean Lego-k Mindstorms NXT bertsioaren berri eman zuen, azken belaunaldikoa, urte horretako ekainean merkaturatzen hasi zena.

### Kritikak 
Lego-ren zenbait erabaki komertzialek epistemologia eta ikasketa taldeko printzipioak kontraesaten zituzten. Taldeko kideek desadostasuna erakutsi zuten kit komertzialean borrokarako roboten adibideak sartzearekin, baita edozein adibide sartzearekin ere, haurrak blokeekin aske saiakuntzak egiten uzteko hastapena hausten zuen eta. Bestalde, jokoa korronte konstrukzionistatik abiatzen den arren, hainbat irakaslek oinarrian metodo instruktibistekin erabiltzen zuten eta, ondorioz, joko bultzatutako filosofia konstruktibistaren difusioa salmenten zifretatik itxaron zitekeena baino txikiagoa izan da. El grupo de epistemología y aprendizaje también ha recibido criticas cuestionando su valor académico, pues “casi nunca hacen nuevos descubrimientos tecnológicos, demuestran teorías científicas significativas o crean productos importantes”. ===
Lego-ren lehen garapenetako bat izan zen CyberMaster, programagarria zen zirkuitu integratuen bloke batekin. Haren irteera 2000 urtean izan zen bakarrik Alemaniako, Australiako, Espainiako eta Inglaterrako merkatuetan, Estatu Batuetara soilik estalki bera zeun kopia bat iritsi zen, aldaketa txiki batekin barne-zirkuituan. Set hau urrutiko kontrol batekin zetorren, eta hau programatzen zen eta instrukzioak bildatzen ztuen blokeetara, programatutako mugimenduak gertatzeko. Bloke hau irrati bidezko komunikazio gaitasunarekin banatu zen, baina hau RCXen hurrengo diseinuan utzi zen eta infragorrien alde egin zen. Lego-ren lehen esperimentua izatean, blokeak gaitasun mugatuak zituen:

* Urrutiko kontroleko memorian programa bakarra baimentzen zuen software originala erabiltzen bazen.
* Zenbait Cybermasterren kontrola baimentzen zuen haren irrati-maiztasun bereko hackeoaren bitartez.
* Motorrak blokean zetozen eta desmuntatu ezin zitezkeen arren, kodegailuak ekartzen zituzten.
* Kontrola eta ordenagailuaren arteko komunikazioa ezin da aldiberean egin.
* Memorian gune bakarra zuen programarentzat eta bakarrik bost instrukzio exekutatu zitzakeen aldiberean software originala erabiltzen bazen.

### MicroScout eta Scout 
MicroScout 1999an 1999 irten zen mikrobloke programagarria izan zen, instrukzioak argi ikusgai esteka (ingelesez, argi ikusgai esteka) baten bidez instrukzioak transmititzeko gaitasunarekin saltzen zena, eta argi-sentsore bat erantsita eta klaxon bat integratuta zituen. Zenbait funtzio lehenetsiak zeukan:

* Motorra aurrera mugitu
* Motorra atzera mugitu
* Argi-iturri bati jarraitu edo argi-iturria bilatu
* Motorraren kontrola argiaren bidez
* Egoera baten aldaketaren aurrean erne jarrarazteko alarma
* Atzipen-kodearen egiaztatzea

## RCX blokea 
300px|thumb|Lego Mindstorms-en RCX 2.0 bloke logikoa
*RCX blokea* Lego Mindstorms-en zati zentrala da, hor aurkitzen baita zati logiko eta elektroniko guztia, robotaren ekintzen gehiengoa baimentzen duena, bere barne-memorian bost programa kargatu daitezke eta bertan gorde blokeari konekta dakiokeen gailu desberdinen kontrolerako oinarrizko firmwarea.

RCX blokeak hiru bertsio ofizial ditu: 1.0, 1.5 eta 2.0, zeinak softwarean hobekuntzak aurkezten dituzten blokearekin batera saltzen den hardware gehiengoari eragin gabe. Hala ere, blokeen zati elektronikoa ez da bateragarria, hiru bertsioek tentsioaren erregulazio desberdinak dauzkate eta, baina hala ere blokeak duen hardwareari ez dio eragiten.

### Mikrokontrolagailua 
Haren barne- mikrokontrolagailua Hitachi H8/3292 da, 5V-eko logika tentsioduna eta gutxi gorabehera 16Mhz-eko abiadura duena, hori izanik Hitachi H8/3000 seriearen maiztasun maximoa. 16 Kb-eko ROM memoria dauka, 32 Kb-eko programa-memoria eta korronte sarrera desberdinak, hala nola ADC (analogikotik digitalerako bihurtzailea) sentsoreen seinaleak interpretatzeko. Haren taxu originala konexiotarako zokalorik ez duen zirkuitu inprimatua da eta blokearen zirkuitu inprimatuaren oinarriari soldatuta dago. Mikrokontrolagailu honek zenbait instrukzio prozesa ditzake segundoko, baina haren desabantaila handiena Lego MindStorms NXTrekin konparatuta prozesuen hariak mantentzeko gaitasun txikia da, hots, ezin ditu bi instrukzio aldi berean exekutatu, eta programatzaileak edo erabiltzaileak ahal duela egiaztatzen badu ere, ez da horrela, baizik eta prozesamendu abiadurak gertatzen den atzerapena bereiztea eragozten duela.

### Sarrerak eta irteerak 
Sarrera-bide moduan hiru konektore dauzka, sentsore desberdinetatik datorren informazioa jasotzea baimentzen duena. Sarrerak 2x2-ko bloke batekin osatzen dira, haren buruakmaterial eroale batekin inguratuta daude sentsorearen irakurketak baimenduz. Irakurketak LCD pantailaren goiko zatian kokatzen dira, gris kolorekoak dira eta 1, 2 eta 3 zenbakiekin bereizten dira.

RCX blokearen irteeran robotari konekta dakizkiokeen motorrak energizatzeko dira eta, horrela, mugimendua eman. Ematen duen tentsioa 9 Vekoa da, blokeari konektatzen zaion motor bakoitza programaren aginduei jarraituz mugitu dadin. Energia-irteerak LCD pantailaren beheko zatian aurkitzen dira, beltz kolorekoak dira eta A, B eta C letrekin bereizten dira.

### LCD pantaila 
Lego MindSotrms-ek dakarren LCD pantailak hiru datu-area ikustea baimentzen du:

* Goiko aldean, sentsoreen sarrerak eta baterien karga-maila.
* Zentruan, zona alfanumerikoa kontagailua, tenporizadorea edo sentsore batek erregistratutako balioak ikustea baimentzen duena.
* Beheko aldean, motorren mugimenduaren zentzua erakusten da.
* Ezkerreko alboan, ataka infragorriaren bidez hari gabeko konexioa dagoen erakusten da.

Haren lan moduan, LCD pantailak exekuzio kontagailu bat dauka, programa exekutatu den aldi kopurua eta denbora zabaltzen du, exekutatzen ari den programaren zenbakia erakusten du eta bi egoera posibletan aurkitzen den pertsonarenirudia erakusten du: geldirik egoeran, pertsonaren adierzpena geldirik agertzen da, eta programa exekutatzen denean, pertsona hori mugimenduan aurkitzen da.

Gainera, sentsore bat hautatzen bada, sentsoreak erregistratutako balioa ikustea baimentzen du RAW neurri batean, sarrerari konektatuta dagoen sentsore mota edozein izanda.

Blokeak oinarrizko firmwarerik ez badu, orduan ez da erakusten programaren kontagailua eta ez dira exekutatzen 2, 3, 4 eta 5 programak, lehenego programak soilik erakutsi ahal izando du korrontearen irteerak eta datuen sarrerak funtzionatzen dutela. Gainera, pertsona finkoa mantentzen da nahiz eta blokearen 1 programa exekuzioan egon arren.

LCD irteera horrek programatzaileari laguntzen dio framework-ak ordeztu nahi duenean, pantailan datuen irteera baimentzen du eta blokearen edozein barne-elementuren egoeraren irteera sortzeko.

### Ataka infragorria eta komunikazioa 
RCX blokearen aurreko aldean, argi infragorrirako sensiblea den fototransistorea eta  dago erabilgarri ("Ataka infragorria" izena ere deritzona), haririk gabeko komunikazio sistema sinplea ahalmenduz. Sistema hau, telebista baten urrutiko kontrolaren antzera funtzionatzen du, 2400bps-ko abiaduran transmitituz datuak, ondorioz, bit bakoitza 417 us-tan transmititzen da.

Ataka infragorriaren nolakotasunari buruz, abiadura berdineko ataka duen beste gailu batekin konektatzeko gaitasuna ematen dio, hala nola Palms-ak, ordenagailu eramangarriak eta telefono mugikor mota ugarik, leku ezkutu edo txikietan komunikazioko plataformak egitea baimentzen duelarik.

RCXen eta hartzailearen arteko distantzia maximoa 30cm da, eta haren gaitasun maximoan funtzionatuko du oinarriko dorretik eta bi gailuen arteko ikusmena eragozten duten objekturik ez badago. Hala ere, distantzia txikiagoa da gelan existititzen den argiaren kutsaduragatik.

 

### Elikadura Elektrikoa 
Blokearen elikadura elektrikoa 1,5 V-eko 6 AA baterien bidez egiten da, blokearen atzeko aldean konektatzen direnak. Bateriak paraleloan konektatzen dira eta blokeari zein bloke berari konektatzen zaizkion motorrei ematen diete energia.

Lego MindStorms-eko eskuliburuan baterien ordezkapenaren inguruko abisua egiten da, bateriek blokearen barnean dagoen eta programa desberdinak eta firmware-a gordetzen duen pila elikatzen baitute. Ordezkapena 1 minutu baino gehiago atzeratzen bada, gordetako informazioa galdu egingo da. Erabiltzaileei ematen zaien beste gomendioa da berriz kargatzeko bateria arruntak saihestean datza, horiek blokeari tentsio txikiagoa emango dutelako orokorrean, eta beraz beharrezko potentzia emango ez dutelako.

Elikadura elektrikoaren deskonexioa programatu daiteke Lego MindStorms jokoarekin datorren softwarearen bidez, amatatze-denbora zehaztu daiteke, 1 minutu eta 99 minutu artean, baita amatatze automatikoa desgaitu ere. Gainera, programak berak robotaren baterien karga-maila erakusten du, kargatuta dagoenean berde koloreko barra bat erakutsiaz, eta hori gorriraino aldatzen doa guztiz deskargatzen denean.

Robotaren bateria deskargatzen denean, horrek soinu konstante bat ateratzen du amatatze-tekla sakatzen den arte, bateriak erabat agortu direla erakutsiz.

## NXT blokea 
350px|thumb| Lego Mindstorms NXT aurkezpen batean.
NXT blokea Lego Mindstorms RCXen bertsio hobetua da, eskuarki Lego blokeen aurrekaritzat eta aitzindaritzat hartzen dena.

Bloke programagarrien merkaturatzea dela eta, Lego-k NXT belaunaldia bi bertsioetan saldu zuen: Retail Version eta Education Base Set. Hezkuntzarako bertsioaren abantaila berriz betetzeko bateriekin eta kargadorearekin zetorrela zen, baina bertsio horretan softwarea lizentzia motaren arabera erosi behar zen: pertsonala, Ikasgelen gela eta lekua.

Gainera, Lego-k zenbait kit jarri zituen garatzaileen eskura, garatzen ari ziren programen araberako ezaugarriak zituztenak.

* *Software Developer Kit* (SDK), YSB ataken kontrolagailuak, fitxategi exekutagarriak eta bytecode-ei erreferentziak hartzen zituena.
* *Hardware Developer Kit* (HDK), NXTko sentsoreen eskemak eta dokumentazioa zekarrena.
* *Bluetooth Developer Kit* (BDK), Bluetooth bidezko komunikazioan erabilitako protokoloen dokumentazioarekin zetorrena.

### Mikrokontrolagailua 
Daukan mikrokontrolagailua 32 bit-eko ARM 7 arkitektura duen ATMEL zirkuitu integratua da, 256 KB-eko Flash memoria eta 64 Kb-ko RAM memoria dituena. RCX blokean ez bezala, kanpoko memoria horrek programak gordetzeko ahalmen handiagoa dauka, haibat datu-paketeren prozesu atxikiek elkarren artean talka egin eta, erroreak sortzea eta softwarearen exekuzioan erroreak gertatzea saihestuz. Haren aurkezpena Hitachi H8-ren antzekoa da, blokearen zirkuitu inprimatuan aurkitzen delako, FLASH memoriaren ondoan.

### Sarrerak eta irteerak 
NXT blokean lau sarrera existitzen dira sentsoreentzat, baina konektoreak RCXen desberdinak dira, haren motoreen edo sentsoreen konexioa eragotziz. NXT kit-ak, aldiz, egokigailua dakar RCXen sentsoreak NXTarekin bateragarriak izan daitezen.

Energia-irteerak oraindik hiru dira, blokearen atzeko aldean kokatuta, motorren eta zati higokorren konexioen atzipena erraztuz.

### Komunikazioak 
NXT blokea ordenagailuarekin komunikatu daiteke USB interfazearen bitartez, 2.0 bertsioaren abiadurarako prest datorrena. Hurbil dauden beste robotekin komunikatzeko Bluetooth interfaze bat du, II klaseko v 2.0-rekin bateragarria dena. *Bluetooth* -arekin konektagarritasunak beste blokeekin konektatzea baimentzeaz gain, baita ere ordenagailuekin,palms-ekin,telefono mugikorrekin, eta komunikazioko interfaze hori duten beste aparatu batzuekin.

Konexiorako aukeren artean honakoak aurkitzen dira:
* Hiru gailu desberdin arte konektatzea.
* Bluetooth-a duten beste gailuak bilatzea eta konektatzea.
* Lehenago konektatutako gailuak gogoratzea, konexioa arinago egiteko.
* NXT blokea ikusgai edo ikusezin moduan ezartzea gainerako gailuentzat.

## Firmwarea 
Lego Mindstorms-en firmwareak RCX blokean burutu daitezkeen ataza desberdinak programatzeko blokeak dituen oinarrizko instrukzioak dauzka. Firmwarea taxu originalean eransten denCD-ROM-ean dator, eta robota hasieratzen den aldi bakoitzean edo bateriak aldatu eta memoria ezabatzen den bakoitzean kargatu behar da.

Firmwarea kargatzen ez bada, robota abio moduan geratzen da eta sorterriko forman robotaren barruan datorren programarekin joka daiteke. Firmwarea kargatzeko erantsitako programa exekutatu behar da eta, ondoren, 3 minutu inguru itxaron oinarrizko firmwarea guztiz karga dadin.

Lego Mindstorms RCXen egungo bertsioek, hala nola 2.0 bertsioa, blokearen bertsio zaharragoekin bateragarriak dira, horrela, bertsio berrienetan idatzitako programak aurreko belaunaldikoetan exekutatu daitezke.

## Komunikazio dorrea 
300px|thumb|ezkerrera| USB Komunikazio dorrea, Lego Mindstorms RCX.
Barneratutako programak zein erabiltzeileek programatutakoak transferitzeko, Lego Mindstorms-ek izpi infragorri bat du ordenagailuarekin konektatzen dena, eta, softwarearekin batera, firmwarea eta programak igorri daitezke. Dorre hau bi bertsioetan dago erabilgarri:

; Serie dorrea

## Pieza bereziak 
300px|thumb| Finkatze, biratze eta higitze pieza bereziak.
Lego-k saltzen dituen hainbat jokoek ez bezala, Lego Mindstorms-ek zenbait pieza gehigarri ekartzen ditu eraikitzen ari den robotari malgutasuna eta mugimendua emateko.

Piezak sailkatzeko, pieza higikor, malgu eta finkatze piezen arteko sailkapena iradokitzen da, hauek baitira Lego Mindstorms-ek ekartzen dituenak edozein robot berezi garatzeko.

;Pieza higikorrak
Lego Mindstorms-ek dakartzan pieza higikorrak blokearen errotazioan zentratzen dira nagusiki, gurpilak bloke osoarekiko mugimendu zirkular batean mugi daitezen. Pieza higikor hauek bitan sailka daitezke:
# ''Errotazio pieza'-k Lego bloke bat beste baten inguruan biratzea baimentzen du, hutsa da erdian eta konexioaren pinak dauzka, pieza geiago gehitu ahal izateko biraketa blokearen goiko aldean. Bloke hori funtsean robot mugikorretan erabiltzen da, edo materialen garraiorako zinta bat egiten denean, eta motor bati konektatzen zaio blokearen bira bete dezan.
# *Biraketa piezak*, errotazio piezak ez bezala, bloke bat espazioan biratzea baimentzen du, robot baten begien simulazioa baimenduz. Pieza horrek ez dauka erabilgarritasun errealik, baina robota apaintzeko balio du.

;Pieza moldeagarriak edo malguak
Pieza malguen bidez sistema artikulatu baten artikulazio bat sortu daiteke, robotak mugimendu ez zurruna egin behar duenerako berariazko forman, hala nola piezak sailkatzeko robotaren kasuan. Pieza malguak, gehienetan, 4&nbsp;cm baino distantzia handiagora ez dauden bi blokeekin konekta daitezkeen plastikozko tutuak dira.

#### FInkatze piezak 
Finkatze piezak errotazio piezek sortzen dituzten errotazio ardatzak finkatzeko dira eta, beraz, Lego-ren gurpilen erdian erabiltzen dira. Gehienetan, 0,5&nbsp;mm-ko diametroa duten tutuak dira, gurpilaren ardatz nagusi bezala jokatzen duen barraren muturrean jarri daitezke, programa baten exekuzioan irten ez dadin.

### Gurpilak 
300px|thumb|Lego Mindstorms-eko gurpilak.
Lego Minstorms-eko osagaietako bat, eta roboten eraikuntzari dinamismo handia ematen diona, gurpilak dira. Gurpilei esker bloke logikoa espazio erreal batean mugi daiteke eta ingurunearekin elkarreragin dezake.

Gurpilen bertsio desberdinak existitzen dira, hagune zabaletatik hasi egonkortasun eta abiadura handiagoa eskaintzen dituztenak; eta gurpil txikietaraino, robota leku txikietan mugitzea baimentzen dutenak. Gainera, tankeek duten beldar efektua simulatzen duen zinta bat dakar, erabiltzaileaktankeak zein objektuenzinta garraiatzaile bat sortu ahal izan ditzan.

Robotikaren fanatikoentzat azpimarratu behar den konnotazioa gurpil mota bakoitzaren neurketa fisikoena da, zenbait webgunetan probak egin dituzte gainazal desberdinetan, baita pisu, abiadura edo gurpilen kopuru handiagoen kasuetarako ere.

## Eraikuntza 
Robotaren eraikuntza Lego-ren berezko plastikozko blokeak, pieza tolesgarriak eta gurpilen edo piezen biraketa baimentzen duten beste zenbait pieza elkarren artean lotzean oinarritzen da. Eredua bloke programagarrian oinarritu behar da, blokeak sortutako robota mugitzeko beharrezko energia ematen baitu. Gainera, kit-ean sartzen diren sentsoreak finka daitezke, robotren garapenean baliagarriak izan daitezen.

Eraikuntzaren estrategia nagusietako bat robot mota zehaztea da, baita emandako softwareak robota eraikitzeko balio duen ere. Hori zehaztu ondoren, eraikuntzari hasiera eman dakioke beti ere funtzio-blokeak osatuz, adibidez, gurpilak ardatz bati lotuz edo sentsoreak oinarrietan kokatuz baliagarriak izan daitezen. Jarraian, blokea eta ingurunearen arteko loturaren fasea hasten da, fase kritikoena hori, RCX blokean infragorri-sentsorea ezin baita estali softwarea kargatu ahal izateko. Robota mihiztatu eta gero, programa bidaliko da eta programatutako sententziak exekutatuko dira, edozein softwarerekin egiten den antzera, probak egin eta hutsegiteak zuzenduz.

Eraikuntzan ematen diren hutsegite arruntenak piezen mugikortasun eza, sentsoreek balio zuzenak ez detektatzea edo, besterik gabe, robota ez dela mugitzen izaten dira. Soluzio-estrategiak anitzak dira, baina epe luzean pentsatu, muntatu eta, ondoren, exekutatzeko bidea iradokitzen dute, horregatik baita Lego logika garatzen duen robotikako jokoa.

### Programazioa 
Lego Mindstorms-en programazioa taxu originalean datorren softwarearekin egiten da, robotaren firmwarea eta erabakien zuhaitz bat simulatzen duen programa bat dakarrena, erabiltzaileak robotak jarraitu beharreko ekintzak programatzeko. Softwarea zatituta dago eraiki daitekeen robot mota bakoitzarentzat, eta taxuan dator gomendatuta.

Programazio software horren ezaugarri nagusienetakoa haren ikuste-ingurunea da, blokekako eraikuntza simulatzen duena, edozein ikastun erabiltzaileri blokekako programaziora arin ohitzeko aukera emanez.

Lengoaia horrek instrukzio sekuentzialak, begiztako instrukzioak eta erabakien instrukzioak onartzen ditu, azken horiek robotari gehitu dakizkiokeen sentsoreetatik jasotako datuetan oinarrituz.

#### Programazio lengoaia alternatiboak 
Lego Mindstorms blokea, hardware eta software integratuko produktu gisa, zenbait interfazeren bidez programa daiteke, eta guztien bidez helburu bera lortu. Hori komunikazio dorrearen bitartez egin ahal da eta Lego-ren oinarrizko firmwarea atzitzeko tresna egokiak erabiliz.

Zenbait pertsonek Lego-k duen ROM memoriaren oinarrizko kodea eskuratu ahal izan dute oinarrizko interfazeen bidez eta, horrela, mihiztadura bidezko programazioa edundu blokea kontrolatzeko.

Framework ezagunenak BrickOS, LejOS eta Not Quite C dira.

BrickOS (edo LEGOS).

BrickOS instrukzioen eta programen liburutegia da, programatzaileari zuzenean blokearen BIOSra sartzen uzten diona eta han, nukleo eragilea eta blokeak dituen baliabide guztiak estekatzeko beharrezko liburutegiak dituen mikro sistema eragile bat instalatzen uzten diona. Instalatu ahal izateko framework originala aurkitzen den lekuan idatzi behar du, baina aldaketa honi esker, blokea C, C++ eta mihiztadura lengoaian programatu daiteke.

BrickOS Linux banaketa gehienetan eta Windowsen (CYGWIN-gatik) jasana dago, linux-ek integratuta dakarren konpiladorea ( gcc edo gcc++), eta blokearen ekintzak kontrolatzeko bytecode-en mapa sortuz.

Hasiera batean, programa multzo horrek "LegOS" zuen izena, baina Lego enpresak izen aldaketa eskatu zuen bi izenen artean existitzen zen antzagatik.

LejOS

BrickOS-ek ez bezala, LejOS-ek ez du sistema eragile bat instalatzen RCX blokearen firmwarea ordezteko, Java makina birtual bat baizik. Horri esker blokea Java lengoaian programa daiteke eta, beraz, ez dago ez konpiladore ez eta sistema eragile baten mendekotasunik. Hala ere, prozesuen gardentasuna txikiagoa da LejOSek murrizten duen objektuei orientatutako programazioa dela eta. Horregatik BrickOS programa gehiago erabiltzen da, barne- nahiz kanpo-prozesuen gardentasuna dela eta. Hori programatzailearen kalterako da BrickOS erailiz programatzaileak blokean gertatzen diren barne-mugimenduak ez baititu ikusten eta, ondorioz, programaziorako gaitasun hobeak gehitzea zaila gertatzen da. Hala ere, programa hori oso erabilia da lehen mailako programazioko ikasleen artean.

Not Quite C

Not Quite C blokearen jatorrizko frameworka ordezten ez duen programa multzo bakarra da, baina hori desabantaila da, framework originalarekin batera existitu behar da eta eta, beraz, haren instrukzioak emulatu, frameworka ordezteko metodologia baino motelagoa bihurtuz prozesua.

Not Quite C Mac OS eta Windows-erako dago erabilgarri, eta programazio-lengoaia gisa C-ko berezko bertsio bat erabiltzen du. Gainera, Mindstorms lerro gehienarekin da bateragarria, eta, ondorioz, lengaoai alternatibo guztien artean zabalduena da RCX blokeen plataformen arteko migrazioa ahalbidetzen duelako.

#### Egokitzapen arazoak 
Frameworketik beste lengoaia batera aldatzeak instrukzioen arteako atzerapena dakar, programa multzoak blokeari ematen dizkion instrukzioak emulatu behar direlako. Atzerapen hori Dick Swan-ek detektatu zuen eta software bidez zenbait errendimendu eta emulazio proba egin ondoren, edozein instrukzio exekutatzeko atzerapena, motorren bat piztuta edo itzalita egonda, 1,75 milisegundokoa  dela deskubritu zeun.

Egindako probatan, hainbat ataza denbora tarte berean exekutatu zituen exekutatutako instrukzioen arteko erlazio lineala azpimarratuz, beraz, zenbat eta instrukzio gehiago orduan eta luzeagoa intrukzioa exekutatzeko itxarondenbora.

## Sentsoreak 

### Argi-sentsorea 
Argi-sentsoreak argi intentsitatearen neurketa egitea ahalbidetzen du, mutur batean eroale elektrikoa eta, bestean, argia antzematen duen kamera ilun bat duen blokearen bidez. Kamera hori 0,6tik 760 lux arteko argia antzemateko gai da. Jasotako balioa portzentai gisa hartzen du eta, blokeak prozesatu ondoren, argitasun mailaren batazbestekoaren gutxi gorabeherako balioa lortzen du.

RCX blokeak Luz=146-RAW/7 formula erabiltzen du argiaren neurketaren batezbestekoa erabakitzeko, neurketa bat egiten du 2,9 milisegundoro eta neurketa bakoitza egiteko 100 us behar ditu.

Argitasun maila neurtzen duenez, sentsorea ez da gai koloreak desberdintzeko, soilik zuria (argitasuna), beltza (iluntasuna) eta tarteko argi portzentaiei dagokien gris mailak.

### Tenperatura-sentsorea 
Tenperatura-sentsoreak tenperaturaren gutxi gorabeherako balioa ematen du mutur batean duen termistore baten bidez, sentsorea barneratzen duen blokearen tenperatura detektatzea ahalbidetzen duen eremu magnetiko bat sortuz. Lego taxuzko blokeak 12,2 Kohms-eko termistorea du 25&nbsp;°C-tara, gutxi gorabehera -3.7&nbsp;°C-ko zuzenketa-koefizientearekin.

Temp=(785-RAW)/8 formulak ematen du sentsoreak detektatutako tenperatura.

### Talka-sentsorea 
Talka-sentsorearen bidez talka kokatuta dagoen blokeak objekturen batekin pumpa egin duenetz detekta daiteke. Gainazal bat ikutzean, kanpoan duen buru txikia uzkurtu egiten da eta, ondorioz, bloke barnean dagoen zirkuitu elektrikoa itxi egiten da energia iraganez, eta 0-tik 5V-erako energia-aldaketa sortuz.

Kasu horretan, presioak LCD pantailan bistaratzen den 450ko neurri estandarra gainditzen badu, sentsorea sakatutzat hartzen da eta, presiorik gabe, kontrako kasuan.

=== Biraketa-sentsorea Irakurketa horrek arazoak ematen ditu abiadura txikietan, sortzen dituen energia-aldaketa xumeak direla eta, tarteko balioak ez baitira hartzen baliozko mugimendutzat.

### Ultrasoinu-sentsorea 
Ultrasoinu-sentsorea Lego Mindstorms NXTko kaxan soilik sartzen da eta, bere funtzio nagusia distantiak neurtu eta robotaren bidean dagoen objektu baten mugimendua detektatzea da. Sentsore horrek 0 eta 255&nbsp;cm artean dauden objektuak detekta ditzake, +/- 3&nbsp;cm-ko zehaztasun erlatiboarekin.

Oihartzunaren printzipioaren bidez, sentsoreak haren atzipen-eremuan dauden objektuen informazioa jaso dezake. Sentsoreak hobeto funtzionatzen du oihartzuna objektu handietatik, lau edo gainazal gogorretatik iristen zaionean. Objektu txikiak, kurbatuak edo leunak, hala nola pelotak, oso zailak izan daitezke detektatzeko. Gela berean ultrasoinu-sentsore bat baino gehiago badago, interferentziak gerta daitezke haien artean eta detekzioaren emaitzak kaskarragoak izan.

## Gida alternatiboa 
* The Unofficial Guide to LEGO® MINDSTORMSTM Robots, Jonathan B. Knudsen, 

## Erreferentziak 
## Kanpo estekak 
* Lego Mindstorms-en webgune ofiziala (ingelesez)
* Lego-ren webgune ofiziala (ingelesez)
;Beste zenbait
* Hitachi H8/300-aren ezaugarri teknikoak (ingelesez)
* Lego Engineering (ingelesez)
;Softwarea
* Not Quite C-ren webgunea (ingelesez)
* BrickOS-en webgunea (ingelesez)
* LejOS-en webgunea (ingelesez)