Robot programavimo technologijos
This presentation is the property of its rightful owner.
Sponsored Links
1 / 79

Robotų programavimo technologijos PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on
  • Presentation posted in: General

Robotų programavimo technologijos. T125B114 2012 m Robertas Damaševičius r obertasdamasevicius @ktult. Klasikiniai robotų valdymo algoritmai. Klasikiniai algoritmai. Klasikiniai algoritmai Klajojimo algoritmai Kliūčių vengimo algoritmai Linijos sekimo algoritmai

Download Presentation

Robotų programavimo technologijos

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Robot programavimo technologijos

Robotų programavimo technologijos

T125B114

2012 m

Robertas Damaševičius

[email protected]


Klasikiniai robot valdymo algoritmai

Klasikiniai robotų valdymo algoritmai


Klasikiniai algoritmai

Klasikiniai algoritmai

  • Klasikiniai algoritmai

    • Klajojimo algoritmai

    • Kliūčių vengimo algoritmai

    • Linijos sekimo algoritmai

    • Sienos sekimo algoritmai

    • Kelio planavimo algoritmai

      • „Bug“ algoritmų šeimyna

    • Labirinto praėjimo algoritmai


Klajojimo roaming algoritmai

Klajojimo (roaming) algoritmai

  • Kad būtų autonomiškas, robotas turi sugebėti siekdamas savo tikslo (užduočių įvykdymo) pats nuspręsti, kaip aplenkti kliūtis:

    • vengti kliūčių arba

    • apeiti kliūtis autonomiškai

  • Kaip robotas gali išvengti kliūčių:

    • Apsisukti ir keliauti tolyn nuo kliūties

    • Pasukti toliau nuo kliūties, bet neapsisukti visiškai

    • Aplenkti kliūtį ir keliauti toliau ta pačia kryptimi

    • Jei kliūtis yra mobilus objektas, palaukti kol ji pasitrauks

    • Aukščiau aprašytų veiksmų kombinacija


Papr roboto klajojimo algoritmas

Papr. roboto klajojimo algoritmas

  • Ar kelias roboto priekyje yra laisvas?

    • Jei laisvas, robotas pajuda į priekį per vieną poziciją

    • Jei užimtas, robotas pasuka į šoną atsitiktiniu kampu ir tęsia savo kelionę toliau, kol nesutinka kitos kliūties

RoamAround:

while true // roam forever

// move forward until an object is found

while rFeel( )=0

rForward 1

wend

// turn 180 degrees plus or minus 30 degrees

rTurn 150 + random (60)

wend

Return


Roboto klajojimo algoritmas su krypties patikrinimu

Roboto klajojimo algoritmas su krypties patikrinimu

  • Trūkumas: robotas gali įstrigti tarp dviejų kliūčių

  • Patobulinimas: prieš posūkį patikrinti, ar naujoje roboto trajektorijoje nėra kliūčių ir sukti tik laisva kryptimi

RoamAround:

while true // forward until an object is found

while rFeel( )=0

rForward 1

wend

// try to intelligently turn away from the object

if rFeel()&3 then Ta = -45 // object on right,turn left

if rFeel()&24 then Ta = 45 // object on left,turn right

if rFeel()&4 then Ta = 160 // object infront,turn around

// turn Ta deg plus a random amount no more than 40 deg

rTurn Ta+random(40)*sign(Ta)

wend

Return


Reaktyvioji klajojimo architekt ra

Reaktyvioji klajojimo architektūra

Šaltinis: RF Guedes, LP Reis, A Sousa Efficient Robotics using the Lego NXT Platform and Net


Klasikiniai algoritmai1

Klasikiniai algoritmai

  • Klasikiniai algoritmai

    • Klajojimo algoritmai

    • Kliūčių vengimo algoritmai

    • Linijos sekimo algoritmai

    • Sienos sekimo algoritmai

    • Kelio planavimo algoritmai

      • „Bug“ algoritmų šeimyna

    • Labirinto praėjimo algoritmai


Kli i ap jimo algoritmas 1

Kliūčių apėjimo algoritmas (1)

  • Priekyje kliūties nėra

  • M1 – į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Kli i ap jimo algoritmas 2

