21.02.2014 Views

Robottien probabilistisista reittikartta-algoritmeista

Robottien probabilistisista reittikartta-algoritmeista

Robottien probabilistisista reittikartta-algoritmeista

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Robottien</strong> <strong>probabilistisista</strong><br />

<strong>reittikartta</strong>-<strong>algoritmeista</strong><br />

Mika Rantanen<br />

16. lokakuuta 2009


Reitinsuunnittelu<br />

• Reitinsuunnittelun tarkoituksena on löytää<br />

liikkuvalle robotille reitti alkuasemasta<br />

pääteasemaan.<br />

• Robotti ei saa liikkuessaan törmätä esteisiin.<br />

• Robotti voi olla mikä tahansa liikkuva kappale.<br />

• Reitinsuunnittelua voi pitää puhtaasti geometrisena<br />

ongelmana.


Reitinsuunnittelu<br />

• Ensimmäiset reitinsuunnitteluun liittyvät<br />

tutkimukset 1970-luvulla koskivat pianonsiirtäjän<br />

ongelmaa.<br />

• Tarkoituksena löytää reitti, jolla huoneessa oleva<br />

piano voidaan siirtää uuteen paikkaan niin, että<br />

piano ei siirrettäessä törmää muihin huonekaluihin.


Reitinsuunnittelu<br />

• Reitinsuunnittelun avulla on mahdollista saada<br />

robotit toimimaan nykyistä itsenäisemmin.<br />

• Reitinsuunnittelusta on hyötyä myös esimerkiksi<br />

tietokonepeleissä ja animoinnissa.<br />

• Eräs mielenkiintoinen sovelluskohde on biologia,<br />

jossa reitinsuunnittelua on mahdollista hyödyntää<br />

esimerkiksi proteiinien laskostumista tutkittaessa.


Reitinsuunnittelu<br />

• Reitinsuunnittelu on laskennallisesti erittäin vaativa<br />

tehtävä. Yleinen reitinsuunnitteluongelma on<br />

PSPACE-täydellinen.<br />

• Ongelman ratkaisemiseksi on kehitetty monia<br />

likimääräisiä menetelmiä.


Konfiguraatioavaruus<br />

• Jotta reitinsuunnittelu robotille olisi mahdollista,<br />

pitää olla olemassa jokin keino robotin ja esteiden<br />

aseman määrittelemiseen.<br />

• Konfiguraatioavaruuden ideaa sovellettiin<br />

reitinsuunniteluun ensimmäisen kerran 1980-luvun<br />

alussa.<br />

• Robotin konfiguraatio on lukumäärältään pienin<br />

joukko parametreja, joiden avulla robotin sijainti ja<br />

asento voidaan määritellä yksikäsitteisesti.


Konfiguraatioavaruus<br />

A 2<br />

θ 2<br />

• Kuvassa on<br />

yksinkertainen<br />

robottikäsivarsi, jossa<br />

on kaksi akselia A 1 ja<br />

A 2 ja kaksi niveltä.<br />

A 1<br />

• Robotin jokainen<br />

asento voidaan<br />

ilmoittaa kahden<br />

kulman avulla.<br />

• Robotin konfiguraatio<br />

voidaan siis ilmoittaa<br />

kahden parametrin<br />

avulla.


Konfiguraatioavaruus<br />

• Konfiguraatioavaruus on avaruus, joka sisältää<br />

kaikki robotin mahdolliset konfiguraatiot.<br />

• Jos robotin konfiguraatio käsittää d parametria, sitä<br />

voidaan pitää d-ulotteisen konfiguraatioavaruuden<br />

pisteenä.<br />

• Nyt voidaan tarkastella konfiguraatioavaruudessa<br />

liikkuvan pisteen liikettä eikä monimutkaisen<br />

robotin liikettä.


Konfiguraatioavaruus<br />

A<br />

• Kuvassa on robotti A<br />

ja kolme estettä.<br />

• Tässä esimerkissä<br />

vain robotin sijainti<br />

voi muuttua. Ei siis<br />

