S14-09 Sisäpeltorobotti



Samankaltaiset tiedostot
S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

Matematiikan tukikurssi

Työssäoppiminen , Fuengirola

A11-02 Infrapunasuodinautomatiikka kameralle

MAA10 HARJOITUSTEHTÄVIÄ

OHJ-1151 Ohjelmointi IIe

Arvioidaan työskentelyn asennetta, vastuullisuutta, omaaloitteisuutta,

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

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Case Hoviagents. Oppimisprojekti /TKI3 Kevät

ZigBee-ohjaus kuorma-autolle

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim.

Molemmille yhteistä asiaa tulee kerralla enemmän opeteltavaa on huomattavasti enemmän kuin englannissa

Kenguru 2016 Mini-Ecolier (2. ja 3. luokka) Ratkaisut

AS Automaatio- ja systeemitekniikan projektityöt

Kolme pientä opinto-ohjaajaa ja suuren suuri lukio

2.2 Täydellinen yhtälö. Ratkaisukaava

Windows Live SkyDrive - esittely

Matematiikan tukikurssi 3.4.

OULUN SEUDUN AMMATTIKORKEAKOULU TEKNIIKAN YKSIKKÖ TIETOTEKNIIKAN OSASTO OHJELMISTOKEHITYKSEN SUUNTAUTUMISVAIHTOEHTO

Lisää segmenttipuusta

Marjan makuisia koruja rautalangasta ja helmistä -Portfolio

S Portaalinosturi AS Projektisuunnitelma Oleg Kovalev

Innovaatioprojektin projektisuunnitelma. Talousjakkara ikääntyville

Johdatus diskreettiin matematiikkaan Harjoitus 7,

1 Johdanto. Tavoitteeni opinnäytetyössä oli valmistaa asiakkaan toiveiden mukainen, hyvin istuva vaate. Työ myös täydensi ammattitaitoani.

Valtio, VM ja HVK, jäljempänä yhdessä Osapuolet ja kukin erikseen Osapuoli.

Raportointi hankkeen tulosten kuvaajana ja toteutuksen tukena

Suomen Lions-liitto ry Käyttäjätunnus ja sisäänkirjautuminen MyLCI - Käyttäjäohje Versio

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

PROJEKTIN OHJAUS JA SEURANTA JOUNI HUOTARI, ESA SALMIKANGAS

Tytöt LVI-alalla - Perusraportti

Huomaathan, että ohjeessa olevat näytöistä otetut kuvat voivat poiketa sinun koulutuksesi vastaavien sivujen kuvista.

Tehokkuutta istutukseen! M-Planter Oy

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

AS Automaatio- ja systeemitekniikan projektityöt

SIS. Vinkkejä Ampèren lain käyttöön laskettaessa magneettikenttiä:

MUUTOS 14! - Sosiaaliset kriteerit julkisissa hankinnoissa!

Jousen jaksonaikaan vaikuttavat tekijät

Matkahuolto lisäosa WooCommerce alustalle (c) Webbisivut.org

Monialaisen oppimiskokonaisuuden arviointikäytännöt. Työkaluja monialaisen oppimiskokonaisuuden toteutumisen seurantaan ja arviointiin - OPS2016

Suunnistaminen peukalokompassilla Peukalokompasseissa on eroa

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

L2TP LAN to LAN - yhteys kahden laitteen välille

SKYPE-RYHMÄN LUOMINEN

Sähköstaattisen potentiaalin laskeminen

AS Automaatio- ja systeemitekniikan projektityöt

Syksyn aloituskampanjat lippukunnissa

Rohkeasti robotiikkaan Lego Mindstorms EV3:lla Tehtäväkortteja tuntityöskentelyyn

Projektisuunnitelma: Vesipistekohtainen veden kulutuksen seuranta, syksy Mikko Kyllönen Matti Marttinen Vili Tuomisaari

Tani Savolainen ja Eveliina Kantola LAPIN AMK 2015

Työtapaturman ilmoittaminen 2016-> Uusi sähköinen lomake, täyttäminen esimies ja palkkahallinto

Nuorten tieto- ja neuvontatyön osaamiskartta Pirjo Kovalainen

TimeEdit henkilökunnan ohje

KELAN INDUKTANSSI VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Miika Manninen, n85754 Tero Känsäkangas, m84051

