Differences

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

Link to this comparison view

pm:prj2026:atoader:mircea.braguta [2026/05/09 23:40]
mircea.braguta [Componente software]
pm:prj2026:atoader:mircea.braguta [2026/05/25 08:07] (current)
mircea.braguta
Line 3: Line 3:
 ===== Introducere ===== ===== Introducere =====
  
-Tracker Turret este un sistem capabil să detectezeurmărească ​și estimeze distanța față de o persoană ​aflată în mișcare. Proiectul utilizează ​procesare video în timp real și un sistem mecanic ​de rotație pentru a orienta tureta către ținta detectată.+Tracker Turret este un sistem ​embedded ​capabil să detecteze ​și să urmărească ​automat ​o persoană ​folosind ​procesare video în timp real și control hardware al unei turete motorizate. Proiectul combină algoritmi ​de computer vision, comunicație serială și control hardware low-level într-o platformă integrată.
  
-Ideea proiectului a pornit de la dorința de a combina ​procesarea video cu sisteme embedded și control hardware ​în timp real. Sistemul ​folosește două camere pentru ​estimarea poziției ​și a distanței țintei, iar mișcarea ​este realizată prin servo motoare controlate de un microcontroler dedicat.+Ideea proiectului a pornit de la dorința de a crea un sistem care îmbină ​procesarea video cu controlul mecanic ​în timp real. Sistemul ​utilizează camere ​video conectate la o placă Avnet MaaXBoard ​pentru ​detectarea ​și urmărirea unei persoane folosind OpenCV. Datele rezultate sunt transmise către un microcontroler Arduino Nano ESP32 care controlează ​mișcarea servo motoarelor și afișarea informațiilor pe un display OLED.
  
-Scopul proiectului este realizarea unei platforme capabile să urmărească automat o persoană și să ofere informații despre poziția și distanța acesteia. Proiectul poate avea aplicații în: +Scopul ​principal al proiectului este realizarea unei platforme ​autonome ​capabile să:
-  * sisteme de supraveghere +
-  * robotică +
-  * automatizare +
-  * sisteme autonome +
-  * cercetare în domeniul computer vision+
  
-Proiectul este util atât pentru dezvoltarea cunoștințelor legate de embedded systems ​și procesare video, ​cât și pentru integrarea componentelor ​hardware și software într-un sistem complex.+* detecteze fețe în timp real 
 +* urmărească poziția unei persoane 
 +* controleze mecanic orientarea turetei 
 +* afișeze starea sistemului pe display 
 +* comunice între module hardware diferite 
 + 
 +Proiectul poate avea aplicații în: 
 + 
 +* robotică 
 +* sisteme autonome 
 +* supraveghere inteligentă 
 +* automatizare 
 +* cercetare în computer vision ​și embedded systems 
 + 
 +Elementul de noutate al proiectului constă în integrarea unui sistem Linux embedded capabil de procesare video avansată cu un microcontroler dedicat controlului hardware în timp realutilizând mai multe protocoale ​hardware și tehnici low-level studiate în laborator.
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
 Sistemul este împărțit în două componente principale: Sistemul este împărțit în două componente principale:
-  * modulul de procesare video 
-  * modulul de control hardware 
  
-Procesarea ​video este realizată folosind două camere conectate la plăci Avnet i.MX8M. Acestea rulează algoritmi OpenCV pentru: +* modulul de procesare ​video 
-  * detectarea persoanelor +modulul ​de control hardware
-  * urmărirea țintei +
-  estimarea distanței folosind diferența ​de unghi dintre camere+
  
-Datele procesate sunt transmise prin comunicație serială către placa Arduino Uno, responsabilă ​de controlul hardware al sistemului.+==== Modulul ​de procesare video
  
-Arduino Uno controlează+Procesarea video este realizată pe placa Avnet MaaXBoard i.MX8M care rulează Linux embedded. Pe aceasta rulează un program Python bazat pe OpenCV responsabil pentru:
-  * servo motoarele pentru mișcarea turetei +
-  * panourile LED pentru afișarea stării sistemului +
-  * butoanele de control ale utilizatorului+
  
-Controlul servo motoarelor este realizat folosind semnale PWM. Butoanele sunt gestionate folosind întreruperi hardware pentru răspuns rapid, iar timerele sunt utilizate pentru actualizarea periodică a poziției ​și sincronizarea componentelor.+* capturarea imaginilor de la cameră 
 +* detectarea fețelor folosind clasificatori Haar Cascade 
 +* estimarea ​poziției ​țintei în imagine 
 +* generarea comenzilor de control
  
