Determinari Experimentale ale Parametrilor Functionali Si de Performanta Ai Robotului Line Follower

Cuprins

Tabel figuri

Abrevieri

1 Introducere

1.1 Prezentare constructivă și funcționalǎ a robotului de tip line-follower

1.1.1 Generalități

1.1.2 Senzori QTR-8A

1.1.3 Puntea H

1.1.4 Microcontroller

1.1.5 Modul Bluetooth

1.2 Obiectivele lucrării

2 Metode actuale de identificare și prelucrare a unui proces neliniar cu tehnici inteligente

2.1 Identificarea sistemelor. Generalități

2.2 Utilizarea tehnicilor inteligente în identificarea sistemelor

2.2.1 Rețele neuronale. Generalități

2.2.2 Arhitecturi specifice (Cap 2 ARH SPEC_ANN)

2.2.3 Aplicații specifice (Cap1 _ANN+coni)

3 Problematica generală a sistemelor neliniare

3.1 Convergența globală a metodei gradient

3.2 Alegerea optimă a pasului constant ∝: rate de de convergență globale

4 Aspecte neliniare ale funcționǎrii robotului “line follower”

5 Problema robotului “line follower” și modelul sistemului

5.1 Rafinarea modelului robotului “line follower”

6 Analiza sistemului robot “line-follower” utilizând modelul de tip rețea neuronalǎ

6.1 Derivatele modelului de tip rețea neuronalǎ

7 Utilizarea rezultatelor identificǎrii și analizei sistemului robot “line-follower”

8 Tehnici de inteligențǎ artificialǎ

8.1 Pregătire program experiment

9 Determinǎri experimentale ale parametrilor funcționali și de performanțǎ ai robotului line-follower

9.1 Construcția rețelei

9.2 Colectarea datelor

9.3 Eliminarea deviațiilor

10 Identificarea sistemului cu ajutorul retelelor neuronale

11 Proiectarea sistemului de control al robotului line-follower pentru creșterea performanței acestuia

12 Concluzii – Rezultate și cercetǎri viitoare

13 Reglarea

14 Bibliografie

15 Anexă

17 Bibliografie Lista Tabele

Tabel 4.1 Valorile maxime ale indicațiilor senzorilor 30

Tabel 6.1 Ponderile rețelei MLP 4-4-1 selectate pentru modelarea performanțelor robotului 36

Tabel 6.2 Combinațiile de parametric funcționali cu cele mai bune performsanțe 43

Tabel 7.1 Rezultatele 48

Tabel 7.2 Selectarea regimurilor celor mai adecvate pentru fiecare unghi de virare 49

Tabel 7.3 Rezultatele validǎrii soluției de combinare a regimurilor de funcționare ale robotului 49

Tabel 8.1 Valorile penntru realizare experimente 51

Listă Figuri

Fig. 1.1 Componente robot 8

Fig. 1.2 Schema bloc de funcționare 8

Fig. 1.3 Bară de senzori QTR-8A 10

Fig. 1.4 Limitarea curentului ledurilor 11

Fig. 1.5 Punte H (L298) 12

Fig. 1.6 Modul Bluetooth model BTM 222B 14

Fig. 1.7 Schema bloc BTM222B 14

Fig. 1.8 Adăugare dispozitiv în calculator 15

Fig. 1.9 Aflarea portului pe care comunica BTM222B 15

Fig. 1.10 Configurarea aplicatiei Putty 16

Fig. 1.11 Interfața de comunicație între controller și calculator 16

Fig. 2.1 Funcția de activare liniară 19

Fig. 2.2 Funcția de activare prag 20

Fig. 2.3 Funcție liniară 20

Fig. 2.4 Funcție semiliniară 21

Fig. 2.5 Operații elementare binare de tip ȘI , SAU, XOR 22

Fig. 2.7 Rețea neuronală cu un singur strat (single layer) 24

Fig. 5.1 Evoluția scorurilor cu variația poziției relative a liniei fațǎ de banda de senzori 35

Fig. 6.1 Variația indicatorului de performanțǎ și a derivatelor acestuia ȋn raport cu parametrul D, ca ieșiri ale rețelei MPL 4-4-1. 40

Fig. 6.2 Variația indicatorului de performanțǎ și a derivatelor acestuia ȋn raport cu parametrul Cr, ca ieșiri ale rețelei MPL 4-4-1. 41

Fig. 6.3 Variația indicatorului de performanțǎ și a derivatelor acestuia ȋn raport cu parametrul Cra, ca ieșiri ale rețelei MPL 4-4-1. 42

Fig. 6.4 Variația indicatorului de performanțǎ și a derivatelor acestuia ȋn raport cu parametrul D, ca ieșiri ale rețelei MPL 4-4-1. 42

Fig. 6.5 Variația indicatorului de performanțǎ și a derivatelor acestuia ȋn raport cu parametrul Cr, ca ieșiri ale rețelei MPL 4-4-1. 43

Fig. 6.6 Variația indicatorului de performanțǎ și a derivatelor acestuia ȋn raport cu parametrul Cra, ca ieșiri ale rețelei MPL 4-4-1. 44

Fig. 12.1 Schema standard SRA 56

Abrevieri

[Ref] Citat referința cu eticheta [Ref] din lista bibliografică

IR Infrared (infraroșu)

RNA Rețea Neuronală Artificială

MLP Multilayer Perceptron (Rețea Peceptron multi-strat)

PID Proportional Integral Derivative (Proportional-Integral- Derivativ)

PCM Pulse Code Modulation

Introducere

Prin intermediul acestei lucrări urmăresc să analizez posibilitățile de a trata unele aspecte neliniare care apar în mod curent în situațiile concrete de reglare a evoluției sistemelor reale. Printre mijloacele de tratare a acestor neliniarități, tehnicile inteligente reprezintă o opțiune ce nu poate fi neglijată datorită versatilității acestora.

Ȋn scopul ilustrării neliniarităților și tratării acestora, am realizat un sistem concret și anume un robot de tip „line follower”. Robotul „line follower” este un dispozitiv care are capacitatea de a se deplasa și a cărui misiune este de a urmări un traseu materializat printr-o linie.

Prezenta lucrare are, în continuare, următoarea structură:

Capitolul 2 prezintă construcția și componentele esențiale a robotului „line follower”

Capitolul 3 analizează elementele de neliniaritate care afectează funcționarea robotului;

Capitorlul 4 prezintă aspectele teoretice ale rețelelor neuronale ca tehnică inteligentă care ar putea fi utilizată în tratarea aspectelor neliniare ale sistemului studiat;

Capitolul 5 prezintă abordări și soluții legate de funcționarea robotului, de îndeplinirea misiunii acestuia și de tratarea unora dintre elementele de neliniaritate precizate în capitolul3;

Capitolul 6 concluzionează asupra rezultatelor obținute precum și a posibilelor direcții de dezvoltare viitoare a studiilor asupra acestui subiect în scopul îmbunătățirii performanțelor robotului „line follower”.

Prezentare constructivă și funcționalǎ a robotului de tip line-follower

în lucrarea de față este prezentată o abordare de programare a unui robot de tip line-follower pentru controlul parcurgerii unui traseu standard. Acest tip de robot urmărește o anumită rută, fiind controlat de un mecanism de feedback În general, ruta pe care se deplasează robotul este reprezentată printr-o linie neagră pe un fundal alb sau vice-versa.

Realizarea unui robot de tip line-follower presupune parcurgerea următorilor pași:

Construcția părții mecanice sau corpul robotului;

Definirea cinematicii robotului;

Construcția părții de control a robotului.

Acest tip de robot își găsește utilitatea în multe domenii de activitate precum:

Aplicații industriale: pot fi utilizați ca și elemente automate pentru transportul produselor într-o zonă de producție, înlocuind astfel benzile transportoare tradiționale;

Aplicații domestice: pot fi folosiți în locuințe pentru scopuri domestice, cum ar fi curățarea podelei;

Aplicații de ghidare: pot fi utilizați în spațiile publice, cum ar fi magazinele de dimensiuni mari, muzee, pentru a aigura îndrumarea oamenilor pe anumite trasee.

Roboții line-follower prezinta o serie de avantaje printre care cele mai importante sunt: mișcarea automată, utilizarea pentru aplicații ce implică distanțe mari, simplitatea construcției, posibilitatea de uttilizarea atât in medii industriale automatizate precum și acasă.

Generalități

Robotul de tip line-follwer trebuie să fie capabil să detecteze un tip de linie în funcție de culoarea pe care senzorii o recepționează și să o urmărească.

La construirea lui s-au folosit următoarele componente hardware:

Bară de senzori QTR – 8A –ce permite detectarea liniei negre;

Microcontroller Arduino Nano 3.0(ATmega328) – ce permite încărcarea programlui de control a robotului. Totodată, acesta realizează conexiunea dintre senzori și motoare;

Două motoare 100:1 – ce permit modificarea poziției robotului;

Modul Bluetooth BTM222B – ce permite realizarea conexiunii dintre robot și calculator.Cu ajutorul acestuia se pot vizualiza valorile senzorilor analogici ceea ce ajută la controlul și îmbunătățirea parcurgerii robotului.

Fig. 1.1 Componente robot

Principalele componente care se folosesc în construirea unui astfel de robot sunt: senzori IR, două motoare, un driver pentru motoare, placa pe care sunt lipite componentele, microcontrollerul, modulul Bluetooth și opt acumulatori de câte 1.3V fiecare.

Fig. 1.2 Schema bloc de funcționare

Vectorul de valori returnat de linia de senzori este folosit pentru detectarea liniei. Bazat pe status-ul dat de senzori, microcontrollerul decide poziția liniei și de asemenea direcția necesară pentru ca acesta să o urmărească. Driverul de motoare este folosit pentru a încetinii unul dintre cele două motoare (stânga sau dreapta) pentru a asigura direcția dorită a robotului.

Mai departe vor fi prezentate mai detaliat componentele folosite în construirea robotului.

Senzori QTR-8A

Senzorii sunt necesari pentru a detecta poziția robotului față de linia pe care acesta trebuie să o urmărească. Cei mai folosiți senzori sunt fotosenzorii. Aceștia sunt bazați pe următoarea observație: suprafața albă reflectă lumina și suprafața neagră o absoarbe.

În construirea robotului am folosit o bară de senzori de tip QTR-8A. Aceasta bară de senzori are montați opt leduri cu infraroșu/ fototranzistori. Ledurile sunt plasate la distanțe egale unele de celelalte de 9,525 mm, acest lucru făcandu-le să fie niște detectori excelenți pentru un robot de tip line-follower.

Perechiile de leduri sunt aranjate în serie cu scopul de a reduce la jumătate consumul.

Fiecare senzor oferă câte o ieșire separată de tensiune analogică.

Bara de senzori QTR-8A este un modul purtător convenabil pentru opt perechi de senzori IR de tip (emițător; receptor). Fiecare fototranzistor este conectat la un rezistor pull-up pentru a forma un divizor de tensiune care produce o tensiune de ieșire analogică între valorile 0 V și valoarea tensiunii de intrare care este în general 5V.

Ieșirile senzorilor sunt toate independente unele de celelalte. Led-urile sunt controlate de un MOSFET, permițând ledurilor să fie oprite prin setarea porții MOSFET-ului la o tensiune joasă.

Un senzor IR este alcătuit din:

led IR – emite lumina care va fi reflectată de suprafața de deplasare;

fototranzistor – captează lumina reflectată și emite curent în funcție de intensitatea luminii;

amplificator operațional – amplifica semnalul emis de fototranzistor;

