Legoajoneuvon ohjelmistorakenne ja ohjaussovellus



Samankaltaiset tiedostot
BL40A1810 Mikroprosessorit, harjoitus 1

HiTechnic -kompassisensorin käyttäminen NXT-G -ympäristössä

JOHDATUS TEKOÄLYYN TEEMU ROOS

Comet pysäköintimittarin asennus ja kytkeminen tietokoneeseesi (Windows XP) USB-kaapelilla.

S11-09 Control System for an. Autonomous Household Robot Platform

KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA

GSM OHJAIN FF KÄYTTÖOHJE PLC MAX S03

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

Tomi Ilonen, Tommi Nuotiomaa, Matias Pitkänen. Kokoava projekti Lego Mindstroms

Äänellä vauhtia robottiin

Visual Case 2. Miika Kasnio (C9767)

Lego Mindstorms NXT. OPH oppimisympäristöjen kehittämishanke (C) 2012 Oppimiskeskus Innokas! All Rights Reserved 1

CipherLab CPT-8001L -tiedonkeruupäätteen käyttö Ecomin kanssa

JOHDATUS TEKOÄLYYN TEEMU ROOS

lejos-asennusohje Robottiohjelmoinnin harjoitustyö Kevät 2011

Ohjelmointileirin järjestäminen

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

SUMO-ROBOTTI. Tehtävä

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

WINE API ja Virtualisointiohjelmistot

Sisällysluettelo. HUOM! Muista lukea tämä opas huolellisesti ennen käyttöönottoa.

HP ProBook 430 G5 kannettavien käyttöönotto

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

BaseMidlet. KÄYTTÖOHJE v. 1.00

NXT Infrapuna-sensori

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys

Octave-opas. Mikä on Octave ja miksi? Asennus

PIKAOPAS NOKIA PC SUITE 4.3. Nokia puhelimelle. Copyright Nokia Mobile Phones Kaikki oikeudet pidätetään Issue 6

SÄHKÖKÄYTÖN EMULOINTI SIMULINK-DSPACE-M1 -YMPÄRISTÖSSÄ

DNA Netti. DNA Netti - Käyttöohje v.1.0

Simulaattorin asennus- ja käyttöohje

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Yhteydensaantiongelmien ja muiden ongelmien ratkaisuita

Versio 1.0. BLUETOOTH DONGLE, GS-301 GPS JA NAVICORE PERSONAL Asennusohje Windows 2000/XP ja Nokia Series 60 älypuhelimille

Online karttapäivitys

WBelectronics. Infinity USB Phoenix - Käyttöohje

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

UCOT-Sovellusprojekti. Asennusohje

Ilmanvirtauksen mittarit

Digikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle

Ohjelmistopäivitysohje

Topfield USB-laiteajurin ja päivitystyökalun asennus

DNA Netti. Sisältö. DNA Netti - Käyttöohje v.0.1

Seseon Oy 2008 Automaatiopalvelu TUOTE-ESITTELY Infrapunalämpömittaus

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

PIKAOPAS. Nokia Connectivity Cable Drivers -ohjainten asentaminen

LHV325 Ohjelmoinnin perusteet. WorkBook. Jussi Tapio Kuosa

Nosturirobotti. robotin tarkoitus. mikä on robotin tehtävä. Kurssin robottiohjelmointi, kesä 2011 harjoitustyö

4. Lausekielinen ohjelmointi 4.1

Ohjelmistopäivitykset

Päivitys käyttäen USB-tikkua

iloq P10S.10/20 -ohjelmointilaite Käyttöohje

Micro:bit. Käyttöohje. Innokas verkosto Petja Pyykkönen, Saimaan mediakeskus Käyttöohje / 2016 Innokas

Robottikerhon suunnitelma syksylle 2015

Karttaselain Paikannin J2ME

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Agent-D -sarja. Tilauskoodi: Agent-D-HT2 sis. Agent-D-Clip-S -anturi Agent-D-HT2-EX (EX-Zone 1) sis. Agent-D-Clip-S -anturi

TKT224 KOODIN KOON OPTIMOINTI

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

Finwe KÄYTTÖOHJE.

Topfield Altair -tiedostojen siirto-ohjelman asennus ja

TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio. Mat Systeemien Identifiointi. 4. harjoitus

Värähtelymittaus Tämän harjoituksen jälkeen:

TELEWELL TW-EA200 MODEEMIN ASENTAMINEN SILLATTUUN SAUNALAHDEN ADSL-LIITTYMÄÄN KÄYTTÄEN USB-VÄYLÄÄ

