• Ei tuloksia

Pioneer-robotin ohjaus JADE-agentilla

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Pioneer-robotin ohjaus JADE-agentilla"

Copied!
53
0
0

Kokoteksti

(1)

PIONEER-ROBOTIN OHJAUS JADE-AGENTILLA

Antti Kukkasjärvi Pro gradu -tutkielma Tietojenkäsittelytiede Itä-Suomen yliopisto

Tietojenkäsittelytieteen laitos Tammikuu 2013

(2)

ITÄ-SUOMEN YLIOPISTO, luonnontieteiden ja metsätieteiden tiedekunta Tietojenkäsittelytieteen koulutusohjelma

KUKKASJÄRVI, A.: Pioneer-robotin ohjaus JADE-agentilla Pro gradu -tutkielma, 53 s.

Pro gradu -tutkielman ohjaajat: TkT Pekka Toivanen ja FT, DI Keijo Haataja Tammikuu 2013

Avainsanat: FIPA, JADE, ohjelmistoagentti, Pioneer-robotti

JADE-agentit (Jade Agent Development Framework) ovat pieniä ohjelmia, jotka toimi- vat itsenäisesti ja viestittävät keskenään. Tässä tutkielmassa perehdytään Pioneer- robotin ohjaamiseen niiden avulla ja käydään läpi ohjelmistoagenttien arkkitehtuuria sekä eri protokollia.

Tutkielmassa perehdytään robotiikkaan yleisesti ja myös sen historiaan, nykypäivään sekä tulevaisuuteen. Lisäksi käydään läpi erilaisia robotteja ja niiden sovelluskohteita.

Tarkemmin perehdytään Pioneer P3-DX -robotin ominaisuuksiin ja käyttökohteisiin sekä testataan kyseisen robotin toimintaa.

Tärkeimpänä osa-alueena tässä tutkielmassa on kuitenkin itse robotin ohjaus hyödyntä- en JADE-ohjelmistoagenttia ja graafista ohjelmistoagenttien hallintatyökalua. Tutkiel- massa esitellään malliesimerkkejä JADE-ohjelmistoagentista ja perehdytään tarkemmin ohjelmistoagenttien väliseen viestittelyyn sekä viestien hyödyntämiseen robotin liikku- misessa. Graafisesta JADE-ohjelmistoagenttien hallintatyökalusta käydään läpi keskei- set ominaisuudet kuvien avulla.

(3)

Esipuhe

Tämä tutkielma on tehty Itä-Suomen yliopiston tietojenkäsittelytieteen laitokselle ke- väällä 2013. Tutkielman ohjaajana toimivat Pekka Toivanen ja Keijo Haataja, joille haluan osoittaa erityiskiitoksen.

Kuopiossa 9.1.2013

____________________________

Antti Kukkasjärvi

(4)

Käsitteet ja lyhenteet

ACL Agent Communication Language AMS Agent Management System

API Application Programming Interface

ARIA Advanced Robot Interface for Applications ASIMO Advanced Step in Innovative Mobility FIPA Foundation for Intelligent Physical Agents GPS Global Positioning System

IEEE Institute of Electrical and Electronics Engineers JADE Jade Agent Development Framework

XML Extensible Markup Language UML Unified Modelling Language

(5)

Sisällysluettelo

1 JOHDANTO ... 6

2 JADE ... 7

2.1 FIPA... 7

2.2 JADE-arkkitehtuuri ... 13

2.3 JADE:n käyttöliittymä ... 17

2.4 JADE-agenttien sisäinen rakenne ... 20

2.5 Yhteenveto ... 21

3 PIONEER-ROBOTTI ... 22

3.1 Robotiikka ... 22

3.2 Liikkuminen ja kulkureitin määrittely ... 26

3.3 Pioneer-robotti... 27

3.4 Yhteenveto ... 29

4 TESTIJÄRJESTELYT JA TULOKSET ... 31

4.1 Ongelman kuvaus ... 31

4.2 Pioneer-agentin ohjelmointi ... 32

4.3 Pioneer-robotin testiajot... 38

4.3.1 Pioneer-robotin käynnistäminen ja alkuvalmistelut ... 39

4.3.2 Heading-kulman testaus ... 41

4.3.3 X- ja Y-koordinaattien lähettämisen testaus ... 42

4.3.4 Robotin sijaintikyselyn testaus ... 45

4.4 Yhteenveto ... 47

5 POHDINTA ... 48

LÄHTEET ... 51

(6)

1 JOHDANTO

Robotit ovat jo tärkeä osa nykyaikaa. Niiden tärkeimpänä tehtävänä on helpottaa ihmi- sen toimintaa. Ihmisen halu korvata hankalat ja työläät askareet robottien tehtäväksi on aiheuttanut robottien nopean kehittymisen. Robotit pystyvätkin tekemään monia asioita huomattavasti tarkemmin ja nopeammin kuin ihminen. Joitain asioita ei ole edes mah- dollista toteuttaa ilman robottien apua. Hyvänä esimerkkinä on teknologiateollisuus, joka on nykyään niin pikkutarkkaa työtä, ettei siihen ihminen yksin pysty.

Tämän tutkielman sisältö koostuu useasta eri osa-alueesta. Tarkoituksena on perehtyä robotiikkaan yleisesti, muun muassa sen historiaan, laitteisiin ja tulevaisuuteen. Lisäksi syvennetään tietämystä ohjelmistoesimerkillä, jolla ohjataan Pioneer P3-DX -robottia.

Kyseinen robotti on pyörillä liikkuva ja suunniteltu opetus- sekä tutkimuskäyttöön. Sen tärkein tehtävä on liikkuminen ja siihen on mahdollista kehittää erilaisia kohdetunnisti- mia hyödyntäviä sovelluksia. Tässä tutkielmassa on perehdytty myös hieman robottien kohteiden tunnistamiseen ja liikeratojen määrittämiseen.

Pioneer P3-DX -robotin ohjaamiseen käytetään tässä tutkielmassa JADE- ohjelmistoagenttia (Jade Agent Development Framework). Se on täysin itsenäinen oh- jelma, jolle voi lähettää viestejä toisella ohjelmistoagentilla. Kaikessa yksinkertaisuu- dessaan tietokoneelta lähetetään Pioneer-ohjelmistoagentille viestejä ja ohjelmistoagent- tien tehtävänä on kommunikoida Pioneer-robotin oman ARIA-ohjelmistorajapinnan (Advanced Robot Interface for Applications) kanssa.

Tutkielmassa perehdytään myös tarkemmin JADE-ohjelmistoagenttiarkkitehtuuriin ja sen eri protokolliin (luku 2). Ohjelmistoagentteja ohjataan niiden omalla graafisella JADE-kehyksellä, jonka toimintaan perehdytään selvin esimerkein. Samaa kehystä käy- tetään myös Pioneer-robottia ohjaavan Pioneer-ohjelmistoagentin ohjauksessa (luku 3).

Kehyksestä saa helposti tietoa ohjelmistoagenttien välisestä viestiliikenteestä ja viestien sisällöistä.

Pioneer-robottia testataan mahdollisimman monipuolisesti sekä sitä ohjaavan ohjelmis- toagenttiteknologian että sen liikkumisen osalta (luku 4). Testien pohjalta havainnoi- daan robotin liikkeitä koordinaatiston avulla. Lopuksi luodaan yhteenveto tutkielman sisällöstä ja pohditaan saavutettuja tuloksia (luku 5).

(7)

7

2 JADE

JADE on täysin Java-kielellä toteutettu ohjelmistoagenttien kehitysympäristö. Agenttien standardoinnista vastaa FIPA-standardointijärjestö (Foundation for Intelligent Physical Agents). Agentit ovat ohjelmiston paloja, jotka kommunikoivat keskenään joko itsenäi- sesti tai ohjelmiston käyttäjän komentamana.

Luvussa 2.1 perehdytään tarkemmin FIPA:an, joka on ohjelmistoagenttien standardoin- tiin perehtynyt organisaatio. Luvussa kerrotaan myös tarkemmin, mitä ohjelmistoagen- tilla tarkoitetaan ja minkälainen on sen elinkaari. Lisäksi luvussa käydään läpi kahta FIPA:n määrittelemää protokollaa. Ohjelmistoagenttien arkkitehtuuria ja luokkaraken- netta käsitellään luvussa 2.2. Luvussa 2.3. kerrotaan JADE-kehitysympäristön eri agen- teista ja siitä, miten agentteja hallitaan graafisessa JADE-ikkunassa. Luku 2.4 perehtyy agentin sisäisen rakenteen selvittämiseen ja luku 2.5 sisältää yhteenvedon luvun 2 alilu- vuista.

2.1 FIPA

FIPA on IEEE-standardointijärjestöön kuuluva organisaatio, joka aloitti toimintansa vuonna 1996. Sen tehtävänä on tuottaa agenttipohjaiseen teknologiaan perustuvia stan- dardeja. FIPA:lla on ollut tärkeä rooli erilaisten agenttijärjestelmien kehityksessä ja se hyväksyttiin IEEE-standardien joukkoon vuonna 2005. [FIP13]

FIPA:n perusajatuksen viisi päämäärää ovat: [BCG07]

1. Vanhojen ja uusien ongelmien ratkaiseminen agenttiteknologian avulla.

2. Jotkin agenttiteknologiat ovat saavuttaneet merkittävän kypsyystason.

3. Standardointi mahdollistaa agenttiteknologioiden hyödyllisen käytön.

4. Positiivisia tuloksia on saatu geneeristen teknologioiden standardoinnilla.

5. Kielen ja infrastruktuurin standardointi mahdollistaa avoimen yhteistoiminnan ja agenttien sisäisillä mekanismeilla ei ole tärkeää merkitystä.

(8)

Standardeja on vuosien saatossa syntynyt useita ja niistä uusimmat perustuvat FIPA 2000 -standardiryhmään. Joanna Niininen [Nii09] selvitti omassa gradussaan standardi- en suhteita, jotka selviävät hyvin kuvasta 1. Suurin osa standardeista on kehitetty agent- tien väliseen kommunikointiin.

Kuva 1. FIPA 2000 -spesifikaatiot. [Nii09]

