Documente Academic
Documente Profesional
Documente Cultură
Curs 3 IA 2019-2020 PDF
Curs 3 IA 2019-2020 PDF
CURS 3
Obstacol
coliziunilor constă în calcularea distanţelor între centrele sferelor. se obţine astfel informaţie
nunumai despre existenţa sau inexistenţa unei coliziuni, dar şi despre distanţa dintre punctele
cele mai apropiate ale obiectelor, ceea ce este o informaţie foarte importantă pentru generarea
traiectoriilor.
Sfera aceasta este definită prin centru şi raza ei, exprimate în raport cu un sistem de referinţă
ataşat obiectului. Aproximarea rămăne totuşi grosieră, dar utilă pentru detectarea lipsei
coliziunii. Dacă intersecţia dintre sferele, care aproximează anvelopele a două obiecte, este
vidă atunci se poate trece la o aproximare mai fină, mai precisă a obiectelor.
Dacă sfera este locul geometric al punctelor egal depărtate de un punct, atunci putem imagina
în aceeaşi manieră şi alte reprezentări, în figura 2.16:
"baston" - locul geometric al punctelor egal depărtate de un segment de dreaptă, în
special pentru obiectele lungi cum sunt cuplele de roboţi.
"pernă" - locul geometric al punctelor egal depărtate de un dreaptunghi, în special
pentru obiectele plate cum sunt mesele de montaj, zidurile, solul, tavanul.
"zar" - locul geometric al punctelor egal depărtate de un paralelipiped.
Alegerea acestor tipuri de suprafeţe simplifică foarte mult calculul distanţelor între obiecte.
De exemplu calculul distanţelor între două "bastoane" este dat de calculul distanţei între două
segmente de dreaptă.
Pentru a detecta o coliziune în spaţiul de operare robotic este suficient acum să calculăm
distanţele între suprafeţele de aproximare a obiectelor mobile (obiectele deplasate, robotul şi
componentele lui) şi celelalte obiecte prezente.
Metoda cea mai simplă este să se eşantioneze traiectoria cu un anumit pas şi să se verifice
pentru fiecare poziţie în parte. Pentru rezultate utile trebuie lucrat cu un pas foarte fin, dar
atunci timpul de calcul devine foarte mare.
B
dB obstacol
d
A
dA
traiectorie
d
min d A , d B k
2
unde:
dA, dB sunt distanţele între obiectele mobile şi obstacolul cel mai apropiat, pentru A
respectiv B.
d este distanţa între obiectele mobile în A şi în B
k este o constantă care depinde de geometria obiectului deplasat şi de tipul "măinii"
robotului.
Dacă are loc o reorientare a obiectului între A şi B, se utilizează un criteriu similar:
min d A , d B k '
Dacă se aplică astfel de criterii atunci se poate lucra cu un pas de discretizare mai mare şi ca
urmare se micşora timpul de calcul. Dacă pentru un segment nu sunt îndeplinite criterile
impuse atunci se împarte segmentul în două părţi şi se reia procedura până când sau se
respectă criteriile impuse sau pănă cănd se detectează o coliziune (adică dA sau dB devin 0).
Generarea traiectoriei libere de obstacole între o poziţie iniţială S şi una finală G se face
atunci după următorii paşi. Se împarte problema în trei etape:
deplasarea obiectului cu aceeaşi orientare din S până într-o poziţie în care acesta poate
fi rotit astfel încât să aibă orientarea din G,
reorientarea obiectului în această poziţie intermediară,
Poziţia de reorientare este aleasă de preferinţă chiar în S sau G. Dacă criteriul ales pentru
orientare indică că acest lucru este imposibil, trebuie avută în vedere o abordare euristică
pentru a gasi poziţia în care reorientarea este posibilă. Poziţia respectivă este aceea care
furnizează maximum de spaţiu posibil.
Spaţiul de lucru al robotului este suprapus unei grile 3D cu puncte repartizate pe cele trei axe
X, Y, Z. În fiecare dintre punctele acestei grile poate fi mutat un sistem de coordonate care
este ataşat obiectului deplasat. Fiecare dintre aceste puncte este considerat ca fiind nodul unui
graf. Soluţia problemei, adică găsirea unei traiectorii între S şi G libere de coliziuni, se va
obţine prin aplicarea algoritmului A. La fiecare pas se va selecţiona pentru a fi dezvoltat "cel
mai bun" nod prezent în open list. Selecţia va avea în vedere un criteriu de pinzănd de
lungimea drumului şi va fi definit de o funcţie de evaluare f care urmează să fie prezentată.
Nodul selecţionat va fi retras din open list şi pentru el se va face un test de detectare a
coliziunilor. Dacă se detectează coliziuni atunci nodul nu se dezvoltă şi este plasat în closed
list. Dacă nu există coliziuni atunci nodul este dezvoltat în sensul că i se generează un număr
(de exemplu 5 ca în figura 2.18) succesori. Detecţia de coliziuni nu se face decât în nodurile
selecţionate, cu ajutorul funcţiei f, din open list.
Reamintim că drumurile sunt alcătuite din segmente de dreaptă care unesc puncte vecine din
grila 3D la care este raportat spaţiul de operare al robotului.
g(n) este lungimea celui mai bun drum de la S la n descoperită până la momentul
prezent, valoarea lui g(n) poate eventual să scadă dacă n se va regenera în cele ce urmează,
h(n) este distanţa în linie dreaptă între n şi G, în măsura în care această traiectorie este
liberă de obstacole. h(n) este un prag inferior pentru h*(n) şi prin urmare ne asigurăm că vom
găsi drumul cel mai scurt posibil (în sensul grilei 3D) între poziţiile S şi G, cel puţin pentru
wg wh 1 .
w
Din considerente practice (timp de calcul în primul rând) se aleg totuşi wg h , favorizând
2
în acest mod o abordare depth - first în raport cu abordarea breadth - first.
S
G
În acest punct se
detectează o coliziune Direcţia de evitare a obstacolului
O indicată de procedura “bug-euristic”
Aceste două abordări sunt reprezentate sub forma caracteristicilor obstacolelor prezente în
spaţiul de lucru al robotului, indicând o manieră fericită de a le evita. Un exemplu tipic pentru
"bug heuristic" este prezentat în figura 2.19.
O2
P1 P3
G
S
P2
O1 O3
Al doilea tip de abordare euristică numit "dog euristic" (face referire la problema unui câine
care trebuie să treacă printr-o poartă când are un os mare în gură) constă în deplasarea printre
obstacole dar cu reorientarea obiectului deplasat. Atunci când nu se depistează un punct de
trecere una din variantele rămase este reorientarea obiectului deplasat şi reluarea căutării unui
drum. Obiectul respectiv este rotit în jurul a două axe perpendiculare pe direcţia de căutare a
unui punct de trecere. Pentru economie de timp de calcul incremenţii nu sunt foarte mici, se
poate alege de exemplu 30 grade.
Remarcă: Timpul cel mai important de calcul pentru probleme de genul celei prezentate mai
sus, este consumat pentru detectarea coliziunilor.