-Comunicarea dintre componente ​este realizată prin interfață serială UART.+În funcție de poziția feței detectate în cadru: 
 + 
 +* dacă fața este în stânga -> se transmite comanda de rotire stânga 
 +* dacă fața este în dreapta -> se transmite comanda de rotire dreapta 
 +* dacă fața este centrată -> tureta se oprește 
 +* dacă nu există față detectată -> sistemul intră în modul SEARCHING 
 + 
 +Comenzile sunt transmise prin UART către microcontroler. 
 + 
 +==== Modulul de control hardware 
 + 
 +Controlul hardware este realizat folosind Arduino Nano ESP32 programat folosind ESP-IDF și drivere hardware low-level. 
 + 
 +Microcontrollerul este responsabil pentru: 
 + 
 +* controlul servo motoarelor folosind PWM hardware 
 +* controlul display-ului OLED prin I2C 
 +* recepționarea comenzilor prin UART 
 +* actualizarea stării sistemului 
 + 
 +Comenzile primite de la MaaXBoard sunt: 
 + 
 +^ Comandă ^ Funcție ^ 
 +| C0 | Oprire / țintă centrată | 
 +| C1 | Rotire stânga | 
 +| C2 | Rotire dreapta | 
 +| C3 | Mod SEARCHING | 
 + 
 +În funcție de comanda primită: 
 + 
 +* servo motorul este mișcat 
 +* display-ul OLED este actualizat 
 +* starea sistemului este modificată 
 + 
 +Display-ul OLED afișează:​ 
 + 
 +* DETECTED -> atunci când există o față detectată 
 +* SEARCHING -> atunci când nu există țintă detectată
  
 ===== Schema bloc ===== ===== Schema bloc =====
  
-  ​Camere video -> Avnet i.MX8M +Cameră USB -> MaaXBoard ​i.MX8M 
-  * OpenCV -> Detectare și tracking +* OpenCV -> Detectare ​față ​și tracking 
-  Calcul distanță ​-> Triangulație folosind două camere +Algoritm decizie ​-> Determinare direcție țintă 
-  Comunicație serială ​-> UART +UART -> Transmitere comenzi 
-  * Arduino ​Uno -> Control hardware +* Arduino ​Nano ESP32 -> Control hardware 
-  * PWM -> Servo motoare +* PWM -> Control servo motor 
-  Întreruperi ​-> Butoane +I2C -> Control display OLED 
-  Timere ​-> Actualizare ​sistem +OLED SSD1306 ​-> Afișare stare sistem 
-  Panouri LED -> Afișare stare+ 
 +===== Arhitectura sistemului ===== 
 + 
 +==== Fluxul complet de funcționare 
 + 
 +1. Camera transmite imagini către MaaXBoard. 
 +2. OpenCV procesează imaginea și detectează fața. 
 +3. Sistemul determină poziția feței în cadru. 
 +4. Se generează o comandă UART. 
 +5. Comanda este transmisă către Arduino Nano ESP32. 
 +6. ESP32 actualizează poziția servo motorului. 
 +7. ESP32 actualizează mesajul de pe display-ul OLED. 
 + 
 +Acest proces rulează continuu în timp real. 
 + 
 +===== Implementare hardware ===== 
 + 
 +==== Stadiul actual al implementării hardware 
 + 
 +În momentul actual au fost implementate și validate: 
 + 
 +comunicația UART între MaaXBoard și ESP32 
 +* controlul servo motorului folosind PWM 
 +* comunicația I2C cu display-ul OLED SSD1306 
 +* detectarea fețelor folosind OpenCV 
 +* transmiterea comenzilor de tracking în timp real 
 + 
 +Sistemul funcționează complet end-to-end:​ 
 + 
 +* detectare față 
 +* transmitere comandă 
 +* mișcare servo 
 +* actualizare display
  
 ===== Componente hardware ===== ===== Componente hardware =====
  