Ohjelmistoagentti on pala ohjelmistoa, joka kommunikoi joko toisten agenttien tai oh- jelmiston käyttäjän kanssa. Agentin toiminta on itsenäistä, koska se pystyy toimimaan ilman suoraa komentoa ihmisiltä tai muilta ohjelmiston agenteilta ja se osaa myös kont- rolloida omia toimintojaan sekä tilaansa. Agentti käyttäytyy kuitenkin myös sosiaalises- ti, koska se kykenee toimimaan tietyssä järjestyksessä muiden agenttien tai ihmisten kanssa saavuttaakseen päämääränsä. Lisäksi se havainnoi omaa ympäristöään ja vastaa ajoittaisilla muutoksilla, joten se on myös reagoiva. Ohjelmistoagentti kykenee enna- koimaan ja sen onkin mahdollista saavuttaa päämäärätietoinen käytös tekemällä aloittei- ta. Agentit voivat olla myös siirrettäviä eli ne voivat toimia erilaisissa verkoissa.

[BCG07]

(9)

9

FIPA:n agentit esitetään kuvan 2 kaaviossa. Ohjelma kommunikoi agentin kanssa, joka kuuluu agenttialustaan (Agent Platform). Agentti välittää viestejä toisille agenttialustoil- le viestien kuljetuspalvelua (Message Transport System) hyödyntäen. Agenttialustan hallintajärjestelmä (Agent Management System) hallinnoi agenttialustaa. Se päästää agenttialustalle vain ne viestit, joilla on pääsyoikeus sinne. Jokaisen agentin, joka halu- aa kommunikoida agenttialustan kanssa, pitää rekisteröityä agenttialustan hallintajärjes- telmään. Agenttialusta voi sisältää lisäksi palveluhakemiston (Direcrory Facilitator), jossa ylläpidetään listaa palveluista, joita tarjotaan toisille ohjelmistoagenteille. [Fou04]

Kuva 2. Agenttien hallinta. [Fou04]

(10)

Ohjelmistoagentin elämänkaari on piirretty kuvaan 3. Agentilla on olemassa erilaisia tiloja, joita ovat aktiivinen (Active), alustettu (Initiated), odottava (Waiting), keskeytetty (Suspended) ja transitio (Transit). Aktiivinen tila on käytössä silloin, kun agentti on käynnistetty ja viestien välitys sujuu normaalisti. Alustetussa tilassa agenttia ei ole vielä käytetty ja se odottaa tulevaa ”Create”-käskyä. Odottavassa tilassa agentti on laitettu

”odotus”-tilaan ja se siirtyy ”Active”-tilaan ”Wake Up”-käskyllä. ”Keskeytys”-tilassa agentin suoritus on jostain syystä keskeytetty. Agentti odottaa, että toiminta käynniste- tään uudelleen ”Resume”-käskyllä. Alustetussa, odottavassa ja keskeytetyssä tilassa agentti ei lähetä eikä vastaanota viestejä. Viestien puskurointi näissä tiloissa on mahdol- lista kunnes agentti palaa aktiiviseen tilaan. ”Transit”-tila on tarkoitettu liikkuville agen- teille, jolloin viestit puskuroidaan tai lähetetään agentin uuteen kohteeseen. Agentin toiminta lopetetaan ”Quit”- tai ”Destroy”-käskyillä. Agentti voi olla huomioimatta

”Quit”-käskyä, mutta ”Destroy”-käsky lopettaa aina agentin toiminnan. [Fou04]

Kuva 3. Agentin elinkaari. [Fou04]

(11)

11

FIPA on kehittänyt standardeja agenttien väliseen kommunikointiin. Standardeilla var- mistetaan se, että saadaan yksinkertaistettua agenttien välistä kommunikointia. Uusien agenttien luominen on helpompaa silloin, kun noudatetaan tiettyjä standardeita. FIPA pitää kirjaa eri kommunikointiprotokollista sen julkisessa kirjastossa (FIPA Com- municative Act Library). [Fou04]

Kuvassa 4 on FIPA:n määrittelyjen mukainen pyyntöprotokolla (Request-Protocol).

Kuva 4. FIPA:n määrittelyn mukainen pyyntöprotokolla. [Fou02]

(12)

Lähettävä agentti (Initiator) lähettää pyynnön vastaanottavalle agentille (Participant).

Vastaanottaja voi hyväksyä (Agree) tai kieltäytyä (Refuse) pyynnöstä. Mikäli vastaanot- taja hyväksyy pyynnön, suoritetaan lähettäjän määräämä tehtävä. Vastaanottaja suorittaa tehtävän ja vastaa lähettäjälle, onnistuiko se. Mikäli tehtävä onnistuu, lähetetään joko

”Inform-done”- tai ”Inform-result”-viesti. Inform-done on ilmoitus tehtävän onnistumi- sesta ja ”Inform-result”-viesti sisältää lisäksi myös tietoa tehtävän suorituksen tuloksis- ta. Tehtävän epäonnistumisesta ilmoitetaan ”Failure”-viestillä. [Fou02]

Kuvassa 5 on FIPA:n määrittelyn mukainen tiedusteluprotokolla (Query-protocol).

Kuva 5. FIPA:n määrittelyn mukainen tiedusteluprotokolla. [Fou02]

(13)

13

Lähettävä agentti voi lähettää kaksi erilaista tiedustelupyyntöä: Query-if ja/tai Query- ref. Vastaanottava agentti joko hyväksyy (agree) tai hylkää (refuse) pyynnön. Mikäli vastaanottaja hyväksyy ”Query-if”-pyynnön, se vastaa joko tosi (true) tai epätosi (false).

Mikäli vastaanottaja hyväkyy ”Query-ref”-pyynnön, se vastaa agentin suorituksesta saadun tuloksen. ”Failure”-viesti on tieto toiminnon epäonnistumisesta. [Fou02]

2.2 JADE-arkkitehtuuri

JADE on kommunikointiarkkitehtuuri, joka hallitsee agenttien välisiä ACL-viestijonoja (Agent Communication Language). ACL-viestit ovat yksityisiä jokaiselle agentille.

JADE hyödyntää FIPA:n kehittämiä kommunikointimalleja. JADE-arkkitehtuuri voi- daan jakaa korkeamman tason arkkitehtuuriin ja JADE:n sisäiseen arkkitehtuuriin. JA- DE:n korkeimman tason arkkitehtuuri jakautuu eri kerroksiin, joita ovat JADE-kerros ja Javan virtuaalikonekerros. JADE-kerros tarjoaa ohjelmistoagentit ja niiden säiliöt (con- tainer). Yhteen säiliöön voi kuulua monta agenttia. Säiliöt yhdistetään Java- virtuaalikerroksen avulla riippumatta laitteistosta, käyttöjärjestelmästä tai verkkotyypis- tä. Kuvassa 6 on rakennetta selventävä kuva. [BCP03]

(14)

Kuva 6. JADE-arkkitehtuurin kerrokset. [BCP03]

Kuvassa 7 on esimerkki ohjelmistoagenteilla toteutetusta arkkitehtuurista. Se koostuu kahdesta erillisestä agenttialustasta, joilla on oma agenttienhallintajärjestelmä (AMS, Agent Management System) ja eri määrät säiliöitä, joissa ohjelmistoagentit sijaitsevat.

[JAT10]

(15)

15

Kuva 7. Esimerkki JADE-agenteilla toteutetusta arkkitehtuurista. [JAO10]

JADE:n sisäinen arkkitehtuuri koostuu erilaisista luokista, joista jokaisella on oma teh- tävänsä. Luokkien sijainti arkkitehtuurissa selviää hyvin sisäisen arkkitehtuurin luokka- rakenteesta kuvasta 8.

(16)

Kuva 8. JADE:n luokkarakenne. [BCG07]

Jade.core on JADE-arkkitehtuurin ydin. Ohjelmistoydin sisältää kolme perusvalttia, jotka ovat: [BCG07]

1. Viestien välitys ja kapasiteetin jako.

2. Hajautettu ympäristö, joka tulee agenttialustaa.

3. Esiasennettu käyttäytyminen perustehtävien rakenteellisille tarpeille.

Dummyagent (jade.tools.Dummyagent) on yksinkertainen ja hyödyllinen työkalu viesti- en vaihtoon JADE-agenttien välillä. Se on monitorointiin ja virheiden etsimiseen tehty työkalu graafisella käyttöliittymällä. Graafisen käyttöliittymän avulla on mahdollista lähettää ACL-viestejä muille agenteille. Sen avulla voidaan myös tehdä aikajärjestyk- sessä listaus kaikista ACL-viesteistä, joita on lähetetty ja vastaanotettu.

ToolAgent (jade.tools) on abstrakti yläluokka agenttien työkaluille, joita ovat RMA, ToolNotifier, Introspector, LogManagerAgent ja Sniffer. RMA (jade.tools.rma) on JA- DE-agenttien hallintaan suunniteltu graafinen käyttöliittymä. ToolNotifier toimii siltana

(17)

17

JADE:n tapahtumaluokkien ja ”jade.domain.introspection”-ontologian välillä. Tätä

“ToolNotifier”-agenttia käyttää “Sniffer”- ja “Introspector”-agentit.

Introspector (tools.introspector) on agentti, joka monitoroi agentin elinkaarta. Se hoitaa ACL-viestien vaihdot ja käyttäytymisen agenttia suorittaessa. Tarvittaessa se laittaa joko lähetettäviä tai vastaanotettavia viestejä jonoon odottamaan suoritusta. Log- ManagerAgent (tools.logging) on agentti, jonka tehtävänä on tallentaa lokitiedot rekiste- riin, josta niitä voi tarpeen vaatiessa tarkastella.

”Sniffer”-agentti (tools.sniffer) muodostaa agenttien välisten ACL-viestien kulusta UML-kaavioista (Unified Modelling Language) tutun sekvenssikaaviota muistuttavan kaavion. ”Sniffer”-agentti on oma Java-sovellus, joka jäljittää viestejä Java- ympäristössä. Se on hyvin integroitu Java-ympäristöön ja on myös erittäin hyödyllinen selvitettäessä eri agenttien välistä käyttäytymistä. ”Sniffer”-agentti mahdollistaa myös eri agenttien välisten ACL-viestien lukemisen.

2.3 JADE:n käyttöliittymä

Agenttien lisäys ja poisto on helpointa JADE:n graafisessa ikkunassa. Kuitenkin kaikki toiminnot voidaan tehdä myös komentoriviltä. Ikkunassa on mahdollista luoda useita säiliöitä (container), joihin agentit luodaan. Säiliöt voivat koostua useasta eri agentista.

Graafinen JADE-kehys helpottaa huomattavasti agenttien hallintaa, koska kaikki toi- minnot voidaan tehdä kehyksen eri valikoista. Kuvassa 9 on graafisen JADE-kehyksen pääikkuna.

(18)

