Differences

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

Link to this comparison view

pm:prj2023:gpatru:483 [2023/05/25 15:54]
ioana.dinu0810
pm:prj2023:gpatru:483 [2023/05/26 10:57] (current)
ioana.dinu0810 [Concluzii]
Line 56: Line 56:
  
 **Librarii** \\  **Librarii** \\ 
-  - Pixy2.h si Pixy2CCC.h sunt bibliotecile folosite pana acum pentru a apela metode specifice camerei (de exemplu: getBlocks(),​ care returneaza valorile intre care este incadrat obiectul detectat). Sunt folosite si obiecte specifice camerei: signature, m_x, m_y etc. \\ +  - Pixy2.h si Pixy2CCC.h sunt bibliotecile folosite pana acum pentru a apela metode specifice camerei (de exemplu: getBlocks(),​ care returneaza valorile intre care este incadrat obiectul detectat). Sunt folosite si obiecte specifice camerei: signature, m_x, m_y etc. De asemenea, pentru o vizibilitate mai mare si o performanta mai buna in medii in care lumina nu este atat de buna, am folosit metoda setLamp() pentru a aprinde ledurile de la camera. \\ 
   - SPI.h pentru comunicatie intre microcontroller si camera. \\    - SPI.h pentru comunicatie intre microcontroller si camera. \\ 
 +  - Servo.h pentru crearea obiectelor de tip Servo, folosirea metodelor attach() si write(). Am testat functionarea in 2 moduri: atat cu biblioteca de Servo, cat si fara. La final, am ales implementarea prin care obtineam rezultatele mai bune. \\ 
  
 **Algoritmi** \\  **Algoritmi** \\ 
Line 69: Line 70:
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +1. Testarea unitara a servomotoarelor a demonstrat necesitatea unui algoritm de tip PID, mai ales a componentei P, deoarece chiar daca si fara componenta proportionala,​ urmarirea era realizata, procesul nu era unul cu performante mari in ceea ce priveste urmarirea referintei si stabilizarea. Servomotoarele tindeau sa se reintoarca la pozitia neutra dupa fiecare modificare a unghiului. \\ 
 +2. Dupa adaugarea a doi factori Kp diferiti in functie de plan (pe Ox am uitizat 0.4, iar pe Oy, 0.5), am obtinut o urmarire vizibil imbunatatita. \\ 
 +3. Dupa ce am testat functionalitatea de centrare, am implementat deplasarea in spatiu. Cei mai importanti parametri de modificat au fost dimensiunile width (80) si height (60) ale obiectului vazut de camera. \\ 
 +{{:​pm:​prj2023:​gpatru:​ryobo_final.png?​400|}} \\ 
  
 ===== Concluzii ===== ===== Concluzii =====
 +Ryobo este un prototip in ceea ce priveste conceptul de __visual servoing__. In acest proiect am dorit sa punctez cateva notiuni mai provocatoare,​ din mai multe puncte de vedere: \\ 
 +1. **Control**:​ Pentru a face robotul sa functioneze,​ am avut nevoie de prioritizarea uneia dintre urmariri, astfel incat sa creez o activitate cat mai determinista. Am folosit un algoritm proportional de control pentru motoare, cu factori alesi experimental. \\ 
 +2. **Machine Learning**: Camera ruleaza un algoritm de detectie bazat pe hue-ul si contrastul din imaginile capturate. \\ 
 +3. **"​Economie"​ in ceea ce priveste componentele**:​ Am folosit toate cele 6 canale de PWM disponibile pe ATmega328P si rezultatul este satisfacator,​ chiar daca pot fi aduse imbunatatiri:​ cresterea vitezei motoarelor, multithreading etc. Nu am folosit un senzor de distanta pentru a identifica aproprierea obeictului, ci am prelucrat software datele de la camera. \\ 
 +4. **Utilitatea**:​ Algoritmii de acest gen nu trebuie sa isi gaseasca sfarsitul in implementarea pe roboti miniaturali,​ ci, odata ce tehnologia avanseaza, pot fi folositi pe drone, in mediul industrial sau pentru securitate.\\ ​
 +
  
 ===== Download ===== ===== Download =====
  
 <​note>​ <​note>​
-  - Proiectul ​din punct de vedere software ​(inclusiv readme): https://​gitlab.com/​smp2023/​331ab/​ryobo.git ​\\  +  - Proiectul ​detaliat poate fi descarcat ​de aici (inclusiv readme): https://​gitlab.com/​smp2023/​331ab/​ryobo.git \\ 
-  - Documentatie detaliata: https://​calm-lilac-b60.notion.site/​Documentatie-Ryobo-04c33d21374745c6969c2b7464e8acd0 ​\\ +
 </​note>​ </​note>​
- 
 ===== Jurnal ===== ===== Jurnal =====
 +Primul pas a fost controlul servo-urilor in functie de inputul prelucrat de la camera:​\\ ​
 {{:​pm:​prj2023:​gpatru:​evolution1.jpeg?​400|}} \\  {{:​pm:​prj2023:​gpatru:​evolution1.jpeg?​400|}} \\ 
 +Am inceput sa printez piesele din corpul robotului. Aici este primul body: \\ 
 {{:​pm:​prj2023:​gpatru:​evolution2.jpeg?​400|}} \\  {{:​pm:​prj2023:​gpatru:​evolution2.jpeg?​400|}} \\ 
 +Pentru a oferi stabilitate tuturor componentelor din interior, inclusiv placii Arduino Uno, am printat si body-ul din mijloc de care este prinsa placa, avand si bratul de servo fixat deasupra. Al treilea body este cel mobil. Pentru a-i asigura stabilitate am folosit 3 ball casters care aluneca pe body-ul din mijloc atunci cand servomotorul misca platforma. \\ 
 +{{:​pm:​prj2023:​gpatru:​ryobo_aproapeasamblat.jpg?​400|}} \\ 
 +Am identificat existenta unei probleme legate de miscarea camerei in planul Oy. Suportul de care urma sa fie prins bratul servomotorului era la baza camerei. Orice mica ajustare a servomotorului ar fi miscat camera destul de puternic. Pentru o centrare mai buna, am distantat camera mai mult de platforma mobila si am prins bratul servomotorului la mijlocul sau, nu la baza. \\ 
 +{{:​pm:​prj2023:​gpatru:​ryobo_identificareparghie.jpg?​400|}} \\ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2023/gpatru/483.1685019246.txt.gz · Last modified: 2023/05/25 15:54 by ioana.dinu0810
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