S14 09 Sisäpeltorobotti AS 0.3200 Automaatio ja systeemitekniikan projektityöt Antti Kulpakko, Mikko Ikonen
1. Projektin tavoitteet Projektin tavoitteena on toteuttaa ohjelmisto sisäpeltorobottiin seuraavien vuosien peltorobottikilpailuryhmien opetuskäyttöön. Robotin olisi tarkoitus pystyä liikkumaan kapeaa käytävää pitkin hyödyntäen ultraääni ja infrapuna etäisyysantureita, sekä yaw gyroskooppia hyväksikäyttäen kääntymään 180 astetta uudelle käytävälle. Robotti antaa käyttäjille visuaalinen signaali LED valojen avulla, mitkä osoittavat robotin senhetkisen tilan. 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. Ohjelmisto toteutetaan mikrokontrollerille, AVR ATMEGA 128, sekä tietokoneelle, ebox 3350. Mikrokontrolleriin on toteutetaan RS232 sarjaporttirajapinta antureita varten, 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. Lisäksi työn toisessa osassa kerätään anturitietoa etäisyysantureilta ebox tietokoneelle käyttäen sarjaportin RS485 protokollaa ja gyroskoopilta puolestaan RS232 protokollalla. Tietokoneelle ohjelmoidaan ajuri mikrokontrollerille, sekä tehdään demo ohjelma, minkä avulla voidaan robotin eri ominaisuuksia hyödyntää sekä mikrokontrollerin kautta ohjata esimerkiksi moottorien nopeuksia. Robotista ei ole tällä hetkellä vielä kaikkia mekaniikka sekä elektroniikka suunnitteluja sekä toteutuksia tehty täysin valmiiksi, mutta työn ohjaaja Timo Oksanen on luvannut huolehtia näistä osioista. 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 piirilevyjen suunnittelua. Tällöinkin on mahdollista, että opintopistemäärää korotetaan.
Kuva 1. Robotin pohjan rakenne.
2. Työn rakenne Työn toteutuksen tarkoituksena on aloittaa mikrokontrollerin ohjelmoinnista. Molemmilla ryhmäläisillä on pientä kokemusta mikrokontrollerien ohjelmoimisesta lähinnä Automaatio 1 kurssilta, mutta alussa on varattu aikaa asioiden kertaamiselle. Nappien, LED valojen sekä LCD näytön ohjelmoimiseen ei pitäisi kulua kovinkaan paljon aikaa, mutta PWM moottorinohjauksen sekä RS232 rajapintojen toteuttaminen vaatii tässä enemmän aikaa. Antilla on jonkin verran kokemusta PWM toteutuksesta, mutta sekin hyvin rajallista ja RS232 sarjaportin rajapinnan toteuttamisesta kummallakaan ei vielä toistaiseksi ole mitään tietoa. Kun mikrokontrollerin toteutus on saatu hyvälle mallille ja sitä pystytään lähteä testaamaan, on tarkoituksena aloittaa robotin mukana olevalle tietokoneelle tulevan mikrokontrolleri ajurin toteuttaminen. Tästäkään kummallakaan meillä ei ole vielä tarkkaa tietoa, joten työmäärän arvioiminen on kohtalaisen hankalaa. Ajurin rajapinnan kautta olisi tarkoitus pystyä ohjaamaan mikrokontrollerin toimintaa tietokoneelta käsin. Työssä on tämän lisäksi tarkoitus toteuttaa demo ohjelma, jonka avulla robotin eri toiminnot ovat käytettävissä. Tämän harjoitustyön pääpaino on kuitenkin mikrokontrollerin sekä mikrokontrollerin ja tietokoneen välisen rajapinnan toteuttamisessa huolellisesti, ja vasta niiden jälkeen tehdä demo ohjelma, mikäli aikaa jää riittävästi. Demo ohjelma kuitenkin tarvitaan, jos laitteistoa halutaan testata. Kuva 2. Robotin eri osien välinen kommunikaatio.
3. Ajanhallinta ja vastuun jako Alla esitetyssä taulukossa 1 on työn toteutuksen alustava aikataulu ja arvio kunkin osion kestosta. Koska projektissamme on vain kaksi henkilöä eikä kumpikaan ole erityisemmin erikoistunut aihepiiriin, toteutamme projektia pääsääntöisesti yhdessä. Molemmilla lähtökohtana projektin tekemiselle onkin uusien hyödyllisten asioiden oppiminen ja haluamme siksi kummatkin osallistua kaikkien osien tekemiseen. Projektin edetessä on mahdollista, että mietimme vastuunjakoa uudestaan, jos sille tulee tarvetta. Alustavien aika arvioiden perusteella eri osiin olisi 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 Huomioitavaa kuitenkin on, että nämä ajat ovat hyvin karkeita arvioita ja jotkin osiot voivat viedä huomattavasti vähemmän aikaa ja toiset huomattavasti enemmän. Tavoitteena kuitenkin olisi, että työmäärä pysyy 3 op suuruisena.
Taulukko 1. Työn aikataulu ja rakenne. Tehtävä\Viikko 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Suunnitelma Mikrokontrolleri ohjelmoinnin kertaaminen RS232 sarjaporttirajapinnan toteutus Enkooderi PWM nopeusohjaus moottoreille LCD näytön ohjelmointi LED valojen ohjelmointi Summerin ohjelmointi Väliraportin tekeminen Mikrokontrollerin ja tietokoneen rajapinnan ohjelmointi Ultraääni ja infrapuna etäisyysantureiden lukeminen Simulink koodigeneroinnin opettelu Demo ohjelma Laitteiston systemaattinen testaus Loppudemo Loppuraportin kirjoittaminen
4. Riskienhallinta Olemme varanneet projektin alkuun aikaa opetella ja palauttaa mieleen mikrokontrollerin ohjelmointia. Lisäksi olemme varautuneet siihen, että työn kuluessa vastaan tulee asioita, joihin paneutuminen vaatii enemmän aikaa. Yksi riski siis on, että olemme aliarvioineet johonkin työsuoritteeseen kuluvan ajan tai emme ole huomioineet, jonkin vastaan tulevan uuden asian opetteluun menevää aikaa. Projektin edetessä vastaan voi tulla myös laitteiston odottamaton bugi eli laite ei toimikaan toivotulla tavalle. Sen vuoksi on mahdollista, että joudumme poikkeamaan alkuperäisestä suunnitelmastamme tai käyttämään enemmän aikaa johonkin työvaiheeseen, jotta saamme bugin korjattua. Viivästymisä saattaa tulla myös robotin rakenteen valmistuksessa, mikäli ohjaaja ei ehdi saada tarvittavia osia ajoissa valmiiksi. 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ä. Sairastuminen on myös mahdollista. 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. Aikataulussamme on kuitenkin liikkumavaraa, joten pienten yllätysten ei pitäisi viivästyttää projektia mahdottomasti. On myös mahdollista, ettei jokin robotin suunniteltu osa tulee valmiiksi aikataulussa tai jotain suunniteltua ei osata toteuttaa, mikä voi viivästyttää projektiamme.