Kliūčių apėjimo algoritmas (2)

  • Kliūtis iš dešinės

  • M1 – stop / lėtai į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Kli i ap jimo algoritmas 3

Kliūčių apėjimo algoritmas (3)

  • Kliūtis iš kairės

  • M1 – į priekį

  • M2 – stop / lėtai į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Kli i ap jimo algoritmas 4

Kliūčių apėjimo algoritmas (4)

  • Kliūtis tiesiai priešais robotą

  • M1 – į priekį

  • M2 – atgal

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Klasikiniai algoritmai2

Klasikiniai algoritmai

  • Klasikiniai algoritmai

    • Klajojimo algoritmai

    • Kliūčių vengimo algoritmai

    • Linijos sekimo algoritmai

    • Sienos sekimo algoritmai

    • Kelio planavimo algoritmai

      • „Bug“ algoritmų šeimyna

    • Labirinto praėjimo algoritmai


Linijos sekimo algoritmas 1

Linijos sekimo algoritmas (1)

  • Linija yra tiesiai po robotu

  • M1 – į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Linijos sekimo algoritmas 2

Linijos sekimo algoritmas (2)

  • Linija yra į dešinę nuo roboto

  • M1 – į priekį

  • M2 – nejuda / lėtai į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Linijos sekimo algoritmas 3

Linijos sekimo algoritmas (3)

  • Linija yra į kairę nuo roboto

  • M1 – nejuda / lėtai į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Linijos sekimo algoritmas 4

Linijos sekimo algoritmas (4)

  • Linija staigiai suka į dešinę

  • M1 – į priekį

  • M2 – atgal

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Linijos sekimo algoritmas 5

Linijos sekimo algoritmas (5)

  • Linija staigiai suka į kairę

  • M1 – atgal

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Linijos sekimo algoritmas

Linijos sekimo algoritmas

  • Linijos sekimas naudinga, kai robotui reikia pateikti iš vieno taško į kitą be jokių kliūčių savo kelyje

    • Galima išvengti sudėtingo kliūčių vengimo algoritmo programavimo

    • Robotas gali sekti ant grindų nupieštą liniją

  • Tarkime, kad robotas turi 3 jutiklius:

    • vienas yra sumontuotas tiesiogiai roboto priekyje

    • kiti 2 yra sumontuoti į kairę ir į dešinę nuo pirmojo jutiklio

  • Jutiklių gražinamos reikšmės yra išvardintos žemiau

    a = rSense( )

    if a & 1 then right sensor sees the line

    if a = 4 then only the left sensor sees the line

    if a & 6 then left OR middle OR both sensors see the line

    if a true then any sensor sees the line

    if (a = 2) then only the middle sensor sees the line

    if a & 7 then any sensor sees the line

    if a = 7 then ALL the sensors see the line


Papras iausias linijos sekimo algoritmas

Paprasčiausias linijos sekimo algoritmas

  • Sekama beveik tiesia linija

FollowLine:

while true

if rSense() & 1 then rTurn 1

if rSense() & 4 then rTurn -1

rForward 1

wend

Return


Patobulintas linijos sekimo algoritmas su jutikli tikrinimu

Patobulintas linijos sekimo algoritmas su jutiklių tikrinimu

  • Roboto jutikliai nuolat tikrina, ar robotas seka liniją

  • Tik jei jutikliai nemato linijos 50 kartų iš eilės, robotas sustoja

FollowLine:

c=0

while c<50 //exit loop if line is not seen for 50 tries

if rSense() & 1 then rTurn 1

if rSense() & 4 then rTurn -1

rForward 1

if rSense() // if any sensor sees the line

c = 0 // start the counter over

else

c = c + 1 // increment counter if no line is seen

endif

wend

Return


Patobulintas linijos sekimo algoritmas

Patobulintas linijos sekimo algoritmas

  • Tačiau ir pastarasis algoritmas veikia blogai, jei linijoje yra staigių posūkių, ty jei linija pasisuka staigiau negu gali suktis robotas

  • Tada robotas prašoka posūkį, juda toliau ir jau negali aptikti linijos

  • Galimi du sprendimai:

    • 1) toliau suktis tol, kol vėl bus aptikta linija;

    • 2) prisiminti kelią, kuriuo būtų galima grįžti atgal