Kuva 9. JADE-kehyksen graafinen käyttöliittymä.

”Dummy”-agentti on viestien lähettämiseen agenttien välillä sopiva agentti. Sen käyn- nistäminen onnistuu pääikkunan valikoista. Käynnistetty ”Dummy”-agentti avaa ikku- nan, jolla voi määritellä sen, mille agentille viestejä halutaan lähettää. Kuvassa 10 on

”Dummy”-agentin viesti-ikkuna, jolla viestejä lähetetään. Lähetysikkunassa määritel- lään viestin vastaanottaja(t). Tärkeää on myös määritellä se, minkä tyyppisestä viestistä on kysymys. Määrittely tapahtuu ”Communicative act”-valikosta. ”Content”-kenttään laitetaan lähetettävä viesti.

(19)

19

Kuva 10. Dummy-agentin viesti-ikkuna.

Eri agenttien välistä viestiliikennettä voidaan seurata käyttämällä ”Sniffer”-agenttia, joka näyttää lähetetyt viestit nuolina eri agenttien välillä. Eri agenttien välisiä viestejä on myös mahdollista katsella tarkemmin. ”Sniffer”-agentti käynnistetään vasta sitten, kun viestin lähettävä ”Dummy”-agentti ja viestin vastaanottava agentti on käynnistetty.

Kun ”Sniffer”-agentti on käynnistetty, valitaan seurattavat agentit. Tämän jälkeen lähe- tetään ”Dummy”-agentilla viesti, jotta nähdään, kulkeeko se halutulla tavalla. Viestilii- kenne näkyy tällöin ”Sniffer”-agentin graafisessa ikkunassa nuolina eri agenttien välillä.

Viestin tekstistä näkyy myös se, onko viesti hyväksytty (agree) vai ei-hyväksytty (not agree). Kuvassa 11 on esimerkki ”Sniffer”-ikkunasta.

(20)

Kuva 11. Sniffer-ikkuna.

2.4 JADE-agenttien sisäinen rakenne

JADE-agentti muodostuu ”MyAgent”-luokasta, jonka voi nimetä käyttötarkoitukseen sopivammalla nimellä. ”MyAgent”-luokan sisällä on agentin käyttäytymistä määrittele- vä luokka MyBehaviour. MyAgent ja MyBehaviour ylikirjoittavat yliluokkansa kuvan 12 kaavion mukaisesti. MyAgent sisältää ”setup”-metodin, johon määritellään kyseisen agentin tunnistetiedot. ”Setup”-metodissa luodaan agentista ”DFAgentDescription”- ja

”ServiceDescription”-oliot.

(21)

21

Kuva 12. JADE-agentin sisäinen rakenne.

”ServiceDescription”-olio sisältää agentin tunnistetietoja ja sen eri metodeita ovat set- Type, setName, setOwnership ja addOntologies. SetType asettaa palvelun tyypin, set- Name palvelun nimen, setOwnerShip omistussuhteen ja addOntologies ontologian ni- men. ”ServiceDescription”-luokka sisältää myös muita metodeja, jotka parhaiten löyty- vät JADE-paketin mukana tulevasta API-kirjastosta (Application Programming Interfa- ce). Näistä ”DFAgentDescription”-luokka implementoi FIPA-agenttien hallinnan mu- kaisen kuvauksen agentista. MyBehaviour sen sijaan sisältää ”action”-metodin, jossa on agentin toiminnallisuuteen liittyvä ohjelmakoodi. Yksinkertaisimmillaan on vain

”ACLMessage”-luokka, jolla hallitaan agentin viestitoiminnot.

2.5 Yhteenveto

JADE-ohjelmistoagentit perustuvat FIPA-standardointijärjestön protokolliin. Agenttien tehtävänä on olla Java-kielisiä ohjelmiston palasia, jotka voivat olla joko täysin itsenäi- siä tai ohjelmiston käyttäjän hallinnassa. JADE-agenttien kehitysympäristö sisältää agenttien ajamiseen, viestimiseen ja tilojen seuraamiseen sopivat työkalut. Agenttiym- päristöt koostuvat säiliöistä, joissa voi olla useita agentteja.

FIPA:n määrittelemä ohjelmistoagenttiarkkitehtuuri perustuu protokolliin. Niiden avulla mahdollistetaan ohjelmistoagenttien välinen kommunikointi. Agenttien ohjausjärjestel- mä huolehtii siitä, että viestit kulkevat oikeiden ohjelmistoagenttien välillä. JADE- ohjelmistoagentteja on helpoin hallita JADE:n oman graafisen ohjelmiston avulla. Sillä on mahdollista luoda, poistaa ja muokata JADE-ohjelmistoagentteja. Viestien lähettä- minen ja viestiliikenteen seuraaminen on myös mahdollista.

(22)

3 PIONEER-ROBOTTI

Tässä luvussa käsitellään aluksi robotteja yleisesti ja sen jälkeen tutustutaan tarkemmin Pioneer P3-DX -robottiin. Luvussa 3.1 perehdytään robotiikan historiaan, nykyhetkeen ja tulevaisuuteen. Luku 3.2 muodostaa käsityksen robotin liikkumisesta ja kulkureittien määrittelystä. Luvussa 3.3 kerrotaan Pioneer-robotin ominaisuuksista, toiminnasta ja siihen liittyvistä projekteista. Lopuksi luvussa 3.4 on yhteenveto luvun 3 sisällöstä.

3.1 Robotiikka

Robotilla tarkoitetaan sähkömekaanista laitetta, joka toimii fyysisessä maailmassa. Ro- bottien tehtävänä on helpottaa ihmisen toimintaa joko suoraan ihmisen komennossa, osittain ihmisen komennossa tai täysin autonomisesti tietokoneen komennossa. Robo- tiikkaan liittyvien tekniikoiden kehitys on ollut nopeaa ja robotit ovat tulleet ihmisille paljon aiempaa arkipäiväisemmiksi mm. palvelurobotiikan ansiosta. Suurin osa robo- teista tehdään silti edelleen teolliseen käyttöön. Niillä on nykyään erittäin tärkeä tehtävä monien yrityksien kilpailukyvyn parantamisessa ja lisäksi myös tehtäviä, joita ei pystyt- täisi suorittamaan ilman robotteja. Täytyy kuitenkin muistaa, että robottien käytössä tärkein toimija on ihminen, joka suunnittelee, kokoaa ja ohjelmoi laitteet sekä huolehtii niiden kunnossapidosta. [Rob99, Wik13]

Robottien kehitys alkoi jo vuonna 1738, jolloin ranskalainen Jacques de Vaucanson rakensi ensimmäisen robotin, joka osasi soittaa huilua. Hän rakensi myös mekaanisen ankan, joka söi jyviä ja ulosti. Myöhemmin vuonna 1898 Nikola Tesla kehitteli radio- ohjattavan veneen, jota hyödynsi myöhemmin Yhdysvaltojen laivasto rakentamalla tek- niikan pohjalta torpedon. Ensimmäinen robottilaite, autopilotti, valmistui vuonna 1913 ja ensimmäinen robotin lausuma sana kuultiin vuonna 1923 näytelmässä RUR. Ensim- mäinen teollisuusrobotti otettiin käyttöön USA:ssa vuonna 1962. Teknologian kehityk- sen myötä teollisuusrobotit yleistyivät 70-luvulla, lähinnä autoteollisuudessa, jossa tär- kein käyttökohde oli hitsaus. Robottien kehityksestä ja niiden käytön räjähdysmäisestä lisääntymisestä kertoo se, että vuonna 1980 maailmassa oli noin 8000 teollisuusrobottia ja jo vuonna 1995 niitä oli noin 650 000. Suomessa robotisointi käynnistyi 70-luvulla,

(23)

23

jolloin pääpaino oli maalausrobotiikassa. 80-luvulla robotiikan sovelluksia alettiin käyt- tää Suomessakin laajemmin, muun muassa hitsauksessa ja kappaleenkäsittelyssä. Suo- messa vuosina 1984–1987 kaikista robotiikan sovelluksista oli hitsaukseen liittyviä noin puolet ja robotteja kokonaismäärältään yhteensä noin 500 kappaletta. Vuosina 1988–

1991 kehiteltiin runsaasti uusia sovelluksia esimerkiksi lääketieteen piirissä, muun mu- assa laserleikkaus. Robotteja oli tuolloin Suomessa yhteensä noin 1000 kappaletta, kun vuonna 1996 vastaava luku oli noin 1650. Vuonna 2000 robottien määrä oli noussut Suomessa 3193:een ja vuonna 2007 niitä oli jo 5821 kappaletta. [Rob99, Wik13]

Kansainvälisen Robottiyhdistyksen mukaan robotti on ohjelmoitavissa oleva vähintään kolminivelinen mekaaninen laite, jonka tehtävänä on liikuttaa kappaleita, osia tai työka- luja teollisuuden erilaisissa ohjelmoitavissa sovelluksissa. Nykyään pelkkä uudelleenoh- jelmoitavuus ei riitä, vaan nykyaikaisissa aistiohjatuissa robottisovelluksissa robotit on saatava muodostamaan omat liikeratansa tuotteiden suunnittelutiedoista ja ympäristö- mallista. Liikeratoja päivitetään prosessia tarkkailevien anturien avulla. [Lah08]

Ensimmäiset sähkömekaaniset robotit olivat erittäin sovelluskohtaisia. Niitä voitiin käyttää vain siihen yhteen tarkoitukseen, jota varten ne oli rakennettu. Koneiden asetus- ten säätäminen oli todella työlästä ja usein, jos työstettävää kappaletta piti muuttaa, täy- tyi uusia koko robotti. Robottien siirtyminen pienempien sarjojen valmistukseen loi pohjan ohjelmallisesti muunneltaville roboteille. Ohjelmallisesti muunneltavat robotit lisäsivät joustavuutta tuotantoon ja mahdollistivat aiempaa paremman vastaamisen asi- akkaan tarpeisiin. [Rob99, Wik13]

Ohjelmallisesti muunneltavat robotit yleistyvät myös, koska niiden ohjelmointikielet kehittyivät merkittävästi. Nämä niin sanonut korkean tason kielet nopeuttivat ja helpot- tivat robottien ohjelmien tekoa merkittävästi. Tärkeää oli myös anturitekniikoiden kehi- tys, mikä mahdollisti automaattisesti ympäristöön sopeutuvien älykkäiden robottijärjes- telmien kehittämisen entistä vaativampiin sovelluksiin. Nykyisin robotin liikerata voi- daan määrittää kokonaan etukäteen, valita toimintaympäristön tapahtumien perusteella tai luoda antureiden ja robotin aiempien liikkeiden avulla. [Rob99, Wik13]

