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. Seuraava, EV3, on tullut myyntiin syksyllä 2013. Uusin versio, Lego Mindstroms Robot Inventor tuli myyntiin syksyllä 2020.
RCX.
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ä.
Cybermaster.
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.
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.
EV3.
Mindstorms EV3 -malli julkaistiin syksyllä 2013 kahtena sarjana: Home ja Education. Kuluttajille suunnatussa 31313-sarjassa on keskusyksikkö (Brick), 2 ajomoottoria, 1 keskikokoinen moottori ja kosketus-, väri- sekä IR-anturit. Lisäksi sarjaan kuuluu IR-majakka/kauko-ohjain. Kaikkiaan osia on 601 kpl. Koulukäyttöön suunnatussa paketissa on keskusyksikön lisäksi akku (Li-ion), kaksi kosketusanturia 
sekä ultraääni- ja asentoanturit (Gyro) muttei IR-etäisyysanturia tai kauko-ohjainta.
Keskusyksikössä on paljon liitäntöjä: neljä anturiliitäntää, mini-USB (ohjelmointi), USB (yksiköiden rinnankytkentä/WLAN), neljä moottoriliitäntää sekä Bluetooth-yhteys Android- ja iPad-laitteille. Prosessorina on ARM9 (Linux), muistia RAM 64MB+16MB Flash+microSD(max 32GB). Näyttö on kaksivärinen ja siinä on 178x128 pikseliä. Kouluversio tukee näytteen keräystä, jopa 1000 mittausta/s.
Ohjelmoitavuus.
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 ohjelmistokehityspaketin, 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.