360 asteen kuvan tekeminen

Ohje PhotoPortaalin käytöstä

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Riskienhallinta DTV projektissa. Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

Opetussuunnitelma uudistui mikä muuttui? Tietoja Linnainmaan koulun huoltajille syksy 2016

Moodle HOPS-työskentelyn tukena

Matematiikan tukikurssi

Arkkitehtitoimistojen Liitto ATL ry Julkisten hankintojen lainsäädännön vaikutus arkkitehtipalveluihin Kesä-elokuu 2010, vastaajia: 66

TILASTOLLINEN LAADUNVALVONTA

JOENSUUN SEUDUN HANKINTATOIMI KOMISSIOMALLI

Peltorobottikilpailu Joonas Ryynänen (C) Perttu Heikkilä Ville Matikainen Mikko Vihlman

Power Steering for ATV

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

ALAJÄRVEN, LEHTIMÄEN, SOININ JA VIMPELIN LOMATOIMISTOJEN PUOLUEETON JA VANKKUMATON ÄÄNENKANNATTAJA. Täyttä asiaa, ei arvailuja - jo vuodesta 2008

AS Automaatio- ja systeemitekniikan projektityöt. Projektisuunnitelma. Peltorobotin akselimoduulin ohjain

Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun

LIITE. asiakirjaan KOMISSION TIEDONANTO

Ndoromo Owen Suomen Punainen Risti Vaasan suomalainen osasto. Miten kotoutua maahanmuuttajasta kuntalaiseksi?

EP senioripoliisit. Lokakuun tapaaminen ti

Ennakkovaroitustoimintojen sekä. uuden teknologian hyödyntäminen. toteutuspöytäkirjamenettelyssä

Miten korkeakoulujen yhteishaun ja erillishakujen kokonaisuutta tulisi kehittää?

Tämä opas on tarkoitettu opettajaylläpitäjille, jotka eivät ole ennen käyttäneet TwinSpacea. Neuvomme, kuinka:

P A R T. Professional Assault Response Training Seppo Salminen Auroran koulu. Valtakunnalliset sairaalaopetuksen koulutuspäivät

Väli- ja loppuraportointi

E-kirjat. ja uusi Ellibsin käyttöliittymä

c) Määritä paraabelin yhtälö, kun tiedetään, että sen huippu on y-akselilla korkeudella 6 ja sen nollakohdat ovat x-akselin kohdissa x=-2 ja x=2.

Kuusamon kaupungin ohjeistus PALVELUSETELI- JA OSTOPALVELUJÄRJESTELMÄN KÄYTTÖÖN

Strategia, johtaminen ja KA. Virpi Einola-Pekkinen

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys

Mokapäivä Leppävaara

VOO VASTUUTA OTTAMALLA OPIT

Projektisuunnitelma. Projektin tavoitteet

Suomen jäsenmaksut EU:lle vuonna 2007 ennakoitua pienemmät

Yrittäjän työssäoloehdon laskenta

Lupapiste-palvelua koskeva Yritystilisopimus

Vähittäiskaupan esimiesten työehtosopimus

Laboratoriotyön sisältö. Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti (1 raportti/työ)

Markkinoiden helpoin ja käytännöllisin IP Kamera

AS Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma Syksy 2009 A09 05 OSGi IRC Bot For Coffee Maker

Tutustu merkintöihin! Tärkeää tietoa siitä, miten varmistat pesu- ja puhdistusaineiden käytön turvallisuuden kotona

Siimasta toteutettu keinolihas

Perusopetuksen aamu- ja iltapäivätoiminnan laadun arviointi 2016 Västankvarns skola/ Tukiyhdistys Almus ry.

Mikrokontrollerikitit - väliraportti

Transkriptio:

S14-09 Sisäpeltorobotti AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Antti Kulpakko Mikko Ikonen Ohjaaja Timo Oksanen Alkamispäivä 15.1.2014 Päättymispäivä 25.5.2014

