44
Robot mobil deplasat prin comenzi vocale Propusă de Departamentul Electronică, Telecomunicaţii şi Inginerie Energetică ca Lucrare de Licenţă la Facultatea de Inginerie Electrică Universitatea VALAHIA din Târgovişte susţinută de Simion Alin Cezar Specializarea - Electronică aplicată septembrie 17, 2013 SUPERVIZATĂ DE dr.ing. conf. HENRI – GEORGE COANDĂ Reproducerea se poate face doar cu permisiune din partea autorului

robot dirijat prin comenzi vocale

Embed Size (px)

DESCRIPTION

Electronica

Citation preview

Page 1: robot dirijat prin comenzi vocale

Robot mobil deplasat prin comenzi vocale

Propusă de DepartamentulElectronică, Telecomunicaţii şi Inginerie Energetică ca

Lucrare de Licenţă

laFacultatea de Inginerie Electrică

Universitatea VALAHIA din Târgovişte

susţinută deSimion Alin Cezar

Specializarea - Electronică aplicată

septembrie 17, 2013

SUPERVIZATĂ DEdr.ing. conf. HENRI – GEORGE COANDĂ

Reproducerea se poate face doar cu permisiune din partea autorului

Page 2: robot dirijat prin comenzi vocale

2

Facultatea deInginerie Electrică

Faculty ofElectrical Engineering

Simion Alin CezarAUTOR LUCRARE / AUTHOR OF THESIS

Inginer (B.Sc.)GRAD / DEGREE

Inginerie Electronică şi TelecomunicaţiiDOMENIU / DOMAINE

Robot mobil deplasat prin comenzi vocaleTITLUL LUCRĂRII / TITLE OF THESIS

Henri - George COANDĂCOORDONATOR LUCRARE / THESIS SUPERVISOR

CO-SUPERVIZOR LUCRARE / THESIS CO-SUPERVISOR

EXAMINATORI LUCRARE / THESIS EXAMINERS

Dinu COLŢUC Nicoleta ANGELESCU

Felix ALBU Florian ION

Dan-Constantin PUCHIANU

Henri - George COANDĂDECAN FACULTATEA DE INGINERIE ELECTRICĂ / DEAN OF ELECTRICAL ENGINEERING FACULTY

Reproducerea se poate face doar cu permisiune din partea autorului

Page 3: robot dirijat prin comenzi vocale

3

Robot mobil deplasat prin comenzi vocaleSimion Alin Cezar

Abstract (max. 300 cuvinte)

Se prezintă un robot care poate executa comenzile vocale ale utilizatorului prin intermediulcomponentelor hardware. Comenzile au fost antrenate în software-ul shield-ului de recunoaştere vocală:EasyVR Commander. Comenzile sunt receptate de shield-ul de recunoaştere vocală EasyVR şitransmise către placa Arduino Uno iar apoi sunt preluate şi executate de către driver-ul de motor tipshield L298. Codul a fost scris cu ajutorul programului Arduino 1.0.5. Instrucţiunile pe care robotultrebuie să le execute sunt: Forward, Reverse, Left, Right, Dance, Long_Forward, Long_Reverse şi Stop.Piesele au fost cumpărate de pe site-ul: www.robofun.ro.

Cuvinte cheie: Arduino Uno, EasyVR, L298, EasyVR Commander, recunoaştere vocală, Arduino1.0.5,comenzi, driver.

Mobile robot moved through voice commands

AbstractIt is presented a robot that can execute the user’s vocal commands through hardware components. Thecommand’s where trained in the voice recognition’s shield software: EasyVR Commander. TheCommand’s are recived by the voice recognition shield Easy VR and set to the Arduino Uno board andthen are taken and executed by the shield type motor driver L298. The code was written with the helpof Arduino 1.0.5 program. The instructions that the robot has to execute are: Forward, Reverse, Left,Right, Dance, Long_Forward, Long_Reverse and Stop. The parts where bought from: www.robotfun.roweb-site.

Keywords: Arduino Uno, EasyVR, L298, EasyVR Commander, speech recognition, Arduino1.0.5,Commands, driver.

Thesis Supervisor: HENRI - GEORGE COANDAAssociate professor, Ph.D. Eng.,Electronic, Telecommunication and Power Energy DepartmentElectrical Engineering FacultyUniversity VALAHIA of Targoviste

Page 4: robot dirijat prin comenzi vocale

4

Anexa 1UNIVERSITATEA “VALAHIA” DIN TARGOVISTEFACULTATEA DE INGINERIE ELECTRICASpecializarea: Electronică aplicată Anul universitar 2012 - 2013

TEMAproiectului de licenţă al absolventului

Simion Alin Cezar

1. Tipul proiectului:

AplicativDomeniul: Inginerie electronică şi telecomunicaţii

Implementabil in cadrul unei (unor) lucrări didacticeDomeniul: Inginerie electronică şi telecomunicaţii

FundamentalDomeniul: Inginerie electronică şi telecomunicaţii

2. Tema proiectului:

Robot mobil deplasat prin comenzi vocale3. Conţinutul proiectului:

