Robot de tip Line Follower [306087]
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI INGINERIE ELECTRICĂ
PROIECT DE DIPLOMĂ
Conducator științific : Conf. dr. ing. Rentea Cornel
Îndrumător: Conf. dr. ing. Rentea Cornel
Absolvent: [anonimizat]: Calculatoare
Sibiu, 2016 –
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI INGINERIE ELECTRICĂ
Robot de tip „Line Follower”
Conducător științific: Conf. dr. ing. Rentea Cornel
Îndrumător: Conf. dr. ing. Rentea Cornel
Absolvent: [anonimizat]: Calculatoare
Introducere
Unul din cele mai importante aspecte în evoluția ființei umane este folosirea uneltelor care să simplifice munca fizică. [anonimizat] o poziție privilegiată datorită complexității lor.
Noțiunea de robot datează de foarte multi ani. Omul și-a imaginat dispozitive mecanizate inteligente care să preia o parte însemnata din efortul fizic depus. Astfel a construit jucării automate si mecanisme inteligente sau și-a [anonimizat], filme "SF" etc.
Dezvoltarea informatică a marcat saltul de la societatea industrializată la societatea avansat informatizată generând un val de înnoiri în tehnologie și în educație.Acest lucru a dus și la apariția roboților
Denumirea "robot" a fost folosita in 1920 de cehul Karel Capek într-o piesa numită "Robotul universal al lui Kossum". Ideea era simplă: omul face robotul după care robotul ucide omul. Multe filme au continuat sa arate că roboții sunt mașinării dăunătoare si distrugătoare.
Termenul de “robotics” (în traducere liberă robotică) se referă la știința care se ocupă de studiul și utilizarea roboților. Acest termen a [anonimizat], într-o scurtă povestioară numită “Runaround”, în anul 1942. Această poveste scurtă a fost apoi inclusă într-o colecție numită “I, Robot”, care a fost publicată în 1950.
Dezvoltarea informatică a marcat saltul de la societatea industrializată la societatea avansat informatizată generând un val de înnoiri în tehnologie și în educație permițând realizarea de roboți.
[anonimizat]. [anonimizat], [anonimizat].
Domeniile de aplicare a [anonimizat], [anonimizat], în cunoasterea oceanului și a [anonimizat].
CAPITOLUL I
1.1. Studiul privind stadiul roboților mobili
1.1.1 Roboți mobili
Robotul mobil este un sistem complex care poate efectua diferite activități într-o varietate de situații specifice lumii reale. El este o combinație de dispozitive echipate cu servomotoare și senzori (aflate sub controlul unui sistem ierarhic de calcul) [anonimizat], marcat de o serie de proprietăți fizice (de exemplu gravitația care influențează mișcarea tuturor roboților care funcționează pe pământ) și care trebuie să planifice mișcările astfel încât robotul să poată realiza o sarcină în funcție de starea inițială a [anonimizat]ru.
Succesul în îndeplinirea acestor sarcini depinde atât de cunoștințele pe care robotul le are asupra configurației inițiale a spațiului de lucru, cât și de cele obținute pe parcursul evoluției sale.
Problemele specifice ce apar la roboții mobili ar fi următoarele: evitarea impactului cu obiectele staționare sau în mișcare, determinarea poziției și orientării robotului pe teren, planificarea unei traiectorii optime de mișcare.
În cazul unui sistem robotic automat distribuit pozițiile spațiale sunt foarte importante deoarece de ele depinde îndeplinirea scopurilor dorite și funcționarea întregului sistem. Cu alte cuvinte, robotul trebuie să fie capabil să-și planifice mișcările, să decidă în mod automat ce mișcări să execute pentru a îndeplini o sarcină, în funcție de aranjamentul momentan al obiectelor din spațiul de lucru.
Ordonarea mișcărilor nu constă dintr-o problemă unică și bine determinată, ci dintr-un ansamblu de probleme dintre care unele sunt mai mult sau mai puțin variante ale celorlalte.
Evitare impactului cu obstacole fixe sau mobile (de exemplu alți roboți mobili) aflate în spațiul de lucru al robotului se face prin mai multe metode:realizarea unei apărători mecanice care prin deformare oprește robotul, folosirea senzorilor care măsoară distanța până la obstacolele de pe direcția de deplasare, folosirea senzorilor de proximitate, folosirea informațiilor corelate de la mai multe tipuri de senzori.
Localizarea obiectelor se poate face și prin contact fizic, dar acesta impune restricții asupra vitezei de mișcare a structurii manipulate. Contactul fizic dintre robot și obiectele din mediu generează forțe de reacțiune care modifică starea robotului. Vitezele mari de lucru fac ca efectele dinamice ale unui contact fizic cu obstacole sau obiecte manipulate să fie riscante (pot duce la deteriorarea obiectelor sau a robotului).
Navigarea robotului este posibilă și fără o determinare a poziției și orientării față de un sistem de coordonate fix, dar această informație este utilă pentru sisteme de comandă a mișcării. Dintre metodele de navigație mai des utilizate se pot menționa: măsurarea numărului de rotații făcute de roțile motoare, folosirea de acceleratoare și giroscoape, geamanduri electromagnetice instalate în teren, semnalizatoare pasive sau semipasive de tip optic sau magnetic.
1.1.2. Caracteristici ale roboților mobili
Printre caracterististicile roboților mobili se numară:
structura mecanică este un lanț cinematic serie sau paralel respectiv tip “master-slave”;
sistemul de acționare utilizat este electric pentru sarcini mici și medii și hidraulic pentru sarcini mari;
sistemul senzorial utilizează senzori interni (de turație, poziție, efort) la nivelul articulațiilor, senzori externi(camere TV) pentru scanarea mediului și senzori de securitate(de proximitate, de prezență cu ultrasunete);
sistemul de comandă este ierarhizat, de obicei multiprocesor;
limbajele de programare utilizate sunt preluate de la roboții staționari.
1.1.3. Clasificarea roboților mobili
Roboții mobili se pot clasifica astfel:
După dimensiuni: macro, micro și nano-roboți.
În funcție de mediul în care acționează: roboți tereștri – se deplasează pe sol, roboți subacvatici – în apă, roboți zburători – în aer, roboți extratereștri – pe solul altor planete sau în spațiul cosmic;
În funcție de sistemul care le permite deplasarea în mediul în care acționează există de exemplu pentru deplasarea pe sol
roboți pe roți sau șenile
Fig.1.1. Roboți mobili pe șenile
2.roboți pășitori: bipezi, patrupezi, hexapozi, miriapozi;
Fig.1.2. Roboți mobili pășitori
3.roboți târâtori: care imită mișcarea unui șarpe, care imită mișcarea unei râme etc.;
Fig.1.3. Roboți târâtori
4.roboți săritori, care imită deplasarea broaștelor, cangurilor etc.;
Fig.1.4. Roboți săritori
5.roboți de formă sferică (se deplasează prin rostogolire) etc.
1.1.4. Utilizări ale roboților mobili.
Utilizările pentru care au fost, sunt și vor fi concepuți roboții mobili sunt dintre cele mai diverse. Mulți roboți din zona micro își găsesc utilizarea în medicină, fiind capabili să se deplaseze de-a lungul vaselor și tuburilor corpului omenesc, în scopul investigațiilor, intervențiilor chirurgicale, dozării și distribuirii de medicamente etc. La fel de spectaculoase sunt și multe utilizări ale macro-roboților:
În domeniul industrial, agricol, forestier: în domeniul industrial roboții mobili sunt reprezentați de AGV-uri (Automated-Guided Vehicles), vehicule pe roți, cu ghidare automată, care transportă și manipulează piese, constituind o alternativă flexibilă la benzile de montaj; în agricultură există tractoare și mașini agricole fără pilot, capabile să execute singure lucrările pe suprafețele pentru care au fost programate; în domeniul forestier roboții mobili pot escalada copacii înalți
Fig.1.5. Roboti mobili utilizati in domeniul industrial
În domeniul militar: este luată în considerare de către armata americană perspective înlocuirii soldaților combatanți cu roboți, pentru a reduce riscul pierderilor umane în luptă; roboți mobili de cele mai ingenioase și robuste configurații sunt aruncați în clădiri și incinte din zone de conflict, în scopuri de investigare și chiar anihilare a inamicului; Armata Statelor Unite face uz de două tipuri majore de vehicule de teren semi-autonome și autonome: vehiculele de dimensiuni mari , cum ar fi tancuri, camioane și HUMVEE-uri și vehicule mici, care pot fi transportate de către un soldat într-un rucsac.(packbot) și se deplasează prin mers ca tancurile mici. PackBot-ul este echipat cu camere și echipamente de comunicații și poate include manipulatoare (brațe); este proiectat pentru a găsi și a detona explozivele improvizate salvând astfel vieți (atât civili cât și militari), precum și pentru a efectua recunoaștere. Dimensiunile sale mici îi permit să intre clădiri, să raporteze ocupanții posibili, și să declanșeze capcane. Vehiculele robot armate tipice sunt (1) Talon SWORDS (Special Weapons Observation Reconnaissance Detection System) făcute de Foster Miller, care pot fi echipate cu mitraliere, lansatoare de grenade sau lansatoare de rachete anti tanc, precum și camere și alți senzori și noul MAARS (Modular Advanced Armed Robotic System). În timp ce vehicule cum ar fi SWORDS și MAARS sunt capabile sa navigheze autonom către obiectivele specifice prin sistem global de poziționare (GPS), în prezent declanșarea oricărei arme aflate la bord se face de către un soldat situat la o distanță sigură. MAARS folosește o mitralieră mai puternică decât originalul SWORDS. Deși inițial SWORDS cântărește aproximativ 150 kg., MAARS cântărește aproximativ 350 kg. Acesta este echipat cu un manipulator nou capabil să ridice 100 livre, permițându-i astfel să-și înlocuiască arma platformei cu o unitate de identificare și neutralizare IED( Improvised explosive device).
b)
Fig. 1.6. Vehicule terestre militare : a) Packbot b) SWORDS
PACKBOT-urile sunt unități mici om portabile controlate de un procesor Pentium care a fost special conceput pentru a rezista la tratamentul dur, șasiu PACKBOT are un sistem GPS, o busolă electronică și senzori de temperatură construit in IRobot producătorul PACKBOT, spune despre ei ca se pot deplasa cu mai mult de 13 km / h, pot fi instalați în câteva minute și poate rezista la o cădere de 1,8 metri pe beton, echivalentul a 400 grame-forță a lui. Soldații americani profită de această robustețe, PACKBOT sunt aruncati,prin ferestrele clădirilor dușmanilor și apoi utilizați pentru a căuta și găsi unde combatanți inamici se ascund. Chiar dacă terenurile sunt denivelate, PACKBOT cu ajutorul brațelor puternice pot trece peste obstacole mari și la urcarea treptelor.
În domeniul distractiv și recreativ: sunt roboții-jucării, roboții pentru competiții
În domeniul serviciilor: Există posibilități deosebit de largi de implementare. Sunt roboți pentru: deservirea bolnavilor în spitale; ajutorarea persoanelor bătrâne sau cu diferite handicapuri; ghidarea și informarea publicului în muzee aspirarea și curățirea încăperilor; spălarea geamurilor și a pereților clădirilor;
1.1.5. Proiecte anterioare în domeniul temei
Lucrarea de față nu își propune să abordeze toate tipurile de roboți mobili. Acest lucru nu numai că nu ar fi posibil datorită volumului extrem de documentație necesar, dar datorită evoluției pe scara largă a fenomenului, chiar dacă s-ar realiza acest lucru, lucrarea ar fi depășită în câteva luni de zile. De aceea, se vor prezenta câteva exemple de roboți mobili, special alese pentru a sublinia extraordinara lor importanță în secolul al XXI-lea. Se va insista, deci, asupra unui singur tip de roboți mobili, și anume roboții mobili care urmaresc o anumita traiectorie.
Fig.1.7. Minirobot AIRAT 2.
AIRAT 2 este un robot micromouse care folosește un procesor CPU 8051.AIRAT 2 folosește senzori pentru a o recepta când se întoarce înapoi. Placa CPU folosește o placă JS8051-A2. Placa JS8051-A2 este foarte bine construită. Folosește resurse externe de putere cum ar fii LCD, ADC, douǎ ceasuri externe, auto-Flash scriere și altele.
AIRAT 2 utilizeaza șase senzori oferindu-i astfel posibilitatea de a se deplasa pe diagonală. Un simulator PC este prevăzut, oferindu-i posibilitatea utilizatorului de a înțelege mai bine nivelul înalt de căutare algoritmică a mouse-ului. Codul sursa C este implementat astfel încat programatorul poate dezvolta mai ușor algoritmi care pot fi testați cu ajutorul unui simulator și apoi implementat mouseului.
În plus,LCD,comunicație seriala,controlul mouse-ului precum și alte funcții sunt furnizate sub forma de librărie și fișiere sursă. Pentru cei ce vor sa învețe mouse-ul la un nivel înalt,AIRAT2 furnizează un mediu excelent de dezvoltare,teste algoritmice,precum și multe altele.
AIRAT 2 a apărut pe coperta publicației franceze MICROS&ROBOTS.
CARACTERISTICI AIRAT 2
Capabil de reglare proprie, învață din mers.
Folosește 6 senzori dîndu-i posibilitatea de a se deplasa pe diagonala.
Ușor de asamblat/dezasamblat.
Port de reîncarcare.
Instrucțiuni de asamblare și manual al utilizatorului.
Include un simulator PC pentru accelerarea dezvoltării.
Librării,coduri sursă C.
AIRAT2 baterie(NiMh-450) Descriere.
Fig.1.8. Minirobot AIRAT 2
Alte proiecte:
Fig.1.9. Miniroboți “Line Follower”
1.2 Scopul lucrării
Scopul acestui proiect este de a concepe, executa și pune în aplicare un robot cu acționare diferențială dotat cu senzori de linie analogici si senzori de distanță , controlat de un driver de motor care comandă cele 2 motoare de current continuu, avand ca sarcină principală urmărirea unei linii de culoare neagră și evitarea obstacolelor, pe un fundal alb.
CAPITOLUL II
2.1 Modelul experimental
Scopul de bază este de a realiza un robot care urmăreste o anumită traiectorie, folosind senzori de linie care cuprind un LED IR și un fotorezistor sensibil la IR , astfel încat robotul să se deplaseze pe această traiectorie de culoare neagră, aflată pe un fundal alb.
Începerea execuției robotului am realizat-o prin asamblarea componententelor acestuia dupa cum urmează: Am început cu placa suport , pe care am montat sistemul de acționare format din motoarele de curent continuu , precum și elementele de fixare ale acestora, urmând apoi atașarea platformei de procesare ARDUINO UNO V3 a plăcii SHIELD driver de motoare L298 versiunea 2 și a sistemului senzorial format din senzorii de linie și senzorul de distanță SHARP.
Senzorii de linie sunt montați pe o placă suport și se află în partea din față a robotului,iar în partea din spate este montată și roata castor, în așa fel încât senzorii de linie să se afle la o anumită distantă deasupra podelei(3mm distanță optimă).
Fig.2.1. Parțile componente pentru realizarea șasiului
Parțile componente pentru realizarea șasiului:
– doua motoare cu cutie de viteze
– doua roți din cauciuc
– un șasiu din plexiglas
– o roată mobilă cu distanțiere și șuruburi de prindere
– 2 elemente de prindere pentru motoare
– 4 șuruburi M3 x 30 mm (pentru fixarea motoarelor pe suporți)
– 6 șuruburi M3 x 30 mm (4 pentru fixarea suporților de motor pe placa de plexyglass)
– 12 piulițe M3
– 2 distanțiere șurub-piulița (pentru fixare placii Arduino)
Fig.2.2 a. Montarea motoarelor pe suporturi
Fig.2.3 Montarea motoarelor pe suporturi
Fig.2.4 Montarea celor 2 roți și a roții castor
Fig.2.5. Montarea celor 2 roți și a roții castor
Fig.2.6. Dimensiunuile platfotmei
Fig.2.7. Atașarea suportului de baterii și a bateriilor
Fig.2.8 Atașarea platformei de procesare ARDUINO UNO V3 și a placii shield
Fig.2.9a. Atașarea sistemului senzorial-sezori linie
Fig.2.9b. Atașarea sistemului sensorial-senzor obstacole
2.2 Principiul de funcționare
Robotul “de tip line follower” are o sarcină simplă și anume urmărirea unei traiectorii, la acest tip de robot se mai adaugă și sarcina de a detecta anumite obstacole cu ajutorului senzorului de prezentă. Sarcinile acestuia pot fi descrise prin urmarirea unei linii de culoare neagră pe fundal alb si evitarea coleziuni cu anumite obstacole.
Robotul “de tip line follower “ folosește acționare diferențială, ultilizând două motoare independente montate pe poziții fixe pe partea dreaptă și stângă a șasiului robotului. Astfel încetinirea vitezei de rotație a motorului din stânga va face robotul să se întoarca spre stânga, iar încetinirea vitezei de rotație a motorului din dreapta va face robotul să se intoarcă spre dreapta.
Fig.2.2.1 Parțile care intră in componenta robotului
Dacă cele două motoare se rotesc cu aceeași viteză, robotul se va îndrepta înainte, așa cum este specificat în figura de mai jos. Pentru a se deplasa spre stânga, roata din stânga se va roti cu o viteza mai mică față de cea din dreapta, iar pentru a se deplasa spre dreapta roata din dreapta se va roti cu o viteza mai mică față de cea din stânga. Astfel, curbând spre dreapta și spre stânga, sau mergând înainte, robotul poate urmări ușor linia neagră.
Fig.2.2.2 Tipuri diferite de deplasare a robotului
2.2.1 Principiul de funcționare
Pentru realizarea sarcinilor propuse: urmărirea unei linii de culoare neagră pe un fundal alb și evitarea coleziuni cu anumite obstacole am realizat:
Asamblarea părților componente descrise în imaginile precedente, lipirea firelor pentru conectarea motoarelor și a beretelor pentru cei doi senzori folosind lecton si fludor, dar si cei 6 conectorii(5V si GND) care fac parte din placa driverului de motoare L298N.
Ca prim pas placa Arduino este capabilă să scoată pe porturile lui o putere foarte mică, total insuficientă pentru a învârti un motor. Dacă vom conectat un motor electric direct la un port Arduino, cel mai probabil vom obține arderea procesorului din placa Arduino. Pentru a evita acest lucru , am adăugat un amplificator de putere, care să preia putere din sursa de alimentare (baterie, de exemplu), și să o transmită motoarelor asa cum îi comandă Arduino. Acest amplificator fiind driverul de motoare L298.
Ca și diversitate există mai multe tipuri de drivere de motoare, diferența majoră între acestea fiind cât de multă putere pot conduce (cât de puternice pot fi motoarele pe care le pot controla). Driver-ul pe care l-am folosit pentru acest proiect este bazat pe integratul L298, fiind un driver de nivel mediu din punct de vedere al puterii conduse. Poate controla motoare care necesită cel mult 2 Amperi, motoare a căror putere este suficientă pentru greutatea și dificultatea la care va fi supus robotul.
Printre avantajele pe care le oferă folosirea driverul de motoare se numară dupa cum descris mai sus alimentarea senzorilor (5V) direct din shield, folosind cei 6 conectori care oferă conexiune directă la 5V și cei 6 conectori care oferă conexiune directă la GND.
–
Fig.2.2.1 Shield driver motoare(cele 6 conecțiuni 5V si GND)
2.2.2 Limbajul de programare
Ca și limbaj de programare am folosit un soft de la Arduino care este asemanator limajului C. In ceea ce privește algoritmul de funcționare al robotului avem urmatoarele componente:
#define este o componentă C , utilă , care permite programatorului sa dea un nume la valoarea unei constante înainte ca programul sa fie compilat. Constantele definite în Arduino nu ocupă nici un spațiu de memorie pe chip. Copilatorul va inlocui referintele acelor constante cu valoarea definită in momentul compilării.
Void setup() este o functie atunci cand incepe o schita. Se utilizeaza pentru a inițializa variabile, moduri de pini, utilizari de biblioteci, etc. Funcția de configurare va rula doar o singură dată, după fiecare PowerUp sau reset al plăcii Arduino.
pinMode() configureaza PIN – ul specificat să se comporte , fie ca o intrare sau o ieșire.
Serialbegin() Setează rata de date în biți pe secundă (baud) pentru transmisia de date seriale. Pentru comunicarea cu computerul, se utilizează una dintre aceste rate: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, sau 115200..
analogRead() Citește valoarea de pe pin-ul analogic specificat. Placa Arduino conține 6 canale (8 canale pe Mini și Nano, 16 pe Mega), 10 biți la un convertor analog/digital. Acest lucru înseamnă că va arata tensiuni de intrare între 0 și 5 volți în valori întregi între 0 și 1023. Aceasta conduce la o rezoluție între citiri: 5 volți / 1024 unități sau, .0049 volți (4,9 mV) pe unitate. Intervalul de intrare și rezoluția poate fi schimbată folosind analogReference ().Este nevoie de aproximativ 100 de microsecunde (0,0001 s) pentru a citi o intrare analogică, astfel încât rata maximă de citire este de aproximativ 10.000 de ori pe secundă.
analogWrite() Scrie o valoare analogică (val PWM) la un pin. Poate fi folosită pentru a aprinde un LED la diferite intensitati sau sa controleze un motor la viteze diferite. După un apel la analogWrite () , PIN – ul va genera un val pătrat al ciclului de funcționare specificat până la următorul apel la analogWrite () (sau un apel la digitalRead () sau digitalWrite () pe același PIN). Frecvența semnalului PWM pe majoritatea pinilor este de aproximativ 490 Hz. Pe plăci Uno și similare, pinii 5 și 6 au o frecvență de aproximativ 980 Hz. Pinii 3 și 11 pe Leonardo , de asemenea , pot rula la 980 Hz.
2.2.3 Codul folosit pentru programarea robotului
#define SENZOR_OBSTACOL 7
#define SENZOR_LINIE0 A0
#define SENZOR_LINIE1 A1
#define PRAG 100
#define SPEED 140
int MOTOR2_PIN1 = 3;
int MOTOR2_PIN2 = 5;
int MOTOR1_PIN1 = 6;
int MOTOR1_PIN2 = 9;
void setup() {
pinMode(MOTOR1_PIN1, OUTPUT);
pinMode(MOTOR1_PIN2, OUTPUT);
pinMode(MOTOR2_PIN1, OUTPUT);
pinMode(MOTOR2_PIN2, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorRightValue = analogRead(SENZOR_LINIE0);
int sensorLeftValue = analogRead(SENZOR_LINIE1);
Serial.print(" SENZOR 1: ");
Serial.print(sensorRightValue);
Serial.print(" SENZOR 2: ");
Serial.println(sensorLeftValue);
int senzorObstacol = digitalRead(SENZOR_OBSTACOL);
Serial.print(" SENZOR OBSTACOL: ");
Serial.println(senzorObstacol);
delay(1);
//left – right
if (senzorObstacol == 0) {
//go(-SPEED, -SPEED);
//delay(1000);
go(-SPEED, SPEED);
delay(2500);
}
if (sensorLeftValue <= PRAG && sensorRightValue <= PRAG) {
go(SPEED, SPEED);
}
if (sensorLeftValue >= PRAG && sensorRightValue <= PRAG) {
go(0, 0);
delay(50);
go(SPEED, -SPEED);
delay(100);
}
if (sensorLeftValue <= PRAG && sensorRightValue >= PRAG) {
go(0, 0);
delay(50);
go(-SPEED, SPEED);
delay(100);
}
if (sensorLeftValue >= PRAG && sensorRightValue >= PRAG) {
// go(-SPEED, -SPEED);
//delay(1000);
go(-SPEED, SPEED);
delay(2500);
}
}
void go(int speedLeft, int speedRight) {
if (speedLeft > 0) {
analogWrite(MOTOR1_PIN1, speedLeft);
analogWrite(MOTOR1_PIN2, 0);
}
else {
analogWrite(MOTOR1_PIN1, 0);
analogWrite(MOTOR1_PIN2, -speedLeft);
}
if (speedRight > 0) {
analogWrite(MOTOR2_PIN1, speedRight);
analogWrite(MOTOR2_PIN2, 0);
} else {
analogWrite(MOTOR2_PIN1, 0);
analogWrite(MOTOR2_PIN2, -speedRight);
}
}
CAPITOLUL III
3.1 Modelul cinematic al robotului
În cadrul acestei analize,considerăm robotul ca un corp rigid cu roți, deplasându-se pe un teren plat. Sunt necesari 3 parametri pentru a poziționa corpul robotului în planul respectiv: doi pentru a determina poziția acestuia în raport cu originea sistemului de axe atașat planului, iar al treilea pentru determinarea orientării acestui corp în raport cu axa verticală, perpendiculară pe plan. Există mișcări suplimentare datorate rotației roților în jurul axelor proprii, respective cuplelor cinematice de orientare. Prin corpul robotului înțelegem doar corpul rigid al acestuia, ignorând cuplele cinematice dintre acest corp și roți.
Un vehicul aflat pe un teren plat are 3 grade de libertate: 2(x,z), ce descriu poziția, și unul referitor la orientarea θ(rotația în jurul axei verticale). În general, roboții mobili nu au control complet independent al celor 3 parametrii ce definesc situația lui și trebuie să efectueze manevre complexe pentru a atinge o anumită situare.
Unele vehicule au roți suplimentare sau puncte de contact, cu rolul de suport dar fără a contribui la orientare sau propulsie. Cunoscute ca roți pasive(ex roți de tip castor), acestea sunt de obicei ignorate în modelarea cinematică a unui robot mobil.
3.2 Model cinematic al robotului cu acționare diferențială
Pentru a specifica situarea instantanee a robotului în mediul în care se deplasează, stabilim o relație de legătură între sistemul de referință f și sistemul de axe curent,atașat corpului robotului.
Planului i se atașează sistemul de referință fix X000Y0.
Corpului robotului i se atașează sistemul de axe XRORYR, în punctul P
Corespunzător poziției inițiale a robotului, se consideră notația XR0OR0YR0
Fig.3.2.1. Model cinematic robot cu 2 roți
Coordonatele punctului P, determinate în raport cu originea O0 a sistemului de referință, scrise sub formă matriceală sunt:
(1)
x0, y0, θ0 sunt parametrii ce exprimă poziția și orientarea corpului robotului în raport cu sistemul de referință;
xR0, yR0, θR0 sunt parametrii ce exprimă poziția și orientarea corpului robotului în raport cu sistemul de axe atașat acestuia, sistemul corespunzător poziției inițiale
x, y, θ sunt parametrii ce exprimă poziția și orientarea poziției inițiale a corpului robotului (poziției inițiale a sistemului de axe atașat corpului) în raport cu sistemul de axe de referință.
Robotul care face obiectul lucrării este un robot cu acționare diferențială. Acest tip de acționare este una dintre cele mai simple soluții de roboți mobili cu roți. Robotul are 2 roți convenționale fixe, atașate pe șasiu. Utilizarea de viteze unghiulare diferite pentru cele 2 roți conduce la schimbarea direcției de mers.
(2)
Fig.3.2. Deplasarea robotului.
Cunoscând vitezele/pozițiile roților se cere viteza/poziția robotului.
Se cunosc: v1=ω1r ; v2=ω2r
Fig.3.3. Reprezentarea vitezelor unghiulare a 2 roți.
unde r=raza roților și ω1, ω2= vitezele lor unghiulare
Pentru efectuarea analizei, se va proceda în felul următor:
Se specifică mărimile necesare efectuării calculului(dimensiuni ale robotului, unghiul de orientare al robotului,θ)
Se determină punctul în jurul caruia se rotește robotul (centrul instantaneu de rotație), respectiv raza traiectoriei descrise de robot.
Se detrmină viteza unghiulară a robotului.
Se integrează relația obținută, pentru a obține poziția robotului.
3.3 Determinarea C.I.R.
1. Determinarea mărimilor necesare efectuării calculului (dimensiuni ale robotului; unghiul de orientare al robotului).
2. Se atașează robotului un sistem de axe și se măsoară unghiul de rotație al sistemului curent în raport cu sistemul inițial de referință.
Centrul instantaneu de rotație este la intersecția axelor roților pentru cele 2 poziții.
Punctul de contact al fiecărei roți trebuie să se rotească cu aceași viteză unghiulară Ω în jurul centrului instantaneu de rotație.
Fig.3.3.1 Determinarea C.I.R
3. Determinarea vitezei unghiulare, Ω, a robotului:
v1=ω1r=Ω(R+L/2)
v2=ω2R=Ω(R-L/2)
Rezultă:
Ω=(v1-v2)/L
R=L(v1+v2)/(v1-v2)
Pentru traiectoria rectilinie:
v1=v2 Ω=0 și R=
Fig.3.3.2. Traiectoria rectilinie.
Pentru traiectorie circulară cu raza R- relațiile sunt cele prezentate anterior.
Se determină experimental că:
L=10 cm
v1=0.5m/s și v2=0.3 m/sΩ=2 rad/s2 și R=16 cm
Pentru pivotarea în jurul roții
v1=v2Ω=0
R=
Fig.3.3.3. Pivotarea în jurul roții 2
Pentru pivotare( rotație în jurul axei verticale centrale)
v2=-v1=>Ω=2v1/L=-2v2/L
R=0
v1=ω1r=Ω(R+L/2)
v2=ω2r=Ω(R-L/2)
Rezultă:
Ω=(v1-v2)/L
R=L(v1+v2)/(v1-v2)
Viteza liniară a robotului este:
v=ΩR=(v1+v2)/2=0.4 m/s
Fig.3.3.4. Pivotarea în jurul axei verticale
Integrarea ultimei ecuații pentru obținerea poziției robotului:
dx=vx(t)dt; dy=vy(t)dt; dθ=Ω(t)dt; vx(t)=v(t)cos(θ(t));
Fig.3.3.5. Deplasarea robotului.
vy(t)=v(t)sin(θ(t));
Prin integrare se obține
x(t)=dt+x0;
y(t)=dt+y0;
θ(t)=dt+x0;
Ω=(v1-v2)/L
R=L(v1+v2)/(v1-v2)
v=ΩR=(v1+v2)/2
Ecuațiile cinematicii directe se scriu sub formă matriceală în raport cu sistemul de referință:
= (3)
= (4)
Contribuția roții 1 la viteza robotului este:
vx1=(ω1r)/2=0.25 m/s
vy1=0
Fig.3.3.6. Contribuția roții 1 la deplasarea robotului
Ω1=(ω1 r)/L=5 rad/s
Contribuția roții 2 la viteza robotului
vx2=(ω2r)/2=0.15 m/s
vy2=0
Ω2= (ω2 r)/L=-1 rad/s
Fig.3.3.7. Contribuția roții 2 la deplasarea robotului.
Ecuațiile cinematicii directe scrise în raport cu sistemul de axe atașat robotului sunt:
vx((t)=vx1+vx2=0.4 m/s
vy((t)=vy1+vy2
Ω(t)=Ω1+Ω2
Se face ipoteza că roțile nu pot aluneca lateral => componenta după axa y este 0.Dacă robotul descrie o traiectorie circulară cu raza R, lungimea arcului descris de acesta este:
AR=(A1-A2)/2
– unde:
A1=(R+L/2)θ; A2=(RL/2)θ
Fig.3.3.8. Traiectoria circulară a robotului
Lungimea cercului descris de punctul de contact al roții 1 este dată de relația
C1=2)
θ=A1/(R+L/2)
Similar pentru roata 2
C2=2)
Fig.3.3.9a. Reprezentare a 2 roți.
De unde rezultă:
RA2/θ
Înlocuind această relație în
θ=A1/(R+L/2)
Prin înlocuire se obține:
θ=(A1A2)/L
De aici se deduce următoarele concluzii:
orientarea θ a robotului este complet independentă de raza traiectoriei descrise de acesta
Dimensiunea L este o sursă de erori din cauza uzurii și complianței pneurilor
Lungimea traiectoriei descrise de punctul de contact al roții poate fi calculată cu relația:
A1=(2∙∙N1∙Ref 1)/T1
N1=impulsurile numărate de traductorul de poziție al roții 1
T1=numărul de impulsuri pe o rotație a roții 1
Ref1=raza efectivă a roții 1
Similar pentru roata 2
A2=(2∙∙N2∙Ref 2)/T2
Pentru a se deplasa după o traiectorie rectilinie ,robotul va păstra N1=N2, dar dacă cele 2 pneuri au presiuni diferite ,razele lor vor fi diferite.
Fig.3.3.9b. Deplasarea unei roți peste un obstacol.
Considerăm o roată teoretică, rigidă(necompliantă), având raza R și presupunem
că aceasta trebuie să treacă peste un obstacol cu înălțime h.
Roata se va deplasa pe suprafața C până când întâlnește obstacolul N1=N2
Distanța percepută de traductor ca fiind parcursă de roată este Am
Distanța reală parcursă este Ah. Eroarea de poziționare unghiulară a robotului va fii:
Δθ = 2(Am-Ah)
Fig.3.3.9c. Deplasarea unei roți rigide peste un obstacol
Atunci când roata traversează o groapă aflată în terenul în care se deplasează,obstacolele și gropile în teren produc erori privind determinarea corectă a poziției robotului. Erorile sunt cauzate și de alunecarea roților ca urmare a existenței unor pete de unsoare pe suprafața respectivă, de impactul cu obstacole sau de accelerarea și decelerarea excesivă sau de impactul cu obstacole.
3.4 Corectia diametrului roții
Fiind dată o linie dreaptă ca și cale de referință, mișcarea unui robot mobil cu diametrele roților inegale este prezentată în figura 3.4.1.
Fig.3.4.1. Miscarea unui robot mobil cu diametrele rotilor inegale
În fig. 3.4.1 α si ρ sunt unghiul curburii și respectiv un arc de rază si sunt valorile de deviere de la axa y. Unghiul curburii poate fi exprimat de catre distanța parcursă de ambele roți
(1)
unde – este distanța dintre roți masurată și Δ este distanța parcursă de roata stânga și respectiv cea dreapta. Distanțele parcurse de către roata stânga și cea dreapta sunt:
(2)
unde este numărul de impulsuri din timpul mișcării. Deplasarea liniară a roții pe impuls de la un codificator β este
(3)
unde b reprezintă raportul de transmisie și Γ rezoluția codificatorului. Din cauză că numărul de impulsuri al roții din stânga în timpul mișcării este același ca cel al roții din dreapta , unghiul curburii poate fi exprimat dupa cum urmează:
(4)
unde si sunt diametrele masurate ale roțiilor din stânga și din dreapta. Definim greutatea roții relative după cum urmează:
(5)
De la 4 si 5 , greutatea roții relative poate fi exprimată după cum urmează:
(6)
Din ecuația 5 diametrul roții din dreapta poate fi exprimat ca valoare relativă la roata stânga.
(7)
si reprezintă diametrele roții relative din stânga și din dreapta . Din 6 și 7 , dacă robotul se întoarce la dreapta (stânga) , diametrul roții din dreapta poate fi exprimat ca fiind mai mic (mai mare) decât roata stângă. Această corecție relativă a diametrelor roții poate face ca robotul mobil să se miște de-a lungul unei linii drepte. Un robot ar putea să nu ajungă în locația dorită din cauză că diametrul roții în 7 nu este actual. De aceea, trebuie sa obținem diametrele roții actuale. Distanța lr , parcursă de roata relativă și distanța lt, parcursă de roata actuala sunt:
(8)
(9)
unde si sunt diametrele rotilor actuale din stânga și din dreapta. Eroarea de poziție este definită după cum urmează:
(10)
Definim greutatea roții absolută după cum urmează:
(11)
Din (8)-(11), greutatea rotii absolute poate fi exprimată după cum urmează:
(12)
Din (7) si (11) putem ști că diametrul roții absolute este relativ la diametrul roții relative.
(13)
(14)
3.5 Corecția distanței dintre roți
Dacă distanța dintre roți nu este aceeași ca valoarea masurată , robotul va sfarși prin a se roti mai puțin sau mai mult decât valoarea dorită. Când robotul mobil este făcut să întoarcă la 90°, o mișcare a robotului cu o distanță dintre roți nepotrivită este prezentată în figura de mai jos.
Fig.3.5.1. Rotația unui robot mobil cu roți
Valoarea rotației în timpul mișcării , δ este :
(15)
unde la este distanța dintre roți efectivă actuală. Numărul de impulsuri în timpul rotației poate exprima valoarea totală a rotației.
(16)
din (15) si (16) distanța actuală dintre roți este:
(17)
CAPITOLUL IV
4.1 Sistemul de comandă al robotului
4.1.1 Placa de procesare ARDUINO UNO R3
Fig.4.1.1. Planul general al plăcii microcontrolerului.
Sistemul de acționare al robotului este alcătuit din motoarele de curent continuu 120:1 cu ajutorul căruia se realizează deplasarea precum și driverul de motor L298 care poate comanda 2 motoare de curent continuu, curent maxim 2 amperi , complet asamblat sub forma unui shield Arduino, facilitând astfel utilizarea simplă, si un procesor ARDUINO UNO R3 cu care se realizează controlul motoarelor. Pentru detectarea liniei de culoare neagră am folosit 2 senzori de linie analogi tip QTR-1A fiecare fiind format din două componente : un led IR si un fototranzistor sensibil la IR . Pentru a masura distanta pana la diverse obiecte înconjurătoare am utilizat senzorul de distantă Sharp care este o componenta ce poate fi utilizata împreună cu Arduino.
Fig.4.1.2. Diagrama bloc pentru urmarirea liniei
4.2 Arduino UNO
Arduino UNO este o platformă de procesare open-source, bazată pe software si hardware flexibil si simplu de folosit. Constă intr-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – in cea mai des întalnită variantă) construită in jurul unui procesor de semnal si este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, si alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris intr-un limbaj de programare care este foarte similar cu limbajul C++.
ARDUINO UNO este o placă de dezvoltare bazată pe microcontrolerul ATmega328 ARDUINO UNO are 14 de intrări digitale / pini de ieșire (din care 6 pot fi utilizate ca ieșiri PWM), 6 intrări analogice, un oscilator cu quart de 16 MHz, o conexiune USB, o mufa de alimentare, o mufa ICSP si un buton de resetare. ARDUINO UNO contine tot ceea ce este necesar pentru a sprijini microcontrolerul pentru ca acesta sa funcționeze; pur si simplu conectați la un computer printr-un cablu USB, alimentator AC-la-DC sau baterie pentru a începe.
ARDUINO UNO este diferit fata de plăcile precedente, in sensul ca nu folosește un chip driver FTDI USB-la-serial. In schimb, acesta are incorporat microcontrolerul Atmega8U2 programat ca un convertor USB-la-serial.
“UNO” înseamnă “unu” in limba italiana si este numit pentru a marca viitoarea lansare Arduino 1.0 IDE. Uno si versiunea 1.0 vor fi versiunile standard pentru marca Arduino.
Specificatii :
Microcontroler: ATmega328
Tensiune de lucru: 5V
Tensiune de intrare (recomandat): 7-12V
Tensiune de intrare (limita): 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
4.2.1 Alimentare
ARDUINO UNO poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de alimentare externă. Sursa de alimentare este selectata automat.
Alimentarea externa (non-USB) poate veni fie de la un adaptor AC-la-DC sau baterie. Adaptorul poate fi conectat printr-un conector de 2.1mm cu centru-pozitiv. Conectare de la o baterie poate fi realizată legând la GND si V’in capetele de la conectorii de alimentare.
Placa de dezvoltare poate opera pe o sursă externă de 6-20 volti. Dacă este alimentată la mai putin de 7V, există posibilitatea, ca pinul de 5V să furnizeze mai putin de cinci volti si placa să devină instabilă. Daca se alimentează cu mai mult de 12V, regulatorul de tensiune se poate supra-incălzi acest lucru ducând la deteriorarea placii. Intervalul de tensiune recomandat de catre producător este de 7-12 volti.
Pinii de tensiune si alimentarea sunt după cum urmează:
– V’in. Tensiune de intrare pe placa de dezvoltare atunci când este utilizată o sursă de alimentare externă (spre deosebire de 5 volti de la conexiunea USB sau alte surse de energie stabilizată). Puteti introduce tensiuni de alimentare prin intermediul acestui pin, sau, in cazul in care tensiunea de alimentare se face prin intermediul conectorului de alimentare externă, o puteti accesa prin acest pin.
– 5V. Regulator de tensiune utilizat pentru alimentarea microcontrolerului si a altor componente de pe placa de dezvoltare. Aceasta poate fi alimentat fie de la VIN printr-un regulator de pe placa de dezvoltare, fie furnizat de către USB sau de o altă sursă de tensiune de 5V.
– 3V3. O alimentare de 3.3 volti generată de catre regulatorul de tensiune de pe placă. Curentul maxim care îl furnizează este de 50 mA.
– GND. Pini de împământare.
4.2.3 Memoria
ATmega328 are 32 KB (cu 0,5 KB utilizate pentru bootloader). Ea are, de asemenea, 2 KB SRAM și 1 KB de EEPROM.
4.3 Driverul de motor L298N
Fig. 4.3.a. driverul de motor L298
Bazat pe circuitul L298, acest driver de motoare poate comanda 2 motoare de curent continuu, curent maxim 2 amperi. Driverul este complet asamblat sub forma unui shield Arduino, facilitând astfel utilizarea simplă.
Conectarea la Arduino se face cuplând placa shield peste placa Arduino si conectând pinii marcați VIN si GND la sursa de alimentare pentru motoare. Pinii PWM care controleaza driver-ul L298 sunt 3, 5, 6 și 9.
Cele doua motoare se conectează în pinii cu șurub marcați "MOTOR1" și "MOTOR2", iar alimentarea pentru motoare se conectează la pinii cu șurub marcați "VIN" si "GND".
Fig. 4.3.b. Placa shield si jumperul de alimentare
Fig 4.3.c. Conexiunea pinilor
Pentru a folosi o singură sursă de tensiune, putem cupla jumper-ul de culoare mov pe shield. In acest fel, tensiunea aplicată pe pinul cu șurub VIN ajunge direct prin jumper pe pinul VIN (mama) din placa Arduino. Putem oprii placa Arduino apoi prin deconectarea jumper-ului.
Integratul L298 este format din foarte multe tranzistoare conectate în cascadă. Pentru simplificare, am considerat doar patru tranzistoare, conectate ca mai jos.
In schema de mai jos este o punte H alcatuită din tranzistoare bipolare. Motorul este simbolizat cu M și diodele au rol de protecție. Dacă aplicăm tensiune pe punctele A,B,C,D conform tabelului de adevar, vom obține cele 4 situații. Dacă nu aplicăm nici o tensiune pe bazele tranzistoarelor atunci motorul ramâne în starea în care era înainte, adică nu se va roti. Punctele A,B,C,D se conectează la porturile platformei Arduino.
Fig.4.3.d. Punte H alcatuită din tranzistoare bipolar
4.3.1. Descrierea shield-ului
Pe shield sunt prezenți o serie de conectori:
1. 2 conectori cu șurub marcați cu MOTOR1 și MOTOR2 care permit conectarea celor 2 motoare de curent continuu.
2. 1 conector cu șurub marcat cu VIN și GND care permite conectarea sursei de alimentare externă pentru motoare. Totodată permite alimentarea placii Arduino (detaliat la punctul 5).
3. Pinii de comandă ai driverului sunt conectați prin shield la pinii 3, 5, 6 si 9 de pe platforma Arduino.
4. 2 barete de 6 pini, fiecare, marcate cu GND si 5V care permit alimentarea cu ușurință a senzorilor care acceptă 5V. Baretele sunt evidențiate în imaginea de mai jos. (Fig. 4.3.1a)
5. 1 jumper marcat cu culoarea MOV care conectează pinul VIN cu șurub la pinul VIN al placii Arduino. Jumper-ul este evidențiat în urmatoarea imagine. (Fig. 4.3.1b)
Fig. 4.3.1a Baretele de 5V si GND Fig. 4.3.1b Jumperul de alimentare
4.4 Motor cu reductor 120 : 1 ax ieșire D7 perpendicular
În general, sunt similare în construcție cu generatoarele de curent continuu. Ele pot, de fapt să fie descrise ca generatoare care „funcționează invers”. Când curentul trece prin rotorul unui motor, este generat un câmp magnetic care generează o forță electromagnetică, și ca rezultat rotorul se rotește. Acțiunea periilor colectoare și a plăcuțelor colectoare este exact aceeași ca la generator. Rotația rotorului induce un voltaj în bobinajul rotorului. Acest voltaj indus are sens opus voltajului exterior aplicat rotorului. În timp ce motorul se rotește mai rapid, voltajul rezultat este aproape egal cu cel indus. Curentul este mic, și viteza motorului va rămâne constantă atât timp cât asupra motorului nu acționează nici o sarcină, sau motorul nu efectuează alt lucru mecanic decât cel efectuat pentru învârtirea rotorului. Când asupra rotorului se aplică o sarcină, voltajul va fi redus și un curent mai mare va putea să treacă prin rotor. Astfel, motorul este capabil să primească mai mult curent de la sursa care îl alimentează, și astfel să efectueze mai mult lucru mecanic.
Deoarece viteza rotației controlează trecerea curentului prin rotor, mecanisme speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. Când rotorul se află în repaus, el, efectiv, nu are nici o rezistență, și dacă voltajul normal este aplicat, va trece un curent mare, ceea ce ar putea avaria periile colectoare sau motorul. Mijloacele obișnuite pentru prevenirea acestor accidente este folosirea în serie a unei rezistențe, la început, împreună cu rotorul, pentru a limita curentul până când motorul începe să dezvolte un curent suficient. Pe parcurs ce motorul prinde viteză, rezistența este redusă treptat, fie manual ori automat.
Viteza cu care un motor cu curent continuu funcționează, depinde de puterea câmpului magnetic care acționează asupra rotorului, cât și de curentul rotorului. Cu cât este mai puternic câmpul magnetic, cu atât este mai mică rata rotației necesare să creeze un curent secundar necesar pentru a contracara curentul aplicat. Din acest motiv viteza motoarelor cu curent continuu poate fi controlată prin variația câmpului curentului
Fig. 4.4.1. Motor de curent continuu 120:1
Acest motor de curent continuu cu perii, cu reductor 120 : 1, are un consum redus de curent si oferă putere si viteză comparabile cu un servomecanism. La o tensiune de 6 V, are la ieșire o turație in gol de 85 rpm si un cuplu maxim de 5.4 Kg-cm.
Fig.4.4.2. Dimensiunile motorului de curent continuu
Specificatii:
Tensiune nominala: 6 V
Reductor: 120:1
Turație fără sarcina @ 6V: 85 rpm
Curent fără sarcina @ 6V: 70 mA
Curent cu ax blocat @ 6V: 800 mA
Cuplu maxim @ 6V: 5.4 kg-cm
Dimensiuni: 64.4 x 22.3 x 21 mm
Diametru ax ieșire: 7 mm
Masa: 32 g
4.5. Sistemul senzorial
4.5.1.Numarul de senzori in cazul robotilor “line follower”
Explică despre faptul cum numărul de senzori poate afecta abilitatea robotului de a urmări o linie. Sunt reprezentate 3 metode cu privire la abilitatea de a folosi unul , 2 sau 3 senzori , pentru un robot mobil. Numărul de senzori va afecta modul de detectare a robotului. Numarul de senzori este cea mai importanta parte pentru a face cercetari , acest factor facând robotul să fie tot timpul pe linie sau nu.
Senzor (cautatorul de margine)
Fig.4.5.1. Cazul unui robot cu un singur senzor
In această figură este arătat un robot mobil care utilizează un singur senzor. Senzorul furnizează numai 2 semnale , peste linie si in afara ei. Din păcate , cateodată robotul va pierde linia.
Senzori
Fig.4.5.2. Cazul unui robot cu 2 senzori
Figura arată un robot cu 2 senzori. Robotul foloseste 2 motoare si fiecare senzor controlează fiecare motor. Va da 4 condiții, gasirea parții din dreapta a liniei , a parții din stânga liniei , gasește linia sau pierde linia și nu sunt folosți dacă senzorii sunt plasați la o distanță mai mică decât lațimea liniei. Este potrivit să adăugam un microcontroler ca controler pentru a controla motoarele și senzori. Va controla robotul astfel încat robotul nu va mai pierde linia.
Senzori
Fig.4.5.3. Cazul unui robot cu 3 senzori
Adaugând un al 3 lea senzor la metoda anterioară , robotul va recunoaste în afara liniei și marginile liniei. Robotul acum se va adapta mult mai ușor la schimbarea condițiilor cum ar fi curbele și se va aranja totdeauna pe linie.
Robotul va utiliza 4 fotorezistori dependenți de lumină, și patru LED-uri pentru iluminarea și detectare pistei. Cele 4 LED-uri vor ilumina suprafața pe care este desenată linia. Linia care ar trebui să fie urmărita este neagra, sau cel puțin este o diferență semnificativă între culoarea fundalului și culoarea liniei.
4.6. Senzorii de linie analogi QTR-1A
Citirea traiectoriei după care se deplasează robotul se face cu ajutorul senzorului analogic QRE1A format dintr-un led cu infraroșu si un fototranzistor sensibil la lumina infraroșie. Am folosit 2 astfel de senzori ce alcătuiesc sistemul senzorial al robotului .
Semnalele provenite de la senzori sunt trimise spre procesare Unitatii Centrale reprezentată de Platforma de dezvoltare Arduino Uno ce conține microcontroller-ul ATmega328 de la ATMEL.
Fig. 4.6.1 Senzor de linie QTR-1A
Senzorul este format din două componente : un led IR si un fototranzistor sensibil la IR . Cand aplicam 5V pe pinul VCC si GND led-ul IR va transmite o lumină infraroșie. In serie cu led-ul IR este plasată o rezistentă de 100Ohm pentru a limita curentul. O rezistență de 10kOhm pune pinul de output pe HIGHT, dar când lumina emisă de led-ul IR este reflectată înapoi în fotorezistor pinul de output coboară către LOW. Cu cât fototranzistorul primeste mai multă lumină cu atât scade tensiune pe pinul de output .
Specificații:
Tensiune de alimentare : 3.3V -5V
Curent : 25mA
Dimensiuni : 7.62 x 13.97 mm
Fig. 4.6.2 Conectarea senzorului de linie la placa ARDUINO
Fig.4.6.3. Schema cinematică a senzorului
Fig.4.6.4. Schema de conectare a senzorilor,motoarelor si alimentării
4.6.1 Senzorul infraroșu Sharp GP2Y0D810Z0F 10cm
Fig.4.6.1 Senzorul infraroșu Sharp GP2Y0D810Z0F
Un senzor special folosit pentru evitarea obstacolelor este senzorul infraroșu Sharp GP2Y0D810Z0F care prezintă urmatoarele caracteristici tehnice:
Folosește principiul de reflexie al luminii infraroșii pentru măsurarea distanței,
Raza de acțiune este intre 2 și 10 de cm.
Alimentarea se face la o tensiune de 2,7 până la 6,2 V și o intensitate de 33 mA.
Tensiunea de ieșire este cuprinsă în intervalul 0.4-2.4 V la o alimentare de 5 V.
Interfața sa prezintă 3 fire: alimentarea(Vcc), masa(GND) și tensiunea de ieșire(Vout).
Senzorul de distanta Sharp este o componenta care poate fi utilizată împreună cu Arduino pentru a măsura distanța până la diverse obiecte înconjurătoare.
Exista 3 tipuri de senzori, fiecare eficace pe o anumită zonă din punct de vedere al distanțelor măsurate : senzor de apropiere, eficient pentru măsurători între 3 cm si 40 de cm, senzor de depărtare medie, eficient între 10 cm si 80 cm, si senzor de depărtare, eficient între 15 cm si 150 cm.
Conectarea la Arduino este deosebit de simplă. Dispozitivul dispune de 3 pini, doi dintre ei fiind pini de alimentare (GND si VCC), iar cel de-al treilea fiind pinul care dă indicații asupra distantei, prin potențialul prezent pe acesta.
4.6.2.Modul de funcționare
Principiul care stă la baza acestei metode de măsurare folosite de senzorul Sharp se bazează pe formarea unui triunghi între Emițătorul de rază infraroșie, punctul de reflexie și detectorul de infraroșu. Astfel, emițătorul emite un puls de lumina infraroșie. Lumina străbate câmpul vizual și fie lovește un obstacol sau continuă deplasarea. În cazul inexistenței unui obstacol, lumina nu va fi reflectată și nu se va detecta nici un obiect. Dacă lumina se reflectă de pe un obiect, se va întoarce la detector și va creea un triunghi între emițător, punctul de reflexie și detector, ca în figura urmatoare:
Fig.4.6.2 Așezarea pinilor și curba caracteristicã
Prin conexiunea senzorului infraroșu cu convertizorul Analog/Digital rezultã datele analogice care sunt convertite în distanțe corecte cu ajutorul softului de programare. Astfel pentru o valoare de 307 corespunde o distanța de 8 cm.
R = (2933 / (V + 20)) – 1
R=distanța in cm.
V=datele anlogice din conversia analog/digitală.Intervalul este intre 0 și 1,023
Fig.4.6.3. Modul de funcționare al senzorului Sharp
Fig.4.6.4.Tabelul cu valori ale senzorului infraroșu
4.7 Principiul de navigare
Așa cum s-a descris mai devreme, robotul va utiliza un principiu simplu bazat pe senzori de linie analogi . Acest robot va urmări doar linia neagră pe o suprafata alba, se va întoarce atunci cand ambii senzori vor detecta linia neagră sau robotul va întânli un obstacol în fata sa. Aceste culori(alb/negru) au fost selectate pentru cel mai bun contrast și sunt folosite în toate competițiile de roboți care urmaresc o linie. Cele 2 LED-uri vor ilumina podeaua și fotorezistorii v-or reacționa cu privire la cantitatea de lumina reflectată. Dacă este reflectată mai multa lumina , acest lucru este atunci când senzorii sunt pe suprafată albă, deoarece o suprafată albă reflectă lumina albă, LDR-urile v-or reduce valoarea rezistenței lor și mai mult curent va curge la baza tranzistorului care operează fiecare motor. (Notă: LDR-urile ar trebui să fie amplasate în apropierea LED-urilor și capul lor ar trebui să fie coaxial. altfel LDR-urile nu v-or detecta suprafață cat este nevoie).
In cazul in care cele 2 leduri au detectat culoarea alba robotul se va deplasa înainte.
Fig.4.7.1. Detactarea liniei negre de catre senzori
Atunci când linia neagră este detectată de LED-ul din dreapta , cantitatea de lumina reflectată va fi mai mică decat cea de pe linia albă, astfel încât LDR-urile v-or crește valoarea rezistenței lor, si mai puțin curent va fi aplicat pe baza tranzistorului iar motorul va încetini facand robotul sa vireze spre dreapta .
Fig. 4.7.2. Detectarea liniei negre de catre senzorul din dreapta si virarea spre dreapta
Atunci când linia neagră este detectata de LED-ul din stânga, cantitatea de lumina reflectata va fi mai mică decat cea de pe linia alba, astfel încât LDR-urile v-or crește valoarea rezistenței lor, si mai puțin curent va fi aplicat pe baza tranzistorului iar motorul va încetini facând robotul să vireze spre stânga .
Fig.4.7.3. Detectarea liniei negre de catre senzorul din stânga si virarea spre stânga
Fig.4.7.4. Principiul de funcționare al LED –urilor si al fotorezistorilor
4.7.2 Mediul in care se desfasoara actiunea
.
Pentru realizarea mediului(traseului) in care se va desfasura actiunea am avut nevoie un carton de culoare alba in forma dreptunghiulara, banda izolatoare de culoare neagra si doua sipci pentru sustinera marginilor.
Scena se va petrece pe o suprafata plana conform treseului din figura de mai jos.
Fig. 4.7.2 Traseul robotului
Concluzii
Navigarea este importanta pentru multe aplicații imaginate ale robotilor mobili.
Denumirea de “line follower” în sine se refera clar la faptul că acesta este un robot care detecteaza sau urmează un traseu specific. Acest robot este un instrument excelent pentru extinderea imaginației unui student. Din acest proiect , putem concluziona că avem posibilitatea de a proiecta și construi un robot destinat urmaririi unei linii.
Robotul urmritor de linie este o platforma adaptabila, care permite dezvoltarea de diverse aplicații. Avand o structura moderna , putem modifica cu ușurință posibilitatea funcțiilor și sa adaugăm unele funcții noi cum ar fi de exemplu detectarea unor obstacole si ocolirea acestora.
In acesta lucrare am cercetat , proiectat si conceput un robot mobil cu actinoare diferentiala avand 2 motoare independente montate de o parte si de alta a sasiului robotului , si 4 senzori pentru indeplinirea unei singuri sarcini , aceea de a urmari o linie de culoare neagra pe un fundal alb.
In zilele noastre , o mare parte a robotilor “line follower” folosesc senzori infrarosii pentru culegerea informatiilor in timp ce in acest proiect am folosit senzori LDR pentru culegera informatiilor. Astfel, am dovedit in acest proiect ca senzorii LDR nu numai ca se aplica in dispozitivele de comutare ci se pot aplica si in cazul robotilor mobili.
Ca un avantaj al acestui robot este prețul redus și simplitatea de al construi, dar sunt si dezavantaje majore, cum ar fi viteza redusa și instabilitatea pe liniile de diferite grosimi.
Bibliografie
Mayur Agarwal , Prashant Agrawal , Krishna Nand Gupta , Hitesh Meghani – Line Follower Robot , Robotics Workshop Currents 15th march 2008EEE Department NIT Trichy
Park, Sungyong and Minor, Mark A. "Modeling and Dynamic Control of Compliant Framed Wheeled Modular Robots", Intemdonal Conhnnu on Robotics L Automation.,New Orloans. LA, 2004.
Ahmadreza Tarakameh, Khoshnam Shojaie – Modeling of a Differential Drive Wheeled Mobile Robot by Newton–Euler Method , Electronic Research Centre, Department of Electrical Engineering, Iran University of Science and Technology Tehran, IRAN
Robo-11 Interactive C robot kit Activity book
Jong-Woo Moon , Chong-kug Park , – Kinematic Correction of a Differential Drive Mobile Robot and a Design for Velocity Trajectory with Acceleration Constraints on Motor Controllers 1999
Muhamad Nor Hafiz B Moktarudin – Application Of LDR Sensor On Line Follower Robot , Faculty Of Electrical Teknikal Melaka 2008
Adarsh K. , Prashanth S. , Radha malini M.G. – Line Follower Robot Mechatronics Project
INTERNET:
http://www.ermicro.com/blog/?p=1097
http://documents.tips/documents/minirobot-mobil-cu-senzori-pentru-detectare-obstacole.html
http://invata.mecatronica.eu/tag/atmega328/
http://www.robofun.ro/forum/
http://ikalogic.com/tut_line_sens_algo.php
http://imtuoradea.ro/auo.fmte/ss_2010_files/TRANSISTOR%20BASED%20MOBILE%20LINE%20FOLLOWING%20ROBOT.pdf
http://kingkong.me.berkeley.edu/~adarsh/LFR.pdf
http://ro.wikipedia.org/wiki/LED
http://ikalogic.com/proj_mini_line_folower.php
http://www.richardvannoy.info/building-a-line-following-robot.pdf
http://ac.upg-ploiesti.ro/spc2009/spc_junior/cao_quoc_huy.pdf
http://www.mil.ufl.edu/5666/papers/IMDL_Report_Summer_05/dutka-paul/MILee.pdf
http://gilerpunada.blogspot.com/2009/09/line-following-mobile-robot-s2g3-part1.html
http://elf.cs.pub.ro/pm/wiki/prj2010/pgp/linefolcoldet
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: Robot de tip Line Follower [306087] (ID: 306087)
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.