1. Projektin tavoitteet Projektin tavoitteena on toteuttaa ohjelmisto sisäpeltorobottiin seuraavien vuosien peltorobottikilpailuryhmien opetuskäyttöön. Robotin on tarkoitus pystyä liikkumaan kapeaa käytävää pitkin hyödyntäen mittalaitteinaan ultraääni- ja infrapuna-antureita sekä yawgyroskooppia avulla kääntymään käytävän päässä 180 astetta uudelle viereisella käytävälle. Robotti antaa käyttäjille visuaalisia signaaleja LED-valojen avulla ja niillä kuvataan robotin senhetkistä tilaa. Robotin on tarkoitus kulkea suoraan eteenpäin ja havaittuaan päädyn kääntyä viereiselle linjalle ja jatkaa matkaa vastakkaiseen suuntaan. Sillä on siis kaksi ajomoodia: suoraan ja käännös. Äänimerkein summeria käyttäen on tarkoitus kuvata tilan vaihtumista toiseen. Robotti on rakennettu RC-auton pohjalle. Työssä on tarkoitus toteuttaa ohjelmisto mikrokontrollerille, AVR ATMEGA 128, sekä onboardtietokoneelle, ebox-3350. Lisäksi näiden välille toteutetaan rajapinta ja onboard-tietokoneella ajettava demo-ohjelma. Työn ensimmäisessä vaiheessa ohjelmoidaan mikrokontrolleripuoli C- kielellä: RS232-sarjaporttirajapinta tiedon lähettämiseksi ja vastaanottamiseksi eboxilta, PWM (Pulse-Width Modulation) nopeusohjaus kääntymistä ohjaaville servoille sekä sähkömoottorille, moottorin enkooderi, summeri, LCD-näyttö sekä 4 ohjausnappia ja 4 LED-merkkivaloa. Robotin nopeuden ohjaaminen tarkoitus toteuttaa 2 eri moodissa. Ensimmäinen on open-loop ohjaus, missä robotin sähkömoottorin arvo on suoraan sisään tulevan ohjausarvon suuruus. Toinen on closed-loop ohjaus, missä mikrokontrollerille toteutettu PID-säädin ohjaa sähkömoottoria.työn toisessa osassa ohjelmoidaan C#-kielellä onboradtietokoneen puoli, johon kuuluu tiedon kerääminen etäisyysantureilta käyttäen sarjaportin RS485-protokollaa ja gyroskoopilta puolestaan RS232-protokollalla, vastaava RS232-sarjaporttirajapinta kuin mikrokontrollerissa sekä demo-ohjelma. Demo-ohjelmalla on tarkoitus osoittaa sisäpeltorobotin toimintaa. Tarkoituksena on tehdä minimaalinen graafinen käyttöliittymä, jonka avulla robotille voidaan antaa komentoja, jotka sitten lähetetään WLAN-yhteydellä onborad-tietokoneelta mikrokontrollerille. Näin voidaan esimerkiksi kääntää robotin renkaita, ajaa sitä eteenpäin ja vilkuttaa ledejä. Tarkoituksena ei siis ole toteuttaa robotille erityisiä algoritmeja vaan ainoastaan osoittaa laitteiston sekä mikrokontrollerin ja onboard-tietokoneen rajapinnan toimivuus. Työn ohjaaja Timo Oksanen vastaa robotin mekaniikasta sekä elektroniikasta. Meidän tehtävänä on vastata laitteiston ohjelmistopuolesta. Mikäli projektin lopussa jää aikaa, voidaan projektia laajentaa meidän osalta myös laitteistopuoleen esimerkiksi tutustumalla piirilevysuunnitteluun. Projektin kokonaispituuden olisi tarkoitus olla kummallekin ryhmäläiselle 3 op verran. Tässä on kuitenkin joustovaraa, mikäli työn toteuttaminen osoittautuu oletettua hankalammaksi ja vaatii tästä syystä enemmän aikaa. Lisäksi on mahdollista, että projekti edistyy edellä aikataulua, jolloin päätämme tehdä hieman alkuperäisestä suunnitelmasta poikkeavaa lisätyötä, kuten edellä mainittua piirilevyjen suunnittelua tai vaativampaa simulink-koodigenerointia. Tällöinkin on mahdollista, että opintopiste määrää korotetaan.

Kuva 1. Robotin pohjan rakenne projektin aloitusvaiheessa.