Lumina vizibilă sau lumina infraroșie este emisă de la emițător ( lumina IR este în general de preferat să evite interferența de la lumina vizibilă care se află în general în jurul robotului. Lumina IR este de asemenea prezentă în atmosferă, dar intensitatea sa este mult mai mică decât cea a luminii vizibilă, așadar lumina IR poate oferii la ieșire valori mai precise).

Lumina emisă, lovește suprafața și se reflectă înapoi. În cazul în care suprafața este de culoare albă, se reflectă o intensitate mai mare de lumină, iar pentru suprafața de culoare neagră se reflectă o intensitate mai mică de lumină.

Detectorul foto este folosit pentru a observa intensitatea luminii reflectate. Tensiunea analogică corespunzătoare, este indusă pe baza intensițății luminii reflectate. Această tensiune este comparată cu o tensiune de referință fixă din circuitul comparator și este convertită în 0 logic sau 1 logic astfel încât să poată fi folosite mai departe de microcontroller.

Circuitul comparator poate fi construit în două moduri:

Primul caz în care pentru:

zona neagră = 1

zona albă = 0.

Al doilea caz în care pentru

zona neagră = 0

zona albă = 1.

Cei opt senzori IR care sunt amplasați în fața robotului, la o distantă foarte mica de sol. Cu cât senzorii sunt amplasați mai departe de sol, cu atât vor recepționa culoare neagră, de aceea ei trebuie poziționați cât mai aproape de sol.

Fig. 1.3 Bară de senzori QTR-8A

.Tranzistoarele MOSFET au poartă izolată cu ajutorul unui strat de dioxid de siliciu. Oprirea ledurilor poate să constituie un avantaj pentru limitarea puterii de consum când senzorii nu sunt folosiți sau pentru a varia luminozitatea efectivă a ledurilor prin controlul pwm.

Fig. 1.4 Limitarea curentului ledurilor

Specificații pentru QRT-8A:

Dimensiune 74.93 x 12.7 mm;

Tensiunea de operare 3.3V – 5V;

Curentul de alimentare 100 mA;

Ieșirea produsă de senzori este reprezentată de opt semnale digitale de I/O care transmit date catre microcontroller.

Fiecare fototranzistor folosește un circuit de descărcare a condensatorului care le permite semnalelor digitale de I/O a microcontroller-ului să preia reflexia analogică citind cât timp ar lua până când ieșirea de tensiune se descompune cu ajutorul fototranzistorului.

Acest model de senzori IR are următoarele avantaje:

Nu este nevoie de un convertor analog-digital;

Îmbunătățește sensibilitatea asupra divizorului de tensiune a ieșirii analogice;

Citirea celor 8 senzori se face în paralel și este posibilă cu majoritatea microcontrollerului;

Citirea acestora în paralel permite folosirea optimizată a puterii ledurilor.

Cu un grad de reflexie puternică, cum ar fi atunci când un senzor este pe o suprafață albă, timpul de dezintegrare poate fi de numai câteva zeci de microsecunde; cu un grad de reflexie foarte slabă, cum ar fi atunci când senzorul este pe o suprafață neagră, timpul de dezintegrare va fi în mod tipic de câteva milisecunde, dar poate fi de mai multe zeci de milisecunde, în cel mai rău caz.

Senzorii vor transmite către microcontroller semnale analogice în funcție de culoarea pe care o văd: pentru alb ~200mv și pentru negru 3V-3.5V. Microcontroller-ul va prelua semnalul de la senzori și îl va codifica automat într-un semnal constituit din 0 și 1. În funcție de semnalul rezultat va determina modul de comandă motoarelor.

Puntea H

Microcontrollerul va trimite punții H duală (L298N), direcția și viteza de rotire a motoarelor. Motivul pentru care folosim puntea H este pentru că nu putem conecta motorul direct la microcontroller. Acesta nu asigură curentul necesar pentru funcționarea motoarelor, de aceea controlul lor se face cu ajutorul punții H. Puntea H primește semnal de la microcontroller și generează un semnal analogic pe care îl trimite mai departe motoarelor. Aceasta controlează viteza și sensul de rotație a motoarelor.

Fig. 1.5 Punte H (L298)

Pinii corespunzători punții H sunt conectați astfel:

Pinii de input IN1, IN2, IN3, IN4 de pe driver sunt conectați pe portul C (pinii PC7, PC6, PC5, PC4) ai microcontrollerului;

Pinii de output OUTPUT1, OUTPUT2, OUTPUT3, OUTPUT4 sunt conectați la motoare. Aceștia împreuna cu pinii de input reprezintă direcția de deplasare a robotului;

Pinii ENABLE A și ENABLE B de pe driver sunt conectați la portul B, OC0, respectiv portul D, pinul OC2 ai microcontrollerului și reprezintă viteza de deplasare a robotului;

Pinul LOGIC SUPPLY VOLTAGE (VSS) al driverului este conectată la alimentare de 6V. Alimentarea este comună cu placa;

Pinul SUPPLY VOLTAGE (VS) folosit pentru motoare trebuie conectat la o sursă suficient de puternică, în caz contrar motoarele vor folosi tot curentul și placa nu va funcționa corespunzător;

Pinul GND este comun pentru tot ansambul;

De asemenea pentru a proteja motoarele se folosesc 8 diode Schotty.

Cuplarea canalelor se face prin două canale de control. Pe unul se dă PWM-ul pentru a stabili viteza motoarelor (dacă PWM = 0 turație = 0%; PWM = 255 turație = 100%). Puntea H L298 are 4 intrări și 4 ieșiri. Pinii de input reprezintă output-ul de la microcontroller, iar pinii de output reprezintă input-urile de la motoare.

Microcontroller

Robotul parcurge un traseu standard ales. Acest traseu este construit dintr-o bendă izolieră. Parcurgerea traseului este posibilă cu ajutorul microcontroller-ului. Orice mutare a robotului de pe culoarea neagră pe cea albă sau invers va fi detectată de către microcontroller prin informațiile recepționate de la senzori. Deoarece ieșirile celor opt senzori sunt semneale analogice, ele nu pot fi procesate direct de către microcontroller.

După convertirea semnalelor analogice provenite de la cei opt senzori, în semnale digitale, microcontrollerul compară valorile senzorilor cu o vlaoare de referință, pentru a afla poziția acestora.

Când cei doi senzori din mijloc sunt activi, microcontroller-ul va trimite semnal de înaintare către driverul de motoare (L298). Când doi senzori din partea stângă sunt activi, microcontroller-ul va trmite un semnal driverului de motoare pentru a direcționa robotul în partea stângă și când doi senzori din dreapta sunt activi, microcontroller-ul va trmite un semnal driverului de motoare pentru a direcționa robotul în partea dreaptă. Alimentarea placuței Atmega328 și a driverului se face de la opt acumulatoare a câte 1.3V, un total de 10.4 V, dar pentru că acestea sunt reîncărcabile totalul poate ajunge până la 11.6V.

Modul Bluetooth

Modulul Bluetooth asigură o transmisie de date printr-o comunicație fără fir, între controller și calculator. Transferul informației se face prin intermediul unui câmp electromagnetic în gama de frecvență 9kHz-300kHz. Volumul de date trebuie să fiu unul mic pentru o transmisie prin modulul Bluetooth.

Pentru identificarea semnalelor analogice recepționate de la cei opt senzori se folosește un modul Bluetooth de tip BTM 222B. Acesta se află poziționat pe spatele plăcii robotului (fig. 1.8).

Modulul bluetooth este folosit pentru a transfera date la o distanță relativ mică (aproximativ 2-6 metri) între microcontroller și calculator.

REFA POZA ASTAA SI FA PATRAT CU VERDE SI SCRIS IN AFARA CA NEGRUL ALA NU SE VEDE DELOC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Fig. 1.6 Modul Bluetooth model BTM 222B

Modulul BTM222B conține un nucleu BlueCore4 cu interfețe de conectare SPI, UART, USB și o interfață PCM (Pulse Code Modulation) pentru conectarea unui modul audio. De la nucleu datele sunt emise printr-un amplificator de putere prin antenă, iar datele recepționate sunt amplificate cu un LNA. Alimentarea de putere și cea a nucleului sunt diferite.

Interfața asigura un transfer de până la 3Mbps. Alimentarea acestuia se face între 3V și 3.6V, puterea de emisie fiind de 18dBm.

Fig. 1.7 Schema bloc BTM222B

Conectarea dispozitivului Bluetooth la un calculator se realizează printr-un software de descoperire numit Putty. Primul pas este acela de a adăuga dispozitivul Bluetooth prin detectare automată de către Windows în calculator.

Fig. 1.8 Adăugare dispozitiv în calculator

Apoi trebuie verificat pe ce port se realizează comunicarea, pentru a știi ce trebuie să completăm în aplicația pe care o folosim pentru afișarea datelor. Pentru a realiza acest lucru se apasă pe elementul adăugat, apoi se alege Proprietăți, după se selectează Servicii.

Fig. 1.9 Aflarea portului pe care comunica BTM222B

După aflarea portului se deschide aplicația Putty și se completează câmpul Linie Serială cu portul prin care se face comunicare (exemplu în acest caz COM3). Apoi se selectează butonul de deschidere fereastră.

Fig. 1.10 Configurarea aplicatiei Putty

După deschiderea aplicației, obținem datele primite de la senzorii robotului. Acest aspect ține de programul încărcat în controller.

Fig. 1.11 Interfața de comunicație între controller și calculator

Dezavantajul modulului Bluetooth este că transmisia se face doar la distanțe mai mici de 6 metri, și câteodată apar perturbații în timpul transmisiei ceea ce duce la absența informației și repetarea experimentului.

Obiectivele lucrării

Metode actuale de identificare și prelucrare a unui proces neliniar cu tehnici inteligente

Identificarea sistemelor. Generalități

Utilizarea tehnicilor inteligente în identificarea sistemelor

Rețele neuronale. Generalități

Preocuparea pentru rețelele neuronale artificiale, denumite în mod curent „rețele neuronale”, a fost motivată de recunoașterea faptului că modul în care calculează creierul ființelor vii este complet diferit de cel al calculatoarelor numerice convenționale. Spre deosebire de mașinile von Neumann, unde există o unitate de procesare care execută instrucțiunile stocate în memorie în mod serial, numai o instrucțiune la un moment dat, rețelele neuronale utilizează în mod masiv paralelismul. Fiind modele simplificate ale creierului uman, ele dețin capacitatea de a învăța, spre deosebire de calculatoarele convenționale, care rămân totuși mai eficiente pentru sarcinile bazate pe operații aritmetice precise și rapide. Rețelele neuronale nu dispun de unități de procesare puternice, dimpotrivă, acestea sunt caracterizate printr-o simplitate extremă, însă interacțiunile lor pe ansamblu produc rezultate complexe datorită numărului mare de conexiuni.

Inteligența artificială este compusă dintr-un set de metode, instrumente și sisteme pentru rezolvarea problemelor ce ar necesita ȋn mod normal inteligența umană. Termenul inteligență este definit ca fiind capacitatea de a raționa, a planifica, a rezolva probleme, a gândi abstract, a ȋnțelege idei complexe, a ȋnvăța repede și a ȋnvăța din experiență (Mainstream Science of Intelligence, 1994). Principalul obiectiv al inteligenței artificiale este de a dezvolta metode și sisteme de rezolvare a problemelor, care ȋn mod normal sunt rezolvate prin intermediul activității intelectuale umane, cum ar fi procesare de forme, procesarea limbajului natural, planificare și predicție, toate acestea conducând la ȋmbunatățirea sistemelor informaționale computaționale; și de a dezvolta modele care imită organisme vii și ȋn mod special creierul uman, acestea ȋmbunătățind nivelul nostru de ȋnțelegere al modului de funcționare al creierului uman.

