Keresési algoritmus D*

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. szeptember 25-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A D* keresési algoritmus (ejtsd: "De Star" ) a három kapcsolódó növekményes keresési algoritmus bármelyike :

Mindhárom keresőalgoritmus ugyanazokat az útvonaltervezési feltevéseket oldja meg , beleértve a szabadterület-feltevésekkel [7] történő tervezést is, amikor a robotnak ismeretlen terepen meghatározott célkoordinátákra kell navigálnia. Feltételezéseket tesz a terep egy ismeretlen részével kapcsolatban (például, hogy nincsenek rajta akadályok), és ezen feltételezések alapján megtalálja a legrövidebb utat az aktuális koordinátáitól a cél koordinátáiig. A robot ezután követi az utat. Amikor új információt észlel a térképen (például korábban ismeretlen akadályokat), hozzáadja ezt az információt a térképéhez, és szükség esetén új legrövidebb utat tervez az aktuális koordinátáktól a megadott célkoordinátákig. A folyamatot addig ismétli, amíg el nem éri a célkoordinátákat, vagy megállapítja, hogy a célkoordinátákat nem lehet elérni. Ismeretlen terepen való áthaladáskor gyakran új akadályok fedezhetők fel, ezért ennek az újratervezésnek gyorsnak kell lennie. A növekményes (heurisztikus) keresési algoritmusok felgyorsítják a hasonló keresési problémák sorozatainak keresését, felhasználva a korábbi problémák megoldásának tapasztalatait, hogy felgyorsítsák az aktuális keresését. Feltételezve, hogy a célkoordináták nem változnak, mindhárom keresési algoritmus hatékonyabb, mint az ismételt A* keresés .

A D* -t és változatait széles körben használják mobil robotokhoz és autonóm navigációs járművekhez . A modern rendszerek általában a könnyű súlyon alapulnak , nem pedig az eredeti vagy fókuszált D* -on . Valójában még Stenz laborja is könnyűsúlyt használ az eredeti D* helyett [8] bizonyos megvalósításokban . Ilyen navigációs rendszerek közé tartozik az Opportunity és Spirit Mars-járókon tesztelt prototípusrendszer , valamint a DARPA Urban Challenge nyertesének navigációs rendszere , mindkettőt a Carnegie Mellon Egyetemen fejlesztették ki .

Az eredeti D* -t 1994 -ben vezette be Anthony Stentz . A D* név a " D dinamikus A* " kifejezésből származik, mivel az algoritmus úgy viselkedik, mint A * [2] , kivéve, hogy az ív költsége az algoritmus futása során változhat .

Műveletek

A D* főbb műveleteit az alábbiakban ismertetjük.

Dijkstra algoritmusához és A* -hoz hasonlóan a D* is fenntartja az értékelendő csomópontok listáját, amelyet OPEN listának neveznek . A csomópontok több állapotúként vannak megjelölve:

Kiterjesztés

Az algoritmus úgy működik, hogy iteratív módon kiválaszt egy csomópontot egy OPEN listából , és kiértékeli azt. Ezután továbbítja a csomópont módosításait az összes szomszédos csomópontra, és elhelyezi őket az OPEN listán . Ezt a terjesztési folyamatot "kiterjesztésnek" nevezik . A kanonikus A*-tól eltérően , amely az elejétől a végéig egy utat követ, a D* a célcsomóponttól visszafelé kezdi a keresést. Minden kiterjesztett csomópontnak van egy visszamutatója, amely a célhoz vezető következő csomópontra utal, és mindegyik csomópont ismeri a cél pontos költségét. Amikor a kezdő csomópont a következő csomópont, amelyet ki kell bővíteni, az algoritmus elkészül, és a célhoz vezető út egyszerűen a backticks követésével megtalálható.

Az akadályok leküzdése

Ha az adott úton akadályt találunk, az összes érintett pont ismét felkerül a NYITOTT listára , ezúttal UP jelzéssel . Mielőtt azonban növelné egy BOOSTER csomópont költségét , az algoritmus ellenőrzi a szomszédait, és megvizsgálja, hogy csökkentheti-e a csomópont költségét. Ellenkező esetben az UP állapot a csomópontok összes leszármazottjára, azaz a visszamutatókkal rendelkező csomópontokra kerül. Ezeket a csomópontokat ezután kiértékeli, és az UP állapotot továbbítja, hullámot képezve. Amikor egy UP csomópont csökkenthető, a háttérmutatója frissül, és átadja a DOWN állapotot a szomszédjainak. Ezek a FEL és LE hullámok a D* szíve .

Ezen a ponton a hullámok nem érinthetnek több pontot. Ezért az algoritmus csak azokkal a pontokkal működött, amelyeket értékváltozás érint.

Újabb zsákutca

Ezúttal lehetetlen ilyen elegánsan áttörni a holtpontról. Egyik pont sem talál új útvonalat a szomszédon keresztül a célhoz. Tehát folyamatosan propagálják az elismerésüket. Csak olyan csatornán kívüli pontokat találhat, amelyek egy járható útvonalon elvezethetnek egy célhoz. Így alakul ki két BOTTOM hullám, amelyek új útvonalinformációkkal elérhetetlennek jelölt pontokká bővülnek.