Ulkoiset laitteet. Asiakirjan osanumero: Tässä oppaassa kerrotaan lisävarusteina saatavien ulkoisten laitteiden käytöstä.

1 Muutokset piirilevylle

HARJOITUSTYÖ: LabVIEW, Kiihtyvyysanturi

AS Automaatio- ja systeemitekniikan projektityöt

Arduino ohjelmistokehitys

lizengo Asennusopas Windows: in kopioiminen

PIKAOPAS. Nokia Connectivity Cable Drivers -ohjainten asentaminen

Pikaopas. Multimedia / Multimedia Navi Pro. Räätälöinti

Nokia autosarja CK /1

Pamemetrilista ADAP-KOOL. EKC 201 ja EKC 301

MicaFlex MF-PFCP Asennus- ja käyttöohje

TeleWell GPRS-modeemin ohjekirja

Ohje WILE 200 PC-ohjelman käyttöön

AS Automaatio- ja systeemitekniikan projektityöt

Mikro-ohjain µc harjoitukset - yleisohje

Suurikokoiset LCD kosketusnäytöt HUMAN TOUCH

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

Rider 40 Rider 40:ssä on neljä näppäintä, joita käytetään useisiin eri tarkoituksiin.

mobile PhoneTools Käyttöopas

Ulkoiset laitteet. Asiakirjan osanumero: Tässä oppaassa esitellään lisävarusteena saatavien tietokoneen ulkoisten laitteiden käyttöä.

Ulkoiset laitteet. Asiakirjan osanumero: Tässä oppaassa kerrotaan lisävarusteena saatavien ulkoisten laitteiden käytöstä.

PIKAOPAS MODEM SETUP FOR NOKIA Copyright Nokia Oyj Kaikki oikeudet pidätetään.

Toiminnallinen määrittely versio 1.2

TiiMi Talotekniikka. LATTIALÄMMITYS- TERMOSTAATTI TiiMi 7250TL. v. 1.0

Herätyskellokamera. Käyttäjän ohjeet

Liitäntäkaapelin CA-42 pika-asennusohje

KÄYTTÖOHJE. VALVOMOPÖYDÄN KÄYTTÖOHJE Cergo-valvomopöydän moottoroitu säätäminen 1

Robottialustan instrumentointi ja käyttöönotto

ZigBee-ohjaus kuorma-autolle

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Tulostimen hallintaohjelmisto MarkVision

Hallintatyökaluja Fujitsu-työasemille

Koodaamme uutta todellisuutta FM Maarit Savolainen

Transkriptio:

Lappeenrannan teknillinen yliopisto Raportti LUT Energia Säätö- ja digitaalitekniikan laboratorio BL40A0901 Sulautettujen järjestelmien seminaarikurssi 2.12.2011 Legoajoneuvon ohjelmistorakenne ja ohjaussovellus 0281064 Henri Montonen, SÄTE N

1 SISÄLLYS 1 LEGO MINDSTORMS... 2 1.1 Käyttöjärjestelmä... 2 1.2 Liitettävyys... 3 1.2.1 Liitettävyys MATLABiin... 4 1.2.2 Esimerkki ulkoisen laskennan liittämisestä NXT:hen... 4 1.3 Antureita... 5 2 CASE LUISTONESTO... 6 2.1 Vaatimusmäärittely... 6 2.2 Toiminnallinen määrittely... 7 2.3 Tekninen määrittely... 8 3 SOVELLUSESIMERKKI... 9 3.1 Ympäristö... 9 3.2 Koodiesimerkki... 10 4 YHTEENVETO... 11 Lainatut lähteet... 12

2 1 LEGO MINDSTORMS Lego Mindstorms on Legon valmistama tuotesarja, joka sisältää ohjelmoitavan keskuspalikan (NXT) ja joukon siihen liitettäviä laitteita. Kuva 1 Lego Mindstorms NXT yhdistettynä ultraäänianturiin ja kolmeen askelmoottoriin NXT sisältää ARM7-suorittimen, neljä I 2 C sisääntuloa, kolme I 2 C lähtöä, USB-portin ja Bluetooth yhteyden. Kuvassa 1 NXT:n on liitetty ultraäänianturi ja kolme askelmoottoria. Askelmoottoreista kaksi pyörittää telaketjuja. Ultraäänianturia voidaan käyttää esteiden tunnistamiseen ja etäisyyden mittaamiseen. (Chikamasa, 2010) 1.1 Käyttöjärjestelmä Tässä tapauksessa Legon oman, rajoitteisen, käyttöjärjestelmän rinnalle on asennettu kolmannen osapuolen käyttöjärjestelmä nxtosek. nxtosek mahdollistaa NXT:n ohjelmoimisen C- tai C++kielellä. Käyttöjärjestelmä tarjoaa valmiit rajapintafunktiot NXT:n antureille ja moottoreille, jolloin ohjelmoijan ei tarvitse perehtyä suorittimen rekisterien muokkaukseen. Kuva 2 nxtosek-käyttöjärjestelmän osat

