Sunteți pe pagina 1din 44

Robot mobil deplasat prin comenzi vocale

Propus de Departamentul Electronic, Telecomunicaii i Inginerie Energetic ca Lucrare de Licen

la Facultatea de Inginerie Electric Universitatea VALAHIA din Trgovite

Specializarea - Electronic aplicat septembrie 17, 2013

Simion Alin Cezar

susinut de

SUPERVIZAT DE dr.ing. conf. HENRI GEORGE COAND

Reproducerea se poate face doar cu permisiune din partea autorului

Facultatea de Inginerie Electric

Faculty of Electrical Engineering

AUTOR LUCRARE / AUTHOR OF THESIS

Simion Alin Cezar

Inginer (B.Sc.)
GRAD / DEGREE

Inginerie Electronic i Telecomunicaii


DOMENIU / DOMAINE

Robot mobil deplasat prin comenzi vocale


TITLUL LUCRRII / TITLE OF THESIS

COORDONATOR LUCRARE / THESIS SUPERVISOR

Henri - George COAND

CO-SUPERVIZOR LUCRARE / THESIS CO-SUPERVISOR

EXAMINATORI LUCRARE / THESIS EXAMINERS Dinu COLUC Felix ALBU Dan-Constantin PUCHIANU Nicoleta ANGELESCU Florian ION

DECAN FACULTATEA DE INGINERIE ELECTRIC / DEAN OF ELECTRICAL ENGINEERING FACULTY

Henri - George COAND

Reproducerea se poate face doar cu permisiune din partea autorului

Robot mobil deplasat prin comenzi vocale


Simion Alin Cezar

Abstract (max. 300 cuvinte)


Se prezint un robot care poate executa comenzile vocale ale utilizatorului prin intermediul componentelor hardware. Comenzile au fost antrenate n software-ul shield-ului de recunoatere vocal: EasyVR Commander. Comenzile sunt receptate de shield-ul de recunoatere vocal EasyVR i transmise ctre placa Arduino Uno iar apoi sunt preluate i executate de ctre driver-ul de motor tip shield L298. Codul a fost scris cu ajutorul programului Arduino 1.0.5. Instruciunile pe care robotul trebuie s le execute sunt: Forward, Reverse, Left, Right, Dance, Long_Forward, Long_Reverse i Stop. Piesele au fost cumprate de pe site-ul: www.robofun.ro. Cuvinte cheie: Arduino Uno, EasyVR, L298, EasyVR Commander, recunoatere vocal, Arduino1.0.5, comenzi, driver.

Mobile robot moved through voice commands Abstract


It is presented a robot that can execute the users vocal commands through hardware components. The commands where trained in the voice recognitions shield software: EasyVR Commander. The Commands are recived by the voice recognition shield Easy VR and set to the Arduino Uno board and then are taken and executed by the shield type motor driver L298. The code was written with the help of 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.ro web-site. Keywords: Arduino Uno, EasyVR, L298, EasyVR Commander, speech recognition, Arduino1.0.5, Commands, driver.

Thesis Supervisor: HENRI - GEORGE COANDA Associate professor, Ph.D. Eng., Electronic, Telecommunication and Power Energy Department Electrical Engineering Faculty University VALAHIA of Targoviste

UNIVERSITATEA VALAHIA DIN TARGOVISTE FACULTATEA DE INGINERIE ELECTRICA Specializarea: Electronic aplicat

Anexa 1
Anul universitar 2012 - 2013

TEMA proiectului de licen al absolventului Simion Alin Cezar


1. Tipul proiectului: Aplicativ Domeniul: Inginerie electronic i telecomunicaii Implementabil in cadrul unei (unor) lucrri didactice Domeniul: Inginerie electronic i telecomunicaii Fundamental Domeniul: Inginerie electronic i telecomunicaii

2. Tema proiectului:

Robot mobil deplasat prin comenzi vocale


