Versio 21. huhtikuuta 2011 kello 01.16 (näytä lähdekoodi)Mokis (keskustelu | muokkaukset)← Vanhempi muutos
Nykyinen versio 20. marraskuuta 2012 kello 07.52 (näytä lähdekoodi)87.98.131.201 (keskustelu) (jxAAvUnoPYujwRo) (Näytettyjen versioiden välissä on 11 versiota, jotka ovat 3 eri käyttäjän tekemiä.)Rivi 1:
−'''R11''' on sekalaiseen harrasteluun rakennettu robotti, joka osaa navigoida ja kartoittaa. Kiinnitettynä on tällä hetkellä ainoastaan navigointiin käytettävä web-kamera, mutta lähiaikoina robottiin on tarkoitus lisätä myös Kinect ja ultraäänianturi. Aiemmin robottissa oli myös viivanseurausanturi ja sillä osallistuttiin robosodan viivanseurauskisoihin. Sijoitus kaikissa kilpailuissa oli kolmas.+
−Runko on rakennettu pääosin 4mm polyeteenistä ja pyörät sorvattiin polyaselaalista. Kaksi vetävää pyörää on kytketty askelmoottoreihin ja kolmas, vapaasti pyörivä ja kääntyvä pyörä seuraa takana.+
−Kumpaakin askelmoottoria ohjataan omalla moottoriohjaimellaan, joissa on myös säädettävä virranrajoitustoiminto. Käytännössä toteutus on L297 + L298-piirien referenssikytkentä kasattuna itsetehdylle piirilevylle. Moottorien ohjaimet ovat erillisiä yksiköitä ja ne ovat yhdistetty lattakaapelilla mikroprosessorilevylle.+
−Mikroprosessorilevy paitsi ohjaa askelmoottoreita, on myös yhteydessä ylemmällä tasolla olevaan fit-pc 2:een RS-232-väylällä. Vapaita I/O-pinnejä on ~20. Mikroprosessorissa suoritettavana ohjelman pääsilmukka on varattu sekalaisille toiminnoille, kuten sarjaporttin anturien tiedon lukuun/kirjoitukseen. Askelmoottorien ohjaukset ovat omissa kellokeskeytyksissään. Moottorien pyörimisnopeutta muutetaan keskeytysnopeutta muuttamalla (aina keskeytyksen tultua muutetaan moottorin ohjaussignaalin tilaa). Sarjaporttiin on määritelty kevytrakenteinen prototokolla, jonka päällä varsinainen tieto siirretään. Jokaisen viestin alkuun on määritelty aloitusmerkki., jonka jälkeen tulee moottorinohjaukseen tarvittavat 5 tavua dataa, loput paketin sisällöstä voidaan määritellä tarpeen mukaan. Paketti voi olla periaatteessa rajoittamattoman pituinen, kunhan sekä lähetys- että vastaanottopää käyttävät samaa paketin rakennetta. Minkäänlaisia tarkistuksia virheiden varalle ei siis ole.+
−PC:ssä on tällä hetkellä Windows XP, joka on valikoitunut käyttöön lähinnä paremman hardistuen (logitechin webbikamera, Fit-pc 2:n näytönohjain, Kinectin Python wrapperi) takia. PC:ssä pyörivät prosessit on koodattu Pythonilla, ja prosessien keskinäiseen kommunikointiin käytetään Python Remote Objects (Pyro)-kirjastoa. Kirjaston ansiosta varsinaisissa prosesseissa ei tarvitse kiinnittää suuresti huomiota prosessien välisen kommunikoinnin turvaamiseen ja datan eheyden tarkistamiseen.+
−Tällä hetkellä Robotin PC:llä (Fit-pc 2) pyörii kolme python-prosessia: Nimiserveri, Dataserveri ja varsinainen ohjausprosessi. Nimiserveriä tarvitaan prosessien yhdistämiseen, kun ne käynnistyvät. Dataserveri lukee tietokoneeseen kiinnitettyjä anturia (Kinectiä ja webkameraa), parsii niiden datan ja tarjoaa sitä tarvittaessa muille prosesseille. Lisäksi dataserveri ylläpitää tietoa mm. robotin tilasta, sijainnista ja manuaali-/teleoperointitilassa moottorien ohjenopeuksista. Ohjausprosessi on sarjaportin kautta yhteydessä alemmalle tasolle, ja lisäksi se tekee tarvittavat päätökset moottorien nopeuksista. Autonomisessa tilassa se hakee taskeja dataserveriltä ja toimii niiden mukaan (toteutus vaiheessa). Manuaali- ja teleoperointitilassa ohjausprosessi ainastaan reitittää moottorien pyydetyt pyörimisnopeuksista dataserveriltä mikroprosessorille ja vastaavasti toteutuneen askelluksen toiseen suuntaan.+
−Varsinainen ohjaus tehdään toisella Acer:N kannettavalla/tabletilla (1825PT), joka on WLAN:lla yhteydessä robottiin. GUI on itse tehty käyttäen Pythonia PyGamea, kommunikointiin robotin kanssa käytetään edelleen pyro:a, jonka välityksellä clientillä annetut komennot siirretään dataserverille.+
−Kaikessa yksinkertaisuudessaan robotissa oleva kamera kuvaa suoraan ylöspäin ja koittaa tunnistaa kattoon kiinnitettäviä merkkejä (visual servoing). Merkit ovat laadittu niin että niiden tunnistaminen kuvasta on mahdollisimman helppoa ja luotettavaa.+
−Merkkien paikka on sidottu tilan koordinaatteihin, ja näin robotin koordinaatit voidaan laskea, jos tiedetään oma siirtymä suhteessa johonkin merkkiin. Jos oletetaan että kalibroinnit on suoritettu oikein ja tiedetään kameran katselukulmat, oma etäisyys merkistä (r) laskettua trikonomertialla kun tiedetään merkin etäisyys pikseleinä kuvan keskipisteestä ja huonekorkeus. Edellä mainittu laskutoimitus antaa vasta etäisyyden merkistä, toisin sanottuna robotti voi sijaita r-säteiden ympyrän kaarella missä pisteessä tahansa ja lisäksi sen suuntakulma ei ole tunnettu.+
−Kartoitus, versio 1.0:+
−Kartoituksen ensimmäisessä versiossa käytettiin vain yhtä pikseliriviä syvyyskuvasta, ja sitäkin vajaalla resoluutiolla. Tulokset olivat kuitenkin suhteellisen hyviä harrastusprojektiksi (ks. video: [[http://www.youtube.com/watch?v=gI3mBeSZAsg]]). Tulevaisuudessa syvyyskuvaa on tarkoitus hyödyntää monipuolisemmin paitsi kartoituksessa, myös paikannuksessa.+