3 nxtosek koostuu kuvan 2 mukaisesti lejosnxj:stä, TOPPERS/ATK:sta ja TOPPERS/JSP:stä. lejos NXJ toimii ajurina tietokoneen ja NXT:n välillä. TOPPERS/ATK ja TOPPERS/JSP tarjoavat reaaliaikakäyttöjärjestelmän. TOPPERS/JSP sisältää lisäksi porttauksen NXT:n ARM7 prosessorille (ATMEL AT91SAM7S256). (Chikamasa, 2010) Näiden lisäksi NXT:hen on asennettu kolmannen osapuolen firmware, joka mahdollistaa nxtosek:in käytön. Asennettu firmware on John Hansen s Enhanced NXT firmware, joka sallii useiden nxtosek-sovellusten asentamisen mutta rajoittaa sovelluksen suurimman koon 64 kilobittiin. Toinen vaihtoehto olisi NXT BIOS:in käyttäminen. Tätä vaihtoehtoa käytettäessä NXT:llä voi olla vain yksi nxtosek-sovellus, mutta sen suurin koko voi olla 224 kilobittiä. Käytettäessä kumpaa tahansa firmwarea sovellus ladataan NXT flash-muistiin. Kolmas tapa on ladata sovellus NXT:n RAM-muistiin. Tätä tapaa käytettäessä vain yksi sovellus voidaan ladata muistiin ja sen koko on rajoitettu 64 kilobittiin. (Chikamasa, 2010) 1.2 Liitettävyys NXT:ssä on 4 sisääntuloa antureille ja 3 ulostuloa toimilaitteille, sekä USB-portti tietokoneyhteyttä varten. Lisäksi NXT voidaan liittää Bluetoothin avulla toiseen NXT:hen, tietokoneeseen tai matkapuhelimeen. Anturit ja moottorit liitetään NXT:hen RJ12-liittimillä. Liittimessä on analoginen sekä digitaalinen liityntä. Digitaalinen liityntä on I 2 C sekä RS-485 yhteensopiva. Liittimen pinnijärjestys on esitetty taulukossa 1. Taulukko 1 NXT:n sensoriliitäntöjen pinnijärjestys (Wikipedia, 2011)

4 1.2.1 Liitettävyys MATLABiin NXT voidaan liittää MATLABiin, jolloin sitä voidaan ohjelmoida ja komentaa suoraan MATLABista. Tarvitaan vain RWTH Aachen MINDSTORMS NXT Toolbox. Toolboxin avulla voi ohjelmoida NXT:tä ilman muita ohjelmia, visualisoida NXT:n sensoridataa, kehittää graafisia käyttöliittymiä NXT:n hallintaan. Yhteytenä toimii USB tai Bluetooth. Vaativampaan käyttöön sopii paremmin Embedded Coder Robot (ECRobot) Target, joka tarjoaa valmiin kirjaston Simulink-lohkoja NXT:n sensoreita ja toimilaitteita varten. Sovellusta voidaan kehittää ja simuloida tietokoneella, jonka jälkeen se voidaan kääntää ja ladata NXT:lle. Tällöin NXT on vapaa toimimaan itsenäisesti ilman rajoittavaa USB-johtoa tai Bluetooth-yhteyttä. (Mathworks, 2011) 1.2.2 Esimerkki ulkoisen laskennan liittämisestä NXT:hen Esimerkkisovelluksessa NXT:stä, webbikamerasta ja Texas Instrumentsin DSP:stä on rakennettu Tetristä pelaava robotti. DSP:hen on kytketty webbikamera, joka kuvaa tietokoneen näyttöä. DSP analysoi webbikameran kuvaa ja tunnistaa siitä putoavan palikan muodon sekä etsii sille sopivan paikan. NXT painelee tietokoneen näppäimistön nappeja ja ohjaa putoavan palikan oikealle paikalle. Tiedonsiirto DSP:n ja NXT:n välillä on toteutettu DSP-laudalla olevilla ledeillä, joita NXT:n valontunnistin tarkkailee. Sytyttelemällä ja sammuttelemalla ledejä DSP komentaa NXT:tä painelemaan oikeita näppäimiä, jotta palikka saadaan oikeaan paikkaan. (Saenz, 2010)

