Lego Mindstorms
Lego Mindstorms (virallinen nimi Lego Mindstorms Robotic Invention System) on Lego Groupin valmistama tuotesarja, josta voi rakentaa erilaisia robotteja. Sarjan setit koostuvat mikropiirillä varustetuista ns. keskuspalikoista, niihin liittyvistä antureista ja moottoreista sekä tavanomaisista Lego Technic -palikoista. Ensimmäinen versio, RCX, julkaistiin vuonna 1998. Seuraava Mindstorms-versio, NXT, tuli kauppoihin vuonna 2006. NXT 2.0 lanseerattiin vuonna 2009 ja seuraava versio, EV3, on tullut myyntiin syksyllä 2013.
RCX-keskuspalikalla varustetut setit tulivat kauppoihin vuonna 1998. Se ohjelmoidaan tietokoneella tarkoitusta varten kehitetyllä ohjelmalla. Ohjelmia voidaan ajaa joko suoraan tietokoneen kautta tai tallentamalla ne RCX-keskuspalikkaan, josta niitä voidaan ajaa nappia painamalla. RCX:ssä on kolme anturiporttia ja kolme sähkömoottoriporttia. RCX:n käyttämät moottorit ovat Lego Technic -sarjan käyttämiä yhdeksän voltin moottoreita. RCX on korvattu pitkälti uudella NXT-älypalikalla eikä alkuperäisiä RCX-sarjan settejä ole enää myynnissä.
Samana vuonna kun alkuperäinen RCX julkaistiin, julkaistiin toinenkin ohjelmoitava palikka "Cybermaster"-nimen alla. Tämä Cybermaster-palikka erosi "isosta veljestään", RCX-keskuspalikasta, seuraavilla tavoilla:Cybermaster-tuotesarja on suunnattu nuoremmille kuin RCX ja se oli integroitu tehokkaasti setin mukana tulleeseen tietokonepeliin. Tarkoituksena oli että tietokonepelissä eteen tulevat ongelmat ratkaistaisiin ohjelmoimalla Cybermaster-robottiin omanlaisensa ohjelma ja ratkaisemalla oikeassa elämässä ongelmat.
NXT julkaistiin vuonna 2006. Se sisältää kolme sähkömoottoria ja neljä anturia: valo-, ultraääni-, kosketus- ja äänianturin. Lisäksi sarja sisältää ohjelmointiyksikön ja erinäisen määrän Lego Technic -osia. Myös NXT ohjelmoidaan tietokoneella. NXT:ssä on kolme ulostuloporttia, neljä sisääntuloporttia ja yksi USB-portti, jonka kautta tietokoneella ohjelmoitu ohjelma siirretään NXT:hen. NXT on varustettu Bluetoothilla. Lego julkaisi uuden 2.0 version NXT:stä vuonna 2009. NXT 2.0 ei poikkea paljoa NXT 1.0:sta, muulla tavoin kuin jollain muutetuilla rakennusosilla ja uudella valoanturin korvanneella värianturilla. Myös äänianturi korvattiin toisella kosketusanturilla.
Mindstorms EV3 malli julkaistiin syksyllä 2013 kahtena sarjana Home, sekä Education. Kuluttajille suunnatussa 31313 sarjassa on keskusyksikkö (Brick), 2 ajomoottoria, 1 keskikokoinen moottori, sekä kosketus-, väri- ja IR-etäisyysanturit. Lisäksi sarjaan kuuluu IR-majakka/kauko-ohjain. Kaikkiaan osia on 601 kpl. Koulukäyttöön suunnatussa paketissa on keskusyksikön lisäksi akku (LiIon), kaksi kosketusanturia, ultraääni- ja asentoanturit (Gyro), muttei IR-etäisyysanturia eikä kauko-ohjainta.
Keskusyksikössä on liitännät neljälle anturille, mini-USB (ohjelmointi), USB (yksiköiden rinnankytkentä/WLan), neljälle moottoriyksikölle, sekä Bluetooth-yhteys Android&iPad -laitteille. Prosessorina on ARM9 (Linux), muistia RAM 64MB+16MB Flash+microSD(max 32GB). Näyttö on kaksivärinen 178x128 pikseliä. Kouluversio tukee näytteen keräystä, jopa 1000mittausta/s.
Sekä RCX-, NXT- että EV3-ohjelmointiyksikkö ovat ohjelmoitavissa. Helpoin/ensimmäinen tapa ohjelmoida ohjelmointiyksiköitä on käyttää setin mukana tulevaa graafista ohjelmointityökalua. Ohjelmat rakennetaan erilaisista palikoista, joiden avulla voidaan määritellä esimerkiksi tiettyjen moottorien pyöriminen, anturien luvut, ynnä muuta. Näin voidaan esimerkiksi rakentaa ohjelma, joka vierittää ohjelmointiyksiköitä moottorien avulla pyörittämällä renkaita n kierrosta ja sitten lukee kosketusanturin arvon.
Lego Group on julkaissut jokaiselle ohjelmointiyksiköilleen software development kit:n, ja näiden avulla Mindstorms-fanit ovat tehneet omia ohjelmia päästäkseen eroon alkuperäisten ohjelmien rajoitteista (esim. ehtolauseiden puuttuminen). Esimerkki tällaisesta ohjelmasta on Bricx Command Center (BricxCC), jonka avulla RCX-ohjelmointiyksikköön voi lähettää C-kieleen perustuvalla -kielellä tehtyjä ohjelmia. Näitä ohjelmia pyörittää ohjelmointiyksikössä sen oma sisäinen ohjelmisto (firmware).
Koska ohjelmointiyksikkö voi kommunikoida tietokoneen kanssa, myös ohjelmointiyksikön sisältö on muokattavissa. Kaksisuuntaisen yhteyden avulla on mahdollista poistaa alkuperäinen firmware ja korvata se uudella. Tunnetuimmat korvaajat ovat Lejos, joka korvaa firmwaren Java-kieltä ymmärtävällä, Brickos, joka korvaa firmwaren C-kieltä ymmärtävällä ja pbForth, joka korvaa firmwaren Forth-kieltä ymmärtävällä.
Ohjelmointiyksikön ohjelmilla, jotka on tehty kehittyneellä kielellä kuten C:llä, on mahdollista tehdä tehokkaita ehtolauseisiin perustuvia robotteja, jotka voivat reagoida tilanteisiin reaaliaikaisesti. On myös mahdollista kehittää ohjelmointiyksiköiden välistä kommunikaatiota ja työnjakoa.