Teollisuusrobotin tehtävät voidaan jakaa tehtävänkuvan mukaan. Pääasiassa niitä käyte- tään kolmella eri osa-alueella, joita ovat maalaus-, prosessi- ja kokoonpanorobotit. Maa- lausrobotit ovat nopeita ja niiden toiminnassa on tärkeää lähinnä maalaustuloksen tasai- suus, ei niinkään tarkkuus. Prosessirobotit sen sijaan tekevät tarkasti jotain tiettyä yksit-

(24)

täistä toimintoa, mutta eivät ole helposti sovellettavissa muihin tehtäviin. Kokoon- panorobotit taas ovat työjäljessä sekä erittäin tarkkoja että nopeita, mutta niillä on alhai- nen kappaleenkäsittelykyky. [Rob99, Wik13]

Teollisuusrobotit ovat usein nivelrobotteja, jotka matkivat ihmisen käsivarsien liikkeitä ja mahdollistavat samankaltaisten tehtävien teon kuin ihmiskädellä. Niiden nopeus on kuitenkin moninkertainen ja tarkkuus lähes virheetön ihmisen tekemään työhön verrat- tuna. Robotin rakenne ei juuri vaikuta sen tarkkuuteen, vaan suurempi merkitys on käyt- tökohteella, josta riippuen robotin tarkkuus on +/- yksi millimetri, tosin usein tarkkuus on nykyisin vielä paljon parempi. Kokoonpanorobotti on kaikkein tarkin, sillä sen on pystyttävä +/- 0.005-0.1 millimetrin asemointitarkkuuteen. Robotit pystyvät käsittele- mään massaltaan hyvin vaihtelevia kappaleita. Pienimmät robotit käsittelevät 0-5 kilo- grammaa painavia kappaleita, mutta suurimmat kykenevät siirtämään jopa tuhansien kilogrammojen painoisia kappaleita. [Rob99, Wik13]

Teollisuusrobottien lisäksi on olemassa myös paljon muita erilaisia erikoisrobotteja.

Yleisimpiä ovat niin sanotut mobiilirobotit, jotka ovat tietokoneen ohjaamia ajoneuvoja ja työkoneita. Niitä on ollut käytössä jo 1970-luvulta lähtien erityisesti varastojen ja teollisuuden eri käyttökohteissa. Kyseisiä robotteja hyödynnetään muun muassa raken- tamisessa, kuljetuksessa, kaivoksissa, palontorjunta- ja pelastustehtävissä, vartioinnissa, maa- sekä metsätaloudessa, siivouksessa, satelliittien huolto- ja kokoonpanotehtävissä sekä sodankäynnissä. GPS-satelliittipaikannus (Global Positioning System) on tullut erittäin tärkeäksi osaksi robottien navigointijärjestelmiä.

Palvelurobotiikka on yksi nopeasti kehittyvä valtavan potentiaalin omaava kasvuala.

Palvelurobotiikalla tarkoitetaan robotteja, jotka hoitavat palvelutehtäviä. Tällaisia tehtä- viä voivat olla esimerkiksi lentokoneiden peseminen, lehmien koneellinen lypsäminen, pölyjen imeminen ja ruohon leikkaaminen.

Kaikkein kehittyneintä ja robottien valmistajille haasteellisinta robottityyppiä ovat and- roidit. Niiden tarkoituksena on matkia ihmisen ruumiinrakennetta, jotta ne voivat toimia ja liikkua ihmisten maailmassa. Esimerkiksi Japanissa on kehitetty ihmistä lyhyempi androidi, jolla on näköaisti ja joka pystyy liikkumaan ihmisten tavoin. Androideja on ajateltu voitavan hyödyntää ihmiselle liian vaarallisissa töissä ja tulevaisuudessa onkin mahdollista, että ne voivat jollain alalla syrjäyttää ihmisen kokonaan. [Wik13]

(25)

25

Yksi kuuluisimmista androideista on Hondan kehittämä 1.3 metriä korkea ASIMO (ku- va 13). Se on kooltaan ihmistä pienempi, mutta se osaa monia ihmiselle ominaisia toi- mintoja, kuten esimerkiksi käveleminen, juokseminen ja portaiden nouseminen. Lisäksi ASIMO osaa sanoa ihmiselle käsipäivää, potkaista jalkapalloa ja työntää edessään vau- nuja. [Wiki13]

Kuva 13. ASIMO. [Wiki13]

(26)

Tulevaisuuden robotit voivat olla erittäin pieniä ja niitä kutsutaankin nanoroboteiksi.

Erityisesti lääketeollisuus on kiinnostunut kehittämään nanorobotteja, jotka voisivat esimerkiksi puhdistaa haitalliset bakteerit, hammaskiven ja ruuanmurut suusta. Nanoro- botteja voisi myös laittaa ihmisen verenkiertoon, jossa robotit etsisivät verisuonten sei- nämiltä kolesteroliplakkeja ja söisivät ne pois puhdistaen suonien sisäpinnan. Myös syöpäsoluja tuhoavia nanorobotteja on kehitteillä. Nanorobotit ovat tosin vielä teoria- ja kokeiluasteella: todennäköisesti tulee kulumaan vielä useita vuosia, ennen kuin niistä on tarjolla käytännön sovelluksia. [Enq99]

Robotin ohjaamiseen on mahdollista käyttää myös limasientä, jota voidaan käyttää ro- botin "aivoina". Physarum polycephalum -limasieni kykenee paikallistamaan ruoan ja liikkumaan sen luo. Se myös välttää valoa ja viihtyy kosteissa paikoissa. Limasieni saa- tiin ohjaamaan robottia, kun kuusijalkaisen robotin päälle kasvatettiin kuusisakarainen limasienikasvusto ja kytkettiin se tietokoneella robottiin. Kun robotin jalka on valossa, välittyy siitä tieto tietokoneen kautta limasienisakaran päällä olevaan valonlähteeseen, joka syttyy. Valo taas saa limasienen antamaan robotille käskyn siirtää jalkaa ja saa tä- ten sienen ohjaamaan robotin pois valosta. Käyttökohteina tällaisella robotilla voivat olla pimeät, kosteat ja epämääräisen muotoiset paikat, joissa robotin ohjaaminen pelkäl- lä tietokoneella on hankalaa. Jatkossa tarkoituksena olisi kyetä kasvattamaan limasieni suoraan robotin päälle. Limasienen ohjaaman robotin kehittäjien mukaan tällainen "bio- loginen ohjelmointi" voisi olla tietokonetta yksinkertaisempi tapa hallita robotteja.

[New06]

3.2 Liikkuminen ja kulkureitin määrittely

Liikkuvan robotin yksi tärkeimmistä tehtävistä on havainnoida ympäristöään antureil- laan. Niistä saamallaan tiedolla robotti osaa paikallistaa sijaintinsa. Täysin virheetöntä karttaa on robotin ainakin vielä melko mahdotonta tuottaa. Mitä enemmän tarkkuutta vaativasta tehtävästä on kyse, sitä tarkempi pitää robotin muodostama kartta olla ja tämä asettaa omat haasteensa robottien kartoitusalgoritmeille.

Robotin sijainnin määrittelyyn voidaan käyttää kameraa, laseria, infrapunaa, tutkaa tai kompassia. Myös niiden yhdistelmiä on mahdollista käyttää. Näitä erilaisia ympäristöä

(27)

27

analysoivia laitteita hyödyntäen voidaan muodostaa kartta, josta saadaan mahdollisim- man luotettava. Aina ennalta-arvattavan kartan muodostus ei ole mahdollista, vaan eteen saattaa tulla yllättäviä esteitä. Näihin on syytä varautua niin, että robotti osaa havainnoi- da odottamattomat esteet ja tehdä toimenpiteet törmäyksen estämiseksi. [HSB03]

Robotin kartan määrittelyyn vaikuttaa myös ympäristö, jossa robotin on tarkoitus liik- kua. Helposti määritettäviä muotoja ovat suorat seinät, seinien leikkauspisteet ja pai- kannettavat kiinteät esteet. Ongelmia syntyy, mikäli paikannettava tila on epämääräisen muotoinen: esim. seinät ovat rosoiset ja suoria pintoja ei ole. Tällaisia tiloja ovat esi- merkiksi rauniot, maasto ja luolat. Myös lasiseinät voivat olla robotin käytön kannalta hankalia varsinkin, jos paikkatietojen määritykseen käytetään kaikuluotausta. Robotin suunnan ja tarkan sijainnin tietäminen helpottaa kartan muodostamista ympäristöstä.

[HoK96, Tha97, Thr02]

Robottiin asennettavia sensoreita on monenlaisia, esimerkiksi kaikuluotain, laser- skanneri, infrapunamittari, tutka, kamera tai GPS-paikannin. Näiden kaikkien heikkou- tena on se, että ne ovat alttiita mittausvirheille eli kohinalle. Lisäksi ääneen ja valoon perustuvien sensoreiden ongelmana on se, etteivät niiden tuottamat ääni ja valo läpäise seiniä. Robotin liikkumisesta voi myös tulla mittavirheitä, mikä vaikeuttaa robotin vir- heetöntä paikantamista. [Thr02]

3.3 Pioneer-robotti

Pioneer P3-DX on maailman suosituin tutkimusrobotti, jonka monipuolisuus, luotetta- vuus ja kestävyys tekevät siitä vertaansa vailla olevan. P3-DX on täysin ohjelmoitavissa ja kestää kovan luokkahuone- sekä laboratoriokäytön. Robotti on valmistettu kestävästä alumiiniseoksesta. Siinä on 19 senttimetriä halkaisijaltaan olevat renkaat ja kahdeksan ultraäänianturia, joita voi käyttää kohteiden havainnointiin. Robotin (kuva 14) huippu- nopeus on 1.6 m/s ja se voi kantaa maksimissaan 23 kilogrammaa painavaa esinettä.

[Ade12]

(28)

Kuva 14. Pioneer P3-DX -robotti. [Ade12]

Robotin liikkuminen perustuu siis ultraääneen, jonka avulla se mittaa etäisyyksiä koh- teisiin. Siinä on itsessään kiinni anturit ultraäänen lähettämiseen. Robotille on myös mahdollista lähettää ohjaussignaalia hyödyntäen verkkoyhteyksiä tai sarjaporttia.

[Mob07]

Robotti on hankittu Itä-Suomen yliopistolle konenäön ja tekoälyn kehittämistä varten.

