Differences

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

Link to this comparison view

pm:prj2023:dene:dancingstickman [2023/05/25 23:01]
daniel.nastase2109 [Download]
pm:prj2023:dene:dancingstickman [2023/05/30 04:36] (current)
daniel.nastase2109 [Concluzii]
Line 4: Line 4:
 Proiectul presupune crearea pe un ecran LCD a unui stickman care sa imite mișcările unei persoane aflate in fata unui XBOX 360 Kinect. Proiectul presupune crearea pe un ecran LCD a unui stickman care sa imite mișcările unei persoane aflate in fata unui XBOX 360 Kinect.
  
-Consider ​ca proiectul meu reprezintă un POC pentru o idee care ar putea fi aplicată pe semafoarele din zonele turistice ​+Consider ​că proiectul meu reprezintă un POC pentru o idee care ar putea fi aplicată pe semafoarele din zonele turistice ​
 urmând: urmând:
-  * sa încurajeze respectarea semnelor de circulație,​ fapt care este adesea o problemă in astfel de zone;+  * să încurajeze respectarea semnelor de circulație,​ fapt care este adesea o problemă in astfel de zone;
   * să anime un semafor de altfel anost.   * să anime un semafor de altfel anost.
 Au fost deja implementate astfel de proiecte având efectele precizate anterior. Aveți un exemplu [[https://​www.youtube.com/​watch?​v=w82j_m-qr2g&​ab_channel=AsliSachin|aici]]. Au fost deja implementate astfel de proiecte având efectele precizate anterior. Aveți un exemplu [[https://​www.youtube.com/​watch?​v=w82j_m-qr2g&​ab_channel=AsliSachin|aici]].
Line 286: Line 286:
  
 <note tip> <note tip>
-Ultima problemă cu care m-am confruntat(care din păcate este cea mai evidentă) a fost refresh rate-ul foarte mic al display-ului LCD. Mai mult decât atât, plăcuța nu poate ține pasul cu mesajele trimise de Kinect. Din acest motiv nu am putut obține actualizare în timp real, folosind în schimb un timer pentru a limita intervalul de timp în care se trimit coordonate de schelet.+Ultima problemă cu care m-am confruntat(care din păcate este cea mai evidentă) a fost refresh rate-ul foarte mic al display-ului LCD. Mai mult decât atât, plăcuța nu poate ține pasul cu mesajele trimise de Kinect. Din acest motiv nu am putut obține actualizare în timp real, folosind în schimb un timer pentru a limita intervalul de timp în care se trimit coordonate de schelet. O soluție posibilă ar fi putut să fie utilizarea tehnicii de double buffer și a algoritmulului Bresenham pentru desenarea liniilor, însă memoria limitată a plăcuței nu a făcut posibilă alocarea unui buffer.
 </​note>​ </​note>​
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 ===== Concluzii ===== ===== Concluzii =====
 +Ma bucur că am descoperit cum funcționează tehnologiile folosite de Kinect (depth image, skeleton recognition) și am reușit să creez un proiect fun și relativ unic. Sper că acest proiect va motiva viitorii studenți să încerce și ei includerea unui Kinect în proiectul lor. Este mult mai ușor decât pare, iar eu am încercat în această documentație să menționez toate blocajele pe care le-am avut în timpul fazei de setup pentru a trece mult mai repede la partea creativă. 
 +Singurul regret pe care îl am este că display-ul meu nu a avut un refresh rate suficient de mare încât să pot reda imagini în timp real.
 ===== Download ===== ===== Download =====
   * [[https://​github.com/​RoundRaccoon/​dancing-stickman|Proiect Github]]   * [[https://​github.com/​RoundRaccoon/​dancing-stickman|Proiect Github]]
-  * [[https://​processing.org/​download|Processing IDE]] 
   * [[https://​k2vr.tech/​docs/​notready|Driver Kinect pentru PC]]   * [[https://​k2vr.tech/​docs/​notready|Driver Kinect pentru PC]]
-  * [[https://​code.google.com/​archive/​p/​simple-openni/​downloads|SimpleOpenNI]]+  ​* [[https://​processing.org/​download|Processing IDE]] 
 +    ​* [[https://​code.google.com/​archive/​p/​simple-openni/​downloads|SimpleOpenNI]]
   * [[https://​www.arduino.cc/​en/​donate/​|Arduino IDE]]   * [[https://​www.arduino.cc/​en/​donate/​|Arduino IDE]]
-  ​* [[https://github.com/gitcnd/​LCDWIKI_GUI|LCDWIKI_GUI]] +    ​* [[http://www.lcdwiki.com/3.5inch_Arduino_Display-UNO|LCDWIKI_GUI ​și LCDWIKI_KBV]]
-  * [[https://​github.com/​lcdwiki/​LCDWIKI_kbv|LCDWIKI_KBV]]+
 ===== Jurnal ===== ===== Jurnal =====
 <note tip> <note tip>
 Am deci să folosesc această rubrică pentru a scoate în evidență blocajele pe care le-am avut și ce mi-aș fi dorit să știu înainte de a începe să lucrez la acest proiect, în speranța ca viitori studenți care folosesc Kinect pentru proiectul lor să treacă mult mai repede peste problemele de configurare. Am deci să folosesc această rubrică pentru a scoate în evidență blocajele pe care le-am avut și ce mi-aș fi dorit să știu înainte de a începe să lucrez la acest proiect, în speranța ca viitori studenți care folosesc Kinect pentru proiectul lor să treacă mult mai repede peste problemele de configurare.
 </​note>​ </​note>​
-Dacă doriți să creați un proiect folosind Kinect și Arduino, următoarele idei s-ar putea să vă salveze destul de mult timp: +Dacă doriți să creați un proiect folosind Kinect și Arduino, următoarele idei s-ar putea să vă salveze destul de mult timp
-  * La momentul scrierii, nu există o librărie open-source ​de Kinect ​pentru calculatoarele cu arhitectură ARM, care să ofere toate funcționalitațile disponibile.+ 
 +Setup Kinect
 +  * Pentru versiunile mai vechi de Kinect ​veți avea nevoie de power adapterCele mai noi pot fi direct conectate la calculator (e.g. Kinect for Windows);
   * Dacă folosiți un power adapter, acesta trebuie obligatoriu conectat la laptop printr-un port USB 3.0.   * Dacă folosiți un power adapter, acesta trebuie obligatoriu conectat la laptop printr-un port USB 3.0.
 +  * În funcție de calculator, este sau nu posibil ca Kinect-ul să pornească imediat (verificați LED-ul verde din față). Dacă nu, instalați driver-ul pentru Kinect (link la Downloads).
 +  * La momentul scrierii, nu există o librărie open-source de Kinect pentru calculatoarele cu arhitectură ARM, care să ofere toate funcționalitațile disponibile. Recomand folosirea Windows, Linux sau OSX cu Intel.
 +
 +Programare Kinect și comunicare cu Arduino:
 +  * În literatura de specialitate se folosesc în mare parte versiuni de simple-openni dinainte de 1.96, care acum sunt outdated;
 +  * Chiar dacă versiunile de SimpleOpenNI spun că sunt pentru o versiune specifică de Processing, este posibil ca totuși să puteți folosi și versiuni mai noi de processing (e.g. SimpleOpenNI for Processing 3.5.3 cu Processing 4.2);
   * Atunci când stabiliți conexiunea serială între calculator și Arduino, verificați în codul de Processing dacă portul serial folosit este cel corect.   * Atunci când stabiliți conexiunea serială între calculator și Arduino, verificați în codul de Processing dacă portul serial folosit este cel corect.
     * Toate tutorialele spun că numele portului care trebuie folosit este Serial.list()[0],​ dar în cazul meu acest port era ocupat de căștile cu Bluetooth.     * Toate tutorialele spun că numele portului care trebuie folosit este Serial.list()[0],​ dar în cazul meu acest port era ocupat de căștile cu Bluetooth.
     * Pentru mine, Serial.list()[2] a fost numele portului serial.     * Pentru mine, Serial.list()[2] a fost numele portului serial.
-  * În literatura de specialitate se folosesc în mare parte versiuni de simple-openni dinainte de 1.96, care acum sunt outdated. 
-    * Schimbările nu sunt atât de evidente între versiuni. Recomand folosirea celei mai noi versiuni plecând de la exemplele oferite. 
  
-Probleme ​întâmpinate+Alte probleme ​întâmpinate de mine:
-  * Deoarece comunicarea seriala este bazata octet pe octet, va fi nevoie sa folosesc valori intre 0 si 255 si sa imi creez minimal un protocol ​de comunicație.+
   * Display-ul LCD nu are un refresh rate suficient de mare pentru a capta imagini în timp real. La momentul scrierii display-ul afișeaza poziția utilizatorului o dată la 1.6 secunde.   * Display-ul LCD nu are un refresh rate suficient de mare pentru a capta imagini în timp real. La momentul scrierii display-ul afișeaza poziția utilizatorului o dată la 1.6 secunde.
 +  * Deoarece comunicarea seriala este bazata octet pe octet, va fi nevoie sa folosesc valori intre 0 si 255 si sa imi creez minimal un protocol de comunicație.
 +  * Memoria limitată a plăcuței Arduino face imposibilă utilizarea tehnicii double buffer pentru un display de 320x420.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2023/dene/dancingstickman.1685044894.txt.gz · Last modified: 2023/05/25 23:01 by daniel.nastase2109
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