rotaatioita.<br />

• Robotin sijainti<br />

voidaan määritellä<br />

kahden koordinaatin<br />

avulla.


Konfiguraatioavaruus<br />

q<br />

• Kuvassa edellistä<br />

tilannetta vastaava<br />

kaksiulotteinen<br />

konfiguraatioavaruus.<br />

• Robotti A esitetään<br />

nyt konfiguraatioavaruuden<br />

pisteenä<br />

q.<br />

• Esteiden muoto on<br />

muuttunut.


Konfiguraatioavaruus<br />

• Konfiguraatioavaruus on harvoin vain<br />

kaksiulotteinen.<br />

• Jos edellisen esimerkin robotti olisi voinut kiertyä,<br />

olisi robotin aseman määrittelemiseen tarvittu<br />

kahden koordinaatin lisäksi yksi rotaatiokulma.<br />

Konfiguraatioavaruus olisi siis ollut kolmiulotteinen.<br />

• Kolmiulotteisessa avaruudessa vapaasti liikkuvan<br />

jäykän robotin aseman esittämiseen tarvitaan<br />

kolme koordinaattia ja kolme rotaatiokulmaa.<br />

Tällaisessa tapauksessa konfiguraatioavaruus olisi<br />

siis kuusiulotteinen.


Ratkaisumenetelmiä<br />

• Reitinsuunnitteluongelman ratkaisemiseksi<br />

kehitetty monenlaisia menetelmiä.<br />

• Osa menetelmistä on eksakteja ja osa likimääräisiä.<br />

• Eksaktit menetelmät yleensä liian hitaita ja<br />

epäkäytännöllisiä.<br />

• Likimääräiset algoritmit voidaan jakaa karkeasti<br />

kolmeen ryhmään:<br />

• potentiaalikenttämenetelmät,<br />

• solumenetelmät ja<br />

• <strong>reittikartta</strong>menetelmät.


Ratkaisumenetelmiä<br />

• Potentiaalikenttämenetelmissä robotti liikkuu<br />

keinotekoisessa potentiaalikentässä.<br />

• Potentiaalikentän avulla robottia voidaan ohjata<br />

pääteasemaa kohti.<br />

• Potentiaalikenttämenetelmissä monia puutteita.<br />

Robotti saattaa esimerkiksi helposti juuttua<br />

paikalliseen minimiin.


Ratkaisumenetelmiä<br />

• Solumenetelmissä vapaa konfiguraatioavaruus<br />

hajotetaan soluihin.<br />

• Menetelmä voi olla joko eksakti tai likimääräinen.


Ratkaisumenetelmiä<br />

• Reittikartta on graafi, jonka solmut ovat vapaita<br />

konfiguraatioita ja kaaret niitä yhdistäviä vapaita<br />

reittejä.


Probabilistiset <strong>reittikartta</strong>-algoritmit<br />

• Reittikartta on täydellinen, jos se kattaa koko<br />

vapaan konfiguraatioavaruuden.<br />

• Täydellisen reittikartan muodostaminen on yleensä<br />

vaikeaa etenkin monimutkaisissa ja<br />

moniulotteisissa konfiguraatioavaruuksissa.<br />

• Probabilististen menetelmien avulla epätäydellinen<br />

<strong>reittikartta</strong> voidaan muodostaa huomattavasti<br />

helpommin.


Probabilistiset <strong>reittikartta</strong>-algoritmit<br />

• Probabilistiset <strong>reittikartta</strong>-algoritmit jakautuvat<br />

kahteen osaan: oppimisvaiheeseen ja<br />

kyselyvaiheeseen.<br />

• Oppimisvaiheessa rakennetaan algoritmin<br />

tarvitsema <strong>reittikartta</strong>.<br />

• Kyselyvaiheessa olemassa olevan reittikartan avulla<br />

etsitään reitti robotille.


Oppimisvaihe<br />

V ← ∅<br />

E ← ∅<br />

repeat<br />

q ← jokin vapaa konfiguraatio<br />

V ← V ∪ {q}<br />

