Differences

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

Link to this comparison view

pm:prj2022:ndrogeanu:scanner_3d [2022/04/30 01:07]
ioan_teodor.teugea [Descriere generală]
pm:prj2022:ndrogeanu:scanner_3d [2022/06/02 12:40] (current)
ioan_teodor.teugea [Rezultate Obţinute]
Line 7: Line 7:
  
 ===== Introducere ===== ===== Introducere =====
-==== Ce face ==== 
 Proiectul permite scanarea unor obiecte si transformarea lor in modele OBJ ce pot fi integrate in jocuri video sau animatii 3D. Proiectul permite scanarea unor obiecte si transformarea lor in modele OBJ ce pot fi integrate in jocuri video sau animatii 3D.
  
-Scopul proiectului este de a reduce timpul si costul de dezvoltare a jocurilor video prin eliminarea nevoii de a modela de la zero diferitele elemente necesare. Astfel, si cei care nu au cunostiinte ​de modelare 3D sau talent artistic pot crea rapid modele pentru jocurile lor.+Scopul proiectului este de a reduce timpul si costul de dezvoltare a jocurilor video prin eliminarea nevoii de a modela de la zero diferitele elemente necesare. Astfel, si cei care nu au cunoștiinte ​de modelare 3D sau talent artistic pot crea rapid modele pentru jocurile lor.
 ===== Descriere generală ===== ===== Descriere generală =====
  
Line 20: Line 19:
  
 Aplicația de pe PC primește de la Arduino numărul de pași efectuați de fiecare motor și distanța măsurată, date care sunt convertite în coordonate cilindrice pe baza unui fișier de configurare bazat pe datele tehnice ale componentelor. Pentru motoarele utilizate, 200 de pași corespund cu o rotație completă de 360 de grade, iar o rotație completă înseamnă 8mm pentru mișcarea pe verticală a ansamblului senzorului. Coordonatele cilindrice sunt transformate în coordonate carteziene pe baza cărora se creeaza un fișier point cloud în format .ply, care este apoi convertit într-un mesh 3D folosind biblioteca Open3D. Aplicația de pe PC primește de la Arduino numărul de pași efectuați de fiecare motor și distanța măsurată, date care sunt convertite în coordonate cilindrice pe baza unui fișier de configurare bazat pe datele tehnice ale componentelor. Pentru motoarele utilizate, 200 de pași corespund cu o rotație completă de 360 de grade, iar o rotație completă înseamnă 8mm pentru mișcarea pe verticală a ansamblului senzorului. Coordonatele cilindrice sunt transformate în coordonate carteziene pe baza cărora se creeaza un fișier point cloud în format .ply, care este apoi convertit într-un mesh 3D folosind biblioteca Open3D.
 +
 +==== Schemă bloc ====
 +{{ :​pm:​prj2022:​ndrogeanu:​teugea_ioan-teodor_diagrama_bloc.png?​600 |}}
 +
 +
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +==== Listă componente ==== 
-Aici puneţi tot ce ţine de hardware design: +  * Arduino Uno 
-  * listă de piese +  * Senzor laser VL53L0X 
-  * scheme electrice ​(se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png+  * Placă DRV8825 (2x) 
-  * diagrame de semnal ​ +  * Motor stepper ​(2x
-  * rezultatele simulării +  * Condensator 100uF 50V (2x) 
-</​note>​+  * Sursă alimentare 12V 5A
  
 +==== Schemă ====
 +{{ :​pm:​prj2022:​ndrogeanu:​teugea_ioan-teodor_circuit_schem.png?​600 |}}
 +
 +==== Implementare finala ====
 +{{:​pm:​prj2022:​ndrogeanu:​proiect_implementat.jpg?​600|}}
 ===== Software Design ===== ===== Software Design =====
  
 +Arduino trimite datele catre laptop, impreuna cu anumite coduri cu diferite semnificatii:​
 +  * -2 - eroare initializare senzor
 +  * 5 - senzorul a fost initializat cu succes
 +  * 20 - a fost efectuata o noua masuratoare. Impreuna cu acest cod se trimit numarul de pasi efectuati de motoarele de rotire si deplasare verticala si distanta masurata
 +  * 10 - s-a terminat scanarea obiectului
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 +Centrul de referinta al modelului este centrul platformei pe care sta acesta. Centrul se afla la o distanta cunoscuta **D** fata de senzor. Senzorul intoarce distanta **d1** de la marginea obiectului la senzor. Pe baza acestor doua distante, putem calcula distanta de la centru la marginea obiectului scazand **D - d1**.
 +
 +Specificatiile motoarelor folosite arata ca 200 de pasi de rotatie corespund cu o rotatie completa de 360 de grade. Astfel, se calculeaza unghiul din care este privit obiectul prin regula de 3 simpla. Pentru deplasarea pe verticala, specificatiile arata ca o rotatie completa a unui motor corespunde cu o deplasare verticala de 8mm.
 +
 +Astfel, prin aceste 3 masuratori am obtinut pozitia punctului de pe obiect in coordonate cilindrice. Acestea sunt transformate in coordonate carteziene si scrise intr-un fisier .ply
 +
 +Repository GitHub: [[https://​github.com/​John-Ted/​Scanner-3D-PM]]
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Proiectul executa scanari, insa faptul ca obiectul este vazut doar din lateral, problemele cu senzorul si algoritmii de conversie din point cloud in mesh 3D nu permit o rezolutie extraordinara.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
 +
 +{{:​pm:​prj2022:​ndrogeanu:​point_cloud.png?​600|}}
 +
 +{{:​pm:​prj2022:​ndrogeanu:​model_obj.png?​100|}}
 ===== Concluzii ===== ===== Concluzii =====
  
 +Proiectul are potential, creeaza modele 3D, insa mai trebuie lucrat pentru imbunatatirea rezolutiei rezultatelor
 +
 +== Posibile imbunatatiri ==
 +  * Schimbarea senzorului de distanta cu unul mai bun
 +  * Rotirea obiectului si pe alte axe in afara de OY 
 ===== Download ===== ===== Download =====
  
pm/prj2022/ndrogeanu/scanner_3d.1651270058.txt.gz · Last modified: 2022/04/30 01:07 by ioan_teodor.teugea
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