Linijos sekimo algoritmas su pos ki kartojimu staigiuose linijos pos kiuose

Linijos sekimo algoritmas su posūkių kartojimu staigiuose linijos posūkiuose

  • Robotas toliau sukasi, kol vėl bus aptikta linija

  • Trūkumas: robotas staigiuose posūkiuose bus lėtesnis, nes turės atlikti daugiau posūkių

FollowLine:

while true

rForward 1

while rSense() & 1

rTurn 1

wend

while rSense() & 4

return -1

wend

wend

Return


Linijos sekimo algoritmas su gr imu

Linijos sekimo algoritmas su grįžimu

  • Robotas judės greičiau, bet kartais (linijos pametimo atveju) turės sugrįžti atgal

  • Kadangi, jo jutikliai jau negali sekti linijos, robotas nežino, kur reikia sukti toliau, todėl jis grįžta keliu, kurį įsiminė

  • Tačiau, tai gali būti nesaugu, nes robotas judės nepažymėta trajektorija


Linijos sekimo algoritmas su gr imu1

Linijos sekimo algoritmas su grįžimu

  • Jei visi jutikliai neaptinka linijos, grįžtama kryptimi, priešingai paskutinio posūkio krypties reikšmei

  • Robotui kiekviename linijos posūkyje pakanka tik 1 posūkio, tačiau linijos pametimo atveju reikia atlikti 3 posūkius

  • Jei linija pasisuka > 90º, robotas vis tiek gali pamesti liniją

FollowLine:

while true

if rSense() & 1

rTurn 1

LastTurn = 1 //remember which direction we WERE turning

endif

if rSense() & 4

rTurn -1

LastTurn = -1 // remember which direction we WERE turning

endif

rForward 2 // move forward twice

if rSense()=0

rTurn 3*LastTurn // if we lose the line make a BIG

endif // turn back towards it

wend

Return


Patobulintas linijos sekimo algoritmas staigiems linijos pos kiams veikti

Patobulintas linijos sekimo algoritmas staigiems linijos posūkiams įveikti

FollowLine:

while true

rForward 1

if rSense() = 3

rForward 20 //move the centre over the corner

while rSense() = 0

rTurn 1 //turn back to the line

wend

endif

if rSense() = 6

rForward 20 //move the centre over the corner

while rSense() = 0

rTurn -1 //turn back to the line

wend

endif

//-- reposition over the line

while rSense() & 1

rTurn 1

wend

while rSense() & 4

return -1

wend

wend

Return


Linijos sekimo algoritm palyginimas 1

Linijos sekimo algoritmų palyginimas (1)

  • Algoritmas 1 – FOLLOW GRAY

  • Algoritmas 2 – ONE INSIDE

  • Algoritmas 3 – ONE BOUNCE

  • Algoritmas 4 – STRADDLE

  • Algoritmas 5 – TWO INSIDE

  • Algoritmas 6 – TWO BOUNCE

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 2

Linijos sekimo algoritmų palyginimas (2)

  • Algoritmas: FOLLOW GRAY

  • Robotas seka linijos kraštą:

    • Jei aptinka „pilka“, robotas važiuoja tiesiai

    • Jei aptinka „juoda“, suka į kairę

    • Jei aptinka „balta“, suka į dešinę

  • Jutikliai: 1 priekyje

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 3

Linijos sekimo algoritmų palyginimas (3)

  • Algoritmas: ONE INSIDE

  • Robotas juda zigzagu išilgai linijos ir kartoja:

    • Suka į kairę, kol aptinka „balta“

    • Suka į dešinę, kol aptinka „juoda“ ir vėl „balta“

    • Suka į kairę, kol aptinka „balta“ ir vėl „juoda“

  • Jutikliai: 1 priekyje

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 4

Linijos sekimo algoritmų palyginimas (4)

  • Algoritmas: ONE BOUNCE

  • Robotas „atšoka“ nuo linijos krašto

  • Kartoja:

    • Suka į kairę, kol aptinka „balta“

    • Suka į dešinę, kol aptinka „juoda“

  • Jutikliai: 1 priekyje

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 5