3.0 Introducere (scopul proiectului, rezumat capitole);3.1 Recunoaşterea vocală (generalizare, metodologia sistemelor vocale, Deformarea Dinamică a

Timpului, Modelul Markov Ascuns, Utilizări);3.2 Utilizarea recunoaşterii vocale;3.3 Prezentare hardware (piese şi preţuri, prezentare piese;3.4 Microcontrolerul Atmega 328 (caracteristici,configuraţia pinilor, schema bloc);3.5 Asamblarea robotului;3.6 Programarea robotului;3.7 Rezultate si concluzii

Anexe (cod sursă)

4. Locul unde va fi implementat proiectul:

Laborator Aplicaţii distribuite – B2-310;

5. Bibliografie:5.1 Fundamentals of Speech Recognition, L. Rabiner & B. Juang, 1993;5.2 Speech Recognition, InTech, 2008;5.3 Atmega 328 - DataSheet;5.4 New Developments in Robotics Automation and Control, InTech, 2008;5.5 Modern Speech Recognition Approaches with Case Studies, S. Ramakrishnan, 2012;5.6 Practical and Experimental Robotics, Ferat Shain & Pushkin Kachroo.

DECAN DIRECTOR DEPARTAMENTConf.dr.ing. Henri-George COANDĂ s.l.dr.ing. Nicoleta ANGELESCU

CONDUCATOR ŞTIINŢIFICConf.dr.ing. Henri-George COANDĂ

Tema a fost data spre împlinire la dataNUMELE si SEMNATURA STUDENTULUI

Simion Alin Cezar

Page 5: robot dirijat prin comenzi vocale

5

Listă figuriFIGURA 1 ......................................................................................................................................................... 8FIGURA 2 ......................................................................................................................................................... 8FIGURA 3 ......................................................................................................................................................... 8FIGURA 4 ....................................................................................................................................................... 10

FIGURA 5 ....................................................................................................................................................... 11FIGURA 6 ....................................................................................................................................................... 14FIGURA 7 ....................................................................................................................................................... 15FIGURA 8 ....................................................................................................................................................... 15

FIGURA 9 ....................................................................................................................................................... 16FIGURA 10 ..................................................................................................................................................... 16FIGURA 11 ..................................................................................................................................................... 17FIGURA 12 ..................................................................................................................................................... 18FIGURA 13 ..................................................................................................................................................... 19

FIGURA 14 ..................................................................................................................................................... 19FIGURA 15 ..................................................................................................................................................... 20FIGURA 16 ..................................................................................................................................................... 22FIGURA 17 ..................................................................................................................................................... 23

FIGURA 18 ..................................................................................................................................................... 24FIGURA 20 ..................................................................................................................................................... 25FIGURA 21 ..................................................................................................................................................... 25FIGURA 22 ..................................................................................................................................................... 26FIGURA 23 ..................................................................................................................................................... 26

FIGURA 24 ..................................................................................................................................................... 27FIGURA 25 ..................................................................................................................................................... 27FIGURA 26 ..................................................................................................................................................... 27FIGURA 27 ..................................................................................................................................................... 28

FIGURA 28 ..................................................................................................................................................... 28FIGURA 29 ..................................................................................................................................................... 29FIGURA 30 ..................................................................................................................................................... 29FIGURA 31 ..................................................................................................................................................... 30FIGURA 32 ..................................................................................................................................................... 31

FIGURA 33 ..................................................................................................................................................... 32FIGURA 34 .................................................................................................................................................... 32

FIGURA 35 ..................................................................................................................................................... 33FIGURA 36 ..................................................................................................................................................... 33

FIGURA 37 ..................................................................................................................................................... 34

Page 6: robot dirijat prin comenzi vocale

6

Listă tabeleTabel 1 Piese şi preţuri............................................................................................................................... 13

Simboluri şi abrevieriHMM Hidden Markov ModelDTW Dynamic Time Warping

Page 7: robot dirijat prin comenzi vocale

7

Cuprins

INTRODUCERE ................................................................................................................................................... 8

CAPITOLUL 1- RECUNOAŞTEREA VOCALĂ ..................................................................................................................10

1.1- GENERALIZARE .................................................................................................................................................. 101.2- METODOLOGIA SISTEMELOR VOCALE .............................................................................................................. 111.3- DEFORMAREA DINAMICĂ A TIMPULUI (DTW) ............................................................................................... 111.4- MODELUL MARKOV ASCUNS (HMM) .............................................................................................................. 11

CAPITOLUL 2- UTILIZAREA RECUNOAŞTERII VOCALE ..................................................................12

2.1- PERSPECTIVE...................................................................................................................................................... 122.2- DEFECTE ALE RECUNOAŞTERII VOCALE .......................................................................................................... 12

CAPITOLUL 3- PREZENTARE HARDWARE.............................................................................................13

3.1- PIESE ŞI PREŢURI ............................................................................................................................................... 133.2- PREZENTARE PIESE............................................................................................................................................ 14

CAPITOLUL 4- MICROCONTROLERUL ATMEGA 328 .........................................................................21

4.1- CARACTERISTICI: ............................................................................................................................................... 214.2- CONFIGURAŢIA PINILOR .................................................................................................................................... 224.3- SCHEMA BLOC .................................................................................................................................................... 23

CAPITOLUL 5- ASAMBLAREA ROBOTULUI ...........................................................................................24

CAPITOLUL 6- PROGRAMAREA ROBOTULUI .......................................................................................30

CAPITOLUL 7- REZULTATE ŞI CONCLUZII............................................................................................35

Page 8: robot dirijat prin comenzi vocale

8

Introducere

Noi, ca şi fiinţe umane avem 5 simţuri dintre care unul este auzul. Am specificat asta doarece cel maiutilizat mijloc de comunicare dintre doi oameni este cea verbală adică pe cale vocală. Desigur vorbitulnu înseamnă nimic dacă oamenii nu se pot înţelege unul cu celălalt, de aceea pe lângă faptul de a puteavorbii este necesar un alfabet şi un vocabular.

Deşi nimeni nu îi învaţă pe copiii mici să vorbească, pot învăţa uşor. Este adevărat că recunoaştereavocală este uşoară pentru noi. Dar învăţătura vorbirii şi recunoaşterii vocale, a fost subestimată desecole. Multe progrese în tehnologie au dus la implementarea tehnicii de vorbire şi a recunoaşteriivocale în anumite aparate.

În majoritatea filmelor SF din 1980-1990, vedeam oameni care vorbeu cu roboți și computere însă înziua de astăzi aceste lucruri au devenit posibile. Deși recunoașterea vocală este o sarcină foarte dificilă,acesta poate fi folosită în multe aplicații de până la un anumit grad. Sistemele automate derecunoaștere vocală pot fi puse în aplicare în calculatoare pentru a fi utilizate în dictare și în controlulprogramelor, care pot fi foarte utile persoanele cu handicap.

Utilizări ale recunoaşterii vocale cu un computer:

1. Recunoaşterea vocală are scopul de a cunoaşte conţinutul vorbirii.

Figura 1

2. Recunoaşterea vorbitorului are scopul de a cunoaşte persoana care vorbeşte.

Figura 2

3. Identificarea limbii are scopul de a cunoaşte limba vorbită.

Figura 3

Page 9: robot dirijat prin comenzi vocale

9

Tema aleasă a fost structurată pe capitole şi sub-capitole distincte.Scopul final al acestui proiect este acela de a putea controla vocal un robot. Pentru a putea realiza asta,am studiat bibliografia recomandată de profesorul îndrumător şi m-am folosit de materiile studiate încei patru ani petrecuţi la ,,Facultatea de Inginerie Electrică’’ a ,,Universităţii Valahia’’ din Târgovişte.

Page 10: robot dirijat prin comenzi vocale

10

Capitolul 1- Recunoaşterea Vocală

1.1- Generalizare

Recunoaşterea vocală este procesul de conversie a unui semnal vorbit la o secvență de cuvinte în formăde date digitale, prin intermediul unui algoritm implementat ca un program de calculator. Cuvintelerecunoscute pot fi rezultatele finale, pentru aplicații cum ar fi comandă și control, introducere de date șipregătirea documentelor. De asemenea ele pot servi ca intrare pentru prelucrarea lingvistică, în scopulde a realiza înțelegerea vorbirii.

Sistemele de recunoaștere pot fi proiectate în mai multe moduri pentru a atinge un obiectiv specific sauun criteriu de performanță:

1. Sistem dependend/independend de vorbitorPentru sistemele dependente de vorbitor, utilizatorul este rugat să rostească cuvinte sau frazepredefinite. Aceste semnale acustice formează datele de antrenament, care sunt utilizate pentrurecunoașterea vocală. Din moment ce aceste sisteme sunt folosite doar pentru un vorbitor predefinit,performanța lor devine mai mare comparativ cu sisteme independente de vorbitor.

2. Recunoaşterea izolată a cuvintelorDe asemenea acesta este numit sistem discret de recunoaştere. În acest sistem, trebuie să existe pauzeîntre rostirea cuvintelor. Prin urmare, sistemul nu trebuie să aibă grija de a găsi pauzele vocale dintrecuvinte.

3. Recunoaşterea vorbirii continueAceste sisteme sunt scopul final al unui proces de recunoaștere. Nu contează cum sau când un cuvânteste rostit, ele sunt recunoscute în timp real și acţiunea corespunzătoare este efectuată. Schimbări înviteza de vorbire, pronunțiile neglijent, detectarea sfârşitului de cuvânt sunt principalele problemepentru acest mod de recunoaștere.

4. Dimensiunea vocabularuluiCu cât dimensiunea vocabularului într-un sistem de recunoaștere este mai mică cu atât este maisuperioră performanța de recunoaștere. Sarcinile specifice pot folosi vocabulare mici. Cu toate acesteaun sistem natural ar trebui să recunoască independent şi continuu faţă de vorbitor, un vocabular mare,care este mai dificil.

5. Recunoaşterea cuvintelor cheieAceste sisteme sunt utilizate pentru a detecta un cuvânt în vorbirea continuă.

Din acest motiv, ele pot fi la fel de bune ca recunoașterea izolată, acestea având şi capacitatea degestiune continuă.

Figura 4: Sisteme de recunoaştere vocală

Page 11: robot dirijat prin comenzi vocale

11

1.2- Metodologia sistemelor vocale

Dezvoltatorii folosesc mai multe metode pentru punerea în aplicare a recunoaşterii vocale. Cele maifrecvente metode sunt:

- Modelul Markov Ascuns (HMM);- Deformarea Dinamică a Timpului (DTW).

1.3- Deformarea Dinamică a Timpului (DTW)

Deformarea dinamică a timpului este un algoritm pentru măsurarea similitudinii dintre două secvenţe,care pot varia în timp sau viteză.

Principiul de bază al DTW-ului este de a permite unor serii de ,,măsuri’’ în spaţiul intervalelor de timpîn eşantion şi să găsească o cale prin acel spaţiu, care maximizează potrivirea locală între intervalelede timp aliniate, în funcţie de constrângerile implicite în etapa admisă. Totalitatea costurilor similaregăsite de algoritm este un bun indicator al similitudinii eşantionului cu şablonul, care poate fi folositpentru alegerea celui mai asemănător şablon.

Orice date care pot fi transformate in reprezentări liniare pot fi analizate cu DTW.

1.4- Modelul Markov Ascuns (HMM)

Figura 5: Model Markov Ascuns

Majoritatea sistemelor de recunoaştere vocală moderne sunt bazate pe acest sistem care oferă modelestatice din care ies o secvenţă de simboluri sau cantităţi. Din HMM ies o secveţă de vectori cu valorireale de n dimensiuni astfel încât fiecare din aceşti vectori se compun din coeficienţi, care se obţin luândo transformată Fourier dintr-o fereastră scurtă de timp de vorbire şi decolerând spectrul folosindtransformata cosinusului, luând apoi primii coeficienţi.

În fiecare stadiu, HMM va avea tendinţa să aibă o distribuţie statică, care estre un amestec dediagonale covariate Gaussiene care vor oferii probabilitate pentru fiecare vector observat. Fiecarecuvânt sau fiecare fenomen va avea o distribuţie de ieşire diferită.

Un HMM pentru o secvenţă de cuvinte sau fenomene se face prin concatenarea individuală a unuiHMM instruit pentru cuvinte şi fenomene separate.

Decodarea cuvintelor se va face, probabil cu algoritmul Viterbi pentru a găsi cea mai bună cale şi aiciexistă o alegere între a crea dinamic o combinaţie de HMM care include atât informaţii modele acusticeşi de limbă, sau combinându-l static în prealabil.

Page 12: robot dirijat prin comenzi vocale

12

Capitolul 2- Utilizarea recunoaşterii vocale

Practic recunoașterea vocală este folosită în două scopuri principale: prima este dictarea care, încontextul recunoașterii vocale este traducerea de cuvinte vorbite în cuvinte scrise; a doua este controlulunui computer sau a unui microcontroler.

2.1- Perspective

1. MedicalePersoanele cu handicap pot beneficia de programe de recunoaştere vocală. Recunoașterea vocală esteutilă mai ales pentru persoanele care au dificultăți în utilizarea mâinilor, în astfel de cazuri programelede recunoaștere vocală sunt mult mai benefice și pot fi folosite calculatoare de operare.

2. MilitareProgramele de recunoaștere vocală sunt importante din punct de vedere militar, pentru Forţele Aeriene,recunoașterea vocală are un potențial clar de reducere a volumului de muncă al pilotului. Pe lângăForţele Aeriene astfel de programe pot fi, de asemenea instruite pentru a fi utilizate în managementulde luptă și alte aplicații.

3. EducaţionalePersoanele cu dizabilități de învățare, care au probleme de comunicare (în esență, ei se gândesc la o idee,dar ea este procesată într-un mod incorect determinând-o să ajungă în mod diferit pe hârtie), potbeneficia de pe urma unui software de recunoaştere vocală. De asemenea recunoaşterea vocală poate fifolosită în cadrul unui proiect pentru studiul roboticii.

2.2- Defecte ale recunoaşterii vocale

Pe lângă toate aceste avantaje și beneficii pe care le oferă, încă nu este dezvoltat un sistem perfect derecunoştere vocală. Există un număr de factori care reduc acurateţea şi performanţa unui sistem derecunoaştere vocală.

Procesul de recunoaștere vocală este o sarcină uşoară pentru un om, dar este dificilă pentru omaşinărie. Comparativ cu un om, programele de recunoaștere vocală par mai puțin inteligente, acestlucru se datorează faptului că omul are capacitatea naturală de gândire, înțelegere și de a reacționa, întimp ce pentru un program de calculator este o sarcină complicată, mai întâi trebuie să înțeleagăcuvintele rostite (semnificația lor), și trebuie să creeze un echilibru între cuvinte, zgomote și pauze. Unom are capacitatea de a filtra zgomotul unei conversaţii în timp ce o mașinărie necesită o pregătire.Calculatorul necesită ajutor pentru separarea sunetelor de vorbire de alte sunete.

Câţiva factori care trebuiesc luaţi in considerare:

Omonime

Sunt cuvintele cu formă identică şi acelaşi corp fonetic, dar cu înţeles total diferit. Este o provocarepentru mașinărie, să facă distincția între aceste tipuri de cuvinte.

Vorbire suprapusă

O a doua provocare, este de a înțelege vorbirea rostită de către diferiți utilizatori, sistemele actuale au odificultate de a separa vorbirea simultană a mai multor utilizatori.

Factori de zgomot

Trebuie sa se audă cuvintele rostite distinct și clar. Orice sunet suplimentar poate crea interferențe, înprimul rând avem nevoie de a plasa sistemul departe de medii zgomotoase și apoi de a vorbi clar, astfelmaşinăria nu va confunda și nu va amesteca cuvintele.

Page 13: robot dirijat prin comenzi vocale

13

Capitolul 3- Prezentare Hardware

3.1- Piese şi preţuri

Tabel 1: Piese şi preţuri

NR

CRT

Numele piesei Preţul piesei

1 Magic Robot Kit 124 Ron

2 Placă Arduino Uno V3 109 Ron

3 Driver de motor tipshield

L298

75 Ron

4

Shield de recunoaştere

comenzi vocale

EASYVR

300 Ron

5 Baterie LIPO 7.4V1000MA

38 Ron

6 Kit conectori Arduino R3 6 Ron

Total : 652 Ron

Page 14: robot dirijat prin comenzi vocale

14

3.2- Prezentare piese

Magic Robot Kit

Acest kit este format din:

-platforma şasiu;

- două motoare de curent continuu 120:1 Pololu;

-două roţi speciale pentru aceste motoare;

-roată metalica de sprijin, setul de conectori.

Specificaţii:

-Tensiune motoare : 6 V;

-Viteză de rotaţie în gol : 85 rotaţii per minut;

-Curent în gol : 70 mA;

-Curent în sarcină maximă : 800 mA;

-Cuplu : 5.4 KG fortă X cm.

Figura 6: Şasiul şi suporturile de motoare

Page 15: robot dirijat prin comenzi vocale

15

Figura 7: Motoarele şi roţile

Figura 8: Roata metalică

Page 16: robot dirijat prin comenzi vocale

16

Figura 9: Conectorii pentru suporturile de motoare

Figura 10: Conectori (şuruburile şi piuliţele)

Page 17: robot dirijat prin comenzi vocale

17

Driver-ul de motor tip shield L298

Acest driver de motoare poate comanda două motoare de curent continuu, de un curent maxim de 2amperi. Driverul este complet asamblat sub forma unui shield Arduino, facilitând astfel utilizareasimplă.

Figura 11: Driver de motor tip shield L298

Shield-ul de recunoaştere comenzi vocale- EASYVR

Shield-ul EasyVR este proiectat pentru a permite adăugarea de comenzi vocale. Modulul oferă funcţiide recunoaştere vocală pentru o serie de comenzi stocate din fabrică (care sunt independente de vorbitoradică recunoscute automat), şi până la 32 de comenzi definite de utilizator (care sunt dependente devorbitor).

Page 18: robot dirijat prin comenzi vocale

18

Specificaţii:

- dispune de o serie de comenzi deja configurate, independente de vorbitor;

- suportă până la 32 de comenzi configurabile de către utilizator;

- interfaţă grafică simplă care permite programarea comenzilor vocale cu uşurinţă;

- utilizează portul serial pentru comunicare.

Figura 12: Shield de recunoaştere comenzi vocale- EASY VR

Kit conectori Arduino R3

Kit-ul conţine 2 conectori de 8 pini, un conector de 6 pini şi un conector de 10 pini . Este compatibil cuplacile Arduino Uno V3 şi Arduino Leonardo. Acest kit mi-a fost necesar pentru a putea conecta Shield-ul de recunoaştere vocală în stivă cu placa Arduino şi driver-ul de motor.

Page 19: robot dirijat prin comenzi vocale

19

Figura 13: Kit conectori Arduino R3

Bateria LIPO 7.4V 1000MA

Specificaţii:

-7.4V

-1000 mAh

-2 Celule

-Rata de descărcare 25C

Figura 14: Baterie LIPO 7.4V 1000MA

Page 20: robot dirijat prin comenzi vocale

20

Placa Arduino Uno V3

Arduino UNO este o platformă de procesare open-source, bazată pe software şi hardware flexibil şisimplu de folosit. Constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – în cea mai des intâlnităvariantă) construită în jurul unui procesor de semnal şi este capabilă de a prelua date din mediulînconjurator printr-o serie de senzori şi de a efectua acţiuni asupra mediului prin intermediul luminilor,motoarelor, servomotoarelor, şi alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze uncod scris într-un limbaj de programare care este foarte similar cu limbajul C++.

