Table of Contents

Sign Language Glove

  • Nume: Alexandru Mihai
  • Grupă: 333CA

Introducere

Proiectul își propune realizarea unei mănuși capabile să identifice semnele specifice ASL (American Sign Language). În funcție de postura mâinii purtătorului, se va afișa pe ecran mesajul corespunzătoare semnului interpretat.

Acest proiect este util, considerând că la momentul actual există un suport tehnologic limitat pentru persoanele cu deficiențe auditive în vederea comunicării cu alte persoane care nu cunosc limbajul. În plus, acest proiect prezintă o foarte mare scalabilitate, putând fi introduse noi semne sau mecanisme în vederea învățării autonome a unor expresii din limbaj.

Descriere generală

Dispozitivul are 3 componente principale:

În vederea realizării proiectului vor exista 2 etape principale.

Prima dată va fi necesară eșantionarea datelor primite de la senzori în vederea determinării rezistențelor ce definesc semnele interpretate. Datele vor fi prelucrate, interpretând valorile medii pentru fiecare semn reprezentat, cât și eroarea absolută permisă pentru fiecare semn. Din punct de vedere tehnic, vor fi utilizate lucrul cu timere în vederea obținerii unor date relevante regulat.

A doua etapă este cea de recunoaștere, în care se vor prelucra semnalele primite de la flex sensors și se va încerca maparea lor pe unul dintre semnele învățate anterior.

Hardware Design

Componente utilizate:

  • Arduino UNO
  • 5 rezistențe 10kOhm
  • Breadboard
  • 5 flex sensors
  • LCD display

Schema Circuitului

Schema Electrica

Descrierea circuitului

Alimentarea se realizează prin intermediul USB-ului integrat în placa microcontroller-ului și generează o tensiune de 5V pentru toate componentele sistemului.

Pinii analogici ai microcontroller-ului (A0-A4) determină tensiunea corespunzătoare care cade peste fiecare flex sensor. Pentru a măsura tensiunea corespunzătoare fiecare flex sensor este pus în serie cu o rezistență de 10kOhm, creându-se astfel un divizor de tensiune ce determină semnalul analogic preluat.

Pinii digitali ai microcontroller-ului (D7-D12) sunt legați la display-ul LCD pentru a putea afișa pe ecran litera dorită. Momentan circuitul este configurat pentru a afișa 'Unknown' în cazul în care litera nu este recunoscută sau 'A' în cazul în care se recunoaște aceasta literă. În plus, pentru a regla intensitatea display-ului LCD, am adăugat un potențiometru pe care l-am reglat astfel încât informația afișată să fie clară.

Decizii de implementare hardware

Am decis a coase flex senzorii de mănușă pentru a asigura totuși o mobilitate corespunzătoare mâinii (în cazul în care aceștia ar fi fost lipiți de mănușă, mișcarea ar fi fost limitată și ar fi putut să se rupă). Cablarea a constituit o problemă pentru că pinii senzorilor sunt foarte fragili și lipirea lor efectivă cu pastă conductoare nu a adus rezultatul dorit (nu se închidea circuitul). Așadar am ales de a sertiza 3 dintre senzorii, iar ceilalți 2 au fost lipiți simplu pentru a fixa cablurile de senzori.

Mănușa în stare nefuncțională

Mănușa în stare funcțională

Software Design

  • Mediu de dezvoltare: ArduinoIDE.
  • Biblioteci utilizate: LiquidCrystal, SoftwareSerial.

Demo - Youtube

Obținerea datelor

Prima etapă reprezintă etapa de obținere a datelor pentru fiecare senzor și fiecare mesaj. În acest scop, am decis ca fiecare semn să fie măsurat de câte minim 5 ori (întrucât, în cazul existenței unui outlier, măsurătoarea este eliminată și refăcută). Datorită modului de implementare a divizorului de tensiune, valorile oferite de senzori se află între 180 și 320, fiind o plajă suficient de largă pentru a putea eșantiona fiecare mesaj.

De asemenea, înainte fiecărei măsurători este necesară o calibrare mecanică a mănușii pentru a avea certitudinea că senzorii se află într-o poziție corespunzătoare.

Prelucrarea datelor

Pentru fiecare senzor și semn, am determinat media și deviația standard a valorilor obținute. Aceste valori sunt folosite pentru a determina un interval de încredere a măsurătorilor pentru un semn corespunzător, conform următoarei formule: [mean - 3 * std, mean + 3 * std] pentru fiecare senzor. În urma unei analize atente, am observat că intervalele respective sunt disjuncte, astfel încât fiecare semn este unic determinat.

Interpretarea semnelor

A doua etapă constă în identificarea semnelor pe baza unor măsurători aleatorii. Pentru fiecare semn și senzor, avem stocate în cadrul unor liste valorile mediei și deviației standard, urmând ca să iterăm prin aceste valori și să identificăm care dintre ele se potrivesc corespunzător semnului propus.

În cazul în care nu se obține o măsurătoare corectă, se afișează un mesaj pe eroare pe display.

Implementare și mențiuni

Proiectul se folosește de următoarele laboratoare în vederea realizării:

Am configurat timerul 1 al microcontroller-ului să genereze o întrerupere la fiecare secunda în vederea citirii senzorilor și interpretării semnelor corespunzătoare.

Display-ul LCD a fost configurat conform sample-ului din bibliografie. La fiecare secundă mesajul curent este șters, iar un nou mesaj este afișat conform semnului identificat. De asemenea, mesajul este afișat și pe serială, metodă utilizată în timpul procesului de debug și identificare a valorilor extreme.

Rezultate Obţinute

Device-ul este capabil să identifice 10 semne conform ASL:

Implementarea device-ului este fiabilă, intervalele de încredere pentru valorile senzorilor fiind generoase în vederea identificării semnelor.

Concluzii

Proiectul vine în ajutorul persoanele cu deficiente auditive pentru a le oferi un sprijin în comunicare. Acesta reprezintă un prototip și poate fi extins din mai multe considerente: pot fi adăugate semne noi într-un mod foarte facil folosind implementarea modulului de învățare, cât și integrarea unor modele de învățare automată pentru identificarea unor semne noi.

Prezintă o vastă aplicabilitate în domeniul medicinei, atât pentru persoanele cu deficiențe auditive cât și în vederea recunoașterii mișcărilor degetelor. De asemenea, poate fi folosită în vederea implementării unor module de automatizare a mișcărilor în jocuri (VR).

Download

Codurile sursă, cât și datele înregistrate se găsesc în următoarea arhivă.

pm_project.zip

Bibliografie/Resurse

Flex sensor 2.2"

Arduino super starter kit

Sign language signs

Sign language

Export to PDF