5 1.3 Antureita NXT:hen on saatavilla suuri joukko erilaisia antureita eri valmistajilta. Taulukossa 2 on esimerkkejä mindsensors.comin valikoimasta. Taulukko 2 Esimerkkejä NXT:hen saatavilla olevista antureista (Mindsensors, 2011) Anturi Kuvaus Vision Subsystem v4 for NXT (NXTCam-v4) Voidaan käyttää linjantunnistimena tai seuraamaan, jopa 8 eriväristä esinettä. Sensori lähettää NXT:lle esineiden koordinaatit. Touch Panel for NXT Kosketuspaneeli, jolla NXT:n LCD-näyttö voidaan muuttaa kosketusnäytöksi. Dual Range, Triple Zone Infrared Obstacle Detector for NXT (NXTSumoEyes-v2) Infrapunalla toimiva esteentunnistin, suurin tunnistusetäisyys 30 cm. Line Sensor Array for NXT (NXTLineLeader) Linjantunnistin kahdeksalla valonilmaisimella. Multi-Sensitivity Acceleration Sensor v3 for Kolmeakselinen kiihtyvyysanturi. Useita NXT - (ACCL-Nx-v3) herkkyysalueita (1.5 G, 2 G, 4 G, 6 G). Realtime Clock for NXT Reaaliaikakello, paristovarmennettu. Laskee sekunteja, minuutteja, tunteja, päiviä, vuosia, ottaa huomioon karkausvuoden. Pneumatic Pressure Sensor v2 for NXT (PPS35- Paineanturi. Voidaan kytkeä Legon Nx-v2) pneumatiikkajärjestelmään. Mittausalue 0 2.4 bar.

6 2 CASE LUISTONESTO Diplomityönä kehittämääni hybridityökoneen luistonestojärjestelmää oli tarkoitus testata Lego Mindstorms ajoneuvossa, mutta alusta osoittautui epäsopivaksi tähän tarkoitukseen. Ensinnäkin luistonesto olisi tarvinnut tiedon vetävien pyörien pyörimisnopeudesta ja vääntömomentista tai vaihtoehtoisesti kaikkien pyörien pyörimisnopeuden. Kumpaakaan ei ollut saatavilla. Toiseksi, NXT:hen ladattavan sovelluksen suurin koko voi olla maksimissaan 224 kilobittiä käytettäessä NXT BIOS firmwarea. Jos luistonestosovellusta olisi pitänyt karsia NXT:tä varten, sovellus ei olisi enää ollut sama. Kolmanneksi, NXT:tä ei ole tarkoitettu ajoneuvoksi, lähinnä robotiksi joka pystyy ryömimään paikasta toiseen. NXT:n moottorit eivät pysty pyörittämään pyöriä tarpeeksi nopeasti, jotta luistonestosta olisi jotain hyötyä. Seuraavassa käydään läpi luistonestosovellus UML-kaavioita apuna käyttäen, jos sellainen haluttaisiin toteuttaa ajoneuvoon. UML editorina on käytetty ilmaista, avoimen lähdekoodin, ArgoUML:ää. ArgoUML tukee UML 1.4 kaavioita ja koodin generointia UML diagrammeista. Generoitavia kieliä ovat C++, C#, Java, PHP4 ja PHP5. ArgoUML tukee myös koodin reverse engineeringiä eli UML kaavioiden muodostamista lähdekoodista. UML kaavioiden muodostaminen onnistuu Javasta. (ArgoUML kotisivut, 2011) 2.1 Vaatimusmäärittely Luistoneston tulee toteuttaa kuvassa 2.1 kuvatut toimenpiteet. Kuva 2.1 Luistonestosovellus välittää kuljettajan asettaman vääntömomenttiohjeen moottorille, pyörien luistaessa vääntömomenttia pienennetään kuljettajan asettamasta arvosta. Luistonestojärjestelmän actoreina toimivat luistoestimaattori ja ajoneuvon kuljettaja. Kuljettaja luo vääntömomentti- tai nopeusohjeen järjestelmälle. Säädin pienentää tarvittaessa ohjesignaalia luistoestimaattorilta saamansa luistotiedon perusteella.