Placa Arduino UNO se conectează la portul USB al calculatorului folosind un cablu de tip USB A-B.Poate fi alimentată extern (din priză) folosind un alimentator extern.

Specificaţii :

-Microcontroler: ATmega328;

-Tensiune de lucru: 5V;

-Tensiune de intrare (recomandat): 7-12V;

-Tensiune de intrare (limită): 6-20V;

-Pini digitali: 14 (6 PWM output);

-Pini analogici: 6;

-Intensitate de ieşire: 40 mA;

-Intensitate de ieşire pe 3.3V: 50 mA;

-Flash Memory: 32 KB (ATmega328) 0.5 KB pentru bootloader;

-SRAM: 2 KB (ATmega328);

-EEPROM: 1 KB (ATmega328);

-Clock Speed: 16 MHz.

Figura 15: Placă Arduino Uno V3

Page 21: robot dirijat prin comenzi vocale

21

Capitolul 4- Microcontrolerul ATmega 328

4.1- Caracteristici:

performaţă înaltă, putere mică AVR pe 8 biţi; arhitectură de tip RISC:

-131 de instrucţiuni de putere, majoritatea cu execuţie pe un singur ciclu;

-operaţie statică întreagă;

-capacitate de până la 20 MIPS la 20Mhz;

-multiplicator pe-chip în două cicluri;

