Arduino-pohjainen GPS-autorobotti.

Minä voisin korkata tämän keskustelualueen kertomalla omasta robottiautoprojektistani. Vähän reilu vuosi sitten aloin visioimaan omaa GPS-suunnistavaa robottiautoa. Talvella ei autoa pysty paljon pihalla testaamaan, joten hakkerointi on keskittynyt enemmän kesäaikaan. Projektia tehdessä on tullut opittua monia asioita, etenkin kun ennen aloittamista kokemukseni mikro-ohaimista oli yhden koulussa suoritetun sulautettujen järjestelmien kurssin laajuinen.

Auton aivoiksi valikoitui Arduino Duemilanove, jossa on siis Atmega 328 kontrolleri. Paikannuspalvelun tarjoaa minun uskollinen Garminin eTrex Legend, joka on kytketty suoraan Arduinon rauta-USART -porttiin. Kompassina on Parallaxin valmistama Hitachin HM55B-lastuun pohjaava moduli. Auton virkaa ajaa Budget Robotics Rigel, joka ei taida enää olla myynnissä. Kyseessä on pienehkö kaksitasoinen robottiautoalusta, jossa on voimanlähteenä neljä servoa.

Pistetään pari pakollista suttuista kännykkäkamerakuvaa tähän väliin.
http://picasaweb.google.fi/lh/photo/zkyfTCM6sfPaIUj3t8x8OD8_JSZUypvpklXx_aC2X_0?feat=directlink
http://picasaweb.google.fi/lh/photo/rruxVQgVgKXLOSkgy9pScD8_JSZUypvpklXx_aC2X_0?feat=directlink

Softapuolesta saa varmaan helpoimmin kokonaiskuvan vilkaisemalla tekemääni luokkakaaviota.
http://free-beer.org:8080/~janne/pics/GPSBot_v1.1.jpg

Ja sitten lopuksi vielä linkki videoon robotin ensimmäisestä onnistuneesta koeajosta.
http://www.youtube.com/watch?v=wIaQXzFpR-c

Videon kuvaamisen jälkeen olen saanut nopeutettua autoa sen verran, että nykiminen on kitketty pois. Lisäksi olen onnistuneesti testannut usean pisteen reitin kulkemista. Kommentteja, kysymyksiä ja ehdotuksia otetaan vastaan. Keskustelu alkakoon.

Erittäin mielenkiintoinen projekti ja hyvä demonstraatiovideo.

Käytätkö jonkinlaista filtteröintiä paikkatiedon analysoinnista, vai antaako eTrex Legend hyvinkin tarkkaa koordinaattidataa? Kuinka nopealla taajuudella saat luettua USART:n kautta koordinaatit? Pitikö kikkailla, että GPS-laitteessa pääsi käsiksi UART-pinneihin? Millä jännitteellä TTL-UART toimii Garminin laitteessa (5V kenties?)? Oletko tehnyt esimerkiksi waypointtien saavuttamisen niin, että ensimmäisen kerran kun tiettyyn koordinaattipisteeseen päästään, lähtee laite välittömästi suunnistamaan seuraavaa kohti?

Entä oletko halukas paljastamaan koodipuolta kiinnostuneille, vai onko kyseessä salaprojekti? :wink:

Tajusin vasta kirjoitettuani viestin, että se olisi varmaan pitänyt postittaa toiselle alueelle, missä projekteja esitellään.

Paikkatiedossa en käytä mitään omaa suodatusta, vaan luotan sokeasti Garminin antamaan dataan. Koska minulla ei ole läppäriä käytössä, niin en ole voinut tehdä oiekeastaan minkäänlaista analyysia paikkadatan tarkkuudesta. Oletan, että Garmin tekee sisäisesti suodatusta. Tuossa GPS:ssä oli useita vaihtoehtoja sille, missä muodossa se sylkee dataa ulos. Valitsin Garminin oman protokollan NMEA:n sijaan, koska se sisälsi yhdessä lausessa kaiken tarvitsemani tiedon. NMEA:n kanssa sieltä tulisi ainakin viittä erilaista lausetta, jotka sisältävät redundanttia dataa ja joista vain kahdella on merkitystä tämän projektin kannalta. Garminin oma protokolla tuuppaa paikkatiedon porttiin sekunnin välein.