7 2.2 Toiminnallinen määrittely Luistonestosovellus koostuu kuvan 2.2 mukaisista lohkoista. Kuva 2.2 Luistonestojärjestelmä koostuu luistoestimaattorista, säätimestä ja sensoreista Luistonestojärjestelmää varten tarvitaan estimaattori, joka arvioi vetävien pyörien luistoa. Luistotieto voi olla pyörän luistokerroin (välillä 0 1) tai sitten binäärinen: pyörä luistaa/ei luista. Tarvittavat tiedot estimaattori saa ajoneuvon antureilta, esim. pyörän pyörimisnopeus ja moottorin vääntömomentti. Säädin tarkkailee luistokerrointa ja pienentää tarvittaessa moottorille menevää kuljettajan määräämää vääntömomenttiohjetta. Lohkojen välinen vuorovaikutus on esitetty kuvassa 2.3 olevassa vuorovaikutusdiagrammissa. Kuva 2.3 Luistonestojärjestelmän osien vuorovaikutus Järjestelmän osien välinen signaaliliikenne on esitetty tarkemmin kuvassa 2.4 olevassa sekvenssidiagrammissa.

8 Kuva 2.4 Sekvenssidiagrammi luistonestojärjestelmän lohkojen välisistä signaaleista Säädin saa kuljettajalta vääntömomentti- tai nopeusohjeen ja luistoestimaattorilta tiedon pyörien luistokertoimesta. Säädin välittää korjatun ohjesignaalin moottorinohjaimelle. Luistoneston toteutuksesta riippuen moottorinohjaimelta voidaan saada moottorin pyörimisnopeus ja vääntömomentti. Esimerkiksi, jos käytetään binääristä luistotietoa, ei tarvita moottorin vääntömomenttia. 2.3 Tekninen määrittely Luistonestosovelluksen suoritus on esitetty kuvassa 2.5. Kuva 2.5 Tilakaavio luistonestosovelluksen suorittamisesta

9 Säädin saa luistotiedon luistoestimaattorilta, jonka perusteella se voi pienentää, pitää ennallaan tai kasvattaa moottorinohjaussignaalin arvoa (oli se sitten vääntömomentti- tai nopeusohje). Säädin ei tietenkään saa kasvattaa moottorin ohjearvoa kuljettajan asettamaa arvoa suuremmaksi. 3 SOVELLUSESIMERKKI Kappaleessa esitellään yksinkertainen nxtosek-sovellus, joka käyttää NXT:hen liitettyä ultraäänianturia etäisyyden mittaamiseen ja kirjoittaa tuloksen NXT:n LCD-näytölle. 3.1 Ympäristö Ennen kuin NXT:ssä voi ajaa omaa koodia, useita työkaluja on asennettava. Tässä kappaleessa esitellään vain tarvittavat työkalut, tarkemmat tiedot niiden asentamisesta ja käytöstä löytyy tämän kappaleen lähteeksi merkityltä sivustolta kohdasta Installation. Kaikki nämä työkalut voidaan ladata samasta paikasta, lukuun ottamatta Legon Fantom Driveria. Ensimmäinen asennettava työkalu on Cygwin. Cygwin tarjoaa Linuxin kaltaisen ympäristön Windowsiin ja mahdollistaa useiden Linux-sovellusten ajamisen Windowsissa (huom. sovellukset täytyy kuitenkin kääntää Windowsiin, Cygwin tarjoaa vain kirjastot). Toinen asennettava työkalu on GNU ARM, joka on GCC-kääntäjän distribuutio NXT:n ARM7 prosessorille. Lisäksi tarvitaan lataustyökalu ohjelman lataamiseksi NXT:hen. Lataustyökalu riippuu NXT:lle asennetusta firmwaresta. Jos käytetään John Hansen s Enhanced NXT Firmwarea, on lataustyökalu John Hansen s NeXTTool. Lopuksi tarvitaan Legon USB-ajuri PC-yhteyttä varten. Ajuri löytyy Legon internetsivuilta nimellä Fantom Driver. (Chikamasa, 2010) Kuten aiemmin mainittiin, NXT:lle voidaan kirjoittaa omia ohjelmia C-kielellä. Ohjelmoinnin avuksi edellisen kappaleen lähteestä, kohdasta ECRobot C/C++ API, löytyy rajapintafunktiot nxtosek-käyttöjärjestelmään. Ohjelmoinnissa kannattaa käyttää sopivaa koodieditoria esim. Eclipse. Koodi käännetään Cygwin-ikkunassa, siirtymällä koodin kansioon ja kirjoittamalla komento: make all. Kun käännös on valmis ohjelma ladataan NXT:lle komennolla./rxeflash.sh. NXT täytyy olla kytkettynä tietokoneeseen USB-johdolla ja virta päällä.