Linijos sekimo algoritmų palyginimas (5)

  • Algoritmas: STRADDLE

  • Jutikliai išdėstomi linijos šonuose

    • Jei abu jutikliai rodo „balta“, robotas važiuoja tiesiai

    • Jei kairysis jutiklis rodo „juoda“, robotas suka į kairę

    • Jei dešinysis jutiklis rodo „juoda“, robotas suka į dešinę

  • Jutikliai: 2 priekyje

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 6

Linijos sekimo algoritmų palyginimas (6)

  • Algoritmas: TWO INSIDE

  • Jutikliai išdėstyti linijos viduje

    • Jei abu jutikliai rodo „juoda“, robotas važiuoja tiesiai

    • Jei kairysis jutiklis rodo „balta“, robotas suka į dešinę

    • Jei dešinysis jutiklis rodo „balta“, robotas suka į kairę

  • Jutikliai: 2 priekyje

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 7

Linijos sekimo algoritmų palyginimas (7)

  • Algoritmas: TWO BOUNCE

  • Robotas atšoko nuo linijos krašto

    • Suka į dešinę, kol priekinis jutiklis aptinka „balta“

    • Suka į kairę stovėdamas vietoje, kol užpakalinis jutiklis aptinka „juoda“

    • Suka į dešinę, kol priekinis jutiklis aptinka „juoda“ ir t.t.

  • Jutikliai: 2(1 – priekyje, 1 - gale)

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Linijos sekimo algoritm palyginimas 8

Linijos sekimo algoritmų palyginimas (8)

Šaltinis: JA Gray Toeing the Line: Experiments with Line-following Algorithms


Sud tingesn problema

Sudėtingesnė problema

  • Linijos sekimas, kai yra susikertančių linijų (t.y. sankryžos)

  • Reikia daugiau jutiklių


Klasikiniai algoritmai3

Klasikiniai algoritmai

  • Klasikiniai algoritmai

    • Klajojimo algoritmai

    • Kliūčių vengimo algoritmai

    • Linijos sekimo algoritmai

    • Sienos sekimo algoritmai

    • Kelio planavimo algoritmai

      • „Bug“ algoritmų šeimyna

    • Labirinto praėjimo algoritmai


Sienos sekimo algoritmas

Sienos sekimo algoritmas

  • Roboto užduotis yra sekti objekto kontūrą

  • Jei robotas aptinka savo judėjimo kelyje objektą, jis gali keliauti aplink objektą judėdamas jo perimetru


Sienos sekimas 1

Sienos sekimas (1)

  • Robotas yra lygiagretus sienai

  • M1 – į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Sienos sekimas 2

Sienos sekimas (2)

  • Robotas juda tolyn nuo sienos

  • M1 – į priekį

  • M2 – stop / lėtai į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Sienos sekimas 3

Sienos sekimas (3)

  • Robotas artėja prie sienos

  • M1 – stop / lėtai į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Sienos sekimas 4

Sienos sekimas (4)

  • Robotas yra per arti sienos

  • M1 – stop / lėtai į priekį

  • M2 – į priekį

Šaltinis: http://www.mlees-robotronics.in/home/robotics/


Realizacija p valdikliu

Realizacija P valdikliu


Papras iausias sienos sekimo algoritmas

Paprasčiausias sienos sekimo algoritmas

  • Trūkumai:

    • robotas juda lankais vietoje to, kad judėtų lygiagrečiai sienos

    • robotas atsitrenkia į sieną esant pirmam staigiam jos posūkiui

FollowWall:

while true

// anything on right makes you turn left

while rFeel() & 3

rTurn -1

wend

rForward 1

rTurn 1

wend

Return


Patobulintas sienos sekimo algoritmas

Patobulintas sienos sekimo algoritmas

FollowWall:

if TurnDir > 0

FN = 6

else

FN = 12

endif

while true

while (rFeel()&FN) or (rBumper()&4)

// if bumper detects a wall

rTurn -TurnDir

wend