2. Projektin rakenne Työ aloitettiin perehtymällä aiheeseen ja laatimalla suunnitelman ensimmäinen luonnos. Sen pohjalta kävimme ohjaajan kanssa läpi työn rakenteen ja täydensimme puuttuvia tai virheellisiä kohtia. Alla olevassa kuvassa 2 on esitettynä projektin eri osa-alueiden yleisrakenne. Lisäksi opettelimme työhön liittyvää teoriaa. Ensimmäisen palaverin pohjalta täsmensimme projektisuunnitelmaa ja sovimme viikoittaisista palavereista ohjaajan kanssa. Lisäksi otimme tavaksi tehdä jokaisesta tapaamisesta oman blogi-merkinnän projektimme wikiin, jonne merkitsimme päivän agendan ja todo-listan. Sen avulla oli helppo seurata projektin osatehtävien etenemistä ja siitä oli myös paljon apua raportteja kirjoittaessa, kun näki mitä aikaisemmin missäkin vaiheessa oli tehty. Varsinainen työskentely aloitettiin mikrokontrollerin ohjelmointiin tutustumisella sillä, molemmilla ryhmäläisillä oli vain pientä kokemusta siitä lähinnä Automaatio 1 -kurssilta. Harjoittelimme nappien, LED-valojen, servojen sekä LCD-näytön ohjelmointia. Lisäksi alussa piti myös opetella peltorobottiprotokollan perusteet sekä hieman uutta teoriaa kuten PWM tai C#-ohjelmointikieli, josta Mikolla ei ollut aikaisempaa kokemusta.

Alun harjoittelun jälkeen mikrokontrollerikiteillä siirryimme sisäpeltorobotin mikrokontrollerin ohjelmointiin. Ensimmäisenä aloimme toteuttaa rajapintaa, jonka pohjalta teimme luonnoksen protokollan parsimistilakoneesta, josta on kuva 3 esitettynä alla. Lisäksi kuvaliitteenä viestien_rakenne viestit, mitä mikrokontrollerin ja eboxin välillä liikkuu. Kuva 3. Protokollan parsimistilakone. Mikrokontrollerin varsinainen toteuttaminen aloitettiin protokollan parsimistilakoneen ohjelmoinnilla ja lähetysviestin muodostamisella. Toteutimme aluksi siis tarvittavat funktiot rajapinnalle, sillä se on kommunikaation kriittisin osa. Sen jälkeen ohjelmoimme mikrokontrolleriin toiminnalisuutta eli lcd-näytön, ledit ja napit. Lisäksi muodostimme servoille ohjauksen sekä loimme timerin, jonka tehtävänä on tunnistaa vikatila ja pysäyttää toiminta liiallisen viiveen vuoksi vastaanotetuissa viesteissä.

Väliraportin jälkeen aloimme toteuttaa projektin toista vaihetta eli rajapinnan ebox-puolta. Viestien vastaanottamisen ja lähettämisen ohjelmakoodit voitiin tehdä samalla tavalla kuin mikrokontrollerin puolella, ainoastaan kieli piti vaihtaa C-kielestä C#-kieleen, mutta toiminnallisuus pysyi samana. Rangepack-antureiden lukeminen poikkeaa rajapinnan sarjaportin toiminallisuudesta, joten sille tuli kehittää omanlaisensa rakenne. Alla olevassa kuvassa 4 on esitettynä rangepakkien sekvenssikaavio:

Kuva 4. Rangepakkien sekvenssikaavio.

Etäisyyden saamiseksi joudutaan siis antureita ensin kutsumaan ja sitten vastaanottamaan pienen viiveen jälkeen mitattu etäisyys. Lisäksi anturit tulee käydä läpi oikeassa järjestyksessä, etteivät samalta puolelta lähtevät signaalit aiheuta kaikuefektiä. Gyroskoopin arvoa voi puolestaan lukea suoraan sarjaportista. Moottorin ohjausta varten täytyi selvittää moottorin arvoalueet, joiden perusteella voidaan luoda raja-arvot sallituille ohjauksille, joita käytetään lopulta PI-säätimessä. Lisäksi moottorille määriteltiin moodirakenne, jonka mukaan päätellään moottorin senhetkinen tila. Alla on esitettynä moottorin nopeuskäyrä kuvassa 5, josta voidaan huomata kuvaajan muoto, jonka perusteella esimerkiksi seis-alue on määritetty. PI-säätimen käytön tarkoituksena nopeusohjaukseen on, että robotille voidaan antaa vain haluttu nopeus ja säädin ohjaa robotin nopeuden tähän haluttuun nopeuteen. Tämä mahdollistaa robotin nopeuden helpomman säädön, sillä tiettyyn nopeuteen tarvittavaa ohjausarvoa ei tarvitse tietää erikseen. Kuva 5. Moottorin ohjauksen nopeuskäyrä. Viimeisenä olennaisena osana projektissa oli saada kaikki edellä kuvattu toimimaan saumattomasti yhteen pääohjelman sisällä, jota siis suoritetaan eboxin Windows CE - ympäristössä. Pääohjelmassa toimintoja suoritetaan erillisissä säikeissä, jotta eri osat voivat toimia toisistaan riippumattomasti. Jokaiselle sarjaportille on omat säikeensä eli