Rețeaua neuronală artificială reprezintă un sistem de procesare a informației, construită din unități simple de procesare, interconectate între ele, care acționează în paralel. Asemănarea cu natura, este că funcția rețelei este precizată de legăturile dintre elementele acesteia. Fiecare legătură are asociată o pondere numerică. Ponderea reprezintă modul prin care se realizaează memorarea pe termen lung în retele neuronale. În realitate, învățarea constă în calcularea acestor ponderi astfel încât rețeaua să răspundă cât mai bine la datele de antrenament.

Rețeaua neuronală este asemănătoare cu creierul în două privințe:

Cunoștințele sunt preluate de către rețea printr-un proces de învățare;

Cunoștințele sunt stocate în mod distribuit, nu în uități de procesare (neuroni), ci în conexiunile interneurale, care se mai numesc ponderi sinaptice.

Procedeul folosit pentru executarea procesului de învățare se numește algoritm de învățare. Acest algoritm are ca funcție, modificarea ponderilor sinaptice ale rețelei într-un stil sistematic, pentru a atinge obiectivul de proiectare dorit.

Rețeaua neuronală are următoarele caracteristici:

Informația din rețea e stocată în ponderi sinaptice, acest lucru face ca efectul unei intrări asupra unei ieșiri să depindă de toate ponderile din rețea.

Cu cât rețeaua are dimensiune mai mare cu atât există o memorare mai bună a datelor de instruire. Dimensiunea unei rețele este dată de numărul ponderilor.

Datorită faptului că informația este distribuită , rețeaua neuronală artificială poate opera și în cazul în care se distruge o parte din aceasta.

Rețeaua consumă mult timp pentru instruire, dar odată antrenată va putea calcula rapid ieșirea rețelei pentru o intrare specificată. Rețeaua poate fi antrenată să realizeze o anumită funcție, prin modificarea valorilor conexiunilor (ponderilor) dintre elemente.

Neuronul artificial

Modelele neuronului artificial construit de McCulloch și Pitts este cunsocut ȋn prezent sub numele de neuron McCulloch-Pitts. Unui neuron artificial i se furnizează pe fiecare dintre conexiunile sale de intrare un semnal de tip boolean (0 sau 1) și emite la ieșire tot un semnal de tip boolean. Conexiunile de intrare pot fi de două tipuri și anume:

Inhibatoare

Excitatoare

În oricare dintre aceste modele, neuronul artificial este o aproximare a neuronului biologic, fiind format dintr-un corp, un set de intrări și o ieșire. Întrările (xi) sunt ponderate (ponderea wi), fiind ulterior ȋnsumate. Suma obținută se aplică unei funcții de activare (f), care are ca rezultat ieșirea neuronului respectiv (f(a)).

În general, rețelele neuronale artificiale sunt construite prin așezarea neuronilor ȋn unul sau mai multe straturi și prin conectarea ieșirile neuronilor de pe un strat cu intrările neuronilor de pe următorul strat.

Fig. 2.1 Structura unui neuron dintr-o rețea neuronală artificială

Orice neuron conține un nivel de activare (deobicei cu valori între -1 – inactiv și 1- activ), o funcție de activare f(a), mai multe conexiuni de intrăre, mai multe conexiuni de ieșire și o valuare reziduală.

y = f(u)

Conexiunile conțin valori reale, și se mai numesc ponderi sinaptice. Pe baza acestor ponderi se determină care este efectul intrărilor asupra nivelului de activare a neuronului.

Există variante ale neuronului care folosesc diverse funcții de activare. Cele mai folosite sunt:

Funcția de prag sau funcția de activare liniară

f(u) =

Fig. 2.2 Funcția de activare liniară

Funcție de activare cu valori {-1, 1}

f(u) =

Fig. 2.3 Funcția de activare prag

Funcție liniară

f(u) = u

Fig. 2.4 Funcție liniară

Funcția semiliniară

F(u) =

Fig. 2.5 Funcție semiliniară

Aceste funcții de activare sunt limitate, în sensul că, cu ajutorul lor se pot rezolva doar probleme liniar separabile. Presupunând ca avem două clase de obiecte și se dorește ca rețeaua să afișeze corect apartenența unei instanțe la una din clasele C1 = {x(k)| y(k) = 0} și C2 = {x(k)| y(k) = 1}. Dacă există un vector de ponderi potrivit, atunci:

Teorema de convergență perceptron Rosenblatt 1962 precizează faptul că rețelele cu un singur strat sunt limitate în ceea ce privește aplicabilitate pentru ca pot să rezolve probleme simple de clasificare (liniar separabile). Limitările rețelelor liniare pot fi rezolvate incluzând nivele ascunse care să aibe funcții neliniare de transfer. În ceea ce privește implementarea rețelelor cu un singur strat, funcțiile liniare de activare sunt utile mai ales în implementarea rețelelor feed-forward pentru a procesa semnale de activare ce corespund ultimului strat. Regula de învățare în cadrul rețelelor liniare care se folosește este Least Mean Squares LMS.

Modelele rețelelor presupun existența a două procese, unul fiind reprezentat de formarea semnalului de activare a rețelei, procesând valori ale semnalelor de intrare, iar cel de al doilea proces presupune transformarea semnalului de activare în semnal de ieșire, utilizând funcții liniare de transfer.

Funcțiile booleene și perceptoni pot fi reprezentați prin operații binare de tip AND, OR, XOR.

Fig. 2.6 Operații elementare binare de tip ȘI , SAU, XOR

Modelul perceptonului este limitat în ceea ce privește problemele neseparabile liniare.

Din acestă cauză, în prezent se folosesc rețele ce dispun de mai multe straturi de neuroni cu funcții de activare neliniare (de exemplu, funcțiile sigmoide, reprezentând și un model natural în procesul de învățare prin acumularea cunoștințelor).

Aplicațiile mai complexe utilizează de asemenea și modele variabile în timp, în care sunt luate în coniderare timpul necesar pentru activare și dezactivare a neuronului.

Arhitectura unei rețele artificiale neuronale

Aranjarea unui grup de neuroni în straturi împreună cu modelul de conexiuni între acestea se numește arhitectura rețelei. În general, neuroni ce fac parte din același strat se comportă în aceeși manieră. Factorul cheie în determinarea comportamentului unui neuron este reprezentat de funcția de activare și modelul conexiunilor ponderilor prin intermediul cărora aceștia trimit și primesc semnale. În cadrul unui strat al rețelei neuronale, neuronii au aceeași funcție de activare și același model de conexiuni la alți neuroni. Astfel că, în majoritatea rețelelor neuronale artificiale, neuronii din cadrul unui strat sunt fie toți interconectați fie nu este nici unul. Dacă un neuron dintr-un strat (spre exemplu, stratul ascuns) este conectat cu un neuron dintr-un alt strat (spre exemplu, stratul de ieșire), atunci orice neuron de pe stratul ascuns este conectat cu fiecare neuron din stratul de ieșire.

O rețea neuronală clasică constă dintr-o secvență de straturi de neuroni, cu conexiuni totale sau aleatoare între neuronii conținuți în straturi succesive. Întotdeauna vor exista pentru o rețea neuronală, cel puțin două straturi de neuroni, ce au rolul de a comunica cu mediul exterior:

un strat de intrare care are rolul de a prelua datele de intrare xi, i=0,…,n cu termen bias x0=±1, sau i=1,…,n fără termen bias. Vectorul x= (x1,x2,…,xn) sau x= (x1,x2,…,xn) va fi numit vector de intrare al rețelei neuronale.

un strat de ieșire: unde se obțin rezultatele yj, j=1,…,m furnizate de rețeaua neuronală, ca răspuns la vectorul de intrare prezentat la stratul de intrare și al propagării acestor date de la stratul de intrare către stratul de ieșire. Vectorul y=(y1,y2,…,ym) se numește vectorul de ieșire al rețelei neuronale.

Toate celelalte straturi ale rețelei neuronale, dacă există, diferite de stratul de intrare și de stratul de ieșire vor fi denumite straturi ascunse (hidden layers). Atunci când se menționează că o rețea neuronală că are n straturi, nu se va lua în considerare și stratul de intrare, ceea ce înseamnă că vor fi n-1 straturi ascunse la care se adaugă stratul de ieșire.

În general rețelele neuronale sunt clasificate ca fiind dintr-un strat (single layer) sau din mai multe straturi (multilayer). În determinarea numărului de straturi ascunse nu se ia în considerare și stratul de intrare

În Fig 2.7. este reprezentată o rețea neuronală dintr-un strat, iar în Fig. 2.8 este reprezentată o rețea neuronală multistrat (cu un strat ascuns).

Neuronii din stratul de intrare au întotdeauna ca și funcție de activare funcția liniară, rolul lor fiind doar de-a propaga către stratul succesor vectorul de intrare. Ceilalți neuroni, din celelalte straturi, pot avea orice funcții de activare.

Arhitecturi specifice (Cap 2 ARH SPEC_ANN)

Arhitectura de bază este formată din trei tipuri de straturi de neuroni, precum: stratul de intrare, unul sau mai multe straturi ascunse și stratul de ieșire. În rețelele de tip feed-forward, fluxul semnalului trece de la stratul de intrare spre ieșire, strict în direcția înainte (feed-forward). Procesarea datelor se poate extinde pe mai multe straturi, dar făra a fi prezente conexiuni de tip feed-back. Rețeaua recurentă conține conexiuni de tip feedback. Opusul rețelelor de tip feed-forward, proprietățile dinamice ale rețelei sunt importante. În câteva cazuri, valorile de activare ale unităților sunt supuse unui proces de relaxare astfel încât această rețea va evolua într-o stare stabilă în care aceste activări nu se vor mai schimba. În alte aplicații, schimbările valorilor de activare din ieșirea neuronilor sunt semnificative, astfel încât comportamentul dinamic constituie ieșirea rețelei. Există și alte arhitecturi de rețele neuronale, ce depind de proprietățile și cerințele aplicației.

O rețea neuronală trebuie să fie configurată astfel încât aplicarea setului de intrări să producă setul dorit de ieșiri. Există diverse metode pentru stabilirea punctelor forte ale conexiunilor. O modalitatea este aceea de a stabili ponderile în mod explicit, folosind o cunoștere apriori. O altă modalitate este de a instrui rețelele neuronale prin învățarea unor modele și lăsând ca ponderile să se schimbe potrivit unor reguli de învățare. Învățare în cadrul rețelelor poate fi clasificată în trei feluri diferite. Acestea sunt învățare supravegheată, învățare nesupravegheată și învățare cu întărire. În învățare supravegheată, un vector de intrare este prezent la intrările rețelei împreuna cu un set de răspunsuri dorite, unul pentru fiecare nod, la stratul de ieșire.

Se face un pas înainte, și se găsesc erorile sau discrepanțele dintre răspunsul dorit și răspunsul actual pentru fiecare nod din stratul de ieșire. Acestea sunt apoi utilizate pentru a determina schimbările ponderilor din rețea după regula curentă de învățare. Termenul supravheat provine din faptul că semnalele dorite din nodurile individuale de ieșire sunt furnizate de un profesor extern.