durabilitate ridicată pe segmentele de memorie non-volatilă;-memorie flash 32 KB;

-EEPROM 1KB;

-SRAM 2KB;

-cicluri de scriere/ştergere: 10000 Flash/100000 EEPROM;

-reţinerea datelor : 20 de ani la 85 °C/100 de ani la 25 °C;

Caracteristici periferice:-doi timer/counters de 8 biţi cu Prescalar Separat şi Mod Comparare;

-un timer/counter de 16 biţi cu Prescalar Separat, Mod Comparare şi Mod Captură;

-Counter de timp real cu oscilator separat;

-şase canale PWM;

-serial programabil USART;

-serial interfaţă Master/Slave;

Caracteristici speciale ale microcontrolerului:-Power-on Reset şi detecţie Brown-out programabilă;

-oscilator intern calibrat;

-surse externe şi intrerupte intern;

-şase moduri Sleep: ADC Noise Reduction, Power-save, Power-down, Standby,

şi Extended Standby;

I/O şi pachete:-23 de linii programabile I/O;

-28 de pini PDIP;

Tensiune de lucru:-1,8-5 V

Temperatură:--40 °C la 85 °C

Grad de viteză:

Page 22: robot dirijat prin comenzi vocale

22

-0-20 Mhz

Putere mică consum la 1Mhz de 1,8V la 25 °C:-mod activ: 0,2mA;