N q ← konfiguraation q naapurikonfiguraatiot<br />

for all q ′ ∈ N q do<br />

if q ja q ′ ovat eri komponentissa then<br />

if konfiguraatioiden q ja q ′ välille löytyy reitti then<br />

E ← E ∪ {(q, q ′ )}<br />

end if<br />

end if<br />

end for<br />

until joukossa V on riittävä määrä konfiguraatioita<br />

return G = (V, E)


Oppimisvaihe<br />

• Probabilistiset<br />

<strong>reittikartta</strong>-algoritmit<br />

perustuvat konfiguraatioavaruuden<br />

näytteistämiseen.<br />

• Kun konfiguraatio on valittu,<br />

tarkistetaan törmääkö robotti<br />

esteisiin kyseisessä<br />

konfiguraatiossa.<br />

• Jos konfiguraatio on vapaa, se<br />

lisätään <strong>reittikartta</strong>an.


Oppimisvaihe<br />

• Kun konfiguraatio on<br />

näytteistetty, valitaan<br />

reittikartasta sen<br />

naapurikonfiguraatiot.<br />

• Voidaan valita esimerkiksi kaikki<br />

tietyllä etäisyydellä olevat<br />

konfiguraatiot.


Oppimisvaihe<br />

• Lopuksi näytteistetty<br />

konfiguraatio pyritään<br />

yhdistämään<br />

naapurikonfiguraatioihin.<br />

• Yhdistäminen tapahtuu<br />

paikallisen suunnittelijan avulla.<br />

• Paikallinen suunnittelija pyrkii<br />

jollakin yksinkertaisella ja<br />

nopealla tavalla etsimään reitin<br />

kahden konfiguraation välille.


Oppimisvaihe<br />

• Oppimisvaiheen päättyessä reittikartan solmuina<br />

on konfiguraatioavaruuden vapaita konfiguraatioita.<br />

• Jos solmujen välillä on kaari, tiedetään, että<br />

paikallinen suunnittelija löytää tarvittaessa reitin<br />

solmuja vastaavien konfiguraatioiden välille.<br />

• Varsinaista reittiä ei siis tarvitse tallentaa<br />

<strong>reittikartta</strong>an.


Kyselyvaihe<br />

• Kyselyvaiheessa tavoitteena on löytää reitti<br />

alkuaseman ja pääteaseman välille aiemmin<br />

rakennetun reittikartan avulla.<br />

• Aluksi alkuasema ja pääteasema pyritään<br />

yhdistämään <strong>reittikartta</strong>an samalla tavalla kuin<br />

oppimisvaiheessa.<br />

• Jos yhdistäminen onnistuu, voidaan haluttu reitti<br />

löytää helposti graafihaulla.<br />

• Jos yhdistäminen ei onnistu, reitin etsiminen<br />

epäonnistuu. Tämä ei kuitenkaan tarkoita, että<br />

reittiä ei voisi oikeasti olla olemassa.


Käytännön toteutuksesta<br />

• Miten konfiguraatioita näytteistetään?<br />

• Miten tarkistetaan, törmääkö robotti esteisiin<br />

tietyssä konfiguraatiossa?<br />

• Miten naapurikonfiguraatiot valitaan tehokkaasti?<br />

• Miten paikallinen suunnittelija toteutetaan?<br />

• Milloin <strong>reittikartta</strong> on tarpeeksi kattava?


Törmäysten havaitseminen<br />

• Törmäysten havaitsemista tarvitaan sekä<br />

näytteistettäessä konfiguraatioita että paikallisen<br />

suunnittelijan etsiessä reittiä.<br />

• Vie helposti suuren osan <strong>reittikartta</strong>-algoritmien<br />

kuluttamasta ajasta.<br />

• Yleensä ns. ”musta laatikko”.<br />

• Valmiita, tehokkaita toteutuksia saatavilla etenkin<br />

jäykkien kolmiulotteisten kappaleiden törmäysten<br />

havaitsemiseen.


Naapurikonfiguraatioiden valinta<br />