mikrokontrollerille, gyrolle ja rangepakeille. Pääohjelmassa käytetään delegaatteja, joiden avulla voidaan sovellusrakenteen eri osassa olevia osia päivittää ja tuoda päivitetty arvo takaisin pääohjelman tasolle. Lopuksi toteutimme pääohjelmalle graafisen käyttöliittymän, jonka avulla voidaan ohjata robotin eri toimintoja. Robotin etu- ja takarenkaita voidaan käännellä ja moottorin ajomoodia vaihtaa ja antaa parametreja PI-säätimelle. Lisäksi ledejä voidaan asettaa päälle ja lähettää LCD-näytölle tekstiä. Alla on kuvat robotin lopullisesta ulkonäöstä ja käyttöliittymästä. Kuva 6. Robotti lopullisessa olomuodossaan.

Kuva 7. Demo-ohjelman käyttöliittymä. 3. Ajanhallinta ja vastuun jako Koska projektiimme osallistui vain kaksi henkilöä eikä kumpikaan ollut erityisemmin erikoistunut aihepiiriin, projektia oli tarkoitus toteuttaa pääsääntöisesti yhdessä. Molemmilla lähtökohtana projektille olikin uusien hyödyllisten asioiden oppiminen ja siksi päädyimme aluksi kummatkin osallistumaan kaikkien osien tekemiseen. Projektin edetessä välillä mietimme vastuunjakoa uudelleen ja teimme töitä erikseen. Alustavien aika-arvioiden perusteella eri osiin oli tarkoitus käyttää aikaa seuraavalla tavalla eli kolmen opintopisteen verran kahdelta opiskelijalta, yhteensä noin (2 x 3 x 27 h =162h) : Mikrokontrollerin ohjelmoiminen 40-50 h Tietokoneen mikrokontrolleri ajurin ohjelmoiminen 40-60 h Demo-ohjelman tekeminen 30 h Testaaminen 30 h

Raportointi 20 h Otimme kuitenkin huomioon, että nämä ajat olivat hyvin karkeita arvioita ja jotkin osiot voivat viedä huomattavasti vähemmän aikaa ja toiset huomattavasti enemmän. Tavoitteena kuitenkin oli, että työmäärä pysyy kolmen opintopisteen suuruisena. 3.1 Toteutunut ajankäyttö ja työtehtävät Projektin alussa oli C-ohjelmointikielen kanssa pieniä vaikeuksia, sillä molemmilla oli useiden vuosien tauko C-ohjelmoinnista. Muistin virkistämisen jälkeen pääsimmekin hyvin vauhtiin ja alkuvaikeuksista huolimatta olimme hyvin lähellä tavoitteitamme projektin väliraportoinnissa. Olimme siis saaneet ensimmäisen osion eli mikrokontrolleripuolen lähes valmiiksi. Siitä jäi ainoastaan puuttumaan moottorin ohjauksen toteutus ja siinä käytettävä PI-säädin, jota emme edes olleet tajunneet ottaa huomioon alkuperäiseen suunnitelmaan. On kuitenkin otettava huomioon, että vaikka lähes pääsimme tavoitteeseen, oli aikaa kuitenkin käytetty arvioitua enemmän. Väliraportin jälkeen jouduimme kuitenkin toteamaan, että ehtiäksemme tekemään projektin ajoissa loppuun, meidän täytyy jakaa työtehtäviä enemmän, eikä tehdä enää koko aikaa yhdessä. Olimme silti molemmat mukana eri osien toteutuksessa toistemme tukena ja teimme osittain myös samoja asioita siten, että toinen jatkoi siitä mihin toinen oli päässyt. Antin pääalueeksi tuli mikrokontrollerilla pyörivä ohjelma, sekä eboxille tehtävän graafisen käyttöliittymän toteuttaminen. Mikko puolestaan oli päävastuussa eboxilla pyörivästä muusta toiminnallisuudesta. Mutta kuten jo edellä mainittiin tämä jako ei ollut kovinkaan pitävä, vaan osallistuimme molemmat myös näiden alueiden tekemiseen. Mikrokontrollerin ja tietokoneen välisen rajapinnan toteuttamisessa kesti huomattavasti pidempään kuin olimme arvioineet. Sekä mikrokontrollerille, että eboxille tehty toteutus vei huomattavasti enemmän aikaa. Erityisesti eboxin puolella toimivan ohjelma ja siinä oleva delegaattien käyttö yhdistettynä säikeisiin aiheutti huomattavaa viivästymistä, sillä kummallakaan ei ollut aikaisempaa kokemusta delegaattien käytöstä. Käytimme molemmat yhteensä suunnilleen saman verran aikaa ja alla on esitetty taulukossa 1 kuvaus yhteensä käytetystä ajasta. Taulukko 1. Ajankäyttö. Alue Käytetty aika (h) Ryhmän tapaamiset ohjaajan kanssa 40 Projektin suunnittelu 10 Mikrokontrollereiden kertaus/opettelu (ledit, lcd, napit, pwm) 20