-mod Power-down: 0,1 µA;

-mod Power-save: 0,75 µA (inclusiv 32 kHz RTC).

4.2- Configuraţia pinilor

Figura 16: Configuraţia pinilor

Page 23: robot dirijat prin comenzi vocale

23

4.3- Schema bloc

Figura 17: Schema bloc

Page 24: robot dirijat prin comenzi vocale

24

Capitolul 5- Asamblarea robotului

În acest capitol voi prezenta pas cu pas modul de asamblare al robotul. Primul pas a fost asamblareakitului şi al motoarelor împreuna cu roţile.

Pentru început am conectat motoarele pe suporturile de motoare cu ajutorul şuruburilor.

Figura 18: Motoarele conectate la suporturi

Următoarea etapă a fost conectarea suporturilor la şasiu cu ajutorul conectorilor speciali.

Figura 19: Conectarea suporturilor la şasiu

Page 25: robot dirijat prin comenzi vocale

25

Etapa următoare a constat în conectarea rotiţei metalice la şasiu pentru stabilitate cu ajutorulşuruburilor, piuliţelor şi al celor două cadre metalice.

Figura 20: Conectarea rotiţei metalice

În finalul asamblarii kitului Magic Robot a rezultat partea locomotorie a robotului.

Figura 21: Magic Robot Kit asamblat

