Context general [302304]
Cuprins
Capitolul 1.[anonimizat] a [anonimizat].
[anonimizat].
Împletirea cunostințelor din disciplinele: informatica, mecanica, electronica și electrotehnic, a adus la realizarea roboților.
Roboții mobili sunt mecanisme automate capabile să se deplaseze în diverse medii precum: sol, aer, apa, [anonimizat], [anonimizat].
Primii roboți mobili au fost Elmer si Elise ( “țstoasele” ), gandiți si proiectați de catre Grey Walter in anul 1949. Aceștia erau mobili cu o [anonimizat]. Țestoasele sale aveau ca menire explorarea mediului inconjurător.
Robotul este compus din mai multe elemente:
– [anonimizat]
– [anonimizat]
– un calculator analogic cu două tuburi vidate.
Mecanica : definește structura si deplasarile/mișcarile pe care robotul le poate efectua.
Senzorii : realizeaza comunicarea cu mediul și detectează obstacolele.
Centrul de comandă : microcontroller care interpretează datele de la senzori si comandă ansamblul mecanic.
Obiectivele proiectului
În aceasta lucrare, “Minirobot comandat vocal” va fi prezentat studiul și realuizarea unui robot comandat vocal. Pentru realizarea proiectului, s-au abordat urmatoarele teme:
1. Proiectarea și realizarea fizică a robotului;
2. Alimentărea consumatorilor cu surse stabile de tensiune;
3. Comada robotului prin intermediul vocii;
4. Detecția obstacolelor si evenimetelor cu ajutorul sezorilor;
5. Comanda servomotoarelor.
Structura lucrării
Primul capitol prezentată istoria roboticii și definiția robotului.
[anonimizat].
[anonimizat].
Capitolul IV prezentată arhitectura generală a sistemului, proiectarea sistemului și specificații funcționale. Sunt descrise arhitectura și principiul de funcționare ale modulelor principale: placa de recunoaștere vocală EasyVR cât și modulul de dezvoltare Arduino Uno. Realizarea conexiunii serial. Este prezintă comanda și funcționarea servomotoarelor. Se detaliază mecanismul de funcționare al senzoriilor cu infraroșu.
În capitolul V se prezintă resursele necesare implementării sistemului. Se specifică aplicațiile necesare pentru implementarea codului sursă. În primul rand se programează modulul de recunoaștere vocală. Pe urma se implementeaza placa de dezvoltare Arduino cu ajutorul schemei logice a codului sursă.
Ultimul capitol punctează concluziile și bibliografia.
Capitolul 2. Studiul privind stadiul roboților mobili
2.1 Roboti mobili
Roboții mobili sunt sisteme automate care pot efectua mișcări/deplasari în variate medii de viata . [anonimizat], dispozitive pentru locomotie: servomotoare, dispozitive senzoriale: senzori, etc. Acestea se află sub controlul unui microcontroller care operează în timp real. Într-o mare masură, roboții sunt realizați dupa sistemul biologic uman.
Planificarea mișcărilor, nu întotdeauna constă dintr-o singură problemă și bine determinată, ci dintr-un ansamblu de probleme dintre care unele sunt mai mult sau mai puțin variante ale celorlalte.
Deplasarea robotului este posibilă și fără determinarea poziției și orientării lui față de un sistem de coordonate fix, aceast avantaj este util pentru sistemul de comandă a mișcării. Prntru metodele de locomoție mai des utilizate se pot menționa: contorizarea numărului de rotații efectuate de roțile motoare, putem utiliza acceleratoare și giroscoape, geamanduri electromagnetice plasate pe suprafata de acțiune a robotului, semnalizatoare pasive sau semipasive de tip magnetic sau optic.
2.2 Clasificarea roboților mobili
O clasificare a roboților mobili este următoarea:
Din punct de vedere al dimensiunii: micro, macro și nano-boți ;
Mediul de operare este un alt atribut al roboților: roboți tereștri – care operează pe spațiul terestru, roboți zburători – în aer, roboți subacvatici – în apă, roboți spațiali – operează în spațiul cosmic sau pe solul altor planete, roboți polari – pentru deplasarea pe gheață și în medii foarte reci;
Deplasarea pe sol se poate împarți în mai multe categori:
– Roboți pe șenile sau pe roți;
– Roboți târâtori: aceștia imită deplasarea reptilelor (șerpilor);
– Roboți pășitori: bipezi, patrupezi, miriapozi, hexapozi, etc. ;
– Roboți săritori: imită mișcarea broaștelor si a cangurilor;
– Roboți cu formă sferică: se deplasează prin rostogolire;
Figura 2. Exemple de roboți mobili
2.3 Utilizări ale roboților mobili
Roboții mobili au o utilizare foarte vastă, aceștia acoperă o gamă largă de domenii în care au funcții de optimizare ,eficientizare și înlocuiesc forța umană unde este cazul. Exemple de utilizare a roboților:
În domeniul militar, se folosesc roboții mobili deoarece aceștia pot patrunde în zone sau medii greu accesibile pentru oameni, pot dezamorsa bombe sau pot fi folosiți pentru acțiuni de spionaj. Exemple de roboți militari sunt ilustrate în figura 2.1.
Figura 2.1 Roboți mobili militari
AGV-urile (Automated Guided Vehicles) reprezintă roboții din domeniul industrial, aceștia pot fi vehicule pe roți cu ghidare automată (prin intermediul senzorilor), principala activitate fiind transportul de obiecte grele. O altă categorie de roboți industrial sunt cei folosiți in industria auto și ajută la fabricarea de automobile, efectuând suduri dificile, sau mutarea obiectelor foarte grele pentru realizarea montajului. Exemplu de roboți industriali in domeniul auto sunt prezentați în figura 2.2.
Figura 2.2. Roboți industriali.
În domeniul medical de obice se folosesc roboți de dimensiuni foarte mici, micro-roboții pentru a se deplasa de-a lungul vaselor și tuburilor corpului omenesc, pentru investigare sau pentru intervenții chirurgicale foarte complicate. Exemple de micr-roboți sunt prezentat în figura 2.3.
Figura 2.3. Nano și micro-roboți.
Un alt domeniu este explorarea și cercetarea în spațiul cosmic. Unul dintre exemplele din zilele noastre este robotul mobil ”Curiosity” . Acesta a fost trimis pe planta Marte, el efectuează autonom misiuni de cercetare a solului, cât și căutare de viață pe această planetă. Figura 2.4.
Figura2.4. Robot spațial ”Curiosity”
2.4 Acționarea robotilor mobili
Totalitatea surselor de energie ale robotului și alte elemente de direcție/orientare ale acestuia reprezintă sistmul de acționare. Prin sistem de acționare înțelegem ansamblul motoarelor și convertoarelor care produc energia mecanică necesară mișcarii robotului precum și componentele auxiliare ce controlează transferul energetic.
Funcția de acționare a elementelor sistemului mecanic este specifică practic sistemului de acționare care generează mișcarea în concordanță cu funcția de comandă impusă.
Componentele sistemului sunt urmatoarele:
sursa de energie primară;
sistemul de conversie al energiei primare în energie mecanică;
sistem de transmitere al energiei mecanice către articulația corespunzătoare;
controlul parametrilor caracteristici ale acestor sisteme.
Structura generală a unui sistem de acționare este prezentă în fig. 2.5. [1]
Figura 2.5 Sistem de acționare [1]
De obicei sistemele de acționare utilizează trei surse primare de energie: electrică, hidraulică sau pneumatică. Roboții industriali moderni folosesc în mare masura acționarea hidraulică deoarece proprietatea principală acestor sisteme este eficiența raportului dintre forța excitată la dispozitivul motor și greutatea acestuia. Acționările electrice au și ele o arie larga de utilizare, acestea avand ca atribut principal controlul pe care îl asigură. Procentual, acționarea pneumatică are o pondere redusă in domeniul roboticii, fiind de obicei folosită în sistemele de comandă ale componentelor auxiliare.
2.5 Sistemul senzorial
Prin sistemul senzorial al unui robot se înțelege ansamblul tuturor senzorilor amplasați pe structura mecanică și ale căror semnale fuzionate servesc controlului adaptiv al robotului (conducerii adaptive a robotului).
Senzorul reprezintă un dispozitiv care convertește o mărime fizică într-o mărime electrică (semnal electric). Conversia mărimii fizice cu ajutorul senzorilor se face nu din rațiuni energetice ci cu scopul obținerii de informații despre mărimea aplicată la intrare reprezentată sub formă electrică.
În domeniul roboticii tendințele actuale privesc transmisia la distanță a informației senzoriale sub reprezentare numerică utilizând în acest scop aproape exclusiv transmisia serială a informației senzoriale deoarece necesită mai puține conductoare de legătură și este posibilă izolarea galvanică a senzorilor de unitatea centrală de comandă. [2]
Senzorii se împart în două mari categorii:
Senzori activi, aceștia folosesc caracteristici propriu-zise ale mediului.
Senzori pasivi, care produc modificări în mediu pentru a etalona unele caracteristici.
O altă clasificare a senzorilor este utilitatea acestora, sezori sunt folosiți pentru măsurarea unor mărimi interne (poziție, viteză, accelerația, etc.) sau pentru măsurarea unor mărimi externe (greutate, umiditate, culoare, temperatura, etc).
Pentru a alege senzorii potriviți pentru un robot, trebuie studiat gradul de autonoimie, mediul in care acesta iși va desfașura activitatea și scopul pentru care a fost proiectat. Mai multe tipuri de senzori, sunt ilustrați în figura 2.6.
Figura 2.6. Tipuri de senzori
2.6 Tipuri de roboti mobili
Figura 2.7. Robotul “Big Dog”
Una dintre principalele probleme ale soldatilor este greutatea mare a echipamentului pe care acestia sunt nevoiti sa il care in misiuni. Acum, solutia a venit in forma unui inestetic, dar foarte puternic si eficient robot militar, ce poate cara fara oboseala peste 150 kilograme de provizii, la viteza de 6,4 km/h, deplasandu-se chiar si pe gheata sau pe teren accidentat.
Caracteristici:
cantărește 75 kg;
motor pe bază de petrol;
mebrele hidraulice;
viteză de 6 km/h;
controller pentru locomotie;
senzori pentru locomoție (poziția atriculației,forța comună, contactul la sol, sarcina la sol);
senzori pentru monitorizare (presiunea hidraulică, temperatura uleiului, funcțiile motorului, încărcarea bateriei, etc.);
are un giroscop;
sistem de vizionare stereo;
Figura 2.8. Robotul ASIMO
În 21 Octombrie 2000 Honda a coceput și proiectat robotul uman ASIMO sau Advanced Step in Innovative Mobility, a fost gândit sa fie un robot mobil multifuncțional. Pentru încurajarea studiului științei, matematicii și cercetarii ASIMO este foarte frecvent folosit pentru demonstrații în toată lumea. Acesta are 54 kg și o înălțime de 130 cm, el recunoaște obiectele aflate în mișcare, sunete, gesturi și fețe, care îl ajută să interacționeze cu oamenii.
Caracteristici:
Comandă vocală ;
Interconectare cu calculatorul ;
34 grade de libertate ;
Pășește o viteză de până la 2.7 km/h, putând să alerge cu o viteză de 6 km/h ;
Baterie Lithium Ion 51.8 V cu o autonomie de o oră ;
Figura 2.9 Shakey the robot
Între anii 1966 și 1972 Shakey the robot a fost in stadiul de proiectare, a fost unul dintre primii roboți mobili care au apărut. Acesta a fost construit de inginerii de la centrul de inteligența artificiala în cadrul Institutului de Cercetare din Stanford, robotul a fost proiectat să poată “gândi” și lua decizii asupra propriilor acțiuni, putea sa depisteze traiectorii de deplasare, putea evita coliziuni cu obiectele ce le întâlnea, pe când alți roboți trebuiau învățați pas cu pas fiecare etapă pentru a putea completa o acțiune.
Componente hardware:
Un procesor;
Camera de televiziune;
Antenă radio;
Sonar telemetric;
Senzor de coliziune;
Capitolul 3. Studiul privind dinamica minirobotului mobil cu roți
În cazul de fața, minirobotul comandat vocal, se studiază cinematica robotului rigid cu roți care își desfașoara activitatea într-un plan orizontal prezntat in figura 3.1, roțile acestuia au un cate un singur punct de contact pe suprafața planului. Ele sunt perpendiculare pe suprafața de contact, nu patinează si nu aluncă, punctul de sprijin este neglijat. Poziția minirobotului poate fi stabilită în urma unei relații dintre sistemul global de referință [ X1, Y1] și sistemul local de referință [ XR, YR], prezentate in fig. 3.1. Punctul P din figură reprezintă un punct de pe șasiul minirobotului și totodată reprezintă poziția minirobotului.
Figura 3.1 Modelul cinematic al minirobotului cu un punct de sprijin și cu două roți acționate diferențial
Pentru determinarea poziției robotului este nevoie de urmatorii parametrii:
pentru raportarea la originea sistemului de coordonate care este atasat robotului este nevoie de doi parametrii;
un al treilea parametru este parmetrul de orientare in lungul axei care este perpendiculara pe plan;
X1O1Y1 – sistemul de coordonate global;
XR P YR – sistemul de coordonate local;
Minirobotul are 3 grade de libertate, rotația in jurul axei verticale rprezentată prin unghiul θ care totodată reprezintă orientarea minirobotului și două grade de libertate ce reprezintă poziția.
Coordonatele punctului P, punct ce reprezintă poziția robotului in sistemul de coordonate global va fi in continuare reprezentat de coordonatele x, y si θ.
Pentru poziția minirobotului in sistemul global vom defini un vector de poziție:
q0 = [x y θ]T (3.1)
Vom defini un vector pentru viteză:
q0` = [x`y`θ`]T (3.2)
Matricea de rotație predefinită cu unghiul θ este următoarea:
(3.3)
Pentru a corela mișcarea din sistemul global în sistemul local folosim relația:
(3.4)
Schimbarea direcției sau modificarea traiectoriei rectilinii este rezultat al diferenței vitezei unghiulare. Aceasta diferența unghiulară este datorată acționării diferențială a celor două roți convenționale ale șasiului.
Figura 3.2 Modificarea traiectoriei minirobotului
În sitemul global, viteza minirobotului este definita prin relația 3.5 :
(3.5)
Pentru comanda și controlul minirobotului este necesar sa cunoaștem aportul fiecarei roți raportat la axele de coordonate XR , YR ținand cont de restul parametrilor.
Prin însumarea aportului fiecărei roți raportată la axa XR se va obține componenta de viteză.
(3.6)
(3.7)
(3.8)
Ultima relație, și anume relația 3.8 arată cinematica minirobotului obținută prin însumarea contribuției fiecărei roți.
3.1 Traiectoria rectilinie
Când cele două motoare sunt acționate simultan și au aceeași viteza de rotație se realizează traiectoria rectilinie, iar minirobotul se va deplasa înainte.
Figura 3.3 Traiectorie rectilinie
Mișcarea rectilinie reprezentată in figura 3.3 se calculează prin intermediul relației 3.9.
V1=V2 Ω=0 , R=∞ (3.9)
3.2 Rotirea în jurul axei verticale (pivotarea)
În momentul in care ambele servomotoare sunt acționate simultan, se învârtesc cu aceeași viteza, dar sensul rotației este opus, se execută mișcarea de rotație in jurul axei verticale.
Figura 3.4 Rotirea in jurul axei verticale
Rotirea minirobotului in jurul axei verticale se realizează prin intermediul relației 3.10
V2 = -V1 Ω = 2 V1/l = -2V2/l , R = 0 (3.10)
Capitolul 4. Elementele și construcția minirobotului
Elementele care intră în componența și proiectarea minirobotului se împart in trei categori, partea electrică, partea mecanică și patea informatică:
Partea electrică:
placa de dezvoltare Arduino Uno R3 ;
placa de recunoaștere vocala Easy VR ;
doua servomotoare ( rotație 360 ̊ ) ;
doi senzori de infraroșu ( Sharp ) ;
8 baterii 1.5 V ;
o baterie 9 V ;
un minibread board ;
regulator de tensiune LM 7805 ( 5V, 500 mA ) ;
speaker PC ;
două întrerupătoare ;
fire de conexiune ;
Partea mecanică:
șasiu ;
două roți acționate independet ;
roată ajutătoare ;
două plăcuțe laterale și două față/spate ;
Partea Informatică:
comunicarea seriala dintre placa de recunoastere vocala și microcontoler ;
programarea plăcii Arduino pentru comanda servomotoarelor ;
programarea plăcii de recunoaștere vocala ;
4.1 Componentele minirobotului
Principalele elemenete sunt placa de dezvoltare Arduino Uno R3 și placa de recunoaștere vocala EasyVR. Comanda se face prin intermediu microcontrolerului ATmega328 care este intergrat pe placa Arduino, alături de porturi I/O și circuite auxiliare. Pentru stabilizarea tensiunii la 5 V și 500 mA, tensiunea la care servomotoarele funcționează crespunzator, se folosește stabilizatorul de tensiune LM7805. Nu în ultimul rând sunt senzorii Sharp pentru detectarea posibilelor obsetacole.
4.2 Arhitectura minirobotului
Figura 4.3 Arhitectura minirobotului
Figura precedentă prezintă arhitectura minirobotului, legatura dintre principalele elemente constructive și modul de comunicare/comandă și alimentara a fiecaruia dintre acestea. În cele ce urmează sunt detaliate aceste elemente constructive și sunt prezentate rolurile lor.
Șasiul minirobotului este reazlizat dintr-un cadru de plastic dreptunghiular, susținut de o roată mai mică de sprijin, alături de două roți mai mari care sunt acționate diferențial. Acestea din urmă sunt acționate prin intermediul a două servomotoare continue care sunt alimentate la 5,02 V și 500mA. Viteza maxima la care pot ajunge este de 70 rotații pe minut.
Comanda servomotoarelor se realizează prin intermediul microcontroler-ului Atmega328 ce se gasește pe modulul de dezvoltare Arduino.
Precepția comenzilor vocale se procesează cu ajutorul plăcii de recunoaștere vocală Easy VR , comenzile pot fi percepute de catre modul in două limbi, respectiv in limba engleză si limba italiană. Fluxul de lucru al componetelor este urmatorul: modulul EasyVR trimite microcontrolerului comanda vocală percepută, iar acesta la randul lui transmite instrucțiunea aferentă servomotoarelor. Distanța maximă, în condiții normale, de la care se percepe o comandă vocală este de maxim 50 – 60 cm.
Pentru determinarea și evitarea posibilelor obstacole în traseul parcurs de minirobot sunt utilizați cei doi senzori infraroșii pentru distanță digitali Sharp. Aceștia sunt amplasați unul in fața si celalalt in spatele minirobotului, fiecare dintre ei avand o raza de acțiune de aproximativ 5 cm.
4.3 Modulul de dezvoltare Arduino Uno R3
Modulul de dezvoltare Arduino Uno R3 este o platforma de procesare ce are la bază microcontrolerul ATmega328. Acesta are 14 pini de intrare / ieșere (ca și ieșiri PWM pot fi folositi 6 dintre cei 14 pini), 6 ieșiri analogice , un port USB, un port pentru alimentare, un timer de 16 MHz și un buton pentru resetare. Microcontrolerul se programeaza in limbajul C++, in programul Arduino oferit de producator care este foarte ușor de folosit avand la dispoziție tehnici open-source. Urmatoarea figură reprezintă placa de dezvoltare Arduino UNO R3.
Figura 4.4 Arduino Uno R3
Placa de dezvoltare se poate alimenta prin intermediul conexiunii USB și extern cu ajutorul unei baterii de 9V. Arduino poate alimenta componente auxiliare precum servomotare, senzori, leduri, etc. prin pinii: 3V3 (tensiune de 3.3V, curent maxim de 50 mA); 5V ( tensiune de 5V ); 2 x GND (pini de masa);
Memoria utilizată de microcontrolerul ATmega328 este de 32 KB ( dintre care 0.5 KB untilizați pentru bootloader ), memorie SRAM 2 KB și 1 KB EEPROM.
Arduino poate comunica cu calculatorul sau alte microcontrolere prin interfața USB sau serial. Comunicarea microcontrolerului Atmega328 este realizată printr-o conexiune serială UART TTL ( 5V ) , prin pinii RX (0) și TX (1). În momentul conectarii placii Arduino la calculator comunicarea se face prin USB prin porturi COM.
Limbajul de programare al placii este un libaj propriu și unul foarte asemanator cu limbajul C++.
Specificații tehnice:
Microcontroller: ATmega328
SRAM: 2 KB (ATmega328)
EEPROM: 1 KB (ATmega328)
Flash Memory 32 KB (ATmega328)
Clock Speed: 16 MHz
Tensiune de lucru: 5V
Tensiune de intrare (recomandată): 7-12V
Tensiune de intrare (limită): 6-20V
Pini analogici: 6
Intensitate de ieșire: 40 mA
Intensitate de ieșire pe pinul de 3.3V: 50 mA
Pini digitali: 14 (6 PWM output)
Urmatoarea figură prezintă detaliat componetele plăcii de dezvoltare:
Figura 4.5 Componentele plăcii Arduino
4.4 Placa de recunoaștere vocală Easy VR
Modulul de recunoaștere vocală Easy VR este un modul usor de proiectat și se integrează apropae cu orice aplicație.
Figura 4.6 Placa de recunoaștere vocală Easy VR
Acest modul, EasyVR poate comunica cu plăcile Arduino și orice placă de dezvoltare din familia PIC. Comunicarea se realizează serial prin intermediul interfeței UART ( Universal Asynchronus Reciver/Tramsmitter ) fiind alimentatcu o tensiune cuprinsă in intervalul 3.3V – 5V.
Modulul folosește un difuzor intern, care poate procesa comenzile în limbile următoare:
Engleză
Italiană
Franceză
Germană
Japoneză
Spaniolă
Limita maximă de cuvinte este de 32, cuvinte care sunt înregistrate de către utilizator, cuvintele pot determina diferite acțiuni, parole vocale, comenzi ( comanda pentru acționarea unui servomotor ). Modul de operare și configurare al placii este foarte simplu, acesta foloseste un program lansat de producator care se numește Voice Commands, prin intermediul lui se oferă multe facilitați pentru înregistrarea și configurarea modulului de recunoaștere vocală.
4.4.1 Specificații tehnice
Modulul EasyVR se “împerechează” perfect cu placa de dezvoltare Arduino pentru configurarea și administrarea cat mai ușoară și flexibilă. În continuare se va prezenta rolul si poziționarea pinilor pe placă.
Figura 4.7 Modul EasyVr [4]
Tabelul 4.1 [4]
Prin intermediul pinului J12, modulul Easy VR poate opera în mai multe moduri:
PC – modul în care se conectează la calculator;
Se folosește pentru comunicarea directă cu clculatorul. În acest timp placa de dezvoltare Arduino este inactivă și se folosește doar adaptorul serial/USB.
UP – prin acest mod se face update la memoria Flash;
Utilizat în momentul în care se încarcă noi comenzi vocale prin programul Easy Commander, practic se reînprospăteaza firmware-ul modulului. În aceasta situație placa de recunoaștere vocală este in repaus, se folosește doar comunicarea serială/USB, iar placa Easy VR este în modul boot.
HW – Modul hardware serial;
Placa de dezvoltare Arduino este activă și prin intermediul acesteia se controlează modulul Easy VR prin pinii 0 și 1.
SW – Modul software serial
Placa de dezvoltare Arduino este activă și prin intermediul acesteia se controlează modulul Easy VR prin pinii 12 și 13, se poate lucra și implementa noi conexiuni în programul Easy Commander, cu condiția sa fie adaugată librăria Easy VR langă celelalte biblioteci ale programului Arduino.
Led-ul D6 care este conectat la pinul IO1 reprezintă feedback-ul procesului de recunoștere vocală, în rest este aprins pe perioada alimentarii.
4.4.2 Conexiunea și comunicația Arduino – Easy VR
Protocolul UART ( Universal Asynchronus Reciver/Transmitter) stă la baza comunicarii dintre cele două module, este compatibilă cu nivelele logice TTl/CMOS, conform tensiunii cu care este alimentat.
Transferul de date se face la o putere de 9600 baud, 8 biți de date, un bit de stop și nici o paritate. Rata baud se poate schimba pentru operarea în intervalul 9600-115200 baud.
În figura de mai jos este prezentată transmisia de date pe portul serial ce reprezintă caracterul “A” .
Figura 4.8 Transmiterea caracteului “A” pe portul serial
Acest protocol de comunicație lucrează doar cu caractere ASCII ce pot fi imparțite in două grupe principale:
Caractere și comenzi de stare pe liniile TX și RX, alese dintre caracterele cu litere mici;
Detalii sau argumente de comandă pe liniile TX și RX, cuprinzând astfel caracterele cu majuscule.
Comenzile transmise pe linia TX, cu zero sau mai mulți biți ca și argumente, preia raspunsul pe linia RX ca și un bit de stare după care urmează un zero sau mai multe argumente. Există o întarziere minimă pâna când toți biții transmiși de modulul Easy VR pe linia RX, inițial aceata fiind de 20 ms.
Pentru interfața Easy VR este necesară o mică întârziere, înainte de a trimite un caracter spre modul, deoarece microcontrolerul este foarte rapid și placa Easy VR nu poate analiza noul caracter primit. Toate comunicațiile sunt conduse spre gazdă, rezultând ca oricare bit de raspuns al comenzii trebuie verificat de gazdă pentru primirea tutror datelor despre starea in care se află, utilizând sapațiul ca și caracter.
La un moment dat modulul intră în starea de economie după ce este pornit, pentru revenirea în starea normala si inițierea comunicației se trimite orice caracter.
Pentru alimentarea și comunicarea modulului Arduino cu Easy VR, se folosesc pinii 0 și 1 ( RX și TX ), iar alimentarea pe pinii 3.3V-5V și GND.
Figura 4.9 Comunicare EasyVR-Arduino
Cele două module, Arduino și Easy VR pot fi conectate in două moduri:
Modul Bridge – se folosește împreună cu librăria specifică pentru comunicarea serială și se conectează la modul prin programul Easy Commander la calculatror.
Modul Adaptor – modulul Arduino are rolul de adaptor serial/USB, butonul de reset al microcontrolerului fiind activ, cu posibilitatea de schimbare a conexiunii pentru controlul plăcii de dezvoltare de către microcontroler.
În cazul de fața, al proiectării minirobotului, comunicarea dintre Arduino si placa Easy VR a fost pe modul Adaptor. Cu ajutorul acestei metode reînporspătarea tablului cu sunete pentru modulul Easy VR este mai simplă. Următoarea figură prezintă comunicarea Arduino-Easy VR.
Figura 4.10 Comunicarea Arduino – Easy VR [5]
4.5 Elemente de acționare, servomotoare
Ca obiecte principale în acționare, servomotoarele sunt proiectate pentru a controla vehiculele: mașini, barci, avioane, etc. De câțiva ani încoace, servomotoarele sunt foarte des întalnite în domeniul roboticii pentru construcția roboților mobili, roboților umanoizi, brațe robotice, etc.
Termenul de servomotor provine din termenul de servomecanism, aceste un sistem în buclă închisă, iar cu ajutorul feedback-ului se controlează mișcarea și poziția finală. Ca input avem un semnal digital sau analogic care este defapt poziția comandată pe arborele de ieșire.
4.5.1 Structura servomotorului
Elementele componente ale servomotorlui sunt: un motor care funcționeaza în curent continuu ce are o cutie de viteze, un driver pentru motor, snezorul pentru poziție, amplificatrorul de eroare și nu în cele din urmă crcuitul ce decodifică poziția cerută ( acest circuit de decodificare transformă smnalul PWM intr-o tensiune continua). Urmatoare figură reprezintă elementele componente ale servomotorului.
Figura 4.11 Elementele constructive ale servomotorului
Figura 4.11 Diagrama bloc servomotor
4.5.2 Comunicarea Servomotor-Arduino
Controlabilitatea servomotoarelor este facută cu ajutorul unui impuls ce variază în lățime pe semnalul de comandă. Caracteristicile impulsului sunt: frecvența de repetiție, minimul și maximul. Există anumite constrângeri petru servomotoare, respectiv existența unui punct neutru care reprezintă poziția servomotorului când ptențialul învatririi servomotorului în direcția acelor de ceasornic este egal cu potnțialul învartirii opuse sensului acelor de ceasornic. Majoritatea servomotoarelor prezintă constrângeri asupra rotației, dar o caracteristică ce privește toate servomotoarele, este punctul neutru definit în jurul valorii de 1.5 milisecunde. Acestă remarcă este prezentată în figura 4.13.
Determinarea unghiului în care se găsește servomotorul se calculează în funcție de durata impulsului ce este timis pe firul de comandă. Perioada unui semnal este de 20 ms, iar lungimea impulsului determină cât s-a rotit servomotorul. Trimiterea unui impuls cu durata de 1.5 determină rotirea cu 90 ̊, adică poziția neutră.
În intervalul 1.0 – 1.4 ms servomotorul se învârtește cu viteză constantă în sensul opus acelor de ceasornic, în intervalul 1.5 – 2.0 ms servomotorul se învârtește cu viteză constantă in sensul acelor de ceasornic, iar la 1.5 ms servomotorul este în poziție de stop. Impulsul variază intre limita inferioară de 1 ms și limita superioară de 2 ms.
Figura 4.13 Impulsul PWM în timp
Pentru funcționarea în condiții normale a servomotrului este nevie de o sursă stabilă de tensiune, în acest caz s-a utilizat stabilizatorul de tesiune LM7805, acesta este alimentat de 8 baterii, fiecare avand 1.5 V. După stabilizare ieșirea stabilizatorului furnizează o tensiune continuă, invariabilă de 5.02 V cu 500 mA, în acest caz comanda servomotorului este stabilă într-un interval de timp. Cei trei pini ai stabilizatorului, de la stânga la dreapta reprezită: input (pinul de intrare), GND (masa) și output (iesirea stabilizată).
Figura 4.14 Stabilizator de tensiune
După alimentarea servomotoarelor, comunicarea acestora cu placa de dezvoltare Arduino se face prin pinii 9 și 10, pini de ieșire PWM. Pinii GND se leagă la masa placii pentru a avea aceeași referință. În figura de mai jos este ilustrată stabilizarea teansiunii și conectarea servomotoarelor la placa de dezvoltare.
Figura 4.15 Conexiunea servomotoarelor
4.6 Senzorii
Sistemul senzorial și senzorii s-au dezvoltat odată cu evoluția microelectronicii, pe lânga alți termeni ce vizează același domeniu al electronicii, precum: actuator, microprocesor, microcontroler, etc.
Majoritatea componentelor electrice senzitive, sunt înglobate sub în clasa de traductoare. Aceste dispozitive numite traductoare, au capacitatea de a preulua efectele marimilor fizice si de a le transforma în semnale electrice, iar acestea pot fi procesate instantaneu de catre microcontrolere sau instrumente de masură.
Termenul de senzor reprezintă dispozitivul tehnic, des întâlnit în industria automobilelor, roboticii și altele. Funcția lui este de determinare a unei sau mai multe caracteristici în funcție de nivelul de integrare, acestea pot fi mai simple sau mai complicate.
Figura 4.16 Funcționarea senzorilor []
4.6.1 Structurile sistemelor senzoriale
În componența unui senzor poate intra unul sau mai multe traductoare cu rolul de conversie a marimii fizice într-un semnal electric, precum și circuite de adaptare, transformare, evaluare și prelucrare a semnalelor și informației. Există senzori care includ aceste circuite (microelectrice și micromecanice) de prelucrare pe scra largă de integrare LSI sau foarte larga VLSI, îi putem întalni sub denumirea de “sezori inteligenți” sau “ sisteme senzoriale”. Senzorii inteligenți dezvoltă microsistemele (microelectricii și pmicromecanicii) permițând integrarea traductoarelor la niște dimensiuni foarte mici.
Clasificarea senzorilor unui robot fața de interacțiunea cu mediul înconjurător:
Senzori interni – acest tip de senzori au rolul de culegere a informațiilor despre funcționarea internă a robotului, de exemplu: accelerația și viteza liniara și unghiulară, poziția cuplelor cinematice, mișcarea defectuasă a elementelor componente ale lanțului cinematic, et.
Senzori externi – aceștia preiau informația din spațiul de lucru cu care interacționează robotul și au capacitatea de a indentifica diverse atribute precum: prezența, culoarea, poziția, tipul, etc. obstacolelor cu care urmează sau nu sa intre în contact. Un senzor care scanează mediul înconjurător precum un radar, se numește senzor exterior fara contact, senzorii tactili sunt senzori externi cu contact direct și senzorii externi cu contact indirect sunt senzorii de forță / moment, deoarece forța de interacțiune cu mediul nu are efect direct asupra sezorului, dar se refelectă prin propagarea unor elemente intermediare.
Senzori fara contact – acest tip de senzori are rolul de recunoaștere a a obiectelor, a poziționării și orientarii. Senzorii de zone apropiate se numesc senzori de proximitate care redau informații despre prezența obiectelor. În majoritatea cazurilor sezorii de proximitate sunt localizați pe efectorul final sau intr-o zonă aprpiată acestora. Tot din categoria de acțiune a senzorilor într-o zonă apropiată sunt senzorii optici, iar pentru o arie mai larga se folosesc senzorii de investigare.
Figura 4.17 Clasificare senzori
4.6.2 Senzori utilizați la proiectarea minirobotului
Pentru realizarea minirobotului, s-au folosit doi senzori digitali, infraroșii pentru distanță, modelul Sharp GP2Y0D805Z0F. Aceștia au proprietațile următoare:
Tensiunea de alimentare cuprinsă între 2.7 și 6.2 V;
Curentul ce este absorbit sub 10 mA;
Pentru depistarea obiectelor are la baza principiul reflexiei luminii infraroșii;
Raza de acțiune cuprinsă între 0.5 și 5 cm;
Prezintă toleranță la lumina soarelui;
Senzorii Sharp îi întâlnim des în componența roboților “aspirator” , destinați curațeniei, obiecte sanitare sau corpuri de iluminat, etc. Circuitul electric este are trei fire: Vcc ( tensiunea de alimentare ), GND ( masa ), Vout ( tensiunea de ieșire).
Principiul de funcționare al senzorului Sharp este următorul: formarea unui triunghi de la emițatorul de lumină infraroșie la punctul în care se reflectă și ultimul punct, detectorul de infraroșu. În permanență unda infraroșie se raspandește pe traiectoria minirobotului, dacă nu întâlnește nici un obstacol, minirobotul continua deplasarea, dar în momentul în care unda se reflectă dintr-un obiect aflat pe traiectorie, aceasta se intoarce înspre detector și formează un triunghi. Acest principiu al triunghiului este ilustrat in figura 4.19.
Figura 4.18 Senzor Sharp – Diagrama bloc [ ]
Figura 4.19 Principiul de funcționare pentru Sharp
Senzorii Sharp vor comunica cu modulul de dezvoltare Arduino prin pinul de ieșire Vout de la fiecare senzor la pinii 2 și 3 de pe Arduino. Sursa de tensiune se va obține de la pinul de 5V și masa pe pinul GND.
Figura 4.20 Conexiunile senzorilor cu Arduino
Capitolul 5. Programarea minirobotului
5.1 Instalarea porogramelor
Cele două module programabile, microcontrolerul Atmega328 și modulul de recunoaștere vocală necesită instalarea celor două programe, pentru configurare și programare:
EasyVR Commander 3.10
Arduino
5.2 Mediul de programare Easy VR Commander
Cu ajutorul programului EasyVR Commander 3.10 se pot înregistra și configura comenzi vocale pentru placa de recunoaștere vocală Easy VR. Producatorul acestui soft este compania VeeaR specializată pe acest tip de module. Odată cu conectarea placii la calculator prin intermediul portului USB , avem acces la tabelul cu grupurile de sunete.
Programul poate fi gasit și descărcat de pe siteul oficial: http://www.veear.eu/downloads/ , la secțiunea downloads. După instalarea programului, se rulează programul și se selectează COM-ul corespunzător.
Următorul pas este conectarea la modulul de recunoaștere vocală prin intermediul butonului connect din meniul principal.
Figura 5.1 EasyVR Commander
După cum putem observa în figura anterioară se evidențiază patru grupe de comenzi:
Trigger – este un grup mai deosebit, deoarece în cadrul acestuia se înregistrează cuvinte cheie/declanșatoare ( în cazul de fața, ca și cuvânt declanșator este cuvântul “ MINI “);
Group – sub acest tip se pot adăuga comenzi care au un atrbut comun ( în cazul minirobotului, atributul comun este limba );
Password – o categorie specială de înregistrare a cuvintelor prin care se pot memora maxim 5 parole ( principiul utilizat este: Speaker Verification );
Wordset – acest grup are în componență cuvinte deja predefinite ( ex: Atack, Stop, Action, etc. );
Pentru minirobotul proiectat s-a programat ca și cuvânt declanșator, cuvântul “MINI” , iar ca și grupuri pentru comenzi au fost create două grupuri, primul în limba engleză:
Forward – robotul merge înainte;
Backward – robotul merge înapoi;
Left – întoarcere la stanga ;
Right – întoarcere la dreapta ;
Rotate – rotire;
Hello – robotul produce un feedback sonor;
Italian – se schimbă limba de operare (lb. engleză) în limba italiană;
Stop – robotul se oprește;
După schimbarea limbii, in limba italiană s-au definit următoarele comenzi:
avanti – robotul merge înainte;
indietro – robotul înapoi;
sinistra – întroacere la stânga;
destra – întoarcere la dreapta;
English – se schimbă limba de operare (lb. Italiană) în limba engleză.
Cuvintele se înregistrează prin butonul Train Command și fiecare se rostește de două ori. Pentru evitarea erorilor, în momentul înregistrarii nu trebuie sa existe perturbații de zgomot.
5.3 Mediul de programare Arduino
Programul Arduino a fost dezvoltat de aceeași companie care produc și plăcile de dezvoltare, este un program cu acces pentru orice utilizator prin faptul ca este open-sourece. În momentul conectării plăcii la calculator prin interfața USB, avem accesul la programarea, editarea sau ștergerea codului sursă. Pentru a scrie un program se folosește limbajul C, alaturi de librarii specifice pentru diferite module sau elemente componente.
Pentru comunicarea celor două module, s-a descărcat librăria EasyVR, care trebuie copiată în directorul de librarii unde este instalat programu Arduino. Această libraie este absolut necesară pentru recunoașterea plăcii Easy VR.
Pentru conexiunea plăcii de dezvoltare cu calculatorul s-a folosit portul COM4 și s-a selectat placa Arduino / Arduino Genuino Uno.
Figura 5.2 Mediul de programare Arduino
5.4 Arhitectura programului ( Schema Logică )
Figura 5.3 Diagrama logică a programului
5.5 Programul propriu-zis
Pentru început se declară și se inițializează librăriile cu care se va lucra în program și tot în patrea de început se relizează comunicarea serială dintre modulul de recunoaștere vocală și Arduino.
Următoarea secvență de cod reprezintă declararea și inițializarea senzorilor ( cel din față și cel din spate ) și pentru cele două servomotoare ( motorS, motorD ). Figura 5.4 .
Figura 5.4 Declarare pini I/O
Mai departe urmează declararea grupurilor de comenzi ce au fost înregistrate cu ajutorul plăcuței de recunoaștere vocală și comenzile aferente acestora. Figura 5.5
Figura 5.5 Declarare grupe și comenzi
Porțiunea următoare de cod prezintă comanda în milisecunde pentru servomotoare și verificarea existenței unui posibil obstacol la comanda de mers înainte sau înapoi. Figura 5.6
Figura 5.6 Comanda servomotoarelor
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Context general [302304] (ID: 302304)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
