Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:vstoica:masinacughidajinteligent [2023/05/28 23:54]
elena_madalina.dima [Bibliografie/Resurse]
pm:prj2023:vstoica:masinacughidajinteligent [2023/05/29 00:29] (current)
elena_madalina.dima [Bibliografie/Resurse]
Line 82: Line 82:
 </​code>​ </​code>​
  
-Pentru spori lizibilitatea codului și a lucra mai ușor cu pinii și constantele folosite s-au definit următoarele macro-uri:+Pentru ​spori lizibilitatea codului și a lucra mai ușor cu pinii și constantele folosite s-au definit următoarele macro-uri:
  
 <​code>​ <​code>​
Line 106: Line 106:
 </​code>​ </​code>​
  
-Mesajele primite de către roboțel sunt de tip caracter, fiecare literă declanșând o anumită acțiune. Lista comenzilor disponibile este prezentată mai jos. Astfel, variabila //dataIn// reține comanda primită și inițial are valoare '​S',​ asociată cu oprirea motoarelor. Una dintre funcționalitățile oferite este setarea vitezei de deplasare, aceasta fiind reținută în bariabila ​//speed//, care inițial are valoarea maximă. Variabila //dist// reprezintă distanță până la cel mai apropiat obiect din față, în timp ce //distS// reprezintă distanță până la suprafață pe care se deplasează mașina.+Mesajele primite de către roboțel sunt de tip caracter, fiecare literă declanșând o anumită acțiune. Lista comenzilor disponibile este prezentată mai jos. Astfel, variabila //dataIn// reține comanda primită și inițial are valoare '​S',​ asociată cu oprirea motoarelor. Una dintre funcționalitățile oferite este setarea vitezei de deplasare, aceasta fiind reținută în variabila ​//speed//, care inițial are valoarea maximă. Variabila //dist// reprezintă distanțpână la cel mai apropiat obiect din față, în timp ce //distS// reprezintă distanță până la suprafață pe care se deplasează mașina.
  
 <​code>​ <​code>​
Line 213: Line 213:
 </​code>​ </​code>​
    
-Pentru virajele la stânga, respectiv la dreapta, roata dinspre viraj se mișcă în spate, iar cealaltă roată se mișcă în față, în timp ce pentru ​deplasările pe diagonale sunt realizate prin setarea de viteze diferite pentru cele două motoare.+Pentru virajele la stânga, respectiv la dreapta, roata dinspre viraj se mișcă în spate, iar cealaltă roată se mișcă în față, în timp ce deplasările pe diagonale sunt realizate prin setarea de viteze diferite pentru cele două motoare.
  
-Inițializarea servomotorului cuprinde 2 etape: legarea la pinul 10 prin funcția de bibliotecă attach și setarea unghiului la 90º, unghi la care senzorul de distanță are orientarea corespunzătoare.+Inițializarea servomotorului cuprinde 2 etape: legarea la pinul 10 prin funcția de bibliotecă ​//attach// și setarea unghiului la 90º, unghi la care senzorul de distanță are orientarea corespunzătoare.
  
 <​code>​ <​code>​
Line 368: Line 368:
   * //H// → deplasare Sud - Vest   * //H// → deplasare Sud - Vest
   * //S// → oprire   * //S// → oprire
-  * //W// → aducere ​servo-ului în poziția inițială (90º) +  * //W// → aducerea ​servo-ului în poziția inițială (90º) 
-  * //1// → aducere ​servo-ului la 45º (deplasare senzor spre dreapta) +  * //1// → aducerea ​servo-ului la 45º (deplasare senzor spre dreapta) 
-  * //2// → aducere ​servo-ului la 0º (deplasare senzor spre dreapta) +  * //2// → aducerea ​servo-ului la 0º (deplasare senzor spre dreapta) 
-  * //3// → aducere ​servo-ului la 135º (deplasare senzor spre stânga) +  * //3// → aducerea ​servo-ului la 135º (deplasare senzor spre stânga) 
-  * //4// → aducere ​servo-ului la 180º (deplasare senzor spre stânga)+  * //4// → aducerea ​servo-ului la 180º (deplasare senzor spre stânga)
   * //5// → setarea vitezei la 150   * //5// → setarea vitezei la 150
   * //6// → setarea vitezei la 175   * //6// → setarea vitezei la 175