Page 26: robot dirijat prin comenzi vocale

26

După asamblarea acestui kit a fost necesară lipirea firelor pentru motoarele de curent continuu cuajutorul unui letcon.

Figura 22: Fire lipite de motoare

În continuare am fixat circuitul pe şasiu începând cu placa Arduino Uno cu ajutorul a două şuruburi şia două piuliţe.

Figura 23: Placa Arduino Uno fixată pe şasiu

Page 27: robot dirijat prin comenzi vocale

27

Am ales conectarea pieselor în stivă pentru a putea lucra mai uşor, pinii de pe placa Arduino fiindidentici cu cei de la driver-ul de motor care l-am conectat peste placa Arduino Uno.

Figura 24: Conectarea driver-ului de motor

Pentru că acest driver nu permitea conectarea directă în stivă a shield-ului de comandă vocală a fostnevoie de a ataşa kit-ul de conectori Arduino R3.

Figura 25: Ataşarea kit-ului de conectori Arduino R3

Page 28: robot dirijat prin comenzi vocale

28

În următoarea etapă am conectat firele motoarelor de curent continuu la driver-ul de motor.

Figura 26: Conectarea firelor de la motoare la driver-ul de motoare

A urmat conectarea în stivă a shield-ului de comandă vocală având grijă insă, deoarece configuratiapinilor este uşor diferită faţă de cea a placii Arduino Uno şi al driver-ului de motor.

Figura 27: Conectarea Shield-ului de comandă vocală EASY VR

Page 29: robot dirijat prin comenzi vocale

29

În final am ataşat microfonul pentru shield-ul de comandă vocală.

Figura 28: Ataşarea microfonului

Toate piesele au fost cumpărate de pe site-ul www.robofun.ro şi au fost asamblate cu ajutorulurmătoarelor ustensile:

-şurubelniţă stea;

-şurubelniţă dreaptă;

-letcon;

-imbus.

Page 30: robot dirijat prin comenzi vocale

30

Capitolul 6- Programarea robotului

Pentru a putea programa robotul am folosit un cablu USB 2.0 tip A-B de la Belkin şi un laptop LenovoG780. Am conectat cablul USB cu mufa de tip A în laptop şi mufa de tip B în placa Arduino.

Figura 29: Mufă tip A Figura 30: Mufă tip B

De pe site-ul http://arduino.cc/en/Main/Software am descărcat arhiva: Arduino IDE 1.0.5, menţionândcă am ales această variantă pentru că este destul de stabilă. Programul de interfaţă cu placa ArduinoUno nu necesită instalare fiind nevoie doar de dezarhivare. Pentru asta am folosit programul WinRARversiunea 3.80.

Următorul pas a fost să conectez placa Arduino Uno la laptop prin intermediu cablului A-B. Fiind primainteracţiune a plăcii Arduino cu acest laptop a fost necesar să instalez driverele în următorul mod:

-click dreapta pe iconiţa ,,My Computer’’ de pe Desktop ;

-din acel set de optiune am ales ,,Manage’’;

-din acea fereastră nou deschisă am ales secţiunea ,,System Tools’’ subcategoria ,,Device Manager’’;

-în subcategoria ,,Other devices’’ cu denumirea de ,,Unknown device’’ este placa Arduino Uno;

-am dat click dreapta pe aceasta şi am ales opţiunea ,,Update Driver Software’’;

-am ales opţiunea ,,Browse my computer for driver software’’ alegând apoi folderul ,,drivers’’ dinfişierul dezarhivat ,,Arduino 1.0.5’’ având bifată opţiunea ,,Include subfolders’’ după care am apăsatbutonul ,,Next’’ şi am lăsat instalarea să ruleze.

Pasul următor a fost să instalez programul pentru interacţiunea cu shield-ul EasyVR. Acesta senumeşte EasyVR Commander şi l-am descărcat de pe site-ul:

http://www.robofun.ro/shields/modul_recunoastere_comenzi_vocale_easyvr .

Page 31: robot dirijat prin comenzi vocale

31

Pentru a putea interacţiona cu laptopul şi programul EasyVR Commander am mutat jumpper-ul de peshieldul EasyVR din poziţia SW în poziţia PC.

Figura 31: Jumpper conectat la modul PC

După mutarea jumperului în poziţia ,,PC’’ am deschis programul EasyVR Commander.

Figura 32: Interfaţa EasyVR Commander

Page 32: robot dirijat prin comenzi vocale

32

Am schimbat portul pentru a fi identic cu cel pe care am instalat placa Arduino Uno.

Figura 33: Alegerea portului

Următorul pas a fost conectarea shieldu-lui EasyVR la programul EasyVR Commander