rForward 1

rTurn TurnDir

wend

Return


Draud iam zon vengimas

Draudžiamų zonų vengimas

  • Tikslas:

    • robotas turi būti (arba vengti) tam tikroje zonoje, kuri neapribota sienomis arba kitokiais barjerais

  • Robotas gali judėti laisvai, turi sugebėti apeiti kliūtis

  • Galimi sprendimai:

    • nubrėžtos linijos,

    • infraraudonųjų spindulių barjeras,

    • palaidotas elektros laidas, kuriuos galėtų aptikti roboto jutikliai;

    • GPS koordinatės ir GPS imtuvas


Klasikiniai algoritmai4

Klasikiniai algoritmai

  • Klasikiniai algoritmai

    • Klajojimo algoritmai

    • Kliūčių vengimo algoritmai

    • Linijos sekimo algoritmai

    • Sienos sekimo algoritmai

    • Kelio planavimo algoritmai

      • „Bug“ algoritmų šeimyna

    • Labirinto praėjimo algoritmai


Kelio planavimo algoritmai

Kelio planavimo algoritmai

  • HD-I

  • Ave

  • VisBug-21

  • VisBug-22

  • WedgeBug

  • CautiousBug

  • 3DBug

  • Angulus

  • Optim-Bug

  • UncertainBug

  • SensBug

  • K-Bug

  • ABUG

  • T2

  • Bug-0

  • Bug1

  • Bug2

  • Alg1

  • Alg2

  • DistBug

  • TangentBug

  • Class1

  • Rev1

  • Rev2


Problem a

Pradžia

Pabaiga

Problema

Laisva erdvė

kliūtis

kelias

kliūtis

kliūtis


Lumelsky bug algoritmai

Lumelsky „Bug“algoritmai

  • Prielaidos:

    • Pasaulis yra dvimatė plokštuma

    • Žinoma kelio pradžia ir pabaiga

    • Kliūtys nežinomos

    • Robotas modeliuojamas kaip taškas plokštumoje

    • Robotas žino savo padėtį

    • Naudojami paprasti susidūrimo jutikliai

    • Robotas gali suktis bet kuria kryptimi


Bug 0 algoritmas

Pabaiga

Pradžia

Bug-0 Algoritmas

Kartoti:

  • Eiti link tikslo

  • Jei pasiektas tikslas, sustoti

  • Jei kliūtis – sekti kliūties kraštu į kairę tol, kol vėl galima eiti link tikslo

2

1

3

1

3

1


Bug 0 tr kumas negali garantuoti pabaigos pasiekimo

Pabaiga

Pabaiga

Pradžia

Pradžia

Bug-0 trūkumas: negali garantuoti pabaigos pasiekimo

Ne!


Bug 1 algoritmas

Bug-1 Algoritmas

  • Kartoti:

  • Eiti link tikslo

  • Jei pasiektas tikslas, sustoti

  • Jei kliūtis – eiti aplink kliūtį ir ieškoti taško Li, artimiausio tikslui

  • Grįžti trumpiausiu keliu prie Li

L2

Pabaiga

L1

Pradžia


Bug 1 tr kumas negali nustatyti kad tikslas nepasiekiamas

Bug-1 trūkumas: negali nustatyti, kad tikslas nepasiekiamas

  • Kartoti:

  • Eiti link tikslo

  • Jei pasiektas tikslas, sustoti

  • Jei kliūtis – eiti aplink kliūtį ir ieškoti taško Li, artimiausio tikslui

  • Grįžti trumpiausiu keliu prie Li

  • Jei vektorius nuo Lilink pabaigos rodo į kliūtį, tuomet tikslo pasiekti negalima, sustoti

Pabaiga

L1

Pradžia


Bug 2 algoritmas

Bug-2 Algoritmas

Kartoti:

  • Eiti link tikslo išilgai tikslo linijos

  • Jei tikslas pasiektas, sustoti

  • Jei pasiektas susidūrimo taškas, sukti į kairę ir sekti kliūties siena tol, kol pasiekiama tikslo linija ties nuvažiavimo tašku arčiau tikslo nei ankstesni susidūrimo taškai