Line 384: Line 384:
  
  
-Prima dată se efectuează verificarea faptului că robotul încă se află pe o suprafață prin citirea distanței dintre senzorul de distanță S și primul obiect găsit dedesut. O distanță mai mare de 7m semnalizează faptul că în față suprafață se termină, așa că robotul se oprește, se deplasează înapoi pentru a evita căderea la ocolirea marginii și se întoarce ​la stânga.+Prima dată se efectuează verificarea faptului că robotul încă se află pe o suprafață prin citirea distanței dintre senzorul de distanță S și primul obiect găsit dedesut. O distanță mai mare de 7cm semnalizează faptul că în față suprafață se termină, așa că robotul se oprește, se deplasează înapoi pentru a evita căderea la ocolirea marginii și se întoarce ​spre stânga.
  
-După ce s-a validat faptul că deplasarea în față nu poate cauza căderea de pe masă se verifică dacă există obstacole în apropiere. Pentru aceasta se citește distanța până la primul obiect din față și când această distanță este mai mică de 25 cm se consideră că obiectul identificat este o aminințare și trebuie ocolit. Direcția în care se continuă deplasarea este aleasă pe baza distanței maxime. Mai precis, senzorul de distanță Obs se direcționează spre dreapta prin aducerea servomotorului la 0º, determină distanța până la cel mai apropiat obstacol și se aduce servomotorul în starea inițială(la 90º). Asemănător se determină și distanță din stânga, cu diferență că, de această dată servo-ul este adus la 180º. Calcularea acestor distașe este realizată prin funcțiile:+După ce s-a validat faptul că deplasarea în față nu poate cauza căderea de pe masăse verifică dacă există obstacole în apropiere. Pentru aceasta se citește distanța până la primul obiect din față și când această distanță este mai mică de 25 cm se consideră că obiectul identificat este o aminințare și trebuie ocolit. Direcția în care se continuă deplasarea este aleasă pe baza distanței maxime. Mai precis, senzorul de distanță Obs se direcționează spre dreapta prin aducerea servomotorului la 0º, determină distanța până la cel mai apropiat obstacol și se aduce servomotorul în starea inițială(la 90º). Asemănător se determină și distanță din stânga, cu diferență că, de această dată servo-ul este adus la 180º. Calcularea acestor distațe este realizată prin funcțiile:
 <​code>​ <​code>​
 int getRightDist() { int getRightDist() {
Line 409: Line 409:
 </​code>​ </​code>​
  
-Astfel, deplasarea se continuă în direcția ​cu obstacolul ​cel mai depărtat. Dacă nu s-a identificat un obstacol în apropiere și nici nu există pericolul de cădere, mașinuța se deplasează înainte. ​+Astfel, deplasarea se continuă în direcția ​obstacolului ​cel mai depărtat. Dacă nu s-a identificat un obstacol în apropiere și nici nu există pericolul de cădere, mașinuța se deplasează înainte. ​
  
 Logica completă a acestui mod de funcționare este implementată astfel: Logica completă a acestui mod de funcționare este implementată astfel:
Line 465: Line 465:
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
- 
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
  
Line 479: Line 475:
 Inițial s-a optat pentru o carcasă încăpătoare pentru a nu înghesui componentele și a se încerca o organizare a cablurilor cât mai neîncâlcită,​ dar, în urma testării s-a dovedit că acest design are probleme cu echilibrul, la plecarea de pe loc, datorită inerției, robotul căzând pe spate. De asemenea, această carcasă, fiind dintr-un carton destul de subțire nu oferea stabilitate și motoarele nu puteau fi fixate corespunzător,​ aspect ce afecta direcția de deplasare. Inițial s-a optat pentru o carcasă încăpătoare pentru a nu înghesui componentele și a se încerca o organizare a cablurilor cât mai neîncâlcită,​ dar, în urma testării s-a dovedit că acest design are probleme cu echilibrul, la plecarea de pe loc, datorită inerției, robotul căzând pe spate. De asemenea, această carcasă, fiind dintr-un carton destul de subțire nu oferea stabilitate și motoarele nu puteau fi fixate corespunzător,​ aspect ce afecta direcția de deplasare.
  
-De aceea s-a optat pentru schimbarea carcasei cu una mai scundă și mai lată ce oferă o stabiltate mai bună, ​contruită dintr-un carton mai tare ce permite fixarea componentelor. Deși spațiul este mai mic, nu s-a renunțat la păstrarea firelor neîncâlcite,​ încercându-se o rganizarea ​cât mai ordonată a componentelor.+De aceea s-a optat pentru schimbarea carcasei cu una mai scundă și mai lată ce oferă o stabiltate mai bună, ​construită dintr-un carton mai tare ce permite fixarea componentelor. Deși spațiul este mai mic, nu s-a renunțat la păstrarea firelor neîncâlcite,​ încercându-se o organizarea ​cât mai ordonată a componentelor.
  
 **Design final** **Design final**
Line 514: Line 510:
 </​html>​ </​html>​
  
-Acest test a scos la iveală faptul că roboțelul ignoră obstacolele care nu intră în aria lui vizuală. O versiune mai avansată ar putea folosi fie mai mulți senzori, plasați la diferite înălțimi,​ fie un singur senzor care să își poate modifica unghiul sub care privește.+Acest test a scos la iveală faptul că roboțelul ignoră obstacolele care nu intră în aria lui vizuală. O versiune mai avansată ar putea folosi fie mai mulți senzori, plasați la diferite înălțimi,​ fie un singur senzor care să își poată ​modifica unghiul sub care privește.
  
  
Line 536: Line 532:
  
 ===== Concluzii ===== ===== Concluzii =====
-1. Ca în cadrul lucrări, proiectarea este una dintre etapele cele mai importante, în cazul în care este făcută cu atenție, având ca rezultat o desfășurare cu mai puține erori a proiectului,​ alături de evitarea unor costuri atât materiale, cât și temporale.+1. Ca în cadrul ​oricărei ​lucrări, proiectarea este una dintre etapele cele mai importante, în cazul în care este făcută cu atenție, având ca rezultat o desfășurare cu mai puține erori a proiectului,​ alături de evitarea unor costuri ​suplientare ​atât materiale, cât și temporale.
  
-2. Roboțelul este departe de o formă finală, putând fi îmbunătățit în foarte multe feluri (adăugarea mai multor senzori pentru identificarea corectă a obstacolelor și evitarea tuturor cazurilor în care poate cădea de pe suprafață,​ adăugarea mai multo elemente de design, leduri, buzzer pentru redarea unor sunete diferite în funcție de modul de funcționare,​ semnalizarea blocării)+2. Roboțelul este departe de o formă finală, putând fi îmbunătățit în foarte multe feluri (adăugarea mai multor senzori pentru identificarea corectă a obstacolelor și evitarea tuturor cazurilor în care poate cădea de pe suprafață,​ adăugarea mai multor ​elemente de design, leduri, buzzer pentru redarea unor sunete diferite în funcție de modul de funcționare,​ semnalizarea blocării)
  
 ===== Download ===== ===== Download =====
Line 568: Line 564:
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- 
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 Resurse hardware: Resurse hardware:
pm/prj2023/vstoica/masinacughidajinteligent.1685307265.txt.gz · Last modified: 2023/05/28 23:54 by elena_madalina.dima
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0