Tietojenkäsittelytieteen laitoksella on tutkimuskäyttöön tarkoitettu
robotti, joka on nimeltään Martti.
(Mobiili autonominen robotti).
Robotti on Nomadic Technologies Inc.:n
valmistamaa Super Scout II-mallia. (Uusimpien tietojen mukaan Nomadic
Techologies on lopettanut robottien valmistuksen).
Seuraavassa on kuvattu lyhyesti robotin laitteistoa, ohjelmistoja ja
peruskäyttöä.
Lyhyt opas Martin käyttöön
1 Robotin sensorit ja aktuaattorit
Robotissa on sensoreina pyöräodometria, törmäystunnistimet, ääniluotaimet ja
värikamera. Aktuaattoreina robotilla on kaksi erikseen kontrolloitavaa pyörää
sekä kameran kohdistamiseen tarkoitettu pan-tilt-yksikkö. Alla on lyhyesti
kuvattu eri sensorit ja aktuaattorit.
Ohjelmointirajapinta (Nclient.h) tarjoaa suoraan arviot robotin paikka- ja suuntakoordinaateista, sekä pyörien pyörimisnopeuksista. Koordinaatiston origo voidaan asettaa esim. ohjelman käynnistyessä.
Ohjelmointirajapinnan (Nclient.h) kautta saadaan kunkin sonarin antama etäisyysmittaus tuumina (väliltä 0-255). Arvo 255 tarkoittaa, ettei sonar havainnut objektia välillä 0-254. Huomaa yksikön ero odometria- ja liikekomentoihin, jotka annetaan tuuman kymmenesosina.
Kuvankaappauksessa käytetään Video4Linux-projektin videodev.h-rajapintaa.
Ohjelmointirajapinta (Nclient.h) mahdollistaa pyörien kiihtyvyyden ja nopeuden säätelyn, etenemisen halutulla nopeudella tai halutun suuruisen matkan tai käännöksen suorittamisen.
Pan-tilt-yksikköä ohjataan sarjaportin kautta, mutta yksinkertaisen ohjelmointirajapinnan (pantilt.h) avulla voi pan-tilt-yksikön asentoa ja nopeutta helposti ohjata. Pan-tilt-yksiköllä on oma mittayksikkönsä (kts. yksikön manuaali tai lyhyt selostus).
Akkuja ei koskaan saa päästää
kulumaan loppuun, vaan varoitusäänen (pitkä piippaus) kuuluessa on
robotti kytkettävä sähköverkkoon, ja akut on ladattava täyteen.
3 Tietokonelaitteisto ja käyttöjärjestelmä
Robotin sisällä on normaali tietokone, jossa on muistia 256 megatavua, n. 5 gigatavun kovalevy, verkkokortti, radiolinkki ja kuvankaappauskortti. Käyttöjärjestelmäksi koneeseen on asennettu laitoksen Red Hat Linux -versio (CSL2), joka on suurinpiirtein Red Hat 6.1:n kaltainen.
Pyöriä ja osaa sensoreista kontrolloi erillinen mikroprosessori. Mikroprosessorin kanssa kommunikoidaan sarjaportin kautta, mutta erillinen ohjelmointirajapinta (Nclient.h) peittää varsinaisen sarjaportin ohjelmoinnin. Sisäisen perus-PC-koneen ansiosta robotin ohjelmia voi kehittää lähes normaaliin tapaa.
Robottiin voidaan kytkeä näppäimistö ja näyttö, jolloin voidaan suoraan käyttää robotin sisällä olevaa PC-konetta. Yleensä ulkopuolisesta koneesta (pekko) otetut ssh-yhteydet ovat käytännöllisempi ja riittävä tapa.
Robotin laitteistoa kuvataan Nomad Scout User's Manual:ssa.
Käyttöjärjestelmä on kuitenkin eri kuin Nomadin asentama Linux, eikä
manuaalissa mainitusta read-only-mode
:sta tarvitse huolehtia.
4 Kommunikaatio
Robotissa on verkkokortti ja erillinen radiolinkki.
Robotti muodostaa
robottilabran (D427) pekko-koneen kanssa oman verkkonsa, joten
siihen saa yhteyden vain pekosta. Muista laitoksen koneista voi kuitenkin
ottaa yhteyden pekkoon, ja siitä edelleen marttiin.
Ajojen aikana robottiin voidaan olla yhdeydessä radiolinkin yli. Robotin ollessa paikallaan voidaan radiolinkki ohittaa, ja yhdistää robotti suoraan kaapelilla pekkoon. Tällöin suurien datamäärien, esimerkiksi kuvien, siirtäminen sujuu nopeammin.
Radionlinkin ohitus tapahtuu irroittamalla pekon radiolinkistä
(se pikkulaatikko, jossa on antenni) hubiin (se harmaa pitkähkö mokkula
pekon päällä) lähtevä johto, ja kytkemällä se robotin sisältä tulevaan
verkkokortin johtoon,
5 Peruskäyttö
Robottiin voidaan ottaa yhteys ssh
:lla.
Turvallisuussyistä Martti muodostaa oman verkkonsa robottilabran
pekko
-koneen kanssa, joten yhteyden voi ottaa vain
pekko
-koneesta.
Esim:Tiedostojen siirtoa ja ohjelmien kääntämistä voi tehdä etätyönä ottamalla yhteyden
ttkurppa@pekko:~$ ssh -l ttkurppa martti
pekkoon
, ja sieltä marttiin
.
Mitään robottiohjelmia ei saa ajaa, jollei itse ole läsnä
robottilabrassa.
Kannattaa myös huomata, ettei martissa
kannata käynnistää
mitään X-ohjelmia, sillä se on yleensä yhteydessä pekkoon
radiolinkin yli, jossa on rajoitettu tiedonsiirtokapasiteetti.
Kun robottissa ajetaan ohjelmia, jotka liikuttavat robottia, on robotti tietysti kytkettävä irti sähköverkosta ja muista johdoista. Robottia voi liikuttaa työntämällä, kun STOP/RUN-kytkin on STOP-asennossa. Kun robottia halutaan liikuttaa ohjelmallisesti on kytkin laitettava RUN-asentoon. Ohjelmia voi kuitenkin ajaa, vaikka kytkin olisi STOP-asennossa. Tällöin vain pyörien liikekomennot eivät välity pyörille asti.
Robotin hätäpysäytys
Omien ohjelmien toimiessa virheellisesti, voi ohjelman keskeyttää, ja
ajaa komentoriviltä komennon panic_stop,
joka sammuttaa robotin sonarit ja pysäyttää robotin.
6 Ohjelmointi
Robotin perusohjelmointi on kuvattu manuaaleissa Nomad Scout User's Manual ja Nomad Scout Language Reference Manual. Manuaaleissa on useita virheitä, joten kannattaa epäselvissä kohdissa kysyä apua.
Tarvittavat pakkaukset ja kirjastot löytyvät
/home/group/robotics/libs/
/usr/local/src/
Robotin ohjelmoinnissa tarvittavat tiedostot
Nclient.h
, Nclient.o
ja
Ndirect.o
löytyvät hakemistosta ROBOT_DIR/nomad
Kun ohjelmoit laitoksen verkossa, voit kääntää ohjelmia, ja ajaa niitä
simulaattorilla. Tällöin linkität ohjelmaasi
Nclient.o
-tiedoston. Kun haluat ajaa
ohjelmaasi oikealla robotilla, on ohjelmaan linkitettävä tiedosto
Ndirect.o
. Voit etänä siirtää lähdekooditiedostot Marttiin
(komento scp
on kätevä tässä, kts. man scp
),
ja kääntää ne siellä linkittäen Ndirect.o
-tiedoston
ohjelmaan Nclient.o
:n sijasta. Makefile helpottaa tässä,
itse käytän seuraavan kaltaista yksinkertaista mallia:
CC = g++
CPPFLAGS = -Wall -pedantic -g -I$(NOMAD_DIR)
LIBS = -lm
# Kommentoi toinen pois sen mukaan oletko martissa vai laitoksen verkossa
ROBOT_DIR=/home/group/robotics/libs
#ROBOT_DIR=/usr/local/src
# Kommentoi toinen pois sen mukaan, käytetäänkö direct- vai client-modea
MODE = $(NOMAD_DIR)/Nclient.o
#MODE = $(NOMAD_DIR)/Ndirect.o
NOMAD_DIR=$(ROBOT_DIR)/nomad
PANTILT_DIR=$(ROBOT_DIR/pantilt
OBJS = obj1.o obj2.o obj3.o
ohjelman_nimi: $(OBJS)
$(CC) $(CPPFLAGS) -o $@ $(OBJS) $(MODE) $(LIBS)
all: ohjelman_nimi
Sivistyneemmät Makefile:n tuntijat voivat viritellä hienompia tapoja.
Esimerkki 1. Käännetään robottia paikallaan 90 astetta vasemmalle: scout_pr(0, 900)
Esimerkki 2. Liikutetaan robottia 40 tuumaa (n. metri) eteenpäin: scout_pr(400,0)
Komennot scout_vm ja scout_pr taas ovat käytännön ohjelmointia helpottavia makroja, joilla robotin liikkumista voidaan ohjata etenemisen ja kääntymisen yhdistelmänä. Makrot on määritelty vm- ja pr-komentojen avulla, ja määritelmät voi katsoa tiedostosta ROBOT_DIR/nomad/Nclient.h.
Esimerkkinä komentojen vm ja pr käytöstä käy ympyrän kaaren ajava rutiini travel_arc.