Pabaiga

nuvažiavimo

taškas

susidūrimo taškas

Tikslo linija

Pradžia


Bug 1 ir bug 2 palyginimas

Bug-2 geriau nei Bug-1

Bug-1 geriau nei Bug-2

Pabaiga

Pradžia

Bug-1 ir Bug-2 palyginimas

Pabaiga

Pradžia


Bug 2 algoritmas1

Pradžia

Pabaiga

Bug-2‘ algoritmas

Kartoti:

  • Eiti link tikslo išilgai tikslo linijos

  • Jei tikslas pasiektas, sustoti

  • Jei pasiektas susidūrimo taškas, sukti į kairę ir sekti kliūties siena tol, kol pasiekiama tikslo linija ties nuvažiavimo tašku, kuris nebuvo aplankytas anksčiau

  • If a hit point is reached then follow the obstacle’s boundary (toward the left) until the goal-line is crossed at a leave point that has not been visited yet


Bug 1 ir bug 2 palyginimas1

Bug-1 ir Bug-2 palyginimas


Savaranki koms studijoms

Savarankiškoms studijoms

  • TangentBug

  • Alg-1

  • Alg-2

  • DistBug

  • Rev-1

  • Rev-2


Tangent bug algoritmas

Tangent Bug algoritmas

  • Bug-2 algoritmo patobulinimas

  • Nustato trumpesnį kelią iki tikslo naudodamas atstumo daviklį su 360º apžvalgos lauku


Tangent bug algoritmas1

Tangent Bug algoritmas

WHILE

REPEAT

continuously move toward the point n belong to [T, O(i)] which minimizes d(x, n) + d(n, q_goal)

UNTILthe goal is encountered OR

the direction that minimizes d(x, n) + d(x, q_goal) begins to increase d(x, q_goal)

choose a boundary following direction which continues in the same direction as the most recent motion-to-goal direction

REPEAT

continuously update d_reach, d_followed, and [O(i)]

continuously moves toward n belong to [O(i)] that is in the chosen boundary direction

UNTILq_goal is reached OR

the robot completes a cycle around the obstacle in which case the goal cannot be achievedd_reach < d_followed

END


Tangent bug algoritmas2

Tangent Bug algoritmas


Alg 1 sankaranarayanan algoritmas

Alg-1 (Sankaranarayanan) algoritmas

0) Initially, plot an imaginary line M directly from start to target andinitializei to 0.

1) Increment iand follow the M line toward the target until either:

  • The target is reached. Stop

  • An obstacle is hit. Define this point Hi. Go to step 2

    2) Keeping the obstacle on the right, follow the obstacle boundary. Dothis until one of the following occurs:

  • The target is reached. Stop.

  • A point y is found such thato it is on M, o d(y, T) < d(x, T) for all x ever visited by the robot along Mando The robot can move towards the target at y.

    Define this point Li and go to step 1.

  • A previously defined point Hjor Ljis encountered such that j<i.

  • Turn around and return to Hi. When Hi is reached, follow theobstacle boundary keeping the wall on the left. This rule cannot beapplied again until Li is defined.

  • The robot returns to Hi. The target is unreachable. Stop

Šaltinis: James Ng. An Analysis of Mobile Robot Navigation Algorithms in Unknown Environments. 2010


Alg 2 algoritmas

Alg-2 algoritmas

0) InitialiseQ = d(S, T) and ito 0.

1) Increment iand proceed in the direction of the target whilstcontinuously updating Q to d(x, T) if Q < d(x, T). Q should nowrepresent the closest point the robot has ever been to the target. Do thisuntil one of the following occurs:

  • The target is reached. Stop

  • An obstacle is encountered. Label this point Hi and proceed to step 2.

    2) Keeping the obstacle on the right, follow the obstacle boundary whilstcontinuously updating Q to d(x, T) if Q < d(x, T) until one of thefollowingoccurs:

  • The target is reached. Stop

  • A point y is found suchthatd(y,T) < d(Q,T) andThe robot can move towards the target at y.Define this point Li and proceed to step 1.

  • A previously defined point Hjor Ljis encountered such that j<i.Return to Hi. When Hi is reached, follow the obstacle boundarykeeping the wall on the left. This rule cannot be applied again untilLiisdefined.

  • The robot returns to Hi. The target is unreachable. Stop.