Laite tuli sarjaporttikaapelin kanssa, eli sikäli ei ollut ongelmia. Piti vain tehdä liitin mistä saan oikeat pinnit kiinni Arduinoon. Jännite on 5V tietääkseni.

Kutakuinkin noin. Tietenkin siinä otetaan huomioon GPS:n virhe, kun yritetään päätellä ollaanko reittipiste saavutettu. Ensimmäisen kerran kun ollaan päästy tietyn matkan päähän pisteestä ja GPS:n tarkkuus on kohtuullinen, niin reitistä otetaan seuraava waypoint.

Olen open sourcen vahva kannattaja, joten kuka tahansa saa koodini käyttöönsä pyytämällä. Koodin luettavuudesta en valitettavasti voi mennä lupaamaan mitään. :stuck_out_tongue:

Siirsin ketjun projektialueelle :slight_smile:

Hyvä homma, että jaat koodinkin, mikäli jotakuta kiinnostaa. Oletko hyödyntänyt Arduino-kirjastojen valmiita kikkareita, vai koodaillut suoraan AVR:lle?

Käytin Arduinon kikkareita laiskana miehenä. :wink:

Mit√§ kaikkia ominaisuuksia olet aikonut robottiin toteuttaa? Onko luvassa esimerkiksi esteen v√§ist√§minen? Tuo olisi minusta ainakin melko mielenkiintoinen probleema ratkaistavaksi, ja yksinkertainen ratkaisu yksinkertaisella anturoinnilla (eli ‚Äútoimii muttei ole paras mahdollinen‚ÄĚ) ei varmaankaan olisi pohjattoman vaikea.

Olen miettinyt väitöalgoritmien toteuttamista. Ajattelin tehdä ne etäisyysantureilla, joita minulla on tuossa pari kappaletta odottamassa. Lisäksi ole mitettinyt, että olisi kiva voida esim. Android-kännykästä ohjata robotin toimintaa bluetoothin yli.

Tullaan tännekin trollaamaan. Oksasen ideasta innostuneena samantyyppistä rakennelmaa työstämässä ollaan siis, duemilanove bluetooth-enabloituna ohjaamassa servoja, homman aivoina samsung sgh-i600 windows mobile -luuri joka antaa ohjausdatan suoraan arduinolle bluetoothina ja hoitaa itse älyn jolloin aivoista löytyy suoraan gps, vähän prosessointivääntöä, pari kameraa, 3G, wlan ja mahdollisuus tehdä itse softa hieman miellyttävämmin C#.netillä.

elventhor.kuvat.fi/kuvat/mobiili … lsinki.jpg

Hieno projekti! Pistähän rakennelmasta oma projektiketju pystyyn, niin pysyy hommat järjestyksessä? Ja tietysti kun laitos on toimintavalmis, niin rakennuskertomus lukija-artikkeleihin :wink:

Tänään sain lopulta päähäni julkaista robottiauton koodin. Täytyy sanoa, että aamulla kun päätin tehdä sen, niin en arvannut sen olevan näin iso urakka. :stuck_out_tongue: Tämä oli kuitenkin hyvä tekosyy opetella viimeinkin käyttämään Doxygenia, joten opin paljon myös samalla. Koodi pitäisi olla nyt kommentoitu melko kattavasti.

Koodi on kaikkien pällisteltävissä osoitteessa:
gitorious.org/gpsbot

Olen myös kirjoittamassa blogiini muutaman artikkelin sarjaa tästä projekista. Voin linkkailla tänne niitä sitä mukaa kun saan niitä rustailtua.