Niiden avulla robotista olisi mahdollista saada entistä itsenäisemmin liikkuva, sillä se pystyisi itse havaitsemaan esteitä ja väistämään niitä. Tällä hetkellä projekti on siinä vaiheessa, että robottia ohjataan ohjelmistoagentin avulla. Ohjelmistoagentilla lähete- tään robotille viesti, jonka mukaisesti robotti liikkuu. Tulevaisuudessa viestin voisi lä- hettää jokin konenäköä hyödyntävä anturi.

Robotti sisältää oman C++-kielellä toteutetun ARIA-rajapinnan, jota voidaan hyödyntää tekemällä omia sovelluksia. Pioneer-robotilla on olemassa myös oma MobileRobotsin kehittelemä sovellus robotin karttatietojen määrittelyyn. Tämän tutkielman testiajoissa

(29)

29

on kuitenkin hyödynnetty FT Mauno Rönkön C++:lla koodaamaa erillistä robotin ohja- usrajapintaa, jolle lähetetään ohjausviestejä JADE-ohjelmistoagentin avulla. Ohjaus- viestit lähetetään hyödyntäen tietokoneen sarjaporttia. [Mob07]

Robotille lähetetään koordinaatit ja suuntakulma. Se liikkuu näitä tietoja hyödyntäen haluttuun kohteeseen. Vielä tässä vaiheessa robottia ohjaavalle ”Pioneer”-agentille on lähetettävä koordinaatit hyödyntäen ”Dummy”-agenttia, joka on yksinkertainen viestin- lähetysohjelmistoagentti. Viestien kulkua eri ohjelmistoagenttien välillä pystytään seu- raamaan ”Sniffer”-ohjelmistoagentilla, joka näyttää agenttien väliset kommunikaatiot viivoilla. Viivoista on mahdollista katsoa kyseisen viestin sisältö. Tarkemmin viestien lähettämisestä kerrottiin luvussa 2.3.

3.4 Yhteenveto

Robottien kehitys on ollut erittäin nopeaa ja se onkin hyvä osoitus ihmisen innovatiivi- suudesta sekä halusta automatisoida töitään. Niiden kehityksen katsotaan alkavan jo 1738, jolloin ranskalainen Jacques de Vaucanson rakensi robotin, joka osasi soittaa hui- lua. Robottien kehitys oli aluksi hidasta. Vasta 1970-1980-luvulla robottien kehitys no- peutui merkittävästi.

Robotiksi mainitaan usein sähkömekaaninen laite, joka toimii fyysisessä maailmassa.

Kansainvälinen Robottiyhdistys on tarkentanut määritelmää siten, että robotti on ohjel- moitavissa oleva vähintään kolminivelinen mekaaninen laite. Sen tehtävänä on liikuttaa kappaleita, osia tai työkaluja teollisuuden erilaisissa ohjelmoitavissa sovelluksissa. Ro- botti päivittää liikeratojaan omien ympäristöä havainnoivien anturien avulla. Ne ovat muuttuneet vuosien saatossa yhteen sovelluskohteeseen räätälöidystä robotista moneen eri kohteeseen ohjelmoitavaksi robotiksi. Kehitystä on nopeuttanut ohjelmointikielien nopea kehitys. Teollisuusrobotit jaetaan tehtäväkuvan mukaan kolmelle eri osa-alueelle joita ovat maalaus-, prosessi- ja kokoonpanorobotit.

Teollisuusrobottien lisäksi on olemassa erilaisia erikoisrobotteja. Niitä ovat mm. mobii- li-, palvelu- ja nanorobotit. Mobiilirobotit ovat tietokoneohjattuja ajoneuvoja ja työko- neita. Niitä hyödynnetään muun muassa rakentamisessa, kuljetuksessa, kaivoksissa, palontorjunta- ja pelastustehtävissä, vartioinnissa, maa- sekä metsätaloudessa, siivouk-

(30)

sessa, satelliittien huolto- ja kokoonpanotehtävissä sekä sodankäynnissä. Erilaiset palve- lurobotit ovat myös kovasti yleistymässä. Niiden tehtävänä on esimerkiksi lentokonei- den peseminen, lehmien koneellinen lypsäminen, pölyjen imeminen ja ruohon leikkaa- minen.

Ihmisen liikkeitä matkivia robotteja on myös yritetty kehittää. Tämä kaikista haasteelli- sin robottityyppi muistuttaa ulkonäöltään ihmistä. Näitä robotteja sanotaan androideiksi ja niistä on olemassa näkevä ja ihmisen tapaan liikkuva malli. Androideja olisi tarkoitus hyödyntää mahdollisesti ihmiselle vaarallisissa töissä.

Robotit voivat olla myös erittäin pieniä, niin sanottuja nanorobotteja. Lääketeollisuus on erityisen kiinnostunut niiden kehittämisestä. Niiden avulla voitaisiin kulkea ihmisen verisuonien sisällä ja parantaa erilaisia sairauksia.

Erilaiset anturit mahdollistavat robotin liikkumisen. Robotti havainnoi anturien avulla ympäristöään ja paikallistaa sijaintiaan. Se voi käyttää sijaintinsa määrittelyyn kameraa, laseria, tutkaa tai kompassia. Myös GPS-paikannus on mahdollinen. Mittausvirheet vai- keuttavat robotin liikkumista.

Ohjelmistoagenttien testaamiseen käytettiin Pioneer P3-DX -robottia, joka on maailman suosituin tutkimusrobotti. Robotin liikkumiseen käytetään ultraääntä, joka mahdollistaa esteiden väistelyn. Tässä tutkielmassa ohjelmistoagentti lähettää koordinaatit ja suunta- kulman, joiden avulla robotti osaa liikkua. Vielä tässä vaiheessa koordinaatit tarvitsee lähettää tietokoneella ohjelmistoagentin avulla, mutta tulevaisuudessa olisi mahdollista kehittää järjestelmä, joka hyödyntäisi myös konenäköä koordinaattien määrittelyssä.

(31)

31

4 TESTIJÄRJESTELYT JA TULOKSET

Pioneer P3-DX -robotilla suoritettiin testiajot, joiden järjestelyihin, toteuttamiseen ja tuloksiin perehdytään tässä luvussa. Luvussa 4.1 kerrotaan ongelman kuvauksesta. Lu- vussa 4.2 keskitytään Pioneer-agentin ohjelmointiin ja ohjelman rakenteeseen sekä ker- rotaan ohjelmistoagenttien välisestä viestinnästä ja niiden eri protokollista. Luku 4.3 sisältää kuvauksen Pioneer-robotilla suoritettujen testiajojen alkuvalmisteluista, toteu- tuksesta ja tuloksista. Lopuksi luku 4.4 sisältää yhteenvedon koko luvun 4 sisällöstä.

4.1 Ongelman kuvaus

Tavoitteena on käyttää ohjelmistoagentteja Pioneer P3-DX -robotin ohjaukseen. Robo- tista on tarkoitus tehdä itsenäisesti toimiva kokonaisuus, jonka vuoksi sen tulisi osata havainnoida omaa ympäristöään. Tämä tullaan toteuttamaan soveltamalla konenäköä robotin ohjauksessa.

Tässä tutkielmassa perehdytään ainoastaan alimman tason agenttiin, joka huolehtii ro- botin liikkumisesta annettuun koordinaattiin. Robotin ohjauksesta vastaavalle agentille lähetetään koordinaatit ja robotti liikkuu niiden mukaisesti uuteen kohteeseen. Robotilta on myös mahdollista kysyä sen nykyistä sijaintia.

Koordinaattien lähettämiseen agentille käytetään JADE-kehystä, jolla luodaan viestien lähetykseen tarkoitettu ”Dummy”-agentti. JADE-kehys sisältää graafisen sovelluksen, jolla on helppo seurata viestien kulkua. Myös agentin sijainnin kysyminen toteutetaan

”Dummy”-agentin avulla. Jatkossa muut agentit voivat kommunikoida ohjausagentin kanssa suoraan eli silloin ”Dummy”-agenttia ei enää tarvita. ”Dummy”-agentin ja robo- tin välissä on ”Pioneer”-agentti, joka hoitaa viestien välityksen ”Dummy”-agentin ja robotin oman ohjainjärjestelmän välillä. Rakenne on kuvattu kuvassa 15.

(32)

Kuva 15. Kaavio robotin ja ohjelmistoagenttien välisestä viestinnästä.

4.2 Pioneer-agentin ohjelmointi

”Pioneer”-agentti ylikirjoittaa ”Agent”-luokan ja ”Pioneer-agent”-luokkaan tulee pakol- lisena ”setup”-metodi, johon määritellään tarkemmin agentin tunnistetiedot. Luokka sisältää lisäksi ”DFAgentDescription”- ja ”ServiceDescription”-luokan. ”DFAgent- Description”-luokka implementoi FIPA-agentien hallinnan mukaisen kuvauksen agen- tista. ”ServiceDescription”-luokan eri metodeita ovat setType, setName, setOwnership ja addOntologies. SetType asettaa palvelun tyypin, setName palvelun nimen, setOw- nerShip omistussuhteen ja addOntologies ontologian nimen. ”ServiceDescription”- luokka sisältää myös muitakin metodeja, jotka parhaiten löytyvät JADE-paketin muka- na tulevasta API-kirjastosta.

Pioneer-agentille luodaan käyttäytyminen erillisellä ”PioneerBehaviour”-luokalla. Se toimii ”Pioneer-agent”-luokan sisäluokkana. PioneerBehaviour ylikirjoittaa ”CyclicBe- haviour”-luokan. PioneerBehaviour luokassa on ”action”-metodi, johon sisällytetään kaikki agentin toiminnallisuuteen liittyvä ohjelmakoodi. Se käyttää viestien lähetykses- sä ”ACLMessage”-luokkaa. Tarkemmin luokkien välisiä yhteyksiä selventävä luokka- kaavio esitetään kuvassa 16.

(33)

33

Kuva 16. ”Pioneer”-agentin luokkakaavio.

”Pioneer”-agentti hyödyntää kahta eri FIPA:n määrittelemää viestinvälitysprotokollaa.

Ne ovat pyyntöprotokolla (Request-protocol) ja tiedusteluprokolla (Query-ref-protocol).

Pyyntöprotokollaa käytetään paikkatietojen lähettämiseen robotille, kun taas tiedustelu- protokolla on tarkoitettu robotin paikkatietojen kyselyyn.