-^ Componentă ^ Rol ^ +^ Componentă ^ Rol în proiect ​
-2x Cameră ​video USB / CSI | Captură imagine pentru tracking | +| Cameră USB | Captură imagine pentru tracking | 
-| Avnet i.MX8M ​Board | Procesare video și algoritmi ​OpenCV | +| Avnet MaaXBoard ​i.MX8M | Procesare video și rulare ​OpenCV | 
-| Arduino ​Uno | Control hardware și servo motoare ​+| Arduino ​Nano ESP32 | Control hardware și comunicare ​
-4x Servo motor | Mișcare pe axele turetei | +| Servo motor | Mișcarea turetei | 
-Panou LED / LED-uri ​| Afișare stare sistem ​+Display OLED SSD1306 I2C | Afișarea stării sistemului ​
-Butoane ​Control utilizator ​+Breadboard ​Realizarea conexiunilor ​
-Breadboard ​Prototipare conexiuni ​+Fire Dupont ​Conexiuni electrice ​
-Fire conexiune ​Legături electrice ​+Alimentare USB Alimentarea sistemului ​
-Sursă alimentare ​| Alimentare ​sistem ​+Convertor UART | Debugging și testare comunicație | 
-Cablu USB Programare ​și comunicație | + 
-Structură mecanică turetă | Suport ​pentru ​camere ​și servo |+===== Conexiuni hardware ===== 
 + 
 +==== UART MaaXBoard -> ESP32 
 + 
 +^ MaaXBoard ^ ESP32 ^ Funcție ^ 
 +| UART2_TX | RX0 | Transmitere comenzi | 
 +| GND | GND | Referință comună 
 + 
 +Protocolul UART utilizează:​ 
 + 
 +* baudrate: 9600 
 +* comenzi text de forma C0/​C1/​C2/​C3 
 + 
 +==== Servo motor 
 + 
 +^ Servo ^ ESP32 ^ 
 +| Signal | GPIO9 | 
 +| VCC | Alimentare ​externă ​
 +GND GND comun | 
 + 
 +Servo motorul este controlat folosind PWM hardware la 50Hz. 
 + 
 +==== Display OLED SSD1306 
 + 
 +^ OLED ^ ESP32 ^ 
 +| SDA | A4 | 
 +| SCK/SCL | A5 | 
 +| VCC | 3.3V | 
 +| GND | GND | 
 + 
 +Display-ul utilizează protocolul I2C și a fost detectat la adresa 0x3C. 
 + 
 +===== Functionalități utilizate din laborator ===== 
 + 
 +==== PWM 
 + 
 +PWM-ul hardware este utilizat pentru controlul servo motorului. 
 + 
 +Avantaje: 
 + 
 +* control precis al poziției 
 +* funcționare fluidă 
 +* utilizare eficientă a hardware-ului 
 + 
 +==== UART 
 + 
 +UART este utilizat pentru comunicația dintre MaaXBoard și ESP32. 
 + 
 +Avantaje: 
 + 
 +* implementare simplă 
 +comunicație ​robustă 
 +* latență redusă 
 + 
 +==== I2C 
 + 
 +I2C este utilizat pentru controlul display-ului OLED SSD1306. 
 + 
 +Avantaje: 
 + 
 +* număr redus de fire 
 +* integrare simplă 
 +* compatibilitate ridicată 
 + 
 +==== Timere hardware 
 + 
 +Timerele hardware sunt utilizate pentru: 
 + 
 +* generarea semnalului PWM 
 +* actualizarea periodică a servo motorului 
 +* sincronizarea task-urilor FreeRTOS 
 + 
 +===== Implementare software ===== 
 + 
 +==== Stadiul actual al implementării software 
 + 
 +Au fost implementate:​ 
 + 
 +* captură video OpenCV 
 +* detectare fețe Haar Cascade 
 +* tracking în timp real 
 +* generare comenzi UART 
 +* parser UART pe ESP32 
 +* control servo PWM 
 +* control OLED SSD1306 
 +* task-uri FreeRTOS pentru paralelizare 
 + 
 +===== Biblioteci utilizate ===== 
 + 
 +^ Bibliotecă ^ Rol ^ 
 +| OpenCV | Detectare și procesare imagine ​
 +pyserial | Comunicație UART pe Linux | 
 +| ESP-IDF | Programare low-level ESP32 | 
 +| driver/​uart.h | Control UART hardware | 
 +| driver/​ledc.h | PWM hardware | 
 +| driver/​i2c.h | Comunicație I2C | 
 +| FreeRTOS | Task scheduling | 
 + 
 +===== Motivarea alegerii tehnologiilor ===== 
 + 
 +==== OpenCV 
 + 
 +OpenCV oferă
 + 
 +* algoritmi optimizați 
 +* detectare rapidă 
 +* compatibilitate Linux embedded 
 +* integrare simplă cu Python 
 + 
 +==== ESP-IDF 
 + 
 +ESP-IDF permite: 
 + 
 +* acces direct la periferice hardware 
 +* control low-level 
 +* performanță ridicată 
 +* utilizarea driverelor hardware oficiale 
 + 
 +==== UART 
 + 
 +UART a fost ales deoarece: 
 + 
 +* este simplu de implementat 
 +* este robust 
 +* necesită puține resurse hardware 
 +* oferă latență mică 
 + 
 +===== Optimizări realizate ===== 
 + 
 +Pentru creșterea performanței au fost realizate următoarele optimizări:​ 
 + 
 +* reducerea rezoluției imaginii ​pentru ​creșterea FPS-ului 
 +* transmiterea comenzilor sub formă compactă 
 +* utilizarea task-urilor separate pentru UART și servo 
 +* utilizarea PWM hardware în loc de software PWM 
 +* utilizarea comunicației I2C hardware 
 +* reducerea latenței UART prin scăderea baudrate-ului și stabilizarea comunicației 
 + 
 +===== Validare și testare ===== 
 + 
 +Sistemul a fost validat prin: 
 + 
 +* testarea comunicației UART 
 +* testarea PWM pentru servo 
 +* scanarea magistralei I2C 
 +* detectarea display-ului la adresa 0x3C 
 +* validarea tracking-ului facial 
 +* testarea mișcării turetei în timp real 
 + 
 +Au fost validate: 
 + 
 +* funcționarea comunicației dintre module 
 +* afișarea mesajelor pe OLED 
 +* reacția servo motorului la poziția feței 
 +* funcționarea în timp real a sistemului 
 + 
 +===== Calibrare ===== 
 + 
 +Calibrarea sistemului a fost realizată prin: 
 + 
 +* ajustarea dead-zone-ului pentru tracking 
 +* reglarea vitezei servo motorului 
 +* ajustarea parametrilor Haar Cascade 
 +* configurarea rezoluției optime pentru cameră 
 +* ajustarea frecvenței comenzilor UART 
 + 
 +Scopul calibrării a fost obținerea unei mișcări stabile și reducerea oscilațiilor sistemului. 
 + 
 +===== Structura software ===== 
 + 
 +Software-ul este împărțit în: 
 + 
 +==== MaaXBoard Linux 
 + 
 +* captură video 
 +* detectare fețe 
 +* logică tracking 
 +* generare comenzi UART 
 + 
 +==== ESP32 
 + 
 +* task UART 
 +* task servo 
 +* control OLED 
 +* PWM hardware 
 +* I2C hardware 
 + 
 +Componentele comunică folosind un protocol UART simplu bazat pe comenzi text. 
 + 
 +===== Demonstrarea funcționalității ===== 
 + 
 +Pentru demonstrarea proiectului vor fi prezentate:​ 
 + 
 +* detectarea unei persoane în timp real 
 +* rotirea turetei după poziția țintei 
 +* afișarea stării pe display-ul OLED 
 +* transmiterea comenzilor UART 
 +* funcționarea sistemului embedded complet 
 + 
 +Vor fi atașate: 
 + 
 +* imagini cu conexiunile hardware 
 +* capturi din timpul funcționării 
 +* demonstrație video a proiectului 
 + 
 +===== Concluzii ===== 
 + 
 +Tracker Turret demonstrează integrarea cu succes a: 
 + 
 +* computer vision 
 +* embedded Linux 
 +* control hardware low-level 
 +* comunicații seriale 
 +* protocoale hardware 
 +* sisteme real-time
  
-===== Componente ​software ​=====+Proiectul reprezintă o combinație practică între ​software ​și hardware și evidențiază utilizarea conceptelor studiate în laborator într-un sistem complet funcțional.
  
-^ Software ^ Rol ^ 
-| OpenCV | Detectare și urmărire țintă | 
-| C/C++ | Implementare software | 
-| UART Serial Communication | Comunicare între module | 
-| PWM Control | Control servo motoare | 
-| Hardware Interrupts | Gestionare butoane | 
-| Timere hardware | Sincronizare și actualizare | 
pm/prj2026/atoader/mircea.braguta.1778359231.txt.gz · Last modified: 2026/05/09 23:40 by mircea.braguta
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