7. joulukuuta 2010

Projekti: GPSBot osa 1

Keväällä 2009 aloin suunnittelemaan GPS-robottiautoa harrastusprojektiksi. Tavoitteena oli saada aikaiseksi auto, mikä osaa ajaa annettuja koordinaatteja kohti ja päätellä milloin se on perillä.


Rautakaupoille
Ensimmäisenä piti tietenkin tehdä hieman tutkimustyötä ja selvitää optimaalista rautapolitiikkaa. Vaikka koulu oli lupautunut maksamaan opiskelijoiden harrasteprojektien viulut, silti halusin pitää kulut mahdollisimman pieninä. Mikrokontrolleriperheen valinta ei ollut vaikeaa. Suurena avoimen lähdekoodin kannattajana olin lukenut Arduino-projektista ja se oli Linux-käyttäjälle itsestään selvä valinta. Arduino tarjoaa Linux-käyttäjille kokonaisen IDE:n ja sen voi ohjelmoida tavallisella USB-kaapelilla ostamatta erillistä ohjelmointilaitetta. Arduino IDE pohjimmiltaan käyttää avr-gcc-kääntäjää ja avrdude-ohjelmaa ohjelmien polttamiseksi mikro-ohjaimeen. Periaatteessa Arduino käyttää omaa C:n kaltaista ohjelmointikieltään. Se on kuitenkin aika kevyt rakennelma, joka on rakennettu avr-gcc:n päälle ja se koostuu lähinnä määritellyistä vakioista sekä esikääntäjästä, mikä muuttaa käyttäjän koodin C:ksi avr-gcc:tä varten. Avr-gcc tukee myös C++:aa, mikä mahdollistaa omien olioiden käyttämisen ulkoisten kirjastojen muodossa.

Arduino Duemilanove (kuva Louise - Paisley)
GPS-vastaanottimen valinta ei ollut yhtä  helppoa. Koululla oli varastossa jonkun valmistajan GPS-moduleita, mutta ne eivät osanneet keskustella suoraan Arduinon rauta-UART:in kanssa, joten hylkäsin ne pienen testailun jälkeen. Lopulta päädyin käyttämään geokätköilyyn hankkimaani Garminin eTrex Legend -vastaanotinta. Sen mukana tuli sarjaliikennekaapeli, minkä arvelin saavani keskustelemaan kohtuullisen helposti Arduinon kanssa.

Kanadalaisen vedättäjäfirman MaxSerial.
Erityisominaisuutena väärin päin nimetyt RX- ja TX-pinnit.
Arvelin leikkiväni Arduinolla enemmänkin vapaa-aikanani, joten päätin tilata sellaisen omaan laskuuni. Pitkällisten googlaustuntien jälkeen päädyin tilaamaan kanadalaisesta verkkokaupasta DE-9-liittimellä varsutetun Arduino MaxSerial -mallin. Kun lankku saapui postilaatikkoon, huomasin harmistuksekseni, että liitin oli samanmerkkinen kuin Garminin sarhaporttikaapelissa. Kaiken lisäksi lankun ohjelmointi sarjaväylän kautta lakkasi toimimasta noin kahden tunnin leikkimisen jälkeen. Kanadalainen nimeltä mainitsematon verkkokauppa ei ottanut vastuuta laitteen kätkytkuolemasta, vaan jätti ensimmäisen tiedusteluni jälkeen sujuvasti vastaamatta muihin viesteihini. Tätä juttua varten kävin katsastamassa kaupan sivut ja näyttäisi siltä, että huono asiakaspalvelu on kostautunut ja kauppa on onneksi lopettanut toimintansa viime vappuna. Sain kuitenkin puhallettua MaxSerialiin eloa käyttämällä koulusta lainattua ISP-ohjelmoijaa ja AVR Studiota Windows XP -virtuaalikoneessa, mutta sillä tavalla työskenteleminen osoittautui liian vaivalloiseksi. Tilasin pari viikkoa myöhemmin Kiinasta Duemilanoven, mikä on palvellut minua uskollisesti siitä lähtien.

Budget Robotics Rigel 4WD
Viimeisenä oli jäljellä robottiautoalustan valitseminen. Pian kävi selväksi, että autot ovat sen verran hintavia, että opiskelijabudjetilla sellaista ei saa hommattua. En myöskään halunnut tuhlata ylettömästi rakkaan opinahjoni varoja, koska koin sen tuovan ylimääräisiä onnistumispaineita jos projektiin on jouduttu sijoittamaan satoja euroja. Edullisia robottiautoalustoja on toki viljalti, mutta projektini luonteesta johtuen tarvitsin sellaisen, mikä selviäisi myös ulkona. Sisätiloissa kun tuo GPS-signaali on kovin heikko. Lopulta valinta osui kalifornialaisen Budget Roboticsin Rigel. Sen etuihin lukeutuivat huokean hinnan lisäksi houkkutelevalta kuulostava neljän servon vetosysteemi. Servot sopivat projektiini mainiosti, sillä ne eliminoivat erillisen moottorinohjauspiirin tarpeen ja tekisivät kokonaiskytkennästä yksinkertaisemman.

Myöhemmin selviävistä syistä jouduin hankkimaan myös kompassimodulin. Ainoa edullinen vaihtoehdo oli Hitachin HM55B, joka sekin oli niin hintava, että tilautin sen koulun piikkiin.

Tähän väliin laitetaan pari suttuista kännykkäkamerakuvaa robotin tämänhetkisestä kokoonpanosta.


Seuraavalla kerralla kerron robottiauton koodaamiseen liittyvistä haasteista.


Ei kommentteja:

Lähetä kommentti