Figura 34: Conectarea shield-ului EasyVR la programul EasyVR Commander

Page 33: robot dirijat prin comenzi vocale

33

După conectarea shield-ului a urmat introducerea a cinci noi comenzi în grupul 1 şi anume:FORWARD, REVERSE, RIGHT, LEFT, STOP şi un cuvânt în secţiunea Trigger respectiv: MOVE.Pentru ca shield-ul să înţeleagă aceste noi cuvinte a fost nevoie de antrenarea lor în 2 etape.

Figura 35: Antrenarea în prima etapă

Figura 36: Antrenarea în etapa a doua

Page 34: robot dirijat prin comenzi vocale

34

Antrenarea acestor comenzi în două etape, a fost necesară pentru ca aceste comenzi să nu intre înconflict în momentul în care utilizatorul rosteşte comanda.

Etapa finală în programul EasyVR Commander a fost generarea codului pe care l-am salvat cu extensia.ino, după care am mutat din nou jumperul de pe shield-ul EasyVR de pe poziţia ,,PC’’ pe poziţia ,,SW’’

A fost necesară modificarea cod-ului în programul Arduino IDE 1.0.5 pentru a putea acţiona driver-ulde motor.

Figura 37: Interfaţa Arduino IDE 1.0.5

Am încărcat codul modificat pe placa Arduino Uno după verificare.

Page 35: robot dirijat prin comenzi vocale

35

Capitolul 7- Rezultate şi concluzii

Se prezintă un robot care poate executa comenzile vocale ale utilizatorului prin intermediulcomponentelor hardware. Comenzile au fost antrenate în software-ul shield-ului de recunoaştere vocală:EasyVR Commander. Comenzile sunt receptate de shield-ul de recunoaştere vocală EasyVR şitransmise către placa Arduino Uno iar apoi sunt preluate şi executate de către driver-ul de motor tipshield L289. Codul a fost scris cu ajutorul programului Arduino 1.0.5. Instrucţiunile pe care robotultrebuie să le execute sunt: Forward, Reverse, Left, Right, Stop. Piesele au fost cumpărate de pe site-ul:www.robofun.ro.

Rezultatele au fost următoarele:

comenzile vocale au fost scrise în limba engleză în EasyVR Commander şi în codul sursă însă afost posibilă antrenarea lor în limba română ceea ce a dus la executarea comenzilor din limbaromână;

am reuşit implementarea şi antrenarea a nouă comenzi vocale, şase având un timp de execuţie,două comezi care rulează fara timp de execuţie şi una care să fie folosită pentru oprire;

microfonul de la shield-ul de recunoaştere vocală EasyVR este unul destul de slab, captânddestul de greu cuvintele rostite de utilizator în cazul în care acesta, se afla la o distanţă mare deel, dar această problemă ar putea fi rezolvată prin înlocuirea microfonului cu unul mai puternic,sau făcând o transmisie radio prin două module Xbee şi încă o placă Arduino UNO;

circuitul robotului fiind unul în stivă trebuie avut grijă ca pinii fiecărui shield sa fie bineconectaţi pentru ca robotul să funcţioneze corespunzător;

comenzile vocale trebuiesc spuse clar şi la un nivel corespunzător altfel robotul nu le va găsi învocabular, sau va executa o comandă asemănătoare, un sistem de recunoaştere vocal perfectneexistând deocamdată;

Contribuţiile autorului sunt:

analiza stadiului în domeniu (circa 5 articole de limbă engleză din care 5 au fost citate); asamblarea pieselor hardware după propria schiţă fiind inspirat de un tutorial pentru kit-ul

EZ-ROBOT; antrenarea comenzilor vocale; programarea robotului;

Cercetările vor continua în cadrul studiilor de masterat fiind îndreptate spre:

reuşirea implementării comenzilor vocale utilizând module Xbee; implementarea senzorilor şi a camerelor video pe roboţi; testarea altor platforme precum EasyPic, Raspberry, EZ-B pentru creearea şi testarea roboţilor; perfecţionarea unui sistem de recunoaştere vocală.

Page 36: robot dirijat prin comenzi vocale

36

Bibliografie

Cărţi şi articole de specialitate[A1] Fundamentals of Speech Recognition, L. Rabiner & B. Juang, 1993;[A2] Speech Recognition, InTech, 2008;[A3] New Developments in Robotics Automation and Control, InTech, 2008;[A4] Modern Speech Recognition Approaches with Case Studies, S. Ramakrishnan, 2012;[A5] Practical and Experimental Robotics, Ferat Shain & Pushkin Kachroo.

Arduino Uno şi EasyVR shield[B1] Atmel Corporation, ATmega328 datasheet;[B2] Veear, EasyVR User Manual;

Site-uri web[C1] http://www.youtube.com/watch?v=Tgz6u1t1ArA[C2] http://www.youtube.com/watch?v=Wi5dwCcK7ss[C3] http://www.youtube.com/watch?v=hLf_O8v9SFs[C4] http://www.robotshop.com/blog/en/carlitos-projects-speech-controlled-arduino-robot-3684[C5] http://www.instructables.com/id/Speech-Recognition-with-Arduino/

Page 37: robot dirijat prin comenzi vocale

37

Anexa

#if defined(ARDUINO) && ARDUINO >= 100

#include "Arduino.h"

#include "SoftwareSerial.h"

SoftwareSerial port(12,13);

#else

#include "WProgram.h"

#include "NewSoftSerial.h"

NewSoftSerial port(12,13);

#endif

#include <EasyVR.h>

EasyVR easyvr(port);

int MOTOR1_PIN1 = 3;

int MOTOR1_PIN2 = 5;

int MOTOR2_PIN1 = 6;