10 3.2 Koodiesimerkki Seuraavassa käydään läpi lyhyt koodiesimerkki, joka käyttää ultraäänianturia etäisyyden mittaamiseen ja tulostaa mittaustuloksen NXT:n LCD-näytölle. /* omatesti.c for TOPPERS/ATK(OSEK) */ #include <stdlib.h> #include "kernel.h" #include "kernel_id.h" #include "ecrobot_interface.h" /* OSEK declarations */ DeclareTask(Task1); /* nxtosek hook to be invoked from an ISR in category 2 */ void user_1ms_isr_type2(void){ /* do nothing */ } void ecrobot_device_initialize() { ecrobot_init_sonar_sensor(nxt_port_s4); } void ecrobot_device_terminate() { ecrobot_term_sonar_sensor(nxt_port_s4); } TASK(Task1) { float dist; while(1){ } TerminateTask(); dist = ecrobot_get_sonar_sensor(nxt_port_s4); display_clear(1); display_goto_xy(0,0); display_string("distance:"); display_goto_xy(0,1); display_int(dist,0); display_string(" cm"); display_update(); systick_wait_ms(500); } Koodissa on käytetty rajapintafunktioita, joten koodiin täytyy sisällyttää ecrobot_interface.h. Koodissa on yksi taski, joka on luotu käyttämällä DeclareTask-funktiota. User_1ms_isr_type2 on käyttäjälle luotu hook millisekunnin välein ajettavaan keskeytysrutiiniin. Ecrobot_device_initialize ajetaan kun ohjelma käynnistetään. Käyttäjä voi lisätä siihen käynnistyksessä alustettavia kohteita. Esimerkkikoodissa funktiossa alustetaan ultraäänianturin ja NXT:n välinen I2C liikenne funktiolla ecrobot_init_sonar_sensor. Vastaavasti ecrobot_device_terminate ajetaan kun ohjelma pysäytetään painamalla exit-painiketta. Itse taskissa ultraäänianturin mittaama etäisyys saadaan luettua ecrobot_get_sonar_sensor-funktiolla. Etäisyys kirjoitetaan näytölle ja odotetaan 500 ms ennen seuraavaa suoritusta.

11 4 YHTEENVETO Lego Mindstorms on sopiva alusta sulautettujen järjestelmien opetukseen ja ohjelmoinnin aloittamiseen. Suuren anturi- ja lisälaitemäärän ansiosta alusta taipuu useisiin erilaisiin projekteihin. Valmiin rajapintafunktiokirjaston ansiosta ohjelmointi on helppoa, mutta se antaa kuitenkin realistisen kuvan sulautettujen järjestelmien ohjelmoinnista. Mindstormsin ympärillä on suuri ja aktiivinen kehittäjäyhteisö, jolta saa tarvittaessa apua ja joka kehittää kolmannen osapuolen ohjelmia alustalle.

12 Lainatut lähteet ArgoUML kotisivut. (2011). ArgoUML Features. Haettu 29. 11 2011 osoitteesta http://argouml.tigris.org/features.html Chikamasa, T. (2010). nxtosek/jsp. Haettu 10. 11 2011 osoitteesta http://lejososek.sourceforge.net/ Mathworks. (2011). Mathworks Nordic. Haettu 29. 11 2011 osoitteesta MATLAB for LEGO MINDSTORMS Robots: http://www.mathworks.se/academia/lego-mindstorms-nxtsoftware/legomindstorms-matlab.html?sec=start Mindsensors. (2011). Mindsensors.com. Haettu 16. 11 2011 osoitteesta Advanced Sensors for MINDSTORMS NXT: http://www.mindsensors.com/index.php?module=pagemaster&page_user_op=view_page &PAGE_id=57&gclid=CLWOmszCu6wCFYQtmAodklBjjg Saenz, A. (19. 4 2010). Singularity Hub. Haettu 2. 12 2011 osoitteesta First Video of Lego Robot Playing Tetris: http://singularityhub.com/2010/04/19/first-video-of-lego-robot-playingtetris/ Wikipedia. (2011). Wikipedia. Haettu 10. 11 2011 osoitteesta Lego Mindstorms NXT: http://en.wikipedia.org/wiki/lego_mindstorms_nxt