Cele mai cunoscute exemple ale acestei tehnici apar în algoritmul cunoscut sub denumirea de backpropagation, regula delta și regula perceptronului. În învățarea nesupravegheată (sau cu auto-organziare), o ieșire este învățată să răspundă la o grupare de modele în cadrul intrării. În acestă paradigmă, sistemul ar trebui să descopere caracteristici statistice importante ale intrărilor. Spre deosebire de învățarea supravegheată, nu există un set de categori în care modelele sunt clasificate, ba dimpotrivă sistemul trebuie să dezvolte propria reprezentare a stimulilor de intrare. Învățarea cu întărire, este de fapt învățarea prin care se precizează ce trebuie făcut, cum se asociază situațiile cu acțiunile, astfel încât să se maximizeze un semnal numeric de tip recompensă. Celui care este instruit nu i se precizează ce acțiuni trebuie să facă, ca în cele mai multe forme de învățare, dar în schimb trebuie să descopere ce acțiuni produc cea mai mare recompensă, încercându-le. În cele mai multe cazuri, acțiunile pot afecta nu doar o recompensă imediată, ci și o situație următoare și prin aceasta, toate recompensele ulterioare. Aceste două caracteristici, cercetare – și – eroare și recompensă întârziată sunt cele mai mportante ale învățării cu întărire.[ Artificial neural Networks Ajith Abraham]

În lucrarea de fata s-au utilizat rețele neuronale perceptron multistrat (MLP).

În structura unui perceptron există un singur neuron. Neuronul însumează ponderile intrărilor sale, iar apoi aplică o transformare care este deobicei neliniară.

Intrarea perceptronului este constituita dintr-un produs scalar dintre vectorul de intrări P și vectorul ponderilor, P, unde reprezintă mulțimea numerelor reale. Ieșirea x se numește mărimea de activare. Asupra mărimii de activare se aplică o transformare neliniară care îi corespunde funcției de activare a neuronului, rezultând y, care reprezintă mărimea de ieșire a neuronului. Cele două mărimi ale structurii perceptronului pot fi scrise astfel:

wTp*up

Funcția de activare poate fi de mai multe tipuri și anume: funcție liniară, funcție sigmoid, funcție tangentă hiperbolică.

Rețeau de tip MLP are straturile conectate în serie distribuite paralel. Consisteța rețelei perceptron multi –strat este următoarea:

Stratul de intrare conțin mărimile aplicate la intrarea în rețea

Straturile ascunse – în care mărimile care intră în aceste straturi sunt mărimile de ieșire de la stratul anterior. Straturile ascunse pot fi unul sau chiar mai multe.

Stratul de ieșire – conțin mărimile de ieșire ale rețelei neuronale ce rezultă din aplicarea transformării neliniare realizată de rețea. Transformarea neliniară este rezultatul evaluărilor realizate succesiv de fiecare strat în parte.

Problema care se pune o constituie alegerea tipului de arhitectura a rețelei pentru aplicație. Deoarece nu există teoreme care să precizeze care este tipul potrivit de rețea care ar trebui să fie folosit, care este numărul de neuroni și care e modalitatea de interconectare dintre aceștia, folosirea rețelelor neuronale artificiale este limitată. Există însă moduri de construire sistematică urmând un proces iterativ , acestea sunt grupate în două categorii:

Tehnica pruning, în care se pornește de la sisteme de dimensiuni mari , și care micșorează numărul de neuroni și conexiunile care se dovedesc a fi neimportante (adică cele care nu se modifică în etapa de învățare). Reducerea neuronilor și a conexiunilor se face pe baza unei funcții de eroare în raport cu anumite ponderi ale sistemului.

Tenhinca de tip learn and grow, în care se pornește de la rețele de dimensiuni reduse și în care se adaugă neuroni și conexiuni până când se ajunge la performanțele dorite ale sistemului.

Aplicații specifice (Cap1 _ANN+coni)

Problematica generală a sistemelor neliniare

Metoda gradient este una dintre cele mai cunoscute și cele mai vechi metode iterative în probleme de optimizare, fiind propusă prima dată de Cauchy în 1847. Metoda gradient mai este cunoscut㸠și sub numele de metoda celei mai abrupte descreșteri. Metoda este foarte importantă din punct de vedere teoretic, deoarece este una din cele mai simple metode pentru care există

o analiză satisfăcătoare cu privire la convergentă.

Figura 3.1 Metoda gradient aplicată funcției f(x1,x2) = (x1-2)4+( x1-2*x2)2

Metoda gradient se bazează pe următoarea iterație:

Unde lungimea pasului se poate alege în funcție de una dintre următoarele trei proceduri: cea ideală, Wolfe sau backtracking. Cu alte cuvinte, din punctul căutăm de-a lungul direcției opuse gradientului un punct de minim; acest punct de minim este .

Metoda gradient are diferite interpretări pe care le enumerăm mai jos:

Direcția în metoda gradient (numită adesea și antigradientul) este o direcție de descreștere întrucât 2 pentru orice x care nu este punct staționar, adică satisface

Iterația se obține prin rezolvarea următoarei problem pătratice (QP) convexe:

2.

Metoda gradient prezintă cea mai rapidă descreștere locală. Motiv pentru care aceasta se mai numește și “metoda celei mai abrupte pante”: într-adevăr pentru orice direcție d cu avem

Din inegalitatea Cauchy-Schwartz obținem

Ceea ce conduce la următoarea inegalitate

Ultimele două relații ne permit să concluzionăm că cea mai mare descreștere se obține pentru direcția antigradient .

Convergența globală a metodei gradient

În cele ce urmează analizăm proprietățile de convergență globală și locală a metodei gradient. Mai întâi prezentăm un rezultat general de convergență globală pentru metoda gradient aplicată unei probleme (UNLP) pentru care funcția obiectiv trebuie să fie doar de clasă .

Teoremă1.1 Dacă următoarele condiții sunt satisfăcute:

f este diferențiabilă cu continuu ( )

mulțimea subnivel este compactă pentru orice punct inițial

lungimea pasului satisface prima condiție Wolfe (W1).

Atunci orice punct limită al șirului generat de metoda gradient este punct staționar pentru problema (UNLP).

Demonstrație Demonstrația se bazează pe teorema de convergență generală. Definim aplicația:

Întrucât funcția obiectiv f este diferențială cu gradientul continuu rezultă că este o aplicație continuă punct – punct și deci închisă. Definim , mulțimea soluțiilor (mulțimea punctelor staționare). Mai mult, șirul , adică șirul generat de metoda gradient este inclus într-o mulțime compactă. De asemenea, definim o funcție descrescătoare întrucât prima condiție Wolfe este satisfăcută ceea ce implică ca funcția obiectiv să descrească strict de-a lungul iterațiilor generate de metoda gradient. În concluzie, teorema de convergență generalp poate fi aplicată și mai mult, orice punct limită al șirului se va regăsi în S. Mai mult, se observă că din condiția ca șirul să fie mărginit, rezultă că există cel puțin un subșir convergent.

Acum prezentăm o analiză a convergenței metodei gradient pentru funcții obiectiv f ce posedă în plus față de teorema precedentă proprietatea ca gradientul este Lipschitz continuu.

Teorema 1.2 Fie f o funcție diferențiabilă cu gradientul Lipschitz (constanta Lipschitz L) și mărginită inferior. Mai mult, lungimea pasului se alege pentru a satiface cele două condiții Wolfe. Atunci șirul generat de metoda gradient satisface proprietate: .

Demonstrație Se observă că în aces caz particular unghiul dintre gradient și direcția considerată în metoda gradient (antigradientul ) este

.

În concluzie, din teorema de convergență pentru metodele de descreștere avem:

2 = 2<

Rezultă că șirul satisface proprietatea: când k.

Remarcăm că din prima teoremă de convergență a metodei gradient am obținut că un subșir converge la punctul staționar, în timp ce din a doua teoremă avem condiția mai conservativă că .

Alegerea optimă a pasului constant : rate de de convergență globale

În cazul în care lungimea pasului este constantă pentru toate iterațiile, adică alegem un astfel încât , suntem interesați în aflarea unui optim ce garantează cea mai rapidă convergență. Presupunem căfuncția obiectiv are gradientul , Lipschitz cu constanta Lipschitz . Avem atunci următoarea relație:

+2 , x,y dom f

Mai departe, rezultă:

=

Lungimea pasului ce garantează cea mai mare descreștere per iterație se obține din condiția

adică,

Metodei gradient cu pas constant îi corespunde o lungime optimală a pasului dată de .

În acest caz descreșterea la fiecare pas este ilustrată de relația

,

,iar dacă însumăm aceste inegalități de la la obținem:

adică,

În continuare definim:

De aici rezultă:

În concluzie, după N pași se obține următoarea rată de convergență

,

,adică metoda gradient are, în acest caz, o rată de convergență subliniară.

Din demonstrația teoremei se observă că orice pas pentru metoda gradient în intervalul

asigură descreșterea funcției obiectiv și în consecință, o rată de convergență subliniară. Mai mult, pentru în inegalitatea , obținem că când .

Observați că nu puteți spune nimic în acest caz despre convergența șirului la punctul staționar sau al lui la valoarea optimă . Acest tip de convergență poate fi derivată în cazul convex.

Aspecte neliniare ale funcționǎrii robotului “line follower”

Funcționarea oricǎrui sistem real angreneazǎ mecanisme neliniare de transformare a intrǎrilor ȋn ieșiri. De cele mai multe ori chiar și aspectele linare implicate ȋn funcționarea unui sistem real nu reprezintǎ decât aproximǎri acceptabile ale realitǎților neliniare.

Neliniaritatea sistemelor reale este o consecințǎ a “imperfecțiunii: acestora, a potrivirii imperfecte a sistemelor reale cu modelul lor ideal.

Ȋn cazul robotului “line follower” descris ȋn capitolul anterior, cele mai evidente elemente de neliniaritate care afecteazǎ funcționarea și realizarea misiunii sunt prezentate ȋn continuare.

Senzorii din bara de senzori nu sunt absolut identici. Diferențele constructive dintre senzori determinǎ semnale diferite de ieșire ale senzorilor pentru situații apoximativ identice de excitare a senzorilor (reflectivitate). Evaluǎrile efectuate prin plasarea pe linia-traseu a fiecǎrui senzor, ȋn poziții centrale (pe mijlocul liniei), au condus la nivele diferite ale indicațiilor oferite de senzori. Ȋn tabelul de mai jos sunt prezentate valorile indicațiilor senzorilor ȋn evaluǎrile astfel realizate.

Tabel 4.1 Valorile maxime ale indicațiilor senzorilor

Asimetria geometricǎ a robotului. Diferențele geometrice ȋntre componentele robotului – diferenta dintre dimensiunile roților, poziționarea axelor roților fațǎ de șasiul robotului, abaterea de la coaxialitate a roților, dispunerea asimetricǎ a maselor pe șasiul robotului – toate aceste elemente datorate variabilitǎții inerente a oricǎrui process de fabricație produc efecte neliniare asupra mișcǎrii robotului ȋn raport cu comanda motoarelor.

Frecǎrile din sistemul mecanic al robotului. Frecǎrile din reductoarele motoarelor, frecarea inegalǎ dintre roti și sol produc, de asemenea, efecte neliniare ȋn mișcarea robotului pe traseu.

Efectele dinamice ale funcționǎrii robotului ȋn mișcare. Ȋn timpul deplasǎrii robotului, elementele constitutive ale șasiului acestuia ȋnregistreazǎ deformǎri – ȋn general cu character elastic – a cǎror amploare variazǎ ȋn funcție de elementele cinetice (vitezǎ, traiectorie etc.)

Variațiile din construcția circuitelor electronice. Ȋn funcție de clasa de execuție, de acuratețea cu care sunt realizate circuitele electronice, acestea funcționeazǎ cu o acuratețe mai maire sau mai mica. Un exemplu sugestiv este cel al elementelor de același fel care se gǎsesc pe placa electronica și care pot funcționa ȋn mod ușor diferit de la o unitate la alta, introducând astfel unele efecte neliniare.