Pyyntöprotokolla (kuva 17) muodostuu kahdesta agentista: ”Dummy”-agentista ja ”Pio- neer”-agentista. ”Dummy”-agentti on viestejä lähettävä agentti ja ”Pioneer”-agentti ot- taa tässä protokollassa ainoastaan vastaan uuden paikan sijaintitiedot. Mikäli sijaintitie- dot lähetetään ”request”-käskyllä virheellisesti, ”Pioneer”-agentti hylkää pyynnön. Kun

”Pioneer”-agentti hyväksyy pyynnön, se ilmoittaa ”Dummy”-agentille siirtymisestä uusien sijaintitietojen mukaiseen kohteeseen.

(34)

Kuva 17. Pyyntöprotokolla.

Tiedusteluprotokollan (kuva 18) avulla voidaan kysyä ”Pioneer”-agentilta robotin si- jaintia. Kysyminen tapahtuu ”Dummy”-agentin avulla. Kysyminen voidaan hylätä, mi- käli se ei ole protokollan mukainen. Hyväksyttyyn pyyntöön ”Pioneer”-agentti lähettää

”Dummy”-agentille vastaukseksi paikkatiedot.

(35)

35

Kuva 18. Tiedusteluprotokolla.

Molemmissa protokollissa ”Pioneer”-agentille lähetettävä viesti määritellään ”Dum- my”-agentin ”content”-kenttään. Viesti pitää olla protokollan määrittelyn mukainen.

Pyyntöprotokollan viesti on ”Request”-tyyppinen ja alkaa ”move”- tai ”set”-sanalla.

”Move”-sanalla alkava viesti antaa robotille komennon liikkua viestissä määriteltyyn kohteeseen. ”Set”-komento ainoastaan asettaa robotille uuden kohteen, mutta robotti ei vielä liiku sinne. Lisäksi viestiin määritellään arvot x, y ja heading. Arvot x ja y ovat pisteitä koordinaatistossa ja ”heading”-arvo on suuntakulma, johon robotti jää, kun se

(36)

pysähtyy: esim. “MOVE X:33.3 Y:33.3 HEADING 33.3” tai “SET X:33.3 Y:33.3 HEADING 33.3”.

Tiedusteluprotokollan viesti on ”Query-Ref”-tyyppinen ja se sisältää joko ”GIVE LO- CATION”- tai ”GIVE ACCURACY”-viestin. ”GIVE LOCATION”-viesti palauttaa tiedon robotin sijainnista ja ”GIVE ACCURACY”-viesti palauttaa tiedon sijaintitietojen tarkkuudesta.

JADE-ohjelmistoagenttien ohjelmoimiseen tarvitaan Java-ohjelmointiin tarkoitettu oh- jelmointiympäristö. Lisäksi siihen tulee määritellä tarvittavat Java- ja JADE-kirjastot.

Ohjelmointiympäristössä luodaan projekti, johon itse ohjelmakoodi kirjoitetaan. Valmis ohjelmistoagentti ajetaan graafisessa JADE-kehyksessä, jossa agenttien välistä viestilii- kennettä on helppo seurata. Ohjelmistoagentin luokan alkuun merkitään luokat, joita kyseinen ohjelmistoagentti tarvitsee toimiakseen. Kuvassa 19 on määritelty luokat, joita

”Pioneer”-agentti hyödyntää toiminnassaan.

Kuva 19. ”Pioneer”-agentin luokkamäärittely.

”Pioneer”-agentti muodostuu itse ”Pioneer-agentti”-luokasta ja sen sisällä olevasta agentin käyttäytymistä säätelevästä sisäluokasta PioneerBehaviour. ”Pioneer”-agentti sisältää ”setup”-metodin, johon on sijoitettu agentin tunnistukseen tarvittavat tiedot.

Lopuksi ”setup”-metodi (kuva 20) sisältää ”try-catch”-lohkon, jonka sisällä on ohjel- makoodi. Koodilla luodaan ilmentymä agentin sisäluokasta PioneerBehaviour. ”Pio- neerBehaviour”-niminen ilmentymä asetetaan ”addBehaviour”-metodilla koko agentin käyttöön. ”PioneerBehaviour”-luokka sisältää ”action”-metodin, jossa on agentin toi- minnallisuuteen liittyvä ohjelmakoodi.

(37)

37

Kuva 20. ”Setup”-metodin koodi.

”PioneerBehaviour”-luokka (kuva 21) sisältää kaiken agentin toiminnallisuuteen liitty- vän. Se sisältää ”action”-metodin, jonka sisältämä koodi määrää sen, mihin agenttia käytetään. ”PioneerAgent”-agentissa ”action”-metodi sisältää robotin liikkumiseen liit- tyvän koodin. Agentille lähetetään viesti, joka sisältää tietyn käskyn ja se käsittelee sen

”action”-metodissa. Robotti liikkuu käskyjen mukaan. ”Action”-metodissa luodaan en- sin ilmentymä msg, johon sijoitetaan agentille lähetty viesti. ”ParameterValue”-metodi osaa napata ”X:”:n, ”Y:”:n ja ”HEADING:”:in jälkeiset arvot omiin ”PioneerBeha- viour”-luokan parametreihinsa. Lopuksi viesti hyväksytään ”send(reply)”-komennolla.

(38)

Kuva 21. PioneerBehaviour-luokan koodia.

4.3 Pioneer-robotin testiajot

Testiajoja varten käynnistetään Pioneer-robottia ohjaava Pioneer-ohjelmistoagentti ja sille testausviestien lähettämistä varten ”Dummy”-agentti. Testauksen tarkoituksena on selvittää, toimiiko Pioneer-agenttiohjelman ja robotin rajapinnan välinen kommunikaa- tio toivotulla tavalla.

(39)

39 Testitapauksia ovat:

1. Ohjelmistoagenttien käynnistäminen.

2. X- ja Y-koordinaattien sekä ”Heading”-kulman lähettäminen Pioneer-robotille.

3. Koordinaattien kysyminen robotilta.

Luvussa 4.3.1 käydään läpi Pioneer-robotin käynnistäminen ja alkuvalmistelut, luvussa 4.3.2 ”Heading”-kulman testaus, luvussa 4.3.3 X- sekä Y-koordinaattien lähettämisen testaus ja luvussa 4.3.4 robotin sijaintikyselyn testaus.

4.3.1 Pioneer-robotin käynnistäminen ja alkuvalmistelut

Ohjelmistoagenttiympäristö käynnistetään komennolla ”java jade.Boot –qui”. Komen- non jälkeen avautuu JADE-ikkuna, jolla eri ohjelmistoagenttien luominen graafisen ikkunan kautta on mahdollista. Komento käynnistää myös robotin, joka alkaa pitää nak- suttavaa ääntä. Jotta robotille voitaisiin lähettää viestejä, täytyy käynnistää ”Pioneer”- agentti, jonka tehtävänä on kommunikoida robotin ARIA-rajapinnan kanssa. ”Class Name”-kohtaan valitaan ”Pioneer”-agentti listasta, josta tässä testitapauksessa löytyy yhteensä 11 luokkaa. Agentti nimetään, tässä tapauksessa nimellä Pioneer (kuva 22).

Kuva 22. Pioneer-agentin nimeäminen.

”Pioneer”-agentti tunnistetaan jatkossa JADE-kehyksessä nimen perusteella. Kun tiedot on täytetty ja hyväksytty, agentti ilmestyy näkyville JADE-kehykseen, joka näkyy ku- vassa 23.

(40)

Kuva 23. JADE:n graafinen käyttöliittymä.

Seuraavaksi luodaan ”Dummy”-agentti samalla tavalla kuin ”Pioneer”-agentti. Listasta valitaan dummyagent ja viestin vastaanottajaksi valitaan ”Pioneer”-agentti. ”Com- municative Act”-valikosta valitaan viestin tyypiksi Request. Liikkumiskomennot kirja- taan ”Dummy”-agentin ”Content”-kenttään muodossa ”MOVE X:_ Y:_ HEADING:_”.

Viestin lähettämisen jälkeen robotti liikkuu koordinaatiston pisteisiin X ja Y. Robotti jää ”heading”-luvun osoittamaan kulmaan. Sekä koordinaatit että kulma voivat olla de- simaalilukuja, mutta silloin desimaaliluvun pilkun tilalla on käytettävä pistettä tai muus- sa tapauksessa ”Dummy”-agentti antaa "not understood"-virheilmoituksen. Kuvassa 24 on esimerkki ”Dummy”-agentin viestinlähetysikkunasta ja itse viestistä.

(41)

41

Kuva 24. Dummy-agentti.

4.3.2 ”Heading”-kulman testaus

”Heading”-kulma on robotin asentokulma, johon robotti jää, kun se pysähtyy. Kulman testaamista varten annettiin aluksi X- ja Y-koordinaattien arvoksi nolla sekä muutettiin

”heading”-kulmaksi 360 astetta. Viesti oli tällöin muotoa ”X:0 Y:0 HEADING:360” ja robotti pyörähti paikallaan 360 astetta. Kun edelleen vaihdettiin ”heading”-kulmaksi 90 astetta, robotti kääntyi 90 astetta vastapäivään. Käskystä ”heading 0”, robotti kääntyi taas takaisin alkukulmaansa. Robotin kääntymisliikkeet tapahtuivat kiinteän koordinaa- tiston mukaisesti, jolloin robotin käytön alkuarvoina on ”X:0 Y:0 HEADING:0”. Mii-

(42)

nusmerkkinen ”heading”-arvo sai robotin kääntymään myötäpäivään. Robotti kääntyi testattuihin ”heading”-kulmiin ilman havaittuja virheitä.

4.3.3 X- ja Y-koordinaattien lähettämisen testaus

X- sekä Y-koordinaatteja testattiin antamalla ensin pelkälle X-koordinaatille erilaisia arvoja ja Y:n arvo pidettiin nollana. Sen jälkeen vastaavasti testattiin Y-koordinaatteja erilaisilla arvoilla X:n oltua nolla. Lopuksi kokeiltiin muuttaa X- ja Y-koordinaatteja samanaikaisesti. Myös eri ”Heading”-kulmia testattiin samalla, jotta saatiin varmistet- tua, ettei sen muutoksista aiheudu häiriötä robotin liikkumiselle.

Ensin käynnistettiin ”Pioneer”-agentti ja seuraavaksi ”Dummy”-ohjelmistoagentti, jolla lähetettiin robotille halutut koordinaatit ja kulma. Robotti liikkui näitä tietoja hyödyntä- en haluttuun koordinaatiston pisteeseen. Testin lähtöpisteenä käytettiin origoa, johon robotti liikkui komennolla ”MOVE X:0 Y:0 HEADING:0”. ”Dummy”-agentin viestistä