Pszeudokód

while ( ! openList . isEmpty ()) { point = openList . getFirst (); bővíteni ( pont ); }

Kibontás

void expand ( currentPoint ) { logikai érték isRaise = isRaise ( currentPoint ); dupla költség ; for every ( szomszéd az aktuálisPontban . getNeighbors ( )) { if ( isRaise ) { if ( szomszéd . nextPoint == currentPoint ) { szomszéd . setNextPointAndUpdateCost ( currentPoint ); openList . add ( szomszéd ); } else { költség = szomszéd . kalkulálni CostVia ( jelenlegi pont ); if ( költség < szomszéd . getCost ( )) { currentPoint . setMinimumCostTo CurrentCost (); openList . add ( currentPoint ); } } } else { költség = szomszéd . kalkulálni CostVia ( jelenlegi pont ); if ( költség < szomszéd . getCost ( )) { szomszéd . setNextPointAndUpdateCost ( currentPoint ); openList . add ( szomszéd ); } } } }

Ellenőrizze az emelkedést

logikai érték isRaise ( pont ) { double cost ; if ( pont . getCurrentCost () > pont . getMinimumCost ()) { for every ( szomszéd pontban . getNeighbors () ) { költség = pont . kalkulálni CostVia ( szomszéd ); if ( költség < pont . getCurrentCost ( )) { pont . setNextPointAndUpdateCost ( szomszéd ); } } } visszatérési pont . getCurrentCost () > pont . getMinimumCost (); }

Opciók

Fókuszált D*

Ahogy a neve is sugallja, a fókuszált D* a D* kiterjesztése, amely heurisztikusan fókuszálja a FEL és LE terjedését a robot irányába. Így csak a fontos állapotok frissülnek, ahogy az A* is csak egyes csomópontok költségeit számolja ki.

Könnyűsúlyú D*

A Lightweight D* nem az eredeti vagy fókuszált D*-n alapul , hanem ugyanazt a viselkedést valósítja meg. Könnyebben érthető, és kevesebb kódsorból is megtehető, innen ered a Lightweight D* elnevezés . Ugyanolyan jól teljesít, mint a fókuszált D* . A Lightweight D* az LPA*-n alapul [5] , amelyet König és Likhachev néhány évvel korábban vezetett be. fény D*

Minimális költség a jelenlegi költséghez képest

Fontos, hogy D* különbséget tegyen a jelenlegi és a minimális költségek között. Az előbbiek csak a gyűjtés során fontosak, míg az utóbbiak azért meghatározóak, mert az OPEN listát rendezik . A minimális költséget visszaadó függvény mindig az aktuális pont legalacsonyabb költsége, mivel ez az első bejegyzés az OPEN listában .

Jegyzetek

  1. Anthony Stentz (1994). „ Optimális és hatékony útvonaltervezés részben ismert környezetekhez ”. A Robotika és Automatizálás Nemzetközi Konferenciájának anyaga: 3310-3317. CiteSeerX  10.1.1.15.3683 .
  2. 1 2 E. Stentz (1995). „ Fókuszált D* algoritmus a valós idejű átütemezéshez ”. A Mesterséges Intelligenciával foglalkozó Nemzetközi Közös Konferencia anyaga: 1652-1659. CiteSeerX  10.1.1.41.8257 .
  3. Peter Elliot Hart, Niels John Nilsson, Bertram Raphael (1968). " Formális keretrendszer a minimális költségutak heurisztikus meghatározásához ." IEEE Transactions on Systems Science and Cybernetics . SSC-4(2): 100-107. DOI : 10.1109/TSSC.1968.300136 .
  4. Sven Koenig, Maxim Likhachev (2005). „ Navigáció gyors újratervezése ismeretlen területen ”. Tranzakciók a robotikában . 21 (3): 354-363. CiteSeerX  10.1.1.65.5979 . DOI : 10.1109/tro.2004.838026 .
  5. 1 2 Sven Koenig, Maxim Likhachev, David Fursey (2004). „ Életre szóló tervezés A* ”. Mesterséges intelligencia . 155 (1-2): 93-146. DOI : 10.1016/j.artint.2003.12.001 .
  6. G. Ramalingam, Thomas W. Reps (1996). „ Inkrementális algoritmus a legrövidebb út megtalálásának problémájának általánosítására ”. Journal of Algorithms . 21 (2): 267-305. CiteSeerX  10.1.1.3.7926 . DOI : 10.1006/jagm.1996.0046 .
  7. Sven Koenig, Jurij Szmirnov, Craig Tovey (2003). „ A teljesítmény határai a tervezéshez ismeretlen terepen ”. Mesterséges intelligencia . 147 (1-2): 253-279. DOI : 10.1016/s0004-3702(03)00062-6 .
  8. D. Wooden (2006).Útvonaltervezés gráf alapú mobil robotokhoz(tézis). Georgia Institute of Technology .

Linkek