Planificarea Miscarii Unui Robot

CAPITOLUL 1

ASPECTE ALE PLANIFICÃRII MI{CÃRII

1.1. NO[IUNI INTRODUCTIVE

De-a lungul timpului omul a încercat mereu sã-si simplifice munca si sã elimine efortul în prestarea acesteia. Astfel, el a încercat sã construiascã mecanisme care sã imite cât mai fidel fiintele umane.

Încã de la sfârsitul anilor ‘40, J. T. Parsons a sugerat o metodã pentru ghidarea automatã a unei masini de frezat cu ajutorul unor cartele perforate codificate pentru obtinerea formelor complexe ale unei elice de elicopter.

Primul robot industrial a apãrut în anul 1954, când George Devol a solicitat un patent pentru un manipulator de uz general, cu memorie retroactivã si control punct cu punct, cu toate cã acest robot a fost construit de abia în 1958.

În 1957 a fost lansat dispozitivul de apucat si plasat, el reprezentând posibilitatea programãrii mecanice prin roti cu clame.

La începutul anilor ‘60 erau deja patentate principalele elemente definitorii pentru prima generatie de roboti, iar în anul 1961 a fost elaboratã prima instalatie industrialã de acest gen.

La începutul anilor ‘70 s-au construit deja mai multe variante ale robotului mobil “inteligent” – denumit Shakey – echipat cu o camerã de luat vederi, un detector de proximitate, etc., pentru a putea sã-si coordoneze miscãrile în jurul obstacolelor si sã plaseze diverse obiecte dupã un model impus.

Primii roboti foloseau numai componente electronice logice conectate prin fire, în scopul realizãrii diferitelor operatii pentru care au fost proiectati.

În anul 1968 specialistii au fãcut legãtura între un robot si un calculator de uz general, relizându-se astfel primul robot flexibil. În anul 1974 a fost comercializat primul robot controlat prin microcalculator. Astfel de roboti care includeau si partea de software erau mult mai puternici decât masinile cu circuite electronice specializate.

Au apãrut apoi si primii roboti de asamblare realizati cu un brat specializat, dupã care, în 1976 a apãrut încheietura flexibilã pentru ajustãri fine ale bratului robotului în cursul pozitionãrii unor subansamble .

La începutul anilor ‘80 au început lucrãrile pentru obtinerea robotilor din cea de-a

doua generatie, care sã detinã o putere de calcul suficientã pentru a face posibilã modificarea comportãrii lor ca rãspuns la stimulii din mediul înconjurãtor. Astfel devenea posibilã executarea unor sarcini complexe, cum ar fi sudura cu arc sau operatiunile de asamblare cu ajutorul calculatoarelor cu circuite integrate pe scarã foarte largã.

Spre sfârsitul anilor ‘80 au apãrut robotii inteligenti, care constituie cea de-a treia generatie de roboti. Acestia au posibilitatea manipulãrii unor materiale flexibile, cum ar fi textilele si cauciucul, caz în care software-ul este destul de sofisticat.

Pânã în zilele noastre domeniile în care se utilizeazã robotii sunt din ce în ce mai diversificate, aparitia si dezvoltare continuã a robotilor reprezentând o adevãratã revolutie industrialã .

Definitia robotului a apãrut în multe variante, în mod obisnuit spunem cã un robot este un dispozitiv care, într-o anumitã mãsurã, imitã omul fie ca înfãtisare, fie ca posibilitate de actiune. Una dintre primele definitii date robotului se referã în mod direct la acest aspect: mecanism automat care se poate substitui omului pentru a efectua unele operatii, fiind capabil sã-si modifice singur ciclul de executie prin detectie fotoelectricã, creier electronic, servomotor, etc.

Prin definitia “Asociatiei Robotilor Industriali” din Japonia, un robot este un dispozitiv versatil si flexibil, care oferã functii de deplasare similare celor ale membrelor umane sau ale cãrui functii de deplasare sunt comandate de senzori si de mijloace proprii de recunoastere: acest mod de a defini robotul este destul de larg deoarece include telemanipularea, protezele , etc.

Definitia “Institutului American de Roboti” este similarã cu cea a “Asociatiei Robotilor din Marea Britanie”: robotul este un manipulator multifunctional, reprogramabil destinat deplasãrii materialelor, pieselor, sculelor sau altor dispozitive specializate prin miscãri variabile programate pentru a îndeplini diferite sarcini.

Robotul, echipat cu un dispozitiv de actionare si senzori, activeazã într-un spatiu de lucru din lumea realã. Acest spatiu de lucru este populat cu obiecte fizice si se supune legilor naturii.

Dupã cum am precizat mai sus, domeniile de aplicatie ale robotilor sunt tot mai diversificate. Acest lucru se datoreazã faptului cã în roboticã se implementeazã cele mai avansate cunostiinte dintr-o serie de discipline diferite, cum ar fi: cinematica, dinamica, proiectarea servomecanismelo, puterea fluidelor, electronica digitalã si analogicã, structura si software-ul calculatoarelor, proiectarea circuitelor integrate, cibernetica, automatica, controlul numeric, ingineria sistemelor, instrumente senzoriale, recunoasterea caracterelor, ingineria industrialã si a fabricatiei, fiziologia, economia etc.

O problemã de bazã pentru realizarea robotilor este de a oferi acestuia capacitatea de a-si planifica propria miscare, adicã de a decide automat ce miscare trebuie sã execute pentru a obtine o deplasare specificatã printr-o aranjare spatialã initialã si una finalã a obiectelor fizice.

O definitie a robotului des utilizatã este:

Un robot este un dispozitiv mecanic sau o combinatie de dispozitive echipate cu servomotoare si senzori si aflate sub controlul unui sistem de calcul.

El opereazã într-un spatiu real populat ca obiecte fizice si deci, trebuie sã fie capabil sã-si planifice propriile miscãri pentru a realiza o sarcinã în functie de aranjamentul initial si final al obiectelor din spatiul de lucru. În fond, robotul va trebui sã realizeze miscarea doritã si sã-si activeze diferitele organe în acord cu obiectivul pe care îl are.

Totul depinde însã, atât de cunostiintele pe care robotul le are asupra con-figuratiei initiale a spatiului de lucru (statice) cât si de cele obtinute pe parcursul evolutiei sale (dinamice).

Crearea robotilor autonomi este o sarcinã majorã în Roboticã. Cu exceptia anumitor domenii limitate, nu este real sã se anticipeze si sã se descrie explicit toate miscãrile pe care robotul trebuie sã le execute pentru a realiza sarcina cerutã.

Chiar si în cazurile când o asemenea descriere este posibilã, este util sã se incorporeze dispozitive de planificare automatã a miscãrilor în sistemele de programare off-line ale robotului. Aceasta permite utilizatorului sã specifice sarcini stabilind mai degrabã CE doreste sã realizeze decât CUM sã o facã .

Deci robotul trebuie sã realizeze miscarea doritã si sã-si activeze diferitele mecanisme în acord cu sarcina cerutã.

Planificarea miscãrilor unui robot prezintã o varietate neasteptatã de aspecte dificile de calcul. De fapt, inteligenta operativã pe care oamenii o utilizeazã inconstient pentru a interactiona cu mediul înconjurãtor, necesarã perceptiei si planificãrii miscãrii, este foarte dificil de reprodus într-un program de calcul. Astfel, o problemã importantã în planificarea miscãrilor este complexitatea de calcul a algoritmilor .

Asa cum am precizat, planificarea miscãrii este o problemã în crearea robotilor autonomi, dar nu este singura. Aceasta interactioneazã cu alte probleme importante, ca de exemplu: analiza cinematicã directã si inversã, modelul dinamic direct si invers, generarea traiectoriilor, controlul miscãrii în timp real, sistemul senzorial si planificarea sarcinii .

1.2. ASPECTE ALE PLANIFICÃRII MI{CÃRII

Se presupune cã sarcina efectorului final este sã construiascã un ansamblu format din mai multe piese. Sarcina este descrisã atât ca o multime a modelelor pieselor, inclusiv goemetria lor si eventual unele proprietãti fizice, cât si ca o secventã de relatii spatiale.

Figura 1.1 ilustreazã aceasta pentru cazul unei sarcini simple. Secventa determinã ordinea în care piesele trebuie asamblate. Fiecare relatie descrie pozitia unei piese noi în raport cu subansamblul curent.

Transformarea automatã a acestei secvente într-o descriere a miscãrilor pe care trebuie sã le execute robotul este o aplicatie posibilã a metodelor de planificare a miscãrilor cunoscute (descrierea structuratã a miscãrilor unui robot).

Pentru a asambla piesele conform relatiilor de intrare, robotul trebuie sã prindã pe rând fiecare piesã, sã o transfere la subansamblul curent si sã o pozitioneze corespunzãtor:

Prinderea unei piese necesitã selectarea pozitiei si orientãrii efectorului final al robotului (matricea de transformare generalã [Gt) pe obiect si generarea unei traiectorii spre aceastã pozitie si orientare.

Pozitia de prindere trebuie sã fie accesibilã; de asemenea, aceasta trebuie sã fie stabilã si destul de robustã pentru a rezista unor forte exterioare. Uneori, o pozitie de prindere corespunzãtoare necesitã ca piesa care trebuie prinsã sã fie pusã jos si prinsã din nou.

Transfererarea piesei necesitã calculul geometriei traiectoriei bratului robotului. Deoarece de obicei în astfel de situatii miscarea se executã cu vitezã mare, traiectoria trebuie sã evite orice contact posibil cu obstacolele. Datoritã impreciziei în controlul miscãrii trebuie sã se garanteze un anumit joc minim pentru traiectoria generatã.

Pozitionarea piesei în subansamblu necesitã selectarea comenzilor de miscare pentru relizarea unei sarcini cu precizie mare, într-un spatiu supus unor restrictii severe. În general, datoritã incertitudinii, nu este suficientã o singurã comandã miscare. În schimb, este necesarã o strategie de miscare care implicã mai multe comenzi si care utilizeazã semnale de intrare generate de senzori.

În figura 1.1 se prezintã o sarcinã simplã de asamblare. Sarcina este definitã atãt prin modelele celor trei piese cât si printr-o secventã a douã relatii primitive printre formele geometrice, si anume: ” Fata A a obiectului 1se opune fetei B a obiectului 2 ”, ” Tija obiectului 3 se potriveste cu alezajul obiectului 1 ”.

Fiecare relatie trebuie convertitã în continuare într-o reprezentare internã cantitativã, printr-o matrice de transformare omogenã care sã exprime transformãrile între pozitia si orientarea sistemelor de referintã carteziene atasate pieselor.

Pentru a planifica aceste operatii este necesarã cunoasterea aranjamentului initial al spatiului de lucru al robotului. De exemplu, planificarea unei traiectorii libere, fãrã coliziuni, necesitã cunoasterea amplasãrii obstacolelor.

Dacã informatia completã este disponibilã (poate fi asiguratã de cãtre utilizator sau de un sistem CAD, sau este obtinutã prin înregistrare), comenzile de miscare pot fi generate complet si apoi executate. În caz contrar, este necesarã împletirea planificãrii cu executia.

Exemplul prezentat poate fi însã mai complicat. Astfel, pentru relizarea sarcinii sunt necesari mai multi roboti, iar obstacolele din spatiul de lucru sunt mobile. În acest caz este necesarã o anumitã coordonare a miscãrii.

Astfel, miscãrile sunt planificate ca functii de timp si nu doar ca drumuri geometrice.

Sarcina unui robot poate include anumite criterii de optimizare, ca de exemplu minimizarea valorii totale a timpului necesar realizãrii sarcinii. În loc sã specifice o secventã de relatii spatiale, descrierea intrãrii trebuie sã exprime doar aranjamentul spatial final al pieselor, lãsând planificatorul sã genereze secventa corespunzãtoare.

Exemplul prezentat indicã faptul cã planificarea miscãrii unui robot nu constã într-o singurã si bine delimitatã prolemã, ci într-o colectie de mai multe probleme care sunt mai mult sau mai putin una varianta celeilalte .

figura 1.1. Exemplul unei sarcini simple de asamblare

1.3. NOTA[II

Robotul se noteazã cu A. Dacã existã mia multi roboti se noteazã cu Aj ;

Sistemul de referintã atasat robotului se noteazã cu SA. Originea lui SA se noteazã cu OA ;

Spatiul de lucru al robotului se noteazã cu W si este modelat ca un spatiu Euclidian RN, cu N=2 sau 3;

Sistemul de referintã ataszator sau de un sistem CAD, sau este obtinutã prin înregistrare), comenzile de miscare pot fi generate complet si apoi executate. În caz contrar, este necesarã împletirea planificãrii cu executia.

Exemplul prezentat poate fi însã mai complicat. Astfel, pentru relizarea sarcinii sunt necesari mai multi roboti, iar obstacolele din spatiul de lucru sunt mobile. În acest caz este necesarã o anumitã coordonare a miscãrii.

Astfel, miscãrile sunt planificate ca functii de timp si nu doar ca drumuri geometrice.

Sarcina unui robot poate include anumite criterii de optimizare, ca de exemplu minimizarea valorii totale a timpului necesar realizãrii sarcinii. În loc sã specifice o secventã de relatii spatiale, descrierea intrãrii trebuie sã exprime doar aranjamentul spatial final al pieselor, lãsând planificatorul sã genereze secventa corespunzãtoare.

Exemplul prezentat indicã faptul cã planificarea miscãrii unui robot nu constã într-o singurã si bine delimitatã prolemã, ci într-o colectie de mai multe probleme care sunt mai mult sau mai putin una varianta celeilalte .

figura 1.1. Exemplul unei sarcini simple de asamblare

1.3. NOTA[II

Robotul se noteazã cu A. Dacã existã mia multi roboti se noteazã cu Aj ;

Sistemul de referintã atasat robotului se noteazã cu SA. Originea lui SA se noteazã cu OA ;

Spatiul de lucru al robotului se noteazã cu W si este modelat ca un spatiu Euclidian RN, cu N=2 sau 3;

Sistemul de referintã atasat spatiului de lucru W se noteazã cu SW . Originea lui SW se noteazã cu OW ;

Obstacolele din W se noteazã cu Bj ;

Spatiul configuratiilor unui robot se noteazã ce SC si este o multime de dimensiune m. Un element al lui SC, adicã o configuratie, se noteazã cu C. Regiunea lui W ocupatã de robotul A în configuratia C se noteazã cu A(C) ;

Configuratia unui obstacol Bj din spatiul de lucru W în spatiul configuratiilor SC se numeste C-obstacol si se noteazã cu SCB. Reuniunea tuturor C-obstacolelor se numeste regiunea C-obstacolelor si se noteazã cu SCB;

Spatiul liber în spatiul configuratiilor SC se noteazã cu SCliber ;

Un drum se considerã ca o functie de un anumit parametru s care ia valori în intervalul [0,1t. Când parametrul este timpul t, functia se numeste traiectorie si se noteazã cu T.

1.4. PROBLEMA DE BAZÃ A

PLANIFICÃRII UNEI TRAIECTORII

Una dintre metodele de planificare se va analiza pe larg în capitolul 4. Pe mãsurã ce robotul, ca sistem mecanic, devine mai autonom, creste si necesitatea dezvoltãrii planificãrii automate a traiectorilor sale.

Scopul definirii problemei de bazã a planificãrii miscãrilor este de a izola anumite probleme centrale si de a le studia în profunzime înainte de a considera anumite dificultãti aditionale.

Cea mai simplã problemã de planificare presupune cã robotul este singurul obiect în miscare în spatiul de lucru, care nu posedã proprietãti dinamice evitând astfel problemele temporale. Se considerã de asemenea cã robotul nu intrã în contact cu obiectele înconjurãtoare, evitând astfel problemele legate de interactiunea mecanicã dintre douã obiecte fizice. Aceste consideratii transformã problema planificãrii “fizice” a miscãrii într-o problemã pur geometricã. Mai mult, se considerã cã robotul este singurul solid rigid a cãrui miscare este limitatã doar de obstacole .

Cu aceste simplificãri, problema de bazã a planificãrii traiectoriilor unui robot se poate formula astfel :

Fie A un singur solid rigid (robotul) care se miscã într-un spatiu Euclidian W, numit spatiu de lucru, reprezentat prin RN, cu N=2 sau 3. Miscarea lui A nu este limitatã de nici o restrictie cinematicã ;

Fie B1, … ,Bq obiecte rigide fixe (obstacole) distribuite în pozitii bine determinate în spatiul de lucru W ;

Cunoscând pozitia si orientarea, la momentul initial, ale robotului, precum si pozitia finalã si orientarea finalã pentru acesta în spatiul de lucru W, sã se genereze o traiectorie T, care sã specifice o secventã continuã de pozitii si orientãri ale lui A, pornind de la configuratia (pozitia si orientarea) initialã, evitând contactul cu obstacolele Bj si terminând în configuratia (pozitia si orientarea ) finalã ;

Dacã o astfel de traiectorie nu existã, trebuie sã se raporteze “eroare“.

Este evident cã, desi problema de bazã a planificãrii este super simplificatã, ea este totusi o problemã dificilã cu mai multe solutii si cu extensii directe spre probleme mai complicate. În mod intuitiv, obiectul mobil (robotul) într-o astfel de problemã este denumit în literatura de specialitate “obiect liber zburãtor”.

Formularea problemei de bazã a planificãrii traiectoriilor se bazeazã pe anumite presupuneri care limiteazã semnificativ utilizarea solutiilor. Este foarte dificil sã se reducã o problemã realã de roboticã la problema de bazã, sã se rezolve aceastã problemã si sã

se adapteze solusiile obsnuite astfel încât sã se potriveascã conditiilor problemei reale .

Extinderea problemei de bazã a planificãrii traiectoriilor presupune mai multe obiecte miscãtoare (obstacole în miscare) în spatiul de lucru W, respectiv mai multi roboti care opereazã în acelasi spatiu de lucru W. De asemenea, se considerã cã robotii sunt articulati, adicã formati din mai multe elemente (obiecte rigide) conectate prin cuple cinematice (de translatie sau de rotatie). O altã extindere a problemei de bazã constã în introducerea restrictiilor cinematice pentru miscarea robotilor (restrictii olonome si neolonome).

Problema de bazã a planificãrii traiectoriei presupune cã robotul parcurge cu exactitate traiectoria generatã de planificator. De asemenea, se presupune cã, atât geometria robotului, cât si geometria si pozitiile obstacolelor sunt cunoscute cu exactitate. În realitate, nici o problemã de planificare nu satisface aceste ipoteze. Mai mult, controlul robotilor si modelele geometrice ale acestora nu sunt exacte. În conditiile în care robotul nu detine informatii apriorice despre spatiul de lucru, acesta trebuie sã se bazeze, în timpul executiei, pe sistemul sãu senzorial pentru înregistrarea informatiilor necesare realizãrii sarcinii. Se impune astfel explorarea spatiului de lucru si rezolvarea problemei de planificare în prezenta incertitudinilor .

1.5. RELA[II CU ALTE PROBLEME

Un planificator autonom de miscare poate fi utilizat în diferite moduri. De exemplu, poate fi inclus în sistemul de programare off-line al robotului pentru a simplifica sarcina descrierii traiectoriilor acestuia. De asemenea, planificatorul de traiectorii poate fi o parte a unui sistem interactiv grafic de planificare a proceselor (planificarea prelucrãrii unei piese, asamblarea unui mecanism electromecanic, constructia unei instalatii de putere) si poate fi folosit pentru a verifica posibilitatea geometricã a operatiilor planificate (gãurirea unui alezaj, asamblarea a douã piese, punerea pe verticalã a unei tevi). Mai general, planificatorul poate fi utilizat pentru generarea automatã a scenelor grafice animate. În sfârsit, dincolo de aceste aplicatii, scopul final al planificãrii automate a miscãrii este acela de a crea roboti autonomi.

1.5.1. GENERAREA MI{CÃRII

Un robot este conceput sã realizeze trei categorii de sarcini :

deplasãri pure ;

eforturi pure ;

sarcini compliante care combinã deplasãrile cu eforturile ;

În cazul unei sarcini de deplasare, robotul trebuie sã urmãreascã, dupã o lege de miscare datã, o traiectorie definitã printr-o secventã de repere, numite impropriu puncte, ce corespund situãrilor succesive ale efectorului final. Aceste puncte pot fi:

programate prin învãtare ;

furnizate on-line de cãtre sistemul senzorial ;

rezultate dintr-o bazã de date a unui sistem CAD etc.

Problema generãrii traiectoriilor este de a calcula, pe baza datelor primite de la planificatorul de miscare, mãrimile de comandã care asigurã trecerea robotului prin punctele stabilite.

Generarea miscãrii se poate face direct, în spatiul coordonatelor cuplelor cinematice, sau în spatiul operational.

Cele douã moduri de generare de miscare sunt prezentate în Fig.1.2 si Fig. 1.3.

Generarea miscãrii în spatiul coordonatelor cuplelor prezintã urmãtoarele avantaje :

miscarea este minimã pentru fiecare cuplã cinematicã ;

necesitã mai putine calcule on-line deoarece nu apeleazã transformatorul de coordonate (modelul geometric, respectiv analiza cinematicã inversã) ;

miscarea nu este afectatã la trecerea prin configuratii singulare ;

restrictiile de viteze si de elemente mecanice (forte si momente) maxime sunt cunoscute ci precizie deoarece acestea corespund limitelor fizice ale servomotoarelor.

Dezavantajul acestei metode constã în faptul cã geometria traiectorie în spatiul operational nu poate fi impusã.

Între cele douã puncte impuse, robotul se deplaseazã într-o manierã imprevizibilã dar repetabilã. Existã astfel riscul coliziunii cu obstacolele din spatiul de lucru, mai ales când robotul evolueazã într-un mediu aglomerat .

Generarea miscãrii în spatiul operational permite controlul geometriei traiectoriei robotului. Dezavantajele acestei metode sunt :

necesitã o analizã cinematicã inversã (transformarea în coordonatele cuplelor cinematice) în fiecare punct al traiectoriei ;

existã riscul de a esua atunci când traiectoria calculatã trece printr-o pozitie singularã ;

existã riscul de a esua ori de câte ori punctele traiectoriei generate nu sunt în spatiul (volumul) accesibil robotului sau ori de câte ori traiectoria impune reconfigurarea structurii mecanice (a mecanismului generator de traiectorie);

limitele de viteze si elemente mecanice din cuplele cinematice fiind definite în spatiul coordonatelor cuplelor, restrictiile corespunzãtoare nu pot fi utilizabile direct în spatiul sarcinii.

Alegerea uneia din cele douã metode depinde de aplicatia consideratã.

Fiecare metodã are propriile limite inerente datoritã faptului cã restrictiile sunt exprimate fie în spatiul coordonatelor cuplelor (viteze generalizate, forte generalizate),fie în spatiul operational (precizie, obstacolelor).

1.5.2. INTERAC[IUNEA CU CONTROLUL

MI{CÃRII ÎN TIMP REAL

Un plan de miscare specificã o miscare ce trebuie executatã de robot. De exemplu, o traiectorie specificã o secventã continuã a configuratiilor pe care robotul trebuie sã le traverseze spre configuratia finalã. Sarcina de bazã a controlerului în timp real este de a face robotul sã execute planul de miscare, adicã sã urmãreascã drumul generat .

Presupunem pentru început cã planul de miscare este o traiectorie liberã T. Sarcina controlerului este de a transforma traiectoria T în forte generalizate (forte sau momente, functie de natura servomotorului) care trebuie exercitate de servomotoarele robotului. De obicei, aceastã transformare este divizatã în douã etape. Prima etapã, numitã generarea traiectoriei constã în decizia asupra profilului de vitezã de-a lungul traiectoriei. Acestã etapã poate fi fãcutã înaintea executiei miscãrii. A doua etapã, numitã urmãrirea traiectoriei, constã în calculul fortelor generalizate care trebuie dezvoltate de cãtre servomotoare în fiecare moment pentru a obtine miscarea doritã .

Etapa urmãririi traiectoriei poate folosi ecuatiile dinamice ale miscãrii robotului (modelul dinamic direct) pentru a calcula forta generalizatã care trebuie sã fie dezvoltatã de fiecare servomotor .

Aceste ecuatii exprimã faptul cã fortele generalizate dezvoltate de cãtre motoarele de actionare egaleazã efectul diferitelor forte care actioneazã asupra robotului în timpul miscãrii (forte gravitationale, de frecare, inertiale, centrifugale, Coriolis). Dacã ecuatiile dinamice utilizate de cãtre controler constituie un model dinamic perfect, nu este necesar un feedback. Totusi, datoritã diferitelor perturbatii, este necesarã înregistrarea informatiilor prin intermediul sistemului senzorial pentru a determina abaterea între starea doritã si starea realã a robotului (la momentul considerat). În timpul executiei miscãrii, controlerul calculeazã fortele generalizate ale servomotoarelor care tind sã elimine aceastã abatere cu o frecventã de actualizare, de obicei, între 10 si 100 Hz.

Fig. 1.2. Generarea miscãrii în spatiul coordonatelor cuplelor

Fig. 1.3. Generarea miscãrii în spatiul operational

Figura 1.4 aratã relatia între planificatorul de traiectorie PT, generatorul de traiectorie GT, controlerul C, si sistemul de actionare a robotului. Traiectoria T produsã de planificatorul de traiectorii PT constituie mãrimea de intrare pentru generatorul de traiectorii GT. Acesta determinã parametrii configuratiei în functie de timp. Iesirea din GT (configuratiile dorite Cd(t) ca functii de timp) constituie intrarea în controlerul C. Acesta calculeazã fortele generalizate Q care trebuie dezvoltate de fiecare servomotor, pe baza abaterilor configuratiilor curente Cs, mãsurate de sistemul senzorial, fatã de configuratia doritã Cd .

Arhitectura simplã prezentatã în Fig. 1.4. este una clasicã. Avantajul sãu este de a diviza problema deciderii unei miscãri în subprobleme clar definite. Aceasta poate conduce însã la miscãri destul de ineficiente. Chiar dacã controlerul încearcã sã minimizeze timpul de executie, geometria traiectoriilor poate sã nu permitã controlerului sã exploateze complet posibilitãtile servomotoarelor. Probabil, o conceptie mai bunã este de a tine seama de ecuatiile dinamice ale robotului, împreunã cu limitele de saturare ale servomotoarelor, în timpul planificãrii miscãrii, pentru a genera traiectoriile care permit sã fie executate miscãri în timp (quasi)-optimal.

Pentru implementarea acestui concept au fost propuse mai multe tehnici. Aceste tehnici pot deveni deosebit de importante când robotul opereazã într-un spatiu de lucru dinamic, printre obstacole mobile, când sarcina trebuie realizatã în limite de timp strânse (deoarece interactioneazã cu un proces extern) si/sau când productivitatea robotului trebuie sã fie optimizatã (în cazul operatiilor de prelucrare).

Traiectoriile sunt cele mai simple tipuri de planuri de miscare. În prezenta incertitudinii, planurile de miscare pot cuprinde comenzi de miscare bazate pe senzori, care sunt mai tolerante la erori decât comenzile de miscare clasice controlate prin pozitie. Existenta unor astfel de comenzi poate simplifica sarcina planificatorului de miscare.

Fig. 1.4. Relatia între planificatorul de traiectorie PT, generatorul

de traiectorie GT, controlerul C si sistemul de actionare a robotului.

1.3.5. INTERAC[IUNEA CU SISTEMUL SENZORIAL

În problema de bazã a planificãrii miscãrii s-a presupus cã robotul detine informatii complete si exacte despre mediul sãu înconjurãtor. În majoritatea situatiilor însã, geometria spatiului de lucru poate fi doar partial cunoscutã în momentul planificãrii. Rezolvarea problemei de planificare a miscãrii necesitã cunoasterea modelului mediului înconjurãtor. Utilizarea sistemului senzorial are deci rolul de a ghida miscãrile si de a supraveghea executia lor. Dacã robotul nu detine suficiente informatii apriorice despre mediul sãu, acesta trebuie sã sã bazeze pe înregistrarea informatiilor prin intermediul sistemului senzorial si sã reactioneze la informatiile preluate de senzori.

Spre exemplu, dacã robotul este echipat cu senzori de proximitate, pentru ghidarea miscãrii poate fi aplicatã on-line metoda câmpului potential. Datele despre configuratia finalã sunt utilizate pentru a crea un potential atractiv, iar datele care provin de la senzorii de proximitate sunt utulizate pentru a crea potentialul repulsiv. Gradientul negativ al potentialului rezultant este considerat ca o fortã externã sub actiunea cãreia robotul este comandat sã se deplaseze, retultând astfel directia dupã care are loc generarea miscãrii.

Pentru cazul când nu se cunoaste aprioric nuci o informatie despre mediul înconjurãtor al robotului, Lumelsky a propus o altã schemã reactivã. Se presupune cã spatiul configuratiilor este bidimensional iar robotul este echipat cu un senzor de pozitie si cu un senzor tactil, ceea ce îi permite acestuia sã urmãreascã conturul obstacolelor. Un algoritm propus de Lumelsky este prezentat în Fig.1.5.

Fig. 1.5. Algoritmul propus de Lumelsky

Deplasarea robotului între configuratia initialã si cea finalã se realizeazã în linie dreaptã. Dacã robotul loveste un obstacol, atunci continuã miscarea de-a lungul marginilor C-obstacolului corespunzãtor, într-o directie predeterminatã, pânã când revine în punctul de coliziune.

În timpul acestei miscãri, robotul identificã punctul de intersectie al marginii C-obstacolului cu segmentul de dreaptã care uneste configuratia initialã cu cea finalã. Dupã ce a parcurs traiectoria în buclã închusã în jurul C-obstacolului, robotul se întoarce, parcurgând traiectoria cea mai scurtã, în punctul de intesectie identificat si continuã miscarea dupã segmantul de dreaptã.

Acest algoritm simplu garanteazã atingerea configuratiei finale ori de câte ori existã C-obstacole mãrginite de curbe închise simple de lungime finitã si segmentul de dreaptã intersecteazã un numãr finit de C-obstacole.

Lungimea traiectoriei generate este mãrginitã superior de D+1.5 i pi, unde D este distanta dintre configuratia initialã si cea finalã, iar pi este perimetrul unui C-obstacol care intersecteazã discul de razã D cu centrul în configuratia initialã .

1.5.4. INTERAC[IUNEA CU PLANIFICAREA SARCINII

Scopul planificãrii miscãrii este specificat ca un aranjament spatial de obiecte fizice. Planificarea miscãrii contribuie la realizarea unei sarcini globale pentru un robot. Se considerã, de exemplu, un robot detector de defecte, a cãrui sarcinã este diagnoza defectelor pieselor unui echipament electromecanic si repararea lor.

Detectarea unui anumit defect necesitã ca echipamentul în cauzã sã fie verificat si operat, instrumentele de mãsurã sã fie conectate, iar probele sã fie aduse la locul de mãsurare si apoi îndepãrtate. Fiecare asemenea operatie poate fi specificatã printr-un aranjament spatial al obiectelor, dar decizia asupra operatiei care trebuie executatã si executia acesteia, adicã planificarea sarcinii, necesitã un rationament de nivel superior, respectiv posibilitãti de planificare superioare unui planificator de miscare. Inteligenta artificialã permite aplicarea mai multor metode pentru planificarea sarcinii unui robot. Aceste metode sunt utilizate pentru realizarea unui planificator ale cãrui iesiri sunt secvente de operatii, fiecare secventã specificând o nouã relatie spatialã scop cu planificatorul de miscare .

În Fig.1.6. este prezentatã relatia între planificatorul sarcinii si planificatorul miscãrii, pentru exemplul dat. Intrarea sarcinii este de fapt descrierea sarcini. Iesirea constã în multimea operatiilor care trebuie executate. Fiecare operatie poate fi specificatã prin aranjamentul final al obiectelor (pozitia finalã a probei). Planificatorul de miscare genereazã traiectoriile necesare pentru atingerea pozitiei finale .

Un planificator de sarcinã cu inteligentã artificialã exprimã în mod normal o sarcinã folosind constructii logice (de exemplu calculul predicatului logic), care contin informatii sumare despre geometria obiectelor si aranjamentul spatial al acestora .

Fig. 1.6. Relatia dintre planificatorul de sarcinã si planificatorul de miscare

1.6. SARCINILE UNUI ROBOT

Asigurarea îndeplinirii sarcinii unui robot se bazeazã pe trei actiuni majore:

stabilirea unei strategii de navigare ;

modelarea spatiului de lucru ;

planificarea miscãrii în spatiul de lucru respectiv .

Trebuie mentionat însã, cã de multe ori actiunea de planificare a miscãrii în spatiul de lucru include modelarea acestuia si ca atare, cele douã actiuni se considerã formal una singurã.

1.6.1. STABILIREA STRATEGIEI DE NAVIGARE

Stabilirea unei strategii de navigare se referã la determinarea metodelor de deplasare a robotului în acord cu tipul sarcinii de executat.

Pot exista trei tipuri distincte de strategii de navigare:

1) Deplasarea dintr-un punct al spatiului de lucru într-un alt punct al acestuia, ambele având pozitii bine precizate; strategia constã în a genera o functie de comandã astfel încât sã se atingã pozitia doritã.

2) Baleierea întregii zone, în cazul robotilor a cãror sarcinã este de a atinge întreaga suprafatã de lucru, în scopul efectuãrii unei anumite actiuni (spre exemplu, curãtirea pardoselei spatiului de lucru). Navigarea se poate realiza prin douã strategii distincte:

2.1) deplasarea în spiralã, parcurgând portiuni de traiectorii paralele cu traiectorii deja utilizate, pornind de la perimetrul exterior al spatiului si mergând din aproape în aproape spre centru ;

2.2) deplasarea în zig-zag, ce constã din parcurgerea zonei utile, de la dreapta la stânga si de sus în jos, sau invers.

În cazul unui spatiu de lucru complex prevãzut cu multe obstacole, metoda de navigare constã în a-l împãrti în zone în care sã se poatã aplica una din strategiile de navigare.

1.6.2. MODELAREA SPA[IULUI DE LUCRU

Stabilirea unei hãrti de navigare în spatiul considerat se poate face fie in-dependent de orice actiune a robotului prin memorarea unei configuratii date, care de regulã, reprezintã starea initialã a spatiului de lucru, fie în cursul executãrii sarcinii pe mãsurã ce robotul îsi descoperã propriul spatiu de lucru.

Existând o sumã de cunostiinte astfel acumulate se poate proceda la îm-pãrtirea spatiului de lucru în celule independente care sã reprezinte zone acce-sibile respectiv interzise pentru robot. Aceastã operatie se numeste modelarea spatiului de lucru al robotului. Pe o astfel de modelare se bazeazã procesul propriu-zis de planificare a miscãrilor.

Pentru a realiza o modelare corectã a spatiului de lucru, unul din prin-cipalele obiective care trebuie luate în considerare este ansamblul dimensiunilor robotului. Acestea vor modifica dimensiunea obstacolelor, rezultând asa-numitele C-obstacole, dupã care robotul se poate trata ca un punct în miscare.

Având reprezentate obstacolele în forma în care ele se iau în realitate în considerare, se poate proceda la împãrtirea spatiului de lucru în zone accesibile si zone interzise.

Vom prezenta pe scurt metodele cele mai frecvent utilizate :

METODA GRILEI OMOGENE

Este o metodã simplã de modelare, care constã în împãrtirea spatiului de lucru în celule de dimensiuni identice, a cãror apartenentã la o zonã permisã sau interzisã este booleanã;

într-un spatiu de lucru bidimensional, celulele sunt dreptunghiuri, iar într-un spatiu de lucru tridimensional celulele sunt paralelipipede ;

precizia modelului depinde de dimensiunile celulelor;

capacitatea de memorie, necesarã pentru a înregistra ansamblul coordonatelor celulelor este mare.

METODA ARBORELUI

Aceastã metodã provine din cea precedentã, considerând în R2, celule dreptunghiulare de dimensiuni neegale (figura 1.7). Fiecare celulã, la rândul sãu, este descompusã în alte patru celule de dimensiuni egale.

Un arbore este o reprezentare particularã, în care fiecare celulã reprezintã un nod. Fiecare nod poate avea douã forme diferite:

nod de tip frunzã, care reprezintã o celulã care nu va mai fi descompusã. Acestei celule îi este asociatã o functie booleanã care defineste posibilitãtile de acces;

nodul de tip creangã, cãruia îi succed alte patru noduri rezultate prin descompunerea celulei corespunzãtoare în alte patru celule egale .

Numãrul de celule în care se împarte fiecare celulã initial consideratã poate fi diferit de patru. Spre exemplu, la spatiul tridimensional, fiecare celulã paralelipipedicã se împarte în câte opt celule.

METODA GRILEI NEOMOGENE

Metoda presupune toate obstacolele de formã dreptunghiularã .

Dacã ele nu au aceastã formã se vor aproxima printr-un dreptunghi acoperitor. Existând n obstacole în spatiul de lucru, acesta se împarte printr-o grilã rezultatã din prelungirea laturilor obstacolelor, obtinându-se 2n+12n+1 dreptunghiuri sau, altfel spus, 2n+1 benzi orizontale si 2n+1 benzi verticale.

Fig. 1.7. Metoda arborelui

Fiecare regiune este reprezentatã prin douã lanturi binare de câte 2n+1 biti, dintre care unul reprezintã pozitia relativã x, iar celãlalt pozitia relativã y.

Un bit are valoarea “1” dacã celula este liberã si “0” în caz contrar pentru primul lant. Al doilea lant contine “1” pentru pozitia verticalã a celulei .

Modelarea se realizeazã în sase etape :

Etapa 1 : Reprezentarea fiecãrei benzi orizontale prin 2n+1 biti. Un bit are valoarea “1” dacã celula este liberã si “0” în caz contrar. Un al doilea lant contine un singur “1” care corespunde la pozitia verticalã a benzii.

Etapa 2 : Determinarea tuturor benzilor orizontale continue rezultate din separarea primului lant în mai multe, fiecare avãnd o suitã continuã de “1”.

Etapa 3 : Gruparea lanturilor generate în etapa a doua, astfel :

lanturile sã fie regrupate în raport cu benzile care le-au generat ;

grupele sã fie ordonate în raport cu pozitia verticalã a benzilor generatoare .

Etapa 4 : Generarea unei noi liste pornind de la cea precedentã conform unor reguli.

Etapa 5 : Se repetã etapa 4 dacã noua listã are douã sau mai multe grupe ;

Etapa 6 : Se stabilesc lanturile neeliminate de pe liste care reprezintã o zonã fãrã obstacole.

Fig. 1.8. Etapele modelãrii

Fig. 1.9. Graful metodei grilei

neomogene

METODA POLIGOANELOR CONVEXE

Metoda constã în descompunerea spatiului liber bidimensional în celule poligonale. Descompunerea în celule poligonale constã în împãrtirea spatiului liber în poligoane convexe, cele mai mari posibile, ale cãror laturi alãturate sã formeze un unghi mai mic decât 1800. Trecerea de la o celulã la alta adiacentã se face prin mijlocul segmentelor ce delimiteazã cele douã celule. Ansamblul celulelor este reprezentat sub formã de graf, ale cãrui noduri reprezintã celule celule si ale cãrui legãturi reprezintã trecerile posibile între celule. Gruparea celulelor în familii permite realizarea unui graf redus care trebuie realizat astfel încât sã permitã accesul de la un grup la altul.

Fig. 1.10. Metoda poligoanelor convexe

Fig. 1.11. Graful obtinut prin metoda poligoanelor

convexe

Modelarea prin hipergraf este o altã metodã de reprezentare a spatiului descompus în poligoane convexe. Împãrtirea este realizatã prelungind laturile obstacolelor. Rezultã trei tipuri de regiuni:

obstacole ;

regiunile libere ;

zonele rezultate din suprapunerea regiunilor libere .

Nodurile si legãturile grafului asociat reprezintã laturile obstacolelor si respectiv, zonele lor adiacente. Se delimiteazã în graf ansamblul laturilor obsatcolelor care sunt limitele unei regiuni libere. Graful cu aceste domenii delimitate constituie un hipergraf .

Deducerea drumului de parcurs se realizeazã prin analizarea zonelor de suprapunere a regiunilor libere.

METODA PUNCTELOR DE TRECERE

Modelarea prin puncte de trecere considerã vârfurile obstacolelor modificate (C-obstacolelor) legându-se între ele de o astfel de manierã încât sã nu se producã coliziuni. Lista punctelor de trecere astfel determinate reprezintã succesiunea de pozitii posibile ale robotului mobil în spatiul respectiv.

Fig. 1.12. Metoda punctelor de trecere

CAPITOLUL 2

METODE DE PLANIFICARE

Problema planificãrii traiectorilor în prezenta obstacolelor poate fi enuntatã astfel:

fiind dat un spatiu de lucru populat cu obstacole cunoscute prin frontierele lor, respectiv cu obiecte mobile, trebuie sã se determine o traiectorie fãrã coliziuni cu obstacolele, aducând obiectele mobile din configuratia initialã în cea finalã.

Problema poate fi abordatã în douã moduri (global sau local), de unde rezultã douã tipuri de metode de planificare: globale si locale.

Aplicarea unei metode globale necesitã cunoasterea completã “apriori” a spatiului de lucru, modelarea corespunzãtoare a spatiului liber, cercetarea tuturor traiectoriilor posibile si selectarea unei anumite traiectorii corespunzãtoare unui criteriu de cost minim. O astfel de metodã garanteazã existenta sau inexistenta unei solutii. De asemenea, metodele globale de planificare se pot adapta usor la programarea off-line.

Aplicarea unei metode locale necesitã cunoasterea partialã a spatiului de lucru. O astfel de metodã nu garanteazã atingerea configuratiei finale, dar reprezintã avantajul unei bune adaptãri în timp real.

În ambele cazuri, rezolvarea problemei de planificare presupune rezolvarea unor probleme de naturã geometricã (geometrie purã) sau de geometrie combinatã cu cinematicã si/sau dinamicã. În astfel de situatii se utilizeazã cu precãdere rezultatele geometriei algoritmice.

Pentru un robot la un post de lucru fix, mobilele pentru care trebuie sã se determine traiectoriile fãrã coliziuni sunt constrânse între ele de anumite legãturi. Astfel, o problemã de planificare este deci “apriori” complexã. Totusi, prin transformãri adecvate, operate asupra obstacolelor, o problemã de planificare poate fi redusã la o problemã de “navigare” a unui robot punctiform, considerat ca un mobil liber care evolueazã printre obstacolele transformate.

Astfel, planificarea traiectoriilor unui robot comportã, în general, douã etape :

transformarea obstacolelor (determinarea C-obstacolelor) astfel încât robotul poate fi considerat ca un punct material ;

cercetarea unei traiectorii, fãrã coliziuni, pentru acest punct .

În cadrul unui sistem CAD/CAM dotat cu un algoritm de cercetare a spatiului liber se poate aplica planificarea traiectoriilor fãrã coliziuni, în mod interactiv cu operatorul, prin vizualizarea acestui spatiu.

În general, aplicarea unei metode de planificare trebuie sã satisfacã anumite restrictii, ca de exemplu: drumul cel mai sigur, drumul cel mai scurt, etc.

2.1. METODA HÃR[II DRUMURILOR

Metoda hãrtii drumurilor se bazeazã pe ideea captãrii conexitãtii spatiului liber al robotului într-o retea de curbe unidimensionale, numitã “harta drumurilor” HD. Odatã construitã, aceasta este utilizatã ca o bancã de traiectorii standard dintre care se alege aceea ce uneste configuratia initialã cu cea finalã. Utilizând diferite principii constructive se obtin diferite tipuri de hãrti ca: graful vizibilitãtii, diagrama Voronoi, reteaua drumurilor libere, siluetele etc.

Metoda grafului vizibilitãtii se aplicã cu precãdere la spatii ale configuratiilor bidimensionale populate cu C-obstacole poligonale. Harta drumurilor este un graf numit graful vizibilitãtii, care este construit prin conectarea tuturor perechilor de vârfuri din frontiera lui SCliber prin segmente de dreaptã, dacã aceste segmente nu traverseazã interiorul unui C-obstacol.

Metoda retractãrii constã în construirea unei hãrti a drumurilor prin definirea unei aplicatii continue (numitã retractare) a lui SCliber pe HD. Când spatiul configuratiilor este tridimensional,metoda conduce la retractarea lui SCliber pe diagrama sa Voronoi. Aceasta este definitã ca submultime unidimensionalã a lui SCliber ce maximizeazã intervalele spatiale libere dintre robot si obstacole.

Metoda drumului liber este înruditã cu metoda retractãrii,punctul de referintã al robotului fiind constrâns sã rãmânã pe o retea de segmente de dreaptã reminiscente dintr-o diagramã Voronoi.

Metoda siluetelor constã din schitarea unei siluete a spatiului liber al robotului când acesta este privit dintr-un punct situat la infinit si adãugând câteva segmente de curbã obtinute prin unirea unor puncte critice ale siluetei cu alte portiuni de curbã ale acesteia. Silueta si curbele de legãturã formeazã harta drumurilor HD, care va fi cercetatã în vederea gãsirii unei traiectorii.

Metodele enumerate sunt deosebit de eficace în probleme de planificare din spatiul configuratiilor de dimensiuni mici (2 sau 3).

2.1.1. DRUMUL CEL MAI SIGUR.

DIAGRAMA VORONOI.

Se presupune pentru început cã obstacolele sunt modelate prin puncte. Trebuie sã se determine o traiectorie care sã permitã mobilului punctiform sã se deplaseze printre obstacole astfel încât sã se afle în tot timpul miscãrii la distantã maximã fatã de obstacole. Traiectoria obtinutã este formatã din segmentele diagramei Voronoi a punctelor obstacolelor (Figura 2.1).

Fie o multime finitã de n puncte X={X1,X2…,Xns în Rp unde p este dimensiunea spatiului. Diagrame Voronoi (DV) este un “caroiaj” în Rp, format din celulele Ki, i=1,…,n definite prin:

Ki ={X Rp d(X’,Xi) d(X’,Xj), j is

unde d(X’,Xi) este distanta euclidianã între punctele X’ si Xi .

În figura 2.1 este prezentatã diagrama Voronoi (DV) pentru un spatiu bidimensional. Frontierele celulelor sunt portiunile de mediatoare ale diferitelor segmente XiXj. Se poate arãta cã în R2 diagrama Voronoi nu are mai mult de 2n-5 vârfuri, respectiv 3n-6 laturi.

Vârfurile diagramei Voronoi sunt centrele tuturor cercurilor construite determinate de trei puncte mi echidistante si care nu contin nici un alt punct. În vecinãtatea obstacolelor, robotul se poate deplasa pe laturile (DV). Acestea reprezintã locul cel mai sigur unde robotul evitã coliziunile.

Pentru a planifica traiectoria, trebuie rezolvate douã probleme:

elaborarea unor algoritmi eficace pentru cercetarea (DV) ;

alegerea, dintre toate drumurile posibile, a drumului minim.

Diagrama Voronoi generalizatã (DVG)

Se pote generaliza diagrama Voronoi la un ansamblu de C-obstacole care nu mai sunt modelate ca puncte. ”Caroiajul” format din celule Ki, i=1,…,n, definite în aceeasi manierã :

Ki ={X Rp d(X’,SCBi) d(X’,SCBj), j is

unde d(X’,SCBi) este distanta euclidianã de la punctul X’ la C-obstacolul SCBi, determinã (DVG).

Într-un spatiu de lucru bidimensional, când C-obstacolele sunt modelate ca poligoane, (DVG) este formatã din segmente de dreaptã si parabole.

Astfel, un punct X’, aflat la frontiera între douã celule poate fi:

la egalã distantã de douã vârfuri de C-obstacol. Locul lui X’ este local un segment de dreaptã (mediatoarea segmentului ce uneste cele douã vârfuri) ;

la egalã distantã de vârful unui C-obstacol si latura altui C-obstacol. Locul lui X’ este local o parabolã (vârful este focarul, iar latura este axa parabolei);

la egalã distantã de douã laturi de C-obstacol. Locul lui X’ este local un segment de dreaptã (bisectoarea unghiului format de cele douã laturi) .

Fig. 2.1. Diagrama Voronoi pentru un spatiu de lucru bidimensional

2.1.2. METODA GRAFULUI VIZIBILITÃ[II (GV)

Se considerã un obiect poligonal A ce translateazã cu orientare fixã în spatiul de lucru bidimensional W=R2. În acest caz, spatiul configuratiilor lui A este SC=R2, iar regiunea SCB a C-obstacolelor este o regiune poligonalã a lui R2. Spatiul SCliber este complementara lui SCB pe SC.

Metoda grafului vizibilitãtii necesitã cunoasterea tuturor C-obstacolelor a priori, astfel încât ea poate fi calificatã ca o metodã globalã.

Principiul metodei constã în construirea unei traiectorii semilibere ca o linie poligonalã ce conecteazã configuratia initialã Cinitial de configuratia finalã Cfinal, trecând prin vârfuri ale lui SCB.

Dacã exitã o astfel de traiectorie, atunci cu sigurantã va exista o traiectorie semiliberã T de lungime euclidianã minimã între aceste douã configuratii. Pentru ca traiectoria T sã fie cea mai scurtã, ea trebuie sã fie formatã din subtraiectorii care sã fie cele mai scurte posibile între douã configuratii date. Aceasta înseamnã cã, în orice configuratie C, traversatã de T, dacã C nu este un vârf al lui SCB, T trebuie sã aibã curbura nulã. Deci, vârfurile traiectoriei poligonale T sunt vârfuri ale lui SCB.

Este astfel evident cã pentru a gãsi o traiectorie semiliberã între oricare douã configuratii este suficient pentru un planificator sã considere liniile poligonale ce unesc vârfurile lui SCB. Aceastã multime de linii poligonale, numitã graf al vizibilitãtii, contine cu sigurantã si cea mai scurtã traiectorie (figura 2.2).

Figura ilustreazã graful vizibilitãtii în cazul unui spatiu al configuratiilor simplu, în care SCB constã din trei regiuni separate. Legãturile grafului includ si muchiile lui SCB. Traiectoria cea mai scurtã între Cinitial si Cfinal este reprezentatã cu linie îngrosatã.

Din cele precizate rezultã cã :

Graful vizibilitãtii este graful neorientat (GV), definit astfel:

nodurile lui (GV) sunt Cinitial, Cfinal si vârfurile lui SCB;

douã noduri ale lui (GV) sunt conectate printr-o legãturã, dacã si numai dacã, fie segmentul de dreaptã ce le uneste este o muchie a lui SCB, fie se aflã în întregime în SCliber, conditie de la care sunt exceptate cele douã capete.

Algoritmul metodei

Algoritmul metodei grafului vizibilitãtii contine în mod firesc urmãtoarele etape :

se construieste graful vizibilitãtii (GV);

se cerceteazã (GV) pentru a gãsi o traiectorie între configuratia initialã si cea finalã ;

dacã se gãseste o traiectorie, se comunicã aceasta, iar în caz contrar se comunicã “esec”.

Un algoritm primitiv de construire a lui (GV) ia în considerare toate perechile de puncte (X,X’), unde X si X’ sunt fie Cinitial si Cfinal, fie vârfurile lui SCB.

Dacã X sI X’ sunt capetele aceleiasi muchii a lui SCB, atunci nodurile corespunzãtoare sunt conectate printr-o legãturã în (GV).

În caz contrar, se calculeazã intersectia dreptei ce trece prin X si X’ cu SCB ; nodurile corespunzãtoare lui X si X’ sunt conectate printr-o legãturã dacã si numai dacã nici o intersectie nu se aflã în segmentul deschis ce uneste cele douã puncte .

Algoritmul poate fi îmbunãtãtit astfel:

pentru fiecare punct X din (GV) se calculeazã orientarea ai[0,2t a fiecãrei semidrepte ce pleacã din X si trece prin alt punct Xi al lui (GV) si se sorteazã orientãrile ai;

se roteste o semidreaptã ce pleacã din X de la orientarea 0 la orientarea 2, oprinduse la fiecare orientare ai ; la fiecare oprire se reînnoieste intersectia semidreptei cu SCB, se pãstreazã urma punctului în intersectia cea mai apropiatã de X si se verificã dacã segmentul ce conecteazã X si Xi intersecteazã SCB.

Fig. 2.2. Constructia grafului vizibilitãtii

2.1.3. METODA RETRACTÃRII

Principiul metodei retractãrii:

Principiul metodei retractãrii constã în definirea unei aplicatii continue a lui SCliber pe o retea de curbe unidimensionale HD în SCliber.

Notiunea de retractare este clasicã în topologie. Astfel:

Dacã este un spatiu topologic si o submultime a sa, aplicatia surjectivã se numeste retractare de la la dacã si numai dacã este continuã, iar restrictia sa la este aplicatia identitate.

Dacã este o retractare a spatiului topologic la , ea pãstreazã conexitatea lui dacã si numai dacã pentru orice x , x si (x) apartin aceleiasi componente conexe a lui .

Se considerã o retractare a lui SCliber ce pãstreazã conexitatea definitã prin aplicatia :SCliber HD, unde HD SCliber reprezintã o retea de curbe unidimensionale.

Între douã configuratii libere Cinitial si Cfinal existã o traiectorie liberã dacã si numai dacã existã o curbã în HD între (Cinitial) si (Cfinal).

Fie T:[0,1t SCliber o traiectorie liberã între Cinitial si Cfinal. Se aplicã lui T.

Datoritã continuitãtii lui se obtine o traiectorie liberã T:[0,1t HD între (Cinitial) si (Cfinal).

Invers, dacã existã o traiectorie în HD între (Cinitial) si (Cfinal), atunci Cinitial si Cfinal sunt conectate printr-o traiectorie liberã care este produsul a trei traiectorii:

o traiectorie liberã de la Cinitial la (Cinitial) ;

o traiectorie de la (Cinitial) la (Cfinal) în HD;

o traiectorie liberã de la (Cfinal) la Cfinal .

Prima si a treia din aceste traiectorii existã deoarece conservã conexitatea lui SCliber.

Eficienta metodei retractãrii este deci determinatã de alegerea aplicatiei .

Metoda de planificare a traiectoriilor bazatã pe retractarea utilizeazã diagrama Voronoi ca hartã a drumurilor. Ea se desfãsoarã dupã cum urmeazã:

construieste diagrama Voronoi ;

calculeazã punctele (Cinitial) si (Cfinal) si apoi identificã arcele din diagramã ce contin aceste puncte ;

cerceteazã diagrama Voronoi pentru a gãsi o secventã de arce A1,…,Ap, astfel încât (Cinitial) A1, (Cfinal) Ap si pentru i1,p-1, arcele Ai si Ai+1 sã aibã un capãt comun;

dacã existã o secventã de arce între (Cinitial) si (Cfinal), atunci cercetarea se terminã cu succes; ^n caz contrar se declar@ “esec”.

Fig. 2.3. Algoritmul metodei retract@rii

2.1.4. METODA DRUMULUI LIBER

Principiul metodei:

Metoda drumului liber se aplicã obiectelor poligonale care se miscã (translatie si rotatie) într-un spatiu de lucru poligonal (bidimensional).

Aceastã metodã constã din extragerea unor figuri geometrice, denumite drumuri libere, din spatiul de lucru, conectarea lor într-un graf numit reteaua drumurilor libere si cercetarea acestui graf.

Un drum liber este un cilindru generalizat, bidimensional, liniar, drept, a cãrui axã este completatã cu descrierea tuturor orientãrilor libere ale robotului A când originea sistemului de referintã atasat OA se deplaseazã de-a lungul sãu.

Un cilindru generalizat poate fi generat de o pereche de laturi E1,E2 ce corespund la douã obstacole B1 si B2.

Figura 2.4 ilustreazã geometria unui drum liber .

Fig. 2.4. Geometria unui drum liber

Robotul A se poate deplasa dea lungul unui drum liber, sau dea lungul unei portiuni a acestuia, dacã existã o multime conexã de orientãri libere ale lui A când originea OA se deplaseazã de-a lungul axei cilindrului generalizat corespunzãtor.

În plus, ori de câte ori se intersecteazã douã axe, A se poate transfera de la un drum liber la altul dacã intervalele de orientãri libere ale lui A (când OA se deplaseazã de-a lungul ambelor axe) au o intersectie nenulã în punctul de concurentã a axelor. Reteaua drumurilor liber este o reprezentare a miscãrilor posibile ale lui A de-a lungul axelor si între acestea.

Figura 2.5 indicã patru drumuri libere într-un spatiu de lucru mãrginit.

Se mentioneazã cã, în cazul prezentat în figura 2.5. se mai pot construi încã alte drumuri libere, deci descompunerea nu este unicã.

Fig.2.5. Descompunerea spatiului de lucru în drumuri

libere

2.2. METODA DESCOMPUNERII CELULARE

Aceastã metodã constã în decsompunerea spatiului liber al robotului în regiuni simple, numite celule, astfel încât sã poatã fi generatã cu usurintã o traiectorie între oricare douã configuratii. Se construieste si se verificã graful de conexiune asociat descompunerii, graf care reprezintã relatiile de adiacentã dintre celule. Nodurile grafului sunt extrase din spatiul liber, iar douã noduri sunt conectate dacã si numai dacã cele douã celule corespunzãtoare sunt adiacente. Rezultatul verificãrii este o secventã de celule numitã canal. Se poate compune o traiectorie liberã din aceste secvente .

Metoda descompunerii celulare se realizeazã în douã moduri :

descompunere celularã exactã ;

descompunere celularã aproximativã ;

2.2.1. METODA DESCOMPUNERII CELULARE

EXACTE

În cadrul acestei metode descompunerea este realizatã în asa fel încât celulele sã nu se suprapunã, iar reuniunea lor sã fie SCliber. Celulele generate trebuie sã aibe urmãtoarele caracteristici:

geometria fiecãrei celule trebuie sã fie suficient de simplã, pentru a face posibilã calcularea unei traiectorii între oricare douã configuratii din celulã ;

testarea adiacentei a douã celule oarecare si gãsirea unei traiectorii ce traverseazã portiunea de frontierã corespunzãtoare la douã celule adiacente sã se realizeze dificil .

Algoritmul metodei constã din urmãtorii pasi:

descompunerea spatiului configuratiilor în poligoane convexe (celule) si etichetarea fiecãrei celule cu un numãr întreg diferit ;

construirea grafului de conexiune G ;

cercetarea grafului G în vederea obtinerii succesiunii de celule adiacente, adicã de canale, într qinit si qfinal ;

dacã sa determinat un canal corespuntãtor se retine secventa respectivã de celule adiacente, iar în caz contrar se declarã eroare .

“Metoda descompunerii celulare exacte“ constituie practic tema proiectului, astfel încât vom descrie pe larg aceastã metodã în capitolul 3 iar programul soft care planificã miscarea unui robot prin aceastã metodã se va descrie în capitolul 4 .

2.2.2. METODA DESCOMPUNERII CELULARE

APROXIMATIVE

Metoda descompunerii celulare aproximative produce celule care au forme predefinite (de exemplu: dreptunghiuri), si a cãror reuniune este strict inclusã în spatiul liber. Frontiera unei celule nu caracterizeazã nici un fel de discontinuitate si nu are un sens fizic.

Spatiul liber are ca frontierã externã un dreptunghi R si ca frontiere interioare niste poligoane, care de fapt sunt obstacolele. Se descompune în mod recursiv dreptunghiul R, dupã fiecare descompunere obtinându-se patru dreptunghiuri identice. Dacã interiorul unui dreptunghi este situat în totalitate în spatiul liber sau în regiunea C-obstacolelor, atunci acel dreptunghi nu se va descompune în continuare. În caz contrar, el va fi descompus recursiv în patru dreptunghiuri, pânã se atinge o rezolutie predefinitã.

La anumite nivele de rezolutie sunt folosite în continuare pentru construirea grafului de conexiuni doar celulele care se aflã în întregime în spatiul liber. În caz contrar se poate întâmpla ca rezolutia descompunerii sã fie insuficientã sau sã nu existe o traiectorie liberã între configuratia initialã si cea finalã.

Prevãzând o înzestrare atât cu tehnici adecvate de cãutare, cât si cu tehnici de calcul numeric exacte, metoda descompunerii celulare exacte, este completã, ea garantând gãsirea unei traiectorii libere, oricând aceasta existã, iar în caz contrar se returneazã eroare. Metodele aproximative nu sunt complete, dar, pentru majoritatea dintre ele, precizia aproximãrii poate fi reglatã si fãcutã mai micã (în functie de timpul de rulare), astfel încât se poate spune despre aceste metode cã sunt cu “rezolutie completã “. Pe de altã parte, exceptând cazurile foarte simple, la metodele exacte apar implicatii matematice mai mari decât la metodele aproximative, deci acestea din urmã sunt mai usor de implementat .

Descriere generalã :

În continuare “un patrulater“ este descris ca o regiune închisã, având urmãtoarea formã în spatiul cartezian Rn :

{(x1,…,xn) x1 [x1’,x1”t,…,xn[xn’,xn”ts.

Diferenta xi”-xi’, i=1,…,n, necesitã dimensiunea patrulaterului. Aceastã dimensiune nu poate fi zero.

Sã considerãm robotul A în spatiul configuratiilor C din RN sau RN SO(N), cu N=2 sau 3. Dacã C = RN, configuratia q se reprezintã prin coordonatele lui A relativ la originea OA din cadrul FW atasat spatiului de lucru.

Dacã C = R2 SO(2) = R2 S1, o configuratie este reprezentatã prin (x,y,), unde este ungiul dintre axele x ale lui FW si FA (cadrul fiind atasat lui A). Dacã C = R3 SO(3), configuratia este reprezentatã prin (x, y, z, , , ), unde , si sunt unghiurile Euler.

Putem considera practic cã un set posibil al pozitiilor lui A este continut în patrulaterul D RN. Putem reprezenta Cliber prin:

Cliber = R CB ,

unde CB este regiunea C-obstacolelor si :

R = int (D), dacã C = RN ,

R = int (D) [0, 2t, dacã C =R2 S1 ,

R = int (D) [0, 2t [0, t [0, 2t, dacã C = R3 SO(3) .

Fie = cl(R). Acesta este un patrulater din Rm, unde m este dimensiunea spatiului configuratiilor C .

Descompunerea rectangularã P a lui este o colectie finitã de patrulatere {kisi=1,…,r astfel încât :

este egalã cu reuniunea tuturor ki, adicã:

Interioarele lui ki nu se intersecteazã, adicã:

i1, i2 [1,rt, i1 i2 : int(k1) int (k2) = .

Astfel patrulaterul ki reprezintã o celulã a descompunerii P a lui .

Douã celule sunt adiacente dacã si numai dacã intersectia acestora este o multime diferitã de 0 din Rm-1. Aceastã intersectie este compusã pe baza urmãtoarei discutii:

dacã C = R2 S1 , (x,y,2) este identificat prin (x,y,0) ,

dacã C = R3 SO(3), (x,y,z,2,,), (x,y,z,,,) si (x,y,z,,,2) sunt identificate prin (x,y,z,0,,), (x,y,z,,0,2-) si (x,y,z,,,0) .

Celulele ki sunt clasificate astfel:

GOALE, dacã si numai dacã interiorul acesteia nu intersecteazã regiunea C-obstacolelor, adicã int( ki ) CB = .

PLINE, dacã si numai dacã ki este continut în interiorul regiunii C-obstacolelor, adicã ki CB .

MIXTE, în rest.

Graful de conexiune asociat cu descompunerea P a lui este un graf neorientat G definitã în continuare:

nodurile grafului sunt celule GOALE si MIXTE ale lui P ;

douã noduri ale lui G sunt conectate dacã si numai dacã celulelele corespondente sunt adiacente .

Într-o descompunere rectangularã P a lui , un canal este definit ca o secventã (kj)j=1,…,p cu celule GOALE sisau cu celule MIXTE astfel încât douã celule consecutive kj si kj+1, j [1, p1t, sunt adiacente.

Un canal ce contine doar celule GOALE este denumitã canal E (vezi figura 2.6).

Un canal ce contine cel putin o celulã MIXTÃ este denumitã canal M.

Dacã (kj)j=1,…,p este un canal-E, atunci orice cale ce conecteazã o configuratie din k1 configuratie din kp si apartine:

este o cale liberã .

Dacã (kj)j=1,…,p este un canal-M, exisã o cale liberã ce conecteazã douã configuratii din k1 si kp, dar aceasta nu este o garantie pentru cazul de fatã.

Fig. 2.6. Un canal este o secventã de celule adiacente

care sunt fie GOALE, fie MIXTE. Dacã toate celulele

sunt GOALE canalul se numeste canal-E, altfel spu-

nem cã avem un canal-M. Figura prezintã un canal E

într-un spatiu bidimensional.Aceasta conecteazã douã

celule ce contin configuratia initialã qinit si configuratia

finalã qfinal .

Sã considerãm qinitCliber configuratia initialã si qfinalCliber configuratia finalã, problema constând în a genera un canal-E (kj)j=1,…,p, astfel încât qinitk1 si qfinalkp.

Dacã astfel sa generat un canal, fie j =kj kj+1, j=1,…,p1 intersectia marginilor celor douã celule succesive.

O cale liberã ce uneste configuratia initialã cu configuratia finalã pote fi extrasã din canalul-E prin legarea qinitial cu qfinal printr-o linie poligonalã care are vârful Qj int(j). Pentru fiecare j, astfel încât j-1 si j au câteva submultimi din kj,un punct aditional Qj-1’ situat în interiorul lui kj poate include în cale vârful, dar în acest caz nu se poate garanta cã, segmentul de linie Qj-1Qj este inclus în spatiul liber al robotului (vezi figura 2.7).

Constructia unei cãi ierarhice constã în generarea unui canal-E printr-o descompunere rectangularã a lui si cãutarea grafului de conexiune asociat.

Fie Pi, i=1,2,…, descompuneri succesive ale lui . O descompunere Pi se obtine dintr-o descompunere anterioarã Pi-1 (cu P0 ={s), descompunând una sau toate celulele mixte, celelalte celule rãmânând neschimbate.

Un algoritm simplu este prezentat mai jos:

Determinã o descompunere rectangularã Pi a lui . Pune i la 1.

Cautã graful de conexiune Gi asociat descompunerii Pi pentru un canal ce conecteazã celula ce contine qinitial cu celula ce contine qfinal. Dacã rezultatul cãutãrii este un canal-E, se considerã succes.

Dacã acesta este un canal-M, se trece la urmãtorul pas. Altfel, se returneazã eroare.

Fie Hi canalul-M generat la pasul 2. Atribuim lui Pi+1 valoarea Pi. Pentru fiecare celulã MIXTÃ k din Hi, se determinã o descompunere rectangularã P k a lui k si se seteazã Pi+1 la [Pi+1 {kst P k. Setãm i la valoarea i+1. Revenim la pasul 2.

Fig. 2.7. O cale extrasã din canalul-E ce uneste

qinitial cu qfinal printro linie poligonalã.

Descompunerea 2m -Arborescentã

O descompunere 2m-arborescentã a lui este un arbore de gradul 2m. Fiecare nod al arborelui este o celulã rectangularã, având etichetele GOL, PLIN, sau MIXT. Rãdãcina arborelui este .

Dacã m =2, arborele se numeste cuadric, iar dacã m=3 arborele este cunoscut sub numele arbore-octic.

Figura 2.8.prezintã o descompunere cuadricã într-un spatiu bidimensional al configuratiilor si deseneazã o portiune din graful cuadric.

Figura 2.9.prezintã cazul arborelui-octic.

Fig. 2.8. Descompunerea cuadricã

Fig. 2.9. Notiunea de arbore octic.

2.2.3. METODA CÂMPULUI POTEN[IAL

Aceastã metodã de planificare trateazã robotul, reprezentat ca un punct în spatiul configuratiilor, ca pe o particulã aflatã sub influenta unui câmp potential artificial U ,ale cãrui variatii locale reflectã “structura “ spatiului liber. Functia potential este definitã pe spatiul liber ca suma dintre un potential atractiv, ce atrage robotul spre configuratia finalã, si un potential repulsiv, ce îndepãrteazã robotul de obstacole .

Planificarea miscãrii este fãcutã în mod iterativ. La fiecare iteratie, forta artificialã:

F (C) = U(C)

indusã de functia potential în configuratia curentã este consideratã ca directia cea mai promitãtoare a miscãrii si generarea traiectoriei înainteazã de-a lungul acestei directii .

Metoda a fost dezvoltatã initial ca o metodã “on line” de evitare a coliziunilor, aplicabilã când robotul nu are un model aprioric al obstacolelor,dar le poate sesiza în timpul executiei miscãrii. În particular, procedura se poate bloca într-un minim local al functiei potential, altul decât configuratia finalã, deoarece actioneazã ca o procedurã rapidã.

Metodele de câmp potential sunt denumite adesea metode locale. Acestea se datoreazã faptului cã cele mai multe functii potential nu rãmân valabile dincolo de o vecinãtate limitatã, într-un spatiu al configuratiilor bine definit. Functia potential idealã ar fi în aceastã situatie cea cu un singur minim în configuratia finalã .

Caracterul metodelor de câmp potential este profund empiric, putând conduce la greseli în gãsirea traiectoriei libere, chiar dacã existã una. Marele avantaj al acestei metode constã în rapiditatea deosebitã.

Pentru ca robotul sã fie atras de configuratia finalã si respins de obstacole, functia U este consideratã ca o sumã a douã functii:

U(C) =Ua(C)+Ur(C)

unde:

Ua este potentialul atractiv asociat cu configuratia finalã Cfinal ;

Ur este potentialul repulsiv asociat cu regiunea C-obstacolelor .

Potentialul Ua este independent de regiunea C-obstacolelor, iar potentialul Ur este independent de configuratia finalã .

În figura 2.3. se ilusteazã cele precizate pentru un spatiu al configuratiilor bidimensional, care contine douã obstacole (figura 2.3.a).

Potentialul atractiv are minimul în configuratia finalã (figura 2.3.b), potentialul repulsiv este prezentat în figura 2.3.c. iar potentialul total apare în figura 2.3.d.

Fig. 2.3. Exemplu pentru un spatiu de lucru bidimensional

CAPITOLUL 3

METODA DESCOMPUNERII CELULARE EXACTE

Principiul acestei metode de planificare a traiectoriilor constã în :

descompunerea spatiul liber SCliber al robotului într-o colectie de regiuni numite celule, care nu se suprapun, a cãror reuniune este exact SCliber;

se construieste si se verificã graful de conexiune care reprezintã relatiile de adiacentã între celule; în cazul reusitei, rezultatul verificãrii este o secventã de celule adiacente denumitã canal, care conecteazã celula ce contine configuratia initialã cu celula ce contine configuratia finalã;

se extrage traiectoria consideratã favorabilã.

Nu toate descompunerile celulare ale spatiului liber sunt potrivite.Spre exemplu, o viziune extremã asupra acestei probleme, ar fi considerarea întregii multimi SCliber ca o singurã celulã, dar extragerea unei traiectorii din aceastã celulã ar conduce la problema initialã.

Celulele generate de descompunere trebuie sã aibã urmãtoarele caracteristici:

geometria fiecãrei celule trebuie sã fie suficient de simplã, pentru a face posibilã calcularea unei traiectorii între oricare douã configuratii din celulã;

testarea adiacentei a douã celule oarecare si gãsirea unei traiectorii ce traverseazã portiunea de frontierã corespunzãtoare la douã celule adiacente sã nu se realizeze dificil.

Din cele precizate, rezultã cã frontiera unei celule este o zonã criticã, a cãrei traversare impune anumite modificãri.

Celulele, însã, sunt regiuni omogene, astfel încât toate traiectoriile aflate în aceeasi celulã, însã oricare douã configuratii, sunt echivalente calitativ.

Existã mai multe metode de planificare, bazate pe descompunerea celularã exactã, al cãror avantaj comun este existenta canalului ce conecteazã configuratia initialã cu cea finalã.

Conceptul de canal este mai putin restrictiv decât cel de traiectorie si poate asigura robotului informatii utile pentru tratarea restrictiilor dinamice si a obstacolelor neasteptate în timpul executiei.

3.1. APLICAREA METODEI LA SPA[IUL

CONFIGURA[IILOR POLIGONAL

În cazul simplu, când SC=R2, regiunea SCB a C-obstacolelor este o regiune poligonalã în spatiul configuratiilor.

Pentru simplificare, se considerã cã spatiul liber al robotului:

SCliber=SCSCB

este mãrginit, desi aceastã presupunere nu este necesarã efectiv.

O descompunere convex poligonalã K a spatiului SCliber este o colectie finitã de poligoane convexe, numite celule, astfel încât interioarele oricãror douã celule nu se intersecteazã, iar reuniunea tuturor celulelor este egalã cu SCliber.

Douã celule k si k’ din K sunt adiacente dacã si numai dacã k k’este un segment de dreaptã de lungime diferitã de zero.

Graful de conexiune asociat unei descompuneri convex poligonale a lui SCliber este graful G neorientat introdus astfel :

nodurile lui G sunt celulele lui SCliber ;

douã noduri ale lui G sunt conectate printr-o legãturã, dacã si numai dacã, celulele corespunzãtoare din K sunt adiacente.

Figura 3.1 prezintã o descompunere convex poligonalã a spatiului liber pentru un spatiu al configuratiilor bidimensional, în care sunt pozitionate obstacole poligonale si sunt mentionate pozitiile, initialã si finalã, ale unui robot considerat punctiform. Figura prezintã si graful de conexiune asociat acestei descompuneri.

Algoritmul descompunerii celulare exacte pentru planificarea unei traiectorii libere ce conecteazã configuratia initialã cu cea finalã constã din:

se genereazã o descompunere convex poligonalã K a lui SCliber, în care fiecare celulã este etichetatã cu un numãr întreg diferit;

se construieste graful de conexiune G asociat lui K cu fiecare nod plasat în celula corespunzãtoare;

se cerceteazã G, cãutând o secventã de celule adiacente între configuratia initialã si cea finalã;

dacã cercetarea se terminã cu succes, se retine secventa generatã de celule, în caz contrar, se declarã “gresealã”.

Rezultatul algoritmului este o secventã k1,…,kp de celule, astfel încât Cinitialk1, Cfinalkp, iar pentru orice j[1, p-1t, kj si kj+1 sunt adiacente.

Fig. 3.1. Descompunere convex poligonalã a spatiului liber

Aceastã celulã este denumitã canal. %n figura 3.1, spre exemplu, Cinitial este în celula 1, iar Cfinal în celula 7. Un canal posibil este secventa de celule: 1,2,3,4,13,8,7. Interiorul unui canal trebuie sã se afle în întregime în spatiul liber.

Dacã se noteazã cu Fkj si cu Fkj+1, frontierele celulelor kj, respectiv kj+1, atunci intersectia:

Lj=Fkj Fkj+1

reprezintã limita între cele douã celule.

Un mod simplu de a genera o traiectorie liberã continutã în interiorul canalului produs de cercetarea lui G este de a considera punctul de mijloc Qj al fiecãrui segment Lj si de a conecta Cinitial cu Cfinal printr-o linie poligonalã, ale cãrui vârfuri succesive sunt Q1,..,Qp-1(figura 3.2). Dacã segmentul Qj-1Qj se aflã chiar pe limita celulei kj, atunci în fiecare din respectivele celule va trebui introdus un punct suplimentar Qj’.

Fig. 3.2. Generarea traiectoriei libere prin conectarea punctelor de mijloc Qj

Descompunerea trapezoidalã

O descompunere neoptimã poate fi generatã destul de eficient într-un alt mod (figura 3.3). Astfel se genereazã o linie (L) paralelã, spre exemplu, cu axa Oy, care baleiazã de-a lungul spatiului configuratiilor; procesul de baleiere este întrerupt ori de câte ori linia (L) întâlneste câte un vârf al lui SCB.

Fig.3.3. Descompunerea trapezoidalã

Se creeazã întotdeauna maxim douã segmente de dreaptã verticale ce leagã vârful X cu muchiile lui SCB aflate imediat deasupra, respectiv imediat dedesubtul lui X. Conturul lui SCB si segmentele de dreaptã verticale determinã o descompunere trapezoidalã a lui SCliber (numitã sI descompunere verticalã). Fiecare celulã a descompunerii este fie un trapez, fie un triunghi. Douã celule sunt adiacente dacã si numai dacã limita lor este un segment vertical. Când este traversat un astfel de segment, structura verticalã a restrictiilor impuse de SCB miscãrilor lui A se modificã discontinuu.

Se observã cã acelasi algoritm se poate aplica si în cazul când SCliber nu este mãrginit. În acest caz, descompunerea generatã va include celule ce se extind la infinit pe directia axei Oy. În timpul baleierii liniilor este posibilã crearea concomitentã a segmentelor de linii verticale emanate din vârfurile lui SCB, generarea grafului de conexiune G si identificarea celulelor ce contin configuratia initialã si finalã.

În figura 3.4 este ilustratã metoda de planificare a traiectoriilor prin descompunere trapezoidalã. Cercetarea lui G se poate realiza în diferite moduri, rezultând diferite cãi posibile (spre exemplu, cea indicatã cu linie îngrosatã în figura 3.4b) care, la rândul lor,determinã canalul (zona hasuratã din figura 3.4.c).

Ultima etapã este stabilirea efectivã a traiectoriei, spre exemplu, prin unirea mijloacelor segmentelor verticale întâlnite în canalul stabilit între punctele Cinitial si Cfinal.

Aceastã metodã de planificare este frecvent utilizatã pentru cã realizeazã un optim între alegerea unei distante cât mai îndepãrtate de obstacole si obtinerea unei traiectorii cât mai scurte. Ea poate fi extinsã pentru cazul SC=R3, cu C-obstacole poliedrice.

Se poate construi un algoritm de baleiere planã pentru realizarea descompunerii lui SCliber în celule paralelipipedice.

Douã celule sunt adiacente dacã si numai dacã douã din fetele lor au în comun un trapez cu aria diferitã de zero.

Pentru a aplica algoritmul trebuie construit un graf cu fiecare nod Qj selectat în interiorul intersectiei trapezoidale a contururilor celor douã celule adiacente.

3.2. CURBE CRITICE {I REGIUNI NECRITICE ÎN PLAN

Se considerã cazul particular al unui robot A de forma unei bare, care se poate translata si roti într-un spatiu de lucru bidimensional W=R2. Robotul este modelat printr-un segment de dreaptã de lungime d, ale cãrui capete sunt P si Q.

Spatiul configuratiilor SC al lui A este R2S1, astfel încât fiecare configuratie se parametrizeazã prin (x,y,), unde x si y pot fi coordonatele lui P în sistemul fix Sw, dacã se alege P=OA, ca origine a sistemului SA atasat robotului, iar unghiul [0,2) este format de axele Ox corespunzãtoare ale celor douã sisteme (în particular, se alege axa OAx a sistemului atasat SA ca având directia segmentului PQ). Perechea (x,y) a coordonatelor originii sistemului atasat este numitã pozitia lui A, iar unghiul este numit orientarea lui A.

Ideea de bazã a planificãrii traiectoriilor, în acest caz, constã în descompunerea multimii de pozitii ale lui A în regiuni bidimensionale, transformarea acestor regiuni în celule tridimensionale si reprezentarea relatiei de adiacentã între aceste celule într-un graf de conexiune. Celulele bidimensionale sunt astfel alese, încât sã mentinã o structurã omogenã în cilindrii de deasupra lor. Celulele continute în astfel de cilindrii expliciteazã aceastã structurã. Frontierele acestor regiuni necritice se numesc curbe critice .

Este astfel evident cã regiunea C-obstacolelor SCB este o regiune tridimensionalã, mãrginitã de fete care sunt portiuni de C-suprafete riglate de tip A sau B. O suprafatã de tip A corespunde situatiei când segmentul PQ contine vârful unui obstacol. O suprafatã de tip B corespunde situatiei în care, fie P, fie Q, este continut în muchia unui obstacol.

Se defineste notiunea de curbã criticã înglobând:

proiectiile pe planul xOy ale suprafetelor care reprezintã frontiere în regiunea C-obstacolelor SCB;

curbele continute în suprafetele frontierã din SCB pe portiunile unde planul tangent la aceste suprafete este perpendicular pe planul xOy.

Fig. 3.4. Planificarea traiectoriilor prin descompunere

trapezoidalã

Aceste curbe sunt multimea de puncte pentru care structura regiunii C-obstacolelor aflate deasupra planului xOy înregistreazã schimbãri calitative. Într-adevãr, când este traversatã o astfel de curbã, fie se modificã multimea fetelor lui SCB care sunt intersectate de o linie perpendicularã pe planul xOy în pozitia curentã, fie se modificã numãrul punctelor de intersectie.

Se poate ilustra notiunea de curbã criticã printr-un exemplu.

Se presupune initial cã nu existã obstacole în spatiul de lucru W în care robotul A se aflã în pozitia (x,y).

Orice orientare este liberã, adicã (x,y,) SCliber.

Se introduce în spatiul de lucru un obstacol reprezentat de un semiplan închis, mãrginit de o linie dreaptã E (muchia obstacolului). O configuratie (x,y,) a lui A poate fi în spatiul liber numai dacã (x,y) nu este continut în obstacol.

Astfel muchia E este o curbã criticã:în semiplanul interior lui E, nici o orientare nu este liberã, în timp ce în semiplanul exterior lui E, unele orientãri sunt libere.

Dacã distanta de la P la E este mai mare decât d (lungimea lui A), toate orientãrile lui A sunt libere.

Dacã P se apropie de E si traverseazã o linie K, paralelã cu E la distanta d, atunci unele din orientãrile lui A nu mai sunt libere. K este deci, o altã curbã criticã. Pentru orice (x,y) situat în partea exterioarã a lui K, linia perpendicularã pe planul xOy în punctul (x,y) nu traverseazã nici un C-obstacol, în timp ce, în cealaltã parte, traverseazã unul.

Se observã cã, în acest exemplu, existã douã fete de tip B corespunzãtoare contactelor în care P si Q sunt continute în muchia E.

Curbele critice se clasificã în sase tipuri, dupã cum urmeazã(figura 3.5):

muchiile E ale obstacolelor sunt curbe critice de tip 0;

segmentul de dreaptã situat la distanta d de muchia E, având aceeasi lungime cu E, este o curbã criticã de tip 1(figura 3.5.a);

arcul de cerc de razã d,cu centrul în vârful X al unui obstacol si mãrginit de cele douã semidrepte care contin muchiile ce se îmbinã în X, este o curbã criticã de tip 2 (figura 3.5.b si 3.5.c);

dacã E este muchia unui obstacol si X un vârf convex la unul din capetele lui E,segmentul de dreaptã trasat de capãtul P când A gliseazã de-a lungul lui E pânã când Q rãmâne încã în E, este o curbã criticã de tip 3 (figura 3.5d);

fie X1 si X2 douã vãrfuri ale unui obstacol convex, astfel încât linia ce trece prin cele douã vârfuri este tangentã la obstacol în vârfurile respective; segmentul de dreaptã trasat de capãtul P când A translateazã atingând simultan X1 si X2 este o curbã criticã de tip 4 (figura 3.5.e);

fie E muchia unui obstacol si X vârful unui obstacol convex B, care nu este punct de capãt pentru E, situat la distanta h de E; dacã h d, curba trasatã de P când robotul se deplaseazã astfel încât atinge E si X, fiind tangent la B în X, este o curbã criticã de tip 5 (figura 3.5.f).

Se observã si din figura 3.5. cã, curbele critice reprezintã multimea pozitiilor lui A pentru care structura regiunii C-obstacolelor de-a lungul directiei înregistreazã o schimbare calitativã.

Referitor la curbele critice de tipul 5, acestea reprezintã o submultime în concoida lui Nicomedes.

Fig. 3.5. Clasificarea curbelor critice

Astfel, alegând un sistem de referintã cu originea în vârful X, cu axa Ox paralelã cu E si cu axa Oy perpendicularã pe E (figura 3.6), rezultã pentru o pozitie oarecare a punctului P :

d2=(y+h)2+(x+k)2

si:

y/x=h/k,

de unde ecuatia curbei:

x2=y2[d2/(y+h)2 1t

pentru y0.

Fig. 3.6. Curbã criticã de tip 5

Orice zonã deschisã, mãrginitã de curbe critice este o regiune necriticã. Pentru cazul particular al unui spatiu de lucru poligonal existã 21 de curbe critice posibile, în afarã de muchiile obstacolelor, care sunt toate segmente de dreaptã (figura 3.7). Astfel:

L1,…,L6 sunt curbe de tipul 1, generate de muchiile E1,…,E6 ;

L7,…,L10 sunt curbe de tipul 2, generate de vârfurile X1,X2,…,X4 ;

L11,…,L16 sunt curbe de tipul 3, generate de E2 si X1, E1 si X1, E3 si X2, E2 si X2, E6 si X4, E5 si X4 ;

L17 si L18 sunt curbe de tipul 4, generate de vârfurile X2 si X4 ;

L19,…,L21 sunt curbe de tipul 5; L19 este generatã de E4 si X4, L20 de E6 si X2, iar L21 de E2 si X4 .

Pot exista curbe critice generate de configuratii ale lui A, când acesta se intersecteazã cu interiorul lui B. Astfel de curbe se numesc redondante. În figura 3.7, un exemplu de curbã redondantã este o submultime a curbei critice L16.

Figura 3.8 indicã douã curbe redondante într-un alt spatiu de lucru.

Acestea reprezintã de fapt portiuni de curbe critice redondante într-o submultime a lui W ce contine douã obstacole B1 si B2 care formeazã un colt.

Douã curbe critice redondante de tipul 1, L1 si L2, sunt reprezentate prin linii întrerupte. L1 este locul lui P când Q este în E2, PQ rãmânând mereu perpendicularã pe E1, respectiv pe E2. În ambele cazuri, PQ se intersecteazã cu B2, ceea ce implicã faptul cã L1 si L2 sunt proiectiile curbelor continute în C-obstacolele SCB.

Fig. 3.7. Exemplu de determinare a curbelor critice

pentru un spatiu de lucru poligonal

Fig. 3.8. Exemplu de curbe critice redundante

Multimea curbelor critice este finitã. Fiecare punct de sfârsit al unei curbe critice este plasat fie în altã curbã criticã, fie la infinit. Ele sunt curbe algebrice ce pot fi: de gradul 1(tipurile 0, 1, 3 si 4), de gradul 2 (tipul 2) sau de gradul 4 (tipul 5). Oricare douã curbe critice pot avea doar un numãr finit de intersectii, cu exceptia cazurillor în care coincid.

În figura 3.9 se prezintã cazurile în care mai multe curbe critice coincid de-a lungul unor portiuni de lungime nenulã.

Cu presupunerea cã B este o multime mãrginitã,fiecare coincidentã poate fi eliminatã printr-o modificare infinitezimalã a obstacolului B care nu-i schimbã topologia.De aceea, se poate presupune cã nu existã astfel de coincidente.

O portiune (sectiune) de curbã criticã este o submultime maximalã, închisã si conexã a curbei, care este intersectatã de oricare altã curbã criticã doar la cele douã capete.

Fig.3.9. Mai multe curbe critice coincid

O pozitie (x,y) a lui A este admisibilã dacã existã cel putin o orientare , astfel încât (x,y,) SCliber.

O regiune necriticã este o submultime maximalã de pozitii admisibile ale lui A care nu intersecteazã nici o curbã criticã.

Astfel, multimea de curbe critice determinã o colectie de regiuni necritice. Fiecare regiune necriticã este o submultime deschisã a planului xOy. De exemplu, în figura 3.7, R indicã o regiune necriticã, mãrginitã de curbele critice L4, L7, L2, L5 si L10.

Frontiera oricãrei regiuni necritice este o reuniune finitã de portiuni de curbe critice.

O pozitie admisibilã (x,y) a lui A este necriticã dacã si numai dacã se aflã într-o regiune necriticã; în caz contrar, este criticã.

3.3 DESCOMPUNEREA SPA[IULUI SCliber

Se considerã (x,y) o pozitie necriticã si se noteazã F(x,y) multimea tuturor orientãrilor libere posibile ale lui A în aceastã pozitie:

F(x,y) =(x,y,) SCliber.

Dacã în (x,y) tote orientãrile lui A sunt libere, atunci:

F(x,y) = [0,2).

În caz contrar, F(x,y) constã dintr-un numãr finit de intervale deschise maximale conexe. Fiecare punct de capãt c al intervalului este astfel încât A(x,y,) atinge frontiera lui B, el este denumit orientare limitã a lui A în pozitia (x,y).

Se presupune cã F(x,y) [0,2) si cã pentru fiecare interval maximal conex (1,2) F(x,y) existã un vârf sau o muchie deschisã s1, respetiv s2 a obstacolului B, care este atinsã de A(x,y,1), respectiv de A(x,y,2).

Astfel, vârfurile si muchiile obstacolului,pe care robotul le atinge atunci când se roteste în jurul punctului P(x,y), fãrã a atinge interiorul lui B, se numesc stopuri. Stopurile sunt întotdeauna unio definite, deoarece, în caz contrar, pozitia (x,y) ar fi criticã.

În figura 3.10 se pot evidentia douã categorii de stopuri:

cel care, pornind dintr-o configuratie liberã, poate fi atins printr-o rotatie în sens trigonometric si care se numeste stop trigonometric (X2 sI E1 sunt stopuri trigonometrice);

cel care, pornind dintr-o configuratie liberã, poate fi atins printr- o rotatie în sens orar si care se numeste stop orar (X1 si E2 sunt stopuri orare).

Fig. 3.10. Stopuri trigonometrice si stopuri orare

Orientãrile limitã corespunzãtoare stopurilor X1, X2, E2 si E1 sunt respectiv 1, 2, 3, 4. Se considerã c o orientare limitã în pozitia necriticã (x, y).

Se noteazã cu s(x,y,c) stopul unic atins de A(x,y,c) si cu S(x,y) multimea tuturor perechilor [s(x,y,c), s(x,y,c)t corespunzãtoare de stopuri orare, respectiv trigonometrice, definite în intervalul maximal conex (c,c) F(x,y). În exemplul din figura 3.10, acestor consideratii le corespund:

s(x,y,1)=X1

s(x,y,2)=X2

s(x,y,3)=E2

s(x,y,4)=E1

si deci:

S(x,y)=[X1,X2,[E2,E1 .

Dacã F(x,y)=[0,2), atunci se scrie S(x,y)=[,t, unde indicã un stop inexistent.

Fiind datã o pereche de stopuri [s1,s2t[,t în S(x,y), se noteazã cu 1(x,y,s1) orientarea unicã, astfel încât A(x,y,1) atinge stopul orar s1.

Similar, se noteazã cu 2(x,y,s2) orientarea unicã, astfel încât A(x,y,2) atinge stopul trigonometric s2. De exemplu, în figura 3.10:

1(x,y,X1)=1

2(x,y,X2)=2

3(x,y,E2)=3

4(x,y,E1)=4

Prin conventie

1(x,y,)= 0 si 2(x,y,)= 2

Astfel, dacã

s1,s2S(x,y),

atunci

(1(x,y,s1),2(x,y,s2))

este un interval maximal conex în F(x,y).

Fie R o regiune necriticã. Din constructie, rezultã

(x,y), (x,y)R S(x,y)=S(x’,y)

adicã S(R)=S(x,y) este o pozitie oarecare în R, multimea perechilor de stopuri fiind valabilã pentru orice pozitie din regiunea necriticã R.

Se considerã R o regiune necriticã si s1,s2 o pereche din S(R). Regiunea tridimensionalã

Cel(R,s1,s2)=(x,y,)(x,y)R si (1,2)

este denumitã celulã. Ea reprezintã o submultime deschisã, conexã a lui SCliber.

Multimea tuturor celulelor definite ca mai sus formeazã o descompunere a lui SCliber. Celulele apartin unor cilindri, care se proiecteazã în planul xOy pe regiunile necritice.

Este posibil ca douã regiuni necritice R si R, ale cãror frontiere au în comun o portiune L a unei curbe critice, sã fie astfel încât S(R)=S(R). Aceastã situatie corespunde cazului când L este redundant.

3.4. GRAFUL DE CONEXIUNE

S-a vãzut cum se descompune SCliber în celule. Se defineste, în continuare, graful de conexiune asociat acestei descompuneri.

Se considerã celulele :

K=Cel(R,s1,s2) si K=Cel(R,s1,s2) .

Ele sunt adiacente dacã si numai dacã:

frontierele FR si FR ale regiunilor R si R se intersecteazã dupã o portiune de curbã criticã L;

(x,y) int(L) (1,2)(1,2) .

Descrierea relatiei de adiacentã între celulele care se proiecteazã pe R si cele care se proiecteazã pe R se numeste regula de traversare a lui L. Dacã cele douã celule K si K sunt adiacente, atunci orice configuratie din K poate fi conectatã cu orice configuratie din K printr-o traiectorie liberã, a cãrei proiectie în planul xOy traverseazã L având orientarea constantã în orice vecinãtate a punctului de intersectie.

Se considerã, pentru exemplificare, douã cazuri particulare:

a) Se construieste o portiune L de curbã criticã de tip 1, adicã un segment de dreaptã paralel cu muchia E a unui obstacol, la distanta d. R este regiunea dintre L si E, iar R este regiunea situatã de cealaltã parte a lui L. Regula de traversare este:

Cele douã celule Cel(R,s1,s2) si Cel(R,s1,s2) sunt adiacente, dacã si numai dacã:

s1,s2=s1,s2

sau

s1,s2=s1,E

sau

s1,s2=E,s2

sau

s1,s2=,

si

s1,s2=E,E.

b) Se construieste o portiune de curbã criticã de tip 2, generatã de un vârf concav X, la extremitatea a douã muchii E1 si E2, astfel cã unghiul exterior între cele douã muchii este mai mare ca /2(figura 3.11).

Curba criticã generatã de X este arcul de cerc care intersecteazã curbele de tipul 1, generate de E1 si E2. Cele douã curbe de tipul 1 împart curba criticã de tipul 2 în trei portiuni notate cu L1,L2,si L3. Se considerã cazul când L=L1.

În aceastã situatie, se noteazã cu R regiunea aflatã pe partea lui L, care este mai apropiatã de X decât distanta d, iar cu R, regiunea aflatã de cealaltã parte a lui L.

Regula de traversare este:

Cele douã celule Cel(R,s1,s2) si Cel(R,s1,s2) sunt adiacente dacã si numai dacã :

s1,s2=s1,s2

sau

s1 =E1 s1 =E2 si s2 =s2.

În acelasi mod se analizeazã orice alt caz. O astfel de analizã aratã cã, atunci când int(L) este traversat, dacã L nu este o portiune de curbã criticã redondantã si nu este continutã în douã curbe critice ce coincid, multimea S(x,y) se modificã în unul din urmãtoarele douã moduri:

o pereche de stopuri din S(x,y) dispare sau o altã nouã pereche apare;

un element dintr-o pereche se modificã.

Fig. 3.11. Exemplu de regulã de traversare

Astfel, regula de traversare, pentru diferite tipuri de curbe critice, se poate generaliza într-o regulã unicã ce este valabilã pentru orice portiune L de curbã criticã, dacã nu coincid douã curbe critice de-a lungul lui L :

Se leagã celula Cel(R,s1,s2), cu celula Cel(R,s1,s2), pentru fiecare s1,s2 S(R)S(R) si se leagã oricare celulã Cel(R,s1,s2), s1,s2S(R)-S(R), dacã existã, cu oricare celulã Cel(R,s1,s2),s1,s2S(R)-S(R), dacã, de asemenea, existã.

Pe baza acestei reguli se traseazã graful de conexiune G:

Graful de conexiune G este un graf nedirectionat, ale cãrui noduri sunt toate celulele Cel(R,s1,s2), unde R este o regiune necriticã si s1,s2S(R). O legãturã a grafului conecteazã orice douã noduri dacã si numai dacã, celulele corespunzãtoare sunt adiacente.

Existând douã configuratii

Cinitial =(Xinitial,Yinitial,initial)

si

Cfinal =(Xfinal,Yfinal,final)

în spatiul SCliber, astfel încât, nici (Xinitial,Yinitial) si nici (Xfinal,Yfinal) sã nu se afle pe o curbã criticã, atunci existã o traiectorie liberã între ele, dacã si numai dacã cele douã celule ce contin Cinitial si Cfinal sunt conectate printr-o cale vizibilã în graful de conexiune G.

Se considerã, pentru exemplificare, un spatiu care va trebui parcurs de robotul PQ (figura 3.12.).

Fig. 3.12. Determinarea regiunilor necritice

Portiunile curbelor critice neredondante determinã 13 regiuni necritice notate cu R1,R13, dupã cum urmeazã

S(R1) =E1,E3,E3,E1

S(R2) =E1,E3,E3,X1

S(R3) =E1,E3,E3,E4

S(R4) =E1,E3,E3,E4,E4,X1

S(R5) =E1,E3,E4,X1

S(R6) =E1,E3,E4,E2

S(R7) =E4,E3

S(R8) =E4,E2,X1,E3

S(R9) =E4,E2,E1,E3,E3,E4

S(R10) =E4,E2,X1,E3,E3,E4

S(R11) =E4,E2,E3,E4

S(R12) =E4,E2,X1,E4

S(R13) =E4,E2,E2,E4

Fig. 3.13. Graful de conexiune

Graful de conexiune care rezultã este prezentat în figura ce urmeazã. Aceasta contine douã componente distincte, de unde rezultã cã si SCliber constã, de asemenea, din douã submultimi distincte. Prima componentã a grafului G (în partea superioarã a figurii) corespunde orientãrii lui A în care P este suprapus peste vârful X2. Existenta a douã componente în graf aratã cã robotul nu poate face o rotatie completã în interiorul vârfului el se poate însã misca de la un capãt al coltului la celãlalt, cu miscãri înainte-înapoi sauînapoi-înainte .

3.5. PROIECTAREA ALGORITMULUI

Fiind date o regiune a obstacolelor B, lungimea d o lui A si configuratiile initialã si finalã ale lui A în SCliber, astfel încât nici-o configuratie nu se proiecteazã în planul xOy printr-o curbã criticã, se schiteazã un algoritm care genereazã o traiectorie liberã de la Cinitial la Cfinal, ori de câte ori existã una si raporteazã gresalã , în caz contrar.

În acest algoritm, nu se construieste o reprezentare explicitã a regiunilor necritice, sub forma unor liste de portiuni de curbe critice ce formeazã frontiera lor, ci se va da o orientare arbitrarã fiecãrei portiuni L, notând cele douã portiuni separate de L prin: dreapta(L) si stânga (L).

Ca urmare, algoritmul cerceteazã un graf de conexiune, ale cãrui noduri sunt toate celulele Cel(R,s1,s2), unde R este identificat într-o parte sau în alta a portiunii de curbã L, adicã dreapta (L) sau stânga (L). Astfel, fiecare celulã efectivã apare în graf ori de câte ori se întâlnesc portiuni de curbe care formeazã conturul regiunii necritice pe care se proiecteazã celula.

Douã noduri Cel(R,s1,s2) si Cel(R,s1,s2) sunt conectate printr-o legãturã, dupã cum urmeazã:

Fie R= stânga(L) si R= dreapta (L), cu L si L având un punct de capãt cu Z comun. Se poate presupune cã, atât L cât si L sunt orientate de la Z, spre celãlalt capãt al lor. Dacã nu existã altã portiune de curbã criticã L, care are punctul Z ca unul din capete si care se aflã în sectorul dintre L si L considerate în sens trigonometric (reprezentat hasurat), atunci R si R sunt aceeasi regiune necriticã (fig. 3.14 ).

Fig.3.14. Conectarea prin legãturã în

graful de conexiune

Celulele : Cel(R,s1,s2) si Cel(R,s1,s2) sunt conectate printr-o legãturã a grafului, dacã si numai dacã s1,s2 =s1,s2, adicã cele douã celule sunt una si aceeasi, sau dacã sunt adiacente conform regulii de traversare.

Algoritmul de planificare a traiectoriei cuprinde urmãtoarele etape:

Calculeazã portiunile de curbe critice.

Se calculeazã multimea tuturor curbelor critice si intersectiile lor. Pentru fiecare curbã, se sorteazã punctele de intersectie în conformitate cu ordinea lor pe curbã (aceasta se face prin definirea unei parametrizãri potrivite pentru fiecare tip de curbã). Se descompune fiecare curbã în portiuni, fiecare aflându-se între douã puncte de intersectie consecutive.

Calculeazã relatia de adiacentã între celule.

Pentru fiecare portiune de curbã criticã L care nu face parte dintr-o muchie de obstacol se calculeazã S(dreapta(L)) si S(stânga(L)). Succesiunea de operatii pânã la aceastã fazã poate fi: se alege un punct X pe L si se exprimã o dreaptã perpendicularã în X pe L; apoi, este simplu sã se selecteze un punct X si un altul X în dreapta si în stânga lui L, pe dreapta perpendicularã; ultimul pas este calculul lui S în X si X.

Se poate construi acum o relatie de adiacentã între celulele de deasupra lui dreapta (L) si cele de deasupra lui stânga (L). Dacã S(dreapta(L))=S(stânga(L)), atunci L este redondant si poate fi înlãturat din considerentele urmãtoare:pentru orice portiune de curbã criticã L de tip 0, adicã fãcând parte dintr-o muchie de obstacol, nu existã nici o relatie de adiacentã de construit.

Formeazã grupul de sectiuni de celule adiacente .

În fiecare punct Z de intersectie a curbelor critice se formeazã o listã circularã a tuturor portiunilor de curbe incidente în Z si se sorteazã aceastã listã, spre exemplu, în sens trigonometric; aceastã listã sortatã se numeste grup.

Se calculeazã si se sorteazã apoi directiile orientate spre exterior, tangente la portiunile de curbe în punctul Z. Când douã astfel de directii coincid se calculeazã si se sorteazã directiile derivate de ordin superior.

Identificã celula initialã si celula finalã.

Se construieste segmentul de dreaptã între (Xinitial, Yinitial) si (Xfinal, Yfinal) si se calculeazã intersectiile lui cu toate portiunile de curbe critice. Dacã nu existã intersectii, atunci cele douã puncte se aflã în aceeasi regiune criticã.

Dacã existã intersectii,atunci se cautã portiunile de curbã Linitial si Lfinal, ale cãror intersectii cu segmentele de dreaptã sunt cele mai apropiate de punctele (Xinitial, Yinitial) si (Xfinal, Yfinal). Se identificã partea lui Linitial ce contine (Xinitial, Yinitial) si partea lui Lfinal ce contine (Xfinal, Yfinal) si se gãsesc perechile s1initial, s2initial si s1final, s2final, astfel încât:

initial(1(Xinitial, Yinitial, s1initial), 2(Xinitial, Yinitial, s2initial))

final(1(Xfinal, Yfinal, s1final), 2(Xfinal, Yfinal, s2final)).

Cerceteazã graful de conexiune.

Se initializeazã graful cu nodul Kinitial apoi se trece interativ la celelalte noduri. Se opreste dupã generarea nodului Kfinal, sau când nu mai sunt alte noduri. În primul caz se prezintã secventa de celule în traiectoria care conecteazã Kinitial de Kfinal în graf, iar în al doilea caz se rãspunde eroare .

Iesirea algoritmului este o secventã de celule (K1,Kp), în care fiecare Kj este dreapta (Lj) sau stânga (Lj). Aceastã secventã determinã un canal reprezentat de reuniunea tuturor celulelor.Fiecare traiectorie între Cinitial si Cfinal, aflatã în interiorul acestui canal, este o traiectorie liberã. Se poate construi astfel o traiectorie semiliberã reprezentatã de secventa (L1,Lp).

Deoarece regiunea obstacolelor este o multime mãrginitã, este suficientã o deformatie arbitrar de micã, pentru a transforma aceastã traiectorie într-o traiectorie liberã.

Algoritmul prezentat presupune cã portiunile de curbe dintr-o submultime convexã a spatiului liber formeazã un graf conex. Aceastã afirmatie nu este adevãratã dacã unele regiuni necritice,notate cu R în figura, formeazã o gaurã într-o regiune necriticã R înconjurãtoare.

Atunci, portiunile de curbe care delinmiteazã portiunile ce formeazã R nu sunt conectate cu portiunile de curbe aflate dupã frontiera exterioarã a lui R. Aceasta constituie o problemã numai dacã fie (Xinitial, Yinitial), fie (Xfinal, Yfinal), dar nu amândouã, sunt continute în R.

Problema poate fi rezolvatã prin unirea pozitiilor initialã si finalã printr-un segment de dreaptã ce creeazã o portiune de curbã criticã fictivã între oricare douã intersectii consecutiveale acestui segment cu curbele critice.

Pentru exemplul din figura 3.15. se observã cã spatiul de lucru contine douã obstacole B1 si B2. Curbele critice determinate de cele douã obstacole delimiteazã mai multe regiuni necritice, între care R constituie o gaurã în R.

Deci, portiunile de curbe critice formeazã douã subgrafuri conexe. Problema se rezolvã generãnd un segment de dreaptã între configuratia initialã si cea finalã a lui A si unind fiecare douã intersectii consecutive ale acestui segment cu curbele critice, printr-o portiune de curbã criticã fictivã.

Fig. 3.15. O regiune necriticã este obtinutã într-o altã regiune necriticã

3.6. CAZUL GENERAL

Anterior am ilustrat descompunerea celularã exactã abordatã prin douã metode, referitor la douã cazuri particulare, pentru problema fundamentalã a planificãrii miscãrii robotilor.

În continuare vom descrie o metodã pentru rezolvarea acestei probleme în întregime generalã.

O restrictie impusã de aceastã metodã este ca, atât robotul A cât si regiunea obstacolelor B sã fie descrisã ca si un grup semi-algebric.

Asadar, ca si indicatie în paragrafele urmãtoare se utilizeazã o parametrizare adecvatã ale unei configuratii spatiale m-dimensionale C, a regiunii C-obstacolelor CB, ca si când spatiul liber Cliber ar putea fi descris ca un grup semi-algebric.

Aceastã metodã descompune Cliber într-o colectie finitã de celule al grupului semi-algebric.

Ca si în paragraful anterior, celulele se obtin calculând pentru început proiectiile acestora în spatiul de dimensiune inferioarã si apoi ridicându-le în C.

Dimensiunea lui C este în general mai mare decât 3, mecanismul de proiectieridicare fiind recursiv.

Datoritã acestui calcul recursiv, acestei metode i se mai spune “metoda proiectiei”, ea datorându-se lui Shwartz si Shair.

3.6.1. DESCOMPUNEREA CILINDRIC-ALGEBRIC~

DEFINI[IE :

O descompunere algebricã a lui Rn este o colectie finitã Kn a submultimilor semi-algebrice disjuncte a lui Rn, fiecare omeomorfic la j pentru j0,n, ale cãror reuniune este Rn.

Fiecare element k a lui Kn este o celulã apelatã. Dacã j =0, atunci celula este un punct algebric singular.

Faptul cã fiecare celulã într-o descompunere algebricã este omeomorficã la câtiva Rj, implicã conectare acestora.

O mostrã a descompunerii algebrice Kn a lui Rn este functia : :KnRn, deasemenea pentru kKn , (k)k si (k) este un punct algebric. (k) este considerat un punct mostrã a lui k.

Proiectia punctului xn=(x1,x2,…,xn)Rn este punctul xn-1=(x1,x2,…xn-1)Rn-1, obtinând nth componente ale punctului. Proiectia submultimilor lui Rn este multimea proiectiilor acestor componente.

DEFINI[IE :

O descompunere cilindric-algebricã Kn a lui Rn (n>0) este o descompunere algebricã definitã recursiv dupã cum urmeazã:

pentru n>1, existã o descompunere cilindric-algebricã Kn-1 a lui Rn-1 astfel încât pentru fiecare celulã k din Kn existã o celulã k din Kn-1, aceasta fiind proiectia lui k pe Rn-1. Kn-1 este cunoscut sub denumirea descompunere fundamentalã a lui Kn si k este baza pentru k .

pentru n=1, K1 este o partitie a lui R într-un numãr finit de multimi a numerelor algebrice si intervale deschise finite si infinite, mãrginite cu ajutorul acestor numere.

O mostrã cilindricã a descompunerii cilindric-algebricã a lui Rn, Kn, este o functie :Kn Rn astfel încât :

dacã k1 si k2 sunt celule a lui Kn având câteva celule de bazã atunci (k1) si (k2) au câteva proiectii în Rn-1.

dacã n>1, induce recursiv un model cilindric al descompunerii de bazã Kn-1 a lui Kn.

Fie sign(x) = -1, 0 sau +1 pentru x< 0, x=0 sau x>0. Fie F multimea functiilor cu n variabile reale.

O descompunere Kn a lui Rn este numitã F-invariantã dacã si numai dacã, pentru fiecare celulã k din Kn si pentru fiecare functie f din F, sign(f(x)) este constant pentru x=(x1,…,xn), variind apoi k.

TEOREMÃ (teorema lui COLLINS):

Oferind oricãrei multimi P al polinoamelor în Q[x1,…,xnt existã un algoritm efectiv care construieste o descompunere cilindric-algebricã Kn a lui Rn, P-invariant, împreunã cu modelul cilindric a lui Kn.

Algoritmul alege perioada polinomialã din valorile polinomului P si din gradul lor maxim, cu exponent dublu dependent de n.

Numãrul celulelor generate cu acest algoritm sunt în ordinea mãrimii (importantei).

Dovada constructivã a acestei teoreme este algoritmul de descompunere COLLINS care construieste descompunerea Kn , P-invariantã.

Acest algoritm este schitat într-un paragraf ulterior.

Fiecare celulã produsã cu acest algoritm este descrisã printr-o expresie polinomialã cu cuantificator liber. Algoritmul produce o descompunere de bazã Kn-1 a lui Kn, descompunerea de bazã Kn-2 a lui Kn-1 s.a.m.d. si un model cilindric a lui Kn.

Kn este denumit descompunerea COLLINS a lui Rn, P-invariantã.

3.6.2. APLICA[IE LA TEORIA REALITÃ[II

Douã aplicatii simple ale algoritmului de descompunere COLLINS sunt decizia adevãratã si eliminarea cuantificatorului pentru propozitia TARSKI.

DECIZIA ADEVÃRATÃ : Problema este de a determina valoarea adevãratã a propozitiei TARSKI, aceasta continând variabile legate (care nu sunt libere).

Considerãm, pentru exemplificare, urmãtoarea propozitie: x, y :(x,y). Fie P multimea polinoamelor care intervin în .

Utilizând algoritmul COLLINS, vom construi o descompunere cilindric-algebricã K2 a lui R2, P-invariantã, o descompunere de bazã K1 a lui K2 si un model cilindric

: K2 R2.

Propozitia de mai sus este adevãratã dacã si numai dacã, pentru k K1, o celulã k K2 continut în cilindrul k astfel încât (xk,yk) conduce la (k)=(xk,yk).

ELIMINAREA CUANTIFICATORULUI :

Problema este de a transforma propozitia TARSKI cu cuantificator într-o expresie polinimialã cu cuantificator liber.

Pentru început, considerãm propozitia : y : (x,y).

Variabila x este liberã, deci propozitia defineste o submultime semi-algebricã a lui R.

Dorim sã definim aceastã submultime printr-o expresie polinomialã cu cuantificator liber din R.

Fie k notatia pentru cuantificatorul liber al expresiei polinomiale definind celula k, pentru orice celulã k din K2 si K1.

Fie (x) disjunctia tuturor k, unde k este celula de bazã a cel putin unui kK2 astfel încât (xk,yk) conduce la (k) =(xk,yk).

Douã propozitii TARSKI : y : (x,y) si (x) definesc câteva submultimi semi-algebrice a lui R.

Principiile ilustrate în cele douã exemple de mai sus pot înrãdãcina procedura generalã.

În paragraful urmãtor vom utiliza “eliminarea cuantificatorului” la constructia descompunerii cilindric-algebrice a lui C-liber si “decizia adevãratã“ la testarea adiacentei între celulele acestei descompuneri.

3.6.3. APROXIMAREA GENERALÃ

În continuare vom arãta cum se utilizeazã “descompunerea COLLINS” pentru planificarea miscãrii.

Robotul A si regiunea obstacolelor B sunt reprezentate prin submultimi semi-algebrice a lui Rn si formulele de definire ale acestora sunt A(a) si B(b), unde a si b sunt puncte în RN.

Dupã cum s-a arãtat într-un paragraf anterior, regiunea C-obstacolelor CB poate fi reprezentatã printr-o multime semi-algebricã din Rm, unde m este dimensiunea spatiului configuratiilor unui robot A.

Avem:

CB={ q Rm CB(q) s

cu

CB(q) a RN , b RN : A(a) B(b) (q, a, b)

unde q-reprezintã configuratia unui punct din Rm utilizatã la parametrizarea spatiului configuratiilor robotului A astfel încât ‘(q, a, b), cu expresia a(q) =b, este algebricã.

Considerãm pentru moment cã C este reprezentat printr-un singur grafic care mapeazã orice configuratie a lui C din Rm, prin urmare Cliber este reprezentat în întregime prin:

Cliber ={ q Rm CB(q) s.

Putem construi “descompunerea COLLINS” Km+2N cu polinomul apãrut în expresia :

a RN , b RN : A(a) B(b) ‘(q,a,b)

si eliminând cuantificatorul variabilelor N-dimensionale a si b .

Acesta produce o descompunere cilindric-algebricã Km a lui Rm, descompunerea succesivã de bazã a lui Km si un model cilindric a lui Km. O celulã k Km este liberã dacã este continutã în Cliber. Aceasta este proiectia cilindrului în Km+2N pentru cã nu contine celula k’ ale cãrui puncte satisfac expresia de mai sus. Notãm cu Kmliber multimea tuturor celulelor libere ale lui Km.

Prin urmare, presupunem cã “descompunerea COLLINS Km” este “bine-bazat@”, intentionând sã închidã fiecare celulã k în Kl, pentru orice l[1, mt, fiind o uniune a celulelor lui Kl.

În general, “descompunerea COLLINS” este bine-bazatã, dar aceasta nu pota fi adevãratã pentru orientãrile defavorabil definite (fixate) ale axelor din Rm. În aceste cazuri, o posibilitate pentru restaurare constã în rotatia apropiatã a coordonatelor axelor. Fie qinitial si qfinal configuratiile libere initialã respectiv finalã, reprezentate prin puncte ale lui Rm.

Prin evaluarea expresiei polinomiale se defineste fiecare celulã din Cliber cu fiecare din configuratiile acestora, utând identifica celula lui Kmliber continând qinitial, denumitã celulã initialã si celula lui Kmliber continând qfinal, denumitã celulã tintã. Presupunem în cele ce urmeazã cã celulele initiale si tintã sunt celule m-dimensionale.

Cãutarea unei cãi libere între douã configuratii poate fi limitatã la celule m si (m-1) dimensionale ale lui Kmliber.Într-adevãr, Cliber este o multime deschisã de dimensiune m. Astfel submultimile de dimensiune (m-2) sau mai putin, deconecteazã o componentã maximalã conectatã a lui Cliber.

DEFINI[IE :

Considerând cã descompunerea Km este bine-bazatã, douã celule k si k’din Kmliber sunt adiacente dacã si numai dacã : una dintre celule, presupunem k, este m-dimensionalã si cealaltã, k este (m-1) dimensionalã, k’ k (frontiera lui k).

Graful de conexiune G este un graf indirect ale cãrui noduri sunt toate celule de dimensiune m si (m-1) ale lui Kmliber.

Douã noduri sunt conectate printr-o linie dacã si numai dacã celulele corespunzãtoare sunt adiacente.

Conform definitiei de mai sus, douã celule m-dimensionale libere k1 si k2 nu pot fi adiacente. Dacã cele douã celule sunt deopotrivã adiacente la câteva celule libere (m-1) dimensionale , cea de a doua celulã amintitã se aflã la intersectia frontierelor k1 si k2 ,astfel încât oricare alte douã configuratii din k1 si k2 pot fi conectate cu o cale liberã.

Prin urmare, G contine o cale între celula initialã si celula finalã dacã si numai dacã existã o cale liberã între configuratia initialã si configuratia tintã.

Conditia de adiacentã între o celulã m dimensionalã sI o celulã (m-1) dimensionalã pote fi exprimatã cu ajutorul propozitiei TARSKI:

q’, , q 🙁 > 0) k’( q’ ) k( q ) (q-q’ < ).

Se citeste : pentru orice configuratie q’ din k’ si pentru orice > 0, existã o configuratie q din k astfel încât distanta de la q la q’ sã fie mai micã decât .

Astfel, testând adiacenta între douã celule si construind consecutiv graful de conexiune G, sunt clare problemele ce pot fi solutionate prin aplicarea algoritmului de descompunere COLLINS pentru polinoamele din propozitia TARSKI anterioarã ,pentru orice pereche (k, k’) al celulelor din Kmliber de dimensiune m si (m-1) precum si verificarea valorii adevãrate a propozitiei. O constructie a lui G constã în cãutarea unei cãi de conectare între celula initialã si celula tintã.

Gãsirea cãii, dacã a reusit, este o secventã a celulelor (k1,k2,…,k2p+1), p 0 astfel încât k2j+1 cu j [0, pt este m-dimensional si k2j, cu j [1, pt este (m-1) dimensional.

Uniunea formeazã o regiune a conexiunilor deschise în Cliber, denumitã canal. Pasul final este constructia cãii libere de la qinitial la qtintã. Putem considera cã fiecare configuratie q este reprezentatã printr-un punct (x1,x2,…,xm) în Rm. În plus, celulele din secventa (k1,…k2p+1) sunt alternativ m-dimensionale si (m-1) dimensionale, cu k2j k2j-1 k2j+1, pentru j 1, p.

Putem construi care este produs al p+1 cãi j, j=1,2,3,…2p+1, respectiv conectând qinitial la (k2), (k2) la (k4)…(k2p-2) la (k2p) si (k2p) la qfinal. Considerând cã proiectia ‘=1’ 3’ …2p+1’ a lui =1 3…2p+1 din Rm-1, se poate genera deja k1’,…,k2p+1’, având ca si celule de bazã k1,…,k2p+1 .

Fiecare cale j’ din ‘ poate fi construitã în k1, k3, …, k2p+1 dupã cum urmeazã:

coordonatele xm dalungul cãii j din celula m-dimensionalã kj se obtin prin interpolarea liniarã între valoarea lui xm ca început si sfârsitul lui j, utilizând proportionalitatea distantei la frontiera lui kj între +xm si -xm si cu extinderea interpolãrii la închiderea lui kj, cu includerea kj-1 (dacã j > 1) si kj+1(dacã j < 2p+1) .

în cadrul constructiei interpolãrii, se distinge o necesitate în cazul în care kj-1 (respectiv kj+1) si kj au câteva celule de bazã si cazul în care acestea nu au celule de bazã. În ambele cazuri, când kj este o celulã semi-infinitã, o frontierã artificialã pote fi generatã prin adãugarea (respectiv extragerea) unei cantitãti fixe apropiate de frontiera celulei,mai jos de (mai sus de )cale, în ordinea interpolãrii posibile.

proiectia cãii ‘ poate fi generatã în câteva moduri prin construirea pentru Km-1 a cãii “ generatã în descompunerea de bazã Km-2 a lui Km-1 .

astfel, problema este redusã recursiv la generarea unei cãi în descompunerea de bazã din R.

În primul paragraf am mentionat cã, descompunerea celularã a lui Cliber este polinomialã, cu grad maxim si cu exponent dublu dependent de m. Pentru obiecte rigide m este fixat. Prin urmare, descompunerea lui Cliber este generatã cu perioadã polinomialã. Numãrul celulelor este acelasi, ordonate dupã mãrime. Numãrul polinoamelor în expresia k defineste celulele în descompunerea lui Cliber si gradul maxim al acestor polinoame, rezultând cã algoritmul de constructie al acestor expresii este însusi un polinom.

Pin urmare, deoarece numãrul variabilelor apãrute în propozitia TARSKI reprezentând conditia de adiacentã între douã celule, este 2m+1, si este deci fix constructia grafului de conexiune G este polinomialã. În orice caz, acesta are un exponent multiplu, dependent de m. Un test de eficientã al adiacentei celulelor este propus de SCHWARTZ si SHARIR. Utilizând acest test, constructia si cercetarea grafului de conexiune necesitã timp dublu-exponential în m.

Dacã C= R3 SO(3),putem construi o aplicatie algebricã a lui C pe R6 cu maparea a 3 sfere S3 pe R3 utilizând proiectia stereograficã. Aceastã aplicatie mapeazã oricare dar un singur punct din S3. Prin urmare distantarea unui punct în S3 nu poate modifica conexiunea lui Cliber atâta timp cât Cliber este o multime de dimensiune 6, dar depãrtarea punctului determinã o submultime a lui C de dimensiune 3, adicã codimensiunea este mai mare decât 2. Din moment ce S3 este reprezentarea bivalentã a lui SO(3), douã puncte reprezintã configuratia initialã în Rm si douã puncte reprezintã configuratia finalã. Astfel graful de conexiune contine douã celule initiale si douã celule tintã. Oricare cale care uneste celula initialã cu celula finalã este potrivitã.

Dacã C= R2 S1, putem construi o aplicatie algebricã a lui C pe R3 cu maparea unui cerc unitar S1 pe R utilizând proiectia stereograficã.

Acestã aplicatie mapeazã oricare punct dar unul singur din S1. Acest punct determinã o submultime de dimensiune 2 din C, distantarea acestuia afectând conexiunea lui Cliber. Prin urmare este necesar sã considerãm douã scheme de constructie, cu douã proiectii stereografice de la douã puncte diferite P1 si P2 din S’. Acestea produc douã reprezentãri ale lui C,douã descompuneri COLLINS Kmliber,1 si Kmliber,2 ale lui Cliber, precum si douã grafuri de conexiune G1 si G2. Cele douã grafuri pot fi combinate într-unul singur, conectând celulele din G1 care se intersecteazã, cu celulele din G2. Aceasta se pote realiza prin includerea polinoamelor din ecuatia definirii R2 {P2s printre polinoamele prin intermediul cãrora se calculeazã Kmliber,1 (respectiv Kmliber,2).

Celula k1 Kmliber,1 se intersecteazã cu celula k2 Kmliber,2 dacã punctul (k1) este imaginea în Kmliber,1 a configuratiei a cãrui imagine în Kmliber,2 apartine la k2 .

Combinând rezultatele anterioare, putem obtine teorema :

TEOREMA SCHWARTZ si SHARIR :

Problema planificãrii miscãrii unui obiect rigid liber semi-algebric A între un numãr finit de obstacole fixe rigide semi-algebrice Bi, i=1,…, q, pote fi solutionatã cu “timp polinomial (polinom dinamic)“, componentele polinomului definind obiecte în spatiul de lucru si cu grad maxim al acestor polinoame.

Spre exemplu, dacã atât A cât si obstacolele sunt obiecte poligonale (respectiv poliedrice) în spatiul bidimensional (respectiv tridimensional) complexitatea timpului metodei de mai sus este polinomialã cu complexitatea obiectului.

Aproximarea generalã de mai sus, referitoare la planificarea miscãrii, necesitã performante din punct de vedere al calculului exact cu numere algebrice.

3.6.4. PREZENTAREA ALGORITMULUI DESCOMPUNERII

COLLINS

Fie P={Pi(x1,x2…xn)s o multime oarecare al polinoamelor din Q[x1, x2, …, xnt si P(x1, x2, …, xn) produsul tuturor polinoamelor variabile Pi(x1,x2,…xn) din aceastã multime.

Considerãm P(x1, x2,…,xn) un polinom în xn ale cãrui coeficienti sunt functii xn-1 = =(x1,x2,…,xn-1). Aceste functii se pot nota cu Pxn-1(xn).

Fie k o regiune a lui Rn-1 ,Pxn-1(xn) are un numãr constant de rãdãcini reale distincte când xn-1 variazã peste k. Aceasta implicã un numãr constant al rãdãcinilor reale distincte al fiecãrui polinom Pi (acestea fiind polinoame în xn) pentru k. Se poate dovedi cã aceste rãdãcini sunt functii continue de xn-1 .

Presupunem cã dispunem de o tehnicã pentru constructia unei descompuneri cilindric-algebricã Kn-1 a lui Rn-1 astfel încât în orice celulã kKn-1 numãrul de rãdãcini reale distincte ale lui Pxn-1(xn) este constant,fie aceasta j. Fie fk1(xn-1)…fkj(xn-1) aceste rãdãcini si y1, y2, …, yj valorile lor algebrice calculate cu (k). Putem scrie indicii în urmãtorul mod : y1 < y2 < …< yj. Astfel, pentru orice xn-1k, avem: fk1(xn-1) < fk2(xn-1)< … < fkj(xn-1), în caz contrar numãrul rãdãcinilor reale distincte ale lui Pxn-1(xn) nu poate rãmâne constant pentru k. Deci, fki(xn-1) pote fi consideratã ca rãdãcina ith a lui Pxn-1(xn) din k. Aceasta este o functie continuã de xn-1 pentru k.

O descompunerea cilindric-algebricã P-invariantã Kn din Rn se obtine de la Kn–1, descompunând fiecare cilindru k R, k Kn-1 în celule, unde (xn-1,xn) este valabil pentru (x1,x2,…,xn-1,xn) :

{(xn-1,xn)s , cu xn-1 k si xn < fk1(xn-1) ;

{(xn-1,xn)s , cu xn-1 k si xn = fki(xn-1), pentru i [1,jt ;

{(xn-1,xn)s , cu xn-1 k si fki(xn-1) < xn < fki+1(xn-1), pentru i [1, j-1t;

{(xn-1,xn)s , cu xn-1 k si fkj(xn-1) < xn .

În plus, fie n-1 un model cilindric a lui Kn-1 .Pentru k Kn-1, punctele: (sn-1, y1-1), (sn-1, yj+1), (sn-1, y1), …, (sn-1, yj), (sn-1, (y1+y2)/2) ,…, (sn-1,(yj-1+yj)/2) cu sn-1=n-1(k) , sunt puncte algebrice care definesc un, model cilindric a lui Kn .

Deci problema care rãmâne este de a construi Kn-1, adicã o descompunere cilindric-algebricã a lui Rn-1 astfel încât în orice celulã k a acestei descompuneri numãrul rãdãcinilor reale, distincte, este de asemenea constantã peste aceeasi regiune. În plus, este bine-cunoscut cã numãrul rãdãcinilor distincte ale polinomului P(x) de grad k este egal cu k-h, unde h este gradul celui mai mare divizor comun (c.m.m.d.c) a lui P si P’, derivatã a lui P .

Astfel o cale pentru constructia unei descompuneri cilindrice Kn-1, care poate servi la descompunerea de bazã a lui Rn este asigurarea cã, deopotrivã, gradul lui Pxn-1(xn) si gradul c.m.m.d.c. a lui Pxn-1(xn) si derivata lui Pxn-1(xn) relativã la xn, Pxn-1’(xn), rãmâne constant în fiecare celulã a lui Kn. Putem arãta cum se poate reliza aceasta .

Fie A(x) si B(x) douã polinoame în x , având gradele a si b (a > 0,b >0).

Considerãm ecuatia :

A(x)Uj(x)B(x)Vj(x)=0 (1)

unde Uj si Vj sunt douã polinoame având gradele (b-j-1) si (a-j-1) (0 j min{a,bs-1).

Se pot trata coeficientii lui Uj si Vj ca necunoscute. Identificarea cu 0 a coeficientilor, neschimbând puterea lui x în ecuatia de mai sus, produce o multime de (a+b-j) ecuatii liniare implicând (a+b-2j) necunoscute.

Fie j(A,B) determinantul corespunzãtor celor (a+b-2j) ecuatii pentru principalele (a+b-2j) puteri ale lui x.

PROPOZI[IA 1 :

Numãrul rãdãcinilor comune al celor douã polinoame A(x) si B(x) având grade nenule este un întreg mic j astfel încât j(A,B) 0.

Demonstratie: În mod uzual se poate scrie:

A(x)=(x-1)…(x-a) ,

B(x)=(x-1)…(x-b) ,

Uj(x)=(x-1)…(x-b-j-1) ,

Vj(x)=(x-1)…(x-a-j-1) .

Considerãm cã j este un întreg mic astfel încât acuatia (1) admite solutii diferite de 0. Când, r[1,bj1t si s[1,aj1t, avem rs, astfel consideratiile sunt contradictorii.

În plus, unica teoremã a factorizãrii pentru polinome implicã, ca fiecare rãdãcinã a lui Uj sã fie o rãdãcinã a lui B. Fiecare rãdãcinã a lui Vj sã fie o rãdãcinã a lui A, si prin urmare, fiecare rãdãcinã (rãmasã) a lui A este o rãdãcinã a lui B. Astfel A si B au j+1 rãdãcini comune.

Invers, dacã A si B au j+1 rãdãcini comune, atunci existã polinoame nenule Uj si Vj satisfãcând ecuatia (1).

Dacã j=0, ecuatia (1) determinã un sistem pãtratic cu (a+b) ecuatii liniare, cu (a+b) coeficienti a lui U0 sI V0, ca necunoscute.

Dacã determinantul acestui sistem, adicã 0(A,B) este diferit de 0, o solutie al acestui sistem este o solutie banalã si A si B nu au rãdãcini comune.

Dacã (A,B)=0, atunci existã U0 si V0 diferite de 0 satisfãcând ecuatia (1), si A si B au cel putin o rãdãcinã în comun.

Utilizãm procedeul recursivitãtii. Presupunem cã, cunoastem deja faptul, cã ecuatia (1) admite o solutie diferitã de 0 pentru orice I= 0, 1,…, j1. În acest caz stim cã A si B au cel putin j rãdãcini comune.

Considerãm ecuatia

A(x)Uj(x)-B(x)Vj(x)= Cj(x)

unde Uj si Vj sunt definite ca mai sus, si Cj este un polinom arbitrar al cãrui grad este cel mult j1.

Sistemul de ecuatii liniare cu coeficientii lui Uj, Vj si Cj, se obtine identificând coeficientii acelorasi puteri ale lui x în ambele pãrti ale ecuatiei (2), producând a+bj necunoscute; de aceea, acesta este un sistem pãtratic.

Cele a+bj ecuatii reprezintã conditia ca, atunci când coeficientii fiecãrei puteri ale lui x în intervalul [j, a+bj1t sunt 0, sã se formeze un subsistem omogen de (a+b-2j)(a+b2j) ecuatii a lui . are solutii diferite de 0 dacã si numai dacã ‘ are solutii diferite de 0, adicã j(A,B)= 0.

Dacã j(A,B)0, atunci ecuatia (2) si prin urmare si ecuatia (1) au numai solutii banale, deci A si B au exact j rãdãcini comune.

Totusi, dacã j(A,B)=0, atunci existã Uj, Vj si Cj care satisfac acuatia (2).

Dupã cum stim A si B au cel putin j rãdãcini comune, deci Cj(x) trebuie sã fie divizibil. Dacã gradul lui Cj(x) este maximum j1, Cj poate fi identificat cu 0, astfel încât Uj si Vj satisfac ecuatia (1). Prin urmare A si B au cel putin j+1 rãdãcini în comun. Astfel, cele douã polinoame A si B ale lui Q[xt având gradul diferit de 0, putem determina exact câte rãdãcini au în comun, calculând j(A,B) pentru valori crescânde ale lui j. Acest calcul este necesar ,oricât am cunoaste gradele lui A si B .

Sã presupunem, de exemplu, cã A este un polinom de grad a, cu coeficientul puterii a egalã cu 0.

Deci, pentru orice j, incluzând j= 0, polinoamele Uj(x) =xb-j-1, cu 0 si Vj(x) 0 formeazã solutii nenule ale ecuatiei (1), chiar dacã A sI B au una sau mai multe rãdãcini în comun. Deoarece gradul GCD a lui A si B este egal cu numãrul rãdãcinilor comune al celor douã polinoame, avem :

PROPOZI[IA 2 :

Fie Pxn-1 (xn) de gradul k în xn. Pentru fiecare j =1,…, k, fie Qj(x1,…,xn-1) care reprezintã coeficientul unui termen din Pxn-1 (xn) având gradul j în xn si Pj,xn-1 (xn) reprezintã suma termenilor lui Pxn-1(xn) al cãrui grad în xn este mai mic sau egal cu j.

Fie Rjl (x1,…,xn-1) =l (Pj,xn-1, P’j,xn-1 ) cu l =0,…, j-2. Fie Q o colectie a polinoamelor Qj(x1,…,xn-1) si Rj l(x1,…,xn-1). Numãrul rãdãcinilor reale distincte ale lui Pxn-1 (xn) este constant pentru fiecare subset a lui Rn-1, în care toate polinoamele din Q pãstreazã un semn constant

(-,0,+).

Aceastã propozitie pote fi vãzutã mult prea sofisticatã, dar sã nu uitãm cã orice coeficient al polinoamelor Pxn-1 poate deveni 0 pentru o regiune a lui Rn-1.

Incluzând fiecare coeficient Qj (x1,x2,…,xn-1) a lui Pxn-1(xn) în Q se asigurã ca, gradul lui Pxn-1 sã rãmânã constant, în timp ce xn-1 variazã pentru orice celulã a lui Kn-1. Atunci când mai multi coeficienti principali ai lui Pxn-1 sunt identici cu 0 pentru o celulã, putem include fiecare coeficient în Q. Aceasta nu necesitã sã includã termenii constanti ai lui Pxn-1.

Similar, deoarece gradul lui Pxn-1 ar putea fi mai mic decât “cel mai mare “ grad k, cu scopul de a asigura cã gradul lui GCD (Pxn-1, P’xn-1) rãmâne constant pentru orice celulã Kn-1, trebuie sã includem în Q toate polinoamele Pjxn-1 obtinute din Pxn-1 prin stergerea unuia sau mai multor termeni principali de ordin înalt.

Deci, descompunerea cilindric-algebricã invariantã Q, Kn-1 , a lui Rn-1 este o descompunere de bazã apropiatã de constructia unei descompuneri algebrice cilindrice invariante P a lui Rn.

Prin urmare, problema originalã se reduce la o problemã de aceeasi formã pentru un nou set de polinoame în câteva variabile, de aceea aceeasi metodã de mai înainte poate fi aplicatã recursiv.

Când mai rãmâne o variabilã, problema de descompunere este trivialã si recursivitatea poate fi încheiatã.

Exemplu :

Vom ilustra descompunerea lui COLLINS pe un exemplu simplu, unde C=R3, regiunea C-obstacolelor fiind o sferã unitarã centratã pe configuratia (0, 0, 0) iar Cliber este astfel definitã :

Cliber={(x,y,z) R3 x2+y2+z2-1 > 0 s

Singurul polinom ce apare în aceastã definitie este :

P(x,y,z)= x2+y2+z2-1

Notãm polinomul P(x,y,z) în z cu P(x,y)(z).

Vom avea :

P (x,y)(z)= z2 + (x2+y2-1)

P’(x,y)(z)= 2z

Gradul lui P(x,y) este constant pentru orice R2 si este egal cu 2.

Prin urmare 0( P(x,y), P’(x,y) )= 4(x2+y2-1), numãrul rãdãcinilor comune ale lui P(x,y) si P’(x,y) este 0 dacã x2+y2-1 0 si 1 în rest. Prin urmare, gradul lui GCD(P(x,y), P’(x,y) ) este constant când semnul lui x2+y2-1 rãmâne constant.

Vom reprezenta procedeul recursiv în R2 si considerãm Q(x,y)= x2+y2-1 un polinom în y, adicã Qx(y)= y2+(x2-1). Gradul acestui polinom este constant pentru orice R si este egal cu 2. Gradul celui mai mare divizor comun a lui Qx si Qx’, adicã numãrul rãdãcinilor comune a lui Qx si Qx’ este constant în fiecare regiune a lui R unde x2-1 pãstreazã semnul constant .

Urmãtoarele celule din R :

formeazã o descompunere K1 a lui R, astfel încât x21 pãstreazã un semn constant pentru fiecare celulã din acestã descompunere .

Asadar, aceastã descompunere pote fi utilizatã la descompunerea de bazã a descompunerii algebric cilindrice Q-invariante, K2 a lui R2. Aceastã descompunere se obtine cu ajutorul fiecãrei celule k a lui K1 din R2 si prin descompunerea cilindricã pentru k în celule, conform cu rãdãcinile reale distincte ale lui Qx(y), adicã

pentru x(-1,+1), {0s pentru x = -1 si x = +1 si 0 în rest .

Astfel, K2 contine 13 celule (vezi figura 2.15) :

y

-1 +1 x

fig. 2.15. Aceastã figurã prezintã descompunerea COLLINS a lui R2 pentru un polinom x2+y21. Descompunerea genereazã 13 celule de dimensiune 2, 1 si 0.

douã semiplane deschise x < -1 si x > +1 ;

patru semidrepte deschise x = -1 y > 0, x = -1 y < 0 ,

x = +1 y > 0, x = +1 y < 0 ;

douã puncte (-1,0) si (+1,0) ;

douã semicercuri deschise -1 < x < +1 x2+y2-1= 0 y >0

si

-1 < x <+1 x2+y2-1= 0 y < 0

un disc deschis x2+y2-1 < 0 ;

douã regiuni bidimensionale peste si sub cercul -1 < x <+1

x2+y2-1 > 0 y > 0 si -1< x <+1 x2+y2-1 > 0 y < 0;

Aceastã descompunere poate fi utilizatã la descompunerea de bazã a descompunerii cilindric-algebrice P-invariantã K3 a lui R3.

Pentru acest scop, fiecare celulã kK2 fiind un ajutor în R3, se utizeazã rãdãcinile reale distincte ale lui P(x,y)(z) la descompunerea cilindricã peste k , adicã:

{- ,+s dacã (x,y) apartine discului x2+y2-1< 0;

{0s dacã (x,y) este (-1, 0) sau (+1, 0) sau apartine unuia din cele douã semicercuri y= -1 < x< +1 ;

în rest .

Astfel K3 contine 25 de celule (vezi figura 2.16):

douã semispatii: x < -1 si x > +1 ;

patru semidrepte: x= -1 y =0 z > 0

x= -1 y =0 z < 0

x= +1 y =0 z > 0

x=+1 y=0 z < 0 ;

douã puncte: (-1, 0, 0) si (+1, 0, 0) ;

douã semiplane: x= -1 y > 0

x= -1 y < 0

x= +1 y > 0

x= +1 y < 0 ;

douã semicercuri: -1 < x < +1 x2+y2-1= 0 y > 0 z= 0

si

-1 < x < +1 x2+y2-1= 0 y < 0 z= 0 ;

douã semisfere: -1 < x <+1 -1 < y <+1 x2+y2+z2-1= 0

z > 0

si

-1 < x <+1 -1 < y <+1 x2+y2+z2-1= 0

z < 0 ;

o cupolã deschisã : x2+y2+z2-1 < 0 ;

patru suprafete cilindrice: -1 < x <+1 x2+y2-1= 0 y > 0

z > 0

-1 < x <+1 x2+y2-1= 0 y < 0

z > 0

-1 < x <+1 x2+y2-1= 0 y > 0

z < 0

-1 < x <+1 x2+y2-1= 0 y < 0

z < 0 ;

douã volume tridimensionale peste si sub sfera unitate :

x2+y2-1 < 0 x2+y2+z2-1 > 0 z > 0

si

x2+y2-1 < 0 x2+y2+z2-1 > 0 z < 0

douã volume tridimensionale :

-1 < x <+1 x2+y2-1 > 0 y> 0

si

-1 < x <+1 x2+y2-1 > 0 y< 0

z

y

-1

x

fig. 2.17. Figura reprezintã descompunerea COLLINS

a lui R3 pentru x2+y2+z2-1. Aceastã descompunere

contine 25 de celule de dimensiune 3, 2, 1 si 0.

CAPITOLUL 4

IMPLEMENTAREA ALGORITMULUI DE PLANIFICARE

A MIȘCĂRII

În acest capitol este prezentat modul de realizare și utilizare a programului de simulare a planificării mișcării unui robot, folosind metoda descompunerii celulare exacte, care a fost descrisă pe larg în capitolul anterior.

Programul listat este anexat la sfârșitul lucrării. Algoritmul de planificare a mișcării robotului în spatiul liber SCliber descompus în regiuni simple, numite celule, este implementat printr-un program realizat în limbajul ”C++”.

La lansarea în executie a programului apare o scurtă descriere a “Modului de utilizare a programului“, care constituie un ghid pentru utilizator.

A. După această prezentare, pe ecran apare INTERFAȚA CU UTILIZATORUL care cuprinde trei ferestre (figura 4.1):

SPAȚIUL DE LUCRU AL ROBOTULUI (ROBOT WORKSPACE)

COMANDA (COMAND)

DIMENSIUNEA ROBOTULUI (ROBOT DIMENSION)

Cele trei ferestre sunt realizate prin intermediul funcției :

void chenar (int stg, int dr, int jos, char title, int activ)

Acestă funcție desenează o fereastră de tipul celor din figura 4.1.

Funcția primește ca parametru coordonatele (stânga, sus), (dreapta, jos) respectiv numele atribuit ferestrelor(în cazul nostru numele celor trei ferestre sunt enumerate mai sus ) și un întreg ce indică dacă fereastra este activă sau nu .

Se observă că, inițial fereastra “COMANDA” este activă (variabila activ=1) deoarece orice comandă se obține prin apăsarea unui buton din această fereastră .Celelalte ferestre devin active pe măsură ce se face referire la ele , dar inițial sunt dezactivate.

În momentul în care o fereastră devine activă, bara de sus a ferestrei, ce conține numele, își schimbă culoarea .

Fereastra “SPAȚIUL DE LUCRU AL ROBOTULUI” este spațiul în care robotul se deplasează ocolind obstacolele situate aici, pentru a ajunge dintr-o configurație inițială într-o c

fig.4.1. Spațiul de lucru populat cu obstacole

Fereastra "COMANDA" conține comenzile necesare ce se pot obține prin apăsarea butonului corespunzător din această fereastră , iar fereastra “DIMENSIUNEA ROBOTULUI” permite modificarea dimensiunii robotului simulat printr-un segment de dreaptă.

În continuare vom descrie modul de utilizare a butoanelor din cele două ferestre din partea de jos al ecranului , precum și funcțiile relizate de aceste butoane.

Fiecare buton este construit prin intermediul funcției:

void buton (int stg, int sus, int dr, int jos, int activ, int culoare, char title)

Această funcție are următorii parametrii :coordonatele colțului (stânga,sus) respectiv (dreapta, jos) al butonului, un întreg semnificând faptul că butonul este apăsat sau nu, un întreg care indică culoarea butonului iar ultimul paramatru indică, numele atașat butonului.

În fereastra “COMANDA” apar următoarele butoane:

MENU Acest buton va fi apăsat doar la ultimul pas al execuției programului , după ce robotul își termină toate activitățile. Utilizatorul va fi atenționat, la momentul corespunzător apăsării acestui buton , printr-un mesaj. La apăsarea butonului va apare un meniu despre care vom vorbi la momen- tul potrivit, meniu care conține informațiile obținute de robot în timpul activității sale în spațiul de lucru.

DIM La apăsarea acestui buton se dezactivează fereastra “COMANDA” și se activează fereastra de modificare a dimensiunii robotului.

Observații :

1. Pentru a părăsi această fereastră se apasă butonul OK . Chiar dacă modificați dimensiunea robotului, nu veți putea părăsi fereastra fără apăsarea acestui buton.

2. Se recomandă mărirea dimensiunii robotului, în cazul în care doriți să cerrcetați mai profund “Metoda descompunerii celulare exacte”, deoarece la dimensiuni mai mari ale robotului,curbele critice oferă o imagine mai clară.

OBST Se activează fereastra “SPAȚIUL DE LUCRU AL ROBOTULUI”, permițând utilizatorului să deseneze obstacole, sub formă de poligoane. Despre modul cum trebuie desenate obstacolele vom scrie mai târziu. După terminarea desenării obsacolelor, robotul își începe imediat activi-

tatea, deci rămâne în continuare aceeași fereastră ectivă.

Observație:

În caz de cercetare a “Metodei descompunerii celulare exacte“ se recomandă ca utilizatorul să plaseze în spațiul de lucru al robotului cât mai puține obstacole (1 sau maxim 2) deoarece în cazul mai multor obstacole apar foarte multe curbe critice și metoda este mai dificilă de urmărit și de studiat.

QUIT Apăsarea acestui buton determină revenirea în program. Nu se poate apăsa butonul, decât atunci când fereastra activă este “COMANDA”.

În fereastra “DIMENSIUNEA ROBOTULUI” apar următoarele butoane:

++ Se incrementează dimensiunea robotului cu doi pași deodată.

+ Se incrementează dimensiunea robotului cu un singur pas.

Ok Se părăsește fereastra de modificare a dimensiunii robotului.

Se decrementează dimensiunea robotului cu un pas.

Se decrementează dimensiunea robotului cu doi pași deodată.

Trecerea dintr-o fereastră în alta, precum și identificarea apăsării uni buton în cadrul unei ferestre se realizează prin funcția:

int COMANDA (void)

Plasarea în fereastra “COMANDA” se realizează prin utilizarea unei variabile globale comand căruia i se atribuie valoarea :comand = COMANDA().

Funcția COMANDA() nu face altceva decât testează poziția mouse-ului în fereastra “COMANDA”, astfel încât în funcție de coordonatele x și y să poată decide dacă este sau nu apăsat vreun buton din fereastra activă.

Astfel dacă (comand == 1) se presupune că este apăsat butonul DIM deci se va executa funcția :

void DIMENSIUNE (void)

Prin apelarea acestei funcții suntem plasați ăn fereastra ce permite modificarea dimensiunii robotului.Funcția se aseamănă principial cu funcția COMANDA(), adică testează

poziția cursorului mouse,verificând care buton este apăsat.

La apăsarea butonului Ok se dezactivează fereastra “DIMENSIUNEA ROBOTULUI”

și se trece automat în fereastra “COMANDA”.

O altă posibilitate este (comand == 2) ceea ce ne precizează că este apăsat butonul

OBST , deci se activează spațiul de lucru al robotului și se pot desena obstacolele.

O a treia posibilitate este (comand == 3) care ne semnalează că este apăsat butonul MENU deci se pot vizualiza informațiile obținute de robot.

Părăsirea interfeței se poate realiza fie cu butonul QUIT din fereastra “COMANDA”, fie cu butonul cu același nume din meniul obținut prin apăsarea butonului MENU .

Observație: orice apăsare necorespunzătoare a butoanelor în cadrul ferestrelor este semnalată ca eroare și este afișat un mesaj construit prin funcția:

void talk (int xp, int yp)

din fișierul “MOUSE1.CPP”.

B. În momentul în care variabila (comand == 2) ceea ce ne precizează că s-a apăsat butonul OBST se vor apela următoarele funcții :

void TEREN (int refa)

Din acest moment suntem plasați în “Spațiul de lucru al robotului” (Robot workspace) pe care-l vom părăsi doar după ce robotul își termină toate activitățiile în acest spațiu.

Prin urmare, această fereastră fiind activă, dacă parametrul întreg “refa” al fincției TEREN() ia valoarea 1 sa apelează funcția ce permite desenarea efectivă a obstacolelor în spațiul robotului, funcție ce este realizată în fișierul “MOUSE1.CPP” și care se numește:

void desen (void)

Vârfurile obstacolelor sunt memorate în tablourile de tipul întreg: int obst1[20t, int obst2[20t… în funcție de câte obstacole se află în terenul robotului, memorarea relizându-se sub forma : obst1[x1, y1,x2, y2,…t în funcție de numărul vârfurilor obstacolului poligonal.

Apăsând butonul stânga mouse se desenează vârfurile obstacolului, rând pe rând. Dacă doeim să închidem poligonul convex care reprezintă obstacolul apăsăm butonul dreapta mouse.

Funcția de desenare este ușor de înțeles, astfel încât numai insistăm asupra modului ei de relizare, doar subliniem faptul că prin inetrmediul ei se obțin obstacole hașurate în terenul robotului (vezi figura 4.1).

Observații:

1. Această observație este utilă pentru cei ce vor să modifice numărul obstacolelor din spațiul de lucru al robotului. Precizăm că acest număr poate fi modificat în cadrul fișierului “MOUSE1.CPP” în funcția void desen (void), în finalul instucțiunii do…while(nrobst < 2) .

Astfel avem următoarele posibilități:

nrobst < 2: se desenează un singur obstacol.

Această situație este utilă dacă dorim o imagine mai clară, în special în cazul studiului metodei.

nrobst < 3: se desenează două obstacole .

nrobst < 4: se desenează trei obstacole.

2. După desenarea obstacolelor se afișează un mesaj care semnalează că s-a încheiat și această etapă de desenare a obstacolelor din cadrul execuției programului.

3. Vârfurile și laturile obstacolelor sunt memorate cu numele v0,v1,v2,… respectiv l0,l1,l2,… în ordinea în care sunt desenate.

Pentru hașurarea obstacolelor și marcarea conturului obstacolelor, adică trasarea cu alb a laturilor acestor obstacole se folosește funcția:

void obstacole (int pauza, int lwidth, int color)

C. Următoarea etapă este TRASAREA CURBELOR CRITICE. După cum știm din capitolul 3, în cadrul “Metodei descompunerii celulare exacte” întâlnim 5 tipuri de curbe critice.

Curbele critice de tipul 1 sunt trasate prin intemediul funcției :

void parmuchii (int s, int d)

Funcția trasează paralela la o latură a obstacolului, paralelă situată la distanța d de această latură.

Această distanță d este tocmai dimensiunea robotului, pe care o putem modifica din fereastra “DIMENSIUNEA ROBOTULUI”.

Pentru a trasa curbele critice de tipul 1, se apelează o altă funcție denumită și concepută astfel:

void paralela (double x1, double y1,double x2, double y2, int d)

Funcția trasează o paralelă la un segment de dreaptă, având capetele de coordonate (x1,y1), (x2,y2), la o distanță d.

Obținerea paralelei la un segment de dreaptă ce poate avea orice pantă, nu este un lucru chiar atât de simplu dacă rezolvăm problema prin metoda cadranelor și nu vectorial.

Pentru o înțelegere mai bună, vom prezenta un caz particular (y1 == y2) prin care se obține paralela la un segment de dreaptă pe baza funcției paralela ().

În primul pas se calculează centrul de greutate al segmentului:

xc =(x1 + x2) 2;

yc =(y1 + y2) 2;

Având în vedere că acest segment reprezintă defapt o latură a unui obstacol, trebuie să decidem de care parte a segmentului trasăm paralela.

Pentru a putea decide am procedat astfel:

am construit două puncte simetrice față de (xc ,yc) de o parte și de alta a segmentului;

xc1= xc +3 xc2 = xc -3

yc1= yc+3 și yc2 = yc -3

x1 x2 x

(x4,y4)

(xc2,yc2)

y1=y2 (xc,yc)

(xc1,yc1)

(x3,y3)

y

testăm dacă punctul (pixelul) (xc1 ,yc1 ) este de culoarea obstacolului (DARKGRAY):

dacă da atunci noul (xc ,yc) va fi tocmai (xc1 ,yc1);

dacă nu atunci noul (xc ,yc) va fi tocmai (xc2 ,yc2);

apelăm funcția int decare_parte (int x, int y1, int x2, int y2, int xv, int yv ) care returnează 1 sau 0 în funcție de poziția (xv ,yv) față de segmentul având capetele de coordonate (x1, y1) , (x2, y2).

astfel variabila int indica1=decare_parte (int x,int y1,int x2,int y2,int xv,int yv ) va fi 0 sau 1 în funcție de poziția (xc, yc) față de segment .Deci știm că (xc, yc) se află în interiorul obstacolului.

în continuare se construiește perpendiculara în (x1, y1):

x3= x1 x4= x1

y3= y1+d y4= y1 -d

se testează prin intermediul funcției decare_parte (x1, y1,x2, y2, x3, y3) de care parte a segmentului se află punctul (x3, y3).

dacă acest punct se află de aceeași parte cu (xc, yc) adică se află tocmai în obstacol sau de partea obstacolului, atunci primul punct de capăt al segmentului paralel este punctul de coordonate: px1= x4

py1= y4 .

dacă acest punct se află de partea opusă a lui (xc, yc) atunci primul punct de capăt al segmentului paralel este punctul de coordonate:

px1= x3

py1= y3

la fel se procedează și pentru obținerea celui de-al doilea punct de capăt al segmentului de dreaptă paralel;

se obțin astfel cele două puncte (px1, py1) , (px2, py2) pe care unindu-le obținem paralela la latura obstacolului .

Observație: la fel se procedează și în cazul în care panta segmentului de dreaptă este diferită de 0, deosebirea constă în faptul că în această situație trebuie să ne folosim de ecuația dreptei și ecuația perpendicularei într-un punct.

Curbele critice de tipul 2 se obțin prin apelul funcției:

void cercuri (int obst)

Se desenează curbele critice de tipul 2, adică cercurile de rază d (dimensiunea robotului) și centrul în vârfurile obstacolului.

Curbele critice de tipul 3 se obțin prin intermediul funcției :

void prelmuchii (int s, int d)

Sunt desenate curbele critice de tipul 3, adică prelungirile laturilor obstacolelor de o parte și de alta cu o lungime d egală cu lungimea robotului.

Un exemplu de trasare a curbelor critice de tipul 3 se obține prin lansarea în execuție a fișierului “PRELUNG.CPP”.

Pentru efectuarea acestei acțiuni, funcția apelează o nouă funcție:

void prelungire (double x1, double y1, double x2, double y2, int d)

Funcția prelungește un segment de dreaptă atât la dreapta cât și la stânga cu o lungime d.

d x1, y1 x2, y2 d

Curbele critice de tipul 4 se obținprin intermediul funcției :

void dist_v (int ob1, int ob2)

Reamintim că curbele critice de tipul 4 apar doar în cazul existenței mai multor obstacole în spațiul de lucru al robotului (minim două obstacole) și numai în situația în care două vârfuri, aparținând la două obstacole, care pot fi situate pe o dreaptă, se află la o distanță mai mică decât lungimea robotului.

Un exemplu de trasare a curbelor critice de tipul 4 este ilustrat prin lansarea în execuție a fișierului “COLT2.CPP”.

fig.4.2. Reprezentarea curbelor critice

Pentru desenarea curbelor critice de tipul 4 se folosesec funcțiile:

void dist_v (int ob1, int ob2)

Funcția testează dacă distanțele dintre vârfurile corespunzătoare la două obstacole din terenul robotului, vârfuri care pot fi plasate pe o dreaptă, depășesc lungimea robotului.

În cazul în care această distanțăeste mai mică decât lungimea robotului, se însemnează cu verde vârfurile obstacolelor pentru care s-a relizat testarea, se desenează cercuri de rază 5 în cele două vârfuri și se apelează funcția:

void colt2 (double x1, double y1, double x2, double y2, int d)

Funcția are următorul scop: caută două vârfuri aparținând la două obstacole astfel încât dreapta ce trece prin ele este tangentă la obstacole în vârfurile respective, după care trasează această dreaptă, pe ecran urmând să apară curbele critice de tipul 4 obținute, adică două segmente de dreaptă tangente la obstacole în vârfurile respective, având dimensiunea d-h (h fiind distanța dintre vârfurile în discuție).

În cadrul acestei funcții se apelează funcția:

double distanța (int xx1, int yy1, int xx2, int yy2)

Funcția returnează distanța dintre două puncte, având coordonatele precizate ca și parametrii în funcție.

Curbele critice de tipul 5 se obțin cu ajutorul funcției:

void dubios (int s1, int s2)

Se desenează acest tip de curbe critice, folosind pentru aceasta și funcția:

void curba (double x1, double y1, double x2, double y2, double xd, double yd, int d)

Funcția se referă la muchia unui obstacol și un vârf al unui obstacol convex care nu este punct de capăt pentru muchie. Se testează dacă distanța de la vârful obstacolului la muchie este mai mică sau mai mare decât dimensiunea robotului. În cazul în care distanța nu depășește dimensiunea, funcția desenează o concoidă în vârful obstacolului.

Vizualizarea concoidelor pentru un obstacol se pote obține prin lansarea în execuție a fișierului “DUBIOS.CPP”.

Pentru aplicația concretă care s-a luat în considerare, o imagine asupra spațiului de lucru al robotului populat cu obstacole și cele 5 tipuri de curbe critice pentru fiecare obstacol s-a obținut în figura 4.2.

D. După ce s-au trasat și curbele critice în următorul pas din evoluția programului se cere utilizatorului să introducă coordonatele configurației inițiale și finale.

Se precizează că aceste puncte nu au voie să depășească spațiul de lucru al robotului. Pentru evitarea acestei situații se specifică utilizatorului limitele inferioare și superioare ale spațiului disponibil.

“Metoda descompunerii celulare exacte” prevede ca această configurație inițială și finală să fie situată în câte o regiune formată de curbele critice.

Din acest motiv pot apare următoarele situații:

1. Configurația inițială se află în interiorul unei regiuni.

În această situație se desemnează regiunea respectivă drept regiunea de unde robotul își începe drumul.

2. Configurația finală se află în interiorul unei regiuni.

În această situație se desemnează regiunea respectivă drept regiunea unde robotul se oprește.

3. Configurația inițială se află în afara tuturor regiunilor.

În acest caz se caută regiunea cea mai apropiată de configurația inițială, această regiune reprezentând regiunea de unde robotul pornește.

4. Configurația finală se află în afara tituror regiunilor.

Se procedează ca și la punctul 3.

5. Una dintre configurații (sau amândouă) se află pe o curbă critică. În această situație se cere reintroducerea configurației respective de către utilizator.

6. Una dintre configurații (sau amândouă) se află pe un obstacol.Se procedează ca și în cazul 5.

Pentru introducerea configurațiilor inițiale și finale se apelează funcția:

void CONFIGURAȚII(void)

Se afișează un mesaj prin care se cere introducerea configurației inițiale și finale, apăsând butonul stânga respectiv dreapta mouse.

Funcția limitează posibilitatea introducerii celor două configurații la spațiul de lucru al robotului (MAXX=639,MAXY=350).

Se memorează punctul introdus drept configurație inițială în tabloul config[2contt pentru cont=0, respectiv 1, iar punctul desemnat ca și configurație finală în același tabloul, la elementele config[2t, respectiv config[3t.

În situația în care punctul introdus ca și Ci nu aparține nici unei regiuni, atunci se consideră ca și regiune de unde robotul pornește, regiunea aflată la cea mai mică distanță de Ci. Dacă Cf nu aparține nici unei regiuni se procedează la fel ca mai sus.

Pentru cele două situații menționate anterior se stabilește în cadrul funcției

void REGIUNI(void)

cele mai mici coordonate ale punctelor de intersecție aparținând unei regiuni (minimx, minimy) respectiv cele mai mari coordonate ale punctelor de intersecție aparținând unei regiuni (maximx, maximy) și se memorează aceste informații în tabloul MINMAX[ t[ t după cum urmează:

MINMAX[c_regiunit[0t=minimx;

cea mai mică coordonată x;

MIMAX[c_regiunit[1t=minimxy;

coordonata y corespunzătoare lui minimx;

MINMAX[c_regiunit[2t=maximx;

cea mai mare coordonată x;

MINMAX[c_regiunit[3t=maximxy;

coordonata y corespunzătoare lui maximx;

MINMAX[c_regiunit[4t=minimy;

cea mai mică coordonată y;

MINMAX[c_regiunit[5t=minimyx;

coordonata x corespunzătoare lui minimy;

MINMAX[c_regiunit[6t=maximy;

cea mai mare coordonată y;

MUNMAX[c_regiunit[7t=maximyx;

coordonata y corespunzătoare lui maximy.

În finalul funcției se testează dacă Ci și Cf aparțin unei regiuni sau nu.

În caz negativ calculează distanța de la punctul Ci la (MINMAX[st[0t, MINMAX[st[1t) unde s este numărul regiunii testate, iarregiunea corespunzătoare distamței minime va fi regiunea de unde robotul pornește.

La fel se procedează și în cazul Cf doar că testul se face față de punctul de coordonate (MINMAX[st[2t, MINMAX[st[3t).

Observații:

1. Cazurile 3 și 4 se întâlnesc în cazul în care spațiul robotului nu este populat de multe obstacole.

2. Programul memorează cele două regiuni de start și stop, ele fiind utile pentru construcția grafului de conexiune.

E. După stabilirea configurației inițiale Cinițial și configurației finale Cfinal se trece la detectarea punctelor de intersecție dintre curbele critice ce apar în spațiul robotului.

Aceste puncte de intersecție sunt necesare pentru detectarea, în continuare, a stopurilor orare și trigonometrice.

Pentru a fi mai evident rolul acestor puncte, menționăm că pentru a detecta stopurile, robotul va fi plasat în fiecare punct de intersecție aferentă fiecărei regiuni și va efectua o mișcare de rotație în sens orar, respectiv în sens trigonometric în fiecare din acest puncte.

Funcția creată în acest scop este:

void PUNCTE_DE_INTERSECȚIE (void)

Pentru a găsi și memora aceste puncte se procedează astfel:

se baleiază ecranul pe verticală până când este detectat un pixel de culoarea curbelor critice (COL_CURBE);

dacă s-a găsit un pixel de culoarea COL_CURBE se începe un proces de căutare în jurul pixelului respectiv, al unui alt pixel de aceeași culoare;

dacă s-a găsit un pixel roșu (COL_CURBE==RED) se incrementeazăun contor;

dacă s-a găsit un pixel de aceeași culoare cu culoarea conturului obstacolului acest contor va lua valoarea 4;

putem spune că pixelul testat esze punct de intersecție dacă și numai dacă are în jur cel puțin 4 pixeli de aceeași culoare sau dacă este tocmai punctul de intersecție dintre curba critică și conturul obstacolului.

Datorită unor inexactități grafice, în continuare se elomonă punctele de intersecție suplimentare printr-un simplu proces de optimizare. O imagine a acestor puncte de intersecție aferente curbelor critice din aplicația noastră poate fi văzută în figura 8.

Pentru memorarea punctelor de intersecție se utilizează un tablou de întregi:

int t_puncte[2000t în care punctele sunt înscrise în forma: t_puncte[x1,y1,x2,y2,x3,y3,…t.

F. Urmează ETAPA DE DETECTARE ȘI MEMORARE A REGIUNILOR formate de curbele critice.

Funcția ce a fost creată în acest sens este:

void REGIUNI (void)

Pentru a detecta regiunile se adoptă următoarea strategie:

se hașurează spațiul din terenul robotului care se află în exteriorul acestor curbe critice.

se baleiază ecranul pe verticală până când se detectează un pixel negru. Aceasta înseamnă că suntem tocmai într-o regiune.

Pentru a distinge regiunile detectate de cele nedectate se hașurează fiecare regiune găsită cu o culoare COL_FILL_REGIUNE.

fig.4.3. Caută și memorează regiunile necritice

Imediat după ce s-a detectat o regiune se caută punctele de intersecție aparținând acelei regiuni.

Pentru a afla care puncte din tabloul t_puncte[ t aparțin regiunii în discuție, se ia pe rând fiecare punct din tablou și se testează dacă în jurul punctului se află un pixel de culoarea COL_FILL_REGIUNE, adică de culoarea regiunii detectate.

Dacă se găsește un astfel de pixel acesta se colorează cu YELLOW pentru a-l distinge și se memorează în tabloul t_regiuni[c_regiunit[punctet.

Acest tablou va conține pentru fiecare regiune numărul punctelor de intersecție din tabloul t_puncte iar t_regiuni[c_regiunit[0t va indica numărul punctelor de intersecție aparținând regiunii.

După detectarea punctelor de intersecție aparținând regiunii se hașurează regiunea respectivă cu COLL_FILL_REZOLVAT și se trece la căutarea unei alte regiuni, procedeul repetându-se. Cum sunt detectate aceste regiuni poate fi văzut în figura 4.3.

G. DETECTAREA ȘI MEMORAREA STOPURILOR TRIGONOMETRICE se relizează prin apelul funcției:

void STOPURI_TRIG (void)

care determină apariția, în spațiul de lucru al robotului, al unui robot de dimensiune d=dimrobot[2t-dimrobot[0t.

Robotul detectează stopurile trigonometrice pe baza următoarelor strategii:

se situează în prima regiune pe care a detectat-o;

ia pe rând fiecare punct de intersecție aparținând regiunii și plasându-se în aceste puncte efectuează o mișcare de rotație în sens trigonometric;

dacă în timpul rotației robotul “atinge” un pixel de culoarea conturului obstacolului generează un beep(), însemnând că a găsit un stop , acesta putând fi o latură sau un vârf al obstacolului. În figura 4.4 se prezintă robotul care efectuează mișcarea de rotație în spațiul său de lucru.

fig. 4.4. Detectarea de către robot a stopurilor

orare și trigonometrice

Pentru a memora stopurile trigonometrice s-a deschis un fișier iostream “test” care conține următoarele informații:

numărul regiunii;

punctele de intersecție aparținând regiunii;

stopurile trigonometrice aferente fiecărui punct din regiunea respectivă.

Observație:

După terminarea înscrierii acestor informații în fițierul “test”, obligatoriu, trebuie să închidem fișierul pentru că programul prevede lucrul cu mai multe fișiere.

Cum se realizează diferențierea înte un vârf și o latură a obstacolului lovit de robot este evidențiat în funcția:

void save_file(int x, int y)

Funcția primește ca și parametru coordonatele x și y ale punctului în care robotul lovește obstacolul.

Folosindu-ne de ecuația dreptei vom testa dacă x și y verifică ecuația dreptei sau sunt tocmai coordonatele unuia dintre vârfurile obstacolului, vârfuri ce sunt memorate în tabloul obst1[ t.

În primul caz stopul trigonometric îl constituie tocmai o latură al obstacolului, iar în cel de-al doilea caz stopul este unul dintre vârfurile obstacolului.

H. CREAREA FIȘIERULUI CU LISTA STOPURILOR TRIGONOMETRICE

Pentru o prezentare mai adecvată a listei cu stopurile trigonometrice detectate de robot, vom deschide un nou fișier “trig”.

Funcția:

void LISTA_STOPURI_TRIG ( )

nu are doar rolul de a rescrie fișierul “test”, ci realizează și memorarea laturilor și vârfurilor dectate ca și stopuri, corespunzătoare fiecărei regiuni.

Deci, funcția citește fiecare linie a fișierului “test” și memorează laturile și vârfurile într-un tablou multidimensional: char stop_or_trig[cont_regt[it[jt unde

int cont_reg = numărul regiunii;

int i = poziția în tablou a punctului de intersecție;

int j = poate lua două valori j=0 sau j=1.

Dacă j=0, stop_or_trig[cont_regt[it[0t poate fi ‘l’ sau ‘v’ indicând că este vorba de o latură sau de un vârf.

Dacă j=1, stop_or_trig[cont_regt[it[1t indică numărul latirii sau al vârfului.

Observație:

Remarcăm faptul că vom folosi același tablou atât pentru memorarea stopurilor trigonometrice cât și pentru memorarea stopurilor orare.

Astfel pentru a face distincție între cele două tipuri de stopuri, ascesta se memoreză astfel:

toate stopurile trigonometrice se memorează la pozițiile impare ale tabloului stop_or_trig[ t[ t[ t adică pentru i= 2k+1 , k= 0,1,2,…;

toate stopirile orare se memorează la pozițiile pare ale tabloului stop_or_trig[ t[ t[ t adică pentru i= 2k ,k=0,1,2,…;

I. DETECTAREA ȘI MEMORAREA STOPURILOR ORARE se relizează prin apelul funcției:

void STOPURI_ORARE (void)

care permite detectarea de către robotul ce efectuează mișcări de rotație în sens orar a stopurilor orare.

Principiul de detecție și memorare nu se deosebește de cel al stopurilor trigonometrice, de aceea nu insistăm asupra acestei etape.

J. CREAREA FIȘIERULUI CU LISTA STOPURILOR ORARE

Prin intermediul funcției:

void LISTA_STOPURI_ORARE( )

se memorează laturile și vârfurile obstacolelor detectate de robot ca și stopuri orare.

Principiul de memorare este același cu cel al stopurilor trigonometrice, deosebirea constă în faptul că stopurile orare se memorează la pozițiile pare ale tabloului stop_or_trig, adică pentru i=2k, k=0,1,2,… .

Observații :

1. La ieșirea din program utilizatorul poate vizualiza stopurile trigonometrice respectiv orare prin deschiderea fișierelor “trig”,respectiv “orar”.

2. Toate aceste informații referitoare la stopurile detectate de robot în fiecare regiune (celulă) din spațiul de lucru pot fi vizualizate în meniul final, prin apăsarea butonului Stopuri trig., respectiv Stopuri orare .

K. ADIACENȚA CELULELOR

Pentru a putea construi graful de conexiune este necesar să stabilim în prelabil o relație de adiacență între celulele din spațiul de lucru al robotului.

În acest scop s-a creat funcția:

void ADIACENȚA (void)

prin intermediul căreia se stabilesc regiunile adiacente între ele.

Rezultatele obținute în urma execuției acestei funcții pot fi vizaualizate prin deschiderea fișierului iostream “adiac”, sau din meniul final apăsând butonul Adiacența .

În primul rând se elimină din tabloul stopurilor trigonometrice și orare, stopurile care se repetă pentru aceeași regiune.

Celulele adiacente cu o anumită celulă se stabilesc impunând condițiile:

cele două celule să aibă o frontieră comună (adică să aibă puncte de intersecție comune);

stopurile trigonometrice și orare se respecte condițiile impuse în capitolul 3.

Celulele adiacente vor fi memorate într-un tablou bidimensional:adiacent[kt[mt unde k -numărul regiunii pentru care se studiază adiacența ;

m- numărul regiunii adiacente cu k, în poziția corespunzătoare a tabloului punându-se 1.

L. GRAFUL DE CONEXIUNE

Se desenează în cadrul fișierului “HELP2.CPP” prin intermediul funcției

void h13(void).

Funcția permite desenarea grafului prin apelul recursiv al funcției

void graf(int rad, int xb, int yb)

dependent de numărul celulelor cu care este adiacentă o anumită celulă.

Astfel dacă o celulă este adiacentă cu:

o singură celulă se apelează o singură dată funcția graf();

două celule se apelează de două ori funcția graf();

trei celule se apelează de trei ori funcția graf().

Funcția graf() este asemănătoare principial cu h13(void), continuând construcția arborescentă a grafului pentru o celulă de bază.

După parcurgerea acestor pași, pe ecran apare un mesaj prin care utilizatorul este atenționat asupra existenței tuturor informațiilor obținute pe parcursul execuției programului. Aceste informații pot fi obținute prin apăsarea butonului Alege din fereastra “COMANDA”.

Astfel se va deschide un meniu “INFORMAȚII UTILE” care conține următoarele butoane:

PREZENTARE se prezintă pe scurt modul de utilizare al programului, astfel încât orice utilizator să poată folosi acest program citind cele căteva pagini afișate prin apăsarea acestui buton.

STOPURI TRIG. se prezintă câteva noțiuni despre stopurile trigonometrice întâlnite în metoda descompunerii celulare exacte, precum și lista de stopuri trigonometrice detectate de robot în fiecare regiune din spațiul de lucru.

STOPURI ORARE se prezintă câteva noțiuni despre stopurile orare întâlnite în cadrul metodei de descompunere studiată, precum și lista de stopuri orare detectate de robot în fiecare regiune din spațiul de lucru.

ADIACENȚA se prezintă pe scurt importanța depistării regiunilor adiacente între ele, după care se afișează lista stopurilor tuturor adiacențelor detectate.

GRAF. CONEX. se prezintă câteva noțiuni despre graful de conexiune și se afișează graful pentru aplicația studiată.

QUIT permite revenirea în program.

fig. 4.5. Construcția grafului de conexiune .

Caută o traiectorie liberă între Cinițial și Cfinal.

Observație : nu întâmplător am realizat descrierea modului de utilizare al programului atât înainte de execuția efectivă a acestuia cât și în final, la apăsarea butonului PREZENTARE, ci cu certitudinea că este foarte important ca un utilizator să știe cum să utilizeze programul și să înțeleagă astfel scopul pentru care acesta a fost conceput.

CAPITOLUL 5

CONCLUZII

Crearea roboților autonomi este o sarcină majoră în Robotică. Cu excepția anumitor domenii limitate, nu este real să se anticipeze și să se descrie explicit toate mișcările pe care robotul trebuie să le execute pentru a realiza sarcina cerută. Chiar și în cazurile când o asemenea descriere este posibilă, este util să se încorporeze dispozitive de planificare automată a mișcărilor în sistemele de programare off-line ale robotului.

Planificarea mișcării unui robot prezintă o varietate neașteptată de aspecte dificile de calcul. Astfel pe parcursul primului capitol s-au prezentat aspectele planificării mișcării unui robot,specificând problema de bază a planificării unei traiectorii. Cea mai simplă problemă de planificare presupune că robotul este singurul obiect în mișcare în spațiul de lucru, care nu posedă proprietăți dinamice evitând astfel problemele temporale.

Se consideră de asemenea că robotul nu intră în contact cu obiectele înconjurătoare, evitând astfel problemele legate de interacțiunea mecanică dintre obiecte fizice. Aceste considerații transformă problema planificării “fizice” a mișcării într-o problemă pur geometrică. Deși problema de bază a planificării traiectoriilor este simplificată, ea este totuși o problemă dificilă cu mai multe soluții și cu extensii directe spre probleme mai complicate.În mod intuitiv, obiectul mobil (robotul) într-o astfel de problemă este denumit în literatură “obiect liber zburător”. Problema de bază a planificării traiectoriei presupune că robotul parcurge cu exactitate traiectoria generată de planificator, și că atât geometria robotului, cât și pozițiile obstacolelor sunt cunoscute cu exactitate, însă în relitate nici o problemă de planificare nu satisface aceste ipoteze.

Un robot este conceput să relizeze trei categorii de sarcini:

deplasări pure;

eforturi pure;

sarcini compliante care combină deplasările cu eforturile;

Mișcarea ce trebuie executată de robot este specificată de planul de mișcare, iar o traiectorie precizează o secvență continuă a configurațiilor pe care robotul trebuie să le traverseze spre configurația finală.

De asemenea s-a presupus că robotul deține informații complete și exacte despre mediul său înconjurător. În majorotatea situațiilor însă, geometria spațiului de lucru poate fi doar parțial cunoscută în momentul planificării. Rezolvarea problemei de planificare a mișcării necesită cunoașterea modelului mediului înconjurător.Dacă robotul nu deține suficiente informații despre mediul său, acesta trebuie să se bazeze pe înregistrarea informațiilor prin inetrmediul sistemului senzorial și să reacționeze la informațiile preluate de senzori.

Asigurarea îndeplinirii sarcinii unui robot se bazează pe trei acțiuni majore:

stabilirea unei strategii de navigare;

modelarea spațiului de lucru;

planificarea mișcării în spațiul de lucru respectiv.

Stabilirea unei strategii de navigare se referă la determinarea metodelor de deplasare ale robotului în acord cu tipul sarcinii de executat. Se disting trei tipuri de strategii de navigare.

Stabilirea unei hărți de navigare în spațiul considerat se poate face fie independent de orice acțiune a robotului prin memorarea unei configurații date, care de regulă, reprezintă starea inițială a spațiului de licru, fie în cursul executării sarcinii pe măsură ce robotul își descoperă propriul spațiu de lucru.

Prin intermediul cunoștiințelor astfel acumulate se poate împărți spațiul de lucru în calule independente care să reprezinte zone accesibile respectiv interzise pentru robot. Acestă operație se numește modelarea spațiului de lucru al robotului. Metodele de modelare prezentate pe parcursul capitolului 1 sunt:

metoda grilei omogene;

metoda arborelui;

metoda grilei neomogene;

metoda poligoanelor convexe;

metoda punctelor de trecere;

În capitolul 2 s-au abordat metodele de planificare a mișcării unui robot. Problema poate fi abordată în două moduri (global sau local) de unde rezultă două tipuri de metode de planificare: globale și locale.

Aplicarea unei metode globale necesită cunoașterea completă “apriori” a spațiului de lucru, modelarea corespunzătoare a spațiului liber, cercetarea tuturor traiectoriilor posibile și selectarea uneu anumite traiectorii corespunzătoare unui criteariu de cost minim. O astfel de metodă garantează existența sau inexistența unei soluții. De asemenea, metodele globale de planificare se pot adapta ușor la programarea off-line.

Aplicarea unei metode locale necesită cunoașterea parțială a spațiului de lucru. O astfel de metodă nu garantează atingerea configurației finale, dar prezintă avantajul unei bune adaptări în timp real.

În ambele cazuri, rezolvarea problemei de planificare presupune rezolvarea unor probleme de natură geometrică sau de geometrie combinată cu cinematică și-sau dinamică. În astfel de situații se utilizează cu precădere rezultatele geometriei algoritmice.

Printre metodele de planificare abordate pe percursul capitolului 2 se află:

metoda hărții drumurilor:

drumul cel mai sigur;

metoda grafului vizibilității;

metoda retractării;

metoda drumului liber;

metoda descompunerii celulare:

descompunere celulară exactă;

descompunere celulară aproximativă;

metoda câmpului potențial;

Metoda hărții drumurilor se bazează pe ideea captării conexității spașiului liber al robotului într-o rețea de curbe unidimensionale, numită “harta drumurilor” HD. Odată construită, aceasta este utilizată ca o bancă de traiectorii standard dintre care se alege aceea ce unește configurația inițială cu cea finală.

Metoda câmpului potențial este o metodă locală de planificare care tratează robotul, reprezentat ca un punct în spațiul configurațiilor, ca pe o particulă aflată sub influența unui câmp potențial artificial, ale cărui variații reflectă structura “structura” spațiului liber.Funcția potențial este definită pe spațiul liber ca suma dintre un potențial atractiv, ce atrage robotul spre configurația finală, și un potențial repulsiv, ce îndepărtează robotul de obstacole.

Lucrarea prezintă în capitolul 3 o metodă de planificarea mișcării unui robot bazată pe descompunerea celulară exactă.

În spațiul de lucru populat cu obstacole poligonale, robotul poate efectua mișcări de translație și rotație. În acest caz spațiul configurațiilor este SC=R2 S1 iar C-obstacolele sunt regiuni tridimensionale aparținând suprafețelor regulate. Metoda prezentată nu este cea mai eficientă, dar conceptual este destul de simplă.

Metoda descompunerii celulare constă în descompunere spațiului liber al robotului (SCliber)

într-o colecție de regiuni simple, denumite celule, astfel încât să poată fi generată cu ușurință o traiectorie între oricare două configurații (Cinițial și Cfinal).

Se construiește și se cercetează un graf neorientat care reprezintă relația de adiacență într celule.Acest graf se numește graf de conexiune. Nodurile acestui graf sunt celule aprținând spațiului liber al robotului, două noduri fiind conectate printr-o legătură dacă și numai dacă, celulele corespunzătoare sunt adiacente. Rezultatul căutării este o secvență de celule denumită canal. O traiectorie liberă se poate obține pe baza acestei secvențe.

Metoda descompunerii celulare se împarte într-o metodă exactă și o metodă aproximativă. Descompunerea celulară exactă descompune spațiul liber în celule a căror reuniune este SCliber. Frontierele celulelor sunt porțiuni de curbe critice.

Descompunerea celulară aproximativă produce celule cu forme predefinite (de exemplu dreptunghiuri) și a căror reuniune este strict inclusă în spațiul liber. Frontiera unei celule nu caracterizează nici un fel de discontinuitate și nu are sens fizic.

Problema planificării mișcării unui obiect rigid bidimensional, care se deplasează într-un spațiu populat de obstacole poligonale a fost studiat de Schwartz și Sharir în 1983.

Principiul metodei descompunerii celulare exacte

Robotul este modelat printr-un segment de dreaptă PQ care poate efectua mișcări de translație și rotație într-un spațiu de lucru bidimensional W=R2.

Spațiul de lucru este populat cu obstacole a căror reuniune formează o regiune poligonală notată cu B. Spațiul configurațiilor SC al robotului este SC=R2 S1, astfel încât fiecare configurație se parametrizează prin (x,y,), unde x și y pot fi coordonatele lui P în sistemul fix SW atașat spațiului de lucru W, dacă se alege P=OA ca origine a sistemului SA atașat robotului, iar unghiul [0,2) este format de axele Ox corespunzătoare celor două sisteme. Lungimea segmentului PQ este a.

Ideea de bază a planificării traiectoriilor, în acest caz, constă în descompunerea mulțimii de poziții ale robotului în regiuni necritice bidimensionale, transformarea acestor regiuni în celule tridimensionale și reprezentarea relației de adiacență între aceste celule într-un graf de conexiune. Celulele bidimensionale sunt astfel alese, încât să mențină o structură omogenă în cilindrii de deasupra lor. Celulele conținute în astfel de cilindrii explicitează această structură. Frontierele acestor regiuni necritice se numesc curbe critice.

Astfel regiunea C-obstacolelor SCB este o regiune tridimensională, mărginită de fețe ,care sunt porțiuni de C-suprafețe riglate de tipul A sau B. O suprafață de tip A corespunde situației când segmentul PQ conține vârful unui obstacol. O suprafață de tip B corespunde situației în care, fie P, fie Q, este conținut de muchia unui obstacol.

Noțiunea de curbă critică înglobează:

proiecțiile pe planul xOy ale suprafețelor care reprezintă frontiere în regiunea C-obstacolelor SCB.

curbele conținute în suprafețele frontieră din SCB pe porțiunile unde planul tangent la aceste suprafețe este perpendicular pe planul xOy.

Aceste curbe sunt mulțimi de puncte pentru care structura regiunii C-obstacolelor aflate deasupra planului xOy înregistrează schimbări cantitative.

Într-adevăr când este traversată o astfel de curbă, fie se modifică mulțimea fețelor lui SCB care sunt intersectate de o linie perpendiculară pe planul xOy în poziția curentă, fie se modifică numărul punctelor de intersecție.

Curbele critice se clasifică în șase tipuri, după cum urmează :

muchiile E ale obstacolelor sunt curbe critice de tipul 0;

segmentul de dreaptă situat la distanța a de muchia E, având aceeași lungime E, este o curbă critică de tip 1;

arcul de cerc de rază a, cu centrul în vârful X al unui obstacol și mărginit de cele două semidrepte care conțin muchiile ce se îmbină în X, este o curbă critică de tip 2;

dacă E este muchia unui obstacol și X un vârf convex la unul din capetele lui E, segmentul de dreaptă trasat de capătul P când robotul glisează de-a lungul lui E până când Q rămâne încă în E, este o curbă critică de tip 3;

fie X1 și X2 două vârfuri ale unui obstacol convex, astfel încât linia ce trece prin cele două vârfuri este tangentă la obstacol în vârfurile respective; segmentul de dreaptă trasat de capătul P când robotul translatează atingând simultan X1 și X2 este o curbă critică de tipul 4;

fie E muchia unui obstacol și X vârful unui obstacol convex B, care nu este punct de capăt pentru E, situat la distanța h de E; dacă h < a, curba trasată de P când robotul se deplasează astfel încât atinge E și X, fiind tangent la B în X, este o curbă critică de tip 5;

Mulțimea curbelor critice este finită. Fiecare punct de sfârșit al unei curbe critice este plasat fie în altă curbă critică, fie la infinit. Ele sunt curbe algebrice ce pot fi: de gradul 1(tipurile 0,1,3 și 4), de gradul 2 (tipul 2) sau de gradul 4 (tipul 5). Oricare două curbe critice pot avea doar un număr finit de intersecții, cu excepția cazurilor în care coincid.

Orice zonă deschisă,mărginită de curbe critice este o regiune necritică.

Vârfurile și muchiile obstacolului, pe care robotul le atinge atunci când se rotește în jurul punctului P(x,y), fără a atinge interiorul lui B se numesc stopuri. Se pot evidenția două categorii de stopuri: stopuri orare și stopuri trigonometrice.

Fie F(x,y) mulțimea tuturor orientărilor libere posibile ale robotului într-o poziție necritică (x,y).

F(x,y)={ (x,y,) SCliber s.

Se notează cu s(x,y,c) stopul unic atins de robot având configurația (x,y,c) și cu S(x,y) mulțimea tuturor perechilor [s(x,y,c), s(x,y,c)t corespunzătoare de stopuri orare și trigonometrice. c și c sunt orientările limită în poziția necritică (x,y).

Fie R o regiune necritică și [s1,s2t o pereche de stopuri în S(x,y)=S(R). Regiunea tridimensională:

Cel(R, s1, s2)={(x,y,) (x,y) R și (1,2)s

este denumită celulă. Ea reprezintă o submulțime deschisă, conexă a lui SCliber .

După descompunerea spațiului SCliber în celule, se definește graful de conexiune asociat acestei descompuneri.

Fie K=Cel(R,s1,s2) și K=Cel(R,s1,s2) două celule. Ele sunt adiacente dacă și numai dacă:

frontierele regiunilor R și R se intresectează după o porțiune de curbă critică L;

(x,y) int (L):(1,2) (1,2) .

Dacă două celule sunt adiacente, atunci orice configurație dintr-o celulă poate fi cenectată cu orice configurație din cealaltă celulă printr-o traiectorie liberă, a cărui proiecție pe planul xOy traversează L având orientarea constantă în orice vecinătate a ăunctului de intersecție.

Graful de conexiune G este un graf nedirecționat ale cărui noduri sunt toate celule Cel(R,s1,s2), unde R este o regiune necritică și [s1,s2t S(R). O legătură a grafului conectează orice două noduri dacă și numai dacă, celulele corespunzătoare sunt adiacente.

Existând două configurații:

Cinițial=(Xinițial, Yinițial, inițial)

și

Cfinal=(Xfinal, Yfinal, final)

în spațiul Scliber, astfel încât nici (Xinițial,Yinițial) și nici (Xfinal,Yfinal) să nu se afle pe o curbă critică, atunci există o traiectorie liberă între ele, dacă și numai dacă cele două celule ce conțin Cinițial și Cfinal sunt conectate printr-o cale vizibilă în graful de conexiune G.

Algoritmul metodei descompunerii celulare exacte

Programul, descris în capitolul 4, ce determină o traiectorie liberă pentru un robot modelat printr-un segment de dreaptă, ce efectuează mișcări de translație și rotație, într-un spațiu de lucru bidimensional populat cu obstacole poligonale, utilizează metoda descompunerii celulare exacte.

Coniderând o regiune cu obstacole poligonale, robotul de lungime a și configurația inițială și finală Cinițial și Cfinal în spațiul liber, algoritmul generează o traiectorie liberă de la Cinițial la Cfinal dacă aceasta există,returnând fals în caz contrar.

Algoritmul descompunerii celulare exacte pentru găsirea unei traiectorii libere ce conectează două configurații este următorul:

stabilește lungimea robotului;

desenează obstacolele ce populează spațiul de lucru;

stabilește configurația inițială Cinițial și configurația finală Cfinal;

determină și reprezintă curbele critice aferente obstacolelor;

determină intersecțiile curbelor critice și toate porțiunile de curbe critice;elimină porțiunile de curbe critice redundante;

caută și memorează regiunile necritice;

pentru a deosebi regiunile între ele, se atribuie fiecăreia un număr întreg distinct;pentru exemplul prezentat, Cinițial se află în regiunea necritică R2 iar Cfinal se află în regiunea R46;

verifică dacă Cinițial și Cfinal se află pe o porțiune de curbă critică; în caz afirmativ modifică Cinițial și Cfinal;

dacă Cinițial nu se află într-o regiune necritică, atunci se consideră că aceasta aparține regiunii celei mai apropiate de Cinițial ; la fel se procedează și pentru Cfinal;

caută și memorează lista stopurilor orare și trigonometrice;

studiază relația de adiacență dintre celule;

construiește graful de conexiune G ale cărui noduri sunt regiuni necritice (celule);

studiază G pentru stabilirea unei traiectorii libere între Cinițial și Cfinal;

dacă cercetarea grafului se termină cu succes returnează secvența de celule adiacente, altfel returnează eroare.

Concluzii

Programul permite reprezentarea spațiului de lucru al robotului în două situații distincte: spațiul de lucru limitat, respectiv nelimitat. Configurația din spațiul de lucru al robotului respectiv dimensiunea robotului pot fi modificate dacă este necesar.

Construcția curbelor critice permite descompunerea configurației robotului în regiuni necritice numite celule. Geometria acestor celule este simplă, astfel încât să se poată fi generată cu ușurință o traiectorie între oricare două configurații ale robotului.

=== PLANIFICAREA MISCARII UNUI ROBOT ===

CAPITOLUL 1

ASPECTE ALE PLANIFICÃRII MI{CÃRII

1.1. NO[IUNI INTRODUCTIVE

De-a lungul timpului omul a încercat mereu sã-}i simplifice munca }i sã elimine efortul în prestarea acesteia. Astfel, el a încercat sã construiascã mecanisme care sã imite cât mai fidel fiin]ele umane.

Încã de la sfâr}itul anilor ‘40, J. T. Parsons a sugerat o metodã pentru ghidarea automatã a unei ma}ini de frezat cu ajutorul unor cartele perforate codificate pentru ob]inerea formelor complexe ale unei elice de elicopter.

Primul robot industrial a apãrut în anul 1954, când George Devol a solicitat un patent pentru un manipulator de uz general, cu memorie retroactivã }i control punct cu punct, cu toate cã acest robot a fost construit de abia în 1958.

În 1957 a fost lansat dispozitivul de apucat }i plasat, el reprezentând posibilitatea programãrii mecanice prin ro]i cu clame.

La începutul anilor ‘60 erau deja patentate principalele elemente definitorii pentru prima genera]ie de robo]i, iar în anul 1961 a fost elaboratã prima instala]ie industrialã de acest gen.

La începutul anilor ‘70 s-au construit deja mai multe variante ale robotului mobil “inteligent” – denumit Shakey – echipat cu o camerã de luat vederi, un detector de proximitate, etc., pentru a putea sã-}i coordoneze mi}cãrile în jurul obstacolelor }i sã plaseze diverse obiecte dupã un model impus.

Primii robo]i foloseau numai componente electronice logice conectate prin fire, în scopul realizãrii diferitelor opera]ii pentru care au fost proiecta]i.

În anul 1968 speciali}tii au fãcut legãtura între un robot }i un calculator de uz general, relizându-se astfel primul robot flexibil. În anul 1974 a fost comercializat primul robot controlat prin microcalculator. Astfel de robo]i care includeau }i partea de software erau mult mai puternici decât ma}inile cu circuite electronice specializate.

Au apãrut apoi }i primii robo]i de asamblare realiza]i cu un bra] specializat, dupã care, în 1976 a apãrut încheietura flexibilã pentru ajustãri fine ale bra]ului robotului în cursul pozi]ionãrii unor subansamble .

La începutul anilor ‘80 au început lucrãrile pentru ob]inerea robo]ilor din cea de-a

doua genera]ie, care sã de]inã o putere de calcul suficientã pentru a face posibilã modificarea comportãrii lor ca rãspuns la stimulii din mediul înconjurãtor. Astfel devenea posibilã executarea unor sarcini complexe, cum ar fi sudura cu arc sau opera]iunile de asamblare cu ajutorul calculatoarelor cu circuite integrate pe scarã foarte largã.

Spre sfâr}itul anilor ‘80 au apãrut robo]ii inteligen]i, care constituie cea de-a treia genera]ie de robo]i. Ace}tia au posibilitatea manipulãrii unor materiale flexibile, cum ar fi textilele }i cauciucul, caz în care software-ul este destul de sofisticat.

Pânã în zilele noastre domeniile în care se utilizeazã robo]ii sunt din ce în ce mai diversificate, apari]ia }i dezvoltare continuã a robo]ilor reprezentând o adevãratã revolu]ie industrialã .

Defini]ia robotului a apãrut în multe variante, în mod obi}nuit spunem cã un robot este un dispozitiv care, într-o anumitã mãsurã, imitã omul fie ca înfã]i}are, fie ca posibilitate de ac]iune. Una dintre primele defini]ii date robotului se referã în mod direct la acest aspect: mecanism automat care se poate substitui omului pentru a efectua unele opera]ii, fiind capabil sã-}i modifice singur ciclul de execu]ie prin detec]ie fotoelectricã, creier electronic, servomotor, etc.

Prin defini]ia “Asocia]iei Robo]ilor Industriali” din Japonia, un robot este un dispozitiv versatil }i flexibil, care oferã func]ii de deplasare similare celor ale membrelor umane sau ale cãrui func]ii de deplasare sunt comandate de senzori }i de mijloace proprii de recunoa}tere: acest mod de a defini robotul este destul de larg deoarece include telemanipularea, protezele , etc.

Defini]ia “Institutului American de Robo]i” este similarã cu cea a “Asocia]iei Robo]ilor din Marea Britanie”: robotul este un manipulator multifunc]ional, reprogramabil destinat deplasãrii materialelor, pieselor, sculelor sau altor dispozitive specializate prin mi}cãri variabile programate pentru a îndeplini diferite sarcini.

Robotul, echipat cu un dispozitiv de ac]ionare }i senzori, activeazã într-un spa]iu de lucru din lumea realã. Acest spa]iu de lucru este populat cu obiecte fizice }i se supune legilor naturii.

Dupã cum am precizat mai sus, domeniile de aplica]ie ale robo]ilor sunt tot mai diversificate. Acest lucru se datoreazã faptului cã în roboticã se implementeazã cele mai avansate cuno}tiin]e dintr-o serie de discipline diferite, cum ar fi: cinematica, dinamica, proiectarea servomecanismelo, puterea fluidelor, electronica digitalã }i analogicã, structura }i software-ul calculatoarelor, proiectarea circuitelor integrate, cibernetica, automatica, controlul numeric, ingineria sistemelor, instrumente senzoriale, recunoa}terea caracterelor, ingineria industrialã }i a fabrica]iei, fiziologia, economia etc.

O problemã de bazã pentru realizarea robo]ilor este de a oferi acestuia capacitatea de a-}i planifica propria mi}care, adicã de a decide automat ce mi}care trebuie sã execute pentru a ob]ine o deplasare specificatã printr-o aranjare spa]ialã ini]ialã }i una finalã a obiectelor fizice.

O defini]ie a robotului des utilizatã este:

Un robot este un dispozitiv mecanic sau o combina]ie de dispozitive echipate cu servomotoare }i senzori }i aflate sub controlul unui sistem de calcul.

El opereazã într-un spa]iu real populat ca obiecte fizice }i deci, trebuie sã fie capabil sã-}i planifice propriile mi}cãri pentru a realiza o sarcinã în func]ie de aranjamentul ini]ial }i final al obiectelor din spa]iul de lucru. În fond, robotul va trebui sã realizeze mi}carea doritã }i sã-}i activeze diferitele organe în acord cu obiectivul pe care îl are.

Totul depinde însã, atât de cuno}tiin]ele pe care robotul le are asupra con-figura]iei ini]iale a spa]iului de lucru (statice) cât }i de cele ob]inute pe parcursul evolu]iei sale (dinamice).

Crearea robo]ilor autonomi este o sarcinã majorã în Roboticã. Cu excep]ia anumitor domenii limitate, nu este real sã se anticipeze }i sã se descrie explicit toate mi}cãrile pe care robotul trebuie sã le execute pentru a realiza sarcina cerutã.

Chiar }i în cazurile când o asemenea descriere este posibilã, este util sã se incorporeze dispozitive de planificare automatã a mi}cãrilor în sistemele de programare off-line ale robotului. Aceasta permite utilizatorului sã specifice sarcini stabilind mai degrabã CE dore}te sã realizeze decât CUM sã o facã .

Deci robotul trebuie sã realizeze mi}carea doritã }i sã-}i activeze diferitele mecanisme în acord cu sarcina cerutã.

Planificarea mi}cãrilor unui robot prezintã o varietate nea}teptatã de aspecte dificile de calcul. De fapt, inteligen]a operativã pe care oamenii o utilizeazã incon}tient pentru a interac]iona cu mediul înconjurãtor, necesarã percep]iei }i planificãrii mi}cãrii, este foarte dificil de reprodus într-un program de calcul. Astfel, o problemã importantã în planificarea mi}cãrilor este complexitatea de calcul a algoritmilor .

A}a cum am precizat, planificarea mi}cãrii este o problemã în crearea robo]ilor autonomi, dar nu este singura. Aceasta interac]ioneazã cu alte probleme importante, ca de exemplu: analiza cinematicã directã }i inversã, modelul dinamic direct }i invers, generarea traiectoriilor, controlul mi}cãrii în timp real, sistemul senzorial }i planificarea sarcinii .

1.2. ASPECTE ALE PLANIFICÃRII MI{CÃRII

Se presupune cã sarcina efectorului final este sã construiascã un ansamblu format din mai multe piese. Sarcina este descrisã atât ca o mul]ime a modelelor pieselor, inclusiv goemetria lor }i eventual unele proprietã]i fizice, cât }i ca o secven]ã de rela]ii spa]iale.

Figura 1.1 ilustreazã aceasta pentru cazul unei sarcini simple. Secven]a determinã ordinea în care piesele trebuie asamblate. Fiecare rela]ie descrie pozi]ia unei piese noi în raport cu subansamblul curent.

Transformarea automatã a acestei secven]e într-o descriere a mi}cãrilor pe care trebuie sã le execute robotul este o aplica]ie posibilã a metodelor de planificare a mi}cãrilor cunoscute (descrierea structuratã a mi}cãrilor unui robot).

Pentru a asambla piesele conform rela]iilor de intrare, robotul trebuie sã prindã pe rând fiecare piesã, sã o transfere la subansamblul curent }i sã o pozi]ioneze corespunzãtor:

Prinderea unei piese necesitã selectarea pozi]iei }i orientãrii efectorului final al robotului (matricea de transformare generalã [G]) pe obiect }i generarea unei traiectorii spre aceastã pozi]ie }i orientare.

Pozi]ia de prindere trebuie sã fie accesibilã; de asemenea, aceasta trebuie sã fie stabilã }i destul de robustã pentru a rezista unor for]e exterioare. Uneori, o pozi]ie de prindere corespunzãtoare necesitã ca piesa care trebuie prinsã sã fie pusã jos }i prinsã din nou.

Transfererarea piesei necesitã calculul geometriei traiectoriei bra]ului robotului. Deoarece de obicei în astfel de situa]ii mi}carea se executã cu vitezã mare, traiectoria trebuie sã evite orice contact posibil cu obstacolele. Datoritã impreciziei în controlul mi}cãrii trebuie sã se garanteze un anumit joc minim pentru traiectoria generatã.

Pozi]ionarea piesei în subansamblu necesitã selectarea comenzilor de mi}care pentru relizarea unei sarcini cu precizie mare, într-un spa]iu supus unor restric]ii severe. În general, datoritã incertitudinii, nu este suficientã o singurã comandã mi}care. În schimb, este necesarã o strategie de mi}care care implicã mai multe comenzi }i care utilizeazã semnale de intrare generate de senzori.

În figura 1.1 se prezintã o sarcinã simplã de asamblare. Sarcina este definitã atãt prin modelele celor trei piese cât }i printr-o secven]ã a douã rela]ii primitive printre formele geometrice, }i anume: ” Fa]a A a obiectului 1se opune fe]ei B a obiectului 2 ”, ” Tija obiectului 3 se potrive}te cu alezajul obiectului 1 ”.

Fiecare rela]ie trebuie convertitã în continuare într-o reprezentare internã cantitativã, printr-o matrice de transformare omogenã care sã exprime transformãrile între pozi]ia }i orientarea sistemelor de referin]ã carteziene ata}ate pieselor.

Pentru a planifica aceste opera]ii este necesarã cunoa}terea aranjamentului ini]ial al spa]iului de lucru al robotului. De exemplu, planificarea unei traiectorii libere, fãrã coliziuni, necesitã cunoa}terea amplasãrii obstacolelor.

Dacã informa]ia completã este disponibilã (poate fi asiguratã de cãtre utilizator sau de un sistem CAD, sau este ob]inutã prin înregistrare), comenzile de mi}care pot fi generate complet }i apoi executate. În caz contrar, este necesarã împletirea planificãrii cu execu]ia.

Exemplul prezentat poate fi însã mai complicat. Astfel, pentru relizarea sarcinii sunt necesari mai mul]i robo]i, iar obstacolele din spa]iul de lucru sunt mobile. În acest caz este necesarã o anumitã coordonare a mi}cãrii.

Astfel, mi}cãrile sunt planificate ca func]ii de timp }i nu doar ca drumuri geometrice.

Sarcina unui robot poate include anumite criterii de optimizare, ca de exemplu minimizarea valorii totale a timpului necesar realizãrii sarcinii. În loc sã specifice o secven]ã de rela]ii spa]iale, descrierea intrãrii trebuie sã exprime doar aranjamentul spa]ial final al pieselor, lãsând planificatorul sã genereze secven]a corespunzãtoare.

Exemplul prezentat indicã faptul cã planificarea mi}cãrii unui robot nu constã într-o singurã }i bine delimitatã prolemã, ci într-o colec]ie de mai multe probleme care sunt mai mult sau mai pu]in una varianta celeilalte .

figura 1.1. Exemplul unei sarcini simple de asamblare

1.3. NOTA[II

Robotul se noteazã cu A. Dacã existã mia mul]i robo]i se noteazã cu Aj ;

Sistemul de referin]ã ata}at robotului se noteazã cu SA. Originea lui SA se noteazã cu OA ;

Spa]iul de lucru al robotului se noteazã cu W }i este modelat ca un spa]iu Euclidian RN, cu N=2 sau 3;

Sistemul de referin]ã ata}at spa]iului de lucru W se noteazã cu SW . Originea lui SW se noteazã cu OW ;

Obstacolele din W se noteazã cu Bj ;

Spa]iul configura]iilor unui robot se noteazã ce SC }i este o mul]ime de dimensiune m. Un element al lui SC, adicã o configura]ie, se noteazã cu C. Regiunea lui W ocupatã de robotul A în configura]ia C se noteazã cu A(C) ;

Configura]ia unui obstacol Bj din spa]iul de lucru W în spa]iul configura]iilor SC se nume}te C-obstacol }i se noteazã cu SCB. Reuniunea tuturor C-obstacolelor se nume}te regiunea C-obstacolelor }i se noteazã cu SCB;

Spa]iul liber în spa]iul configura]iilor SC se noteazã cu SCliber ;

Un drum se considerã ca o func]ie de un anumit parametru s care ia valori în intervalul [0,1]. Când parametrul este timpul t, func]ia se nume}te traiectorie }i se noteazã cu T.

1.4. PROBLEMA DE BAZÃ A

PLANIFICÃRII UNEI TRAIECTORII

Una dintre metodele de planificare se va analiza pe larg în capitolul 4. Pe mãsurã ce robotul, ca sistem mecanic, devine mai autonom, cre}te }i necesitatea dezvoltãrii planificãrii automate a traiectorilor sale.

Scopul definirii problemei de bazã a planificãrii mi}cãrilor este de a izola anumite probleme centrale }i de a le studia în profunzime înainte de a considera anumite dificultã]i adi]ionale.

Cea mai simplã problemã de planificare presupune cã robotul este singurul obiect în mi}care în spa]iul de lucru, care nu posedã proprietã]i dinamice evitând astfel problemele temporale. Se considerã de asemenea cã robotul nu intrã în contact cu obiectele înconjurãtoare, evitând astfel problemele legate de interac]iunea mecanicã dintre douã obiecte fizice. Aceste considera]ii transformã problema planificãrii “fizice” a mi}cãrii într-o problemã pur geometricã. Mai mult, se considerã cã robotul este singurul solid rigid a cãrui mi}care este limitatã doar de obstacole .

Cu aceste simplificãri, problema de bazã a planificãrii traiectoriilor unui robot se poate formula astfel :

Fie A un singur solid rigid (robotul) care se mi}cã într-un spa]iu Euclidian W, numit spa]iu de lucru, reprezentat prin RN, cu N=2 sau 3. Mi}carea lui A nu este limitatã de nici o restric]ie cinematicã ;

Fie B1, … ,Bq obiecte rigide fixe (obstacole) distribuite în pozi]ii bine determinate în spa]iul de lucru W ;

Cunoscând pozi]ia }i orientarea, la momentul ini]ial, ale robotului, precum }i pozi]ia finalã }i orientarea finalã pentru acesta în spa]iul de lucru W, sã se genereze o traiectorie T, care sã specifice o secven]ã continuã de pozi]ii }i orientãri ale lui A, pornind de la configura]ia (pozi]ia }i orientarea) ini]ialã, evitând contactul cu obstacolele Bj }i terminând în configura]ia (pozi]ia }i orientarea ) finalã ;

Dacã o astfel de traiectorie nu existã, trebuie sã se raporteze “eroare“.

Este evident cã, de}i problema de bazã a planificãrii este super simplificatã, ea este totu}i o problemã dificilã cu mai multe solu]ii }i cu extensii directe spre probleme mai complicate. În mod intuitiv, obiectul mobil (robotul) într-o astfel de problemã este denumit în literatura de specialitate “obiect liber zburãtor”.

Formularea problemei de bazã a planificãrii traiectoriilor se bazeazã pe anumite presupuneri care limiteazã semnificativ utilizarea solu]iilor. Este foarte dificil sã se reducã o problemã realã de roboticã la problema de bazã, sã se rezolve aceastã problemã }i sã

se adapteze solu}iile ob}nuite astfel încât sã se potriveascã condi]iilor problemei reale .

Extinderea problemei de bazã a planificãrii traiectoriilor presupune mai multe obiecte mi}cãtoare (obstacole în mi}care) în spa]iul de lucru W, respectiv mai mul]i robo]i care opereazã în acela}i spa]iu de lucru W. De asemenea, se considerã cã robo]ii sunt articula]i, adicã forma]i din mai multe elemente (obiecte rigide) conectate prin cuple cinematice (de transla]ie sau de rota]ie). O altã extindere a problemei de bazã constã în introducerea restric]iilor cinematice pentru mi}carea robo]ilor (restric]ii olonome }i neolonome).

Problema de bazã a planificãrii traiectoriei presupune cã robotul parcurge cu exactitate traiectoria generatã de planificator. De asemenea, se presupune cã, atât geometria robotului, cât }i geometria }i pozi]iile obstacolelor sunt cunoscute cu exactitate. În realitate, nici o problemã de planificare nu satisface aceste ipoteze. Mai mult, controlul robo]ilor }i modelele geometrice ale acestora nu sunt exacte. În condi]iile în care robotul nu de]ine informa]ii apriorice despre spa]iul de lucru, acesta trebuie sã se bazeze, în timpul execu]iei, pe sistemul sãu senzorial pentru înregistrarea informa]iilor necesare realizãrii sarcinii. Se impune astfel explorarea spa]iului de lucru }i rezolvarea problemei de planificare în prezen]a incertitudinilor .

1.5. RELA[II CU ALTE PROBLEME

Un planificator autonom de mi}care poate fi utilizat în diferite moduri. De exemplu, poate fi inclus în sistemul de programare off-line al robotului pentru a simplifica sarcina descrierii traiectoriilor acestuia. De asemenea, planificatorul de traiectorii poate fi o parte a unui sistem interactiv grafic de planificare a proceselor (planificarea prelucrãrii unei piese, asamblarea unui mecanism electromecanic, construc]ia unei instala]ii de putere) }i poate fi folosit pentru a verifica posibilitatea geometricã a opera]iilor planificate (gãurirea unui alezaj, asamblarea a douã piese, punerea pe verticalã a unei ]evi). Mai general, planificatorul poate fi utilizat pentru generarea automatã a scenelor grafice animate. În sfâr}it, dincolo de aceste aplica]ii, scopul final al planificãrii automate a mi}cãrii este acela de a crea robo]i autonomi.

1.5.1. GENERAREA MI{CÃRII

Un robot este conceput sã realizeze trei categorii de sarcini :

deplasãri pure ;

eforturi pure ;

sarcini compliante care combinã deplasãrile cu eforturile ;

În cazul unei sarcini de deplasare, robotul trebuie sã urmãreascã, dupã o lege de mi}care datã, o traiectorie definitã printr-o secven]ã de repere, numite impropriu puncte, ce corespund situãrilor succesive ale efectorului final. Aceste puncte pot fi:

programate prin învã]are ;

furnizate on-line de cãtre sistemul senzorial ;

rezultate dintr-o bazã de date a unui sistem CAD etc.

Problema generãrii traiectoriilor este de a calcula, pe baza datelor primite de la planificatorul de mi}care, mãrimile de comandã care asigurã trecerea robotului prin punctele stabilite.

Generarea mi}cãrii se poate face direct, în spa]iul coordonatelor cuplelor cinematice, sau în spa]iul opera]ional.

Cele douã moduri de generare de mi}care sunt prezentate în Fig.1.2 }i Fig. 1.3.

Generarea mi}cãrii în spa]iul coordonatelor cuplelor prezintã urmãtoarele avantaje :

mi}carea este minimã pentru fiecare cuplã cinematicã ;

necesitã mai pu]ine calcule on-line deoarece nu apeleazã transformatorul de coordonate (modelul geometric, respectiv analiza cinematicã inversã) ;

mi}carea nu este afectatã la trecerea prin configura]ii singulare ;

restric]iile de viteze }i de elemente mecanice (for]e }i momente) maxime sunt cunoscute ci precizie deoarece acestea corespund limitelor fizice ale servomotoarelor.

Dezavantajul acestei metode constã în faptul cã geometria traiectorie în spa]iul opera]ional nu poate fi impusã.

Între cele douã puncte impuse, robotul se deplaseazã într-o manierã imprevizibilã dar repetabilã. Existã astfel riscul coliziunii cu obstacolele din spa]iul de lucru, mai ales când robotul evolueazã într-un mediu aglomerat .

Generarea mi}cãrii în spa]iul opera]ional permite controlul geometriei traiectoriei robotului. Dezavantajele acestei metode sunt :

necesitã o analizã cinematicã inversã (transformarea în coordonatele cuplelor cinematice) în fiecare punct al traiectoriei ;

existã riscul de a e}ua atunci când traiectoria calculatã trece printr-o pozi]ie singularã ;

existã riscul de a e}ua ori de câte ori punctele traiectoriei generate nu sunt în spa]iul (volumul) accesibil robotului sau ori de câte ori traiectoria impune reconfigurarea structurii mecanice (a mecanismului generator de traiectorie);

limitele de viteze }i elemente mecanice din cuplele cinematice fiind definite în spa]iul coordonatelor cuplelor, restric]iile corespunzãtoare nu pot fi utilizabile direct în spa]iul sarcinii.

Alegerea uneia din cele douã metode depinde de aplica]ia consideratã.

Fiecare metodã are propriile limite inerente datoritã faptului cã restric]iile sunt exprimate fie în spa]iul coordonatelor cuplelor (viteze generalizate, for]e generalizate),fie în spa]iul opera]ional (precizie, obstacolelor).

1.5.2. INTERAC[IUNEA CU CONTROLUL

MI{CÃRII ÎN TIMP REAL

Un plan de mi}care specificã o mi}care ce trebuie executatã de robot. De exemplu, o traiectorie specificã o secven]ã continuã a configura]iilor pe care robotul trebuie sã le traverseze spre configura]ia finalã. Sarcina de bazã a controlerului în timp real este de a face robotul sã execute planul de mi}care, adicã sã urmãreascã drumul generat .

Presupunem pentru început cã planul de mi}care este o traiectorie liberã T. Sarcina controlerului este de a transforma traiectoria T în for]e generalizate (for]e sau momente, func]ie de natura servomotorului) care trebuie exercitate de servomotoarele robotului. De obicei, aceastã transformare este divizatã în douã etape. Prima etapã, numitã generarea traiectoriei constã în decizia asupra profilului de vitezã de-a lungul traiectoriei. Acestã etapã poate fi fãcutã înaintea execu]iei mi}cãrii. A doua etapã, numitã urmãrirea traiectoriei, constã în calculul for]elor generalizate care trebuie dezvoltate de cãtre servomotoare în fiecare moment pentru a ob]ine mi}carea doritã .

Etapa urmãririi traiectoriei poate folosi ecua]iile dinamice ale mi}cãrii robotului (modelul dinamic direct) pentru a calcula for]a generalizatã care trebuie sã fie dezvoltatã de fiecare servomotor .

Aceste ecua]ii exprimã faptul cã for]ele generalizate dezvoltate de cãtre motoarele de ac]ionare egaleazã efectul diferitelor for]e care ac]ioneazã asupra robotului în timpul mi}cãrii (for]e gravita]ionale, de frecare, iner]iale, centrifugale, Coriolis). Dacã ecua]iile dinamice utilizate de cãtre controler constituie un model dinamic perfect, nu este necesar un feedback. Totu}i, datoritã diferitelor perturba]ii, este necesarã înregistrarea informa]iilor prin intermediul sistemului senzorial pentru a determina abaterea între starea doritã }i starea realã a robotului (la momentul considerat). În timpul execu]iei mi}cãrii, controlerul calculeazã for]ele generalizate ale servomotoarelor care tind sã elimine aceastã abatere cu o frecven]ã de actualizare, de obicei, între 10 }i 100 Hz.

Fig. 1.2. Generarea mi}cãrii în spa]iul coordonatelor cuplelor

Fig. 1.3. Generarea mi}cãrii în spa]iul opera]ional

Figura 1.4 aratã rela]ia între planificatorul de traiectorie PT, generatorul de traiectorie GT, controlerul C, }i sistemul de ac]ionare a robotului. Traiectoria T produsã de planificatorul de traiectorii PT constituie mãrimea de intrare pentru generatorul de traiectorii GT. Acesta determinã parametrii configura]iei în func]ie de timp. Ie}irea din GT (configura]iile dorite Cd(t) ca func]ii de timp) constituie intrarea în controlerul C. Acesta calculeazã for]ele generalizate Q care trebuie dezvoltate de fiecare servomotor, pe baza abaterilor configura]iilor curente Cs, mãsurate de sistemul senzorial, fa]ã de configura]ia doritã Cd .

Arhitectura simplã prezentatã în Fig. 1.4. este una clasicã. Avantajul sãu este de a diviza problema deciderii unei mi}cãri în subprobleme clar definite. Aceasta poate conduce însã la mi}cãri destul de ineficiente. Chiar dacã controlerul încearcã sã minimizeze timpul de execu]ie, geometria traiectoriilor poate sã nu permitã controlerului sã exploateze complet posibilitã]ile servomotoarelor. Probabil, o concep]ie mai bunã este de a ]ine seama de ecua]iile dinamice ale robotului, împreunã cu limitele de saturare ale servomotoarelor, în timpul planificãrii mi}cãrii, pentru a genera traiectoriile care permit sã fie executate mi}cãri în timp (quasi)-optimal.

Pentru implementarea acestui concept au fost propuse mai multe tehnici. Aceste tehnici pot deveni deosebit de importante când robotul opereazã într-un spa]iu de lucru dinamic, printre obstacole mobile, când sarcina trebuie realizatã în limite de timp strânse (deoarece interac]ioneazã cu un proces extern) }i/sau când productivitatea robotului trebuie sã fie optimizatã (în cazul opera]iilor de prelucrare).

Traiectoriile sunt cele mai simple tipuri de planuri de mi}care. În prezen]a incertitudinii, planurile de mi}care pot cuprinde comenzi de mi}care bazate pe senzori, care sunt mai tolerante la erori decât comenzile de mi}care clasice controlate prin pozi]ie. Existen]a unor astfel de comenzi poate simplifica sarcina planificatorului de mi}care.

Fig. 1.4. Rela]ia între planificatorul de traiectorie PT, generatorul

de traiectorie GT, controlerul C }i sistemul de ac]ionare a robotului.

1.3.5. INTERAC[IUNEA CU SISTEMUL SENZORIAL

În problema de bazã a planificãrii mi}cãrii s-a presupus cã robotul de]ine informa]ii complete }i exacte despre mediul sãu înconjurãtor. În majoritatea situa]iilor însã, geometria spa]iului de lucru poate fi doar par]ial cunoscutã în momentul planificãrii. Rezolvarea problemei de planificare a mi}cãrii necesitã cunoa}terea modelului mediului înconjurãtor. Utilizarea sistemului senzorial are deci rolul de a ghida mi}cãrile }i de a supraveghea execu]ia lor. Dacã robotul nu de]ine suficiente informa]ii apriorice despre mediul sãu, acesta trebuie sã sã bazeze pe înregistrarea informa]iilor prin intermediul sistemului senzorial }i sã reac]ioneze la informa]iile preluate de senzori.

Spre exemplu, dacã robotul este echipat cu senzori de proximitate, pentru ghidarea mi}cãrii poate fi aplicatã on-line metoda câmpului poten]ial. Datele despre configura]ia finalã sunt utilizate pentru a crea un poten]ial atractiv, iar datele care provin de la senzorii de proximitate sunt utulizate pentru a crea poten]ialul repulsiv. Gradientul negativ al poten]ialului rezultant este considerat ca o for]ã externã sub ac]iunea cãreia robotul este comandat sã se deplaseze, retultând astfel direc]ia dupã care are loc generarea mi}cãrii.

Pentru cazul când nu se cunoa}te aprioric nuci o informa]ie despre mediul înconjurãtor al robotului, Lumelsky a propus o altã schemã reactivã. Se presupune cã spa]iul configura]iilor este bidimensional iar robotul este echipat cu un senzor de pozi]ie }i cu un senzor tactil, ceea ce îi permite acestuia sã urmãreascã conturul obstacolelor. Un algoritm propus de Lumelsky este prezentat în Fig.1.5.

Fig. 1.5. Algoritmul propus de Lumelsky

Deplasarea robotului între configura]ia ini]ialã }i cea finalã se realizeazã în linie dreaptã. Dacã robotul love}te un obstacol, atunci continuã mi}carea de-a lungul marginilor C-obstacolului corespunzãtor, într-o direc]ie predeterminatã, pânã când revine în punctul de coliziune.

În timpul acestei mi}cãri, robotul identificã punctul de intersec]ie al marginii C-obstacolului cu segmentul de dreaptã care une}te configura]ia ini]ialã cu cea finalã. Dupã ce a parcurs traiectoria în buclã închusã în jurul C-obstacolului, robotul se întoarce, parcurgând traiectoria cea mai scurtã, în punctul de intesec]ie identificat }i continuã mi}carea dupã segmantul de dreaptã.

Acest algoritm simplu garanteazã atingerea configura]iei finale ori de câte ori existã C-obstacole mãrginite de curbe închise simple de lungime finitã }i segmentul de dreaptã intersecteazã un numãr finit de C-obstacole.

Lungimea traiectoriei generate este mãrginitã superior de D+1.5 i pi, unde D este distan]a dintre configura]ia ini]ialã }i cea finalã, iar pi este perimetrul unui C-obstacol care intersecteazã discul de razã D cu centrul în configura]ia ini]ialã .

1.5.4. INTERAC[IUNEA CU PLANIFICAREA SARCINII

Scopul planificãrii mi}cãrii este specificat ca un aranjament spa]ial de obiecte fizice. Planificarea mi}cãrii contribuie la realizarea unei sarcini globale pentru un robot. Se considerã, de exemplu, un robot detector de defecte, a cãrui sarcinã este diagnoza defectelor pieselor unui echipament electromecanic }i repararea lor.

Detectarea unui anumit defect necesitã ca echipamentul în cauzã sã fie verificat }i operat, instrumentele de mãsurã sã fie conectate, iar probele sã fie aduse la locul de mãsurare }i apoi îndepãrtate. Fiecare asemenea opera]ie poate fi specificatã printr-un aranjament spa]ial al obiectelor, dar decizia asupra opera]iei care trebuie executatã }i execu]ia acesteia, adicã planificarea sarcinii, necesitã un ra]ionament de nivel superior, respectiv posibilitã]i de planificare superioare unui planificator de mi}care. Inteligen]a artificialã permite aplicarea mai multor metode pentru planificarea sarcinii unui robot. Aceste metode sunt utilizate pentru realizarea unui planificator ale cãrui ie}iri sunt secven]e de opera]ii, fiecare secven]ã specificând o nouã rela]ie spa]ialã scop cu planificatorul de mi}care .

În Fig.1.6. este prezentatã rela]ia între planificatorul sarcinii }i planificatorul mi}cãrii, pentru exemplul dat. Intrarea sarcinii este de fapt descrierea sarcini. Ie}irea constã în mul]imea opera]iilor care trebuie executate. Fiecare opera]ie poate fi specificatã prin aranjamentul final al obiectelor (pozi]ia finalã a probei). Planificatorul de mi}care genereazã traiectoriile necesare pentru atingerea pozi]iei finale .

Un planificator de sarcinã cu inteligen]ã artificialã exprimã în mod normal o sarcinã folosind construc]ii logice (de exemplu calculul predicatului logic), care con]in informa]ii sumare despre geometria obiectelor }i aranjamentul spa]ial al acestora .

Fig. 1.6. Rela]ia dintre planificatorul de sarcinã }i planificatorul de mi}care

1.6. SARCINILE UNUI ROBOT

Asigurarea îndeplinirii sarcinii unui robot se bazeazã pe trei ac]iuni majore:

stabilirea unei strategii de navigare ;

modelarea spa]iului de lucru ;

planificarea mi}cãrii în spa]iul de lucru respectiv .

Trebuie men]ionat însã, cã de multe ori ac]iunea de planificare a mi}cãrii în spa]iul de lucru include modelarea acestuia }i ca atare, cele douã ac]iuni se considerã formal una singurã.

1.6.1. STABILIREA STRATEGIEI DE NAVIGARE

Stabilirea unei strategii de navigare se referã la determinarea metodelor de deplasare a robotului în acord cu tipul sarcinii de executat.

Pot exista trei tipuri distincte de strategii de navigare:

1) Deplasarea dintr-un punct al spa]iului de lucru într-un alt punct al acestuia, ambele având pozi]ii bine precizate; strategia constã în a genera o func]ie de comandã astfel încât sã se atingã pozi]ia doritã.

2) Baleierea întregii zone, în cazul robo]ilor a cãror sarcinã este de a atinge întreaga suprafa]ã de lucru, în scopul efectuãrii unei anumite ac]iuni (spre exemplu, curã]irea pardoselei spa]iului de lucru). Navigarea se poate realiza prin douã strategii distincte:

2.1) deplasarea în spiralã, parcurgând por]iuni de traiectorii paralele cu traiectorii deja utilizate, pornind de la perimetrul exterior al spa]iului }i mergând din aproape în aproape spre centru ;

2.2) deplasarea în zig-zag, ce constã din parcurgerea zonei utile, de la dreapta la stânga }i de sus în jos, sau invers.

În cazul unui spa]iu de lucru complex prevãzut cu multe obstacole, metoda de navigare constã în a-l împãr]i în zone în care sã se poatã aplica una din strategiile de navigare.

1.6.2. MODELAREA SPA[IULUI DE LUCRU

Stabilirea unei hãr]i de navigare în spa]iul considerat se poate face fie in-dependent de orice ac]iune a robotului prin memorarea unei configura]ii date, care de regulã, reprezintã starea ini]ialã a spa]iului de lucru, fie în cursul executãrii sarcinii pe mãsurã ce robotul î}i descoperã propriul spa]iu de lucru.

Existând o sumã de cuno}tiin]e astfel acumulate se poate proceda la îm-pãr]irea spa]iului de lucru în celule independente care sã reprezinte zone acce-sibile respectiv interzise pentru robot. Aceastã opera]ie se nume}te modelarea spa]iului de lucru al robotului. Pe o astfel de modelare se bazeazã procesul propriu-zis de planificare a mi}cãrilor.

Pentru a realiza o modelare corectã a spa]iului de lucru, unul din prin-cipalele obiective care trebuie luate în considerare este ansamblul dimensiunilor robotului. Acestea vor modifica dimensiunea obstacolelor, rezultând a}a-numitele C-obstacole, dupã care robotul se poate trata ca un punct în mi}care.

Având reprezentate obstacolele în forma în care ele se iau în realitate în considerare, se poate proceda la împãr]irea spa]iului de lucru în zone accesibile }i zone interzise.

Vom prezenta pe scurt metodele cele mai frecvent utilizate :

METODA GRILEI OMOGENE

Este o metodã simplã de modelare, care constã în împãr]irea spa]iului de lucru în celule de dimensiuni identice, a cãror apartenen]ã la o zonã permisã sau interzisã este booleanã;

într-un spa]iu de lucru bidimensional, celulele sunt dreptunghiuri, iar într-un spa]iu de lucru tridimensional celulele sunt paralelipipede ;

precizia modelului depinde de dimensiunile celulelor;

capacitatea de memorie, necesarã pentru a înregistra ansamblul coordonatelor celulelor este mare.

METODA ARBORELUI

Aceastã metodã provine din cea precedentã, considerând în R2, celule dreptunghiulare de dimensiuni neegale (figura 1.7). Fiecare celulã, la rândul sãu, este descompusã în alte patru celule de dimensiuni egale.

Un arbore este o reprezentare particularã, în care fiecare celulã reprezintã un nod. Fiecare nod poate avea douã forme diferite:

nod de tip frunzã, care reprezintã o celulã care nu va mai fi descompusã. Acestei celule îi este asociatã o func]ie booleanã care define}te posibilitã]ile de acces;

nodul de tip creangã, cãruia îi succed alte patru noduri rezultate prin descompunerea celulei corespunzãtoare în alte patru celule egale .

Numãrul de celule în care se împarte fiecare celulã ini]ial consideratã poate fi diferit de patru. Spre exemplu, la spa]iul tridimensional, fiecare celulã paralelipipedicã se împarte în câte opt celule.

METODA GRILEI NEOMOGENE

Metoda presupune toate obstacolele de formã dreptunghiularã .

Dacã ele nu au aceastã formã se vor aproxima printr-un dreptunghi acoperitor. Existând n obstacole în spa]iul de lucru, acesta se împarte printr-o grilã rezultatã din prelungirea laturilor obstacolelor, ob]inându-se 2n+12n+1 dreptunghiuri sau, altfel spus, 2n+1 benzi orizontale }i 2n+1 benzi verticale.

Fig. 1.7. Metoda arborelui

Fiecare regiune este reprezentatã prin douã lan]uri binare de câte 2n+1 bi]i, dintre care unul reprezintã pozi]ia relativã x, iar celãlalt pozi]ia relativã y.

Un bit are valoarea “1” dacã celula este liberã }i “0” în caz contrar pentru primul lan]. Al doilea lan] con]ine “1” pentru pozi]ia verticalã a celulei .

Modelarea se realizeazã în }ase etape :

Etapa 1 : Reprezentarea fiecãrei benzi orizontale prin 2n+1 bi]i. Un bit are valoarea “1” dacã celula este liberã }i “0” în caz contrar. Un al doilea lan] con]ine un singur “1” care corespunde la pozi]ia verticalã a benzii.

Etapa 2 : Determinarea tuturor benzilor orizontale continue rezultate din separarea primului lan] în mai multe, fiecare avãnd o suitã continuã de “1”.

Etapa 3 : Gruparea lan]urilor generate în etapa a doua, astfel :

lan]urile sã fie regrupate în raport cu benzile care le-au generat ;

grupele sã fie ordonate în raport cu pozi]ia verticalã a benzilor generatoare .

Etapa 4 : Generarea unei noi liste pornind de la cea precedentã conform unor reguli.

Etapa 5 : Se repetã etapa 4 dacã noua listã are douã sau mai multe grupe ;

Etapa 6 : Se stabilesc lan]urile neeliminate de pe liste care reprezintã o zonã fãrã obstacole.

Fig. 1.8. Etapele modelãrii

Fig. 1.9. Graful metodei grilei

neomogene

METODA POLIGOANELOR CONVEXE

Metoda constã în descompunerea spa]iului liber bidimensional în celule poligonale. Descompunerea în celule poligonale constã în împãr]irea spa]iului liber în poligoane convexe, cele mai mari posibile, ale cãror laturi alãturate sã formeze un unghi mai mic decât 1800. Trecerea de la o celulã la alta adiacentã se face prin mijlocul segmentelor ce delimiteazã cele douã celule. Ansamblul celulelor este reprezentat sub formã de graf, ale cãrui noduri reprezintã celule celule }i ale cãrui legãturi reprezintã trecerile posibile între celule. Gruparea celulelor în familii permite realizarea unui graf redus care trebuie realizat astfel încât sã permitã accesul de la un grup la altul.

Fig. 1.10. Metoda poligoanelor convexe

Fig. 1.11. Graful ob]inut prin metoda poligoanelor

convexe

Modelarea prin hipergraf este o altã metodã de reprezentare a spa]iului descompus în poligoane convexe. Împãr]irea este realizatã prelungind laturile obstacolelor. Rezultã trei tipuri de regiuni:

obstacole ;

regiunile libere ;

zonele rezultate din suprapunerea regiunilor libere .

Nodurile }i legãturile grafului asociat reprezintã laturile obstacolelor }i respectiv, zonele lor adiacente. Se delimiteazã în graf ansamblul laturilor obsatcolelor care sunt limitele unei regiuni libere. Graful cu aceste domenii delimitate constituie un hipergraf .

Deducerea drumului de parcurs se realizeazã prin analizarea zonelor de suprapunere a regiunilor libere.

METODA PUNCTELOR DE TRECERE

Modelarea prin puncte de trecere considerã vârfurile obstacolelor modificate (C-obstacolelor) legându-se între ele de o astfel de manierã încât sã nu se producã coliziuni. Lista punctelor de trecere astfel determinate reprezintã succesiunea de pozi]ii posibile ale robotului mobil în spa]iul respectiv.

Fig. 1.12. Metoda punctelor de trecere

CAPITOLUL 2

METODE DE PLANIFICARE

Problema planificãrii traiectorilor în prezen]a obstacolelor poate fi enun]atã astfel:

fiind dat un spa]iu de lucru populat cu obstacole cunoscute prin frontierele lor, respectiv cu obiecte mobile, trebuie sã se determine o traiectorie fãrã coliziuni cu obstacolele, aducând obiectele mobile din configura]ia ini]ialã în cea finalã.

Problema poate fi abordatã în douã moduri (global sau local), de unde rezultã douã tipuri de metode de planificare: globale }i locale.

Aplicarea unei metode globale necesitã cunoa}terea completã “apriori” a spa]iului de lucru, modelarea corespunzãtoare a spa]iului liber, cercetarea tuturor traiectoriilor posibile }i selectarea unei anumite traiectorii corespunzãtoare unui criteriu de cost minim. O astfel de metodã garanteazã existen]a sau inexisten]a unei solu]ii. De asemenea, metodele globale de planificare se pot adapta u}or la programarea off-line.

Aplicarea unei metode locale necesitã cunoa}terea par]ialã a spa]iului de lucru. O astfel de metodã nu garanteazã atingerea configura]iei finale, dar reprezintã avantajul unei bune adaptãri în timp real.

În ambele cazuri, rezolvarea problemei de planificare presupune rezolvarea unor probleme de naturã geometricã (geometrie purã) sau de geometrie combinatã cu cinematicã }i/sau dinamicã. În astfel de situa]ii se utilizeazã cu precãdere rezultatele geometriei algoritmice.

Pentru un robot la un post de lucru fix, mobilele pentru care trebuie sã se determine traiectoriile fãrã coliziuni sunt constrânse între ele de anumite legãturi. Astfel, o problemã de planificare este deci “apriori” complexã. Totu}i, prin transformãri adecvate, operate asupra obstacolelor, o problemã de planificare poate fi redusã la o problemã de “navigare” a unui robot punctiform, considerat ca un mobil liber care evolueazã printre obstacolele transformate.

Astfel, planificarea traiectoriilor unui robot comportã, în general, douã etape :

transformarea obstacolelor (determinarea C-obstacolelor) astfel încât robotul poate fi considerat ca un punct material ;

cercetarea unei traiectorii, fãrã coliziuni, pentru acest punct .

În cadrul unui sistem CAD/CAM dotat cu un algoritm de cercetare a spa]iului liber se poate aplica planificarea traiectoriilor fãrã coliziuni, în mod interactiv cu operatorul, prin vizualizarea acestui spa]iu.

În general, aplicarea unei metode de planificare trebuie sã satisfacã anumite restric]ii, ca de exemplu: drumul cel mai sigur, drumul cel mai scurt, etc.

2.1. METODA HÃR[II DRUMURILOR

Metoda hãr]ii drumurilor se bazeazã pe ideea captãrii conexitã]ii spa]iului liber al robotului într-o re]ea de curbe unidimensionale, numitã “harta drumurilor” HD. Odatã construitã, aceasta este utilizatã ca o bancã de traiectorii standard dintre care se alege aceea ce une}te configura]ia ini]ialã cu cea finalã. Utilizând diferite principii constructive se ob]in diferite tipuri de hãr]i ca: graful vizibilitã]ii, diagrama Voronoi, re]eaua drumurilor libere, siluetele etc.

Metoda grafului vizibilitã]ii se aplicã cu precãdere la spa]ii ale configura]iilor bidimensionale populate cu C-obstacole poligonale. Harta drumurilor este un graf numit graful vizibilitã]ii, care este construit prin conectarea tuturor perechilor de vârfuri din frontiera lui SCliber prin segmente de dreaptã, dacã aceste segmente nu traverseazã interiorul unui C-obstacol.

Metoda retractãrii constã în construirea unei hãr]i a drumurilor prin definirea unei aplica]ii continue (numitã retractare) a lui SCliber pe HD. Când spa]iul configura]iilor este tridimensional,metoda conduce la retractarea lui SCliber pe diagrama sa Voronoi. Aceasta este definitã ca submul]ime unidimensionalã a lui SCliber ce maximizeazã intervalele spa]iale libere dintre robot }i obstacole.

Metoda drumului liber este înruditã cu metoda retractãrii,punctul de referin]ã al robotului fiind constrâns sã rãmânã pe o re]ea de segmente de dreaptã reminiscente dintr-o diagramã Voronoi.

Metoda siluetelor constã din schi]area unei siluete a spa]iului liber al robotului când acesta este privit dintr-un punct situat la infinit }i adãugând câteva segmente de curbã ob]inute prin unirea unor puncte critice ale siluetei cu alte por]iuni de curbã ale acesteia. Silueta }i curbele de legãturã formeazã harta drumurilor HD, care va fi cercetatã în vederea gãsirii unei traiectorii.

Metodele enumerate sunt deosebit de eficace în probleme de planificare din spa]iul configura]iilor de dimensiuni mici (2 sau 3).

2.1.1. DRUMUL CEL MAI SIGUR.

DIAGRAMA VORONOI.

Se presupune pentru început cã obstacolele sunt modelate prin puncte. Trebuie sã se determine o traiectorie care sã permitã mobilului punctiform sã se deplaseze printre obstacole astfel încât sã se afle în tot timpul mi}cãrii la distan]ã maximã fa]ã de obstacole. Traiectoria ob]inutã este formatã din segmentele diagramei Voronoi a punctelor obstacolelor (Figura 2.1).

Fie o mul]ime finitã de n puncte X={X1,X2…,Xn} în Rp unde p este dimensiunea spa]iului. Diagrame Voronoi (DV) este un “caroiaj” în Rp, format din celulele Ki, i=1,…,n definite prin:

Ki ={X Rp d(X’,Xi) d(X’,Xj), j i}

unde d(X’,Xi) este distan]a euclidianã între punctele X’ }i Xi .

În figura 2.1 este prezentatã diagrama Voronoi (DV) pentru un spa]iu bidimensional. Frontierele celulelor sunt por]iunile de mediatoare ale diferitelor segmente XiXj. Se poate arãta cã în R2 diagrama Voronoi nu are mai mult de 2n-5 vârfuri, respectiv 3n-6 laturi.

Vârfurile diagramei Voronoi sunt centrele tuturor cercurilor construite determinate de trei puncte mi echidistante }i care nu con]in nici un alt punct. În vecinãtatea obstacolelor, robotul se poate deplasa pe laturile (DV). Acestea reprezintã locul cel mai sigur unde robotul evitã coliziunile.

Pentru a planifica traiectoria, trebuie rezolvate douã probleme:

elaborarea unor algoritmi eficace pentru cercetarea (DV) ;

alegerea, dintre toate drumurile posibile, a drumului minim.

Diagrama Voronoi generalizatã (DVG)

Se pote generaliza diagrama Voronoi la un ansamblu de C-obstacole care nu mai sunt modelate ca puncte. ”Caroiajul” format din celule Ki, i=1,…,n, definite în aceea}i manierã :

Ki ={X Rp d(X’,SCBi) d(X’,SCBj), j i}

unde d(X’,SCBi) este distan]a euclidianã de la punctul X’ la C-obstacolul SCBi, determinã (DVG).

Într-un spa]iu de lucru bidimensional, când C-obstacolele sunt modelate ca poligoane, (DVG) este formatã din segmente de dreaptã }i parabole.

Astfel, un punct X’, aflat la frontiera între douã celule poate fi:

la egalã distan]ã de douã vârfuri de C-obstacol. Locul lui X’ este local un segment de dreaptã (mediatoarea segmentului ce une}te cele douã vârfuri) ;

la egalã distan]ã de vârful unui C-obstacol }i latura altui C-obstacol. Locul lui X’ este local o parabolã (vârful este focarul, iar latura este axa parabolei);

la egalã distan]ã de douã laturi de C-obstacol. Locul lui X’ este local un segment de dreaptã (bisectoarea unghiului format de cele douã laturi) .

Fig. 2.1. Diagrama Voronoi pentru un spa]iu de lucru bidimensional

2.1.2. METODA GRAFULUI VIZIBILITÃ[II (GV)

Se considerã un obiect poligonal A ce translateazã cu orientare fixã în spa]iul de lucru bidimensional W=R2. În acest caz, spa]iul configura]iilor lui A este SC=R2, iar regiunea SCB a C-obstacolelor este o regiune poligonalã a lui R2. Spa]iul SCliber este complementara lui SCB pe SC.

Metoda grafului vizibilitã]ii necesitã cunoa}terea tuturor C-obstacolelor a priori, astfel încât ea poate fi calificatã ca o metodã globalã.

Principiul metodei constã în construirea unei traiectorii semilibere ca o linie poligonalã ce conecteazã configura]ia ini]ialã Cini]ial de configura]ia finalã Cfinal, trecând prin vârfuri ale lui SCB.

Dacã exitã o astfel de traiectorie, atunci cu siguran]ã va exista o traiectorie semiliberã T de lungime euclidianã minimã între aceste douã configura]ii. Pentru ca traiectoria T sã fie cea mai scurtã, ea trebuie sã fie formatã din subtraiectorii care sã fie cele mai scurte posibile între douã configura]ii date. Aceasta înseamnã cã, în orice configura]ie C, traversatã de T, dacã C nu este un vârf al lui SCB, T trebuie sã aibã curbura nulã. Deci, vârfurile traiectoriei poligonale T sunt vârfuri ale lui SCB.

Este astfel evident cã pentru a gãsi o traiectorie semiliberã între oricare douã configura]ii este suficient pentru un planificator sã considere liniile poligonale ce unesc vârfurile lui SCB. Aceastã mul]ime de linii poligonale, numitã graf al vizibilitã]ii, con]ine cu siguran]ã }i cea mai scurtã traiectorie (figura 2.2).

Figura ilustreazã graful vizibilitã]ii în cazul unui spa]iu al configura]iilor simplu, în care SCB constã din trei regiuni separate. Legãturile grafului includ }i muchiile lui SCB. Traiectoria cea mai scurtã între Cini]ial }i Cfinal este reprezentatã cu linie îngro}atã.

Din cele precizate rezultã cã :

Graful vizibilitã]ii este graful neorientat (GV), definit astfel:

nodurile lui (GV) sunt Cini]ial, Cfinal }i vârfurile lui SCB;

douã noduri ale lui (GV) sunt conectate printr-o legãturã, dacã }i numai dacã, fie segmentul de dreaptã ce le une}te este o muchie a lui SCB, fie se aflã în întregime în SCliber, condi]ie de la care sunt exceptate cele douã capete.

Algoritmul metodei

Algoritmul metodei grafului vizibilitã]ii con]ine în mod firesc urmãtoarele etape :

se construie}te graful vizibilitã]ii (GV);

se cerceteazã (GV) pentru a gãsi o traiectorie între configura]ia ini]ialã }i cea finalã ;

dacã se gãse}te o traiectorie, se comunicã aceasta, iar în caz contrar se comunicã “e}ec”.

Un algoritm primitiv de construire a lui (GV) ia în considerare toate perechile de puncte (X,X’), unde X }i X’ sunt fie Cini]ial }i Cfinal, fie vârfurile lui SCB.

Dacã X }I X’ sunt capetele aceleia}i muchii a lui SCB, atunci nodurile corespunzãtoare sunt conectate printr-o legãturã în (GV).

În caz contrar, se calculeazã intersec]ia dreptei ce trece prin X }i X’ cu SCB ; nodurile corespunzãtoare lui X }i X’ sunt conectate printr-o legãturã dacã }i numai dacã nici o intersec]ie nu se aflã în segmentul deschis ce une}te cele douã puncte .

Algoritmul poate fi îmbunãtã]it astfel:

pentru fiecare punct X din (GV) se calculeazã orientarea ai[0,2] a fiecãrei semidrepte ce pleacã din X }i trece prin alt punct Xi al lui (GV) }i se sorteazã orientãrile ai;

se rote}te o semidreaptã ce pleacã din X de la orientarea 0 la orientarea 2, oprinduse la fiecare orientare ai ; la fiecare oprire se reînnoie}te intersec]ia semidreptei cu SCB, se pãstreazã urma punctului în intersec]ia cea mai apropiatã de X }i se verificã dacã segmentul ce conecteazã X }i Xi intersecteazã SCB.

Fig. 2.2. Construc]ia grafului vizibilitã]ii

2.1.3. METODA RETRACTÃRII

Principiul metodei retractãrii:

Principiul metodei retractãrii constã în definirea unei aplica]ii continue a lui SCliber pe o re]ea de curbe unidimensionale HD în SCliber.

No]iunea de retractare este clasicã în topologie. Astfel:

Dacã este un spa]iu topologic }i o submul]ime a sa, aplica]ia surjectivã se nume}te retractare de la la dacã }i numai dacã este continuã, iar restric]ia sa la este aplica]ia identitate.

Dacã este o retractare a spa]iului topologic la , ea pãstreazã conexitatea lui dacã }i numai dacã pentru orice x , x }i (x) apar]in aceleia}i componente conexe a lui .

Se considerã o retractare a lui SCliber ce pãstreazã conexitatea definitã prin aplica]ia :SCliber HD, unde HD SCliber reprezintã o re]ea de curbe unidimensionale.

Între douã configura]ii libere Cini]ial }i Cfinal existã o traiectorie liberã dacã }i numai dacã existã o curbã în HD între (Cini]ial) }i (Cfinal).

Fie T:[0,1] SCliber o traiectorie liberã între Cini]ial }i Cfinal. Se aplicã lui T.

Datoritã continuitã]ii lui se ob]ine o traiectorie liberã T:[0,1] HD între (Cini]ial) }i (Cfinal).

Invers, dacã existã o traiectorie în HD între (Cini]ial) }i (Cfinal), atunci Cini]ial }i Cfinal sunt conectate printr-o traiectorie liberã care este produsul a trei traiectorii:

o traiectorie liberã de la Cini]ial la (Cini]ial) ;

o traiectorie de la (Cini]ial) la (Cfinal) în HD;

o traiectorie liberã de la (Cfinal) la Cfinal .

Prima }i a treia din aceste traiectorii existã deoarece conservã conexitatea lui SCliber.

Eficien]a metodei retractãrii este deci determinatã de alegerea aplica]iei .

Metoda de planificare a traiectoriilor bazatã pe retractarea utilizeazã diagrama Voronoi ca hartã a drumurilor. Ea se desfã}oarã dupã cum urmeazã:

construie}te diagrama Voronoi ;

calculeazã punctele (Cini]ial) }i (Cfinal) }i apoi identificã arcele din diagramã ce con]in aceste puncte ;

cerceteazã diagrama Voronoi pentru a gãsi o secven]ã de arce A1,…,Ap, astfel încât (Cini]ial) A1, (Cfinal) Ap }i pentru i1,p-1, arcele Ai }i Ai+1 sã aibã un capãt comun;

dacã existã o secven]ã de arce între (Cini]ial) }i (Cfinal), atunci cercetarea se terminã cu succes; ^n caz contrar se declar@ “e}ec”.

Fig. 2.3. Algoritmul metodei retract@rii

2.1.4. METODA DRUMULUI LIBER

Principiul metodei:

Metoda drumului liber se aplicã obiectelor poligonale care se mi}cã (transla]ie }i rota]ie) într-un spa]iu de lucru poligonal (bidimensional).

Aceastã metodã constã din extragerea unor figuri geometrice, denumite drumuri libere, din spa]iul de lucru, conectarea lor într-un graf numit re]eaua drumurilor libere }i cercetarea acestui graf.

Un drum liber este un cilindru generalizat, bidimensional, liniar, drept, a cãrui axã este completatã cu descrierea tuturor orientãrilor libere ale robotului A când originea sistemului de referin]ã ata}at OA se deplaseazã de-a lungul sãu.

Un cilindru generalizat poate fi generat de o pereche de laturi E1,E2 ce corespund la douã obstacole B1 }i B2.

Figura 2.4 ilustreazã geometria unui drum liber .

Fig. 2.4. Geometria unui drum liber

Robotul A se poate deplasa dea lungul unui drum liber, sau dea lungul unei por]iuni a acestuia, dacã existã o mul]ime conexã de orientãri libere ale lui A când originea OA se deplaseazã de-a lungul axei cilindrului generalizat corespunzãtor.

În plus, ori de câte ori se intersecteazã douã axe, A se poate transfera de la un drum liber la altul dacã intervalele de orientãri libere ale lui A (când OA se deplaseazã de-a lungul ambelor axe) au o intersec]ie nenulã în punctul de concuren]ã a axelor. Re]eaua drumurilor liber este o reprezentare a mi}cãrilor posibile ale lui A de-a lungul axelor }i între acestea.

Figura 2.5 indicã patru drumuri libere într-un spa]iu de lucru mãrginit.

Se men]ioneazã cã, în cazul prezentat în figura 2.5. se mai pot construi încã alte drumuri libere, deci descompunerea nu este unicã.

Fig.2.5. Descompunerea spa]iului de lucru în drumuri

libere

2.2. METODA DESCOMPUNERII CELULARE

Aceastã metodã constã în decsompunerea spa]iului liber al robotului în regiuni simple, numite celule, astfel încât sã poatã fi generatã cu u}urin]ã o traiectorie între oricare douã configura]ii. Se construie}te }i se verificã graful de conexiune asociat descompunerii, graf care reprezintã rela]iile de adiacen]ã dintre celule. Nodurile grafului sunt extrase din spa]iul liber, iar douã noduri sunt conectate dacã }i numai dacã cele douã celule corespunzãtoare sunt adiacente. Rezultatul verificãrii este o secven]ã de celule numitã canal. Se poate compune o traiectorie liberã din aceste secven]e .

Metoda descompunerii celulare se realizeazã în douã moduri :

descompunere celularã exactã ;

descompunere celularã aproximativã ;

2.2.1. METODA DESCOMPUNERII CELULARE

EXACTE

În cadrul acestei metode descompunerea este realizatã în a}a fel încât celulele sã nu se suprapunã, iar reuniunea lor sã fie SCliber. Celulele generate trebuie sã aibe urmãtoarele caracteristici:

geometria fiecãrei celule trebuie sã fie suficient de simplã, pentru a face posibilã calcularea unei traiectorii între oricare douã configura]ii din celulã ;

testarea adiacen]ei a douã celule oarecare }i gãsirea unei traiectorii ce traverseazã por]iunea de frontierã corespunzãtoare la douã celule adiacente sã se realizeze dificil .

Algoritmul metodei constã din urmãtorii pa}i:

descompunerea spa]iului configura]iilor în poligoane convexe (celule) }i etichetarea fiecãrei celule cu un numãr întreg diferit ;

construirea grafului de conexiune G ;

cercetarea grafului G în vederea ob]inerii succesiunii de celule adiacente, adicã de canale, într qinit }i qfinal ;

dacã sa determinat un canal corespuntãtor se re]ine secven]a respectivã de celule adiacente, iar în caz contrar se declarã eroare .

“Metoda descompunerii celulare exacte“ constituie practic tema proiectului, astfel încât vom descrie pe larg aceastã metodã în capitolul 3 iar programul soft care planificã mi}carea unui robot prin aceastã metodã se va descrie în capitolul 4 .

2.2.2. METODA DESCOMPUNERII CELULARE

APROXIMATIVE

Metoda descompunerii celulare aproximative produce celule care au forme predefinite (de exemplu: dreptunghiuri), }i a cãror reuniune este strict inclusã în spa]iul liber. Frontiera unei celule nu caracterizeazã nici un fel de discontinuitate }i nu are un sens fizic.

Spa]iul liber are ca frontierã externã un dreptunghi R }i ca frontiere interioare ni}te poligoane, care de fapt sunt obstacolele. Se descompune în mod recursiv dreptunghiul R, dupã fiecare descompunere ob]inându-se patru dreptunghiuri identice. Dacã interiorul unui dreptunghi este situat în totalitate în spa]iul liber sau în regiunea C-obstacolelor, atunci acel dreptunghi nu se va descompune în continuare. În caz contrar, el va fi descompus recursiv în patru dreptunghiuri, pânã se atinge o rezolu]ie predefinitã.

La anumite nivele de rezolu]ie sunt folosite în continuare pentru construirea grafului de conexiuni doar celulele care se aflã în întregime în spa]iul liber. În caz contrar se poate întâmpla ca rezolu]ia descompunerii sã fie insuficientã sau sã nu existe o traiectorie liberã între configura]ia ini]ialã }i cea finalã.

Prevãzând o înzestrare atât cu tehnici adecvate de cãutare, cât }i cu tehnici de calcul numeric exacte, metoda descompunerii celulare exacte, este completã, ea garantând gãsirea unei traiectorii libere, oricând aceasta existã, iar în caz contrar se returneazã eroare. Metodele aproximative nu sunt complete, dar, pentru majoritatea dintre ele, precizia aproximãrii poate fi reglatã }i fãcutã mai micã (în func]ie de timpul de rulare), astfel încât se poate spune despre aceste metode cã sunt cu “rezolu]ie completã “. Pe de altã parte, exceptând cazurile foarte simple, la metodele exacte apar implica]ii matematice mai mari decât la metodele aproximative, deci acestea din urmã sunt mai u}or de implementat .

Descriere generalã :

În continuare “un patrulater“ este descris ca o regiune închisã, având urmãtoarea formã în spa]iul cartezian Rn :

{(x1,…,xn) x1 [x1’,x1”],…,xn[xn’,xn”]}.

Diferen]a xi”-xi’, i=1,…,n, necesitã dimensiunea patrulaterului. Aceastã dimensiune nu poate fi zero.

Sã considerãm robotul A în spa]iul configura]iilor C din RN sau RN SO(N), cu N=2 sau 3. Dacã C = RN, configura]ia q se reprezintã prin coordonatele lui A relativ la originea OA din cadrul FW ata}at spa]iului de lucru.

Dacã C = R2 SO(2) = R2 S1, o configura]ie este reprezentatã prin (x,y,), unde este ungiul dintre axele x ale lui FW }i FA (cadrul fiind ata}at lui A). Dacã C = R3 SO(3), configura]ia este reprezentatã prin (x, y, z, , , ), unde , }i sunt unghiurile Euler.

Putem considera practic cã un set posibil al pozi]iilor lui A este con]inut în patrulaterul D RN. Putem reprezenta Cliber prin:

Cliber = R CB ,

unde CB este regiunea C-obstacolelor }i :

R = int (D), dacã C = RN ,

R = int (D) [0, 2], dacã C =R2 S1 ,

R = int (D) [0, 2] [0, ] [0, 2], dacã C = R3 SO(3) .

Fie = cl(R). Acesta este un patrulater din Rm, unde m este dimensiunea spa]iului configura]iilor C .

Descompunerea rectangularã P a lui este o colec]ie finitã de patrulatere {ki}i=1,…,r astfel încât :

este egalã cu reuniunea tuturor ki, adicã:

Interioarele lui ki nu se intersecteazã, adicã:

i1, i2 [1,r], i1 i2 : int(k1) int (k2) = .

Astfel patrulaterul ki reprezintã o celulã a descompunerii P a lui .

Douã celule sunt adiacente dacã }i numai dacã intersec]ia acestora este o mul]ime diferitã de 0 din Rm-1. Aceastã intersec]ie este compusã pe baza urmãtoarei discu]ii:

dacã C = R2 S1 , (x,y,2) este identificat prin (x,y,0) ,

dacã C = R3 SO(3), (x,y,z,2,,), (x,y,z,,,) }i (x,y,z,,,2) sunt identificate prin (x,y,z,0,,), (x,y,z,,0,2-) }i (x,y,z,,,0) .

Celulele ki sunt clasificate astfel:

GOALE, dacã }i numai dacã interiorul acesteia nu intersecteazã regiunea C-obstacolelor, adicã int( ki ) CB = .

PLINE, dacã }i numai dacã ki este con]inut în interiorul regiunii C-obstacolelor, adicã ki CB .

MIXTE, în rest.

Graful de conexiune asociat cu descompunerea P a lui este un graf neorientat G definitã în continuare:

nodurile grafului sunt celule GOALE }i MIXTE ale lui P ;

douã noduri ale lui G sunt conectate dacã }i numai dacã celulelele corespondente sunt adiacente .

Într-o descompunere rectangularã P a lui , un canal este definit ca o secven]ã (kj)j=1,…,p cu celule GOALE }isau cu celule MIXTE astfel încât douã celule consecutive kj }i kj+1, j [1, p1], sunt adiacente.

Un canal ce con]ine doar celule GOALE este denumitã canal E (vezi figura 2.6).

Un canal ce con]ine cel pu]in o celulã MIXTÃ este denumitã canal M.

Dacã (kj)j=1,…,p este un canal-E, atunci orice cale ce conecteazã o configura]ie din k1 configura]ie din kp }i apar]ine:

este o cale liberã .

Dacã (kj)j=1,…,p este un canal-M, exisã o cale liberã ce conecteazã douã configura]ii din k1 }i kp, dar aceasta nu este o garan]ie pentru cazul de fa]ã.

Fig. 2.6. Un canal este o secven]ã de celule adiacente

care sunt fie GOALE, fie MIXTE. Dacã toate celulele

sunt GOALE canalul se nume}te canal-E, altfel spu-

nem cã avem un canal-M. Figura prezintã un canal E

într-un spa]iu bidimensional.Aceasta conecteazã douã

celule ce con]in configura]ia ini]ialã qinit }i configura]ia

finalã qfinal .

Sã considerãm qinitCliber configura]ia ini]ialã }i qfinalCliber configura]ia finalã, problema constând în a genera un canal-E (kj)j=1,…,p, astfel încât qinitk1 }i qfinalkp.

Dacã astfel sa generat un canal, fie j =kj kj+1, j=1,…,p1 intersec]ia marginilor celor douã celule succesive.

O cale liberã ce une}te configura]ia ini]ialã cu configura]ia finalã pote fi extrasã din canalul-E prin legarea qinitial cu qfinal printr-o linie poligonalã care are vârful Qj int(j). Pentru fiecare j, astfel încât j-1 }i j au câteva submul]imi din kj,un punct adi]ional Qj-1’ situat în interiorul lui kj poate include în cale vârful, dar în acest caz nu se poate garanta cã, segmentul de linie Qj-1Qj este inclus în spa]iul liber al robotului (vezi figura 2.7).

Construc]ia unei cãi ierarhice constã în generarea unui canal-E printr-o descompunere rectangularã a lui }i cãutarea grafului de conexiune asociat.

Fie Pi, i=1,2,…, descompuneri succesive ale lui . O descompunere Pi se ob]ine dintr-o descompunere anterioarã Pi-1 (cu P0 ={}), descompunând una sau toate celulele mixte, celelalte celule rãmânând neschimbate.

Un algoritm simplu este prezentat mai jos:

Determinã o descompunere rectangularã Pi a lui . Pune i la 1.

Cautã graful de conexiune Gi asociat descompunerii Pi pentru un canal ce conecteazã celula ce con]ine qini]ial cu celula ce con]ine qfinal. Dacã rezultatul cãutãrii este un canal-E, se considerã succes.

Dacã acesta este un canal-M, se trece la urmãtorul pas. Altfel, se returneazã eroare.

Fie Hi canalul-M generat la pasul 2. Atribuim lui Pi+1 valoarea Pi. Pentru fiecare celulã MIXTÃ k din Hi, se determinã o descompunere rectangularã P k a lui k }i se seteazã Pi+1 la [Pi+1 {k}] P k. Setãm i la valoarea i+1. Revenim la pasul 2.

Fig. 2.7. O cale extrasã din canalul-E ce une}te

qini]ial cu qfinal printro linie poligonalã.

Descompunerea 2m -Arborescentã

O descompunere 2m-arborescentã a lui este un arbore de gradul 2m. Fiecare nod al arborelui este o celulã rectangularã, având etichetele GOL, PLIN, sau MIXT. Rãdãcina arborelui este .

Dacã m =2, arborele se nume}te cuadric, iar dacã m=3 arborele este cunoscut sub numele arbore-octic.

Figura 2.8.prezintã o descompunere cuadricã într-un spa]iu bidimensional al configura]iilor }i deseneazã o por]iune din graful cuadric.

Figura 2.9.prezintã cazul arborelui-octic.

Fig. 2.8. Descompunerea cuadricã

Fig. 2.9. No]iunea de arbore octic.

2.2.3. METODA CÂMPULUI POTEN[IAL

Aceastã metodã de planificare trateazã robotul, reprezentat ca un punct în spa]iul configura]iilor, ca pe o particulã aflatã sub influen]a unui câmp poten]ial artificial U ,ale cãrui varia]ii locale reflectã “structura “ spa]iului liber. Func]ia poten]ial este definitã pe spa]iul liber ca suma dintre un poten]ial atractiv, ce atrage robotul spre configura]ia finalã, }i un poten]ial repulsiv, ce îndepãrteazã robotul de obstacole .

Planificarea mi}cãrii este fãcutã în mod iterativ. La fiecare itera]ie, for]a artificialã:

F (C) = U(C)

indusã de func]ia poten]ial în configura]ia curentã este consideratã ca direc]ia cea mai promi]ãtoare a mi}cãrii }i generarea traiectoriei înainteazã de-a lungul acestei direc]ii .

Metoda a fost dezvoltatã ini]ial ca o metodã “on line” de evitare a coliziunilor, aplicabilã când robotul nu are un model aprioric al obstacolelor,dar le poate sesiza în timpul execu]iei mi}cãrii. În particular, procedura se poate bloca într-un minim local al func]iei poten]ial, altul decât configura]ia finalã, deoarece ac]ioneazã ca o procedurã rapidã.

Metodele de câmp poten]ial sunt denumite adesea metode locale. Acestea se datoreazã faptului cã cele mai multe func]ii poten]ial nu rãmân valabile dincolo de o vecinãtate limitatã, într-un spa]iu al configura]iilor bine definit. Func]ia poten]ial idealã ar fi în aceastã situa]ie cea cu un singur minim în configura]ia finalã .

Caracterul metodelor de câmp poten]ial este profund empiric, putând conduce la gre}eli în gãsirea traiectoriei libere, chiar dacã existã una. Marele avantaj al acestei metode constã în rapiditatea deosebitã.

Pentru ca robotul sã fie atras de configura]ia finalã }i respins de obstacole, func]ia U este consideratã ca o sumã a douã func]ii:

U(C) =Ua(C)+Ur(C)

unde:

Ua este poten]ialul atractiv asociat cu configura]ia finalã Cfinal ;

Ur este poten]ialul repulsiv asociat cu regiunea C-obstacolelor .

Poten]ialul Ua este independent de regiunea C-obstacolelor, iar poten]ialul Ur este independent de configura]ia finalã .

În figura 2.3. se ilusteazã cele precizate pentru un spa]iu al configura]iilor bidimensional, care con]ine douã obstacole (figura 2.3.a).

Poten]ialul atractiv are minimul în configura]ia finalã (figura 2.3.b), poten]ialul repulsiv este prezentat în figura 2.3.c. iar poten]ialul total apare în figura 2.3.d.

Fig. 2.3. Exemplu pentru un spa]iu de lucru bidimensional

CAPITOLUL 3

METODA DESCOMPUNERII CELULARE EXACTE

Principiul acestei metode de planificare a traiectoriilor constã în :

descompunerea spa]iul liber SCliber al robotului într-o colec]ie de regiuni numite celule, care nu se suprapun, a cãror reuniune este exact SCliber;

se construie}te }i se verificã graful de conexiune care reprezintã rela]iile de adiacen]ã între celule; în cazul reu}itei, rezultatul verificãrii este o secven]ã de celule adiacente denumitã canal, care conecteazã celula ce con]ine configura]ia ini]ialã cu celula ce contine configura]ia finalã;

se extrage traiectoria consideratã favorabilã.

Nu toate descompunerile celulare ale spa]iului liber sunt potrivite.Spre exemplu, o viziune extremã asupra acestei probleme, ar fi considerarea întregii mul]imi SCliber ca o singurã celulã, dar extragerea unei traiectorii din aceastã celulã ar conduce la problema ini]ialã.

Celulele generate de descompunere trebuie sã aibã urmãtoarele caracteristici:

geometria fiecãrei celule trebuie sã fie suficient de simplã, pentru a face posibilã calcularea unei traiectorii între oricare douã configura]ii din celulã;

testarea adiacen]ei a douã celule oarecare }i gãsirea unei traiectorii ce traverseazã por]iunea de frontierã corespunzãtoare la douã celule adiacente sã nu se realizeze dificil.

Din cele precizate, rezultã cã frontiera unei celule este o zonã criticã, a cãrei traversare impune anumite modificãri.

Celulele, însã, sunt regiuni omogene, astfel încât toate traiectoriile aflate în aceea}i celulã, însã oricare douã configura]ii, sunt echivalente calitativ.

Existã mai multe metode de planificare, bazate pe descompunerea celularã exactã, al cãror avantaj comun este existen]a canalului ce conecteazã configura]ia ini]ialã cu cea finalã.

Conceptul de canal este mai pu]in restrictiv decât cel de traiectorie }i poate asigura robotului informa]ii utile pentru tratarea restric]iilor dinamice }i a obstacolelor nea}teptate în timpul execu]iei.

3.1. APLICAREA METODEI LA SPA[IUL

CONFIGURA[IILOR POLIGONAL

În cazul simplu, când SC=R2, regiunea SCB a C-obstacolelor este o regiune poligonalã în spa]iul configura]iilor.

Pentru simplificare, se considerã cã spa]iul liber al robotului:

SCliber=SCSCB

este mãrginit, de}i aceastã presupunere nu este necesarã efectiv.

O descompunere convex poligonalã K a spa]iului SCliber este o colec]ie finitã de poligoane convexe, numite celule, astfel încât interioarele oricãror douã celule nu se intersecteazã, iar reuniunea tuturor celulelor este egalã cu SCliber.

Douã celule k }i k’ din K sunt adiacente dacã }i numai dacã k k’este un segment de dreaptã de lungime diferitã de zero.

Graful de conexiune asociat unei descompuneri convex poligonale a lui SCliber este graful G neorientat introdus astfel :

nodurile lui G sunt celulele lui SCliber ;

douã noduri ale lui G sunt conectate printr-o legãturã, dacã }i numai dacã, celulele corespunzãtoare din K sunt adiacente.

Figura 3.1 prezintã o descompunere convex poligonalã a spa]iului liber pentru un spa]iu al configura]iilor bidimensional, în care sunt pozi]ionate obstacole poligonale }i sunt men]ionate pozi]iile, ini]ialã }i finalã, ale unui robot considerat punctiform. Figura prezintã }i graful de conexiune asociat acestei descompuneri.

Algoritmul descompunerii celulare exacte pentru planificarea unei traiectorii libere ce conecteazã configura]ia ini]ialã cu cea finalã constã din:

se genereazã o descompunere convex poligonalã K a lui SCliber, în care fiecare celulã este etichetatã cu un numãr întreg diferit;

se construie}te graful de conexiune G asociat lui K cu fiecare nod plasat în celula corespunzãtoare;

se cerceteazã G, cãutând o secven]ã de celule adiacente între configura]ia ini]ialã }i cea finalã;

dacã cercetarea se terminã cu succes, se re]ine secven]a generatã de celule, în caz contrar, se declarã “gre}ealã”.

Rezultatul algoritmului este o secven]ã k1,…,kp de celule, astfel încât Cini]ialk1, Cfinalkp, iar pentru orice j[1, p-1], kj }i kj+1 sunt adiacente.

Fig. 3.1. Descompunere convex poligonalã a spa]iului liber

Aceastã celulã este denumitã canal. %n figura 3.1, spre exemplu, Cini]ial este în celula 1, iar Cfinal în celula 7. Un canal posibil este secven]a de celule: 1,2,3,4,13,8,7. Interiorul unui canal trebuie sã se afle în întregime în spa]iul liber.

Dacã se noteazã cu Fkj }i cu Fkj+1, frontierele celulelor kj, respectiv kj+1, atunci intersec]ia:

Lj=Fkj Fkj+1

reprezintã limita între cele douã celule.

Un mod simplu de a genera o traiectorie liberã con]inutã în interiorul canalului produs de cercetarea lui G este de a considera punctul de mijloc Qj al fiecãrui segment Lj }i de a conecta Cinitial cu Cfinal printr-o linie poligonalã, ale cãrui vârfuri succesive sunt Q1,..,Qp-1(figura 3.2). Dacã segmentul Qj-1Qj se aflã chiar pe limita celulei kj, atunci în fiecare din respectivele celule va trebui introdus un punct suplimentar Qj’.

Fig. 3.2. Generarea traiectoriei libere prin conectarea punctelor de mijloc Qj

Descompunerea trapezoidalã

O descompunere neoptimã poate fi generatã destul de eficient într-un alt mod (figura 3.3). Astfel se genereazã o linie (L) paralelã, spre exemplu, cu axa Oy, care baleiazã de-a lungul spa]iului configura]iilor; procesul de baleiere este întrerupt ori de câte ori linia (L) întâlne}te câte un vârf al lui SCB.

Fig.3.3. Descompunerea trapezoidalã

Se creeazã întotdeauna maxim douã segmente de dreaptã verticale ce leagã vârful X cu muchiile lui SCB aflate imediat deasupra, respectiv imediat dedesubtul lui X. Conturul lui SCB }i segmentele de dreaptã verticale determinã o descompunere trapezoidalã a lui SCliber (numitã }I descompunere verticalã). Fiecare celulã a descompunerii este fie un trapez, fie un triunghi. Douã celule sunt adiacente dacã }i numai dacã limita lor este un segment vertical. Când este traversat un astfel de segment, structura verticalã a restric]iilor impuse de SCB mi}cãrilor lui A se modificã discontinuu.

Se observã cã acela}i algoritm se poate aplica }i în cazul când SCliber nu este mãrginit. În acest caz, descompunerea generatã va include celule ce se extind la infinit pe direc]ia axei Oy. În timpul baleierii liniilor este posibilã crearea concomitentã a segmentelor de linii verticale emanate din vârfurile lui SCB, generarea grafului de conexiune G }i identificarea celulelor ce con]in configura]ia ini]ialã }i finalã.

În figura 3.4 este ilustratã metoda de planificare a traiectoriilor prin descompunere trapezoidalã. Cercetarea lui G se poate realiza în diferite moduri, rezultând diferite cãi posibile (spre exemplu, cea indicatã cu linie îngro}atã în figura 3.4b) care, la rândul lor,determinã canalul (zona ha}uratã din figura 3.4.c).

Ultima etapã este stabilirea efectivã a traiectoriei, spre exemplu, prin unirea mijloacelor segmentelor verticale întâlnite în canalul stabilit între punctele Cinitial }i Cfinal.

Aceastã metodã de planificare este frecvent utilizatã pentru cã realizeazã un optim între alegerea unei distan]e cât mai îndepãrtate de obstacole }i ob]inerea unei traiectorii cât mai scurte. Ea poate fi extinsã pentru cazul SC=R3, cu C-obstacole poliedrice.

Se poate construi un algoritm de baleiere planã pentru realizarea descompunerii lui SCliber în celule paralelipipedice.

Douã celule sunt adiacente dacã }i numai dacã douã din fe]ele lor au în comun un trapez cu aria diferitã de zero.

Pentru a aplica algoritmul trebuie construit un graf cu fiecare nod Qj selectat în interiorul intersec]iei trapezoidale a contururilor celor douã celule adiacente.

3.2. CURBE CRITICE {I REGIUNI NECRITICE ÎN PLAN

Se considerã cazul particular al unui robot A de forma unei bare, care se poate translata }i roti într-un spa]iu de lucru bidimensional W=R2. Robotul este modelat printr-un segment de dreaptã de lungime d, ale cãrui capete sunt P }i Q.

Spa]iul configura]iilor SC al lui A este R2S1, astfel încât fiecare configura]ie se parametrizeazã prin (x,y,), unde x }i y pot fi coordonatele lui P în sistemul fix Sw, dacã se alege P=OA, ca origine a sistemului SA ata}at robotului, iar unghiul [0,2) este format de axele Ox corespunzãtoare ale celor douã sisteme (în particular, se alege axa OAx a sistemului ata}at SA ca având direc]ia segmentului PQ). Perechea (x,y) a coordonatelor originii sistemului ata}at este numitã pozi]ia lui A, iar unghiul este numit orientarea lui A.

Ideea de bazã a planificãrii traiectoriilor, în acest caz, constã în descompunerea mul]imii de pozi]ii ale lui A în regiuni bidimensionale, transformarea acestor regiuni în celule tridimensionale }i reprezentarea rela]iei de adiacen]ã între aceste celule într-un graf de conexiune. Celulele bidimensionale sunt astfel alese, încât sã men]inã o structurã omogenã în cilindrii de deasupra lor. Celulele con]inute în astfel de cilindrii expliciteazã aceastã structurã. Frontierele acestor regiuni necritice se numesc curbe critice .

Este astfel evident cã regiunea C-obstacolelor SCB este o regiune tridimensionalã, mãrginitã de fe]e care sunt por]iuni de C-suprafe]e riglate de tip A sau B. O suprafa]ã de tip A corespunde situa]iei când segmentul PQ con]ine vârful unui obstacol. O suprafa]ã de tip B corespunde situa]iei în care, fie P, fie Q, este con]inut în muchia unui obstacol.

Se define}te no]iunea de curbã criticã înglobând:

proiec]iile pe planul xOy ale suprafe]elor care reprezintã frontiere în regiunea C-obstacolelor SCB;

curbele con]inute în suprafe]ele frontierã din SCB pe por]iunile unde planul tangent la aceste suprafe]e este perpendicular pe planul xOy.

Fig. 3.4. Planificarea traiectoriilor prin descompunere

trapezoidalã

Aceste curbe sunt mul]imea de puncte pentru care structura regiunii C-obstacolelor aflate deasupra planului xOy înregistreazã schimbãri calitative. Într-adevãr, când este traversatã o astfel de curbã, fie se modificã mul]imea fe]elor lui SCB care sunt intersectate de o linie perpendicularã pe planul xOy în pozi]ia curentã, fie se modificã numãrul punctelor de intersec]ie.

Se poate ilustra no]iunea de curbã criticã printr-un exemplu.

Se presupune ini]ial cã nu existã obstacole în spa]iul de lucru W în care robotul A se aflã în pozi]ia (x,y).

Orice orientare este liberã, adicã (x,y,) SCliber.

Se introduce în spa]iul de lucru un obstacol reprezentat de un semiplan închis, mãrginit de o linie dreaptã E (muchia obstacolului). O configura]ie (x,y,) a lui A poate fi în spa]iul liber numai dacã (x,y) nu este con]inut în obstacol.

Astfel muchia E este o curbã criticã:în semiplanul interior lui E, nici o orientare nu este liberã, în timp ce în semiplanul exterior lui E, unele orientãri sunt libere.

Dacã distan]a de la P la E este mai mare decât d (lungimea lui A), toate orientãrile lui A sunt libere.

Dacã P se apropie de E }i traverseazã o linie K, paralelã cu E la distan]a d, atunci unele din orientãrile lui A nu mai sunt libere. K este deci, o altã curbã criticã. Pentru orice (x,y) situat în partea exterioarã a lui K, linia perpendicularã pe planul xOy în punctul (x,y) nu traverseazã nici un C-obstacol, în timp ce, în cealaltã parte, traverseazã unul.

Se observã cã, în acest exemplu, existã douã fe]e de tip B corespunzãtoare contactelor în care P }i Q sunt con]inute în muchia E.

Curbele critice se clasificã în }ase tipuri, dupã cum urmeazã(figura 3.5):

muchiile E ale obstacolelor sunt curbe critice de tip 0;

segmentul de dreaptã situat la distan]a d de muchia E, având aceea}i lungime cu E, este o curbã criticã de tip 1(figura 3.5.a);

arcul de cerc de razã d,cu centrul în vârful X al unui obstacol }i mãrginit de cele douã semidrepte care con]in muchiile ce se îmbinã în X, este o curbã criticã de tip 2 (figura 3.5.b }i 3.5.c);

dacã E este muchia unui obstacol }i X un vârf convex la unul din capetele lui E,segmentul de dreaptã trasat de capãtul P când A gliseazã de-a lungul lui E pânã când Q rãmâne încã în E, este o curbã criticã de tip 3 (figura 3.5d);

fie X1 }i X2 douã vãrfuri ale unui obstacol convex, astfel încât linia ce trece prin cele douã vârfuri este tangentã la obstacol în vârfurile respective; segmentul de dreaptã trasat de capãtul P când A translateazã atingând simultan X1 }i X2 este o curbã criticã de tip 4 (figura 3.5.e);

fie E muchia unui obstacol }i X vârful unui obstacol convex B, care nu este punct de capãt pentru E, situat la distan]a h de E; dacã h d, curba trasatã de P când robotul se deplaseazã astfel încât atinge E }i X, fiind tangent la B în X, este o curbã criticã de tip 5 (figura 3.5.f).

Se observã }i din figura 3.5. cã, curbele critice reprezintã mul]imea pozi]iilor lui A pentru care structura regiunii C-obstacolelor de-a lungul direc]iei înregistreazã o schimbare calitativã.

Referitor la curbele critice de tipul 5, acestea reprezintã o submul]ime în concoida lui Nicomedes.

Fig. 3.5. Clasificarea curbelor critice

Astfel, alegând un sistem de referin]ã cu originea în vârful X, cu axa Ox paralelã cu E }i cu axa Oy perpendicularã pe E (figura 3.6), rezultã pentru o pozi]ie oarecare a punctului P :

d2=(y+h)2+(x+k)2

}i:

y/x=h/k,

de unde ecua]ia curbei:

x2=y2[d2/(y+h)2 1]

pentru y0.

Fig. 3.6. Curbã criticã de tip 5

Orice zonã deschisã, mãrginitã de curbe critice este o regiune necriticã. Pentru cazul particular al unui spa]iu de lucru poligonal existã 21 de curbe critice posibile, în afarã de muchiile obstacolelor, care sunt toate segmente de dreaptã (figura 3.7). Astfel:

L1,…,L6 sunt curbe de tipul 1, generate de muchiile E1,…,E6 ;

L7,…,L10 sunt curbe de tipul 2, generate de vârfurile X1,X2,…,X4 ;

L11,…,L16 sunt curbe de tipul 3, generate de E2 }i X1, E1 }i X1, E3 }i X2, E2 }i X2, E6 }i X4, E5 }i X4 ;

L17 }i L18 sunt curbe de tipul 4, generate de vârfurile X2 }i X4 ;

L19,…,L21 sunt curbe de tipul 5; L19 este generatã de E4 }i X4, L20 de E6 }i X2, iar L21 de E2 }i X4 .

Pot exista curbe critice generate de configura]ii ale lui A, când acesta se intersecteazã cu interiorul lui B. Astfel de curbe se numesc redondante. În figura 3.7, un exemplu de curbã redondantã este o submul]ime a curbei critice L16.

Figura 3.8 indicã douã curbe redondante într-un alt spa]iu de lucru.

Acestea reprezintã de fapt por]iuni de curbe critice redondante într-o submul]ime a lui W ce con]ine douã obstacole B1 }i B2 care formeazã un col].

Douã curbe critice redondante de tipul 1, L1 }i L2, sunt reprezentate prin linii întrerupte. L1 este locul lui P când Q este în E2, PQ rãmânând mereu perpendicularã pe E1, respectiv pe E2. În ambele cazuri, PQ se intersecteazã cu B2, ceea ce implicã faptul cã L1 }i L2 sunt proiec]iile curbelor con]inute în C-obstacolele SCB.

Fig. 3.7. Exemplu de determinare a curbelor critice

pentru un spa]iu de lucru poligonal

Fig. 3.8. Exemplu de curbe critice redundante

Mul]imea curbelor critice este finitã. Fiecare punct de sfâr}it al unei curbe critice este plasat fie în altã curbã criticã, fie la infinit. Ele sunt curbe algebrice ce pot fi: de gradul 1(tipurile 0, 1, 3 }i 4), de gradul 2 (tipul 2) sau de gradul 4 (tipul 5). Oricare douã curbe critice pot avea doar un numãr finit de intersec]ii, cu excep]ia cazurillor în care coincid.

În figura 3.9 se prezintã cazurile în care mai multe curbe critice coincid de-a lungul unor por]iuni de lungime nenulã.

Cu presupunerea cã B este o mul]ime mãrginitã,fiecare coinciden]ã poate fi eliminatã printr-o modificare infinitezimalã a obstacolului B care nu-i schimbã topologia.De aceea, se poate presupune cã nu existã astfel de coinciden]e.

O por]iune (sec]iune) de curbã criticã este o submul]ime maximalã, închisã }i conexã a curbei, care este intersectatã de oricare altã curbã criticã doar la cele douã capete.

Fig.3.9. Mai multe curbe critice coincid

O pozi]ie (x,y) a lui A este admisibilã dacã existã cel pu]in o orientare , astfel încât (x,y,) SCliber.

O regiune necriticã este o submul]ime maximalã de pozi]ii admisibile ale lui A care nu intersecteazã nici o curbã criticã.

Astfel, mul]imea de curbe critice determinã o colec]ie de regiuni necritice. Fiecare regiune necriticã este o submul]ime deschisã a planului xOy. De exemplu, în figura 3.7, R indicã o regiune necriticã, mãrginitã de curbele critice L4, L7, L2, L5 }i L10.

Frontiera oricãrei regiuni necritice este o reuniune finitã de por]iuni de curbe critice.

O pozi]ie admisibilã (x,y) a lui A este necriticã dacã }i numai dacã se aflã într-o regiune necriticã; în caz contrar, este criticã.

3.3 DESCOMPUNEREA SPA[IULUI SCliber

Se considerã (x,y) o pozi]ie necriticã }i se noteazã F(x,y) mul]imea tuturor orientãrilor libere posibile ale lui A în aceastã pozi]ie:

F(x,y) =(x,y,) SCliber.

Dacã în (x,y) tote orientãrile lui A sunt libere, atunci:

F(x,y) = [0,2).

În caz contrar, F(x,y) constã dintr-un numãr finit de intervale deschise maximale conexe. Fiecare punct de capãt c al intervalului este astfel încât A(x,y,) atinge frontiera lui B, el este denumit orientare limitã a lui A în pozi]ia (x,y).

Se presupune cã F(x,y) [0,2) }i cã pentru fiecare interval maximal conex (1,2) F(x,y) existã un vârf sau o muchie deschisã s1, respetiv s2 a obstacolului B, care este atinsã de A(x,y,1), respectiv de A(x,y,2).

Astfel, vârfurile }i muchiile obstacolului,pe care robotul le atinge atunci când se rote}te în jurul punctului P(x,y), fãrã a atinge interiorul lui B, se numesc stopuri. Stopurile sunt întotdeauna unio definite, deoarece, în caz contrar, pozi]ia (x,y) ar fi criticã.

În figura 3.10 se pot eviden]ia douã categorii de stopuri:

cel care, pornind dintr-o configura]ie liberã, poate fi atins printr-o rota]ie în sens trigonometric }i care se nume}te stop trigonometric (X2 }I E1 sunt stopuri trigonometrice);

cel care, pornind dintr-o configura]ie liberã, poate fi atins printr- o rota]ie în sens orar }i care se nume}te stop orar (X1 }i E2 sunt stopuri orare).

Fig. 3.10. Stopuri trigonometrice }i stopuri orare

Orientãrile limitã corespunzãtoare stopurilor X1, X2, E2 }i E1 sunt respectiv 1, 2, 3, 4. Se considerã c o orientare limitã în pozi]ia necriticã (x, y).

Se noteazã cu s(x,y,c) stopul unic atins de A(x,y,c) }i cu S(x,y) mul]imea tuturor perechilor [s(x,y,c), s(x,y,c)] corespunzãtoare de stopuri orare, respectiv trigonometrice, definite în intervalul maximal conex (c,c) F(x,y). În exemplul din figura 3.10, acestor considera]ii le corespund:

s(x,y,1)=X1

s(x,y,2)=X2

s(x,y,3)=E2

s(x,y,4)=E1

}i deci:

S(x,y)=[X1,X2,[E2,E1 .

Dacã F(x,y)=[0,2), atunci se scrie S(x,y)=[,], unde indicã un stop inexistent.

Fiind datã o pereche de stopuri [s1,s2][,] în S(x,y), se noteazã cu 1(x,y,s1) orientarea unicã, astfel încât A(x,y,1) atinge stopul orar s1.

Similar, se noteazã cu 2(x,y,s2) orientarea unicã, astfel încât A(x,y,2) atinge stopul trigonometric s2. De exemplu, în figura 3.10:

1(x,y,X1)=1

2(x,y,X2)=2

3(x,y,E2)=3

4(x,y,E1)=4

Prin conven]ie

1(x,y,)= 0 }i 2(x,y,)= 2

Astfel, dacã

s1,s2S(x,y),

atunci

(1(x,y,s1),2(x,y,s2))

este un interval maximal conex în F(x,y).

Fie R o regiune necriticã. Din construc]ie, rezultã

(x,y), (x,y)R S(x,y)=S(x’,y)

adicã S(R)=S(x,y) este o pozi]ie oarecare în R, mul]imea perechilor de stopuri fiind valabilã pentru orice pozi]ie din regiunea necriticã R.

Se considerã R o regiune necriticã }i s1,s2 o pereche din S(R). Regiunea tridimensionalã

Cel(R,s1,s2)=(x,y,)(x,y)R }i (1,2)

este denumitã celulã. Ea reprezintã o submul]ime deschisã, conexã a lui SCliber.

Mul]imea tuturor celulelor definite ca mai sus formeazã o descompunere a lui SCliber. Celulele apar]in unor cilindri, care se proiecteazã în planul xOy pe regiunile necritice.

Este posibil ca douã regiuni necritice R }i R, ale cãror frontiere au în comun o por]iune L a unei curbe critice, sã fie astfel încât S(R)=S(R). Aceastã situa]ie corespunde cazului când L este redundant.

3.4. GRAFUL DE CONEXIUNE

S-a vãzut cum se descompune SCliber în celule. Se defineste, în continuare, graful de conexiune asociat acestei descompuneri.

Se considerã celulele :

K=Cel(R,s1,s2) }i K=Cel(R,s1,s2) .

Ele sunt adiacente dacã }i numai dacã:

frontierele FR }i FR ale regiunilor R }i R se intersecteazã dupã o por]iune de curbã criticã L;

(x,y) int(L) (1,2)(1,2) .

Descrierea rela]iei de adiacen]ã între celulele care se proiecteazã pe R }i cele care se proiecteazã pe R se nume}te regula de traversare a lui L. Dacã cele douã celule K }i K sunt adiacente, atunci orice configura]ie din K poate fi conectatã cu orice configura]ie din K printr-o traiectorie liberã, a cãrei proiec]ie în planul xOy traverseazã L având orientarea constantã în orice vecinãtate a punctului de intersec]ie.

Se considerã, pentru exemplificare, douã cazuri particulare:

a) Se construie}te o por]iune L de curbã criticã de tip 1, adicã un segment de dreaptã paralel cu muchia E a unui obstacol, la distan]a d. R este regiunea dintre L }i E, iar R este regiunea situatã de cealaltã parte a lui L. Regula de traversare este:

Cele douã celule Cel(R,s1,s2) }i Cel(R,s1,s2) sunt adiacente, dacã }i numai dacã:

s1,s2=s1,s2

sau

s1,s2=s1,E

sau

s1,s2=E,s2

sau

s1,s2=,

}i

s1,s2=E,E.

b) Se construie}te o por]iune de curbã criticã de tip 2, generatã de un vârf concav X, la extremitatea a douã muchii E1 }i E2, astfel cã unghiul exterior între cele douã muchii este mai mare ca /2(figura 3.11).

Curba criticã generatã de X este arcul de cerc care intersecteazã curbele de tipul 1, generate de E1 }i E2. Cele douã curbe de tipul 1 împart curba criticã de tipul 2 în trei por]iuni notate cu L1,L2,}i L3. Se considerã cazul când L=L1.

În aceastã situa]ie, se noteazã cu R regiunea aflatã pe partea lui L, care este mai apropiatã de X decât distan]a d, iar cu R, regiunea aflatã de cealaltã parte a lui L.

Regula de traversare este:

Cele douã celule Cel(R,s1,s2) }i Cel(R,s1,s2) sunt adiacente dacã }i numai dacã :

s1,s2=s1,s2

sau

s1 =E1 s1 =E2 }i s2 =s2.

În acela}i mod se analizeazã orice alt caz. O astfel de analizã aratã cã, atunci când int(L) este traversat, dacã L nu este o por]iune de curbã criticã redondantã }i nu este con]inutã în douã curbe critice ce coincid, mul]imea S(x,y) se modificã în unul din urmãtoarele douã moduri:

o pereche de stopuri din S(x,y) dispare sau o altã nouã pereche apare;

un element dintr-o pereche se modificã.

Fig. 3.11. Exemplu de regulã de traversare

Astfel, regula de traversare, pentru diferite tipuri de curbe critice, se poate generaliza într-o regulã unicã ce este valabilã pentru orice por]iune L de curbã criticã, dacã nu coincid douã curbe critice de-a lungul lui L :

Se leagã celula Cel(R,s1,s2), cu celula Cel(R,s1,s2), pentru fiecare s1,s2 S(R)S(R) }i se leagã oricare celulã Cel(R,s1,s2), s1,s2S(R)-S(R), dacã existã, cu oricare celulã Cel(R,s1,s2),s1,s2S(R)-S(R), dacã, de asemenea, existã.

Pe baza acestei reguli se traseazã graful de conexiune G:

Graful de conexiune G este un graf nedirec]ionat, ale cãrui noduri sunt toate celulele Cel(R,s1,s2), unde R este o regiune necriticã }i s1,s2S(R). O legãturã a grafului conecteazã orice douã noduri dacã }i numai dacã, celulele corespunzãtoare sunt adiacente.

Existând douã configura]ii

Cini]ial =(Xini]ial,Yini]ial,ini]ial)

}i

Cfinal =(Xfinal,Yfinal,final)

în spa]iul SCliber, astfel încât, nici (Xini]ial,Yini]ial) }i nici (Xfinal,Yfinal) sã nu se afle pe o curbã criticã, atunci existã o traiectorie liberã între ele, dacã }i numai dacã cele douã celule ce con]in Cini]ial }i Cfinal sunt conectate printr-o cale vizibilã în graful de conexiune G.

Se considerã, pentru exemplificare, un spa]iu care va trebui parcurs de robotul PQ (figura 3.12.).

Fig. 3.12. Determinarea regiunilor necritice

Por]iunile curbelor critice neredondante determinã 13 regiuni necritice notate cu R1,R13, dupã cum urmeazã

S(R1) =E1,E3,E3,E1

S(R2) =E1,E3,E3,X1

S(R3) =E1,E3,E3,E4

S(R4) =E1,E3,E3,E4,E4,X1

S(R5) =E1,E3,E4,X1

S(R6) =E1,E3,E4,E2

S(R7) =E4,E3

S(R8) =E4,E2,X1,E3

S(R9) =E4,E2,E1,E3,E3,E4

S(R10) =E4,E2,X1,E3,E3,E4

S(R11) =E4,E2,E3,E4

S(R12) =E4,E2,X1,E4

S(R13) =E4,E2,E2,E4

Fig. 3.13. Graful de conexiune

Graful de conexiune care rezultã este prezentat în figura ce urmeazã. Aceasta con]ine douã componente distincte, de unde rezultã cã }i SCliber constã, de asemenea, din douã submul]imi distincte. Prima componentã a grafului G (în partea superioarã a figurii) corespunde orientãrii lui A în care P este suprapus peste vârful X2. Existen]a a douã componente în graf aratã cã robotul nu poate face o rota]ie completã în interiorul vârfului el se poate însã mi}ca de la un capãt al col]ului la celãlalt, cu mi}cãri înainte-înapoi sauînapoi-înainte .

3.5. PROIECTAREA ALGORITMULUI

Fiind date o regiune a obstacolelor B, lungimea d o lui A }i configura]iile ini]ialã }i finalã ale lui A în SCliber, astfel încât nici-o configura]ie nu se proiecteazã în planul xOy printr-o curbã criticã, se schi]eazã un algoritm care genereazã o traiectorie liberã de la Cini]ial la Cfinal, ori de câte ori existã una }i raporteazã gre}alã , în caz contrar.

În acest algoritm, nu se construie}te o reprezentare explicitã a regiunilor necritice, sub forma unor liste de por]iuni de curbe critice ce formeazã frontiera lor, ci se va da o orientare arbitrarã fiecãrei por]iuni L, notând cele douã por]iuni separate de L prin: dreapta(L) }i stânga (L).

Ca urmare, algoritmul cerceteazã un graf de conexiune, ale cãrui noduri sunt toate celulele Cel(R,s1,s2), unde R este identificat într-o parte sau în alta a por]iunii de curbã L, adicã dreapta (L) sau stânga (L). Astfel, fiecare celulã efectivã apare în graf ori de câte ori se întâlnesc por]iuni de curbe care formeazã conturul regiunii necritice pe care se proiecteazã celula.

Douã noduri Cel(R,s1,s2) }i Cel(R,s1,s2) sunt conectate printr-o legãturã, dupã cum urmeazã:

Fie R= stânga(L) }i R= dreapta (L), cu L }i L având un punct de capãt cu Z comun. Se poate presupune cã, atât L cât }i L sunt orientate de la Z, spre celãlalt capãt al lor. Dacã nu existã altã por]iune de curbã criticã L, care are punctul Z ca unul din capete }i care se aflã în sectorul dintre L }i L considerate în sens trigonometric (reprezentat ha}urat), atunci R }i R sunt aceea}i regiune necriticã (fig. 3.14 ).

Fig.3.14. Conectarea prin legãturã în

graful de conexiune

Celulele : Cel(R,s1,s2) }i Cel(R,s1,s2) sunt conectate printr-o legãturã a grafului, dacã }i numai dacã s1,s2 =s1,s2, adicã cele douã celule sunt una }i aceea}i, sau dacã sunt adiacente conform regulii de traversare.

Algoritmul de planificare a traiectoriei cuprinde urmãtoarele etape:

Calculeazã por]iunile de curbe critice.

Se calculeazã mul]imea tuturor curbelor critice }i intersec]iile lor. Pentru fiecare curbã, se sorteazã punctele de intersec]ie în conformitate cu ordinea lor pe curbã (aceasta se face prin definirea unei parametrizãri potrivite pentru fiecare tip de curbã). Se descompune fiecare curbã în por]iuni, fiecare aflându-se între douã puncte de intersec]ie consecutive.

Calculeazã rela]ia de adiacen]ã între celule.

Pentru fiecare por]iune de curbã criticã L care nu face parte dintr-o muchie de obstacol se calculeazã S(dreapta(L)) }i S(stânga(L)). Succesiunea de opera]ii pânã la aceastã fazã poate fi: se alege un punct X pe L }i se exprimã o dreaptã perpendicularã în X pe L; apoi, este simplu sã se selecteze un punct X }i un altul X în dreapta }i în stânga lui L, pe dreapta perpendicularã; ultimul pas este calculul lui S în X }i X.

Se poate construi acum o rela]ie de adiacen]ã între celulele de deasupra lui dreapta (L) }i cele de deasupra lui stânga (L). Dacã S(dreapta(L))=S(stânga(L)), atunci L este redondant }i poate fi înlãturat din considerentele urmãtoare:pentru orice por]iune de curbã criticã L de tip 0, adicã fãcând parte dintr-o muchie de obstacol, nu existã nici o rela]ie de adiacen]ã de construit.

Formeazã grupul de sec]iuni de celule adiacente .

În fiecare punct Z de intersec]ie a curbelor critice se formeazã o listã circularã a tuturor por]iunilor de curbe incidente în Z }i se sorteazã aceastã listã, spre exemplu, în sens trigonometric; aceastã listã sortatã se nume}te grup.

Se calculeazã }i se sorteazã apoi direc]iile orientate spre exterior, tangente la por]iunile de curbe în punctul Z. Când douã astfel de direc]ii coincid se calculeazã }i se sorteazã direc]iile derivate de ordin superior.

Identificã celula ini]ialã }i celula finalã.

Se construie}te segmentul de dreaptã între (Xini]ial, Yini]ial) }i (Xfinal, Yfinal) }i se calculeazã intersec]iile lui cu toate por]iunile de curbe critice. Dacã nu existã intersec]ii, atunci cele douã puncte se aflã în aceea}i regiune criticã.

Dacã existã intersec]ii,atunci se cautã por]iunile de curbã Lini]ial }i Lfinal, ale cãror intersec]ii cu segmentele de dreaptã sunt cele mai apropiate de punctele (Xini]ial, Yini]ial) }i (Xfinal, Yfinal). Se identificã partea lui Lini]ial ce con]ine (Xini]ial, Yini]ial) }i partea lui Lfinal ce con]ine (Xfinal, Yfinal) }i se gãsesc perechile s1ini]ial, s2ini]ial }i s1final, s2final, astfel încât:

ini]ial(1(Xini]ial, Yini]ial, s1ini]ial), 2(Xini]ial, Yini]ial, s2ini]ial))

final(1(Xfinal, Yfinal, s1final), 2(Xfinal, Yfinal, s2final)).

Cerceteazã graful de conexiune.

Se ini]ializeazã graful cu nodul Kini]ial apoi se trece interativ la celelalte noduri. Se opre}te dupã generarea nodului Kfinal, sau când nu mai sunt alte noduri. În primul caz se prezintã secven]a de celule în traiectoria care conecteazã Kini]ial de Kfinal în graf, iar în al doilea caz se rãspunde eroare .

Ie}irea algoritmului este o secven]ã de celule (K1,Kp), în care fiecare Kj este dreapta (Lj) sau stânga (Lj). Aceastã secven]ã determinã un canal reprezentat de reuniunea tuturor celulelor.Fiecare traiectorie între Cini]ial }i Cfinal, aflatã în interiorul acestui canal, este o traiectorie liberã. Se poate construi astfel o traiectorie semiliberã reprezentatã de secven]a (L1,Lp).

Deoarece regiunea obstacolelor este o mul]ime mãrginitã, este suficientã o deforma]ie arbitrar de micã, pentru a transforma aceastã traiectorie într-o traiectorie liberã.

Algoritmul prezentat presupune cã por]iunile de curbe dintr-o submul]ime convexã a spa]iului liber formeazã un graf conex. Aceastã afirma]ie nu este adevãratã dacã unele regiuni necritice,notate cu R în figura, formeazã o gaurã într-o regiune necriticã R înconjurãtoare.

Atunci, por]iunile de curbe care delinmiteazã por]iunile ce formeazã R nu sunt conectate cu por]iunile de curbe aflate dupã frontiera exterioarã a lui R. Aceasta constituie o problemã numai dacã fie (Xini]ial, Yini]ial), fie (Xfinal, Yfinal), dar nu amândouã, sunt con]inute în R.

Problema poate fi rezolvatã prin unirea pozi]iilor ini]ialã }i finalã printr-un segment de dreaptã ce creeazã o por]iune de curbã criticã fictivã între oricare douã intersec]ii consecutiveale acestui segment cu curbele critice.

Pentru exemplul din figura 3.15. se observã cã spa]iul de lucru con]ine douã obstacole B1 }i B2. Curbele critice determinate de cele douã obstacole delimiteazã mai multe regiuni necritice, între care R constituie o gaurã în R.

Deci, por]iunile de curbe critice formeazã douã subgrafuri conexe. Problema se rezolvã generãnd un segment de dreaptã între configura]ia ini]ialã }i cea finalã a lui A }i unind fiecare douã intersec]ii consecutive ale acestui segment cu curbele critice, printr-o por]iune de curbã criticã fictivã.

Fig. 3.15. O regiune necriticã este ob]inutã într-o altã regiune necriticã

3.6. CAZUL GENERAL

Anterior am ilustrat descompunerea celularã exactã abordatã prin douã metode, referitor la douã cazuri particulare, pentru problema fundamentalã a planificãrii mi}cãrii robo]ilor.

În continuare vom descrie o metodã pentru rezolvarea acestei probleme în întregime generalã.

O restric]ie impusã de aceastã metodã este ca, atât robotul A cât }i regiunea obstacolelor B sã fie descrisã ca }i un grup semi-algebric.

A}adar, ca }i indica]ie în paragrafele urmãtoare se utilizeazã o parametrizare adecvatã ale unei configura]ii spa]iale m-dimensionale C, a regiunii C-obstacolelor CB, ca }i când spa]iul liber Cliber ar putea fi descris ca un grup semi-algebric.

Aceastã metodã descompune Cliber într-o colec]ie finitã de celule al grupului semi-algebric.

Ca }i în paragraful anterior, celulele se ob]in calculând pentru început proiec]iile acestora în spa]iul de dimensiune inferioarã }i apoi ridicându-le în C.

Dimensiunea lui C este în general mai mare decât 3, mecanismul de proiec]ieridicare fiind recursiv.

Datoritã acestui calcul recursiv, acestei metode i se mai spune “metoda proiec]iei”, ea datorându-se lui Shwartz }i Shair.

3.6.1. DESCOMPUNEREA CILINDRIC-ALGEBRIC~

DEFINI[IE :

O descompunere algebricã a lui Rn este o colec]ie finitã Kn a submul]imilor semi-algebrice disjuncte a lui Rn, fiecare omeomorfic la j pentru j0,n, ale cãror reuniune este Rn.

Fiecare element k a lui Kn este o celulã apelatã. Dacã j =0, atunci celula este un punct algebric singular.

Faptul cã fiecare celulã într-o descompunere algebricã este omeomorficã la câ]iva Rj, implicã conectare acestora.

O mostrã a descompunerii algebrice Kn a lui Rn este func]ia : :KnRn, deasemenea pentru kKn , (k)k }i (k) este un punct algebric. (k) este considerat un punct mostrã a lui k.

Proiec]ia punctului xn=(x1,x2,…,xn)Rn este punctul xn-1=(x1,x2,…xn-1)Rn-1, ob]inând nth componente ale punctului. Proiec]ia submul]imilor lui Rn este mul]imea proiec]iilor acestor componente.

DEFINI[IE :

O descompunere cilindric-algebricã Kn a lui Rn (n>0) este o descompunere algebricã definitã recursiv dupã cum urmeazã:

pentru n>1, existã o descompunere cilindric-algebricã Kn-1 a lui Rn-1 astfel încât pentru fiecare celulã k din Kn existã o celulã k din Kn-1, aceasta fiind proiec]ia lui k pe Rn-1. Kn-1 este cunoscut sub denumirea descompunere fundamentalã a lui Kn }i k este baza pentru k .

pentru n=1, K1 este o parti]ie a lui R într-un numãr finit de mul]imi a numerelor algebrice }i intervale deschise finite }i infinite, mãrginite cu ajutorul acestor numere.

O mostrã cilindricã a descompunerii cilindric-algebricã a lui Rn, Kn, este o func]ie :Kn Rn astfel încât :

dacã k1 }i k2 sunt celule a lui Kn având câteva celule de bazã atunci (k1) }i (k2) au câteva proiec]ii în Rn-1.

dacã n>1, induce recursiv un model cilindric al descompunerii de bazã Kn-1 a lui Kn.

Fie sign(x) = -1, 0 sau +1 pentru x< 0, x=0 sau x>0. Fie F mul]imea func]iilor cu n variabile reale.

O descompunere Kn a lui Rn este numitã F-invariantã dacã }i numai dacã, pentru fiecare celulã k din Kn }i pentru fiecare func]ie f din F, sign(f(x)) este constant pentru x=(x1,…,xn), variind apoi k.

TEOREMÃ (teorema lui COLLINS):

Oferind oricãrei mul]imi P al polinoamelor în Q[x1,…,xn] existã un algoritm efectiv care construie}te o descompunere cilindric-algebricã Kn a lui Rn, P-invariant, împreunã cu modelul cilindric a lui Kn.

Algoritmul alege perioada polinomialã din valorile polinomului P }i din gradul lor maxim, cu exponent dublu dependent de n.

Numãrul celulelor generate cu acest algoritm sunt în ordinea mãrimii (importan]ei).

Dovada constructivã a acestei teoreme este algoritmul de descompunere COLLINS care construie}te descompunerea Kn , P-invariantã.

Acest algoritm este schi]at într-un paragraf ulterior.

Fiecare celulã produsã cu acest algoritm este descrisã printr-o expresie polinomialã cu cuantificator liber. Algoritmul produce o descompunere de bazã Kn-1 a lui Kn, descompunerea de bazã Kn-2 a lui Kn-1 }.a.m.d. }i un model cilindric a lui Kn.

Kn este denumit descompunerea COLLINS a lui Rn, P-invariantã.

3.6.2. APLICA[IE LA TEORIA REALITÃ[II

Douã aplica]ii simple ale algoritmului de descompunere COLLINS sunt decizia adevãratã }i eliminarea cuantificatorului pentru propozi]ia TARSKI.

DECIZIA ADEVÃRATÃ : Problema este de a determina valoarea adevãratã a propozi]iei TARSKI, aceasta con]inând variabile legate (care nu sunt libere).

Considerãm, pentru exemplificare, urmãtoarea propozi]ie: x, y :(x,y). Fie P mul]imea polinoamelor care intervin în .

Utilizând algoritmul COLLINS, vom construi o descompunere cilindric-algebricã K2 a lui R2, P-invariantã, o descompunere de bazã K1 a lui K2 }i un model cilindric

: K2 R2.

Propozi]ia de mai sus este adevãratã dacã }i numai dacã, pentru k K1, o celulã k K2 con]inut în cilindrul k astfel încât (xk,yk) conduce la (k)=(xk,yk).

ELIMINAREA CUANTIFICATORULUI :

Problema este de a transforma propozi]ia TARSKI cu cuantificator într-o expresie polinimialã cu cuantificator liber.

Pentru început, considerãm propozi]ia : y : (x,y).

Variabila x este liberã, deci propozi]ia define}te o submul]ime semi-algebricã a lui R.

Dorim sã definim aceastã submul]ime printr-o expresie polinomialã cu cuantificator liber din R.

Fie k nota]ia pentru cuantificatorul liber al expresiei polinomiale definind celula k, pentru orice celulã k din K2 }i K1.

Fie (x) disjunc]ia tuturor k, unde k este celula de bazã a cel pu]in unui kK2 astfel încât (xk,yk) conduce la (k) =(xk,yk).

Douã propozi]ii TARSKI : y : (x,y) }i (x) definesc câteva submul]imi semi-algebrice a lui R.

Principiile ilustrate în cele douã exemple de mai sus pot înrãdãcina procedura generalã.

În paragraful urmãtor vom utiliza “eliminarea cuantificatorului” la construc]ia descompunerii cilindric-algebrice a lui C-liber }i “decizia adevãratã“ la testarea adiacen]ei între celulele acestei descompuneri.

3.6.3. APROXIMAREA GENERALÃ

În continuare vom arãta cum se utilizeazã “descompunerea COLLINS” pentru planificarea mi}cãrii.

Robotul A }i regiunea obstacolelor B sunt reprezentate prin submul]imi semi-algebrice a lui Rn }i formulele de definire ale acestora sunt A(a) }i B(b), unde a }i b sunt puncte în RN.

Dupã cum s-a arãtat într-un paragraf anterior, regiunea C-obstacolelor CB poate fi reprezentatã printr-o mul]ime semi-algebricã din Rm, unde m este dimensiunea spa]iului configura]iilor unui robot A.

Avem:

CB={ q Rm CB(q) }

cu

CB(q) a RN , b RN : A(a) B(b) (q, a, b)

unde q-reprezintã configura]ia unui punct din Rm utilizatã la parametrizarea spa]iului configura]iilor robotului A astfel încât ‘(q, a, b), cu expresia a(q) =b, este algebricã.

Considerãm pentru moment cã C este reprezentat printr-un singur grafic care mapeazã orice configura]ie a lui C din Rm, prin urmare Cliber este reprezentat în întregime prin:

Cliber ={ q Rm CB(q) }.

Putem construi “descompunerea COLLINS” Km+2N cu polinomul apãrut în expresia :

a RN , b RN : A(a) B(b) ‘(q,a,b)

}i eliminând cuantificatorul variabilelor N-dimensionale a }i b .

Acesta produce o descompunere cilindric-algebricã Km a lui Rm, descompunerea succesivã de bazã a lui Km }i un model cilindric a lui Km. O celulã k Km este liberã dacã este con]inutã în Cliber. Aceasta este proiec]ia cilindrului în Km+2N pentru cã nu con]ine celula k’ ale cãrui puncte satisfac expresia de mai sus. Notãm cu Kmliber mul]imea tuturor celulelor libere ale lui Km.

Prin urmare, presupunem cã “descompunerea COLLINS Km” este “bine-bazat@”, inten]ionând sã închidã fiecare celulã k în Kl, pentru orice l[1, m], fiind o uniune a celulelor lui Kl.

În general, “descompunerea COLLINS” este bine-bazatã, dar aceasta nu pota fi adevãratã pentru orientãrile defavorabil definite (fixate) ale axelor din Rm. În aceste cazuri, o posibilitate pentru restaurare constã în rota]ia apropiatã a coordonatelor axelor. Fie qini]ial }i qfinal configura]iile libere ini]ialã respectiv finalã, reprezentate prin puncte ale lui Rm.

Prin evaluarea expresiei polinomiale se define}te fiecare celulã din Cliber cu fiecare din configura]iile acestora, utând identifica celula lui Kmliber con]inând qini]ial, denumitã celulã ini]ialã }i celula lui Kmliber con]inând qfinal, denumitã celulã ]intã. Presupunem în cele ce urmeazã cã celulele ini]iale }i ]intã sunt celule m-dimensionale.

Cãutarea unei cãi libere între douã configura]ii poate fi limitatã la celule m }i (m-1) dimensionale ale lui Kmliber.Într-adevãr, Cliber este o mul]ime deschisã de dimensiune m. Astfel submul]imile de dimensiune (m-2) sau mai pu]in, deconecteazã o componentã maximalã conectatã a lui Cliber.

DEFINI[IE :

Considerând cã descompunerea Km este bine-bazatã, douã celule k }i k’din Kmliber sunt adiacente dacã }i numai dacã : una dintre celule, presupunem k, este m-dimensionalã }i cealaltã, k este (m-1) dimensionalã, k’ k (frontiera lui k).

Graful de conexiune G este un graf indirect ale cãrui noduri sunt toate celule de dimensiune m }i (m-1) ale lui Kmliber.

Douã noduri sunt conectate printr-o linie dacã }i numai dacã celulele corespunzãtoare sunt adiacente.

Conform defini]iei de mai sus, douã celule m-dimensionale libere k1 }i k2 nu pot fi adiacente. Dacã cele douã celule sunt deopotrivã adiacente la câteva celule libere (m-1) dimensionale , cea de a doua celulã amintitã se aflã la intersec]ia frontierelor k1 }i k2 ,astfel încât oricare alte douã configura]ii din k1 }i k2 pot fi conectate cu o cale liberã.

Prin urmare, G con]ine o cale între celula ini]ialã }i celula finalã dacã }i numai dacã existã o cale liberã între configura]ia ini]ialã }i configura]ia ]intã.

Condi]ia de adiacen]ã între o celulã m dimensionalã }I o celulã (m-1) dimensionalã pote fi exprimatã cu ajutorul propozi]iei TARSKI:

q’, , q 🙁 > 0) k’( q’ ) k( q ) (q-q’ < ).

Se cite}te : pentru orice configura]ie q’ din k’ }i pentru orice > 0, existã o configura]ie q din k astfel încât distan]a de la q la q’ sã fie mai micã decât .

Astfel, testând adiacen]a între douã celule }i construind consecutiv graful de conexiune G, sunt clare problemele ce pot fi solu]ionate prin aplicarea algoritmului de descompunere COLLINS pentru polinoamele din propozi]ia TARSKI anterioarã ,pentru orice pereche (k, k’) al celulelor din Kmliber de dimensiune m }i (m-1) precum }i verificarea valorii adevãrate a propozi]iei. O construc]ie a lui G constã în cãutarea unei cãi de conectare între celula ini]ialã }i celula ]intã.

Gãsirea cãii, dacã a reu}it, este o secven]ã a celulelor (k1,k2,…,k2p+1), p 0 astfel încât k2j+1 cu j [0, p] este m-dimensional }i k2j, cu j [1, p] este (m-1) dimensional.

Uniunea formeazã o regiune a conexiunilor deschise în Cliber, denumitã canal. Pasul final este construc]ia cãii libere de la qini]ial la q]intã. Putem considera cã fiecare configura]ie q este reprezentatã printr-un punct (x1,x2,…,xm) în Rm. În plus, celulele din secven]a (k1,…k2p+1) sunt alternativ m-dimensionale }i (m-1) dimensionale, cu k2j k2j-1 k2j+1, pentru j 1, p.

Putem construi care este produs al p+1 cãi j, j=1,2,3,…2p+1, respectiv conectând qini]ial la (k2), (k2) la (k4)…(k2p-2) la (k2p) }i (k2p) la qfinal. Considerând cã proiec]ia ‘=1’ 3’ …2p+1’ a lui =1 3…2p+1 din Rm-1, se poate genera deja k1’,…,k2p+1’, având ca }i celule de bazã k1,…,k2p+1 .

Fiecare cale j’ din ‘ poate fi construitã în k1, k3, …, k2p+1 dupã cum urmeazã:

coordonatele xm dalungul cãii j din celula m-dimensionalã kj se ob]in prin interpolarea liniarã între valoarea lui xm ca început }i sfâr}itul lui j, utilizând propor]ionalitatea distan]ei la frontiera lui kj între +xm }i -xm }i cu extinderea interpolãrii la închiderea lui kj, cu includerea kj-1 (dacã j > 1) }i kj+1(dacã j < 2p+1) .

în cadrul construc]iei interpolãrii, se distinge o necesitate în cazul în care kj-1 (respectiv kj+1) }i kj au câteva celule de bazã }i cazul în care acestea nu au celule de bazã. În ambele cazuri, când kj este o celulã semi-infinitã, o frontierã artificialã pote fi generatã prin adãugarea (respectiv extragerea) unei cantitã]i fixe apropiate de frontiera celulei,mai jos de (mai sus de )cale, în ordinea interpolãrii posibile.

proiec]ia cãii ‘ poate fi generatã în câteva moduri prin construirea pentru Km-1 a cãii “ generatã în descompunerea de bazã Km-2 a lui Km-1 .

astfel, problema este redusã recursiv la generarea unei cãi în descompunerea de bazã din R.

În primul paragraf am men]ionat cã, descompunerea celularã a lui Cliber este polinomialã, cu grad maxim }i cu exponent dublu dependent de m. Pentru obiecte rigide m este fixat. Prin urmare, descompunerea lui Cliber este generatã cu perioadã polinomialã. Numãrul celulelor este acela}i, ordonate dupã mãrime. Numãrul polinoamelor în expresia k define}te celulele în descompunerea lui Cliber }i gradul maxim al acestor polinoame, rezultând cã algoritmul de construc]ie al acestor expresii este însu}i un polinom.

Pin urmare, deoarece numãrul variabilelor apãrute în propozi]ia TARSKI reprezentând condi]ia de adiacen]ã între douã celule, este 2m+1, }i este deci fix construc]ia grafului de conexiune G este polinomialã. În orice caz, acesta are un exponent multiplu, dependent de m. Un test de eficien]ã al adiacen]ei celulelor este propus de SCHWARTZ }i SHARIR. Utilizând acest test, construc]ia }i cercetarea grafului de conexiune necesitã timp dublu-exponen]ial în m.

Dacã C= R3 SO(3),putem construi o aplica]ie algebricã a lui C pe R6 cu maparea a 3 sfere S3 pe R3 utilizând proiec]ia stereograficã. Aceastã aplica]ie mapeazã oricare dar un singur punct din S3. Prin urmare distan]area unui punct în S3 nu poate modifica conexiunea lui Cliber atâta timp cât Cliber este o mul]ime de dimensiune 6, dar depãrtarea punctului determinã o submul]ime a lui C de dimensiune 3, adicã codimensiunea este mai mare decât 2. Din moment ce S3 este reprezentarea bivalentã a lui SO(3), douã puncte reprezintã configura]ia ini]ialã în Rm }i douã puncte reprezintã configura]ia finalã. Astfel graful de conexiune con]ine douã celule ini]iale }i douã celule ]intã. Oricare cale care une}te celula ini]ialã cu celula finalã este potrivitã.

Dacã C= R2 S1, putem construi o aplica]ie algebricã a lui C pe R3 cu maparea unui cerc unitar S1 pe R utilizând proiec]ia stereograficã.

Acestã aplica]ie mapeazã oricare punct dar unul singur din S1. Acest punct determinã o submul]ime de dimensiune 2 din C, distan]area acestuia afectând conexiunea lui Cliber. Prin urmare este necesar sã considerãm douã scheme de construc]ie, cu douã proiec]ii stereografice de la douã puncte diferite P1 }i P2 din S’. Acestea produc douã reprezentãri ale lui C,douã descompuneri COLLINS Kmliber,1 }i Kmliber,2 ale lui Cliber, precum }i douã grafuri de conexiune G1 }i G2. Cele douã grafuri pot fi combinate într-unul singur, conectând celulele din G1 care se intersecteazã, cu celulele din G2. Aceasta se pote realiza prin includerea polinoamelor din ecua]ia definirii R2 {P2} printre polinoamele prin intermediul cãrora se calculeazã Kmliber,1 (respectiv Kmliber,2).

Celula k1 Kmliber,1 se intersecteazã cu celula k2 Kmliber,2 dacã punctul (k1) este imaginea în Kmliber,1 a configura]iei a cãrui imagine în Kmliber,2 apar]ine la k2 .

Combinând rezultatele anterioare, putem ob]ine teorema :

TEOREMA SCHWARTZ }i SHARIR :

Problema planificãrii mi}cãrii unui obiect rigid liber semi-algebric A între un numãr finit de obstacole fixe rigide semi-algebrice Bi, i=1,…, q, pote fi solu]ionatã cu “timp polinomial (polinom dinamic)“, componentele polinomului definind obiecte în spa]iul de lucru }i cu grad maxim al acestor polinoame.

Spre exemplu, dacã atât A cât }i obstacolele sunt obiecte poligonale (respectiv poliedrice) în spa]iul bidimensional (respectiv tridimensional) complexitatea timpului metodei de mai sus este polinomialã cu complexitatea obiectului.

Aproximarea generalã de mai sus, referitoare la planificarea mi}cãrii, necesitã performan]e din punct de vedere al calculului exact cu numere algebrice.

3.6.4. PREZENTAREA ALGORITMULUI DESCOMPUNERII

COLLINS

Fie P={Pi(x1,x2…xn)} o mul]ime oarecare al polinoamelor din Q[x1, x2, …, xn] }i P(x1, x2, …, xn) produsul tuturor polinoamelor variabile Pi(x1,x2,…xn) din aceastã mul]ime.

Considerãm P(x1, x2,…,xn) un polinom în xn ale cãrui coeficien]i sunt func]ii xn-1 = =(x1,x2,…,xn-1). Aceste func]ii se pot nota cu Pxn-1(xn).

Fie k o regiune a lui Rn-1 ,Pxn-1(xn) are un numãr constant de rãdãcini reale distincte când xn-1 variazã peste k. Aceasta implicã un numãr constant al rãdãcinilor reale distincte al fiecãrui polinom Pi (acestea fiind polinoame în xn) pentru k. Se poate dovedi cã aceste rãdãcini sunt func]ii continue de xn-1 .

Presupunem cã dispunem de o tehnicã pentru construc]ia unei descompuneri cilindric-algebricã Kn-1 a lui Rn-1 astfel încât în orice celulã kKn-1 numãrul de rãdãcini reale distincte ale lui Pxn-1(xn) este constant,fie aceasta j. Fie fk1(xn-1)…fkj(xn-1) aceste rãdãcini }i y1, y2, …, yj valorile lor algebrice calculate cu (k). Putem scrie indicii în urmãtorul mod : y1 < y2 < …< yj. Astfel, pentru orice xn-1k, avem: fk1(xn-1) < fk2(xn-1)< … < fkj(xn-1), în caz contrar numãrul rãdãcinilor reale distincte ale lui Pxn-1(xn) nu poate rãmâne constant pentru k. Deci, fki(xn-1) pote fi consideratã ca rãdãcina ith a lui Pxn-1(xn) din k. Aceasta este o func]ie continuã de xn-1 pentru k.

O descompunerea cilindric-algebricã P-invariantã Kn din Rn se ob]ine de la Kn–1, descompunând fiecare cilindru k R, k Kn-1 în celule, unde (xn-1,xn) este valabil pentru (x1,x2,…,xn-1,xn) :

{(xn-1,xn)} , cu xn-1 k }i xn < fk1(xn-1) ;

{(xn-1,xn)} , cu xn-1 k }i xn = fki(xn-1), pentru i [1,j] ;

{(xn-1,xn)} , cu xn-1 k }i fki(xn-1) < xn < fki+1(xn-1), pentru i [1, j-1];

{(xn-1,xn)} , cu xn-1 k }i fkj(xn-1) < xn .

În plus, fie n-1 un model cilindric a lui Kn-1 .Pentru k Kn-1, punctele: (sn-1, y1-1), (sn-1, yj+1), (sn-1, y1), …, (sn-1, yj), (sn-1, (y1+y2)/2) ,…, (sn-1,(yj-1+yj)/2) cu sn-1=n-1(k) , sunt puncte algebrice care definesc un, model cilindric a lui Kn .

Deci problema care rãmâne este de a construi Kn-1, adicã o descompunere cilindric-algebricã a lui Rn-1 astfel încât în orice celulã k a acestei descompuneri numãrul rãdãcinilor reale, distincte, este de asemenea constantã peste aceea}i regiune. În plus, este bine-cunoscut cã numãrul rãdãcinilor distincte ale polinomului P(x) de grad k este egal cu k-h, unde h este gradul celui mai mare divizor comun (c.m.m.d.c) a lui P }i P’, derivatã a lui P .

Astfel o cale pentru construc]ia unei descompuneri cilindrice Kn-1, care poate servi la descompunerea de bazã a lui Rn este asigurarea cã, deopotrivã, gradul lui Pxn-1(xn) }i gradul c.m.m.d.c. a lui Pxn-1(xn) }i derivata lui Pxn-1(xn) relativã la xn, Pxn-1’(xn), rãmâne constant în fiecare celulã a lui Kn. Putem arãta cum se poate reliza aceasta .

Fie A(x) }i B(x) douã polinoame în x , având gradele a }i b (a > 0,b >0).

Considerãm ecua]ia :

A(x)Uj(x)B(x)Vj(x)=0 (1)

unde Uj }i Vj sunt douã polinoame având gradele (b-j-1) }i (a-j-1) (0 j min{a,b}-1).

Se pot trata coeficien]ii lui Uj }i Vj ca necunoscute. Identificarea cu 0 a coeficien]ilor, neschimbând puterea lui x în ecua]ia de mai sus, produce o mul]ime de (a+b-j) ecua]ii liniare implicând (a+b-2j) necunoscute.

Fie j(A,B) determinantul corespunzãtor celor (a+b-2j) ecua]ii pentru principalele (a+b-2j) puteri ale lui x.

PROPOZI[IA 1 :

Numãrul rãdãcinilor comune al celor douã polinoame A(x) }i B(x) având grade nenule este un întreg mic j astfel încât j(A,B) 0.

Demonstra]ie: În mod uzual se poate scrie:

A(x)=(x-1)…(x-a) ,

B(x)=(x-1)…(x-b) ,

Uj(x)=(x-1)…(x-b-j-1) ,

Vj(x)=(x-1)…(x-a-j-1) .

Considerãm cã j este un întreg mic astfel încât acua]ia (1) admite solu]ii diferite de 0. Când, r[1,bj1] }i s[1,aj1], avem rs, astfel considera]iile sunt contradictorii.

În plus, unica teoremã a factorizãrii pentru polinome implicã, ca fiecare rãdãcinã a lui Uj sã fie o rãdãcinã a lui B. Fiecare rãdãcinã a lui Vj sã fie o rãdãcinã a lui A, }i prin urmare, fiecare rãdãcinã (rãmasã) a lui A este o rãdãcinã a lui B. Astfel A }i B au j+1 rãdãcini comune.

Invers, dacã A }i B au j+1 rãdãcini comune, atunci existã polinoame nenule Uj }i Vj satisfãcând ecua]ia (1).

Dacã j=0, ecua]ia (1) determinã un sistem pãtratic cu (a+b) ecua]ii liniare, cu (a+b) coeficien]i a lui U0 }I V0, ca necunoscute.

Dacã determinantul acestui sistem, adicã 0(A,B) este diferit de 0, o solu]ie al acestui sistem este o solu]ie banalã }i A }i B nu au rãdãcini comune.

Dacã (A,B)=0, atunci existã U0 }i V0 diferite de 0 satisfãcând ecua]ia (1), }i A }i B au cel pu]in o rãdãcinã în comun.

Utilizãm procedeul recursivitã]ii. Presupunem cã, cunoa}tem deja faptul, cã ecua]ia (1) admite o solu]ie diferitã de 0 pentru orice I= 0, 1,…, j1. În acest caz }tim cã A }i B au cel pu]in j rãdãcini comune.

Considerãm ecua]ia

A(x)Uj(x)-B(x)Vj(x)= Cj(x)

unde Uj }i Vj sunt definite ca mai sus, }i Cj este un polinom arbitrar al cãrui grad este cel mult j1.

Sistemul de ecua]ii liniare cu coeficien]ii lui Uj, Vj }i Cj, se ob]ine identificând coeficien]ii acelora}i puteri ale lui x în ambele pãr]i ale ecua]iei (2), producând a+bj necunoscute; de aceea, acesta este un sistem pãtratic.

Cele a+bj ecua]ii reprezintã condi]ia ca, atunci când coeficien]ii fiecãrei puteri ale lui x în intervalul [j, a+bj1] sunt 0, sã se formeze un subsistem omogen de (a+b-2j)(a+b2j) ecua]ii a lui . are solu]ii diferite de 0 dacã }i numai dacã ‘ are solu]ii diferite de 0, adicã j(A,B)= 0.

Dacã j(A,B)0, atunci ecua]ia (2) }i prin urmare }i ecua]ia (1) au numai solu]ii banale, deci A }i B au exact j rãdãcini comune.

Totu}i, dacã j(A,B)=0, atunci existã Uj, Vj }i Cj care satisfac acua]ia (2).

Dupã cum }tim A }i B au cel pu]in j rãdãcini comune, deci Cj(x) trebuie sã fie divizibil. Dacã gradul lui Cj(x) este maximum j1, Cj poate fi identificat cu 0, astfel încât Uj }i Vj satisfac ecua]ia (1). Prin urmare A }i B au cel pu]in j+1 rãdãcini în comun. Astfel, cele douã polinoame A }i B ale lui Q[x] având gradul diferit de 0, putem determina exact câte rãdãcini au în comun, calculând j(A,B) pentru valori crescânde ale lui j. Acest calcul este necesar ,oricât am cunoa}te gradele lui A }i B .

Sã presupunem, de exemplu, cã A este un polinom de grad a, cu coeficientul puterii a egalã cu 0.

Deci, pentru orice j, incluzând j= 0, polinoamele Uj(x) =xb-j-1, cu 0 }i Vj(x) 0 formeazã solu]ii nenule ale ecua]iei (1), chiar dacã A }I B au una sau mai multe rãdãcini în comun. Deoarece gradul GCD a lui A }i B este egal cu numãrul rãdãcinilor comune al celor douã polinoame, avem :

PROPOZI[IA 2 :

Fie Pxn-1 (xn) de gradul k în xn. Pentru fiecare j =1,…, k, fie Qj(x1,…,xn-1) care reprezintã coeficientul unui termen din Pxn-1 (xn) având gradul j în xn }i Pj,xn-1 (xn) reprezintã suma termenilor lui Pxn-1(xn) al cãrui grad în xn este mai mic sau egal cu j.

Fie Rjl (x1,…,xn-1) =l (Pj,xn-1, P’j,xn-1 ) cu l =0,…, j-2. Fie Q o colec]ie a polinoamelor Qj(x1,…,xn-1) }i Rj l(x1,…,xn-1). Numãrul rãdãcinilor reale distincte ale lui Pxn-1 (xn) este constant pentru fiecare subset a lui Rn-1, în care toate polinoamele din Q pãstreazã un semn constant

(-,0,+).

Aceastã propozi]ie pote fi vãzutã mult prea sofisticatã, dar sã nu uitãm cã orice coeficient al polinoamelor Pxn-1 poate deveni 0 pentru o regiune a lui Rn-1.

Incluzând fiecare coeficient Qj (x1,x2,…,xn-1) a lui Pxn-1(xn) în Q se asigurã ca, gradul lui Pxn-1 sã rãmânã constant, în timp ce xn-1 variazã pentru orice celulã a lui Kn-1. Atunci când mai mul]i coeficien]i principali ai lui Pxn-1 sunt identici cu 0 pentru o celulã, putem include fiecare coeficient în Q. Aceasta nu necesitã sã includã termenii constan]i ai lui Pxn-1.

Similar, deoarece gradul lui Pxn-1 ar putea fi mai mic decât “cel mai mare “ grad k, cu scopul de a asigura cã gradul lui GCD (Pxn-1, P’xn-1) rãmâne constant pentru orice celulã Kn-1, trebuie sã includem în Q toate polinoamele Pjxn-1 ob]inute din Pxn-1 prin }tergerea unuia sau mai multor termeni principali de ordin înalt.

Deci, descompunerea cilindric-algebricã invariantã Q, Kn-1 , a lui Rn-1 este o descompunere de bazã apropiatã de construc]ia unei descompuneri algebrice cilindrice invariante P a lui Rn.

Prin urmare, problema originalã se reduce la o problemã de aceea}i formã pentru un nou set de polinoame în câteva variabile, de aceea aceea}i metodã de mai înainte poate fi aplicatã recursiv.

Când mai rãmâne o variabilã, problema de descompunere este trivialã }i recursivitatea poate fi încheiatã.

Exemplu :

Vom ilustra descompunerea lui COLLINS pe un exemplu simplu, unde C=R3, regiunea C-obstacolelor fiind o sferã unitarã centratã pe configura]ia (0, 0, 0) iar Cliber este astfel definitã :

Cliber={(x,y,z) R3 x2+y2+z2-1 > 0 }

Singurul polinom ce apare în aceastã defini]ie este :

P(x,y,z)= x2+y2+z2-1

Notãm polinomul P(x,y,z) în z cu P(x,y)(z).

Vom avea :

P (x,y)(z)= z2 + (x2+y2-1)

P’(x,y)(z)= 2z

Gradul lui P(x,y) este constant pentru orice R2 }i este egal cu 2.

Prin urmare 0( P(x,y), P’(x,y) )= 4(x2+y2-1), numãrul rãdãcinilor comune ale lui P(x,y) }i P’(x,y) este 0 dacã x2+y2-1 0 }i 1 în rest. Prin urmare, gradul lui GCD(P(x,y), P’(x,y) ) este constant când semnul lui x2+y2-1 rãmâne constant.

Vom reprezenta procedeul recursiv în R2 }i considerãm Q(x,y)= x2+y2-1 un polinom în y, adicã Qx(y)= y2+(x2-1). Gradul acestui polinom este constant pentru orice R }i este egal cu 2. Gradul celui mai mare divizor comun a lui Qx }i Qx’, adicã numãrul rãdãcinilor comune a lui Qx }i Qx’ este constant în fiecare regiune a lui R unde x2-1 pãstreazã semnul constant .

Urmãtoarele celule din R :

formeazã o descompunere K1 a lui R, astfel încât x21 pãstreazã un semn constant pentru fiecare celulã din acestã descompunere .

A}adar, aceastã descompunere pote fi utilizatã la descompunerea de bazã a descompunerii algebric cilindrice Q-invariante, K2 a lui R2. Aceastã descompunere se ob]ine cu ajutorul fiecãrei celule k a lui K1 din R2 }i prin descompunerea cilindricã pentru k în celule, conform cu rãdãcinile reale distincte ale lui Qx(y), adicã

pentru x(-1,+1), {0} pentru x = -1 }i x = +1 }i 0 în rest .

Astfel, K2 con]ine 13 celule (vezi figura 2.15) :

y

-1 +1 x

fig. 2.15. Aceastã figurã prezintã descompunerea COLLINS a lui R2 pentru un polinom x2+y21. Descompunerea genereazã 13 celule de dimensiune 2, 1 }i 0.

douã semiplane deschise x < -1 }i x > +1 ;

patru semidrepte deschise x = -1 y > 0, x = -1 y < 0 ,

x = +1 y > 0, x = +1 y < 0 ;

douã puncte (-1,0) }i (+1,0) ;

douã semicercuri deschise -1 < x < +1 x2+y2-1= 0 y >0

}i

-1 < x <+1 x2+y2-1= 0 y < 0

un disc deschis x2+y2-1 < 0 ;

douã regiuni bidimensionale peste }i sub cercul -1 < x <+1

x2+y2-1 > 0 y > 0 }i -1< x <+1 x2+y2-1 > 0 y < 0;

Aceastã descompunere poate fi utilizatã la descompunerea de bazã a descompunerii cilindric-algebrice P-invariantã K3 a lui R3.

Pentru acest scop, fiecare celulã kK2 fiind un ajutor în R3, se utizeazã rãdãcinile reale distincte ale lui P(x,y)(z) la descompunerea cilindricã peste k , adicã:

{- ,+} dacã (x,y) apar]ine discului x2+y2-1< 0;

{0} dacã (x,y) este (-1, 0) sau (+1, 0) sau apar]ine unuia din cele douã semicercuri y= -1 < x< +1 ;

în rest .

Astfel K3 con]ine 25 de celule (vezi figura 2.16):

douã semispa]ii: x < -1 }i x > +1 ;

patru semidrepte: x= -1 y =0 z > 0

x= -1 y =0 z < 0

x= +1 y =0 z > 0

x=+1 y=0 z < 0 ;

douã puncte: (-1, 0, 0) }i (+1, 0, 0) ;

douã semiplane: x= -1 y > 0

x= -1 y < 0

x= +1 y > 0

x= +1 y < 0 ;

douã semicercuri: -1 < x < +1 x2+y2-1= 0 y > 0 z= 0

}i

-1 < x < +1 x2+y2-1= 0 y < 0 z= 0 ;

douã semisfere: -1 < x <+1 -1 < y <+1 x2+y2+z2-1= 0

z > 0

}i

-1 < x <+1 -1 < y <+1 x2+y2+z2-1= 0

z < 0 ;

o cupolã deschisã : x2+y2+z2-1 < 0 ;

patru suprafe]e cilindrice: -1 < x <+1 x2+y2-1= 0 y > 0

z > 0

-1 < x <+1 x2+y2-1= 0 y < 0

z > 0

-1 < x <+1 x2+y2-1= 0 y > 0

z < 0

-1 < x <+1 x2+y2-1= 0 y < 0

z < 0 ;

douã volume tridimensionale peste }i sub sfera unitate :

x2+y2-1 < 0 x2+y2+z2-1 > 0 z > 0

}i

x2+y2-1 < 0 x2+y2+z2-1 > 0 z < 0

douã volume tridimensionale :

-1 < x <+1 x2+y2-1 > 0 y> 0

}i

-1 < x <+1 x2+y2-1 > 0 y< 0

z

y

-1

x

fig. 2.17. Figura reprezintã descompunerea COLLINS

a lui R3 pentru x2+y2+z2-1. Aceastã descompunere

con]ine 25 de celule de dimensiune 3, 2, 1 }i 0.

CAPITOLUL 4

IMPLEMENTAREA ALGORITMULUI DE PLANIFICARE

A MIȘCĂRII

În acest capitol este prezentat modul de realizare și utilizare a programului de simulare a planificării mișcării unui robot, folosind metoda descompunerii celulare exacte, care a fost descrisă pe larg în capitolul anterior.

Programul listat este anexat la sfârșitul lucrării. Algoritmul de planificare a mișcării robotului în spa]iul liber SCliber descompus în regiuni simple, numite celule, este implementat printr-un program realizat în limbajul ”C++”.

La lansarea în execu]ie a programului apare o scurtă descriere a “Modului de utilizare a programului“, care constituie un ghid pentru utilizator.

A. După această prezentare, pe ecran apare INTERFAȚA CU UTILIZATORUL care cuprinde trei ferestre (figura 4.1):

SPAȚIUL DE LUCRU AL ROBOTULUI (ROBOT WORKSPACE)

COMANDA (COMAND)

DIMENSIUNEA ROBOTULUI (ROBOT DIMENSION)

Cele trei ferestre sunt realizate prin intermediul funcției :

void chenar (int stg, int dr, int jos, char title, int activ)

Acestă funcție desenează o fereastră de tipul celor din figura 4.1.

Funcția primește ca parametru coordonatele (stânga, sus), (dreapta, jos) respectiv numele atribuit ferestrelor(în cazul nostru numele celor trei ferestre sunt enumerate mai sus ) și un întreg ce indică dacă fereastra este activă sau nu .

Se observă că, inițial fereastra “COMANDA” este activă (variabila activ=1) deoarece orice comandă se obține prin apăsarea unui buton din această fereastră .Celelalte ferestre devin active pe măsură ce se face referire la ele , dar inițial sunt dezactivate.

În momentul în care o fereastră devine activă, bara de sus a ferestrei, ce conține numele, își schimbă culoarea .

Fereastra “SPAȚIUL DE LUCRU AL ROBOTULUI” este spațiul în care robotul se deplasează ocolind obstacolele situate aici, pentru a ajunge dintr-o configurație inițială într-o c

fig.4.1. Spațiul de lucru populat cu obstacole

Fereastra "COMANDA" conține comenzile necesare ce se pot obține prin apăsarea butonului corespunzător din această fereastră , iar fereastra “DIMENSIUNEA ROBOTULUI” permite modificarea dimensiunii robotului simulat printr-un segment de dreaptă.

În continuare vom descrie modul de utilizare a butoanelor din cele două ferestre din partea de jos al ecranului , precum și funcțiile relizate de aceste butoane.

Fiecare buton este construit prin intermediul funcției:

void buton (int stg, int sus, int dr, int jos, int activ, int culoare, char title)

Această funcție are următorii parametrii :coordonatele colțului (stânga,sus) respectiv (dreapta, jos) al butonului, un întreg semnificând faptul că butonul este apăsat sau nu, un întreg care indică culoarea butonului iar ultimul paramatru indică, numele atașat butonului.

În fereastra “COMANDA” apar următoarele butoane:

MENU Acest buton va fi apăsat doar la ultimul pas al execuției programului , după ce robotul își termină toate activitățile. Utilizatorul va fi atenționat, la momentul corespunzător apăsării acestui buton , printr-un mesaj. La apăsarea butonului va apare un meniu despre care vom vorbi la momen- tul potrivit, meniu care conține informațiile obținute de robot în timpul activității sale în spațiul de lucru.

DIM La apăsarea acestui buton se dezactivează fereastra “COMANDA” și se activează fereastra de modificare a dimensiunii robotului.

Observații :

1. Pentru a părăsi această fereastră se apasă butonul OK . Chiar dacă modificați dimensiunea robotului, nu veți putea părăsi fereastra fără apăsarea acestui buton.

2. Se recomandă mărirea dimensiunii robotului, în cazul în care doriți să cerrcetați mai profund “Metoda descompunerii celulare exacte”, deoarece la dimensiuni mai mari ale robotului,curbele critice oferă o imagine mai clară.

OBST Se activează fereastra “SPAȚIUL DE LUCRU AL ROBOTULUI”, permițând utilizatorului să deseneze obstacole, sub formă de poligoane. Despre modul cum trebuie desenate obstacolele vom scrie mai târziu. După terminarea desenării obsacolelor, robotul își începe imediat activi-

tatea, deci rămâne în continuare aceeași fereastră ectivă.

Observație:

În caz de cercetare a “Metodei descompunerii celulare exacte“ se recomandă ca utilizatorul să plaseze în spațiul de lucru al robotului cât mai puține obstacole (1 sau maxim 2) deoarece în cazul mai multor obstacole apar foarte multe curbe critice și metoda este mai dificilă de urmărit și de studiat.

QUIT Apăsarea acestui buton determină revenirea în program. Nu se poate apăsa butonul, decât atunci când fereastra activă este “COMANDA”.

În fereastra “DIMENSIUNEA ROBOTULUI” apar următoarele butoane:

++ Se incrementează dimensiunea robotului cu doi pași deodată.

+ Se incrementează dimensiunea robotului cu un singur pas.

Ok Se părăsește fereastra de modificare a dimensiunii robotului.

Se decrementează dimensiunea robotului cu un pas.

Se decrementează dimensiunea robotului cu doi pași deodată.

Trecerea dintr-o fereastră în alta, precum și identificarea apăsării uni buton în cadrul unei ferestre se realizează prin funcția:

int COMANDA (void)

Plasarea în fereastra “COMANDA” se realizează prin utilizarea unei variabile globale comand căruia i se atribuie valoarea :comand = COMANDA().

Funcția COMANDA() nu face altceva decât testează poziția mouse-ului în fereastra “COMANDA”, astfel încât în funcție de coordonatele x și y să poată decide dacă este sau nu apăsat vreun buton din fereastra activă.

Astfel dacă (comand == 1) se presupune că este apăsat butonul DIM deci se va executa funcția :

void DIMENSIUNE (void)

Prin apelarea acestei funcții suntem plasați ăn fereastra ce permite modificarea dimensiunii robotului.Funcția se aseamănă principial cu funcția COMANDA(), adică testează

poziția cursorului mouse,verificând care buton este apăsat.

La apăsarea butonului Ok se dezactivează fereastra “DIMENSIUNEA ROBOTULUI”

și se trece automat în fereastra “COMANDA”.

O altă posibilitate este (comand == 2) ceea ce ne precizează că este apăsat butonul

OBST , deci se activează spațiul de lucru al robotului și se pot desena obstacolele.

O a treia posibilitate este (comand == 3) care ne semnalează că este apăsat butonul MENU deci se pot vizualiza informațiile obținute de robot.

Părăsirea interfeței se poate realiza fie cu butonul QUIT din fereastra “COMANDA”, fie cu butonul cu același nume din meniul obținut prin apăsarea butonului MENU .

Observație: orice apăsare necorespunzătoare a butoanelor în cadrul ferestrelor este semnalată ca eroare și este afișat un mesaj construit prin funcția:

void talk (int xp, int yp)

din fișierul “MOUSE1.CPP”.

B. În momentul în care variabila (comand == 2) ceea ce ne precizează că s-a apăsat butonul OBST se vor apela următoarele funcții :

void TEREN (int refa)

Din acest moment suntem plasați în “Spațiul de lucru al robotului” (Robot workspace) pe care-l vom părăsi doar după ce robotul își termină toate activitățiile în acest spațiu.

Prin urmare, această fereastră fiind activă, dacă parametrul întreg “refa” al fincției TEREN() ia valoarea 1 sa apelează funcția ce permite desenarea efectivă a obstacolelor în spațiul robotului, funcție ce este realizată în fișierul “MOUSE1.CPP” și care se numește:

void desen (void)

Vârfurile obstacolelor sunt memorate în tablourile de tipul întreg: int obst1[20], int obst2[20]… în funcție de câte obstacole se află în terenul robotului, memorarea relizându-se sub forma : obst1[x1, y1,x2, y2,…] în funcție de numărul vârfurilor obstacolului poligonal.

Apăsând butonul stânga mouse se desenează vârfurile obstacolului, rând pe rând. Dacă doeim să închidem poligonul convex care reprezintă obstacolul apăsăm butonul dreapta mouse.

Funcția de desenare este ușor de înțeles, astfel încât numai insistăm asupra modului ei de relizare, doar subliniem faptul că prin inetrmediul ei se obțin obstacole hașurate în terenul robotului (vezi figura 4.1).

Observații:

1. Această observație este utilă pentru cei ce vor să modifice numărul obstacolelor din spațiul de lucru al robotului. Precizăm că acest număr poate fi modificat în cadrul fișierului “MOUSE1.CPP” în funcția void desen (void), în finalul instucțiunii do…while(nrobst < 2) .

Astfel avem următoarele posibilități:

nrobst < 2: se desenează un singur obstacol.

Această situație este utilă dacă dorim o imagine mai clară, în special în cazul studiului metodei.

nrobst < 3: se desenează două obstacole .

nrobst < 4: se desenează trei obstacole.

2. După desenarea obstacolelor se afișează un mesaj care semnalează că s-a încheiat și această etapă de desenare a obstacolelor din cadrul execuției programului.

3. Vârfurile și laturile obstacolelor sunt memorate cu numele v0,v1,v2,… respectiv l0,l1,l2,… în ordinea în care sunt desenate.

Pentru hașurarea obstacolelor și marcarea conturului obstacolelor, adică trasarea cu alb a laturilor acestor obstacole se folosește funcția:

void obstacole (int pauza, int lwidth, int color)

C. Următoarea etapă este TRASAREA CURBELOR CRITICE. După cum știm din capitolul 3, în cadrul “Metodei descompunerii celulare exacte” întâlnim 5 tipuri de curbe critice.

Curbele critice de tipul 1 sunt trasate prin intemediul funcției :

void parmuchii (int s, int d)

Funcția trasează paralela la o latură a obstacolului, paralelă situată la distanța d de această latură.

Această distanță d este tocmai dimensiunea robotului, pe care o putem modifica din fereastra “DIMENSIUNEA ROBOTULUI”.

Pentru a trasa curbele critice de tipul 1, se apelează o altă funcție denumită și concepută astfel:

void paralela (double x1, double y1,double x2, double y2, int d)

Funcția trasează o paralelă la un segment de dreaptă, având capetele de coordonate (x1,y1), (x2,y2), la o distanță d.

Obținerea paralelei la un segment de dreaptă ce poate avea orice pantă, nu este un lucru chiar atât de simplu dacă rezolvăm problema prin metoda cadranelor și nu vectorial.

Pentru o înțelegere mai bună, vom prezenta un caz particular (y1 == y2) prin care se obține paralela la un segment de dreaptă pe baza funcției paralela ().

În primul pas se calculează centrul de greutate al segmentului:

xc =(x1 + x2) 2;

yc =(y1 + y2) 2;

Având în vedere că acest segment reprezintă defapt o latură a unui obstacol, trebuie să decidem de care parte a segmentului trasăm paralela.

Pentru a putea decide am procedat astfel:

am construit două puncte simetrice față de (xc ,yc) de o parte și de alta a segmentului;

xc1= xc +3 xc2 = xc -3

yc1= yc+3 și yc2 = yc -3

x1 x2 x

(x4,y4)

(xc2,yc2)

y1=y2 (xc,yc)

(xc1,yc1)

(x3,y3)

y

testăm dacă punctul (pixelul) (xc1 ,yc1 ) este de culoarea obstacolului (DARKGRAY):

dacă da atunci noul (xc ,yc) va fi tocmai (xc1 ,yc1);

dacă nu atunci noul (xc ,yc) va fi tocmai (xc2 ,yc2);

apelăm funcția int decare_parte (int x, int y1, int x2, int y2, int xv, int yv ) care returnează 1 sau 0 în funcție de poziția (xv ,yv) față de segmentul având capetele de coordonate (x1, y1) , (x2, y2).

astfel variabila int indica1=decare_parte (int x,int y1,int x2,int y2,int xv,int yv ) va fi 0 sau 1 în funcție de poziția (xc, yc) față de segment .Deci știm că (xc, yc) se află în interiorul obstacolului.

în continuare se construiește perpendiculara în (x1, y1):

x3= x1 x4= x1

y3= y1+d y4= y1 -d

se testează prin intermediul funcției decare_parte (x1, y1,x2, y2, x3, y3) de care parte a segmentului se află punctul (x3, y3).

dacă acest punct se află de aceeași parte cu (xc, yc) adică se află tocmai în obstacol sau de partea obstacolului, atunci primul punct de capăt al segmentului paralel este punctul de coordonate: px1= x4

py1= y4 .

dacă acest punct se află de partea opusă a lui (xc, yc) atunci primul punct de capăt al segmentului paralel este punctul de coordonate:

px1= x3

py1= y3

la fel se procedează și pentru obținerea celui de-al doilea punct de capăt al segmentului de dreaptă paralel;

se obțin astfel cele două puncte (px1, py1) , (px2, py2) pe care unindu-le obținem paralela la latura obstacolului .

Observație: la fel se procedează și în cazul în care panta segmentului de dreaptă este diferită de 0, deosebirea constă în faptul că în această situație trebuie să ne folosim de ecuația dreptei și ecuația perpendicularei într-un punct.

Curbele critice de tipul 2 se obțin prin apelul funcției:

void cercuri (int obst)

Se desenează curbele critice de tipul 2, adică cercurile de rază d (dimensiunea robotului) și centrul în vârfurile obstacolului.

Curbele critice de tipul 3 se obțin prin intermediul funcției :

void prelmuchii (int s, int d)

Sunt desenate curbele critice de tipul 3, adică prelungirile laturilor obstacolelor de o parte și de alta cu o lungime d egală cu lungimea robotului.

Un exemplu de trasare a curbelor critice de tipul 3 se obține prin lansarea în execuție a fișierului “PRELUNG.CPP”.

Pentru efectuarea acestei acțiuni, funcția apelează o nouă funcție:

void prelungire (double x1, double y1, double x2, double y2, int d)

Funcția prelungește un segment de dreaptă atât la dreapta cât și la stânga cu o lungime d.

d x1, y1 x2, y2 d

Curbele critice de tipul 4 se obținprin intermediul funcției :

void dist_v (int ob1, int ob2)

Reamintim că curbele critice de tipul 4 apar doar în cazul existenței mai multor obstacole în spațiul de lucru al robotului (minim două obstacole) și numai în situația în care două vârfuri, aparținând la două obstacole, care pot fi situate pe o dreaptă, se află la o distanță mai mică decât lungimea robotului.

Un exemplu de trasare a curbelor critice de tipul 4 este ilustrat prin lansarea în execuție a fișierului “COLT2.CPP”.

fig.4.2. Reprezentarea curbelor critice

Pentru desenarea curbelor critice de tipul 4 se folosesec funcțiile:

void dist_v (int ob1, int ob2)

Funcția testează dacă distanțele dintre vârfurile corespunzătoare la două obstacole din terenul robotului, vârfuri care pot fi plasate pe o dreaptă, depășesc lungimea robotului.

În cazul în care această distanțăeste mai mică decât lungimea robotului, se însemnează cu verde vârfurile obstacolelor pentru care s-a relizat testarea, se desenează cercuri de rază 5 în cele două vârfuri și se apelează funcția:

void colt2 (double x1, double y1, double x2, double y2, int d)

Funcția are următorul scop: caută două vârfuri aparținând la două obstacole astfel încât dreapta ce trece prin ele este tangentă la obstacole în vârfurile respective, după care trasează această dreaptă, pe ecran urmând să apară curbele critice de tipul 4 obținute, adică două segmente de dreaptă tangente la obstacole în vârfurile respective, având dimensiunea d-h (h fiind distanța dintre vârfurile în discuție).

În cadrul acestei funcții se apelează funcția:

double distanța (int xx1, int yy1, int xx2, int yy2)

Funcția returnează distanța dintre două puncte, având coordonatele precizate ca și parametrii în funcție.

Curbele critice de tipul 5 se obțin cu ajutorul funcției:

void dubios (int s1, int s2)

Se desenează acest tip de curbe critice, folosind pentru aceasta și funcția:

void curba (double x1, double y1, double x2, double y2, double xd, double yd, int d)

Funcția se referă la muchia unui obstacol și un vârf al unui obstacol convex care nu este punct de capăt pentru muchie. Se testează dacă distanța de la vârful obstacolului la muchie este mai mică sau mai mare decât dimensiunea robotului. În cazul în care distanța nu depășește dimensiunea, funcția desenează o concoidă în vârful obstacolului.

Vizualizarea concoidelor pentru un obstacol se pote obține prin lansarea în execuție a fișierului “DUBIOS.CPP”.

Pentru aplicația concretă care s-a luat în considerare, o imagine asupra spațiului de lucru al robotului populat cu obstacole și cele 5 tipuri de curbe critice pentru fiecare obstacol s-a obținut în figura 4.2.

D. După ce s-au trasat și curbele critice în următorul pas din evoluția programului se cere utilizatorului să introducă coordonatele configurației inițiale și finale.

Se precizează că aceste puncte nu au voie să depășească spațiul de lucru al robotului. Pentru evitarea acestei situații se specifică utilizatorului limitele inferioare și superioare ale spațiului disponibil.

“Metoda descompunerii celulare exacte” prevede ca această configurație inițială și finală să fie situată în câte o regiune formată de curbele critice.

Din acest motiv pot apare următoarele situații:

1. Configurația inițială se află în interiorul unei regiuni.

În această situație se desemnează regiunea respectivă drept regiunea de unde robotul își începe drumul.

2. Configurația finală se află în interiorul unei regiuni.

În această situație se desemnează regiunea respectivă drept regiunea unde robotul se oprește.

3. Configurația inițială se află în afara tuturor regiunilor.

În acest caz se caută regiunea cea mai apropiată de configurația inițială, această regiune reprezentând regiunea de unde robotul pornește.

4. Configurația finală se află în afara tituror regiunilor.

Se procedează ca și la punctul 3.

5. Una dintre configurații (sau amândouă) se află pe o curbă critică. În această situație se cere reintroducerea configurației respective de către utilizator.

6. Una dintre configurații (sau amândouă) se află pe un obstacol.Se procedează ca și în cazul 5.

Pentru introducerea configurațiilor inițiale și finale se apelează funcția:

void CONFIGURAȚII(void)

Se afișează un mesaj prin care se cere introducerea configurației inițiale și finale, apăsând butonul stânga respectiv dreapta mouse.

Funcția limitează posibilitatea introducerii celor două configurații la spațiul de lucru al robotului (MAXX=639,MAXY=350).

Se memorează punctul introdus drept configurație inițială în tabloul config[2cont] pentru cont=0, respectiv 1, iar punctul desemnat ca și configurație finală în același tabloul, la elementele config[2], respectiv config[3].

În situația în care punctul introdus ca și Ci nu aparține nici unei regiuni, atunci se consideră ca și regiune de unde robotul pornește, regiunea aflată la cea mai mică distanță de Ci. Dacă Cf nu aparține nici unei regiuni se procedează la fel ca mai sus.

Pentru cele două situații menționate anterior se stabilește în cadrul funcției

void REGIUNI(void)

cele mai mici coordonate ale punctelor de intersecție aparținând unei regiuni (minimx, minimy) respectiv cele mai mari coordonate ale punctelor de intersecție aparținând unei regiuni (maximx, maximy) și se memorează aceste informații în tabloul MINMAX[ ][ ] după cum urmează:

MINMAX[c_regiuni][0]=minimx;

cea mai mică coordonată x;

MIMAX[c_regiuni][1]=minimxy;

coordonata y corespunzătoare lui minimx;

MINMAX[c_regiuni][2]=maximx;

cea mai mare coordonată x;

MINMAX[c_regiuni][3]=maximxy;

coordonata y corespunzătoare lui maximx;

MINMAX[c_regiuni][4]=minimy;

cea mai mică coordonată y;

MINMAX[c_regiuni][5]=minimyx;

coordonata x corespunzătoare lui minimy;

MINMAX[c_regiuni][6]=maximy;

cea mai mare coordonată y;

MUNMAX[c_regiuni][7]=maximyx;

coordonata y corespunzătoare lui maximy.

În finalul funcției se testează dacă Ci și Cf aparțin unei regiuni sau nu.

În caz negativ calculează distanța de la punctul Ci la (MINMAX[s][0], MINMAX[s][1]) unde s este numărul regiunii testate, iarregiunea corespunzătoare distamței minime va fi regiunea de unde robotul pornește.

La fel se procedează și în cazul Cf doar că testul se face față de punctul de coordonate (MINMAX[s][2], MINMAX[s][3]).

Observații:

1. Cazurile 3 și 4 se întâlnesc în cazul în care spațiul robotului nu este populat de multe obstacole.

2. Programul memorează cele două regiuni de start și stop, ele fiind utile pentru construcția grafului de conexiune.

E. După stabilirea configurației inițiale Cinițial și configurației finale Cfinal se trece la detectarea punctelor de intersecție dintre curbele critice ce apar în spațiul robotului.

Aceste puncte de intersecție sunt necesare pentru detectarea, în continuare, a stopurilor orare și trigonometrice.

Pentru a fi mai evident rolul acestor puncte, menționăm că pentru a detecta stopurile, robotul va fi plasat în fiecare punct de intersecție aferentă fiecărei regiuni și va efectua o mișcare de rotație în sens orar, respectiv în sens trigonometric în fiecare din acest puncte.

Funcția creată în acest scop este:

void PUNCTE_DE_INTERSECȚIE (void)

Pentru a găsi și memora aceste puncte se procedează astfel:

se baleiază ecranul pe verticală până când este detectat un pixel de culoarea curbelor critice (COL_CURBE);

dacă s-a găsit un pixel de culoarea COL_CURBE se începe un proces de căutare în jurul pixelului respectiv, al unui alt pixel de aceeași culoare;

dacă s-a găsit un pixel roșu (COL_CURBE==RED) se incrementeazăun contor;

dacă s-a găsit un pixel de aceeași culoare cu culoarea conturului obstacolului acest contor va lua valoarea 4;

putem spune că pixelul testat esze punct de intersecție dacă și numai dacă are în jur cel puțin 4 pixeli de aceeași culoare sau dacă este tocmai punctul de intersecție dintre curba critică și conturul obstacolului.

Datorită unor inexactități grafice, în continuare se elomonă punctele de intersecție suplimentare printr-un simplu proces de optimizare. O imagine a acestor puncte de intersecție aferente curbelor critice din aplicația noastră poate fi văzută în figura 8.

Pentru memorarea punctelor de intersecție se utilizează un tablou de întregi:

int t_puncte[2000] în care punctele sunt înscrise în forma: t_puncte[x1,y1,x2,y2,x3,y3,…].

F. Urmează ETAPA DE DETECTARE ȘI MEMORARE A REGIUNILOR formate de curbele critice.

Funcția ce a fost creată în acest sens este:

void REGIUNI (void)

Pentru a detecta regiunile se adoptă următoarea strategie:

se hașurează spațiul din terenul robotului care se află în exteriorul acestor curbe critice.

se baleiază ecranul pe verticală până când se detectează un pixel negru. Aceasta înseamnă că suntem tocmai într-o regiune.

Pentru a distinge regiunile detectate de cele nedectate se hașurează fiecare regiune găsită cu o culoare COL_FILL_REGIUNE.

fig.4.3. Caută și memorează regiunile necritice

Imediat după ce s-a detectat o regiune se caută punctele de intersecție aparținând acelei regiuni.

Pentru a afla care puncte din tabloul t_puncte[ ] aparțin regiunii în discuție, se ia pe rând fiecare punct din tablou și se testează dacă în jurul punctului se află un pixel de culoarea COL_FILL_REGIUNE, adică de culoarea regiunii detectate.

Dacă se găsește un astfel de pixel acesta se colorează cu YELLOW pentru a-l distinge și se memorează în tabloul t_regiuni[c_regiuni][puncte].

Acest tablou va conține pentru fiecare regiune numărul punctelor de intersecție din tabloul t_puncte iar t_regiuni[c_regiuni][0] va indica numărul punctelor de intersecție aparținând regiunii.

După detectarea punctelor de intersecție aparținând regiunii se hașurează regiunea respectivă cu COLL_FILL_REZOLVAT și se trece la căutarea unei alte regiuni, procedeul repetându-se. Cum sunt detectate aceste regiuni poate fi văzut în figura 4.3.

G. DETECTAREA ȘI MEMORAREA STOPURILOR TRIGONOMETRICE se relizează prin apelul funcției:

void STOPURI_TRIG (void)

care determină apariția, în spațiul de lucru al robotului, al unui robot de dimensiune d=dimrobot[2]-dimrobot[0].

Robotul detectează stopurile trigonometrice pe baza următoarelor strategii:

se situează în prima regiune pe care a detectat-o;

ia pe rând fiecare punct de intersecție aparținând regiunii și plasându-se în aceste puncte efectuează o mișcare de rotație în sens trigonometric;

dacă în timpul rotației robotul “atinge” un pixel de culoarea conturului obstacolului generează un beep(), însemnând că a găsit un stop , acesta putând fi o latură sau un vârf al obstacolului. În figura 4.4 se prezintă robotul care efectuează mișcarea de rotație în spațiul său de lucru.

fig. 4.4. Detectarea de către robot a stopurilor

orare și trigonometrice

Pentru a memora stopurile trigonometrice s-a deschis un fișier iostream “test” care conține următoarele informații:

numărul regiunii;

punctele de intersecție aparținând regiunii;

stopurile trigonometrice aferente fiecărui punct din regiunea respectivă.

Observație:

După terminarea înscrierii acestor informații în fițierul “test”, obligatoriu, trebuie să închidem fișierul pentru că programul prevede lucrul cu mai multe fișiere.

Cum se realizează diferențierea înte un vârf și o latură a obstacolului lovit de robot este evidențiat în funcția:

void save_file(int x, int y)

Funcția primește ca și parametru coordonatele x și y ale punctului în care robotul lovește obstacolul.

Folosindu-ne de ecuația dreptei vom testa dacă x și y verifică ecuația dreptei sau sunt tocmai coordonatele unuia dintre vârfurile obstacolului, vârfuri ce sunt memorate în tabloul obst1[ ].

În primul caz stopul trigonometric îl constituie tocmai o latură al obstacolului, iar în cel de-al doilea caz stopul este unul dintre vârfurile obstacolului.

H. CREAREA FIȘIERULUI CU LISTA STOPURILOR TRIGONOMETRICE

Pentru o prezentare mai adecvată a listei cu stopurile trigonometrice detectate de robot, vom deschide un nou fișier “trig”.

Funcția:

void LISTA_STOPURI_TRIG ( )

nu are doar rolul de a rescrie fișierul “test”, ci realizează și memorarea laturilor și vârfurilor dectate ca și stopuri, corespunzătoare fiecărei regiuni.

Deci, funcția citește fiecare linie a fișierului “test” și memorează laturile și vârfurile într-un tablou multidimensional: char stop_or_trig[cont_reg][i][j] unde

int cont_reg = numărul regiunii;

int i = poziția în tablou a punctului de intersecție;

int j = poate lua două valori j=0 sau j=1.

Dacă j=0, stop_or_trig[cont_reg][i][0] poate fi ‘l’ sau ‘v’ indicând că este vorba de o latură sau de un vârf.

Dacă j=1, stop_or_trig[cont_reg][i][1] indică numărul latirii sau al vârfului.

Observație:

Remarcăm faptul că vom folosi același tablou atât pentru memorarea stopurilor trigonometrice cât și pentru memorarea stopurilor orare.

Astfel pentru a face distincție între cele două tipuri de stopuri, ascesta se memoreză astfel:

toate stopurile trigonometrice se memorează la pozițiile impare ale tabloului stop_or_trig[ ][ ][ ] adică pentru i= 2k+1 , k= 0,1,2,…;

toate stopirile orare se memorează la pozițiile pare ale tabloului stop_or_trig[ ][ ][ ] adică pentru i= 2k ,k=0,1,2,…;

I. DETECTAREA ȘI MEMORAREA STOPURILOR ORARE se relizează prin apelul funcției:

void STOPURI_ORARE (void)

care permite detectarea de către robotul ce efectuează mișcări de rotație în sens orar a stopurilor orare.

Principiul de detecție și memorare nu se deosebește de cel al stopurilor trigonometrice, de aceea nu insistăm asupra acestei etape.

J. CREAREA FIȘIERULUI CU LISTA STOPURILOR ORARE

Prin intermediul funcției:

void LISTA_STOPURI_ORARE( )

se memorează laturile și vârfurile obstacolelor detectate de robot ca și stopuri orare.

Principiul de memorare este același cu cel al stopurilor trigonometrice, deosebirea constă în faptul că stopurile orare se memorează la pozițiile pare ale tabloului stop_or_trig, adică pentru i=2k, k=0,1,2,… .

Observații :

1. La ieșirea din program utilizatorul poate vizualiza stopurile trigonometrice respectiv orare prin deschiderea fișierelor “trig”,respectiv “orar”.

2. Toate aceste informații referitoare la stopurile detectate de robot în fiecare regiune (celulă) din spațiul de lucru pot fi vizualizate în meniul final, prin apăsarea butonului Stopuri trig., respectiv Stopuri orare .

K. ADIACENȚA CELULELOR

Pentru a putea construi graful de conexiune este necesar să stabilim în prelabil o relație de adiacență între celulele din spațiul de lucru al robotului.

În acest scop s-a creat funcția:

void ADIACENȚA (void)

prin intermediul căreia se stabilesc regiunile adiacente între ele.

Rezultatele obținute în urma execuției acestei funcții pot fi vizaualizate prin deschiderea fișierului iostream “adiac”, sau din meniul final apăsând butonul Adiacența .

În primul rând se elimină din tabloul stopurilor trigonometrice și orare, stopurile care se repetă pentru aceeași regiune.

Celulele adiacente cu o anumită celulă se stabilesc impunând condițiile:

cele două celule să aibă o frontieră comună (adică să aibă puncte de intersecție comune);

stopurile trigonometrice și orare se respecte condițiile impuse în capitolul 3.

Celulele adiacente vor fi memorate într-un tablou bidimensional:adiacent[k][m] unde k -numărul regiunii pentru care se studiază adiacența ;

m- numărul regiunii adiacente cu k, în poziția corespunzătoare a tabloului punându-se 1.

L. GRAFUL DE CONEXIUNE

Se desenează în cadrul fișierului “HELP2.CPP” prin intermediul funcției

void h13(void).

Funcția permite desenarea grafului prin apelul recursiv al funcției

void graf(int rad, int xb, int yb)

dependent de numărul celulelor cu care este adiacentă o anumită celulă.

Astfel dacă o celulă este adiacentă cu:

o singură celulă se apelează o singură dată funcția graf();

două celule se apelează de două ori funcția graf();

trei celule se apelează de trei ori funcția graf().

Funcția graf() este asemănătoare principial cu h13(void), continuând construcția arborescentă a grafului pentru o celulă de bază.

După parcurgerea acestor pași, pe ecran apare un mesaj prin care utilizatorul este atenționat asupra existenței tuturor informațiilor obținute pe parcursul execuției programului. Aceste informații pot fi obținute prin apăsarea butonului Alege din fereastra “COMANDA”.

Astfel se va deschide un meniu “INFORMAȚII UTILE” care conține următoarele butoane:

PREZENTARE se prezintă pe scurt modul de utilizare al programului, astfel încât orice utilizator să poată folosi acest program citind cele căteva pagini afișate prin apăsarea acestui buton.

STOPURI TRIG. se prezintă câteva noțiuni despre stopurile trigonometrice întâlnite în metoda descompunerii celulare exacte, precum și lista de stopuri trigonometrice detectate de robot în fiecare regiune din spațiul de lucru.

STOPURI ORARE se prezintă câteva noțiuni despre stopurile orare întâlnite în cadrul metodei de descompunere studiată, precum și lista de stopuri orare detectate de robot în fiecare regiune din spațiul de lucru.

ADIACENȚA se prezintă pe scurt importanța depistării regiunilor adiacente între ele, după care se afișează lista stopurilor tuturor adiacențelor detectate.

GRAF. CONEX. se prezintă câteva noțiuni despre graful de conexiune și se afișează graful pentru aplicația studiată.

QUIT permite revenirea în program.

fig. 4.5. Construcția grafului de conexiune .

Caută o traiectorie liberă între Cinițial și Cfinal.

Observație : nu întâmplător am realizat descrierea modului de utilizare al programului atât înainte de execuția efectivă a acestuia cât și în final, la apăsarea butonului PREZENTARE, ci cu certitudinea că este foarte important ca un utilizator să știe cum să utilizeze programul și să înțeleagă astfel scopul pentru care acesta a fost conceput.

CAPITOLUL 5

CONCLUZII

Crearea roboților autonomi este o sarcină majoră în Robotică. Cu excepția anumitor domenii limitate, nu este real să se anticipeze și să se descrie explicit toate mișcările pe care robotul trebuie să le execute pentru a realiza sarcina cerută. Chiar și în cazurile când o asemenea descriere este posibilă, este util să se încorporeze dispozitive de planificare automată a mișcărilor în sistemele de programare off-line ale robotului.

Planificarea mișcării unui robot prezintă o varietate neașteptată de aspecte dificile de calcul. Astfel pe parcursul primului capitol s-au prezentat aspectele planificării mișcării unui robot,specificând problema de bază a planificării unei traiectorii. Cea mai simplă problemă de planificare presupune că robotul este singurul obiect în mișcare în spațiul de lucru, care nu posedă proprietăți dinamice evitând astfel problemele temporale.

Se consideră de asemenea că robotul nu intră în contact cu obiectele înconjurătoare, evitând astfel problemele legate de interacțiunea mecanică dintre obiecte fizice. Aceste considerații transformă problema planificării “fizice” a mișcării într-o problemă pur geometrică. Deși problema de bază a planificării traiectoriilor este simplificată, ea este totuși o problemă dificilă cu mai multe soluții și cu extensii directe spre probleme mai complicate.În mod intuitiv, obiectul mobil (robotul) într-o astfel de problemă este denumit în literatură “obiect liber zburător”. Problema de bază a planificării traiectoriei presupune că robotul parcurge cu exactitate traiectoria generată de planificator, și că atât geometria robotului, cât și pozițiile obstacolelor sunt cunoscute cu exactitate, însă în relitate nici o problemă de planificare nu satisface aceste ipoteze.

Un robot este conceput să relizeze trei categorii de sarcini:

deplasări pure;

eforturi pure;

sarcini compliante care combină deplasările cu eforturile;

Mișcarea ce trebuie executată de robot este specificată de planul de mișcare, iar o traiectorie precizează o secvență continuă a configurațiilor pe care robotul trebuie să le traverseze spre configurația finală.

De asemenea s-a presupus că robotul deține informații complete și exacte despre mediul său înconjurător. În majorotatea situațiilor însă, geometria spațiului de lucru poate fi doar parțial cunoscută în momentul planificării. Rezolvarea problemei de planificare a mișcării necesită cunoașterea modelului mediului înconjurător.Dacă robotul nu deține suficiente informații despre mediul său, acesta trebuie să se bazeze pe înregistrarea informațiilor prin inetrmediul sistemului senzorial și să reacționeze la informațiile preluate de senzori.

Asigurarea îndeplinirii sarcinii unui robot se bazează pe trei acțiuni majore:

stabilirea unei strategii de navigare;

modelarea spațiului de lucru;

planificarea mișcării în spațiul de lucru respectiv.

Stabilirea unei strategii de navigare se referă la determinarea metodelor de deplasare ale robotului în acord cu tipul sarcinii de executat. Se disting trei tipuri de strategii de navigare.

Stabilirea unei hărți de navigare în spațiul considerat se poate face fie independent de orice acțiune a robotului prin memorarea unei configurații date, care de regulă, reprezintă starea inițială a spațiului de licru, fie în cursul executării sarcinii pe măsură ce robotul își descoperă propriul spațiu de lucru.

Prin intermediul cunoștiințelor astfel acumulate se poate împărți spațiul de lucru în calule independente care să reprezinte zone accesibile respectiv interzise pentru robot. Acestă operație se numește modelarea spațiului de lucru al robotului. Metodele de modelare prezentate pe parcursul capitolului 1 sunt:

metoda grilei omogene;

metoda arborelui;

metoda grilei neomogene;

metoda poligoanelor convexe;

metoda punctelor de trecere;

În capitolul 2 s-au abordat metodele de planificare a mișcării unui robot. Problema poate fi abordată în două moduri (global sau local) de unde rezultă două tipuri de metode de planificare: globale și locale.

Aplicarea unei metode globale necesită cunoașterea completă “apriori” a spațiului de lucru, modelarea corespunzătoare a spațiului liber, cercetarea tuturor traiectoriilor posibile și selectarea uneu anumite traiectorii corespunzătoare unui criteariu de cost minim. O astfel de metodă garantează existența sau inexistența unei soluții. De asemenea, metodele globale de planificare se pot adapta ușor la programarea off-line.

Aplicarea unei metode locale necesită cunoașterea parțială a spațiului de lucru. O astfel de metodă nu garantează atingerea configurației finale, dar prezintă avantajul unei bune adaptări în timp real.

În ambele cazuri, rezolvarea problemei de planificare presupune rezolvarea unor probleme de natură geometrică sau de geometrie combinată cu cinematică și-sau dinamică. În astfel de situații se utilizează cu precădere rezultatele geometriei algoritmice.

Printre metodele de planificare abordate pe percursul capitolului 2 se află:

metoda hărții drumurilor:

drumul cel mai sigur;

metoda grafului vizibilității;

metoda retractării;

metoda drumului liber;

metoda descompunerii celulare:

descompunere celulară exactă;

descompunere celulară aproximativă;

metoda câmpului potențial;

Metoda hărții drumurilor se bazează pe ideea captării conexității spașiului liber al robotului într-o rețea de curbe unidimensionale, numită “harta drumurilor” HD. Odată construită, aceasta este utilizată ca o bancă de traiectorii standard dintre care se alege aceea ce unește configurația inițială cu cea finală.

Metoda câmpului potențial este o metodă locală de planificare care tratează robotul, reprezentat ca un punct în spațiul configurațiilor, ca pe o particulă aflată sub influența unui câmp potențial artificial, ale cărui variații reflectă structura “structura” spațiului liber.Funcția potențial este definită pe spațiul liber ca suma dintre un potențial atractiv, ce atrage robotul spre configurația finală, și un potențial repulsiv, ce îndepărtează robotul de obstacole.

Lucrarea prezintă în capitolul 3 o metodă de planificarea mișcării unui robot bazată pe descompunerea celulară exactă.

În spațiul de lucru populat cu obstacole poligonale, robotul poate efectua mișcări de translație și rotație. În acest caz spațiul configurațiilor este SC=R2 S1 iar C-obstacolele sunt regiuni tridimensionale aparținând suprafețelor regulate. Metoda prezentată nu este cea mai eficientă, dar conceptual este destul de simplă.

Metoda descompunerii celulare constă în descompunere spațiului liber al robotului (SCliber)

într-o colecție de regiuni simple, denumite celule, astfel încât să poată fi generată cu ușurință o traiectorie între oricare două configurații (Cinițial și Cfinal).

Se construiește și se cercetează un graf neorientat care reprezintă relația de adiacență într celule.Acest graf se numește graf de conexiune. Nodurile acestui graf sunt celule aprținând spațiului liber al robotului, două noduri fiind conectate printr-o legătură dacă și numai dacă, celulele corespunzătoare sunt adiacente. Rezultatul căutării este o secvență de celule denumită canal. O traiectorie liberă se poate obține pe baza acestei secvențe.

Metoda descompunerii celulare se împarte într-o metodă exactă și o metodă aproximativă. Descompunerea celulară exactă descompune spațiul liber în celule a căror reuniune este SCliber. Frontierele celulelor sunt porțiuni de curbe critice.

Descompunerea celulară aproximativă produce celule cu forme predefinite (de exemplu dreptunghiuri) și a căror reuniune este strict inclusă în spațiul liber. Frontiera unei celule nu caracterizează nici un fel de discontinuitate și nu are sens fizic.

Problema planificării mișcării unui obiect rigid bidimensional, care se deplasează într-un spațiu populat de obstacole poligonale a fost studiat de Schwartz și Sharir în 1983.

Principiul metodei descompunerii celulare exacte

Robotul este modelat printr-un segment de dreaptă PQ care poate efectua mișcări de translație și rotație într-un spațiu de lucru bidimensional W=R2.

Spațiul de lucru este populat cu obstacole a căror reuniune formează o regiune poligonală notată cu B. Spațiul configurațiilor SC al robotului este SC=R2 S1, astfel încât fiecare configurație se parametrizează prin (x,y,), unde x și y pot fi coordonatele lui P în sistemul fix SW atașat spațiului de lucru W, dacă se alege P=OA ca origine a sistemului SA atașat robotului, iar unghiul [0,2) este format de axele Ox corespunzătoare celor două sisteme. Lungimea segmentului PQ este a.

Ideea de bază a planificării traiectoriilor, în acest caz, constă în descompunerea mulțimii de poziții ale robotului în regiuni necritice bidimensionale, transformarea acestor regiuni în celule tridimensionale și reprezentarea relației de adiacență între aceste celule într-un graf de conexiune. Celulele bidimensionale sunt astfel alese, încât să mențină o structură omogenă în cilindrii de deasupra lor. Celulele conținute în astfel de cilindrii explicitează această structură. Frontierele acestor regiuni necritice se numesc curbe critice.

Astfel regiunea C-obstacolelor SCB este o regiune tridimensională, mărginită de fețe ,care sunt porțiuni de C-suprafețe riglate de tipul A sau B. O suprafață de tip A corespunde situației când segmentul PQ conține vârful unui obstacol. O suprafață de tip B corespunde situației în care, fie P, fie Q, este conținut de muchia unui obstacol.

Noțiunea de curbă critică înglobează:

proiecțiile pe planul xOy ale suprafețelor care reprezintă frontiere în regiunea C-obstacolelor SCB.

curbele conținute în suprafețele frontieră din SCB pe porțiunile unde planul tangent la aceste suprafețe este perpendicular pe planul xOy.

Aceste curbe sunt mulțimi de puncte pentru care structura regiunii C-obstacolelor aflate deasupra planului xOy înregistrează schimbări cantitative.

Într-adevăr când este traversată o astfel de curbă, fie se modifică mulțimea fețelor lui SCB care sunt intersectate de o linie perpendiculară pe planul xOy în poziția curentă, fie se modifică numărul punctelor de intersecție.

Curbele critice se clasifică în șase tipuri, după cum urmează :

muchiile E ale obstacolelor sunt curbe critice de tipul 0;

segmentul de dreaptă situat la distanța a de muchia E, având aceeași lungime E, este o curbă critică de tip 1;

arcul de cerc de rază a, cu centrul în vârful X al unui obstacol și mărginit de cele două semidrepte care conțin muchiile ce se îmbină în X, este o curbă critică de tip 2;

dacă E este muchia unui obstacol și X un vârf convex la unul din capetele lui E, segmentul de dreaptă trasat de capătul P când robotul glisează de-a lungul lui E până când Q rămâne încă în E, este o curbă critică de tip 3;

fie X1 și X2 două vârfuri ale unui obstacol convex, astfel încât linia ce trece prin cele două vârfuri este tangentă la obstacol în vârfurile respective; segmentul de dreaptă trasat de capătul P când robotul translatează atingând simultan X1 și X2 este o curbă critică de tipul 4;

fie E muchia unui obstacol și X vârful unui obstacol convex B, care nu este punct de capăt pentru E, situat la distanța h de E; dacă h < a, curba trasată de P când robotul se deplasează astfel încât atinge E și X, fiind tangent la B în X, este o curbă critică de tip 5;

Mulțimea curbelor critice este finită. Fiecare punct de sfârșit al unei curbe critice este plasat fie în altă curbă critică, fie la infinit. Ele sunt curbe algebrice ce pot fi: de gradul 1(tipurile 0,1,3 și 4), de gradul 2 (tipul 2) sau de gradul 4 (tipul 5). Oricare două curbe critice pot avea doar un număr finit de intersecții, cu excepția cazurilor în care coincid.

Orice zonă deschisă,mărginită de curbe critice este o regiune necritică.

Vârfurile și muchiile obstacolului, pe care robotul le atinge atunci când se rotește în jurul punctului P(x,y), fără a atinge interiorul lui B se numesc stopuri. Se pot evidenția două categorii de stopuri: stopuri orare și stopuri trigonometrice.

Fie F(x,y) mulțimea tuturor orientărilor libere posibile ale robotului într-o poziție necritică (x,y).

F(x,y)={ (x,y,) SCliber }.

Se notează cu s(x,y,c) stopul unic atins de robot având configurația (x,y,c) și cu S(x,y) mulțimea tuturor perechilor [s(x,y,c), s(x,y,c)] corespunzătoare de stopuri orare și trigonometrice. c și c sunt orientările limită în poziția necritică (x,y).

Fie R o regiune necritică și [s1,s2] o pereche de stopuri în S(x,y)=S(R). Regiunea tridimensională:

Cel(R, s1, s2)={(x,y,) (x,y) R și (1,2)}

este denumită celulă. Ea reprezintă o submulțime deschisă, conexă a lui SCliber .

După descompunerea spațiului SCliber în celule, se definește graful de conexiune asociat acestei descompuneri.

Fie K=Cel(R,s1,s2) și K=Cel(R,s1,s2) două celule. Ele sunt adiacente dacă și numai dacă:

frontierele regiunilor R și R se intresectează după o porțiune de curbă critică L;

(x,y) int (L):(1,2) (1,2) .

Dacă două celule sunt adiacente, atunci orice configurație dintr-o celulă poate fi cenectată cu orice configurație din cealaltă celulă printr-o traiectorie liberă, a cărui proiecție pe planul xOy traversează L având orientarea constantă în orice vecinătate a ăunctului de intersecție.

Graful de conexiune G este un graf nedirecționat ale cărui noduri sunt toate celule Cel(R,s1,s2), unde R este o regiune necritică și [s1,s2] S(R). O legătură a grafului conectează orice două noduri dacă și numai dacă, celulele corespunzătoare sunt adiacente.

Existând două configurații:

Cinițial=(Xinițial, Yinițial, inițial)

și

Cfinal=(Xfinal, Yfinal, final)

în spațiul Scliber, astfel încât nici (Xinițial,Yinițial) și nici (Xfinal,Yfinal) să nu se afle pe o curbă critică, atunci există o traiectorie liberă între ele, dacă și numai dacă cele două celule ce conțin Cinițial și Cfinal sunt conectate printr-o cale vizibilă în graful de conexiune G.

Algoritmul metodei descompunerii celulare exacte

Programul, descris în capitolul 4, ce determină o traiectorie liberă pentru un robot modelat printr-un segment de dreaptă, ce efectuează mișcări de translație și rotație, într-un spațiu de lucru bidimensional populat cu obstacole poligonale, utilizează metoda descompunerii celulare exacte.

Coniderând o regiune cu obstacole poligonale, robotul de lungime a și configurația inițială și finală Cinițial și Cfinal în spațiul liber, algoritmul generează o traiectorie liberă de la Cinițial la Cfinal dacă aceasta există,returnând fals în caz contrar.

Algoritmul descompunerii celulare exacte pentru găsirea unei traiectorii libere ce conectează două configurații este următorul:

stabilește lungimea robotului;

desenează obstacolele ce populează spațiul de lucru;

stabilește configurația inițială Cinițial și configurația finală Cfinal;

determină și reprezintă curbele critice aferente obstacolelor;

determină intersecțiile curbelor critice și toate porțiunile de curbe critice;elimină porțiunile de curbe critice redundante;

caută și memorează regiunile necritice;

pentru a deosebi regiunile între ele, se atribuie fiecăreia un număr întreg distinct;pentru exemplul prezentat, Cinițial se află în regiunea necritică R2 iar Cfinal se află în regiunea R46;

verifică dacă Cinițial și Cfinal se află pe o porțiune de curbă critică; în caz afirmativ modifică Cinițial și Cfinal;

dacă Cinițial nu se află într-o regiune necritică, atunci se consideră că aceasta aparține regiunii celei mai apropiate de Cinițial ; la fel se procedează și pentru Cfinal;

caută și memorează lista stopurilor orare și trigonometrice;

studiază relația de adiacență dintre celule;

construiește graful de conexiune G ale cărui noduri sunt regiuni necritice (celule);

studiază G pentru stabilirea unei traiectorii libere între Cinițial și Cfinal;

dacă cercetarea grafului se termină cu succes returnează secvența de celule adiacente, altfel returnează eroare.

Concluzii

Programul permite reprezentarea spațiului de lucru al robotului în două situații distincte: spațiul de lucru limitat, respectiv nelimitat. Configurația din spațiul de lucru al robotului respectiv dimensiunea robotului pot fi modificate dacă este necesar.

Construcția curbelor critice permite descompunerea configurației robotului în regiuni necritice numite celule. Geometria acestor celule este simplă, astfel încât să se poată fi generată cu ușurință o traiectorie între oricare două configurații ale robotului.

Similar Posts