int MOTOR2_PIN2 = 9;

//Groups and Commands

enum Groups

{

GROUP_0 = 0,

GROUP_1 = 1,

};

enum Group0

{

G0_MOVE = 0,

};

enum Group1

{

G1_FORWARD = 0,

G1_REVERSE = 1,

G1_RIGHT = 2,

G1_LEFT = 3,

G1_DANCE = 4,

Page 38: robot dirijat prin comenzi vocale

38

G1_LONG_FORWARD = 5,

G1_LONG_REVERSE = 6,

G1_STOP = 7,

};

EasyVRBridge bridge;

int8_t group, idx;

void setup()

{

pinMode(MOTOR1_PIN1, OUTPUT);

pinMode(MOTOR1_PIN2, OUTPUT);

pinMode(MOTOR2_PIN1, OUTPUT);

pinMode(MOTOR2_PIN2, OUTPUT);

// bridge mode?

if (bridge.check())

{

cli();

bridge.loop(0, 1, 12, 13);

}

// run normally

Serial.begin(9600);

port.begin(9600);

if (!easyvr.detect())

{

Serial.println("EasyVR not detected!");

for (;;);

}

easyvr.setPinOutput(EasyVR::IO1, LOW);

Serial.println("EasyVR detected!");

easyvr.setTimeout(5);

easyvr.setLanguage(0);

group = EasyVR::TRIGGER; //<-- start group (customize)

}

void action();

void loop()

Page 39: robot dirijat prin comenzi vocale

39

{

easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

Serial.print("Say a command in Group ");

Serial.println(group);

easyvr.recognizeCommand(group);

do

{

// can do some processing while waiting for a spoken command

}

while (!easyvr.hasFinished());

easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

idx = easyvr.getWord();

if (idx >= 0)

{

// built-in trigger (ROBOT)

// group = GROUP_X; <-- jump to another group X

return;

}

idx = easyvr.getCommand();

if (idx >= 0)

{

// print debug message

uint8_t train = 0;

char name[32];

Serial.print("Command: ");

Serial.print(idx);

if (easyvr.dumpCommand(group, idx, name, train))

{

Serial.print(" = ");

Serial.println(name);

}

else

Serial.println();

easyvr.playSound(0, EasyVR::VOL_FULL);

Page 40: robot dirijat prin comenzi vocale

40

// perform some action

action();

}

else // errors or timeout

{

if (easyvr.isTimeout())

Serial.println("Timed out, try again...");

int16_t err = easyvr.getError();

if (err >= 0)

{

Serial.print("Error ");

Serial.println(err, HEX);

}

}

}

void Move2(){

analogWrite(MOTOR1_PIN1, 255);

analogWrite(MOTOR1_PIN2, 0);

analogWrite(MOTOR2_PIN1, 0);

analogWrite(MOTOR2_PIN2, 255);

}

void Move(){

analogWrite(MOTOR1_PIN1, 0);

analogWrite(MOTOR1_PIN2, 255);

analogWrite(MOTOR2_PIN1, 255);

analogWrite(MOTOR2_PIN2, 0);

}

void forward(){

analogWrite(MOTOR1_PIN1, 255);

analogWrite(MOTOR1_PIN2, 0);

analogWrite(MOTOR2_PIN1, 255);

}

void reverse(){

analogWrite(MOTOR1_PIN1, 0);

Page 41: robot dirijat prin comenzi vocale

41

analogWrite(MOTOR1_PIN2, 255);

analogWrite(MOTOR2_PIN1, 0);

analogWrite(MOTOR2_PIN2, 255);

}

void right(){

analogWrite(MOTOR1_PIN1, 0);

analogWrite(MOTOR1_PIN2, 255);

analogWrite(MOTOR2_PIN1, -255);

analogWrite(MOTOR2_PIN2, 0);

}

void left(){

analogWrite(MOTOR1_PIN1, -255);

analogWrite(MOTOR1_PIN2, 0);

analogWrite(MOTOR2_PIN1, 0);

analogWrite(MOTOR2_PIN2, 255);

}

void stop(){

analogWrite(MOTOR1_PIN1, 0);

analogWrite(MOTOR1_PIN2, 0);

analogWrite(MOTOR2_PIN1, 0);

analogWrite(MOTOR2_PIN2, 0);

}

void action()

{

switch (group)

{

case GROUP_0:

switch (idx)

{

case G0_MOVE: Move();

delay(1500);

forward();

delay(500);

reverse();

Page 42: robot dirijat prin comenzi vocale

42

delay(250);

stop();

// write your action code here

group=GROUP_1; // group = GROUP_X; <-- or jump to another group X for compositecommands

break;

}

break;

case GROUP_1:

switch (idx)

{

case G1_FORWARD: forward();

delay(3000);

stop();

// write your action code here

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_REVERSE: reverse();

delay(3000);

stop();

// write your action code here

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_RIGHT: right();

delay(500);

stop();

// write your action code here

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_LEFT: left();

delay(500);

stop();

// write your action code here

Page 43: robot dirijat prin comenzi vocale

43

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_DANCE: Move();

delay(2000);

reverse();

delay(500);

Move2();

delay(1000);

forward();

delay(500);

left();

delay(1000);

right();

delay(500);

forward();

delay(250);

Move();

delay(2000);

stop();

// write your action code here

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_LONG_FORWARD: forward();

// write your action code here

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_LONG_REVERSE: reverse();

// write your action code here

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

case G1_STOP: stop();

// write your action code here

Page 44: robot dirijat prin comenzi vocale

44

// group = GROUP_X; <-- or jump to another group X for compositecommands

break;

}

break;

}

}