Robottien probabilistisista reittikartta-algoritmeista
Robottien probabilistisista reittikartta-algoritmeista
Robottien probabilistisista reittikartta-algoritmeista
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/.