”MOVE X:500 Y:0 HEADING:0”, robotti kulki suoraan eteenpäin 50 cm. Muuttamalla arvoiksi ”MOVE X:0 Y:0 HEADING:0”, robotti saatiin kääntymään ympäri ja palaa- maan lähtöpisteeseensä. Koordinaateilla ”MOVE X:-200 Y:0 HEADING:0”, robotti kääntyi myötäpäivään 180 astetta ja liikkui 20 cm. Lopuksi se kääntyi vastapäivään 180 astetta takaisin lähtökulmaan. ”Heading”-kulmaksi ja X- sekä Y-koordinaateiksi kelpa- sivat myös desimaaliluvut, kunhan pilkun tilalla käytettiin pistettä. Kyseisiä testitapauk- sia selventää kuva 25, jossa koordinaatistoon on merkitty robotin sijainti ja suunta testa- uksen eri vaiheissa. Nuolen suunta kuvaa robotin ”heading”-kulmaa, johon robotti kään- tyy liikkumisen lopuksi.

(43)

43

Kuva 25. X-koordinaatin testaus.

Myös Y-koordinaatteja testattiin samalla tavalla. ”MOVE X:0 Y:500 HEADING:0”- komennolla robotti kääntyi 90 astetta vastapäivään ja liikkui 50 cm koordinaatiston y- akselin suuntaisesti. Oletuksena oli, että testissä robotin lähtöpiste on origo. ”MOVE X:0 Y:-200 HEADING:0”-komennolla robotti kääntyi 90 astetta myötäpäivään ja liik- kui 20 cm eteenpäin. Molemmissa tapauksissa robotti kääntyi lopuksi lähtökulmaansa heading 0 astetta. Testitapaukset on piirretty koordinaatistoon, joka näkyy kuvassa 26.

Nuolen suunta vastaa robotin ”heading”-kulmaa.

(44)

Kuva 26. Y-koordinaatin testaus.

Koordinaattien ja kulman testausta jatkettiin kaikkien kolmen tiedon (X- sekä Y- koordinaattien ja heading-kulman) syöttämisellä samanaikaisesti. Lähtöpisteenä oli koordinaatiston origo (0,0), johon robotti liikkui aluksi komennolla ”MOVE X:0 Y:0 HEADING:0”. Ensimmäisenä annettiin komento ”MOVE X:500 Y:500 HEA- DING:180”. Robotti kääntyi tuolloin noin 45 astetta vastapäivään ja eteni haluttuun pisteeseen sekä kääntyi sitten 135 astetta vastapäivään haluttuun kulmaan (180 astetta).

Toisena testikomentona oli ”MOVE X:0 Y:-500 HEADING:90”. Tällä komennolla ro- botti eteni suoraan esitettyyn koordinaatiston pisteeseen ja kääntyi lopuksi myötäpäi- vään kulmaan 90 astetta. Seuraavaksi annettiin komento ”MOVE X:-500 Y:500 HEA- DING: 270”. Tuolloin robotti liikkui haluttuun pisteeseen ja kääntyi kulmaan 270 astet- ta. Kuvassa 27 on koordinaatistossa kaikkien kolmen testipisteen sijainti koordinaatis-

(45)

45

Kuva 27. X- ja Y-koordinaattien sekä ”heading”-kulman testaus.

Kaikki X- ja Y-koordinaattien testitapaukset toimivat ilman havaittuja virheitä. Robotin akku oli kuitenkin niin huono, että robottia täytyi pitää kiinni verkkovirrassa koko testa- uksen ajan.

4.3.4 Robotin sijaintikyselyn testaus

Robotilta voi kysyä ”GIVE LOCATION”-komennolla paikkatietoja. Komento kirjoite- taan ”Dummy”-agentin ”content”-kenttään. Robotti vastaa tiedon, mutta viestin saa nä- kymään ainoastaan ”Sniffer”-agentilla katsomalla viestin graafisessa JADE-kehyksessä.

Tarkempaa tietoa ”sniffer”-agentin käytöstä löytyy luvusta 2.3. Arvot ovat tarkkoja useiden kymmenien desimaalien arvoja, joissa näkyy robotin tarkka sijainti koordinaa- tistossa. Aina ei päästä aivan haluttuun pisteeseen, mutta virhemarginaalit ovat erittäin

(46)

pieniä, kokoluokaltaan yhden millimetrin kymmenes- tai sadasosia. Kuvassa 28 on esi- merkki ”GIVE LOCATION”-komennon palautusviestistä. Robotin tarkka arvo näkyy kuvan ”content”-kentässä. Robotille lähetettiin komento ”MOVE X:100.9 Y:100.9 HEADING:0”. Kuvasta 28 näkyy, että robotti ei ole aivan tarkalleen annetussa pistees- sä.

Kuva 28. ”GIVE LOCATION”-komennon vastausviesti.

(47)

47 4.4 Yhteenveto

Tavoitteena oli käyttää ohjelmistoagentteja Pioneer 3DX -robotin ohjaukseen. Tämä tutkielma perehtyi ainoastaan alemman tason agenttiin, jonka tehtävänä on välittää koordinaatit robotille. Lisäksi robotilta on mahdollista kysyä sen sijaintikoordinaatit.

”Pioneer”-agentin ohjelmoinnissa määritellään ensin agentin tunnistetiedot, joiden avul- la mahdollistetaan agenttien välinen viestiminen. Sille täytyy luoda oma käyttäytyminen omalla ”PioneerBehaviour”-luokalla. ”Pioneer”-agentti hyödyntää kahta FIPA:n määrit- telemää viestinvälitysprotokollaa, joita ovat pyyntöprotokolla (Request-protocol) ja tie- dusteluprotokolla (Query-ref -protocol). Tiedusteluprotokollalla kysytään robotin paik- katietoja ja pyyntöprotokollalla lähetetään paikkatiedot robotille.

Ohjelmistoagenttien hallinta tapahtuu JADE-ohjelmistoagentti ympäristössä, jossa on agenttien hallintaan oma graafinen sovelluksensa. Ohjelmistoagenttien ohjelmointiin täytyy määritellä tarvittavat JADE- sekä Java-kirjastot ja ohjelmoinnin voi tehdä millä tahansa Java-ohjelmointiympäristöllä.

Testiajoissa testattiin sekä robotin että ohjelmistoympäristön käynnistykseen liittyvät asiat, koordinaattien syöttö, robotin liikkuminen ja robotin sijainnin ilmoittamiseen liit- tyvät seikat. Ohjelmistoympäristön käynnistäminen tapahtui komennolla "java ja- de.Boot -gui" ja JADE:n graafinen ohjelmistoagenttikehys käynnistyi ongelmitta. Li- säksi luotiin Pioneer-robottia ohjaava ohjelmistoagentti ja sille viestejä lähettävä

”Dummy”-agentti ilman havaittuja virheitä. Koordinaattien tai ”heading”-kulman lähet- tämisessä ja robotin liikkumisessa ei havaittu merkittäviä virheitä. Pientä laskuvirhettä robotin liikkumisessa annettuun pisteeseen oli havaittavissa, kun katsottiin ”GIVE LO- CATION”-komennolla robotin täysin tarkka sijainti.

(48)

5 POHDINTA

Robottien lukumäärä kasvaa jatkuvasti. Niiden yleistymiseen on monia syitä, joista suu- rimpana on niiden kehittyminen helpommin ohjelmoitavaksi erilaisiin käyttökohteisiin.

Robottien yleistyminen erityisesti teollisuudessa on laskenut niiden hankintahintoja.

Monet teollisuuden tuotteet ovat niin kehittyneitä ja valmistukseltaan tarkkuutta vaati- via, että niiden kokoaminen erittäin suurta tarkkuutta ja nopeutta hyödyntävällä robotilla on ainoa mahdollisuus saavuttaa tarpeeksi suuret tuotantomäärät.

Uskon, että teollisuudessa roboteilla yritetään jatkossa tehdä aiempaa integroidumpia järjestelmiä, jotta tulevaisuudessa tehtaat voisivat toimia lähes itsenäisesti. Tehdaslin- jaston alussa syötettäisiin tällöin materiaali ja lopusta tulisi valmis tuote. Robotit ovat nykyään kokoamistöissä jo niin nopeita, etten usko niiden nopeuden enää jatkossa mer- kittävästi kasvavan. Ennemminkin sen sijaan tulevaisuudessa robottien muunneltavuutta voidaan kehittää niin, että samaa robottia voidaan ohjelmamuutoksen avulla käyttää eri käyttökohteisiin.

Tulevaisuudessa on mahdollista myös erilaisten uusien käyttökohteiden hyödyntäminen robotiikan avulla. Roboteista voidaan tehdä kooltaan erittäin pieniä esimerkiksi lääketie- teelliseen käyttöön, jossa niiden avulla voidaan korjata soluja ja avata verisuonia. Tä- män tieteenlajin kehitys on tietysti suotavaa, mutta samalla se herättää kysymyksiä siitä, miten saadaan hallittua näitä erittäin pieniä nanorobotteja turvallisesti.

Yksi mielenkiintoinen ja varmasti tulevaisuudessa eniten kehittyvä robotiikan ala on palvelurobotiikka. Palvelurobotiikan tehtävänä on palvella ja helpottaa ihmisen työtä.

Robotiikka on ollut perinteisesti enemmän teollisuuden suosima ala, mutta nyt se on tulossa myös koteihin erilaisten ihmisen toimintaa helpottavien laitteiden avulla. Tule- vaisuudessa kodeissa voi olla esimerkiksi androideja, joita voidaan opettaa tekemään erilaisia kodin askareita. Tuolloin ihminen voisi unohtaa ainakin siivoamisen ja pyykin- pesun.

Tässä tutkielmassa perehdyttiin olennaisena osana JADE-ohjelmistoagentteihin. JADE- ohjelmistoagentit ovat pieniä itsenäisesti toimivia ohjelmia, jotka kommunikoivat kes- kenään. Niille on määritelty tarkat standardit ja ne helpottavat ohjelmistoagenttien in- tegrointia yhteen. Ohjelmistoagenteille on luotu omat arkkitehtuurimallit, joita hyödyn-

(49)

49

tämällä saadaan helpotettua järjestelmien kehitystä ja tuotua ohjelmiston rakenteeseen sekä toimintaan selkeyttä.