Peltobotti viestiprotokollan mukaisten viestien muodostaminen sekä parsiminen mikrokontrollerille 20 PID-säätimen toteuttaminen 8 Mikrokontrollerille tulevan ohjelman kokoaminen ja viimeistely 14 Väliraportin kirjoittaminen ja demon valmistelu 10 Robotin osien toimivuuden testaaminen 16 Simulinkin kertaus ja koodigeneroinnin opettelu 10 Delegaattien käytön opettelu ja toteutus 24 Viestien vastaanotto ja lähettäminen eboxille 4 Rangepakkien lukeminen 16 ebox ohjelman kasaaminen ja viimeistely 14 Graafisen käyttöliittymän tekeminen 30 Loppudemon valmistelut ja loppudemo 10 Loppuraportin kirjoittaminen ja projektin päättäminen 20 Summa 266 Kuten taulukosta näkyy, venyi projektiin käytetty aika huomattavasti alkuperäistä suuremmaksi. Jouduimme myös jättämään joitain osia kokonaan tekemättä, kuten simulink koodi-generoinnilla toteutettu demosovellus, mutta toisaalta se olikin alkuperäiseen suunnitelmaan merkitty varalle, jos aikaa olisi jäänyt enemmän. 4. Riskienhallinta Olimme varanneet projektin alkuun aikaa opetella ja palauttaa mieleen mikrokontrollerin ohjelmointia. Lisäksi olimme varautuneet siihen, että työn kuluessa vastaan tulee asioita, joihin paneutuminen vaatii enemmän aikaa. Yksi riski siis oli, että olemme aliarvioineet johonkin työsuoritteeseen kuluvan ajan tai emme ole huomioineet, jonkin vastaan tulevan uuden asian opetteluun menevää aikaa.