• Tavoitteena on valita sellaisia konfiguraatioita,<br />

joihin näytteistetty konfiguraatio on mahdollista<br />

yhdistää ja joihin yhdistyminen tekee reittikartasta<br />

kattavamman.<br />

• Yleensä valitaan sellaisia konfiguraatioita, joiden<br />

etäisyys näytteistetystä konfiguraatiosta on<br />

mahdollisimman pieni.<br />

• Naapurikonfiguraatioiden valintaan kuluu helposti<br />

paljon laskenta-aikaa. Eräs tietorakenne, jota voi<br />

hyödyntää, on kd-puu.<br />

• Usein ei kuitenkaan ole tarpeellista löytää eksaktia<br />

ratkaisua, joten jonkinlaisten likimääräisalgoritmien<br />

käyttö voi olla paras ratkaisu.


Paikallinen suunnittelija<br />

q 1<br />

1 2 3 4 5 6 7<br />

q 1<br />

4 2 6 1 5 3 7<br />

q 2<br />

q 2<br />

• Paikallista suunnittelijaa käytetään reittien<br />

etsimiseen.<br />

• Se saa syötteenä kaksi konfiguraatiota, ja palauttaa<br />

sellaisen vapaan reitin, joka yhdistää nämä<br />

konfiguraatiot.<br />

• Yksinkertaisimmillaan paikallinen suunnittelija<br />

yrittää yhdistää konfiguraatiot suorinta reittiä<br />

pitkin.


Konfiguraatioiden näytteistäminen<br />

• Yksinkertaisimmillaan<br />

konfiguraatioita näytteistetään<br />

täysin satunnaisesti<br />

konfiguraatioavaruudesta.<br />

• Toinen vaihtoehto on käyttää<br />

valesatunnaista näytteistystä.<br />

• Usein näytteistämistä on<br />

kuitenkin mahdollista parantaa<br />

huomattavasti erilaisilla<br />

heuristisilla menetelmillä.


Konfiguraatioiden näytteistäminen<br />

• Siltanäytteistys pyrkii<br />

näytteistämään konfiguraatioita<br />

kapeissa käytävissä.<br />

• Aluksi näytteistetään kaksi<br />

konfiguraatiota, joista<br />

kumpikaan ei sijaitse vapaassa<br />

konfiguraatioavaruudessa.<br />

• Varsinainen konfiguraatio<br />

valitaan edellä valittujen<br />

konfiguraatioiden<br />

muodostaman janan eli ”sillan”<br />

puolivälistä.


Konfiguraatioiden näytteistäminen<br />

• Koska siltanäytteistyksen tavoitteena on<br />

näytteistää kapeita käytäviä, ei sillan alku- ja<br />

loppupäätä voi valita täysin satunnaisesti ja siksi<br />

yleensä ainakin sillan loppupää pyritään<br />

valitsemaan niin, että sillan pituudesta tulisi melko<br />

lyhyt.<br />

• Menetelmän heikkous on siinä, että se näytteistää<br />

vain kapeita käytäviä.<br />

• Menetelmää voikin helposti parantaa lisäämällä<br />

<strong>reittikartta</strong>an muutamia täysin satunnaisesti<br />

valittuja konfiguraatioita.


Näkyvyyslaueisiin perustuva menetelmä<br />

• Näkyvyysalueisiin perustuva menetelmä pyrkii<br />

tehostamaan <strong>reittikartta</strong>-algoritmeja pitämällä<br />

<strong>reittikartta</strong>an tulevien konfiguraatioiden määrän<br />

mahdollisimman pienenä.<br />

• Menetelmä kuitenkin samalla pitää huolen siitä,<br />

että <strong>reittikartta</strong> kattaa vapaan<br />

konfiguraatioavaruuden mahdollisimman hyvin.<br />

• Menetelmässä reittikartan konfiguraatiot jaetaan<br />

vartijoihin ja yhdistäjiin.


Näkyvyyslaueisiin perustuva menetelmä<br />

• Näytteistetystä konfiguraatiosta tulee vartija, jos se<br />