3. Coninutul proiectului: 3.0 Introducere (scopul proiectului, rezumat capitole); 3.1 Recunoaterea vocal (generalizare, metodologia sistemelor vocale, Deformarea Dinamic a Timpului, Modelul Markov Ascuns, Utilizri); 3.2 Utilizarea recunoaterii vocale; 3.3 Prezentare hardware (piese i preuri, prezentare piese; 3.4 Microcontrolerul Atmega 328 (caracteristici,configuraia 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 Aplicaii 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 Conf.dr.ing. Henri-George COAND DIRECTOR DEPARTAMENT s.l.dr.ing. Nicoleta ANGELESCU

CONDUCATOR TIINIFIC Conf.dr.ing. Henri-George COAND Tema a fost data spre mplinire la data NUMELE si SEMNATURA STUDENTULUI Simion Alin Cezar 4

List figuri
FIGURA 1 ......................................................................................................................................................... 8 FIGURA 2 ......................................................................................................................................................... 8 FIGURA 3 ......................................................................................................................................................... 8 FIGURA 4 ....................................................................................................................................................... 10 FIGURA 5 ....................................................................................................................................................... 11 FIGURA 6 ....................................................................................................................................................... 14 FIGURA 7 ....................................................................................................................................................... 15 FIGURA 8 ....................................................................................................................................................... 15 FIGURA 9 ....................................................................................................................................................... 16 FIGURA 10 ..................................................................................................................................................... 16 FIGURA 11 ..................................................................................................................................................... 17 FIGURA 12 ..................................................................................................................................................... 18 FIGURA 13 ..................................................................................................................................................... 19 FIGURA 14 ..................................................................................................................................................... 19 FIGURA 15 ..................................................................................................................................................... 20 FIGURA 16 ..................................................................................................................................................... 22 FIGURA 17 ..................................................................................................................................................... 23 FIGURA 18 ..................................................................................................................................................... 24 FIGURA 20 ..................................................................................................................................................... 25 FIGURA 21 ..................................................................................................................................................... 25 FIGURA 22 ..................................................................................................................................................... 26 FIGURA 23 ..................................................................................................................................................... 26 FIGURA 24 ..................................................................................................................................................... 27 FIGURA 25 ..................................................................................................................................................... 27 FIGURA 26 ..................................................................................................................................................... 27 FIGURA 27 ..................................................................................................................................................... 28 FIGURA 28 ..................................................................................................................................................... 28 FIGURA 29 ..................................................................................................................................................... 29 FIGURA 30 ..................................................................................................................................................... 29 FIGURA 31 ..................................................................................................................................................... 30 FIGURA 32 ..................................................................................................................................................... 31 FIGURA 33 ..................................................................................................................................................... 32 FIGURA 34 .................................................................................................................................................... 32 FIGURA 35 ..................................................................................................................................................... 33 FIGURA 36 ..................................................................................................................................................... 33 FIGURA 37 ..................................................................................................................................................... 34

List tabele
Tabel 1 Piese i preuri............................................................................................................................... 13

Simboluri i abrevieri
HMM DTW Hidden Markov Model Dynamic Time Warping

Cuprins
INTRODUCERE ................................................................................................................................................... 8 CAPITOLUL 1- RECUNOATEREA VOCAL ..................................................................................................................10 1.1- GENERALIZARE .................................................................................................................................................. 10 1.2- METODOLOGIA SISTEMELOR VOCALE .............................................................................................................. 11 1.3- DEFORMAREA DINAMIC A TIMPULUI (DTW) ............................................................................................... 11 1.4- MODELUL MARKOV ASCUNS (HMM) .............................................................................................................. 11 CAPITOLUL 2- UTILIZAREA RECUNOATERII VOCALE ..................................................................12 2.1- PERSPECTIVE ...................................................................................................................................................... 12 2.2- DEFECTE ALE RECUNOATERII VOCALE .......................................................................................................... 12 CAPITOLUL 3- PREZENTARE HARDWARE .............................................................................................13 3.1- PIESE I PREURI ............................................................................................................................................... 13 3.2- PREZENTARE PIESE............................................................................................................................................ 14 CAPITOLUL 4- MICROCONTROLERUL ATMEGA 328 .........................................................................21 4.1- CARACTERISTICI: ............................................................................................................................................... 21 4.2- CONFIGURAIA PINILOR .................................................................................................................................... 22 4.3- SCHEMA BLOC .................................................................................................................................................... 23 CAPITOLUL 5- ASAMBLAREA ROBOTULUI ...........................................................................................24 CAPITOLUL 6- PROGRAMAREA ROBOTULUI .......................................................................................30 CAPITOLUL 7- REZULTATE I CONCLUZII ............................................................................................35

Introducere
Noi, ca i fiine umane avem 5 simuri dintre care unul este auzul. Am specificat asta doarece cel mai utilizat mijloc de comunicare dintre doi oameni este cea verbal adic pe cale vocal. Desigur vorbitul nu nseamn nimic dac oamenii nu se pot nelege unul cu cellalt, de aceea pe lng faptul de a putea vorbii este necesar un alfabet i un vocabular. Dei nimeni nu i nva pe copiii mici s vorbeasc, pot nva uor. Este adevrat c recunoaterea vocal este uoar pentru noi. Dar nvtura vorbirii i recunoaterii vocale, a fost subestimat de secole. Multe progrese n tehnologie au dus la implementarea tehnicii de vorbire i a recunoaterii vocale n anumite aparate. n majoritatea filmelor SF din 1980-1990, vedeam oameni care vorbeu cu roboi i computere ns n ziua de astzi aceste lucruri au devenit posibile. De i recunoaterea vocal este o sarcin foarte dificil, acesta poate fi folosit n multe aplicaii de pn la un anumit grad. Sistemele automate de recunoatere vocal pot fi puse n aplicare n calculatoare pentru a fi utilizate n dictare i n controlul programelor, care pot fi foarte utile persoanele cu handicap. Utilizri ale recunoaterii vocale cu un computer: 1. Recunoaterea vocal are scopul de a cunoate coninutul vorbirii.

Figura 1

2. Recunoaterea vorbitorului are scopul de a cunoate persoana care vorbete.

Figura 2 3. Identificarea limbii are scopul de a cunoate limba vorbit .

Figura 3 8

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 ndrumtor i m-am folosit de materiile studiate n cei patru ani petrecui la ,,Facultatea de Inginerie Electric a ,,Universitii Valahia din Trgovite.

Capitolul 1- Recunoaterea Vocal


1.1- Generalizare
Recunoaterea 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. Cuvintele recunoscute pot fi rezultatele finale, pentru aplicaii cum ar fi comand i control, introducere de date i pregtirea documentelor. De asemenea ele pot servi ca intrare pentru prelucrarea lingvistic, n scopul de a realiza nelegerea vorbirii. Sistemele de recunoatere pot fi proiectate n mai multe moduri pentru a atinge un obiectiv specific sau un criteriu de performan: 1. Sistem dependend/independend de vorbitor Pentru sistemele dependente de vorbitor, utilizatorul este rugat s rosteasc cuvinte sau fraze predefinite. Aceste semnale acustice formeaz datele de antrenament, care sunt utilizate pentru recunoaterea vocal. Din moment ce aceste sisteme sunt folosite doar pentru un vorbitor predefinit, performana lor devine mai mare comparativ cu sisteme independente de vorbitor. 2. Recunoaterea izolat a cuvintelor De asemenea acesta este numit sistem discret de recunoatere. n acest sistem, trebuie s existe pauze ntre rostirea cuvintelor. Prin urmare, sistemul nu trebuie s aib grija de a gsi pauzele vocale dintre cuvinte. 3. Recunoaterea vorbirii continue Aceste sisteme sunt scopul final al unui proces de recunoatere. Nu conteaz cum sau cnd un cuvnt este rostit, ele sunt recunoscute n timp real i aciunea corespunztoare este efectuat. Schimbri n viteza de vorbire, pronuniile neglijent, detectarea sfritului de cuvnt sunt principalele probleme pentru acest mod de recunoatere. 4. Dimensiunea vocabularului Cu ct dimensiunea vocabularului ntr-un sistem de recunoatere este mai mic cu att este mai superior performana de recunoatere. Sarcinile specifice pot folosi vocabulare mici. Cu toate acestea un sistem natural ar trebui s recunoasc independent i continuu fa de vorbitor, un vocabular mare, care este mai dificil. 5. Recunoaterea cuvintelor cheie Aceste sisteme sunt utilizate pentru a detecta un cuvnt n vorbirea continu. Din acest motiv, ele pot fi la fel de bune ca recunoaterea izolat, acestea avnd i capacitatea de gestiune continu.

Figura 4: Sisteme de recunoatere vocal 10

1.2- Metodologia sistemelor vocale


Dezvoltatorii folosesc mai multe metode pentru punerea n aplicare a recunoaterii vocale. Cele mai frecvente 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 msurarea similitudinii dintre dou secvene, care pot varia n timp sau vitez. Principiul de baz al DTW-ului este de a permite unor serii de ,,msuri n spaiul intervalelor de timp n eantion i s gseasc o cale prin acel spaiu, care maximizeaz potrivirea local ntre intervalele de timp aliniate, n funcie de constrngerile implicite n etapa admis. Totalitatea costurilor similare gsite de algoritm este un bun indicator al similitudinii eantionului cu ablonul, care poate fi folosit pentru alegerea celui mai asemntor ablon. Orice date care pot fi transformate in reprezentri liniare pot fi analizate cu DTW.

1.4- Modelul Markov Ascuns (HMM)

Figura 5: Model Markov Ascuns Majoritatea sistemelor de recunoatere vocal moderne sunt bazate pe acest sistem care ofer modele statice din care ies o secven de simboluri sau cantiti. Din HMM ies o secve de vectori cu valori reale de n dimensiuni astfel nct fiecare din aceti vectori se compun din coeficieni, care se obin lund o transformat Fourier dintr-o fereastr scurt de timp de vorbire i decolernd spectrul folosind transformata cosinusului, lund apoi primii coeficieni. n fiecare stadiu, HMM va avea tendina s aib o distribuie static, care estre un amestec de diagonale covariate Gaussiene care vor oferii probabilitate pentru fiecare vector observat. Fiecare cuvnt sau fiecare fenomen va avea o distribuie de ieire diferit. Un HMM pentru o secven de cuvinte sau fenomene se face prin concatenarea individual a unui HMM instruit pentru cuvinte i fenomene separate. Decodarea cuvintelor se va face, probabil cu algoritmul Viterbi pentru a gsi cea mai bun cale i aici exist o alegere ntre a crea dinamic o combinaie de HMM care include att informaii modele acustice i de limb, sau combinndu-l static n prealabil. 11

Capitolul 2- Utilizarea recunoaterii vocale


Practic recunoaterea vocal este folosit n dou scopuri principale: prima este dictarea care, n contextul recunoaterii vocale este traducerea de cuvinte vorbite n cuvinte scrise; a doua este controlul unui computer sau a unui microcontroler.

2.1- Perspective
1. Medicale Persoanele cu handicap pot beneficia de programe de recunoatere vocal. Recunoa terea vocal este util mai ales pentru persoanele care au dificulti n utilizarea minilor, n astfel de cazuri programele de recunoatere vocal sunt mult mai benefice i pot fi folosite calculatoare de operare. 2. Militare Programele de recunoatere vocal sunt importante din punct de vedere militar, pentru Forele Aeriene, recunoaterea vocal are un potenial clar de reducere a volumului de munc al pilotului. Pe lng Forele Aeriene astfel de programe pot fi, de asemenea instruite pentru a fi utilizate n managementul de lupt i alte aplicaii. 3. Educaionale Persoanele cu dizabiliti de nvare, care au probleme de comunicare (n esen, ei se gndesc la o idee, dar ea este procesat ntr-un mod incorect determinnd-o s ajung n mod diferit pe hrtie), pot beneficia de pe urma unui software de recunoatere vocal. De asemenea recunoaterea vocal poate fi folosit n cadrul unui proiect pentru studiul roboticii.

2.2- Defecte ale recunoaterii vocale


Pe lng toate aceste avantaje i beneficii pe care le ofer, nc nu este dezvoltat un sistem perfect de recunotere vocal. Exist un numr de factori care reduc acurateea i performana unui sistem de recunoatere vocal. Procesul de recunoatere vocal este o sarcin uoar pentru un om, dar este dificil pentru o mainrie. Comparativ cu un om, programele de recunoa tere vocal par mai puin inteligente, acest lucru se datoreaz faptului c omul are capacitatea natural de gndire, n elegere i de a reaciona, n timp ce pentru un program de calculator este o sarcin complicat, mai nti trebuie s neleag cuvintele rostite (semnificaia lor), i trebuie s creeze un echilibru ntre cuvinte, zgomote i pauze. Un om are capacitatea de a filtra zgomotul unei conversaii n timp ce o mainrie necesit o pregtire. Calculatorul necesit ajutor pentru separarea sunetelor de vorbire de alte sunete. Civa factori care trebuiesc luai in considerare: Omonime Sunt cuvintele cu form identic i acelai corp fonetic, dar cu neles total diferit. Este o provocare pentru mainrie, s fac distincia ntre aceste tipuri de cuvinte. Vorbire suprapus O a doua provocare, este de a nelege vorbirea rostit de ctre diferii utilizatori, sistemele actuale au o dificultate 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, n primul rnd avem nevoie de a plasa sistemul departe de medii zgomotoase i apoi de a vorbi clar, astfel mainria nu va confunda i nu va amesteca cuvintele.

12

Capitolul 3- Prezentare Hardware


3.1- Piese i preuri NR CRT 1 2 3 Magic Robot Kit Plac Arduino Uno V3 Driver de motor tip shield L298 Shield de recunoatere 4 comenzi vocale EASYVR 5 Baterie LIPO 7.4V 1000MA Kit conectori Arduino R3 Total : 652 Ron
Tabel 1: Piese i preuri

Numele piesei

Preul piesei

124 Ron 109 Ron 75 Ron

300 Ron

38 Ron

6 Ron

13

3.2- Prezentare piese


Magic Robot Kit Acest kit este format din: -platforma asiu; - dou motoare de curent continuu 120:1 Pololu; -dou roi speciale pentru aceste motoare; -roat metalica de sprijin, setul de conectori. Specificaii: -Tensiune motoare : 6 V; -Vitez de rotaie n gol : 85 rotaii 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

14

Figura 7: Motoarele i roile

Figura 8: Roata metalic

15

Figura 9: Conectorii pentru suporturile de motoare

Figura 10: Conectori (uruburile i piuliele) 16

Driver-ul de motor tip shield L298 Acest driver de motoare poate comanda dou motoare de curent continuu, de un curent maxim de 2 amperi. Driverul este complet asamblat sub forma unui shield Arduino, facilitnd astfel utilizarea simpl.

Figura 11: Driver de motor tip shield L298 Shield-ul de recunoatere comenzi vocale- EASYVR Shield-ul EasyVR este proiectat pentru a permite adugarea de comenzi vocale. Modulul ofer funcii de recunoatere vocal pentru o serie de comenzi stocate din fabric (care sunt independente de vorbitor adic recunoscute automat), i pn la 32 de comenzi definite de utilizator (care sunt dependente de vorbitor).

17

Specificaii: - dispune de o serie de comenzi deja configurate, independente de vorbitor; - suport pn la 32 de comenzi configurabile de ctre utilizator; - interfa grafic simpl care permite programarea comenzilor vocale cu uurin; - utilizeaz portul serial pentru comunicare.

Figura 12: Shield de recunoatere comenzi vocale- EASY VR

Kit conectori Arduino R3 Kit-ul conine 2 conectori de 8 pini, un conector de 6 pini i un conector de 10 pini . Este compatibil cu placile Arduino Uno V3 i Arduino Leonardo. Acest kit mi-a fost necesar pentru a putea conecta Shieldul de recunoatere vocal n stiv cu placa Arduino i driver-ul de motor. 18

Figura 13: Kit conectori Arduino R3

Bateria LIPO 7.4V 1000MA Specificaii: -7.4V -1000 mAh -2 Celule -Rata de descrcare 25C

Figura 14: Baterie LIPO 7.4V 1000MA 19

Placa Arduino Uno V3 Arduino UNO este o platform de procesare open-source, bazat pe software i hardware flexibil i simplu de folosit. Const ntr-o platform de mici dimensiuni (6.8 cm / 5.3 cm n cea mai des intlnit 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 aciuni asupra mediului prin intermediul luminilor, motoarelor, servomotoarelor, i alte tipuri de dispozitive mecanice. Procesorul este capabil s ruleze un cod 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. Specificaii : -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 ieire: 40 mA; -Intensitate de ieire 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

20

Capitolul 4- Microcontrolerul ATmega 328


4.1- Caracteristici:
performa nalt, putere mic AVR pe 8 bii; arhitectur de tip RISC: -131 de instruciuni de putere, majoritatea cu execuie pe un singur ciclu; -operaie static ntreag; -capacitate de pn 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; -reinerea datelor : 20 de ani la 85 C/100 de ani la 25 C; Caracteristici periferice: -doi timer/counters de 8 bii cu Prescalar Separat i Mod Comparare; -un timer/counter de 16 bii 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 detecie 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: 21

-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- Configuraia pinilor

Figura 16: Configuraia pinilor 22

4.3- Schema bloc

Figura 17: Schema bloc 23

Capitolul 5- Asamblarea robotului


n acest capitol voi prezenta pas cu pas modul de asamblare al robotul. Primul pas a fost asamblarea kitului i al motoarelor mpreuna cu roile. Pentru nceput am conectat motoarele pe suporturile de motoare cu ajutorul uruburilor.

Figura 18: Motoarele conectate la suporturi

Urmtoarea etap a fost conectarea suporturilor la asiu cu ajutorul conectorilor speciali.

Figura 19: Conectarea suporturilor la asiu 24

Etapa urmtoare a constat n conectarea rotiei metalice la asiu pentru stabilitate cu ajutorul uruburilor, piulielor i al celor dou cadre metalice.

Figura 20: Conectarea rotiei metalice

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

Figura 21: Magic Robot Kit asamblat


25

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

Figura 22: Fire lipite de motoare n continuare am fixat circuitul pe asiu ncepnd cu placa Arduino Uno cu ajutorul a dou uruburi i a dou piulie.

Figura 23: Placa Arduino Uno fixat pe asiu 26

Am ales conectarea pieselor n stiv pentru a putea lucra mai uor, pinii de pe placa Arduino fiind identici 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 fost nevoie de a ataa kit-ul de conectori Arduino R3.

Figura 25: Ataarea kit-ului de conectori Arduino R3 27

n urmtoarea 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 avnd grij ins, deoarece configuratia pinilor este uor diferit fa de cea a placii Arduino Uno i al driver-ului de motor.

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

28

n final am ataat microfonul pentru shield-ul de comand vocal.

Figura 28: Ataarea microfonului

Toate piesele au fost cumprate de pe site-ul www.robofun.ro i au fost asamblate cu ajutorul urmtoarelor ustensile: -urubelni stea; -urubelni dreapt; -letcon; -imbus.

29

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 Lenovo G780. 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 descrcat arhiva: Arduino IDE 1.0.5, menionnd c am ales aceast variant pentru c este destul de stabil. Programul de interfa cu placa Arduino Uno nu necesit instalare fiind nevoie doar de dezarhivare. Pentru asta am folosit programul WinRAR versiunea 3.80. Urmtorul pas a fost s conectez placa Arduino Uno la laptop prin intermediu cablului A-B. Fiind prima interaciune a plcii Arduino cu acest laptop a fost necesar s instalez driverele n urmtorul mod: -click dreapta pe iconia ,,My Computer de pe Desktop ; -din acel set de optiune am ales ,,Manage; -din acea fereastr nou deschis am ales seciunea ,,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 opiunea ,,Update Driver Software; -am ales opiunea ,,Browse my computer for driver software alegnd apoi folderul ,,drivers din fiierul dezarhivat ,,Arduino 1.0.5 avnd bifat opiunea ,,Include subfolders dup care am apsat butonul ,,Next i am lsat instalarea s ruleze. Pasul urmtor a fost s instalez programul pentru interaciunea cu shield-ul EasyVR. Acesta se numete EasyVR Commander i l-am descrcat de pe site-ul: http://www.robofun.ro/shields/modul_recunoastere_comenzi_vocale_easyvr .

30

Pentru a putea interaciona cu laptopul i programul EasyVR Commander am mutat jumpper-ul de pe shieldul EasyVR din poziia SW n poziia PC.

Figura 31: Jumpper conectat la modul PC Dup mutarea jumperului n poziia ,,PC am deschis programul EasyVR Commander.

Figura 32: Interfaa EasyVR Commander 31

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

Figura 33: Alegerea portului Urmtorul pas a fost conectarea shieldu-lui EasyVR la programul EasyVR Commander

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

Dup conectarea shield-ului a urmat introducerea a cinci noi comenzi n grupul 1 i anume: FORWARD, REVERSE, RIGHT, LEFT, STOP i un cuvnt n seciunea Trigger respectiv: MOVE. Pentru ca shield-ul s neleag 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 33

Antrenarea acestor comenzi n dou etape, a fost necesar pentru ca aceste comenzi s nu intre n conflict n momentul n care utilizatorul rostete 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 poziia ,,PC pe poziia ,,SW A fost necesar modificarea cod-ului n programul Arduino IDE 1.0.5 pentru a putea aciona driver-ul de motor.

Figura 37: Interfaa Arduino IDE 1.0.5 Am ncrcat codul modificat pe placa Arduino Uno dup verificare.

34

Capitolul 7- Rezultate i concluzii


Se prezint un robot care poate executa comenzile vocale ale utilizatorului prin intermediul componentelor hardware. Comenzile au fost antrenate n software-ul shield-ului de recunoatere vocal: EasyVR Commander. Comenzile sunt receptate de shield-ul de recunoatere vocal EasyVR i transmise ctre placa Arduino Uno iar apoi sunt preluate i executate de ctre driver-ul de motor tip shield L289. Codul a fost scris cu ajutorul programului Arduino 1.0.5. Instruciunile pe care robotul trebuie s le execute sunt: Forward, Reverse, Left, Right, Stop. Piesele au fost cumprate de pe site-ul: www.robofun.ro. Rezultatele au fost urmtoarele: comenzile vocale au fost scrise n limba englez n EasyVR Commander i n codul surs ns a fost posibil antrenarea lor n limba romn ceea ce a dus la executarea comenzilor din limba romn; am reuit implementarea i antrenarea a nou comenzi vocale, ase avnd un timp de execuie, dou comezi care ruleaz fara timp de execuie i una care s fie folosit pentru oprire; microfonul de la shield-ul de recunoatere vocal EasyVR este unul destul de slab, captnd destul de greu cuvintele rostite de utilizator n cazul n care acesta, se afla la o distan mare de el, dar aceast problem ar putea fi rezolvat prin nlocuirea microfonului cu unul mai puternic, sau fcnd o transmisie radio prin dou module Xbee i nc o plac Arduino UNO; circuitul robotului fiind unul n stiv trebuie avut grij ca pinii fiecrui shield sa fie bine conectai pentru ca robotul s funcioneze corespunztor; comenzile vocale trebuiesc spuse clar i la un nivel corespunztor altfel robotul nu le va gsi n vocabular, sau va executa o comand asemntoare, un sistem de recunoatere vocal perfect neexistnd deocamdat;

Contribuiile 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;

Cercetrile vor continua n cadrul studiilor de masterat fiind ndreptate spre: reuirea implementrii comenzilor vocale utiliznd module Xbee; implementarea senzorilor i a camerelor video pe roboi; testarea altor platforme precum EasyPic, Raspberry, EZ-B pentru creearea i testarea roboilor; perfecionarea unui sistem de recunoatere vocal.

35

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

Arduino Uno i EasyVR shield


[B1] [B2]

Atmel Corporation, ATmega328 datasheet; Veear, EasyVR User Manual;

Site-uri web
[C1] [C2] [C3] [C4] [C5]

http://www.youtube.com/watch?v=Tgz6u1t1ArA http://www.youtube.com/watch?v=Wi5dwCcK7ss http://www.youtube.com/watch?v=hLf_O8v9SFs http://www.robotshop.com/blog/en/carlitos-projects-speech-controlled-arduino-robot-3684 http://www.instructables.com/id/Speech-Recognition-with-Arduino/

36

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 GROUP_1 }; enum Group0 { G0_MOVE = 0, }; enum Group1 { G1_FORWARD = 0, G1_REVERSE = 1, G1_RIGHT = 2, G1_LEFT = 3, G1_DANCE = 4, 37 = 0, = 1,

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() 38

{ 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); 39

// 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); 40

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(); 41

delay(250); stop(); // write your action code here group=GROUP_1; // group = GROUP_X; <-- or jump to another group X for composite commands break; } break; case GROUP_1: switch (idx) { case G1_FORWARD: forward(); delay(3000); stop(); // write your action code here // commands break; case G1_REVERSE: reverse(); delay(3000); stop(); // write your action code here // commands break; case G1_RIGHT: right(); delay(500); stop(); // write your action code here // commands break; case G1_LEFT: left(); delay(500); stop(); // write your action code here 42 group = GROUP_X; <-or jump to another group X for composite group = GROUP_X; <-or jump to another group X for composite group = GROUP_X; <-or jump to another group X for composite

// commands

group

GROUP_X;

<--

or

jump

to

another

group

for

composite

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 // commands break; case G1_LONG_FORWARD: forward(); // write your action code here // commands break; case G1_LONG_REVERSE: reverse(); // write your action code here // commands break; case G1_STOP: stop(); // write your action code here 43 group = GROUP_X; <-or jump to another group X for composite group = GROUP_X; <-or jump to another group X for composite group = GROUP_X; <-or jump to another group X for composite

// commands

group

GROUP_X;

<--

or

jump

to

another

group

for

composite

break; } break; } }

44