Šaltinis: James Ng. An Analysis of Mobile Robot Navigation Algorithms in Unknown Environments. 2010


Distbug kamon rivlin algoritmas

DistBug (Kamon-Rivlin) algoritmas

0) Initialisei=0 and Step to the wall thickness (this is the minimumthickness of an obstacle in the environment. It must be entered by theuser and is a drawback of this algorithm).

1) Increment iand move toward target until one of the followingoccurs:

  • The target is reached. Stop.

  • An obstacle is reached. Denote this point Hi. Go to step 2.

    2) Turn left and follow the obstacle boundary whilst continuouslyupdating the minimum value of d(x, T) and denote this value dmin(T).Keep doing this until one of the following occurs:

  • The target is visible: d(x,T) - F <=0 . Denote this point Li. Go tostep1.

  • The range based leaving condition holds: d(x,T) - F <=dmin(T) - Step.

    Denote this point Li. Go to step 1.

  • Robot completed a loop and reached Hi. The target is unreachable. Stop.

Šaltinis: A. YUFKA, O. PARLAKTUNA. PERFORMANCE COMPARISON OF BUG ALGORITHMS FOR MOBILE ROBOTS

http://iats09.karabuk.edu.tr/press/bildiriler_pdf/iats09_01-01_1254.pdf


Distbug

DistBug

  • Animacija:

    http://msl.cs.uiuc.edu/~lavalle/cs476_1998/projects/wind/DistBug.html

  • Realizacija:

    http://msl.cs.uiuc.edu/~lavalle/cs476_1998/projects/wind/download/RobotMotion.zip


Distbug palyginimas su bug1 ir bug2

DistBug palyginimas su Bug1 ir Bug2

Bug2

DistBug

Bug1

Šaltinis: A. YUFKA, O. PARLAKTUNA. PERFORMANCE COMPARISON OF BUG ALGORITHMS FOR MOBILE ROBOTS.

http://iats09.karabuk.edu.tr/press/bildiriler_pdf/iats09_01-01_1254.pdf


Distbug palyginimas su bug1 ir bug21

DistBug palyginimas su Bug1 ir Bug2

Šaltinis: A. YUFKA, O. PARLAKTUNA. PERFORMANCE COMPARISON OF BUG ALGORITHMS FOR MOBILE ROBOTS

http://iats09.karabuk.edu.tr/press/bildiriler_pdf/iats09_01-01_1254.pdf


Rev1 horiuchi noborio algoritmas

Rev1 (Horiuchi-Noborio) algoritmas

1. Move towards the target until the following occurs:

(1a) If a robot arrives at T, exit with success.

(1b) If the robot encounters an uncertain obstacle, set a hit point Hi and register the details into the Hlist and Plist.

2. The direction is checked at Hi and Hlist, and if both directions were already checked at Hi, it is immediately eliminated in Hlist. Then, a robot faithfully traces an obstacle by the direction Dir until the following occurs:

(2a) If a robot R arrives at T, exit with success.

(2b) If the distance to target is shorter than any distance previously encountered (the metric condition), the robot is on the M-line (the segment condition) and the robot can go straight to target (the physical condition), then record the leaving details in the Plist, change Dir and go back to step 1.

(2c) If a robot R returns to the last hit point Hi exit with failure. In this case, T is completely enclosed by obstacle boundary.

(2d) If a robot returns to a past hit point, the former point Hk is memorized as the same later point Ql into Hlist. Then, the robot returns to the hit point Hi using the shortest path as determined by the Hlist and Plist. Once the robot has returned to Hi follow the wall in the opposite direction than previously.

(2e) If the robot returns to a past leave point, the former point is memorized as the same later point into Hlist. Then, the robot returns to the hit point Hi using the shortest path as determined by the Hlist and Plist. Once the robot has returned to Hi follow the wall in the opposite direction than previously.


Rev2 horiuchi noborio algoritmas

Rev2 (Horiuchi-Noborio) algoritmas