Varauduimme siihen, että projektin edetessä vastaan voi tulla myös laitteiston odottamaton bugi eli laite ei toimikaan toivotulla tavalle. Sen vuoksi on mahdollista joutua poikkeamaan alkuperäisestä suunnitelmastamme tai käyttämään enemmän aikaa johonkin työvaiheeseen, jotta saamme bugin korjattua. Otimme myös huomioon robotin osien mahdolisen viivästymisen. Otimme huomioon, että myös jotkin robotin osat voivat rikkoutua, jolloin joudumme käyttämään ylimääräistä aikaa osan korjaamiseen tai odottamaan uuden osan saapumista, koska joitakin osia voi joutua tilaamaan ulkomailta, jolloin toimitusajat voivat olla huomattavan pitkiä projektin kestoon nähden. Kuitenkin monia osia on valmiiksi varastossa koulun puolesta, joten pitkät tilaukset ovat epätodennäköisiä. Varauduimme myös mahdollisiin sairastumisiin. Esimerkiksi normaalin flunssan hoitoon voi helposti mennä useita päivä tai jopa viikko. Tästä sairastumisen takia muidenkin kurssien suorittamisesta voi kertyä tekemättömiä töitä, mikä voi vaikuttaa projektin tekemiseen käytettävään aikaan. Aikataulumme sisälsi kuitenkin liikkumavaraa, jotta toipuisimme pienistä vastoinkäymisistä eikä projektin kokonaisaikataulu karkaisi ulottumattomiin. Otimme huomioon, että on myös mahdollista, ettei jokin robotin suunniteltu osa tulee valmiiksi aikataulussa tai jotain suunniteltua ei osata toteuttaa, mikä voi viivästyttää projektiamme. 4.1 Toteutuneet ongelmat Kuten odottaa saattoi, kolmen periodin mittainen projekti ei toteutunut täysin ongelmitta. Suurimpana ongelmana projektin toteutuksessa oli ajankäytön aliarviointi. Olimme arvioineet joidenkin osien toteuttamiseen tarvittavan ajan huomattavasti alakanttiin. Käytännössä tämä riski realisoitui muutamaan kertaan projektin aikana ja johtui lähinnä ajasta, joka kului uusien asioiden omaksumiseen ja niiden oikeaoppiseen yhdistämiseen projektiin.pelkästään tämän vuoksi projektin aikataulussa ollutta liikkumavaraa ei loppupeleissä ollut lähes lainkaan. Myöskin robotin osien kanssa oli ongelmia. Esimerkiksi ledien levyssä oli unohtunut juotoksia, minkä takia virheen etsintään jouduttiin käyttämään huomattavan paljon aikaa. Jotkin osat tulivat myöskin valmiiksi vasta hyvin myöhäisessä vaiheessa, mutta tämä ei aiheuttanut koko projektin aikatauluun merkittävää vaikutusta. Olimme molemmat myös kevään aikana sairaana sekä kävimme viettämässä lyhyitä lomamatkoja. Tämän lisäksi muiden kurssien kuormitukset olivat paikoitellen hyvin suuria eikä aikaa tämän projektin tekemiselle meinannut aina riittää. Nämä syyt aiheuttivatkin aikataulutukseen ongelmia. Yllä mainituista syistä voidaankin todeta, että oikeastaan kaikki suunnitteluvaiheessa todetut riskit toteutuivat jollain tasolla projektin edetessä. Niiden yhteenlaskettu merkitys onkin ollut suurempi kuin olimme osanneet odottaa.

Loppujen lopuksi aikataulua koetteli eniten ehkä se, että projekti oli kokonaisuudessaan vaikeampi kuin olimme osanneet ajatella. Se sisälsi monia uusia asioita, jotka saattoivat olla yksittäisinäkin vaikeita, mutta yhteenlaitettuina niiden vaikeus korostui entisestään, minkä huomasimme erityisen hyvin yrittäessämme käyttää delegaatteja kerroksittaisessa rakenteessa säikeiden kanssa. 5. Lopputulos Pääsimme lopulta kaikkien vaikeuksien jälkeen minimitavoitteeseen. Saimme siis mikrokontrollerin ja onboard-tietokoneen rajapinnan toteutettua ja testattua toimivaksi. Lisäksi saimme tehtyä minimalistisen graafisen käyttöliittymän, jonka avulla robotin toiminnallisuutta voidaan testata. Työmme pohjalta voidaan jatkaa sisäpeltorobotin kehitystä. Sitä ei tällaisena voi suoraan vielä käyttää varsinaisen peltorobotin testausalustana, vaan sen ohjelmisto vaatii pientä hiomista erityisesti käyttöliittymän osalta. Tärkeimmät funktiot ja rajapinta ovat kuitenkin valmiita. Lisäksi ohjelmakoodia ei vielä ole juuri kommentoitu tai kokonaisuutta dokumentoitu, joten se pitäisi tehdä seuraavaksi tulevaisuudessa, jotta projektiimme pääsisi myöhemmin muutkin sisälle. Kokonaisuudessa projekti oli erittäin opettavainen kokemus. Opimme paljon uusia asioita ja nyt osaamme muun muassa toteuttaa tilakoneita ja tietoliikenneprotokollia ja koodata mikrokontrollerille. Lisäksi opimme hiukan simulink-koodigenerointia ja kuinka luodaan DLLkirjastoja tai käytetään delegaatteja sekä säikeitä. Erityisesti projekti opetti systemaattista testausta ja virheen eristämistä.