on alueella, jota mikään muu vartija ei näe.<br />

• Konfiguraatiosta tulee yhdistäjä, jos se voidaan<br />

yhdistää vähintään kahteen eri komponentissa<br />

olevaan vartijaan.<br />

• Muutoin konfiguraatiota ei lisätä <strong>reittikartta</strong>an<br />

ollenkaan.<br />

q 1 q 1<br />

q 2


Deaktivointimenetelmä<br />

• Kun oppimisvaiheessa näytteistetään<br />

konfiguraatioita, niitä kertyy ennen pitkää toistensa<br />

lähelle paljon.<br />

• Nämä konfiguraatiot taas kuuluvat todennäköisesti<br />

reittikartassa yhteen tai korkeintaan muutamaan<br />

erilliseen komponenttiin.<br />

• Tästä on haittaa naapurikonfiguraatioita valittaessa,<br />

sillä valituksi tulee tällöin lähinnä sellaisia<br />

konfiguraatioita, jotka jo valmiiksi kuuluvat samaan<br />

komponenttiin.


Deaktivointimenetelmä<br />

• Menetelmä ”deaktivoi” oppimisvaiheessa sellaiset<br />

näytteistetyt konfiguraatiot, jotka sijaitsevat jo<br />

valmiiksi useiden samassa komponentissa olevien<br />

konfiguraatioiden lähellä.<br />

• Dekativoituja konfiguraatioita ei enää myöhemmin<br />

valita naapurikonfiguraatioiksi.<br />

• Tämän seurauksena kasvaa todennäköisyys, että<br />

naapurikonfiguraatioiden joukossa on aina<br />

konfiguraatioita useista eri komponenteista.


Deaktivointimenetelmä<br />

• Deaktivointimenetelmä pyrkii siis nopeuttamaan<br />

reittikartan muodostamista vähentämällä turhaa<br />

laskentaa.<br />

• Se ei kuitenkaan pyri näkyvyysmenetelmän tavoin<br />

minimoimaan <strong>reittikartta</strong>an tulevien<br />

konfiguraatioiden lukumäärää.<br />

• Deaktivoidut konfiguraatiot voidaan kuitenkin<br />

poistaa reittikartasta kokonaan, jos ne eivät ole<br />

reittikartan kattavuuden kannalta tarpeellisia.


Kokeellinen tutkimus<br />

• Huone- ja rengastapauksen alkutilanne.


Kokeellinen tutkimus<br />

• Huonetapauksen ratkaisemiseen kulunut<br />

keskimääräinen aika sekunteina ja<br />

konfiguraatioiden lukumäärä reittikartassa.<br />

Satunnainen 14,9 11 665,2<br />

Satunnainen, deaktivointi 7,3 1 422,9<br />

Satunnainen, näkyvyys 26,9 31,7<br />

Silta 4,7 894,9<br />

Silta, deaktivointi 4,5 573,6<br />

Silta, näkyvyys 10,7 48,4


Kokeellinen tutkimus<br />

• Rengastapauksen ratkaisemiseen kulunut<br />

keskimääräinen aika sekunteina ja<br />

konfiguraatioiden lukumäärä reittikartassa.<br />

Satunnainen 2 333,1 569 778,5<br />

Satunnainen, deaktivointi 498,8 1 730,2<br />

Satunnainen, näkyvyys 3 338,5 945,8<br />

Silta 227,1 26 356,3<br />

Silta, deaktivointi 188,6 1 924,1<br />

Silta, näkyvyys 400,5 660,0


Kirjallisuutta<br />

• H. Choset, K. M. Lynch, S. Hutchinson, G. Kantor, W.<br />

Burgard, L. E. Kavraki, and S. Thrun. Principles of<br />

Robot Motion: Theory, Algorithms, and<br />

Implementations. MIT Press, Cambridge, MA, 2005.<br />

• S. M. LaValle. Planning Algorithms. Cambridge<br />

University Press, Cambridge, U.K., 2006. Available<br />

at http://planning.cs.uiuc.edu/.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!