Dependențe neliniare intrinseci ȋntre elementele de intrare, parametrii de stare ai sistemuliui și elementele de ieșire. Ȋn afara elementelor de neliniaritate induse de “imperfecțiunile” inerente ale execuției robotului, Ȋn funcționarea robotului opereazǎ dependențe funcționale ȋntre elementele de intrare, parametrii de stare și elementele de ieșire ale acestuia, care sunt intrinsec neliniare.

Astfel, relația dintre vitezǎ, unghi de virare al traiectoriei, pe de o parte, și comenzile roților care asigurǎ stabilitatea roboturlui pe traiectorie, pe de altǎ parte, este ȋn mod evident neliniarǎ (intervenind aici accelerații centrifuge, funcții trigonometrice. De asemenea, cerințele referitoare la asigurarea capabilitǎții robotului de a rǎmâne pe traiectorie impun ca ȋnsǎși forma funcției de comandǎ, care leagǎ comanda de intrǎrile senzorilor, sǎ fie neliniarǎ.

Un alt exemplu este legat de faptul cǎ pentru a detemina unghiul traiectoriei fațǎ de direcția de deplasare a robotului sunt necesare, ȋn cazul linear, douǎ puncte care ar trebui determinate utilizând douǎ bare de senzori. Limitarea la utilizarea unei singure bare de astfel de senzori induce necesitatea utilizǎrii, pe lângǎ indicațiile directe ale senzorilor, și a vitezei de variație a acestor indicații, ceea ce revine, ȋn general, la introducerea altor elemente de neliniaritate.

Ȋn sinteza comenzii robotului pentru a determina realizarea misiunii acestuia – urmǎrirea liniei care descrie traseul – este necesar sǎ fie tratate aceste efecte neliniare, efecte care, pe lângǎ faptul cǎ sunt practice imposibil de inventariat ȋn mod exhaustive, sunt uneoroi și foarte dificil de descries din punct de vedere matematic. Lucrarea de fațǎ propune o abordare a proiectǎrii programului de control al robotului care sǎ depǎșeascǎ aceste dificultǎți utilizând o combinație de tehnici experimentale și de tehnici inteligente.

Problema robotului “line follower” și modelul sistemului

Robotul “line follower” reprezintǎ o aplicație standard utilizatǎ adesea pentru ilustrarea problematicii din domeniul roboticii, și anume controlul inteligent al sistemelor electro-mecanice.

Din punct de vedere al complexitǎții, problema robotului “line follower” se bucurǎ de o flexibilitate extinsǎ, putând fi formulatǎ atât ȋn forme relativ simple cât și ȋn forme complexe, ȋn funcție de forma și tipul traseelor resursele impuse (trasee cu curburi și unghiuri de virare diverse, cu ȋntreruperi și intersectǎri, cu obstacole interpuse ȋn calea robotului etc.) sau de unele restricții care se pot impune ȋn legǎturǎ cu modul ȋn care robotul ȋși ȋndeplinește misiunea (numǎr limitat de senzori, limitǎri legate de mediul de programare disponibil, limitǎri ale arsenalului euristic utilizat pentru detectarea sau eventual revenirea liniei de urmat etc.).

Ȋn cazul studiat ȋn lucrarea de fațǎ, problema robotului rezidǎ ȋn ȋndeplinrea misiunii de a urmǎri linia care descrie traseul standard prezentat ȋn figura de mai jos, utilizând resursele descrise ȋn capitolul XXXXXX………, precum și resursele software oferite de sistemul Arduino. Confruntarea dintre structura fizicǎ a robotului și cea a traseului definește dificultatea problemei.

Pentru a aborda aceastǎ problemǎ ȋn mod concret este necesarǎ reprezentarea sistemului pe care ȋl reprezintǎ robotul cu resursele sale. Astfel, modelul robotului este descries de urmǎtoarele elemente:

Elemente de intrare:

indicațiile oferite de cei opt senzori (A0, A1, A2, A3, A4, A5, A6);

viteza (exprimata ȋn termenii comenziilor egale aplicate motoarelor care angreneazǎ roțile robotului, C);

traseul standard (acest traseu conține elementele de dificultate pe care le consider representative pentru problema robotului “line follower”).

Elementele de iesire:

acuratețea cu care este parcurs traseul de cǎtre robot;

Elementele de comandǎ:

Comanda motorului roții drepte a robotului (Cd);

Comanda motorului roții stângi a robotului (Cs).

Valorile comenzilor se reevalueazǎ repetat, la anumite intervale de timp, valorile acestora putând fi memorate ca vectori CS[k] și CS[k]

Trebuie observat cǎ se poate defini, ȋn mod simplificat, cele douǎ elemente de comandǎ prin urmǎtoarele relații:

(1)

,

și, prin aceasta, se pot reduce cele douǎ elemente de comandǎ la unul singur, și anume la ΔC[k], dacǎ viteza C rǎmâne constantǎ.

Rafinarea modelului robotului “line follower”

Modelul robotului “line follower” descris ȋn secțiunea anterioarǎ se poate rafina pentru a-l simplifica și pentru a-l face mai eficace și mai eficient.

Uniformizarea indicațiilor senzorilor. O serie de experimente simple aratǎ cǎ, ȋn situații aproape identice de poziționare fațǎ de linia care trebuie urmǎritǎ, senzorii produc indicații diferite. Spre exemplu, dacǎ se poziționeazǎ pe rând senzorii pe mijlocul liniei, se obțin indicații diferite de la diferiți senzori, așa cum se aratǎ ȋn tabelul 1 din secțiunea Aspecte neliniare ale funcționǎrii robotului “line follower”. Acest aspect induce probleme ȋn asociaerea poziției liniei de senzori și implicit a robotului fațǎ de linie. Un mod de a elimina aceastǎ problem este acela de a standardiza indicațiile senzorilor, și anume de a le face sǎ ia doar valorile 0 sau 1 aplicând funcția de rotunjire la cel mai apropiat ȋntreg:

, cu Ak max >0. (2)

Reducerea dimensiunii intrǎrilor sistemului. Pentru reducerea dimensiunii intrǎrilor se pot agrega cele opt indicații ale senzorilor printr-o funcție-scor. Acest scor trebuie sǎ fie o funcție injectivǎ de poziția relativǎ a liniei fațǎ de bara de senzori. Ca sǎ construim aceastǎ funcție pornim de la observația cǎ grosimea liniei poate activa unu sau doi senzori simultan, ȋn funcție de poziția relative a benzii de senzori fațǎ de linie.

Ȋn scopul construirii acestei funcții-scop se parcurg urmǎtorii pași:

Se alocǎ fiecǎrui sensor o pondere wi astfel ȋncât ponderile sǎ fie cu atât mai mare ȋn valoare absolutǎ cu cât senzorul este mai depǎrtat de poziția centralǎ a benzii de senzori și distribuite simetric fațǎ de poziția centralǎ iar diferența ȋntre partea stângǎ și cea dreaptǎ sǎ se realizeze prin semnul ponderii (“-“ pentru partea stângǎ și “+” pentru partea dreaptǎ);

Tabelul 2 – Ponderile wi asociate senzorilor

Se calculeazǎ suma ponderatǎ a indicațiilor senzorilor:

.

Se divide suma ponderatǎ prin numǎrul de senzori activați:

. (3)

Tabelul 2- Scorurile Sw și Spentru poziții ale liniei de la extrema stângǎ la extrema dreaptǎ a benzii de senzori

Graficele din figura 1 aratǎ cum modul de calcul al scorului propus realizeazǎ o legǎturǎ de proporționalitate injectivǎ ȋntre poziția robotului fatǎ de linia pe care o urmǎrește și indicația oferitǎ de variabila sinteticǎ scor S.

Construirea comenzii ca funcție de variabila sinteticǎ de intrare scor S. Având ȋn vedere semnificația scorului S, de exprimare echivalentǎ a poziției relative a robotului fațǎ de linia pe care acesta trebuie sǎ o urmǎreascǎ, se poate formula un model linear de comandǎ (vezi (1)):

(4)

unde D=D(C), ceea ce corespunde faptului cǎ virarea trebuie sǎ fie cu atât mai energicǎ pentru un același unghi de virare, cu cât viteza de deplasare (exprimatǎ prin ) este mai mare.

Experimente elementare aratǎ cǎ modelul (1), cu ΔC dat de (4), este viabil pentru valori moderate ale scorului () ȋnsǎ pentru valori extreme ale scorului sunt necesare comenzi mai energice. Pentru a rezolva acest aspect nu este suficient sǎ se aleagǎ o valoare D mai mare deoarece se induce un nivel ridicat de instabilitate. Ȋn consecințǎ se propune un model mai nuanțat:

, unde H>0. (5)

Aceastǎ formǎ a comenzii asigurǎ o mai bunǎ stabilitate alǎturi de o comportare mai bunǎ la unghiuri de virare extreme ȋnsǎ nu exclude ieșirea robotului de pe traseu. Pentru astfel de situații este necesar sǎ fie prevazute elemente suplimentare ȋn sinteza comenzii, elemente care sǎ asigure regǎsirea traseului.

Experimente constând ȋn parcurgerea unor tresee simple de cǎtre robot indicǎ faptul cǎ pǎrǎsirea linei se produce ȋn principal datoritǎ unor viraje mai strânse decât poate executa robotul condus cu modelul de comandǎ (5). Pentru a compensa acest neajuns, este necesar ca, atunci când se produce un astfel de eveniment, sǎ se accentueze comanda de virare ȋn sensul initial. De asemenea, este necesar sǎ se introducǎ un indicator Scritic pentru situația de pǎrǎsire a liniei ca funcție de indicațiile senzorilor. Iatǎ formele propuse pentru aceste douǎ noi elemente:

, (6)

iar pentru situațiile ȋn care Scritic=0, comenzile care se aplicǎ sunt urmǎtoarele:

(7)

.

Acest tip de accentuare a comenzii inițiale (P>0) este urmatǎ de reevaluarea scorurilor S și respectiv Scritic pentru a reevalua poziția robotului ȋn urma aplicǎrii noilor comenzi.

Sintetizând, comanda aplicatǎ robotului va fi data de o funcție de viteza C și de scorurile S și Scritic, aceastǎ funcție depinzând, la rândul sau de parametri D, H și P. Așa cum indicǎ experimentele efectuate, parametrii D, H și P asigurǎ un control satisfǎcǎtor al robotului “line follower” dacǎ sunt aleși adecvat pentru fiecare vitezǎ C. Deci, pentru un traseu standard sau de referințǎ, comenzile aplicate motoarelor robotului conform modelului construit se pot descrie astfel:

(8)

.

Valorile D, H și P se pot alege experimental pentru fiecare viteza dintr-un interval de valori ale acesei variabile. Pentru a putea alege aceste valori pe baza experimentelor, criteriul stabilitǎții comportǎrii robotului ȋn timpul urmǎririi liniei traseului standard poate fi utilizat. Ȋnsǎ acest criteriu trebuie coordonatizat, trebuie sǎ i se atribuie anumite valori care sǎ poatǎ fi comparate și astfel sǎ se poatǎ distinge ȋntre diversele seturi de valori D, H și P testate ȋn cursul experimentului.

Formularea unui criteriu numeric de stabilitate a sistemului. Pentru a formula o expresie numericǎ adecvatǎ a criteriului de stabilitate, se poate porni de la observația cǎ situația de stabilitate idealǎ este aceea ȋn care scorurile S calculate ȋn timpul parcurgerii traseului standard de cǎtre robot sǎ fie mereu nule, cu alte cuvinte poziția liniei urmǎrite sǎ fie pe mijlocul benzii de senzori. Dacǎ privim scorul S ca o eroare, ca o mǎrurǎ a abaterii robotului de la traseu, atrunci suma pǎtratelor tuturor scorurilor ȋnregistrate ȋn timpul parcurgerii traseului standard, poate fi privitǎ suma a pǎtratelor erorilor (SoS), funcție frecvent ȋntrebuințata ȋn procedurilor de optimizare:

, (9)

unde j este un contor al reevaluǎrii scorului. Acest criteriu permite compararea diferitelor combinații deparametrii ai sistemului din punct de vedere al performanței de stabilitate exprimatǎ ca sumǎ a abaterii pǎtratice de la linia de urmǎrit.

Experimente de identificare a parametrilor sistemului

Alegerea adecvatǎ a parametrilor din modelul sistemului impune identificarea sistemului pornind de la o serie de experimente.

Un prim subiect al demersului de identificare este reprezentat de legǎtura dintre vitezǎ ( și parametrii funcției de comandǎ. Ȋn acest experiment, combinația de parametrii corespunzǎtoare se poate selecta pe criteriul de stabilitate formulat anterior.

Descrierea experimentului

Rezultatele acestui set de experimente sunt prezentate ȋn tabelul de mai jos:

Tabelul ccccc.

Un alt aspect al sistemului care poate face subiectul identificǎrii este unghiul de virare sau mai exact legǎtura dintre indicațiile date de bara de senzori, eventual considerate sub forma sinteticǎ a scorului S și unghiul de virare.

Ȋn principiu, determinarea unghiului necesitǎ douǎ indicații de tip scor sau douǎ bare de senzori care sǎ determine noua direcție a liniei de urmat dupǎ viraj. Ȋn cazul robotului considerat care are o singurǎ barǎ de senzori, se propune soluția considerǎrii, pe lângǎ scorul S, a variației scorului ȋntr-un interval de timp dat τ0. Aceastǎ variație a scorului ȋntr-un interval standardizat de timp τ0 oferǎ aceeași informație ca și derivate scorului. Relația care face obiectul identificǎrii este deci:

Descrierea experimentului

Rezultatele acestui set de experimente sunt prezentate ȋn tabelul de mai jos:

Tabelul dddd.

Integrarea elementelor de identificare a sistemului ȋn funcția de comandǎ

Analiza sistemului robot “line-follower” utilizând modelul de tip rețea neuronalǎ

Ȋn secțiunile anterioare ale lucrǎrii au fost identificate legǎturile de naturǎ neliniarǎ ȋntre parametrii funcțioali ai sistemului reprezentat de robotul “line-follower” și performanțele de stabilitate și vitezǎ ale acestui robot. Identificarea a condus la modelarea sistemului sub forma a douǎ rețele neuronale care au drept ieșiri câte un indicator de performanțǎ iar ca intrǎri cei parametric fucționali definiți odatǎ cu construirea modelului de comandǎ al robotului.

Ȋn continuare se vor valorifica cele douǎ modele de tip rețea pentru a studia variația performanțelor ȋn funcție de diferite nivele ale parametrilor funcționali dincolo de experimentele deja efectuate. Aceasta va permite selecția celor mai performante regimuri funcționale ale robotuluiși predicția performanțelor sale pe traseul standard considerat.

Derivatele modelului de tip rețea neuronalǎ

Unul din avanatajele esențiale ale utilizǎrii modelelor de tip rețea neuronalǎ rezidǎ ȋn faptul cǎ aceste modele sint diferențiabile ȋnraport cu variabilele de intrare. Pentru a profita de acest avantaj și a facilita calculul acestor derivate se fac notațiile din tabelul de mai jos.

Tabel 7.1 Ponderile rețelei MLP 4-4-1 selectate pentru modelarea performanțelor robotului

Cu aceste notații, se stabilesc relațiile care definesc derivatele ieșirilor rețelelor O ȋn raport cuparametrii funcționali ai robotului care reprezintǎ intrǎrile rețelelor. Deoarece ambele rețele au aceeași topologie și aceleași funcții de activare, expresiile literale ale derivatelor ȋn cazul celor douǎ rețele vor fi identice.

Iatǎ ȋn continuare expresiile ieșirilor O și ale derivatelor ieșirilor care utilizeazǎ notațiile stabilite:

(??)

(??)

(??)

. (??)

Cu aceste relații au fost calculate valorile indicatorilor de performanțǎ pentru un numǎr de combinații diferite de valori ale parametrilor funcționali care depǎșesc cadrul acoperit de experimentele realizate.

Trebuie fǎcutǎ observația cǎ rețelele MPL 4-4-1 au fost definite pornind de la datele experimentale scalate. De aceea, rezultatele obținute cu ajutorul relațiilor de mai sus – care sunt rezultate scalate –trebuie corectate dupǎ cum urmeazǎ:

;

(??)

.

Atât ieșirile celor douǎ rețele cât și derivatele acestora sunt, conform relațiilor (??), (??), (??), (??), funcții de patru variabile, alurile de variație ale acestora nu se pot reprezenta ȋntr-un singur grafic. De aceea se vor utiliza pentru reprezentarea lor multiple grafice bidimensionale dar și grafice tridimensionale.

Iatǎ mai ȋntâi graficele pentru , ȋn figurile 6.1, 6.2, 6.3 și apoi pe cele pentru , ȋn figurile 6.4, 6.5, 6.6.

Valorile corespunzǎtoare reprezentǎrilor grafice din figurile de mai sus sunt prezentate ȋn Anexa WWW.

Ȋn urma analizei variațiilor reprezentate prin graficele din figurile de mai sus, se pot selecta domeniile de valori pentru parametrii funcționali corespunzatori diverselor viteze C.

Astfel, introducând un indicator combinat ȋntre cei doi indicatori de performanțǎ, se pot ordona combinațiile de parametri funcționali din tabelul din Anexa www. Ȋn acest scop s-a utilizat urmǎtorul indicator:

.

Dintre aceste combinații se rețin primele 10 cu cele mai mici valori ale indicatorului. Aceste combinații sunt prezentate ȋn tabelul 6.2.

Tabel 7.2 Combinațiile de parametric funcționali cu cele mai bune performsanțe

Deoarece combinațiile reținute se gǎsesc ȋn afara domeniului ȋn care s-au efectuat experimentele ȋn vederea identificǎrii sistemului, validitatea acestor regimuri trebuie confirmatǎ experimental.

Ca urmare a verificǎrii experimentale a acestor regimuri funcționale ale robotului “line-follower”, au fost selectate trei regimuri, și anume cele mai performante pentru fiecare din cele trei viteze. Aceste regimuri au fost marcate ȋn tabelul 6.1. Cele trei regimuri rezultate din calculele efectuate cu ajutorul modelelor de tip rețea neuronalǎ și care au prezentat performanțe calculate superioare, s-au dovedit instabile la testele experimentale, pǎrǎsind ȋn mod repetat traseul desctis de linia de urmǎrit.

Rezultatele experimentale referitoare la combinațiile de parametric funcționali selectate, sunt prezentate ȋn tabelele de mai jos.

C=80, D=15, Cr=1, Cra=25

C=100, D=11, Cr=0, Cra=21

C=120, D=12, Cr=0, Cra=22

Rezultatele experimentale, deși diferǎ de ȋn oarecare mǎsurǎ de cele calculate, predicția cǎ acestea sunt unele dintre cele mai performante combinații de parametri funcțional ale roboturlui este conformatǎ de faptul cǎ performanța de stabilitate la viteza C=80 este mult sub media rezultatelor experimentale (21,4727) utilizate la identificarea sistemului considerat, ȋn timp ce performanța la parcurgerea traseului standard pentru viteza C=120 este de asemenea mult sub mivelul mediu rezultat din aceleași experimente (129,4878). Ȋn cazul C=100, ambele performanțe sunt sub mediile experimentale.

Utilizarea rezultatelor identificǎrii și analizei sistemului robot “line-follower”

Identificarea sistemului robot “line-follower” a condus la modelarea legǎturilor dintre parametrii funcionali ai robotului și doi indicatori de performanțǎ ai acestuia, sub forma a douǎ rețele neuronale de tip multiperceptron cu topologie 4-4-1.

Cu ajutorul acestor rețele, care surprind esența raporturilor cu character pronunțat neliniar care existǎ ȋn structura funcționalǎ a sistemului, a fost posibilǎ analiza performanței robotului ȋntr-o arie mai largǎ decât cea acoperitǎ de partea experimentalǎ a prezentei lucrǎri. Acestǎ analiza a implicat aplicarea atât a interpolǎrii (ȋn sensul modelului rețea neuronalǎ) cât și a extrapolǎrii performanțelor, gǎsindu-se astfel unele dintre cele mai performante regimuri funcționale ale robotului ȋn relative la parcurgerea de cǎtre acesta a traseului standard. Din aceastǎ cauzǎ, regimurile cu cele mai bune performanțe au fost testate efectiv pe traseul standard pentru a se valida concluzia analizei. Ȋn cazul unuia dintre aceste regimuri, care a fost obținut prin extrapolare, a fost necesarǎ ajustarea unuia dintre parametrii astfel ȋncât sǎ se menținǎ o stabiltate adecvatǎ.

Ȋn cele ce urmeazǎ se utilizeazǎ rezultatele acestei analize pentru a structura un program de ajustare a regimului de funcționare a robotului (descris prin nivelul celor patru parametri funcționali) astfel ȋncât sǎ se obține o duratǎ cât mai scurtǎ de parcurgere a traseului standard.

Pentru a realiza aceasta, s-a pornit de la faptul cǎ, observând comportarea robtului “line-follower” ȋn timpul parcurgerii traseului standard, s-a constatat cǎ, la viteze mari se parcurg mai rapid porțiunile de traseu pe care bara de senzori a robotului rǎmâne pe linia urmǎritǎ dar cǎ duratele de timp ȋn care robotul nu se aflǎ pe linie (durate ȋn care acesta ȋncearcǎ sǎ regǎseascǎ lina) sunt mai ȋndelungate.

Prin comparație, la viteze mai mici, robotul se gǎsește mai puțin timp cu bara de senzori ȋn afara liniei dar parcurgerea porțiunilor de traseu, ȋn care robotul se gǎsește cu bara de senzori pe linia de urmarit, se face mai lent.

De asemenea, ȋncercarea de menține robotul pe linie prin creșterea parametrilor D și Cr, conduce la apariția unpor manifestǎri de instabilitate. Dacǎ, ȋnsǎ, se ȋncearc accelerarea regǎsirii linei, atunci când robotul nu se gǎsește cu bara de senzori pe linia de urmǎrit, prin creșterea parametrului Cra, crește incidența cazurilor (a probabilitǎții) ȋn care robotul trece prea repede peste linie fǎrǎ sǎ o sesizeze și deci pǎrǎsește din nou traseul descries de linia urmǎritǎ.

Aceste observații conduc la concluzia cǎ, ȋmbunǎtǎțirea (ȋn raport cu regimurile selectate, ȋn secțiunea anteriorǎ a lucrǎrii, ca fiind cele mai performante) timpului de parcurgere a traseului standard – și probabil a oricǎrui alt traseu – de cǎtre robotul “line-follower” nu este posibilǎ prin simpla modificare a unor parametrii funcționali și menținerea unui același regim pe tot parcursul traseului. Ȋn aceste condiții, cea mai adecvatǎ strategie de a ameliora performanța de vitezǎ a robotului pe un traseu dat constǎ ȋn combinarea celor mai performante regimuri, care au viteze mici, medii și mari, astfel ȋncât la curburi mari ale traseului (raza de virare redusǎ, unghi de virare mare) sǎ fie utilizate viteze mai reduse iar porțiunile de traseu cu curburi reduse (inclusive cele aproape rectilinii) sǎ fie abordate cu vitezele cele mai mari, astfel ȋncât traseul sa fie parcurs ȋn cel mai scurt pimp posibil fǎrǎ sǎ existe riscul apariției manifestrǎrilor de instabilitate ȋn comportarea robotului și menținându-se ȋn același timp un risc redus de pǎrǎsire definitive a traseului.

Ȋn mod evident, realizarea exactǎ a unei astfel de strategii presupune abilitatea robotului de a anticipa schimbarea curburii traseului. Ȋnsǎ robotul realizat și analizat nu este echipat pentru a realiza acest tip de predicție. Singurul element sensibil al acestei construcții – bara cu cei opt senzori – trebuie sǎ se gǎseascǎ deasupra zonei unde incepe modificarea semnificativǎ a curburii pentru a o putea sesiza. Ȋn aceste condiții, abordarea cea mai apropiatǎ de strategia descrisǎ mai sus este de a asocia semnalele furnizate de bara de senzori cu diferitele grade de curburǎ pe care le prezintǎ un traseu.

Pentru a testa aceastǎ soluție de principiu, se pot utiliza cele trei combinații de parametrii funcționali, regimuri care au fost identificate ca fiind cele mai performante pentru vitezele cǎrora le-au fost asociate.

Ȋn mod concret, stabilirea modului de control și comandǎ a robotului presupune urmǎtoarele:

Pornirea parcurgerii traseului descries de linia de urmǎrit viteza maximǎ (C=120) și cu regimul asociat acesteia;

La creștera curburii traseului, se reduce viteza (de exemplu de la C=120 la C=100 sau de la C=120 la C=80, dupǎ caz);

La reducerea curburii traseului se crește viteza (de exemplu de la C=80 la C=100 sau de la C=100 la C=120, dupǎ caz).

Secvențele 2 și 3 necesitǎ ȋnsǎ criteria pentru concretizarea variației curburii. Pentru stabilirea acestor criterii, s-au efectuat o serie de experimente pe trasee cu viraje unghiulare de 30°, 45°, și 70°, pentru fiecare dintre cele trei regimuri funcționale ale robotului, selectate ȋn secțiunea anterioarǎ a lucrǎrii.

Observarea modului ȋn care unghiul de virare se reflect ȋn variația scorului S, pe baza cǎruia se construiește comanda, s-a realizat un program care ȋnregistraezǎ momentul ȋn care senzorul 3 sau 4 (ȋn funcție de sensul virajului) se dezactiveazǎ (robotul pornește de pe o porțiune dreaptǎ a traseului ȋn care acești senzori sunt activați ȋn același timp) și desemneazǎ acest scor ca Scurbǎ.

Lungimea traseului total este același pentru toate repetǎrile experimentului iar la fiecare repetare se ȋnregistreazǎ, de asemenea, și performanța . Ȋn final se calculeazǎ media și abaterea medie pǎtraticǎ a indicatorilor de performanțǎ, se scaleazǎ acești indici scǎzând media și ȋmpǎrțind la abaterea medie pǎtraticǎ și se calculeazǎ un indicator combinat egal cu media valorilor scalate pentru fiecare repetare. Datele astfel obținute sunt prezentate ȋn tabelul 7.1.

Tabel 8.1 Rezultatele

Analizând datele din tabelul 7.1, se pot selecta regimurile cele mai performante pentru fiecare interval de valori ale unghiului de virare, reținându-se, ȋn același timp valorile Scurbǎ pentru fiecare combinație viteza – unghi de virare.

Tabel 8.2 Selectarea regimurilor celor mai adecvate pentru fiecare unghi de virare

Parcurgând aceastǎ procedurǎ de lucru, s-au selectat regimurile din tabelul 7.2.

Combinarea acestor regimuri se realizeazǎ dupǎ regulile urmǎtoare:

Pentru Scor 4 se utilizeazǎ regimul corespunzǎtor vitezei C=120;

Pentru 4<Scor, se utilizeazǎ regimul corespunzǎtor vitezei C=100;

Pentru Scor<6, se utilizeazǎ regimul corespunzǎtor vitezei C=80.

Validarea acestui mod de comandǎ a robotului trebuie ȋnsa validat experimental. Rezultatele validǎrii sunt prezentate ȋn tabelul 7.3.

Tabel 8.3 Rezultatele validǎrii soluției de combinare a regimurilor de funcționare ale robotului

Combinarea regimurilor celor mai adecvae porțiunilor de traseu, ȋn funcțiede curbura acestora, conduce la rezultate superioare ȋn medie. Problemele constructive ale robotului realizat induc ȋnsǎ o variabilitate ȋnsemnatǎ a acestor rezultate.

Aceastǎ soluție este, ȋn orice caz, utilizabilǎ, mai ales dacǎ se are ȋn vedere posibilitate de realizare cu o mai mare acuratețe – eventual ȋn condiții industrial, profesionale – a structurilor mecanice ale robotului

Tehnici de inteligențǎ artificialǎ

Pentru a realiza rețeaua neuronală, s-a creat un program care apoi a fost încărcat pe microcontroller la fiecare experiment.

Prima etapă a experimentului a fost alegerea unui traseu standard. Acest traseu are atât unghiuri mai deschide, cât și unghiuri mai închise. Alegerea traseului a fost făcută astfel încât să se poată observa comportamentul robotului atunci când el trebuie să vireze fie mai brusc (pe o curbă închisă), fie mai încet (pe o curba deschisă).

Prin intermediul experimentelor realizate s-a observat în ce condiții robotul intră în stabilitate (urmărirea perfectă a traictoriei) și în ce imprejurări el se află în instabilitate (ieșirea acestuia de pe traictorie fără să o mai găsească). Programul a fost realizat în limbajul de programare C. Prin intermediul acestuia sunt afișate informații despre datele de intrare necesare pentru realizarea rețelei neuronale și care controlează sau nu poziționarea robotului pe traictorie. În funcție de datele alese pentru experiment, robotul urmărește mai bine sau mai puțin bine traictoria.

Pregătire program experiment

La realizare programului, în primă fază, a fost definită o variabilă scorAbsolut, care calculează suma valorilor absolute ale senzorilor. Fiecare senzor în parte, la așezarea lor pe culoarea neagră, dau o valoare maximă (Tabelul 4.1). Dacă scorul absolut este 0, înseamnă că bara de senzori ai robotului nu se află cu niciunul dintre aceștia pe linia neagră, iar dacă scorul este atunci robotul are senzori activi. Scorul absolut are forumula:

Cât timp robotul se află pe traictorie, adică scorul absolut este diferit de 0 trebuie aduse modificări comenzilor pentru motoare, în funcție de ce senzori sunt activi. Dacă senzorii din mijloc sunt activi comanda motoarelor se păstrează, dacă senzorii din dreapta sunt activi, comanda se mărește pentru motorul stâng și se micșorează pentru motorul drept. Pentru a face acest lucru, a fost definită o variabilă ,

, unde

Acest scor se calculează la fiecare iterație pentru a pune robotul pe traictoria dorită.

Combinațiile de valori cu care au fost realizate experimentele sunt prezentate în tabelul de mai jos:

Tabel 9.1 Valorile penntru realizare experimente

În care C reprezintă comanda inițială transmisă motoarelor, d reprezintă viteza cu care se aplică comenzile pentru motoarele stânga, dreapta, Corecția reprezeintă variabila aplicată în cazul în care senzorii detectează traictoria pe partea stângă sau dreaptă, Corecția de avarie reprezintă variabila care se aplică în cazul în care robotul își pierde traictoria, aceasta făcând posibilă întoarcerea robotului pe traseul pe care a pornit.

Comanda maximă pe care o pot lua cele două motoare ale robotului este de 250. S-a observat că, în cazul în care se depășește valoarea de 250, motorul se blochează. Din cauza acestui fapt au fost impuse anumite condiții și anume:

Dacă cele două comenzi

Dacă cele două comenzi

Atunci când scorul absolut este 0 (adică nu există niciun senzor activ), se aplică o corecție de avarie astfel:

Dacă robotul a ieșit de pe traictoria sa, timp de 4000 de iterații, el va căuta să ajungă din nou pe traseul pierdut. Dacă acesta nu găsește drumul de întoarcere el se va oprii, alfel el revine și își continuă drumul până la capăt.

Determinǎri experimentale ale parametrilor funcționali și de performanțǎ ai robotului line-follower

Din experimentele realizate cu ajutorul programului C explicat în subcapitolul 8.1 Pregătire program experiment, am folosit ca intrări perechea ce conține următoarele variabile: C, d, Cr, Cra.

Construcția rețelei

Tentativele de construcție a unei rețele neuronale pentru a modela legătura dintre comenzile transmise motoarelor robotului și unghiul față de axa centrală a acestuia:

au dus la rețele a căror performanțe sunt foarte scăzute. Erorile predicțiilor ce au fost rezultatul dat de acestea ajungeau la valori de 50% și chiar de 100% din valoarea țintei. Deși valorile afectate ale erorilor de colectare, au fost eliminate, valoarea erorii predicțiilor a rămas la 50 sau chiar 100% din țintă.

Au fost construite două rețele, în care pentru prima rețea, ținta reprezintă media aritmetică pentru fiecare pereche de date a . – ce reprezintă media abaterii pǎtratice de la traseul de urmǎrit pe fiecare tact de recalculare a comenzii. Variabila SOS –Sum of square reprezintă scorul final construit din suma pătratelor valorilor obținute de la senzori. Iar în cea de a doua rețea, ținta reprezintă media aritmetică pentru fiecare pereche de date a – ce reprezintă media timpilor de parcurgere a traseului standard.

Construcția acestor rețele a fost realizată cu ajutorul programului STATISTICA, în care s-au folosit perceptroni multistrat (MLP). De asemenea s-au folosit algoritmi de antrenare a rețelelor precum BFGS – metoda Broyden–Fletcher–Goldfarb–Shanno; RBFT, funcția eroare utilizată a fost cea de tip SOS, funcțiile de activare ale neuronilor s-au selectat dintre tangenta hiperbolica (tanh), funcția gaussiană, funcția logistică, funcția identitate, funcția exponențială. Criteriile de selecție a diverselor arhitecturi au inclus simplitatea rețelei, performanța rețelelor deja calculate, nivelul de acuratețe acceptabil pentru aplicația considerată (cel puțin din valoarea care se determină), recomandările programului STATISTICA etc.

Pentru rețeaua MPL, utilizatorul are posibilitatea de a alege din următoarele funcții de activare pentru stratul intermedia și cel de ieșire:

Functia activare de tip Identity. Cu ajutorul acesteia, nivelul de activare este trimis direct drept ieșire a neuronului;

Funcția de activare de tip Logistic sigmoida. Funcția este reprezentată printr-o curbă ce are forma unui S (sigmoidă) și în care ieșire are valori in intervalul (0,1);

Funcția de activare de tip Tanh (tangent hiperbolică). Funcția este una simetrică cu forma unui S, în care ieșirea are valori cuprinse în intervalul (-1,1). Însă, datorită simetriei, în cele mai multe cazuri se obțin rezultate mai bune decât în cazul funcției sigmoidă;

Funcția de activare Exp (exponențială negativă;

Funcția de activare Sine (sinus standard).

SOS – Sum of square, este folosită ca funcție de eroare. Este printre cele mai des utilizate funcții pentru calcularea erorii în etapa de antrenare a rețelelor neuronale. În programul STATISTICA este utilizabil atât pentru arhitectura de rețea MLP, cât și pentru RBF.

Rețelele neuronale care au fost folosite în algoritmi de intruire sunt prezentați în tabelul următor:

Colectarea datelor

În urma experimentelor au fost realizate 149 de seturi de date, fiecare set de date având 4, 5 sau chiar 7 perechi de date. Pentru fiecare pereche de date au fost calculate cele două formule:

După aplicarea celor două relați s-au calculat mediile acestora cu formulele:

Aceste date sunt folosite în antrenarea rețelei neuronale. Deoarece, după efectuarea unor analize se observă anumite deviații pe datele colectate, trebuie ca acestea să fie eliminate pentru asigurarea unei coerențe și pentru a avea o exacitate cât mai bună a rețelei.

Eliminarea deviațiilor

După colectarea datelor experimentale trebuie să se țină cont de calitatea și reprezentativitatea acestora, mai precis trebuie avut în vedere gradul de reflexie a datelor mecanismenlor interne ale procesului dat.

Variabilitatea datelor, în cadrul proceselor stohastice, raportată la o componentă deterministă este datorată unor cauze precum:

Cauzele comune, nedesemnabile – reprezintă cauzele comune tuturor stărilor din cadrul procesului, fiind dificil de nominalizat sau de identificat cu exactitate. Ele nu se pot elimina din cadrul procesului. Aceste cauze sunt numeroase și au efecte de mărime redusă.

Cauzele speciale sau desemnabile – reprezintă cauzele care au efecte semnificative ca mărime, fiind opuse cauzelor comune, ele pot fi identificate și chiar eliminate din cadrul procesului dat.

Deoarece nu putem predicționa procesele care au fost afectate de aceste tipuri de cauze, trebuie să le eliminăm pentru a asigura o anumită stabilitate asupra comportamentului în timp, a procesului.

Dacă procesul este reprezentat de variabile de dimensiune multiplă, stabilitatea în timp este asigurată de conservarea raporturilor dintre componentele ce aparțin acestora.

Identificarea sistemului cu ajutorul retelelor neuronale

Proiectarea sistemului de control al robotului line-follower pentru creșterea performanței acestuia

Concluzii – Rezultate și cercetǎri viitoare

Reglarea

SRA (Sistemele de reglare automată) sunt utilizate pentru a putea proiecta diverse aplicații, iar mai apoi ele să poată fi făcute funcționale. În controlarea automată a unui proces, problema principală este aceea de a găsi cea mai optimă metodă de acționare asupra acestuia pentru a ajunge la un comportament dorit. În etapa de control trebuie să se țină cont de perturbațiile care acționează asupra procesului ce pot fi necontrolabile. Schema standard a unui sistem de control automat este prezentată în figura următoare:

Fig. 13.1 Schema standard SRA

Principalele elemente din cadrul unei scheme standard SRA sunt mărimea de referință r, eroarea de la intrarea în sistem , mărimea de comandă u, respectiv mărimea de ieșire y. HR reprezintă regulatorul, iar Hp reprezintă procesul.

Etapele parcurse pentru a realiza reglarea automată sunt următoarele:

Etapa de măsurare – în care s-au realizat experimente …..

Etapa de calculare a scorului

Etapa de comparare a scorului cu referința; comportamentul dorit este acela de a menține robotul pe traictorie, adică scorul să fie 0. Scorul reprezintă mărimea de ieșire.

Asupra procesului apar perturbații de care trebuie să se țină seama.

Bibliografie

Anexă

Anexa 1 – Datele extrase din experimente

Anexa 2

Programul C folosit pentru achiziționarea datelor

int deltaC;

int scor[200];

int scorAbsolut;

int c;

int cd[200];

int cs[200];

int d;

int k;

int j;

int r;

double time;

float analog7;

float analog6;

float analog5;

float analog4;

float analog3;

float analog2;

float analog1;

float analog0;

int val;

int scorFinal;

int m ;

int corectie; // corectia comenzii pentru valori extreme ale scorului

int corav; //corectie de avarie la parasirea liniei

void setup()

{

Serial.begin(9600);

pinMode(6, OUTPUT); /*Motorul din dreapta, directia spate; */

pinMode(9, OUTPUT); /* Motorul din dreapta, directia inainte; */

pinMode(10, OUTPUT); /*Motorul din stanga, directia spate; */

pinMode(11, OUTPUT); /*Motorul din stanga, directia inainte ; */

}

void loop()

{

scorFinal = 0; // SumOfSquare

corav =25;// corectia de avarie

corectie = 6;

d=12;//

m =0;

c=100;// comanda

r=0;

deltaC=0;

scorAbsolut=0;

if(Serial.available())

{

val = Serial.read();

}

delay(5000);

analogWrite(11, 100); //stanga inainte SI

analogWrite(9, 100); //dreapta inainte DI

analogWrite(10, 0); //staanga inapoi SS

analogWrite(6, 0); //DR inapoi DS

CitireAfisare();

scorAbsolut = CalculAbsolut(); // suma absoluta a senzorilor

Serial.print("scorAbsolut = ");

Serial.println(scorAbsolut,DEC);

k=-1;

ciclare:

scorAbsolut = CalculAbsolut();

Serial.print("scorAbsolut = ");

Serial.println(scorAbsolut,DEC);

while(scorAbsolut > 0 && m < 4000){

if(k>99)k=-1;

r=r+1;

k++;

scor[k] = ((-7)*round(analog0/750) +(-5)*round(analog1/730)+(-3)*round(analog2/739)-round(analog3/743)

+round(analog4/764)+3*round(analog5/740)+5*round(analog6/736)+7*round(analog7/738))/scorAbsolut;

if((scor[k]>(-5)) && (scor[k]<5)){

deltaC=scor[k]*d;

}

else {

deltaC=scor[k]*(d+corectie);

}

cs[k] = c+deltaC;

cd[k] = c-deltaC;

if(cs[k]<0){

cs[k]=20;

}

else

{

cs[k]= cs[k];

}

if(cd[k]<0){

cd[k]=20;

}

else

{

cd[k] =cd[k];

}

if(cs[k]>250){

cs[k]= 240;

}

else {

cs[k]=cs[k];

}

if(cd[k]>250){

cd[k]=240;

}

else{

cd[k]=cd[k];

}

analogWrite(11, cs[k]);//stanga inainte SI

analogWrite(9, cd[k]); //dreapta inainte DI

analogWrite(10, 0); //staanga inapoi SS

analogWrite(6, 0); //DR inapoi DS

Serial.print("k = ");

Serial.println(k, DEC);

Serial.print("scor= ");

Serial.println(scor[k]);

Serial.print("cs = ");

Serial.println(cs[k]);

Serial.print("cd = ");

Serial.println(cd[k]);

Serial.println("–––––––-");

scorAbsolut = CalculAbsolut();// poate si 0/1/2 -> suma valorilor absolute senzori

Serial.print("scorAbsolut = ");

Serial.println(scorAbsolut, DEC);

if(scorAbsolut>0){

scorFinal = scorFinal+ abs(scor[k]*scor[k]); // SOS – sumOfSquare

}

else

{

scorFinal = scorFinal+64;

}

if(scorAbsolut >= 7){

delay(200);

scorAbsolut=CalculAbsolut();

if(scorAbsolut >=7){

Serial.println("scorul final este:");

Serial.println(scorFinal,DEC);

Serial.println("scorul absolut este:");

Serial.println(scorAbsolut,DEC);

Serial.print("m=");

Serial.println(m);

Serial.print("r=");

Serial.println(r);

delay(200);

analogWrite(11, 0);//stanga inainte SI

analogWrite(9, 0); //dreapta INAINTE DI

analogWrite(10, 0); //staanga inapoi SS

analogWrite(6, 0); //DR INAPOI DS

exit(0);

}

}

Serial.println("scorul final este:");

Serial.println(scorFinal,DEC);

}

cs[k] = cs[k-1]+corav*(scor[k-1]/abs(scor[k-1]));

cd[k] =cd[k-1]-corav*(scor[k-1]/abs(scor[k-1]));

if(cs[k]>cd[k]){

cd[k] = 20;

}

else { cs[k]=20; }

if(cs[k]>250){ cs[k]= 240; }

if(cd[k]>250){ cd[k]=240; }

scorFinal = scorFinal+64;

m = m+1;

Serial.print("scor Final +64 = ");

Serial.println(scorFinal);

analogWrite(11, cs[k]); //stanga inainte SI

analogWrite(9, cd[k]); //dreapta inainte DI

analogWrite(10, 0); //stanga inapoi SS

analogWrite(6, 0); // dreapta inapoi DS

if(m>=4000){

delay(500);

analogWrite(11, 0); //stanga inainte SI

analogWrite(9, 0); //dreapta inainte DI

analogWrite(10, 0); //stanga inapoi SS

analogWrite(6, 0); //dreapta inapoi DS

Serial.print("m=");

Serial.println(m);

exit(0);

}

else {

delay(200);

goto ciclare;

}

Serial.print("cs = ");

Serial.println(cs[k], DEC);

Serial.print("cd = ");

Serial.println(cd[k], DEC);

Serial.print("scorAbsolut = ");

Serial.println(scorAbsolut, DEC);

}

void CitireAfisare()

{

analog7 = analogRead(A7);

analog6 = analogRead(A6);

analog5 = analogRead(A5);

analog4 = analogRead(A4);

analog3 = analogRead(A3);

analog2 = analogRead(A2);

analog1 = analogRead(A1);

analog0 = analogRead(A0);

Serial.println("–––––––––––––");

Afisare();

}

void Citire(){

analog7 = analogRead(A7);

analog6 = analogRead(A6);

analog5 = analogRead(A5);

analog4 = analogRead(A4);

analog3 = analogRead(A3);

analog2 = analogRead(A2);

analog1 = analogRead(A1);

analog0 = analogRead(A0);

}

void Afisare(){

Serial.println("–––––––––––––");

Serial.print("A7 = ");

Serial.println(analog7, DEC);

Serial.print("\n");

Serial.print("A6 = ");

Serial.println(analog6, DEC);

Serial.print("\n");

Serial.print("A5 = ");

Serial.println(analog5, DEC);

Serial.print("\n");

Serial.print("A4 = ");

Serial.println(analog4, DEC);

Serial.print("\n");

Serial.print("A3 = ");

Serial.println(analog3, DEC);

Serial.print("\n");

Serial.print("A2 = ");

Serial.println(analog2, DEC);

Serial.print("\n");

Serial.print("A1 = ");

Serial.println(analog1, DEC);

Serial.print("\n");

Serial.print("A0 = ");

Serial.println(analog0, DEC);

}

int CalculAbsolut(){

Citire();

int v;

v= round(analog7/738)+round(analog6/736)+round(analog5/740)+round(analog4/764)+round(analog3/743)

+round(analog2/739)+round(analog1/730)+round(analog0/750);

return v;

}

Anexă3 – Rețele neuronale generate cu programul STATISTICA utilizând cele 84 seturi de date experimentale pentru instruire

Tabel 17.1 Retele neuronale cu 4 variabile de intrare

și douǎ variabile de ieșire: și .

Tabel 17.2 Retele neuronale patru variabile de intrare și cu variabilǎ de ieșire

Tabel 17.3 Tabel C. Retele neuronale patru variabile de intrare și cu variabilǎ de m+r

Bibliografie

Tudor, N.L., Rețele Neuronale Artificiale. Aplicații Matlab, Editura MATRIX ROM București, România, 2012.

Veelentruf, L.P.J., Analysis and Applications of Artificial Neural Networks, Prentice Hall, 1995.

Hrisev, R.M., The ANN Book, Edition 1, 1998.

Ion Necoară, Tehnici de optimizare, 2013

Similar Posts