1. Move towards the target until the following occurs:

(1a) If a robot arrives at T, exit with success.

(1b) If the robot encounters an uncertain obstacle, set a hit point Hi and register the details into the Hlist and Plist.

2. The direction is checked at Hi and Hlist, and if both directions were already checked at Hi, it is immediately eliminated in Hlist. Then, a robot faithfully traces an obstacle by the direction Dir until the following occurs:

(2a) If a robot R arrives at T, exit with success.

(2b) If the distance to target is shorter than any distance previously encountered (the metric condition) and the robot can go straight to target (the physical condition), then record the leaving details in the Plist, change Dir and go back to step 1.

(2c) If a robot R returns to the last hit point Hi exit with failure. In this case, T is completely enclosed by obstacle boundary.

(2d) If a robot returns to a past hit point, the former point Hk is memorized as the same later point Ql into Hlist. Then, the robot returns to the hit point Hi using the shortest path as determined by the Hlist and Plist. Once the robot has returned to Hi follow the wall in the opposite direction than previously.

(2e) If the robot returns to a past leave point, the former point is memorized as the same later point into Hlist. Then, the robot returns to the hit point Hi using the shortest path as determined by the Hlist and Plist. Once the robot has returned to Hi follow the wall in the opposite direction than previously.


Klasikiniai algoritmai5

Klasikiniai algoritmai

  • Klasikiniai algoritmai

    • Klajojimo algoritmai

    • Kliūčių vengimo algoritmai

    • Linijos sekimo algoritmai

    • Sienos sekimo algoritmai

    • Kelio planavimo algoritmai

      • „Bug“ algoritmų šeimyna

    • Labirinto praėjimo algoritmai


Labirinto pra jimo algoritmas

Labirinto praėjimo algoritmas

  • Paprastas Depth-First Search (DFS) algoritmas

  • Robotas skenuoja kiekvienos celės sienas ir sukonstruoja DFS medį, kurio šaknis yra START celė

  • Sukonstravus medį, jame randamas kelias

  • Algoritmas baigiamas, kai randama GOAL celė


Labirinto strukt ra

Labirinto struktūra


Dfs med io pavyzdys

DFS medžio pavyzdys


Dfs med io duomen strukt ra

DFS medžio duomenų struktūra

  • Dvimatis masyvas

    Cell maze[MAX_HEIGHT][MAX_WIDTH]

    typedef struct {

    bool isExplored; (= false)

    Direction parentDirection; (= NO_DIRECTION)

    WallStatus[4] wallStatus; (= {UNKNOWN})

    } Cell;


Dfs a lgoritm as

DFS algoritmas

while (true) {

if robot is at GOAL cell

victoryDance();

if there is an unexplored, unobstructed neighbor

Mark parent of neighbor as current cell;

Proceed to the neighbor;

else if robot is not in START cell

Backtrack;

else

return; //No GOAL cell exists, so we exit

}


Robot programavimo technologijos

Pledge algoritmas

  • Eiti link sienos

  • Eiti tol, kol siena yra dešinėje

  • Tęsti, kol bus išeita iš labirinto


Kiti inomi labirinto problemos sprendimo algoritmai

Kiti žinomi labirinto problemos sprendimo algoritmai

  • A* Algoritmas

  • Dirbtiniai neuroniniai tinklai

  • Genetiniai algoritmai

  • Multi-Neuronųheuristinė paieška (MNHS)

  • Neuro-Fuzzy


Algoritm palyginimas

Algoritmų palyginimas


Literat ra

Literatūra

  • S.M. LaValle, Planning Algorithms, 2006

    • Laisvai platinama: http://msl.cs.uiuc.edu/planning/

  • H. Choset et al. Principles of Robot Motion: Theory, Algorithms, andImplementations, 2005.

    http://www.cs.cmu.edu/~biorobotics/book/booboo_book.pdf

  • JamesNg. An Analysis of Mobile RobotNavigationAlgorithmsinUnknownEnvironments. 2010http://robotics.ee.uwa.edu.au/theses/2010-Navigation-Ng-PhD.pdf

    • „Bug“ klasės algoritmų analizė


  • Login