UNIVERSITATEA POLITEHNICA DIN BUCUREȘTI FACULTATEA TRANSPORTURI [303883]
UNIVERSITATEA „POLITEHNICA” DIN BUCUREȘTI
FACULTATEA TRANSPORTURI
Departamentul Telecomenzi și Electronică în Transporturi
Sisteme Inteligente pentru Transporturi
București
2020
UNIVERSITATEA „POLITEHNICA” DIN BUCUREȘTI
FACULTATEA TRANSPORTURI
Departamentul Telecomenzi și Electronică în Transporturi
Sisteme Inteligente pentru Transporturi
Echipament de detectare a stării de oboseala la bordul autovehiculelor
București
2020
[anonimizat] o dezvoltare fără precedent. [anonimizat] 23% din costul total al a autovehiculului. [anonimizat] 80% [anonimizat].
Începând cu 1970, se poate observa o creștere exponențială a [anonimizat]. Scopul principal al sistemelor electronice de pe autovehicule este acela de a [anonimizat] (motor), direcției (servodirecție electrică), sistemului de frânare (ABS, ESP) sau a suspensiei (suspensie activă).
În prezent companiile moderne de autovehicule continuă să prezinte noi funcții ale pilotului automat în modelele lor recente. [anonimizat]. Funcțiile actuale ale pilotului automate necesită supraveghere activă a șoferului și nu fac autovehiculul autonom.
[anonimizat] a raportat șoferi de test adormind la volan în timp ce se aflau la o viteza de 55 km/h pe autostradă.
Disponibilitatea de preluare a autovehiculului în scenarii de conducere în modul pilot automat reprezintă un factor important pentru siguranța participanților la trafic.
[anonimizat] a activității conducătorului auto prin monitorizarea ochilor. [anonimizat] o arhitectură bazată pe datele de urmărire a mișcării ochilor și a clipitului, analizându-se astfel mai multe trăsături.
Figura : Detector de somnolență
Această tehnologie va ajuta la prevenirea accidentelor cauzate de conducătorul auto care devine somnolent. Diverse studii au sugerat că aproximativ 20% din totalul accidentelor rutiere sunt legate de oboseală.
Studiu asupra stării de oboseala a șoferilor
Somnolenta la volan reprezintă una dintre cele mai întâlnite cauze ale accidentelor rutiere. Efectele oboselii pot fi comparate cu cele ale conducerii sub influenta alcoolului. [anonimizat] a [anonimizat].
Cauzele care provoacă somnolența sau oboseala includ:
Somn insuficient;
Oboseala acumulata în timp;
Tulburări ale somnului netratate;
Folosirea de medicamente sedative.
Somnolența sau oboseala pot cauza următoarele probleme:
[anonimizat], deficiențe în judecată;
Dificultăți în procesarea informațiilor;
Scăderea performantei, a motivației și a vigilenței;
Poate provoca un comportament irascibil și agresiv.
Incidența accidentelor cauzate de oboseală are loc de cele mai multe ori între orele 2:00-6:00 și 14:00-16:00. Există o probabilitate de 20 de ori mai mare ca un conducător auto să adoarmă la volan la ora 6:00, comparativ cu ora 10:00.
Autostrăzile sunt drumurile unde sunt întâlnite majoritatea accidentelor provocate de oboseala la volan, din cauza, pe de o parte a monotoniei peisajului, pe de alta, a lipsei de stimuli pentru șoferi.
Un studiu realizat pe conducătorii auto profesioniști, a indicat faptul ca sunt necesare între 9-10 ore de șofat pentru ca riscul de a avea un accident din cauza oboselii să înceapă să crească, după această perioadă, riscul se dublează.
Accidentele rutiere provocate de oboseala au o probabilitate de două ori mai mare să fie fatale comparativ cu alte tipuri de accidente deoarece nu poți frâna dacă ești adormit.
Conform unui studiu realizat de AAA (Foundation for Traffic Safety) pe 3500 de conducători auto din Statele Unite, monitorizați pe o perioadă de șase luni prin intermediul unor camere montate la bord, s-a demonstrat că aceștia au fost implicați în 700 de accidente rutiere, starea de somnolență / oboseală fiind cauza a 9,5% dintre acestea.
In funcție de țară și de regiune, datele statistice indică faptul ca oboseala și somnolența la volan pot cauza între 10% si 30% din totalul accidentelor rutiere.
Conform datelor Inspectoratului General al Poliției, în România, în anul 2017, 190 de accidente rutiere soldate cu 227 de victime au fost provocate de șoferi care au adormit la volan, cele mai multe dintre acestea având loc în week-enduri, pe drumurile naționale.
Din nefericire România ocupă locul 10 în topul accidentelor rutiere produse pe fondul ațipirii la volan. Peste un milion de români suferă de tulburări ale somnului, însă doar 5.000 sunt diagnosticați.
Electronica la bordul autovehiculelor
Electronica în autovehicule
În fiecare an, autovehiculele par a fi din ce în ce mai complicate. Autovehiculele de astăzi pot avea până la 50 de microprocesoare pe ele. Aceste microprocesoare fac ca autovehiculul dumneavoastră să fie mult mai fiabil și ușor de diagnosticat. Unele dintre motivele acestei creșteri a numărului de microprocesoare sunt:
noi caracteristici de siguranță;
noi facilități de confort;
necesitatea unor sisteme de control sofisticate ale motorului pentru a respecta standardele privind emisiile și consumul de combustibil;
diagnosticare avansată;
simplificarea fabricării și proiectării autovehiculelor;
reducerea cantității de cabluri în autovehicule.
ECU (unitatea de control electronică)
Controlul motorului este sarcina cea mai mare de procesare pe mașină, iar unitatea de control electronică (ECU) este cel mai puternic calculator de pe majoritatea autovehiculelor. Acesta asigură controlul amestecului de aer si de carburant, controlul aprinderii, în cazul motoarelor cu aprindere prin scânteie și controlul timpilor de injecție. De asemenea, ECU mai controlează și timpii de acționare a valvelor, precum și presiunea turbinei, în cazul motoarelor turbo sau funcționarea pilotului automat.
BCM (modulul de control al caroseriei)
Modulul de control al caroseriei (BCM) este unitatea electronică de control care monitorizează și controlează toate sistemele caroserie. Geamurile electrice, funcțiile A/C, oglinzile electrice, încuietorile electrice, sistemele de securitate, sistemul de pilot automat etc.
Acesta comunica cu toate celelalte module prin rețeaua CAN a autovehiculului.
Magistrala CAN (controller-area networking)
Magistralele de comunicații implementează diferitele standarde de comunicații care sunt utilizate pe autovehicule. Există mai multe standarde utilizate, dar cel care începe să domine comunicațiile în mașină se numește CAN. Un avantaj al unei magistrale de comunicații este că fiecare modul poate comunica defecțiuni unui modul central care stochează defectele și le poate comunica unui instrument de diagnosticare off-board. Acest lucru poate facilita diagnosticarea problemelor pentru tehnicieni, în special, a problemelor intermitente.[1]
Senzori inteligenți, integrați cu toate electronicele autovehiculului, împreună cu un microprocesor, permit citirea tensiunilor și calibrarea acestora folosind curbele de compensare a tensiunilor. Un alt avantaj al senzorilor inteligenți este că semnalul digital ce trece prin magistrala de comunicații este mai puțin sensibil la zgomotul electric. O tensiune analogică care se deplasează printr-un cablu poate ridica o tensiune suplimentară atunci când trece pe lângă anumite componente electrice sau chiar de la linii electrice aeriene.
Magistralele de comunicații și microprocesoarele ajută, de asemenea, la simplificarea cablării prin multiplexare. Multiplexarea este o tehnică ce simplifică cablarea într-un autovehicul. În autovehiculele mai vechi, firele de la fiecare întrerupător rulau la dispozitivul pe care îl comandau. Cu tot mai multe dispozitive la comanda șoferului în fiecare an, multiplexarea este necesară pentru reducerea numărului cablurilor. Într-un sistem multiplexat, un modul care conține cel puțin un microprocesor consolidează intrările și ieșirile pentru o zonă a mașinii.
Figura : Sisteme electronice
Unitatea de control electronică sau ECU (Electronic control unit)
De la explozia electronică din domeniul auto, soluțiile electronice s-au dovedit a fi fiabile în timp și au permis rezolvarea problemelor de fiabilitate și eficiență. Electronica în autovehiculele de astăzi a făcut trecerea de la componente simple la circuite integrate complexe, care încorporează în proces capacitatea de interfațare ale sistemelor analogice cu flexibilitatea electronicii digitale.
Sistemele electronice ale autovehiculelor pot fi împărțite în patru categorii principale:
"Powertrain Drive", care constă în gestionarea electronică a motoarelor, transmisia electronică, rețelele electronice;
sisteme de siguranță, cum ar fi sistemele de frână anti blocare, sistemul de declanșare a airbag urilor, sistemele anti-furt, sistemele de suspensie, de direcție, de deplasare;
sisteme de confort, cum ar fi aerul condiționat, reglarea scaunelor, afișajele bordului;
sisteme de comunicații, cum ar fi sistemul de poziționare globală, recepția radio, sistemele informatice.
Fiecare dintre aceste sisteme necesită o unitate electronică de control (ECU) pentru o performanță eficientă.
Managementul electronic al motorului este știința dotării, controlului electronic și calibrării unui motor pentru a menține performanțele de top și economia de combustibil, obținând în același timp cel mai curat flux posibil de evacuare și diagnosticarea continuă a defecțiunilor sistemului. Datorită cerinței de reducere a emisiilor, împreună cu necesitatea unei performanțe mai bune, sistemele electronice reprezintă o parte importantă a managementului motorului.
Intrări și ieșiri ale unității de control electronic și conectare la rețeaua CAN:
Figura : Intrări și ieșiri ECU
În funcție de tipul motorului, benzină sau diesel, sau de sistemele auxiliare ale acestuia, conectorul are un număr variabil de pini (intrări de la senzori, comanda actuatoarelor, alimentare etc.). La un motor modern, calculatorul de injecție poate depăși ușor 100 de pini.
Figura : ECU
Din punct de vedere funcțional, un ECU are următoarele componente:
blocul de alimentare de la baterie (+BAT);
blocul de procesare a semnalelor de intrare;
unitatea centrală de procesare CPU (microcontroler);
memoria non-volatilă (EEPROM);
modulul de monitorizare;
etajul de amplificare a comenzii actuatoarelor.
Figura : Componente ECU
Microcontrolerul
Microcontrolerul este componenta electronică care realizează operațiile matematice și logice ale algoritmului de control. Acesta conține, la rândul lui, o memorie Flash EEPROM, o memorie RAM, un convertor A/D (analogic-digital) și un modul CAN.
Flash EPROM
Această memorie este partajată de algoritmul de control al motorului. Conținutul memoriei Flash EPROM poate fi reprogramat atât în zona algoritmului, cât și a parametrizării, specificând zona de memorie ce se dorește a fi reprogramată. În cazul acestui tip de memorie, la reprogramare, se șterge și se rescrie tot conținutul dintr-o anumită zonă, nu se poate șterge individual o anume adresă de memorie.
RAM
Informațiile stocate în memoria RAM pot fi accesate direct, prin specificarea adresei din memorie. Datele pot fi scrise și citite de câte ori este nevoie, fără restricții. Această memorie este utilizată în timpul funcționării motorului și conține toate variabilele din algoritmul de control care sunt modificate (calculate). La oprirea motorului (întreruperea alimentării cu energie electrică), tot conținutul memoriei RAM este pierdut, cu excepția informației salvate în memoria non volatilă.
Convertor A/D
Semnalele de intrare în calculatorul de injecție, în funcție de tipul senzorului, pot fi analogice sau digitale. Un semnal analogic (poziția pedalei de accelerație, presiunea de supraalimentare etc.) este, de fapt, o tensiune electrică, de obicei între 0 … 5V pentru senzori și 0 … 15V pentru bateria de acumulatori . Conversia acestora în valoare digitală, care poate fi interpretată de calculatorul de injecție, se face cu ajutorul unui convertor analog-digital.
Anumiți senzori (cu efect Hall sau contacte), trimit semnalele digitale către calculatorul de injecție. Acestea au două nivele logice, 0 sau 1, reprezentate de 0V sau 5V. Microcontrolerul procesează direct aceste semnale, fără a avea nevoie de o conversie adițională.
Modulul CAN
Acesta realizează comunicarea cu restul calculatoarelor de pe automobil (ABS, BCM, TCU etc.) și cu dispozitivele de diagnoză (scantool, aftersales).
Memoria EEPROM
Datele care nu trebuie pierdute la oprirea alimentării calculatorului de injecție (coduri de eroare, km parcurși, codul imobilizatorului etc.) sunt stocate în memoria EEPROM (non-volatilă sau KAM). Datele conținute în acest tip de memorie, ca și memoria Flash EPROM, se pot șterge. Avantajul acestui tip de memorie este că poate șterge adrese de memorie individuale. De exemplu, se pot șterge doar codurile de eroare, fără a afecta celelalte date memorate.
Modulul de control al caroseriei sau BCM (Body control module)
Modulul de control al caroseriei acționează ca și creierul unui autovehicul. Acesta centralizează și controlează funcțiile caroseriei autovehiculului, dar nu controlează niciuna din funcțiile motorului.
Arhitectura software a BCM-ului trebuie să devină tot mai complexă, deoarece este practic principalul sistem încorporat care este responsabil de controlul unităților electrice.
Un modul de control al caroseriei poate îndeplini o gamă largă de funcții. Dispozitivele de ieșire sunt gestionate pe baza datelor primite de la dispozitivele de intrare prin rețeaua CAN (Controller Area Network) sau rețeaua LIN (Local Interconnect Network). Sistemele electronice care pot fi integrate și controlate prin intermediul unui BCM includ:
sisteme de gestionare a energiei;
alarma autovehicul;
sistemul de imobilizare;
sisteme de autorizare acces / șofer;
sisteme avansate de asistență;
geamuri electrice.
Intrări și ieșiri ale modulului de control al caroseriei și conectare la rețeaua CAN:
Figura : Intrări și ieșiri BCM
Din punct de vedere funcțional, un ECU are următoarele componente:
sursa de alimentare;
filtru de intrare;
unitatea centrala de procesare CPU (microcontroler) ;
blocul de procesare a semnalelor de intrare;
receptor radio;
blocul de procesare a semnalelor de ieșire (high level si low level).
Figura : Componente BCM
Microcontrolerul este componenta electronică care realizează operațiile matematice și logice ale algoritmului de control. Acesta conține, la rândul lui, o memorie Flash EEPROM, o memorie RAM, un convertor A/D (analogic-digital) și un modul CAN.
Protocoale de comunicație pentru automobile
Protocoalele de comunicație utilizate în industria autovehiculelor se clasifică, în principal, în funcție de viteza de transmitere a datelor. SAE (Society of Automotive Engineers), societatea inginerilor de automobile, propune următoarea clasificare a sistemelor/rețelelor de comunicație:
Tabelul 1: Clasificarea sistemelor/rețelelor de comunicație
Protocolul de comunicație LIN
LIN (Local Interconnect Network) este o interfață care realizează o comunicație serială asincronă, punct la punct pe un singur fir.
Rata maximă de transfer este de 4 Mb și distanță de transmisie, în funcție de transceiverul folosit, este de câțiva metri.
Unul dintre circuitele conectate la LIN trebuie să fie master, iar celelalte, slave. Masterul generează un nivel space pe perioada 13-16 biți, urmat de un cuvânt 55H.
Ca și slave, interfața LIN detectează trecerea liniei în space și calculează viteza de transmisie din cuvântul 55H recepționat.
Ca avantaje, se pot menționa: simplitatea interfeței, ușurința de programare, viteza mare de transfer, transferul pe un singur fir.
Distanța de transfer este suficientă pentru aplicații în interiorul autovehiculului.
Un dezavantaj major este lipsa siguranței în funcționare, de aceea softul trebuie să se rezume la aplicații care nu afectează siguranța autovehiculului.
Figura : Aplicații specifice LIN
Protocolul Master/Slave
Master
Deține controlul asupra întregii Magistrale și a Protocolului.
Masterul controlează care mesaj urmează și perioada de implementare pentru a fi transmis pe magistrală. Se ocupă și de manipularea/coordonarea erorilor.
Pentru îndeplinirea acestor sarcini Masterul:
trimite Sync Break;
trimite Sync Byte;
trimite ID-Field;
monitorizează Data Bytes and Check Byte și îi evaluează;
primește WakeUp Break de la nodurile slave atunci când magistrala este inactivă și când solicită unele acțiuni;
servește ca referință cu baza sa de timp (necesar un clock stabil).
Slave
Este unul din cei 2-16 Membri de pe Magistrală și primește/transmite date în momentul în care un ID corespunzător este trimis de Master.
Slave-ul urmărește ID-urile de pe magistrală;
Conform ID, slave hotărăște ce sa facă:
fie primește date;
fie transmite date;
fie nu face nimic.
Slave – când transmite, trimite:
1, 2, 4, sau 8 Data Bytes;
Check-Byte.
Figura : Transmiterea datelor
Lungimea frame-urilor de mesaje
Frame-urile de mesaje încep cu un câmp de sincronizare și se termină cu un câmp sumă de verificare. Câmpurile de mesaje din frame-ul de mesaje sunt despărțite de spații între octeți și un spațiu de răspuns. Lungimea acestor spații nu este definită, ci numai lungimea totală a frame-ului de mesaje, este limitată. Lungimea minimă este timpul minim necesar transmiterii unui frame complet (mărimea spațiilor este 0). Lungimea maximă este timpul maxim permis pentru transmisia unui frame. Ele sunt dependente de numărul câmpurilor de date și nu includ întârzierile inerente datorate sistemului.
Filtrarea mesajelor
Se bazează pe întreg identificatorul. Trebuie asigurat faptul că nu mai mult de un slave task să răspundă la acel identificator.
Validarea mesajelor
Mesajul este valid, atât pentru transmițător, cât și pentru receptor, dacă nu se detectează nici o eroare până la sfârșitul frame-ului. Dacă un mesaj este corupt, este considerat de master și slave ca netransmis.
Detecția erorilor
Există 6 tipuri de mesaje de eroare :
eroare de bit: cel care trimite un bit monitorizează și magistrala. Eroarea apare dacă valoarea bitului monitorizat este diferită de cea a bitului trimis;
eroare de sumă de control: apare dacă suma dintre suma inversată modulo 256 a tuturor octeților recepționați și suma de control nu este ’0xFF’;
eroare identificator paritate: aplicațiile LIN obișnuite nu deosebesc un identificator valid, dar necunoscut și unul corupt. Totuși, este obligatoriu pentru toate nodurile slave, ca pentru un identificator cunoscut să se evalueze toți cei 8 biți din câmpul ID să distingă identificatorii cunoscuți și cei corupți;
eroarea de nerăspundere a slave-ului: este detectată dacă frame-ul de mesaje nu este transmis complet în lungimea maximă permisă de nici un slave task în urma transmiterii câmpurilor de sincronizare și identificatorului;
eroare de câmp de sincronizare: se detectează dacă un slave detectează fronturile câmpului de sincronizare în afara toleranțelor admise;
eroare de inactivitate pe bus: se detectează dacă nu s-a primit niciun câmp de sincronizare sau un octet în intervalul TIMEOUT de la recepția ultimului mesaj valid.
Semnalizarea erorilor
Detecția erorilor nu se face de către protocolul LIN. Erorile sunt semnalizate în interiorul fiecărui nod și trebuie să fie accesibile de către „fault confinement”.
„Fault confinement” se bazează pe nodul master care se va ocupa cât mai mult de detecția erorilor, recuperarea în urma erorilor și diagnosticul. Este foarte dependent de cerințele sistemului și, prin urmare, nu face parte din protocolul LIN, cu excepția unor aspecte.
Protocolul de comunicație CAN
CAN (Controller Area Network) este un protocol de comunicație de tip magistrală (bus) utilizat pe scară largă în industria autovehiculelor. Prin intermediul protocolului CAN, calculatoarele autovehiculului schimbă informații între ele pentru a facilita sau optimiza funcțiile de control ale diverselor sisteme.
Protocolul CAN este un sistem de comunicație serial, în timp real, utilizat pentru sisteme distribuite. Dezvoltarea acestuia a fost inițiată de compania Bosch Gmbh în anul 1983. Motivul utilizării unui sistem de comunicație tip magistrală a fost determinat de numărul tot mai mare de calculatoare și componente electronice utilizate la autovehicule.
Tipuri de rețele CAN
Protocolul CAN, în funcție de viteza de transfer a datelor, este de două feluri:
CAN HS (High Speed) – viteză mare;
CAN LS (Low Speed) – viteză mică.
CAN HS poate avea viteza de transfer a datelor de 125, 250, 500 sau 1000 kb/s. Datorită vitezei mari de transfer a datelor, este utilizat cu precădere pentru motor, cutie de viteze și sistemele de siguranță activă (ABS, ESP).
CAN LS are viteza de transfer între 40 și 125 kb/s. Protocolul CAN LS are avantajul de a fi tolerant la erori (fault tolerant). În cazul în care unul din cele două fire este întrerupt, comunicația se realizează pe un singur fir. Acest tip de protocol CAN este utilizat cu precădere la închiderea centralizată și la imobilizator, datorită funcționării și în regim de avarie.
Lungimea magistralei CAN
Informația se transmite cu ajutorul unui circuit integrat de emisie-recepție pe magistrala CAN ce este formată din două fire răsucite pentru a elimina perturbațiile electromagnetice.
Lungimea maxima a magistralei poate ajunge pana la 250 de metri, în cazul CAN HS și pana la 50 de metri, în cazul CAN LS. Rețeaua CAN poate suporta conectarea a 50 de calculatoare. La capetele acestei magistrale se montează rezistențe electrice cu o valoare de 120 de ohm pentru a crește impedanța rețelei, în scopul eliminării fenomenului de reflexie a semnalelor.
Calculatoare conectate la rețeaua CAN:
ECU (Electronic control unit) – unitatea de control electronică
TCU (Transmission Control Unit) – calculatorul transmisiei automate;
ABS (Anti-lock Braking System) – calculatorul sistemului de frânare;
BCM (Body Control Module) – modulul de control al caroseriei;
Roof (Plafon) – calculatorul pentru controlul trapei;
Seat (Scaun) – calculatorul pentru controlul scaunelor;
Clim (climatizare) – calculatorul pentru controlul climatizării;
Diag. (diagnostic) – conectorul de diagnosticare.
Diagrama pilotului automat
Figura : Diagrama bloc a pilotului automat
Sisteme de avertizare pentru pilotul automat oferite de producătorii de autovehicule
Producătorii de autovehicule utilizează camere minuscule, senzori pentru a urmări poziția capului, monitorizarea volanului și alerte sonore pentru a se asigura că șoferi acordă atenție atunci când folosesc sisteme avansate de asistență a șoferului, cum ar fi pilotului automat.
Mai mulți producători de autovehicule oferă sisteme de detectarea somnolenței
BMW
BMW utilizează o cameră video în autovehicul pentru a rezolva o provocare critică cu sistemele de pilot automat, asigurându-se că conducătorii auto acordă atenție drumului.
Figura : Sistemul de monitorizare oferit de BMW
Ford
Sistemul de monitorizare pentru conducătorii auto este format dintr-o cameră mică orientată spre trafic conectată la un computer de bord. Camera este montată pe partea din spate a oglinzii retrovizoare și este antrenată să identifice marcajele benzii pe ambele părți ale vehiculului.
Când vehiculul este în mișcare, computerul se uită la drum înainte și prevede unde ar trebui poziționat autoturismul în raport cu marcajele benzii. Apoi măsoară unde se află efectiv autovehiculul și dacă diferența este semnificativă, sistemul emite un avertisment.
Figura : Sistemul de monitorizare oferit de FORD
Mercedes
Sistemul oferit de Mercedes întocmește un profil individual al stilului de condus al conducătorului auto, care este comparat în permanență cu cele mai recente feedback-uri ale senzorilor. În centrul sistemului se află un senzor extrem de sensibil, care înregistrează mișcările de direcție și viteza .
Studiile efectuate de Mercedes-Benz au relevat faptul că șoferii obosiți își schimbă comportamentul la volan și fac mici erori de direcție pe care apoi le corectează de regulă imediat. Dacă sistemul detectează acest tip de comportament, va emite o alarmă audio și vizuală, „Timp pentru o pauză”. În unele modele, de asemenea, se poate afișa nivelul de atenție detectat în tabloul de bord sau chiar se pot obține indicații de la sistemul de navigație către cea mai apropiată zonă de odihnă.
Figura : Sistemul de monitorizare oferit de MERCEDES
Nissan
Conducătorii auto, de obicei, fac mici ajustări și corecții asupra volanului în timp ce navighează pe un drum și este frecvent ca conducătorii auto obosiți să oprească mișcarea volanului sau să încetinească mișcările acestora.
Sistemul monitorizează poziția volanului iar când va detecta acest tip de comportament, acesta va afișa pe tabloul de bord mesajul “Take a Break?” însoțit de o pictogramă cu o ceașcă de cafea.
Figura : Sistemul de monitorizare oferit de NISSAN
Subaru
Sistemul folosește o cameră video dedicată și un software de recunoaștere facială ce urmărește activitatea conducătorului auto pentru a calcula două etape de oboseală – somnolent și extrem de somnolent. Dacă conducătorul auto este recunoscut ca fiind extrem de somnolent sau amețit, un avertisment vizual și sonor îi va avertiza. Dacă autovehiculul este echipat cu un sistem de navigație prin satelit, acesta va emite sunetul prin acesta, astfel încât semnalul este întotdeauna clar.
Când sistemul observă un autovehicul în față, avertizarea de somnolenta se face mai devreme pentru a oferi mai mult timp pentru a reacționa.
Figura : Sistemul de monitorizare oferit de SUBARU
VW
Sistemul oferit de VW monitorizează îndeaproape comportamentul conducătorului auto, remarcând orice mișcare neregulată a volanului, utilizarea pedalelor și orice abateri ale benzii (Lane Assist), astfel încât poate judeca momentul în care conducătorul auto începe să se simtă somnolent și trebuie să se oprească și să facă o pauză.
Dacă sistemul detectează că șoferul începe să își piardă concentrarea, acesta va fi avertizat cu un afișaj vizual pe tabloul de bord și un sunet de avertizare. Dacă nu a fost efectuată o pauză în următoarele 15 minute, sistemul va repeta avertizarea.
Figura : Sistemul de monitorizare oferit de VW
Proiectarea software a echipamentului
Sistemul include o cameră video orientată să genereze imagini ale șoferului, inclusiv ochii. Acesta include, de asemenea, un procesor pentru procesarea imaginilor generate de camera video. Procesorul monitorizează imaginea dobândită și stabilește dacă ochiul este într-o poziție deschisă sau una închisă. Procesorul determină în plus o proporție de timp de închidere a ochilor ca fiind proporția unui interval de timp în care ochiul este în poziția închisă și determină o stare de somnolență atunci când proporția de timp depășește o valoare de prag.
Sistemul detectorului de somnolență va utiliza o singură cameră video color pentru a captura imagini din habitaclu. Camera este montată ferm pe partea șoferului pentru a vedea partea superioară a corpului acestuia.
Analiza imaginilor se va realiza cu ajutorul algoritmului de urmărire al ochilor (Eye tracking) și detecția mișcării (Motion detection).
Detecția ochilor
Algoritmii utilizați în mod obișnuit pentru detectarea ochilor includ transformata Hough, potrivirea șabloanelor prestabilite, analiza componentelor principale (PCA) și algoritmul Adaboost. În această lucrare, ochiul este detectat cu ajutorul detectări reperelor faciale pentru localizarea regiunilor importante ale feței.
Detecția clipiri
Clipitul este detectat cu ajutorul raportul aspectului ochilor (EAR), introdus de Soukupová și Čech în lucrarea lor din 2016, “Detectarea în timp real a clipitului folosind repere faciale”.
Extragerea trăsăturilor imagistice
Repere faciale
Detectorul de reper facial pre-instruit, iBUG 300W, din biblioteca dlib este utilizat pentru a estima locația a 68 de coordonate (x, y) care se potrivesc cu structurile faciale.
Figura : Vizualizarea celor 68 de coordonate ale reperului facial din setul de date iBUG 300W
Baza de date IBUG a fost lansată ca parte a primei versiuni 300-W. Aceasta este formată din 135 de imagini descărcate de pe web, cu variații mari în expresie, condiții de iluminare și posturi.
Detectarea reperelor faciale folosește o imagine de intrare și un detector de forme care încearcă să localizeze punctele cheie de interes de-a lungul feței.
Prin urmare, detecția reperelor facile este un proces format din două etape:
1.Localizarea feței în imaginea.
Pentru această primă etapă vom aplica un detector de obiecte Histograma gradienților orientați (HOG) și algoritmul de clasificare SVM (Mașini cu vectori suport) pre-instruit pentru sarcina de detecție a feței.
2.Detecția structurilor faciale.
Detectoarele de repere faciale încearcă, să localizeze și să eticheteze următoarele regiuni faciale:
-Gura;
-Nasul;
-Maxilarul;
-Ochiul stâng și cel drept;
-Sprânceana din stânga și din dreapta.
Metoda de detecție începe cu un set de date de antrenament cu repere faciale etichetate manual pe o imagine. Aceste imagini fac parte dintr-o bibliotecă ce specifică coordonatele (x,y) ale regiunilor ce înconjoară fiecare structură facială.
Utilizând acest set de date, un set de arbori de regresie sunt antrenați pentru a estima pozițiile reperelor faciale cu ajutorul intensității pixelilor.
Histograma gradienților orientați (HOG)
Descriptori HOG, sunt descriptori de trăsături folosiți în procesarea de imagini cu scopul detecție obiectelor. Tehnica este bazată pe monitorizarea numărul de apariții al orientării unui gradient (variație pe unitatea de lungime a unei mărimi scalare)într-o anumită regiune a imagini.
Ideea principală este ca aspectul local și forma unui obiect dintr-o imagine să fie descris de distribuția intensității gradienților și de distribuția orientării muchiilor.
Figura : Model de față generat de HOG.
Calcularea valorilor gradientului se face prin aplicarea filtrelor de derivare unidimensională pe orizontală și verticală. Filtrarea se face cu două nuclee de convoluție:
Folosind un operator de convoluție și vom obține derivate orizontale și verticale.
Magnitudinea gradientului este: iar orientarea gradientului este .
Al doilea pas constă în crearea histogramei pentru fiecare celulă în parte. Fiecare pixel ce formează această celulă va fi reprezentat în histograma rezultată.
Figura : Magnitudinea gradientului
Figura : Împărțirea în celule
Pentru a ține cont de variațiile de luminozitate și contrast va avea loc gruparea celulelor în structuri mai mari (blocuri) pentru a normaliza local magnitudinea gradienților. Din componentele normalizate ale histogramei va rezulta descriptorul HOG. Blocurile se suprapun parțial pentru ca fiecare celulă să contribuie de mai multe ori la descriptorul final.
Normalizarea blocurilor
Factorul de normalizare se calculează cu una dintre ecuațiile de mai jos:
v = vectorul ne-normalizat ce conține toate histogramele unui bloc;
= este norma k pentru k = 1, 2;
e = constantă de valoare foarte mică.
Măsurarea de similaritate
Distanța Euclidiană dintre doi vectori și este:
Mașini cu vectori suport (SVM)
În principal, avem de-a face cu o problemă de două clase (somnolentă sau non-somnolentă). Am ales SVM, deoarece este utilizat în mod generic pentru probleme de clasificare binară și are atribute care îl fac să se potrivească perfect.
SVM este un set de metode de învățare supravegheate utilizate pentru clasificare, regresie și detectarea valorilor exterioare. Acesta utilizează un subset de puncte de instruire în funcția decizională numiți vectori suport. Pentru funcția de decizie pot fi specificate diferite funcții Kernel.
Un SVM creează un hyper-plan sau un set de hyper-planuri într-un spațiu dimensional mare sau infinit ce poate fi folosit pentru clasificare, regresie sau alte obiective.
O separare bună se realizează prin hyper-planul care are cea mai mare distanță până la cele mai apropiate puncte de date de formare ale oricărei clase (așa-numita marjă funcțională), deoarece, în general, cu cât marja este mai mare cu atât scade eroarea de generalizare a clasificatorului.
Figura de mai jos arată funcția de decizie pentru o problemă de separare liniară, cu trei probe pe limitele marjei, numite „vectori suport”:
Figura : Funcția de decizie pentru o problemă de separare liniară
Suprafața de separare este descrisă de ecuația:
-w și x reprezintă vectorii;
-b reprezintă un scalar.
Produsul scalar al celor doi vectori este:
-n reprezintă dimensiunea vectorilor.
Metoda SVM presupune ca ecuațiile suprafețelor de separare sa fie normalizate.
Cele două clase vor avea limitele care trec prin vectori suport:
Figura : Vectorii suport și ilustrarea noțiunilor caracteristice problemei
Clasificarea propriu-zisă presupune determinarea parametrilor w și b care maximizează marginea de separare dintre clase.
Detectarea clipului în timp real folosind repere faciale
Algoritmul propus estimează pozițiile reperului, extrage o singură cantitate scalară – raportul aspectului ochilor (EAR), caracterizând deschiderea ochiului în fiecare cadru. În cele din urmă, un clasificator SVM detectează clipirea ochilor ca un model de valori EAR într-o fereastră temporală scurtă.
Raportul aspectului ochilor (EAR)
Metodele existente sunt active sau pasive:
-Metodele active sunt fiabile, dar folosesc echipamente hardware speciale, adesea scumpe și intruzive, de exemplu camere de iluminat cu infraroșu și iluminatoare, dispozitive care pot fi purtate, ochelari cu o cameră video specială care observă ochii.
-Metodele pasive se bazează doar pe o cameră la distanță standard.
În această lucrare am studiat sistemul pasiv.
În ceea ce privește detectarea clipirii, ne interesează doar două seturi de structuri faciale și anume ochii.
Fiecare ochi este reprezentat de 6 coordonate (x, y), începând din colțul stâng al ochiului și apoi în sens orar în jurul restului regiunii:
Figura : Cele 6 repere faciale asociate ochiului.
Între aceste coordonate există o relație între lățimea și înălțimea.
Pe baza lucrărilor de detecție în timp real al clipului folosind repere faciale, putem deriva o ecuație care reflectă această relație numită raportul aspectului ochilor (Eye Aspet Ratio):
Unde,…, sunt puncte de reper faciale 2D.
Numărătorul acestei ecuații calculează distanța dintre reperele ochiului verticale, în timp ce numitorul calculează distanta dintre repere ochi orizontale, cântărind numitorul corespunzător, deoarece există un singur set de puncte orizontale, dar două seturi de puncte verticale.???
Folosind această ecuație simplă, putem evita tehnicile de procesare a imaginii și ne putem baza pur și simplu pe raportul dintre distanțele de reper ale ochilor pentru a determina dacă o persoană clipește.
Pentru a face acest lucru mai clar, vom demonstra rezultatele în imaginile de mai jos:
Figura : În stânga: O vizualizare a reperelor oculare atunci când ochiul este deschis. În dreapta: repere ale ochilor când ochiul este închis
În partea din stângă sus avem un ochi complet deschis deci raportul aspectului ochiului aici ar fi mare și relativ constant în timp.
În partea din dreapta putem observa că odată ce persoana clipește raportul aspectului ochi scade dramatic, apropiindu-se de zero.
În timpul închiderii ochilor, rezultatul EAR va fi aproximativ 0, în timp ce în timpul ochilor deschise, EAR poate fi orice număr întreg x mai mare decât 0.
Vect
orii suport și ilustrarea noțiunilor caracteristice problemei
Vect
orii suport și ilustrarea noțiunilor caracteristice problemei
Vect
orii suport și ilustrarea noțiunilor caracteristice problemei
Funcționarea sistemului
Figura : Analiza datelor
Tehnologii software
Construirea aplicației detectorului de somnolență
Instalarea dependente
OpenCV este o bibliotecă open-source (pune la dispoziție anumite produse finite, lăsând utilizatorii să o modifice și să o îmbunătățească fără nici un fel de obligație) pentru domeniul prelucrării de imagini și nu numai, dezvoltată inițial de către Intel. Biblioteca este are interfețe pentru C/C++, Python, Java, Matlab și rulează pe Windows, Linux și Mac OS X. Această tehnologie se bazează în mod special pe procesarea imaginilor în timp continuu. În acest moment biblioteca OpenCV suportă capturi în timp continuu, detecția obiectelor , aplicarea filtrelor simple pe imagini.
Etape necesare instalări
Înainte de a începe scrierea programului în compilatorul Python este necesar sa instalăm dependențele și librăriile ce le vom utiliza. În continuare voi explica pași necesari instalări:
Pe unitatea RaspberryPi vom instala sistemul de operare Raspbian.
În continuare vom face un update al pachetelor de sistem:
sudo apt-get update
sudo apt-get upgrade
Instalarea dependentelor înainte de a instala OpenCV și instalarea OpenCV:
sudo apt-get remove x264 libx264-dev
sudo apt-get install build-essential checkinstall cmake pkg-config yasm# GNU Fortran compiler
sudo apt-get install git gfortran
sudo apt-get install libtiff5-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get install libxine2-dev libv4l-dev
sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libvorbis-dev libxvidcore-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install x264 v4l-utils
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-devsudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
Instalarea librăriei pentru Python
sudo apt-get install python-dev python-pip python3-dev python3-pip
sudo -H pip2 install -U pip numpy
sudo -H pip3 install -U pip numpy
Instalare Virtual Environment:
sudo pip2 install virtualenv virtualenvwrapper
sudo pip3 install virtualenv virtualenvwrapper
echo "# Virtual Environment Wrapper" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
mkvirtualenv env-py2 -p python2
workon env-py2
pip install numpy scipy matplotlib scikit-image scikit-learn
mkvirtualenv env-py3 -p python3
workon env-py3
pip install numpy scipy matplotlib scikit-image scikit-learn
Instalare și configurarea OpenCV
// Download and Unzip OpenCV 3.1.0 at home (~) directory
cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
// Download and Install OpenCV_Contrib file at home (~) directory
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip
Instalarea Dlib:
pip install dlib
Dlib este un set de instrumente C ++ modern care conține algoritmi și instrumente de învățare automată pentru crearea de software complex în C ++ pentru rezolvarea problemelor din lumea reală. Din perspectiva viziunii computerizate, are o serie de implementări de ultimă generație, inclusiv:
Detecția faciala a reperului.
Urmărirea corelației.
Aplicație software
Organigrama programului pentru microcontroler
Figura : Schema logică
Software microcontroler
În continuare vom descrie aplicația folosită pentru implementarea detectorului.
Pentru a începe implementarea noastră, am creat un fișier nou denumit detect_drowsiness.py în care voi introduce următorul cod:
# import pachete necesare
from scipy.spatial import distance as dist
from imutils.video import VideoStream
from imutils import face_utils
from threading import Thread
import numpy as np
import playsound
import argparse
import imutils
import time
import dlib
import cv2
def sound_alarm(path):
# rularea sunetului de alarmă
playsound.playsound(path)
def eye_aspect_ratio(eye):
# calculul distanței euclidiene intre cele doua
#seturi de coordonate ale ochilor (x, y)
A = dist.euclidean(eye[1], eye[5])
B = dist.euclidean(eye[2], eye[4])
# calculul distanței euclidiene pe orizontală
#seturi de coordonate ale ochilor (x, y)
C = dist.euclidean(eye[0], eye[3])
# calculul raportul aspectului ochilor
ear = (A + B) / (2.0 * C)
# raportul aspectului ochiului
return ear
ap = argparse.ArgumentParser()
ap.add_argument("-p", "–shape-predictor", required=True,
help="path to facial landmark predictor")
ap.add_argument("-a", "–alarm", type=str, default="",
help="path alarm .WAV file")
ap.add_argument("-w", "–webcam", type=int, default=0,
help="index of webcam on system")
args = vars(ap.parse_args())
# definire a două constante, una pentru indicarea raportului aspectului
# ochilor si a doua pentru numărul de frame-uri
EYE_AR_THRESH = 0.3
EYE_AR_CONSEC_FRAMES = 48
# inițializarea numărătorului de frame-uri
# indicator pentru alarmă oprită
COUNTER = 0
ALARM_ON = False
# inițializare detectorul de fețe Dlib
print("[INFO] loading facial landmark predictor…")
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(args["shape_predictor"])
(lStart, lEnd) = face_utils.FACIAL_LANDMARKS_IDXS["left_eye"]
(rStart, rEnd) = face_utils.FACIAL_LANDMARKS_IDXS["right_eye"]
# startul fluxului video
print("[INFO] starting video stream thread…")
vs = VideoStream(src=args["webcam"]).start()
time.sleep(1.0)
# analiza frame-urilor video
while True:
frame = vs.read()
frame = imutils.resize(frame, width=450)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# detecția feței în grayscale
rects = detector(gray, 0)
for rect in rects:
#determinarea coordonatelor faciale si apoi extragerea
#coordonatelor pentru ochi (x, y)
shape = predictor(gray, rect)
shape = face_utils.shape_to_np(shape)
# extragerea coordonatelor
leftEye = shape[lStart:lEnd]
rightEye = shape[rStart:rEnd]
leftEAR = eye_aspect_ratio(leftEye)
rightEAR = eye_aspect_ratio(rightEye)
ear = (leftEAR + rightEAR) / 2.0
# vizualizarea fiecarui ochi
leftEyeHull = cv2.convexHull(leftEye)
rightEyeHull = cv2.convexHull(rightEye)
cv2.drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1)
cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1)
#se verifică dacă raportul aspectului ochilor este sub pragul de clipire
# dacă este adevărat se implementează numărătorul de clipiri
if ear < EYE_AR_THRESH:
COUNTER += 1
#dacă ochii au fost închiși suficient se activează alarma
if COUNTER >= EYE_AR_CONSEC_FRAMES:
#dacă alarma nu este pornită, se pornește
if not ALARM_ON:
ALARM_ON = True
#se verifică dacă există un fișier pentru #alarmă, dacă există acesta rulează
if args["alarm"] != "":
t = Thread(target=sound_alarm,
args=(args["alarm"],))
t.deamon = True
t.start()
# afișare textul alarmă pe ecran
cv2.putText(frame, "Alarmă!", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
# în caz contrar, raportul aspectului ochiului nu este sub
# pragul de clipire, atunci resetează alarma si numărătorul
else:
COUNTER = 0
ALARM_ON = False
# afișează raportul aspectului ochiului pe ecran, pragul și numărătorul de #frame-uri
cv2.putText(frame, "EAR: {:.2f}".format(ear), (300, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
# afișează frame-ul
cv2.imshow("Frame", frame)
key = cv2.waitKey(1) & 0xFF
# dacă este apăsată tasta r intrerupe bulca
if key == ord("r"):
break
# ieșire
cv2.destroyAllWindows()
vs.stop()
Descriere software
Liniile de cod 2-12 se ocupă de importul pachetelor necesare pentru programul Python.
Liniile de cod 14-16 implementează o alarmă sonoră în cazul în care este detectată o alarmă.
Liniile de cod 18-32 definesc raportul aspectului ochilor.
Liniile de cod 34-42 analizăm argumentele liniei noastre de comandă.
Liniile de cod 44-54 definesc câteva variabile importante.
Liniile de cod 56-60 inițializează detectorul facial.
Liniile de cod 62-65 extrag regiunea ochilor.
Liniile de cod 67-82 pornesc fluxul video, micșorează cadrul, detectează fața si transformă imaginea în grayscale pentru procesare.
Liniile de cod 84-100 aplica repere faciale.
Liniile de cod 102-107 aplica contur in jurul ochilor peste fluxul video.
Liniile de cod 190-138 detectează daca o persoană dă semne de somnolență.
Liniile de cod 140-156 afișează ieșirea video a programului.
Demonstrația conceptului
Pentru a îndeplini această sarcină, acest capitol este împărțit în două părți.
În prima parte, vom vorbi despre amplasamentul camerei în autovehicul, astfel încât să putem detecta ușor fața pentru a aplica localizarea reperului facial și pentru a monitoriza ochii.
În cele din urmă vom realiza câteva teste experimentale și vom discuta asupra datelor.
Echipamente hard
Placa de dezvoltare Raspberry Pi Zero W
Raspberry Pi este o placă de dezvoltare de tip SBC (Single Board Computer), un sistem de calcul nemodular implementat pe un singur cablaj electronic. Chiar dacă are dimensiuni reduse, Raspberry Pi este un calculator complet, permițând funcționalități obișnuite precum rularea unui sistem de operare Linux și rularea de aplicații utilizator. Placa Raspberry Pi oferă posibilitatea de a conecta diverse componente electronice specifice sistemelor embedded cum ar fi: senzori, butoane, ecrane LCD sau pe 7 segmente, diverse motoare, relee etc.
Caracteristicile sale și platforma open source bazată pe Linux îl fac versatil, potrivit pentru aplicații obișnuite, precum home entertainment, navigare internet, vizionare multi-media, light gaming, dar este cel mai folosit în aplicații de dezvoltare, precum automatizări, robotică etc.
Porturi Raspberry Pi:
Figura . Raspberry Pi Zero W
Slotul de card
În cazul lui Raspberry Pi, cardul de memorie are rolul unui hard disk. Cardul de memorie are stocat sistemul de operare. De asemenea, pe acest card se stochează datele proprii și programele instalate. Cardul de memorie trebuie să aibă minim 4 GB și să suporte standardul clasa 4. Acest standard indică viteza cardului de memorie. Un card de memorie clasa 10 are performanțe vizibil mai bune.
Ieșire video HDMI
Raspberry Pi poate fi conectat la monitoare și televizoare folosind cablul HDMI. Pentru conectarea la monitoare PC cu mufă DVI, există cabluri HDMI speciale fără adaptor.
Conector USB
Acesta se poate folosi pentru a conecta orice device ce funcționează cu standardul Universal Serial Bus (tastatură, mouse, cameră video etc.).
Alimentare
Raspberry Pi poate fi alimentat de la orice încărcător de telefoane mobile. Încărcătoarele care au fost concepute în perioada de început a tehnicii de încărcare USB nu sunt însă suficient de performante. Dacă conectați aparate USB care consumă mult curent, precum hard diskuri externe fără alimentare proprie, veți avea nevoie de un încărcător puternic. Blocul de alimentare trebuie să livreze 5 V și minim 700 mA, ba chiar 1000 mA. Regulatorul de putere integrat împiedică „arderea” aparatului dacă folosiți încărcătoare prea puternice.
Conector cameră video
Se utilizează la conectarea modulelor de cameră direct la porturile CSI ale plăcii Raspberry Pi.
Conector GPIO:
Doi pini de 5V și doi pini de 3V3 sunt prezenți pe placă, precum și un număr de pini de masă (0V), care sunt neconfigurați. Pinii rămași sunt toți pini de 3V3 de uz general, adică ieșirile sunt setate la 3V3, iar intrările sunt tolerante la 3V3.
Orice pin GPIO poate fi desemnat în software ca un pin de intrare sau ieșire ce poate fi utilizat pentru o gamă largă de scopuri.
Un pin GPIO, desemnat ca un pin de ieșire, poate fi setat ca HIGH (3V3) sau LOW (0V).
Un pin GPIO desemnat ca un pin de intrare poate fi citit ca HIGH (3V3) sau LOW (0V). Acest lucru se face mai ușor cu utilizarea rezistențelor interne de PULL-UP sau PULL-DON. Pinii GPIO2 și GPIO3 au rezistențe fixe, dar pentru alți pini acest lucru poate fi configurat în software.
Pe lângă dispozitive simple de intrare și ieșire, pinii GPIO pot fi utilizați cu o varietate de funcții alternative, unele fiind disponibile pe toți pinii, altele pe pinii specifici (PWM- pulse-width modulation, SPI, I2C, Serial).
Caracteristici tehnice:
procesor SoC BCM2835;
frecvență operare procesor: 1 GHz;
memorie RAM: 512MB;
conectivitate WiFi 2.4GHz 802.11 b/g/n;
conectivitate Bluetooth 4.1 + HS Low Energy (BLE);
Chip WiFi/Bluetooth: BCM43438;
slot card microSD;
conector miniHDMI;
conector micro-B USB pentru alimentare;
conector micro-B USB pentru date;
conector CSI pentru cameră foto/video;
pinout de 40 pini GPIO;
compatibil cu extensiile HAT/pHAT.
Configurația pinilor:
Figura 28. Raspberry Pi Zero W intrări/ieșiri
Cameră achiziții imagini video
Camera web este o cameră video ce captează, digitizează și transmite imaginile în timp real.
Aceasta este conectată la portul USB al Raspberry PI.
Figura 29. Camera video
Specificații cameră web:
Sistemul de operare
Majoritatea sistemelor de operare disponibile oficial sau neoficial pentru platforma Raspberry Pi sunt derivate din sistemul de operare Linux, creat de Linus Torvals la începutul anilor 1990. Gama mare de programe și sisteme de operare care au ca nucleu Linux se datorează faptului că proiectul Linux este de tip GNU GPL (General Public License), ceea ce dă caracterul „open-source” al proiectului. Astfel, a fost posibilă apariția unor programe consacrate, precum GNU Compiler Collection (GCC). Toate sistemele de operare au la bază aceeași arhitectură a kernelului, datorită derivării lor din Linux.
Sistemul de operare tratat în continuare este Raspbian, derivat din Debian, care are la bază kernelul Linux, Arch Linux ARM și RISC OS, dezvoltat de către Acorn Computers, optimizat pentru procesoare de tip RISC (procesor cu set redus de instrucțiuni), caracteristică și a procesorului microcalculatorului Raspberry Pi, ARM1176JZF-S.
Sistemul de operare Raspbian
Raspbian este un sistem de operare gratuit, optimizat pentru setul de instrucțiuni al arhitecturii ARMv6, pe care se bazează microcalculatorul Raspberry Pi. Acest sistem de operare oferă peste 35000 de pachete software precompilate și ușor de instalat, optimizate pentru a rula pe hardware-ul ARM11 al Raspberry Pi. Pachetul de bază Raspbian conține un mediu de lucru LXDE, managerul de ferestre Openbox, browser-ul web Midori, instrumente de dezvoltare software (IDLE, Scratch etc.) și exemple de coduri sursă pentru funcții multimedia.
Arhitectura procesorului ARM al lui Raspberry Pi este de tip ARMv6. Tehnic, Raspian este conceput cu setările de compilare ajustate pentru a produce cod în virgulă mobilă emulat hardware optimizat pentru Raspberry Pi. Pentru a ajuta această optimizare, se mai folosesc și interfața binară de aplicație în virgulă mobilă și arhitectura de microprocesor ARM pe 32 de biți cu funcțiile arhitecturii ARMv6.
În versiuni mai recente ale Raspian, multe dintre elementele semnificative necesare ale lui Debian Wheezy au fost portate pentru arhitectura ARMv6, deși distribuția oficială necesită arhitectura ARMv7. Astfel, performanța pentru aplicații care folosesc operații de aritmetică în virgulă mobilă este crescută, deoarece sistemele de operare precedente pentru Raspberry Pi folosesc setări de tip “soft float”, mai puțin eficiente, prin care operațiile aritmetice în virgulă mobilă native pentru arhitectura ARMv6 sunt emulate software.
Echiparea autovehiculului
Camera video utilizată in acest proiect este un model HP HD-3110. Aceasta are o rezoluție video de 720p, 1280*720 pixeli și focalizare automată. Camera este montată pe partea superioară a planșei de bord si este legată la unitatea de control Raspberry Pi.
După finalizarea asamblări vom trece la construirea detectorului de somnolență folosind tehnici de viziune computerizată.
Figura : Poziționarea camerei video în autovehicul
Testarea detectorului de somnolență
Fluxul general al algoritmului nostru de detectare a somnolenței este destul de simplu.
În primul rând, vom configura o cameră care va monitoriza șoferul autovehiculului.
Figura : Căutarea feței în fluxul video de intrare
Dacă se găsește o față, aplicăm detectarea reperului facial și extragem regiunile oculare.
Figura : Aplicare localizare reperelor faciale pentru a extrage regiunile ochilor
Acum că avem regiunile oculare, putem calcula raportul aspectului ochiului (EAR) pentru a determina dacă ochii sunt închiși iar dacă aceștia sunt închiși pe o durată destul de lungă o alarmă este activată.
Figura : Starea de alarmă
Odată ce aplicația soft rulează, fluxul video a început sa fie procesat am testat cu atenție detectorul de somnolență. După finalizarea testelor în parcare am trecut la un mic test pe un drum puțin aglomerat deoarece condusul cu ochii închiși chiar și pentru o secundă poate fi periculos.
Rezultatele au demonstrat că detectorul de somnolență este capabil să detecteze momentul în care sunt expus riscului de a ațipi și emite o alarmă sonoră pentru a-mi atrage atenția.
Detectorul de somnolență este capabil să funcționeze într-o varietate de condiții, inclusiv lumina directă a soarelui sau iluminare artificială scăzută.
Concluzii
Dificultatea constă în faptul că fețele sunt obiecte ce nu sunt rigide. Aspectul feței poate varia între două persoane diferite, dar și între două fotografii ale aceleiași persoane, în funcție de condițiile de iluminare, de starea emoțională a subiectului și de poziție. De aceea, în ultimii ani s-au dezvoltat atât de multe metode de analiză.
Implementarea acestui sistem pe vehiculele autonome va duce la creșterea siguranței în trafic, atât a șoferilor cât și a pietonilor.
Dicționar explicativ de termeni și abrevieri
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: UNIVERSITATEA POLITEHNICA DIN BUCUREȘTI FACULTATEA TRANSPORTURI [303883] (ID: 303883)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