Ohjelmistoagenttien hyödyntäminen osana robottien kehitystä on mahdollista. Tässä tutkielmassa ohjelmistoagentteja käytettiin viestien välittäjänä Pioneer-robotille. Idea itsessään oli mielenkiintoinen ja toimiva. Konkreettisemmaksi robotin ohjaaminen kui- tenkin muuttuisi vasta sitten, kun agentit saisivat robotin ohjaukseen tarvittavan tiedon joltakin itsenäisesti toimivalta anturilta. Näin ollen robotti voisi olla sekä itsenäisesti että agenteille lähetettävillä viesteillä ohjautuva.

Ohjelmistoagentin melko yksinkertaisesta perusrakenteesta johtuen yksinkertainen oh- jelmistoagentti ei tarvitse kovin suurta ohjelmointiosaamista. Sen sijaan robotin liikkei- den hallintaan perustuva, FT Mauno Rönkön ohjelmoima, C++-kielellä toteutettu robo- tin oman rajapinnan ja Pioneer-ohjelmistoagenttiohjelman välissä oleva ohjelma vaatii jo enemmän osaamista.

JADE-ohjelmistoagenttien luominen ja seuraaminen on tehty helpoksi, jos käyttää JA- DE:n omaa graafista ohjelmistoagenttisovellusta. Sillä pystyy luomaan agentteja ja lä- hettämään niille viestejä. Myös ohjelmistoagenttien viestien seuranta on tällöin vaiva- tonta. Ilman tätä mahdollisuutta agenttien välistä viestittelyä olisikin vaikea seurata.

Tämän tutkielman testijärjestelyissä testattiin JADE-ympäristön soveltumista robotin ohjaamiseen. Ohjelmistoagenttiympäristö toimi erittäin hyvin. Viestien lähettäminen robotille onnistui ongelmitta ja robotti liikkui täysin koordinaattien mukaan. Testauksen aikana ei havaittu virheitä.

Mikäli Pioneer-robotinohjausta haluttaisiin kehittää, täytyisi luoda jokin järjestelmä, joka osaisi generoida ohjausviestejä automaattisesti, kun esimerkiksi jokin este tulee eteen. Tällä nykyisellä tasolla järjestelmä on vielä melko yksinkertainen ja sitä ei voi käyttää kuin ainoastaan robotin liikuttamiseen avoimella alustalla, jossa esteet ovat hel- posti havaittavissa. Käytännön sovelluskohteet ovatkin melko vähissä nykyisen kaltai- selle ratkaisulle. Toivoisin, että joku ottaisi vielä tehtäväkseen idean kehittämisen. Pio- neer-robottia hyödynnetään nykyään lähinnä tutkimuskäytössä. Tulevaisuudessa muu- tamia käyttökohteita kyseiselle robotille reaalimaailmassa voi kuitenkin ilmaantua. Ro- bottia voisi nimittäin käyttää esimerkiksi tavaroiden kuljetukseen. Toisaalta, jos robot-

(50)

tiin kiinnitettäisiin videokamera ja valonlähde, sitä voitaisiin käyttää myös erilaisten ahtaiden paikkojen tutkimiseen.

Robottien käyttömahdollisuudet ovat nykyisinkin jo varsin laajat ja jatkossa niitä tullaan hyödyntämään entistä monipuolisemmin. Tällä hetkellä robotit ovat eritäin yleisesti käytössä teollisuudessa, mutta erityisesti yksityiselämässä niille voisi olla lukuisia käyt- tökohteita. Tulevaisuudessa onkin mahdollista automatisoida monia eri arjen askareita.

Kaupat voisivat olla suuria robottiautomaatteja, joille syötettäisiin ostoslistan mukainen tilaus ja robotti toimittaisi tuotteet varastosta. Lisäksi autot voisivat liikkua robotin oh- jaamana ja myös koiran ulkoiluttamisen sekä lumitöiden tekemisen voisi hoitaa robotti.

Tulevaisuudessa robottien ja niiden sovellusten käyttömahdollisuudet ovatkin lähes ra- jattomat.

(51)

51

LÄHTEET

[Ade12] Adept Technology Inc.: Pioneer P3-DX Datasheet. Mobilerobots Inc., 2012. http://www.mobilerobots.com/Libraries/Downloads/Pioneer3DX- P3DX-RevA.sflb.ashx (12.2.2013)

[BCG07] Bellifemine F., Caire G., and Greenwood D.: Developing Multi-Agent Sys- tems with JADE. John Wiley & Sons, Ltd, 2007.

[BCP03] Bellifemine, F., Claire, G., Poggi, A., and Rimassa, G.: JADE – A White Paper. Exp, Vol. 3, No. 3, September 2003. http://sharon.cselt.it/projects/

jade/papers/WhitePaperJADEEXP.pdf (12.2.2013)

[Enq99] Enqvist K.: Ihmisyys nanotekniikan peilissä. Duodecim, Vol. 23, pp.

2545–2550, 1999.

[FIP13] FIPA: The Foundation for Intelligent Physical Agents. FIPA, 2013.

http://www.fipa.org (12.2.2013)

[Fou02] Foundation for intelligent Physical Agents: FIPA Request Interaction Pro- tocol Specification. Foundation for Intelligent Physical Agents, SC00026H, 2002. http://www.fipa.org/specs/fipa00026/SC00026H.pdf (12.2.2013)

[Fou04] Foundation for Intelligent Physical Agents: FIPA Agent Management Specification. Foundation for Intelligent Physical Agents, SC00023K, 2004. http://www.fipa.org/specs/fipa00023/SC00023K.pdf (12.2.2013) [HoK96] Howard A. and Kichen L.: Generating Sonar Maps in Highly Specular

Environments. Proceeding of the Fourth International Conference on Control Automation Robotics and Vision, 1996, pp. 1870–1874.

[HSB03] Hähnel D., Schulz D., and Burgard W.: Mobile Robot Mapping in Popu- lated Environments. Advanced Robotics, Vol. 17, No. 7, pp.579–598, 2003.

(52)

[JAT10] Jade Administration Turorial: Turorial 1 – JADE Architecture Overview.

Jade Administration Turorial, 2010. http://jade.tilab.com/doc/tutorials/

JADEAdmin/jadeArchitecture.html (12.2.2013)

[Lah08] Lahden Ammattikorkeakoulu: Robotiikka. Verkkodokumentti, Lahden Ammattikorkeakoulu. http://miniweb.lpt.fi/automaatio/opetus/luennot/pdf _tiedostot/Robotiikka_yleinen.pdf (12.2.2013)

[Mob07] MobileRobots Inc.: Pioneer 3 Operations Manual. MobileRobots Inc., 2007. https://docs.google.com/viewer?a=v&q=cache:ty6vCdScjIkJ:143.

106.50.145:8080/Cursos/IA368N/02-09/P3OpMan5.pdf+Pioneer+3+Oper ations+Manual,+2007&hl=fi&gl=fi&pid=bl&srcid=ADGEEShgffXPXrpt v90SuNxTCf4HR1A9_UA_pDkpycGMhOnsgOcqwWI2vZeqKYYGnLU dTR6mES4ianG4LttbulQl6SJMLHVJlAvbngRwI8MnUYLNrY9G1-tksP EWT_o7I_19cvbH08C3&sig=AHIEtbR_dAa0s2t9Ob7XhHU4yHOOqwg sxQ (12.2.2013)

[New06] NewScientist: Robot Moved by a Slime Mould’s Fears. NewScientist, 2006. http://www.newscientist.com/article/dn8718 (12.2.2013)

[Nii09] Niininen J.: Ohjelmistoagentit robottiarkkitehtuurissa. Pro Gradu -tutkielma, Tietojenkäsittelytieteen laitos, Kuopion yliopisto, 2009.

[Rob99] Suomen Robotiikkayhdistys: Robotiikka. Suomen Robotiikkayhdistys, 1999.

[Tha97] Thau R.: Reliability Mapping a Robot’s Enviroment Using Fast Vision and Local, But not Global, Metric Data. Ph.D. Thesis, Massachusetts In- stitute of Technology, 1997.

[Thr02] Thrun S.: Robotic Mapping – A Survey. School of Computer Science, Car- negie Mellon University, Pittsburgh, USA, February 2002. http://reports- archive.adm.cs.cmu.edu/anon/2002/CMU-CS-02-111.ps (12.2.2013) [Wiki13] Wikipedia: ASIMO. Wikipedia, 2013. http://fi.wikipedia.org/wiki/ASIMO

(12.2.2013)

(53)

53

[Fou02a] Foundation for intelligent Physical Agents: FIPA Query Interaction Pro- tocol Specification. Foundation for Intelligent Physical Agents, SC00027H, 2002. Viitattu 26.3.2010, saatavilla osoitteesta:

http://www.fipa.org/specs/fipa00027/SC00027H.pdf

Viittaukset

LIITTYVÄT TIEDOSTOT

Tämän jälkeen pelasimme aiheeseen liittyen netistä löytyvää Geoguessr-peliä, josta oppilaat innostuivat. Oppilaat eivät kovin kauaa jaksaneet keskittyä tiettyyn aihealueeseen,

Tutkielmassa perehdytään sukupuolinäkökulman valtavirtaistamiseen suomalaisessa sotilaallisessa kriisinhallinnassa. Valtavirtaistamisen määritteleminen ja tulkinta vaihtelee

Tässä tutkielmassa käydään aluksi läpi teoriatasolla hyvän valvonnan periaatteita sekä lakiin perustuvaa omavalvontaa osana lastensuojelun nuorten sijoituskohteiden valvontaa..

Kappaleen paikoituksen jälkeen kappaleesta määritetään haluttu työstettävä alue, jolle lasketaan robotin liikerata skannaamaan robotin ranteeseen kiinnitetyllä

Maailmakoordinaatisto on robotin työskentely-ympäristöön, esimerkiksi rakennukseen, kuljettimeen tai robotin oheislaitteisiin sidottu robotin ulkopuolinen koordinaatisto

Maailmakoordinaatisto on robotin työskentely-ympäristöön, esimerkiksi rakennukseen, kuljettimeen tai robotin oheislaitteisiin sidottu robotin ulkopuolinen koordinaatisto

• Kävelyrobotiikalla on saatu lupaavaa tukea kuntoutumiseen ja hyötyjä myös heille, jotka eivät vammastaan toivu, mutta robotin avulla

Tutkielmassa käytiin läpi avoliittolain nojalla määrättävän hyvityksen sovittelun edellytyksiä. En- nen varsinaista käsittelyosiota tutkielmassa luotiin yleispiirteinen