Ensimmäinen osa robottiautoprojektin tarinasta julkaistu osoitteessa:
oksagon.blogspot.com/2010/12/pro … osa-1.html

^ Hyvän oloista turinointia! Tuolla oli maininnu tuosta budget robotic:sin alustasta, muistatko mitä se kustansi? En jostain syystä löydä tuolta niiden verkkokaupasta alustalle hintaa ollenkaan.

Tarkoitus oli rakentaa poikien rikkomista leikkitraktoreiden renkaista, servoista ja kovalevyn peltilevystä vastaava, mutta projekti on ollut tuossa projekti kaapissa jo useamman kuukauden… Jos amerikan serkut ei paljoa tuosta pyydä niin saatan ulkoistaa tuon homman :wink:

Se oli muistaakseni noin 80 USD. Tosin tuote on sittemmin ilmeisesti poistunut heidän valikoimasta. Seuraava osa ilmestyy huomenna, joten pysykää kuulolla. :wink:

Toinen osa robotin tarinasta julkaistu alla olevassa osoitteessa. Tällä kertaa käsitellään softan kirjoittamisessa esiin tulleita haasteita. Meinasin vielä kirjoittaa kolmannen osan, missä pohdin projektin tulevaisuutta.

oksagon.blogspot.com/2010/12/pro … osa-2.html

Linkki ei toimi. ‚ÄúValitettavasti etsim√§√§si blogisivua Oksagon ei ole olemassa.‚ÄĚ

Toimisikohan tämä:
oksagon.blogspot.com/

EDIT: linkki menee ykkös-osaan - ei siis sinne minne pitäisi…

Joo, mulla kävi tuossa pieni moka. Kirjoitukseen oli livahtanut pari kirjoitusvirhettä ja niiden korjaaminen otti tekstin pois näkyviltä kunnes ymmärsin julkaista sen uudestaan. Se on ollut puoli neljästä eteenpäin toivottavasti taas luettavissa.

Kolmas ja toistaiseksi viimeinen osa julkaistu. Lisää juttuja luvassa sitä mukaa kun projekti etenee.

oksagon.blogspot.com/2010/12/pro … osa-3.html

Ihan mielenkiintoinen projekti!:slight_smile: Minulle vain kanssa tuollainen koulu joka antaisi harrastusvimpaimet tilata koulun piikkin. Meillä saisi korkeintaan nyrkkiä ehdotuksestakin :cry:

mietin tuossa itselleni vastaavaa ja mitä kilkkeitä pitäisi hommata,tuohonhan soveltuisi hyvin.
arduino uno+DC motor shield,moottorien ohjaukseen harjattomat DC-moottorit encoderilla niin saisi local paikkatietoa,ja xbee moduulilla käsiohjauksen,gps shieldillä paikannuksen ja kun ruohonleikkuri sovelluksen tekee niin ei tarvitse nurmikon reunalle johtoja vetää raja antureiksi,way pointit opettaa ensin että ensin tuonne sitten jatkat pisteeseen 2 jne,niin ei leikkaa samaa kohtaa 2 x, mikähän noissa gps moduleissa mahtaa olla tarkkuus niin sisä siivous ja kaljan haku robokin voisi olla mahdollista.
siihen sitten lisäpalikkana kun alku ensin onnistuu niin,ultraääni shield,törmäys tunnistukseen,bumper switch lopulliseen pysäytykseen,isommat moottorit ohjaukseen,haastetta olisi aina lisää ja valmista tulisi moduuli kerrallaan,tosin mietityttää onnistuuko ja miten keskustelee useita shieldejä samaan aikaan kiinni ard,unossa ja pinnejähän on rajoitetusti miten niiden ohjaus jos useita eri palikoita laudassa,käyttää ehkä useakin samoja pinnejä.hmm,mielenkiintoista knuhan varat antaisi periksi hommata nuo shieldit niin pääsisi kokeilemaan noita käytännössä.