PROIECT DE DIPLOMă [303758]

PROIECT DE DIPLOMă

Proiectarea și dezvoltarea unui robot capabil să interacționeze în internetul lucrurilor

Coordonator științific:

Asist.Univ.[anonimizat]: [anonimizat], 2020

Cuprins

INTRODUCERE 4

Capitolul 1.INTERNETUL LUCRURILOR SI INTERNETUL LUCRURILOR ROBOTICE 6

1.1.Conceptul de “Internetul lucrurilor” 6

1.2. Caracteristici importante și abilități care susțin Internetul lucrurilor 7

1.2. Arhitectura IoT 9

1.2.1 Arhitectura pe trei nivele 9

1.2.2. Arhitectura orientată spre servicii (SoA) 10

1.3. Conceptul de “INTERNET OF ROBOTIC THINGS” 12

1.4. Arhitectura IoRT 13

1.5. Aplicatii și servicii ale IoRT 14

Capitolul 2.ROBOT MOBIL COMANDAT DE LA DISTANTA PRIN RASPBERRY PI 17

2.1.[anonimizat] 17

2.2.Costruirea subansamblelor 18

2.2.1.Motor Adeept HAT V2.0 18

2.2.2Camera Video Raspberry PI 19

2.2.3.Modulul senzor cu ultrasunete 20

2.2.4.Modul de urmărire a liniei cu 3 canale 21

2.2.5.Servomotorul (AD002) 22

2.2.6.Modul LED Adeept WS2812 RGB 24

2.2.7.Motor de transmisie 24

2.2.8.Acumulatorii 25

2.2.9.Îmbinarea subansamblelor 26

Capitolul 3. PROGRAMAREA CU AJUTORUL PLATFORMELOR STEAM SI RASPBERRY PI 29

3.1 Domeniul STEAM 29

3.2 Circuitul imprimat Raspberry Pi 29

3.2.1.Descriere generală 29

3.2.1.Pinii GPIO 31

3.3.Instalarea Sistemului de Operare Raspbian 32

3.3.1.Componente necesare 32

3.3.2.Programele necesare instalate 33

3.3.3.Scrierea sistemului de operare Raspberry Pi pe cardul SD 35

3.4.Activare SHH și Setare WiFi 35

3.5.Descarcare și instalare PuTTy 36

3.6. Descrierea programului Python 37

3.7. Procesul de instalare a programului Python 3.7. 38

Capitolul 4. IMPLEMENTAREA ALGORITMILOR SPECIFICI 41

4.1.[anonimizat]2821 41

4.2.Controlul Servomotorului 42

4.2.1 Controlul directiei pentru rotația cu un anumit unghi 42

4.2.2.Controlul miscarii lente a angrenajului de directie 43

4.3.Controlul motoarelor de curent continuu 44

4.4.Modulul senzor cu ultrasunete 45

4.5. Aplicația de urmărire a liniei 46

INTRODUCERE

De foarte mult timp omenirea și-a imaginat diferite mașini care imită organisme sau care depășesc oamenii în abilitățile lor și din aceasta cauza au existat numeroase încercări de construire a unor astfel de mașini. [anonimizat] a progresat pe parcursul a câteva secole. [1]

Un robot este un sistem electromecanic care percepe mediul înconjurator prin intermediul senzorilor și acționează asupra mediului cu ajutorul elementelor de execuție (actuatori), în așa fel încât acțiunea este adaptată la situația perceputa.[2]

[anonimizat]. Acești noi roboți de servicii nu sunt concepuți pentru a [anonimizat] a oferi servicii utile la locul de muncă sau la domiciliu sau pur și simplu pentru a distra și a oferi confort oamenilor.[1]

[anonimizat], [anonimizat]. [anonimizat]. Aceste cerințe impun contrângeri puternice și oportunități limitate în ceea ce privește procesele de învățare și metodele ce pot fi folosite.[2]

Interacțiunea om-robot este un domeniu interdisciplinar în care abordările comportamentale și psihologice față de înțelegerea naturii interacțiunii om-robot completează preocupările din domeniul roboticii și al ingineriei. În acest context s-a considerat oportună realizarea de cercetări privind conceperea unor sisteme prin care interacțiunea să se facă cât mai natural, la fel cum oamenii comunică între ei în viața de zi cu zi. Studiile prezentate în această lucrare aduc contribuții la implementarea unor algoritmi de comunicare om-robot și de manipulare a obiectelor, în scopul folosirii roboților mobili că asistenți în mediile domestice și nu numai.[1]

Înțelegerea interacțiunii naturale a unui utilizator este o provocare care trebuie abordată pentru a permite utilizatorilor începători să folosească roboți într-un mod ușor și intuitiv. Folosirea unui set de comenzi greu codificate pentru a controla un robot este, de obicei, destul de fiabilă și ușor de implementat, însă este supărătoare pentru utilizator, întrucât aceasta îi cere să învețe și să își amintească comenzi speciale, în scopul de a interacționa cu robotul și nu permite utilizatorului să folosească stilul lui de interacțiune naturală. Înțelegerea limbajului vorbit natural, fără restricții și comportamentul multi-modal al utilizatorilor ar fi de dorit, dar este încă o problemă nerezolvată.

Prin urmare, această lucrare propune o abordare specifică pentru a permite unui utilizator uman să interacționeze într-un mod natural cu un robot mobil comandat de la distanța realizând sarcini obișnuite care necesită manipulare de obiecte, deplasare prin mediu dar și redare video.

Capitolul 1.

INTERNETUL LUCRURILOR SI INTERNETUL LUCRURILOR ROBOTICE

Internet of Things (IoT-internetul lucrurilor) este o zonă de cercetare vie și activă și, în același timp, robotica este un domeniu solid și stabilit, cu numeroase aplicații. Deși de ceva timp cele două direcții au continuat intens, dar separat, este clar că scenariile moderne necesită o integrare a celor două discipline și un efort comun din partea comunităților. [3]

Conceptul de ,,Internetul lucrurilor”

Termenul „IoT” a fost inventat de Kevin Ashton în 1999 pentru a se referi la „obiecte / lucruri identificabile unic și reprezentările lor virtuale într-o structură asemănătoare internetului”, declarând că „Internetul lucrurilor are potențialul de a schimba lumea, la fel cum a făcut și Internetul. Poate chiar mai mult”. IoT a devenit popular în ultima perioadă pentru a sublinia viziunea unei infrastructuri globale care conectează obiecte / lucruri fizice, folosind același protocol, Internetul, permițându-le să comunice și să distribuie informații. [3], [4]

Internetul lucrurilor (,,Internet of Things” – IoT) s-a impus inițial ca un concept generos de inter-conectare nemijlocită (uman), cu ajutorul Internetului, a unei multitudini de dispozitive, instrumente, echipamente – de exemplu electrocasnice, sisteme mobile vehiculare (,,connected cars” etc) care comunică între ele, dar și cu infrastructura fixă ș.a.m.d. [1].

În traducerea liberă, prin extensie, ,,Internetul Obiectelor” poate include nu numai obiecte fizice (hardware), ci și obiecte software (inclusiv în sensul programării orientate pe obiecte) și, de asemenea, obiecte virtuale – mergând chiar până la ”avatare” ale lucrurilor – modele comportamentale care sunt reprezentante (tranzacționale) ale obiectelor fizice etc. Încorporate cu componente electronice, conectivitate la Internet și alte forme de hardware (cum ar fi senzori), aceste dispozitive pot comunica și interacționa cu alte dispozitive și obiecte prin Internet și pot fi monitorizate și controlate de la distanță. Definirea Internetului lucrurilor/obiectelor a evoluat datorită convergenței mai multor tehnologii, analizelor în timp real, învățării inteligente („machine learning”), senzorilor și sistemelor integrate.

În sfera industrială, Internetul obiectelor se referă la senzori, instrumente și alte dispozitive interconectate cu aplicațiile industriale ale computerelor, incluzând (dar fără a se limita la) gestionarea energiei electrice și managementul producției [2]. Această conectivitate permite colectarea, schimbul și analiza datelor, vizând facilitarea îmbunătățirii productivității și eficienței, precum și alte beneficii economice. [5]

Fig.1.1. Multitudinea de obiecte ce pot fi conectate intre ele prin intermediul internetului lucrurilor

O lume guvernată de Internetul lucrurilor este una în care sunt necesare măsuri adecvate, datorită creșterii complexității economice și dezvoltării cadrului de lucru pe care industriile, precum și guvernele, l-au adoptat pentru a stimula creșterea economică și concurența. Internetul lucrurilor va avea un impact în fiecare țară și economie de pe planetă, chiar și în lumea în curs de dezvoltare, în care beneficiile progresului tehnologic au fost de obicei negate.

1.2. Caracteristici importante și abilități care susțin Internetul lucrurilor

Caracteristicile de bază ale Internetului lucrurilor includ utilizarea dispozitivelor de dimensiuni reduse (senzori și traductoare inteligente etc.), conectivitatea prin legături active (active engagement) și inteligența artificială. [5] Aceste caracteristici sunt:

• Distributivitatea: Internetul lucrurilor va evolua într-un mediu extrem de distribuit. Datele vor putea fi colectate din surse diferite și prelucrate de către mai multe entități într-un mod distribuit;

• Interoperabilitatea: dispozitivele provenite de la furnizori diferiți vor trebui să coopereze în vederea atingerii obiectivelor comune. Sistemele și protocoalele vor trebui să fie proiectate într-un mod care să permită obiectelor (dispozitivelor) provenite de la diverși producători să facă schimb de date și să lucreze într-un mod interoperabil;

• Scalabilitatea: în Internetul lucrurilor se preconizează că miliarde de obiecte vor face parte din rețea. Astfel, sistemele și aplicațiile care rulează în partea de sus a rețelei vor trebui să gestioneze un volum fără precedent de date;

• Deficitul de resurse: atât puterea energetică, cât și resursele de calcul vor fi extrem de limitate;

• Securitatea: existența unui control extern necunoscut va genera frustrare în rândul utilizatorilor, fapt care ar reprezenta un impediment serios în ceea ce privește implementarea Internetului lucrurilor.

Din punct de vedere tehnic, Internetul lucrurilor nu este rezultatul unei singure tehnologii noi; mai multe progrese tehnice complementare furnizează instrumente care, luate împreună, ajută la eliminarea decalajului dintre lumea virtuală și cea fizică [12].

Aceste instrumente includ:

• Comunicarea și cooperarea: obiectele au capacitatea de a se conecta cu resurse de pe Internet sau chiar unele cu altele, pentru a utiliza date și servicii și pentru a-și actualiza starea. Tehnologiile fără fir, cum ar fi GSM (Global System for Mobile Communications – Sistem global pentru comunicații mobile), UMTS (Universal Mobile Telecommunications System – Sistem universal pentru comunicații mobile), Wi-Fi, Bluetooth, ZigBee și diverse alte standarde de rețea fără fir aflate în curs de dezvoltare, în special cele referitoare la WPAN-uri (Wireless Personal Area Networks – Rețele fără fir din domeniul personal), sunt de maximă importanță în domeniul Internetului lucrurilor;

• Adresabilitatea: în cadrul Internetului lucrurilor, obiectele pot fi localizate și abordate prin intermediul serviciilor de descoperire, de căutare sau de nume și, prin urmare, pot fi interogate sau configurate de la distanță;

• Identificarea: obiectele sunt identificabile în mod unic. RFID, NFC (Near Fied Communication – Tehnologie de schimb de date la foarte mică distanță, care permite identificarea prin frecvențe radio) și codurile de bare optice sunt exemple de tehnologii cu care pot fi identificate chiar și obiectele pasive, care nu s-au creat prin resurse energetice (cu ajutorul unui „mediator”, precum un cititor RFID sau un telefon mobil). Identificarea permite obiectelor să fie legate de informațiile asociate cu un anumit obiect și care pot fi preluate de la un server, cu condiția ca mediatorul să fie conectat la rețea;

• Detectarea: obiectele colectează informații referitoare la mediul în care se află prin intermediul senzorilor, le pot înregistra, le pot transmite sau pot reacționa la informațiile respective;

• Acționarea: obiectele conțin elemente de acționare pentru a manipula mediul lor (de exemplu, prin transformarea semnalelor electrice în mișcare mecanică). Astfel de elemente de acționare pot fi utilizate pentru a controla de la distanță procesele din lumea reală prin intermediul Internetului;

• Prelucrarea informațiilor încorporate: obiectele inteligente sunt dotate cu un procesor sau microcontroler, plus o capacitate de stocare. Aceste resurse pot fi utilizate, de exemplu, pentru prelucrarea și interpretarea informațiilor provenite de la senzor sau pentru a oferi produselor o „memorie” privind modul în care acestea au fost utilizate; [4]

1.2. Arhitectura IoT

În această secțiune se vor prezenta tipurile de arhitecturi existente pentru Internet of Things.

1.2.1 Arhitectura pe trei nivele

De obicei, arhitectura IoT este împărțită în trei nivele de bază: (1) nivelul aplicație, (2) nivelul rețea și (3) nivelul percepție.

a. Nivelul percepție, cunoscut și sub denumirea de nivel senzor, este implementat ca strat inferior în arhitectura IoT. Stratul de percepție interacționează cu dispozitivele fizice și componente prin dispozitive inteligente (RFID, senzori, actuatori, etc.) [3]. Obiectivele sale principale sunt să conecteze lucrurile în rețeaua IoT și să măsoare, colecteze și proceseze informațiile de stare asociate acestor lucruri prin intermediul dispozitivelor inteligente implementate, transmitând informațiile prelucrate la nivelul superior prin intermediul interfețelor de nivel.

b. Nivelul rețea, cunoscut și sub denumirea de nivel de transmisie, este implementat ca strat intermediar în arhitectura IoT. Stratul de rețea este utilizat pentru a recepționa informațiile procesate furnizate de stratul de percepție și pentru a determina rutele de transmitere a datelor și informațiilor către hub-ul, dispozitivele și aplicațiile IoT prin rețele integrate [3]. Stratul de rețea este cel mai important strat din arhitectura IoT, deoarece diferite dispozitive (hub, switching, gateway, cloud computing etc.) și diverse tehnologii de comunicații (Bluetooth, WiFi, Long-Term Evolution (LTE), etc.) sunt integrate în acest strat. Stratul de rețea trebuie să transmită date către sau de la diverse lucruri sau aplicații, prin interfețe sau gateway-uri între rețele eterogene utilizând diferite tehnologii și protocoale de comunicare.

c. Nivelul aplicație, cunoscut și ca stratul de afaceri, este implementat ca strat superior în arhitectura IoT. Stratul de aplicație primește datele transmise de la stratul de rețea și utilizează datele pentru a furniza serviciile sau operațiunile necesare. De exemplu, stratul aplicației poate furniza serviciul de stocare pentru a salva datele recepționate într-o bază de date sau poate furniza serviciului de analiză pentru a evalua datele primite pentru a prezice starea viitoare a dispozitivelor fizice [3]. În acest strat există mai multe aplicații, fiecare având cerințe diferite. Exemplele includ rețeaua, transportul, orașele inteligente etc.

Arhitectura cu trei straturi este de bază pentru IoT și a fost proiectată și realizată într-un număr mare de sisteme. Totuși, în ciuda simplității arhitecturii multi-strat, funcțiile și operațiile din straturile de rețea și de aplicație sunt diverse și complexe. De exemplu, stratul de rețea nu numai că trebuie să determine rute și să transmită date, ci și să furnizeze servicii de date (agregare de date, calcul, etc.). Stratul aplicației nu trebuie doar să furnizeze servicii clienților și dispozitivelor, ci trebuie să furnizeze servicii de date (minerit de date, analiză date, etc.). Astfel, pentru a stabili o arhitectură multi-strat generică și flexibilă, trebuie dezvoltat un strat de serviciu între stratul de rețea și stratul de aplicație pentru a furniza serviciile de date în IoT. Pe baza acestui concept, arhitecturile orientate spre servicii (SoA) au fost recent dezvoltate pentru a sprijini IoT.

1.2.2. Arhitectura orientată spre servicii (SoA)

În general, SoA este un model bazat pe componente, care poate fi proiectat pentru a conecta diferite unități funcționale (cunoscute și ca servicii) ale unei aplicații prin interfețe și protocoale. SoA se concentrează pe proiectarea fluxului de servicii și permite reutilizarea componentelor software și hardware, îmbunătățind fezabilitatea SoA pentru utilizarea în proiectarea arhitecturii IoT. Astfel, SoA poate fi ușor integrat în arhitectura IoT, în care serviciile de date furnizate de nivelele de rețea și de aplicație din arhitectura tradițională cu trei nivele pot fi extrase pentru a forma un nou nivel, și anume nivelul de serviciu (cunoscut și ca nivel de interfață sau nivel middleware).

Într-o arhitectură IoT bazată pe SoA, există patru nivele care interacționează unele cu altele, acestea fiind nivelul percepție, nivelul rețea, nivelul serviciu și nivelul aplicație [4]. Este de remarcat faptul că stratul de servicii poate fi împărțit în două sub-straturi, și anume sub-stratul de compoziție a serviciului și sub-stratul de gestionare a serviciului. În plus, stratul de afaceri este extras din stratul de aplicație și funcționează ca nivel superior al nivelului aplicație, pentru a oferi solicitări complexe de servicii

Fig.1.2. Arhitectura IoT bazată pe SoA

În arhitectura IoT bazată pe SoA pe patru nivele, nivelul de percepție este realizat ca nivel inferior al arhitecturii și utilizat pentru măsurarea, colectarea și extragerea datelor asociate cu dispozitive fizice. Nivelul de rețea este utilizat pentru a determina rutele și pentru a asigura suportul transmisiei de date prin rețele eterogene integrate. Nivelul de serviciu este situat între nivelul de rețea și nivelul de aplicație, furnizând servicii pentru a sprijini nivelul de aplicație. Acesta constă din descoperirea serviciului, compunerea serviciului, gestionarea serviciului și interfețele de serviciu. În acest caz, descoperirea serviciului este utilizată pentru a descoperi solicitările de serviciu dorite, compoziția serviciului este utilizată pentru a interacționa cu obiectele conectate și pentru a împărți sau integra servicii pentru a satisface cererile de servicii într-un mod eficient, gestionarea serviciilor este utilizată pentru a gestiona și a determina mecanismele de încredere, iar solicitările de servicii și interfețele de servicii sunt utilizate pentru a sprijini interacțiunile între toate serviciile furnizate [4]. Stratul de aplicație este utilizat pentru a suporta solicitările de servicii de către utilizatori. Acesta poate suporta o serie de aplicații, inclusiv rețele de utilități, transport sau orașe inteligente. [6]

1.3. Conceptul de ,,INTERNET OF ROBOTIC THINGS”

Internet of Robotic Things este o viziune emergentă care reunește senzori și obiecte omniprezente cu sisteme robotizate și autonome. Acest concept examinează modul în care fuziunea tehnologiilor robotice și Internet of Things va promova abilitătile atât ale Internet-ului actual al lucrurilor, cât și ale sistemelor robotice actuale, permitând astfel crearea de noi servicii, potențial perturbatoare. [7]

Deci, în cadrul Internet of Things, Internet of Robotic Things se referă la integrarea instrumentelor Smart Space și agenților autonomi (roboți).

Prin „Smart Space” ne referim la aplicații precum Smart Room, Smart Factory, Smart Building sau Smart City [15]. Funcția principală a acestor aplicații este monitorizarea stărilor și proceselor dintr-o zonă de control definită. Alte funcții vizează, de obicei, menținerea unor condiții de mediu dorite, precum temperatura și umiditatea aerului în spațiu, prin utilizarea unui sistem sofisticat de încălzire a aerului (HVAC) sau prin monitorizarea stărilor cu senzori și actuatori simpli (de exemplu, pornirea aerului condiționat sau deschiderea ferestrei cu acționări simple, precum și pornirea / oprirea în timp util a încălzirii).[3]

Astfel, Internet of Robotic Things este un nivel mai avansat al Internet of Things, permițând integrarea unor tehnologii moderne precum cloud computing, detectarea wireless și elemente de acționare, analiză de date, monitorizare distribuită și rețele din spațiul inteligent, precum și autonomie decizională, percepție, manipulare, comandă multi-agent, control și planificare și interacțiune om-robot – din partea robotului (Figura 1.3).[3]

Fig1.3. Schema bloc a Internet of Robotic Things

1.4. Arhitectura IoRT

În această secțiune se prezintă arhitectura de referință, pe trei niveluri, a Internetului Lucrurilor Robotice (Figura 1.4.). Figura 1.4 ilustrează arhitectura generală a sistemului care constă din trei straturi principale: 1. fizic, 2. rețea și comandă și 3. servicii și aplicații.

Fig.1.4.Arhitectura sistemului Internet of robotic things

1. Nivelul fizic este reprezentat de diverși roboți, senzori și elemente de acționare. Roboții sunt agenți inteligenți care pot comunica între ei și pot stabili un sistem multi-robot pentru a atinge un obiectiv comun prin acțiuni distribuite. Senzorii stratului fizic sunt dispozitive pentru monitorizarea parametrilor vitali ai mediului, precum și percepții ale spațiului intelligent, pentru a observa ce procese apar în cameră: ce agenți (oameni sau roboți) sunt prezenți, ce obiecte se mișcă, ce acțiuni se întâmplă etc. La nivel fizic există, de asemenea, unități simple, întrerupătoare și elemente de acționare care pot efectua acțiuni simple (pornire / oprire a încălzirii, iluminării, aerului condiționat etc.) și chiar mașini-unelte sau dispozitive de imprimare 3D care pot produce detalii pentru spațiul inteligent obiectiv.

În cazuri speciale, roboții pot utiliza senzori și actuatori direct pentru activitățile lor (de exemplu, ca repere pentru navigație sau pentru calibrare și reglare), optimizând procesele din mediul inteligent. Cu toate acestea, principala modalitate de integrare a roboților cu senzori și elemente de acționare în rețeaua spațiului inteligent apare la nivelul rețea și comandă, unde diferite componente pot utiliza protocoale comune / diferite pentru a comunica și controla procesele în mediul inteligent.

2. Nivelul rețea și comandă poate include diverse routere, controlere, stocări ale datelor locale și cloud (servere), precum și protocoale de comunicație și comandă. Pentru prelucrarea și stocarea prealabilă a datelor de la senzori, elemente de acționare și roboți, atât stocarea locală (în fiecare încăpere Smart sau clădirea Smart în ansamblu), cât și stocarea la distanță (în nori) pot fi exploatate.

3. La nivelul servicii și aplicații, implementarea și execuția programelor standard de utilizator pentru monitorizarea, procesarea și controlul atât a parametrilor de mediu, cât și a agenților (senzori, elemente de acționare și roboți) din spațiul inteligent sunt realizate în conformitate cu obiectivele internetului integrat al Robotic Things. Pe lângă algoritmi de ultimă generație pentru procesarea informațiilor senzoriale la acest nivel, algoritmi de inteligență artificială (AI) și de învățare automată (ML), pot fi folosiți pentru a optimiza performanța IoRT, folosind faptul că bazele de date moderne oferă o latență scăzută a transferului de date.[3]

1.5. Aplicatii și servicii ale IoRT

Integrarea roboticii în spații inteligente poate fi utilizată în diferite domenii ale vieții noastre: automatizare la domiciliu, sănătate, transport, logistică. Ca un concept de spațiu inteligent, putem introduce clădiri inteligente și software definite (SSDB) [15]. Acestea sunt clădiri „programabile” în care detectarea, bazată pe hardware și software, este integrată pentru a îndeplini diverse funcții, precum monitorizarea prezenței, recunoașterea activității și identității și detectarea stării emoționale a utilizatorului. Funcțiile IoT de detectare sunt implementate folosind diverse componente hardware.

Detectoarele de ocupare sunt circuite speciale care detectează prezența individului cu senzorul de mișcare. Senzorii de poziționare și de urmărire sunt folosiți în dispozitivele purtabile pentru a urmări mișcările individuale. Datele brute obținute sunt procesate folosind una dintre metodele de calcul și utilizate ca cunoștințe pentru roboți. Deoarece roboții au capacități limitate de memorie și senzor, SSDB poate fi utilizat ca sistem distribuit de detectare robotică. Acesta va crește autonomia și capacitatea robotului. Drept urmare, va fi posibilă utilizarea unui robot doar ca un servomotor pentru diverse servicii [26]. Să discutăm trei exemple de aplicații de IoRT prezentate în [8] care includ spații inteligente și servicii posibile: Smart Home, Smart Office și Smart Nursing House.

Smart Home. Casa este echipată cu senzori adecvați pentru o mai bună conștientizare a contextului robotului. Un robot de serviciu poate ajuta cu o treabă casnică. Serviciul de monitorizare a nutriției oferă sfaturi pentru masă și reamintește rutinele fixe de masă, spațiul inteligent urmărește informațiile despre masă, după ce robotul acționează sfaturi adecvate pentru individ. Serviciul de asistență pentru acasă îi ajută pe copii cu teme și, de asemenea, capabili să aleagă locul potrivit în casă pentru a-și face temele. Serviciul de monitorizare a terapiei este util pentru persoanele cu diverse diagnostice, cum ar fi diabetul, monitorizează nivelul zahărului într-un organism și amintește despre păstrarea nivelului de glucoză.

Smart Office. Serviciul de primire a vizitatorilor poate asista organizatorii.

Roboții de concierge pot saluta un oaspete într-o limbă maternă și pot prezenta sala de ședințe. Robotul este conștient de context și este furnizat cu codul QR scanat al oaspeților și cunoștințele anterioare ale vizitelor. De asemenea, Recepția vizitatorilor poate afișa o metodă optimă de ridicare, dacă oaspetele se află într-un scaun cu rotile.

Casa de asistență inteligentă. Nursing House (NH) oferă îngrijiri speciale centrate pe persoană pentru pacienții cu diverse diagnostice. Unii pacienți au nevoie de îngrijire 24/7, dar aceasta necesită un buget mare. Serviciile IoRT pot fi integrate pentru a reduce cheltuielile cu sarcini de rutină [8].

În fiecare dimineață, serviciul de anunțare a activității poate anunța activități și știri planificate. Robotul de serviciu este adaptabil preferințelor conversației individuale, precum tonul vocii și stilul de salut. Managementul tulburărilor de comportament (BD) este util pentru persoanele cu demență. IoRT poate înlocui parțial personalul de îngrijire și, dacă este nevoie, poate oferi ajutor personalului de îngrijire NH, iar serviciul poate apela la ajutor.

Spațiul inteligent poate detecta o persoană care prezintă tulburări de comportament, iar un robot de serviciu poate ajuta la gestionarea unei situații atunci când apare o asemenea persoană. Spre exemplu, se poate gestiona detectarea unui bătrân tulburat și calmarea unui bătrân jucând o muzică preferată sau care rememorează amintiri fericite din trecut. De asemenea, casa inteligentă poate detecta un bătrân rătăcitor, iar robotul umanoid poate duce un vârstnic în propria cameră.

Serviciul de anunțare a informațiilor pentru vizitatori ajută pacienții cu o boală ușoară diagnostică să regleze o lumină a camerei și condițiile de sunet interior. În camera pacientului sunt instalate diferite dispozitive de detectare, iar dacă sunt detectate un nivel al sunetului sau nu nivel al luminii anormale, robotul inteligent NH este rugat să anunțe pacientul și vizitatorii să adapteze condițiile. [3]

De aceea, Internet of Robotics Things (IoRT) reprezintă un concept proaspăt introdus, care vizează descrierea integrării tehnologiilor robotice în scenariile IoT. Recent, comunitățile de cercetare IoT și robotică au început să interacționeze viu. În present se fac eforturi pentru integrarea celor două comunități și pentru dezvoltarea acestui domeniu interdisciplinar.

Capitolul 2.

ROBOT MOBIL COMANDAT DE LA DISTANTA PRIN RASPBERRY PI

2.1.Descrierea Kit-ului

RaspTank WiFi Wireless Smart Robot Car Kit este o platformă robot mobilă, bazată pe Raspberry Pi și echipată cu un braț robotizat cu 4 grade de libertate, care poate apuca și transporta obiecte mici.

Componența kit-ului:

1 Set placi acrilice

1x Motor Adeept HAT V2.0

1x Camera Video Raspberry Pi

1x modul senzor cu ultrasunete

4x Modul LED Adeept WS2812 RGB

1x Modul de urmărire a liniei cu 3 canale

5x Servomotoare (AD002)

2x Motor de transmisie

2x Set suport motor

2x Senila

1x Set de suport pentru acumulatori

1x cheie cu soclu încrucișat

2x surubelnita cruce (mici și mari)

1x Imbus-2.0mm

1x Cablu de înfășurare

Fig.2.1. Componente principale Rasp Tank

2.2.Costruirea subansamblelor

Fig.2.2. Schema electrică de conectare la pinii GPIO prin intermediul modului de adaptare Motor HAT

2.2.1.Motor Adeept HAT V2.0

Cu ajutorul acestui Motor HAT putem conecta la microcontrell-ul nostru Raspberry Pi toate componentele ce formează un robot de dimensiuni mici, dar complex: cele 5 servomotoare, motoarele de transmisie folosite pentru deplasarea robotului, modulul senzor cu ultrasunete și modulul de urmărire al liniei cu 3 canale

Fig.2.3. Explicativă privind modalitatea de conectare a modulului Motor HAT cu celelate componente

2.2.2. Camera Video Raspberry PI

Camera Video Raspberry Pi se folosește pentru a înregistra imagini și sunet la calitate HD, în timp ce poate fi folosită și ca aparat foto, permițând captura unor imagini fixe. Este foarte simplu de utilizat, dar oferă, în același timp, utilizatorilor experimentați o largă aplicabilitate. Sunt foarte multe exemple în care această camera este folosită pentru înregistrări de tip time-lapse sau slow-motion. Fiind un produs oficial Raspberry Pi, se pot folosi librările puse la dispoziție de către fundație, pentru a crea diverse efecte. Camera se conectează cu placa Raspberry Pi prin panglica specială cu care vine echipat. Mai exact, panglica respectivă se introduce în slot-ul de pe placa Raspberry Pi (situat între porturile Ethernet și HDMI), dedicat camerei.

Specificații:

Senzor 8 MegaPixeli

Foto: 3280 x 2464 px

Formate: 1080p / 720p

Dimensiuni: 25mm x 23mm x 9mm

Fig2.4.Conectarea camerei cu microcontroler-ul Raspberry Pi

2.2.3. Modulul senzor cu ultrasunete

Un senzor cu ultrasunete este un instrument care măsoară distanța la un obiect folosind unde sonore ultrasonice. Un senzor ultrasonic folosește un traductor pentru a trimite și primi impulsuri ultrasonice care transmit informații despre apropierea unui obiect.

Principiul de lucru al acestui modul este simplu. Acesta trimite un impuls cu ultrasunete la 40 kHz, care se deplasează prin aer și, dacă există un obstacol sau un obiect, acesta va reveni la senzor. Calculând timpul de deplasare și viteza sunetului, este determinată distanța

Fig.2.5.Asamblarea senzorului cu ultrasunete

Fig.2.6.Conectarea pinilor modulului

cu ultrasunete

2.2.4. Modul de urmărire a liniei cu 3 canale

Modulul de urmărire a liniei cu 3 canale este utilizat de către vehiculele robotizate pentru a le permite să urmeze optic o linie pe podea. Urmărirea liniei este una dintre cele mai simple modalități de a implementa navigarea cu un vehicul robotizat.

Detecția funcționează emițând un fascicul infraroșu (IR) în jos și detectând dacă IR este reflectat înapoi pe o suprafață reflectorizantă sau nu, pentru a determina dacă senzorul este poziționat peste linie. Dacă nu sunteți peste linie, atunci pentru a ști dacă sunteți la stânga sau la dreapta liniei, aveți nevoie de cel puțin încă 2 senzori, câte unul poziționat de o parte și de alta a senzorului central.

Fig.2.7. Pinii de conectare ai Modulului de uărire a liniei cu 3 canale

Acest modul de urmărire a liniei utilizează 3 perechi emițător / receptor, distanțate de aproximativ 25 mm, pentru a implementa o configurație completă de urmărire a liniei.

Conectarea se face astfel:

VCC – Conectat la 5V.

L – Detector de canal stânga. Conectat la orice pin de intrare digital de pe microcontroler.

C – Detectorul canalului central. Conectat la orice pin de intrare digital de pe microcontroler.

R– Detectorul canalului drept. Conectat la orice pin de intrare digital de pe microcontroler.

GND – Conectar la împamantarea sistemului. Acest teren trebuie să fie în comun cu microcontrolerul.

Fig.2.8.Asamblarea modulului de urmărire pe plăcuța acrilică

2.2.5.Servomotorul (AD002)

Spre deosebire de motoarele DC, care produc rotație continuă cât timp sunt conectate la o sursă de tensiune, motoarele servo sunt folosite pentru a obține rotații parțiale, stabile și controlate, pentru efectuarea unor operații cu amplitudine mică, dar cu precizie ridicată. În cazul nostru, se realizează controlarea precisă a articulațiilor brațului robotului, dar și a modulului ultrasonic.

Cele 5 servomotoare identice au fost conectate astfel :

– două servomotoare pentru articulațiile brațului robotic;

– două servomotoare pentru cleștele brațului robotic;

– un servomotor pentru orientarea modulului ultrasonic și a camerei video.

Fig.2.9.Asamblarea și conectarea celor patru servomotoare pentru brațul robotic

Fig.2.10.Asamblarea și conectarea servomotorului 5 cu modulul ultrasonic și camera video

2.2.6.Modul LED Adeept WS2812 RGB

Robotul vine echipat cu aceste LED-uri RGB, care pot fi comandate printr-un singur pin GPIO, și care se poate schimba într-o varietate de culori, indicând modul de lucru al robotului.

Fig.2.11. Asamblarea pe plăcuțele acrilice a modulului LED

Conectarea la pinii GPIO a fost realizată conform schemei electrice din figura 2.2.

2.2.7.Motor de transmisie

Este un mini motor de curent continuu, cu reductor, fabricat dintr-un metal rezistent, ideal pentru construcția roboților datorită greutății foarte mici, cuplului mare și turației reduse.

Caracteristici :

• Tensiune nominală: 6 ~ 12 V

• Turația: 100 RPM la 6 V

• Turația la funcționarea în sarcină: 80 RPM

• Curent nominal: 0,07 A

• Curent de stop: 1 A

• Greutate netă: 10 g

Mototrul este conectat printr-un cuplaj la roțile dințate care antrenează șenila de tragere pentru deplasarea robotului.

Fig.2.12. Forma finală de asamblare a motoarelor și cuplajului

Conectarea celor două motoare cu microcontroler-ul a fost realizată cu ajutorul MOTOR HAT prin setul de pini de conectare MOTOR A și MOTOR B, conform schemei electrice prezentate în figura 2.2.

2.2.8.Acumulatorii

Pe lângă alimentarea principală realizată printr-un USB tip C la o tensiune de 5,1 V și un curent de 3 A, robotul dispune și de o alimentare externă cu acumulatori prin suportul de acumulatori aflat în Kit.

Setul de acumulatori achiziționați dispune de o capacitate de 3000 de mAh.

Conectarea acumulatorilor cu restul subansamblelor s-a realizat conform schemei electrice de conexiune din figura 2.2.

Fig.2.13. Asamblarea alimentării externe cu acumulatori tip 18650

2.2.9.Îmbinarea subansamblelor

După construirea tuturor subansamblelor, acestea au fost îmbinate urmărind următorii pași :

Pasul 1. Îmbinarea subansamblului ce conține modulul de urmărire a liniei cu subansamblul format din camera video și modulul senzor ultrasonic, subansamblul ce contine modulul LED , subansamblul acumulatorilor și motoare de tracțiune, conform figurii 2.14.

Fig.2.14.Descrierea îmbinării subansamblelor de la pasul 1

Pasul 2. Fixarea brațului robotic conform figurii 2.15.

Fig.2.15.Fixarea brațului robotic

Pasul 3.Construirea roților dințate și îmbinarea acestora cu robotul și șenilele

Fig.2.16. Îmbinarea roților și a șenilelor

Fig.2.17. Robotul RaspTank asamblat

Capitolul 3.

PROGRAMAREA CU AJUTOCRUL PLATFORMELOR STEAM SI RASPBERRY PI

3.1 Domeniul STEAM

Etimologic, STEAM este compus din următoarele cuvinte din limba engleză: Science (Știință), Technology (Tehnologie), Engineering (Inginerie), Arts and Mathematics (Artă și Matematică) și înseamnă, pentru știință, un cumul al domeniilor Știință, Tehnologie, Inginerie, Artă și Matematică, adică o idee de educație inter-disciplinară axată pe practică.

3.2 Circuitul imprimat Raspberry Pi

3.2.1.Descriere generală

Raspberry Pi este un circuit imprimat de tip SBC (Single Board Computer) – un sistem de calcul nemodular implementat pe un singur cablaj electronic. Chiar dacă are dimensiuni reduse (85mm x 56mm), Raspberry Pi este un calculator complet, permițând funcționalități obișnuite precum rularea unui sistem de operare (Linux sau Windows) și rularea de aplicații utilizator (jocuri, editoare de text, medii de programare, redarea de muzică și filme, aplicații de teleconferință, aplicații Internet). Diferențele între un computer Raspberry Pi și un calculator personal (PC) sau laptop constau atât în dimensiunea redusă a plăcii, cât și în puterea mai mică de calcul a acesteia – nu are aceleași performanțe de calcul precum un PC desktop, care are un cost și o dimensiune de câteva ori mai mari.

Putem compara placa Raspberry Pi cu o tabletă sau cu un sistem de tip NetBook, dar fără a dispune de ecran și tastatură. În plus, placa Raspberry Pi oferă posibilitatea de a conecta diverse componente electronice specifice sistemelor embedded: senzori, butoane, ecrane LCD sau pe 7 segmente, drivere de motoare, relee etc. Posibilitatea de a personaliza sistemele de programe (sistemul de operare, aplicațiile) și posibilitatea de interconectare cu alte componente electronice fac din placa Raspberry Pi un sistem de calcul ce poate sta la baza unor proiecte personale extrem de interesante și de puternice – un calculator ce poate fi integrat în sisteme electronice și mecanice proiectate și realizate de utilizator.[8]

Dintre toate versiunile existente de Raspberry Pi, am ales să folosim modelul 4, care folosește un SoC Broadcom BMC2711 cu 4 nuclee de procesare ARM Cortex-A72, cu o frecvență de 1.5Ghz, fiind îndeajuns de puternic pentru a prelucra datele provenite pe diferite fire de execuție, eliminând astfel necesitatea întreruperilor. Pe lângă acestea, sistemul mai înglobează un procesor grafic VideoCore VI cu suport OpenGL ES 3.x.

La capitolul putere, s-a făcut trecerea de la USB micro-B la tehnologia USB-C pentru conectorul de alimentare, iar acum placa suportă extra 500mA de curent și un total de 1,2 A pentru dispozitivele USB, chiar și în condiții de încărcare a procesorului.[9]

Pentru a implementa ieșirea spre două monitoare pe același circuit imprimat, Pi 4 înlocuiește conectorul HDMI tip-A (mărime completă) cu o pereche de conectori HDMI tip-D (micro).[9]

La nivel de Ethernet și USB, modificările constă în mutarea mufei magjack pentru Ethernet Gigabit în partea dreapta-sus a circuitului imprimat, simplificând rutina PCB. Conectorul PoE (Power-over-Ethernet) cu 4 pini rămane în aceeași locație, astfel că Raspberry Pi 4 păstrează compatibilitatea cu HAT PoE. Controlorul Ethernet de pe SoC-ul principal este conectat la un PHY Broadcom extern peste o legatura RGMII dedicata, oferind transfer complet. USB-ul este oferit de un controlor VLI extern, conectat printr-o singura linie PCI Express Gen 2, oferind o latime de banda de 4Gbps, impartasita de cele patru porturi.[9]

Toți cei trei conectori de pe partea dreaptă a plăcii depășesc marginea cu un milimetru, pentru simplificarea construcției carcasei. În plus, conectorul și amplasarea orificiului de montaj rămân același, asigurând compatibilitatea cu plăcile HAT existente și cu alte accesorii.[9]

Dacă la nivel fizic, placa a suferit doar câteva schimbări esențiale, sistemul de operare Raspbian a fost modificat radical, pe baza actualizării Debian 10 Buster. Astfel, acesta aduce mai multe îmbunătățiri din punct de vedere tehnic, o interfață modernizată extensiv, și aplicații actualizate, inclusiv browser-ul web Chromium. [9]

Un pas important înainte este retragerea driver-ului de grafică folosit la modelele anterioare și înlocuirea acestuia cu driver-ul Mesa V3D dezvoltat de-a lungul ultimilor cinci ani de către Eric Anholt de la Broadcom. Printre noile beneficii se numără navigarea web și compoziția desktop accelerate de OpenGL, precum și abilitatea de rulare a aplicațiilor 3D într-o fereastră, sub X. Au fost eliminate totodată aproape jumătate dintre liniile de cod cu sursa închisă din platformă. [9]

Fig.3.1.Structura plăcii de dezvoltare și descrierea pinilor GPIO

Fig.3.2. Caracteristicile digitale de intrare/ieșire

3.2.1.Pinii GPIO

Pe lângă faptul că pot fi folosiți ca intrări și ieșiri controlate software simplu, pinii GPIO pot fi comutați (multiplexați) în diverse alte moduri, susținute de blocuri periferice dedicate, precum I2C, UART și SPI.

În plus față de opțiunile periferice standard regăsite pe versiunile anterioare Pi, perifericele extra I2C, UART și SPI au fost adăugate la cipul BCM2711 și sunt disponibile ca alte opțiuni de mux pe Pi4. Asta dă utilizatorilor mult mai multă flexibilitate atunci când vor sa atașeze un hardware suplimentar în comparație cu modelele mai vechi.

Pinii ID_SD și ID_SC sunt rezervati pentru identificarea memoriei EEPROM.

La momentul de pornire, această interfață I2C va fi interogată pentru a căuta un EEPROM care să identifice placa atașată și să permită configurarea automată a GPIO-urilor (și opțional a driverelor Linux)

Fig.3.3.Conexiunea ieșirilor pinilor GPIO

3.3.Instalarea Sistemului de Operare Raspbian

3.3.1.Componente necesare

Pentru a pune în funcțiune circuitul Raspberry Pi 4 avem nevoie de următoarele componente suplimentare:

Card microSD. Este nevoie de un card microSD cu o capacitate de 8 GB sau mai mare. Raspberry Pi îl folosește pentru a stoca jocuri, programe , fișiere foto și boots-uri de pe sistemul dvs. de operare, care rulează de la acesta. De asemenea, avem nevoie de un cititor de carduri microSD pentru a conecta cardul la un computer PC, Mac sau Linux.

Adaptor pentru cardul microSD

Calculator. Vom avea nevoie de un computer Windows, Linux (cum ar fi Raspberry Pi) sau un computer Apple Mac pentru a formata cardul microSD și a descărca software-ul inițial de configurare pentru Raspberry Pi. Nu contează ce sistem de operare rulează pe acest computer, deoarece este folosit doar pentru copierea fișierelor.

Tastatură USB. Ca orice computer, a fost nevoie de un mijloc pentru a introduce adrese web, tastarea comenzilor și altfel am controlat Raspberry Pi. Putem utiliza o tastatură Bluetooth, dar procesul de configurare inițială este mult mai ușor cu o tastatură cu fir.

Mouse USB. Un mouse, care se atașează fizic de Raspberry Pi printr-un port USB este cel mai simplu. Ca și tastatura, credem că este mai bine să efectuam configurarea cu un mouse cu fir.

Alimentare electrică. Raspberry Pi utilizează același tip de conexiune USB ca smartphone-ul obișnuit, așadar, putem recicla un USB Type-C vechi pentru Raspberry Pi 4 (ar trebui să fie o sursă de 15W pentru a-i oferi o putere eficientă lui Raspberry Pi)

Cablu micro-HDMI la HDMI. Raspberry Pi 4 poate alimenta două afișaje HDMI, dar necesită un cablu micro-HDMI la HDMI

Ecran HDMI. Un monitor PC standard este ideal, deoarece ecranul va fi suficient de mare pentru a citi confortabil. Trebuie să aibă o conexiune HDMI, întrucât este montat pe placa Raspberry Pi 4.

Acum, având toate piesele la un loc, se poate instala un sistem de operare pe Raspberry Pi, astfel încât să poată fi utilizat.

Raspberry Pi utilizează un sistem de operare personalizat numit Raspbian (bazat pe o variantă de Linux numită „Debian”).

Mai întâi se instalează sistemul de operare pentru Raspberry Pi. Sistemul oficial recomandat este Raspbian.

3.3.2.Programele necesare instalate

Ca un prim pas, se descarcă Win32 Disk Imager și se scrie sistemul de operare pe cardul SD.

Fig.3.4.Descarcare Win32 Disk Imager

Pasul următor presupune descărcarea imaginii pentru Raspbian de pe site-ul official al Raspberry Pi : https://www.raspberrypi.org/

Fig3.5.Descărcarea imaginii pentru Sistemul de Operare Raspbian

Alegem varianta “Raspbian stretch with Desktop” în forma arhivată.

3.3.3.Scrierea sistemului de operare Raspberry Pi pe cardul SD

Inițial, se introduce cardul SD în cititorul de carduri și se conectează la portul USB al computerului. Se deschide Win32 Disk Imager și se alege calea cardului SD (aici este Discul G). Se selectează “deschideți img. fișier extras anterior” și se selectează “Scrie”.

Fig 3.6.Scrierea sistemului de operare

3.4.Activare SHH și Setare WiFi

Se menține cardul SD conectat la computer. Se deschide directorul rădăcină al cardului și se creează un fișier numit ssh, fără sufixe. În directorul rădăcină al cardului SD se creează un fișier wpa_supplicant.txt și se scrie următorul cod în fisier:

Fig.3.7.Activare Wi-fi pe Raspberry Pi

În codul de mai sus se va înlocui WIFI cu propriul nume, Wifi SSID și parola pentru rețeaua wifi. Fișierul va fi salvat cu extensia ,,.conf.”

3.5.Descarcare și instalare PuTTy

PuTTy este un software care se conectează cu Raspberry Pi prin ssh. Cu acest instrument, putem controla Raspberry Pi,implicit robotul, cu ajutorul computer-ului de la distanța prin modul Wifi , astfel facandu-se legatura în ,,Internetul Lucrurilor”.

Fig.3.8.Varinta PuTTy instalantă compatibilă cu computer-ul nostru și aplicația

Pentru a conecta computerul la Raspberry Pi avem nevoie de adresa IP a microcontroler-ului , iar cea de a doua condiție este ca cele două sisteme să fie conectate la aceeași adresă wi-fi precizată în documentul “wpa_supplicant.conf”, scris în directorul rădăcină al cardului SD.

Fig.3.9. Conectarea prin PuTTy la Raspeberry Pi prin adresa IP

În fereastra de avertizare vom bifa optiunea “DA”.

Activarea conexiunii se va face prin introducerea în terminalul apărut a user-ului denumit implicit “Pi” și a parolei ”Raspberry”, care pot fi schimbate ulterior.

Când software-ul Raspberry Pi este instalat, Raspberry Pi va reporni automat. Iar programul rulează automat după pornire. În acest moment, PuTTy se va deconecta automat.

3.6. Descrierea programului Python

Python este un limbaj multi-paradigmă, creat de către Guido Van Rossum în anul 1989. Guido Van Rossum, concentrându-se asupra programării imperative, orientate pe obiecte și funcționale, ceea ce permite o flexibilitate mai mare la scrierea aplicațiilor. Din punctul de vedere al sintaxei, Python are un număr de contrucții și cuvinte-cheie cunoscute oricărui programator, dar prezintă și un concept unic: nivelul de indentare are semnificație sintactică.

Blocurile de cod sunt delimitate prin simplă indentare. În C aceste blocuri sunt deseori desemnate prin acolade, {}, dar în Python nu este nevoie de astfel de construcții. Nivelele de indentare îndeplinesc această funcție. Această importanță a indentării este foarte surprinzătoare pentru mulți utilizatori noi ai limbajului Python, chiar dacă sunt programatori cu experiență. Dar o astfel de utilizare a indentării permite codului să fie mai ușor de citit și mai compact. Programatorii cu experiență vor indenta implicit codul sursă, oricare ar fi limbajul, fiindcă astfel se permite structurarea codului sursă și evidențierea funcționalității. Python face din această deprindere folositoare în acest sens o cerință strictă. O impunere similară există și în limbajul de programare Java, care forțează programatorii să delimiteze clasele în fișiere aparte, din motive de organizare și sporire a eficienței de scriere a softului în echipe.

Python pune accentul pe curățenia și simplitatea codului, iar sintaxa sa le permite dezvoltatorilor să exprime unele idei programatice într-o manieră mai clară și mai concisă decât alte limbaje de programare, precum C. În ceea ce privește paradigma de programare, Python poate servi ca limbaj pentru software de tipul object-oriented, dar permite și programarea imperativă, funcțională sau procedurală. Sistemul de tipizare este dinamic, iar administrarea memoriei decurge automat prin intermediul unui serviciu „gunoier” (garbage collector). Alt avantaj al limbajului este existența unei ample biblioteci standard de metode. [11]

Python include bibioteci pentru lucrul cu fișiere, arhive, fișiere XML și un set de biblioteci pentru lucrul cu rețeaua și principalele protocoale de comunicare prin internet (HTTP, Telnet, FTP). Un număr mare de platforme Web sunt construite cu Python. Abilitățile ca limbaj pentru programarea CGI sunt în afara oricăror dubii. De exemplu YouTube, unul dintre site-urile cu cea mai amplă cantitate de trafic din lume, este construit pe baza limbajului Python. Totuși, Python permite extinderea funcționalității prin pachete adiționale programate de terți, axate pe o anumită funcționalitate. De pildă, pachetul wxPython conține metodele și structurile necesare creării unei interfețe grafice.

Popularitatea limbajului este în creștere începând cu anul 2000, datorită faptului că Python permite crearea mai rapidă a aplicațiilor care nu cer viteze înalte de procesare a datelor. De asemenea, este util ca limbaj de dezvoltare a unor scenarii, fiind utilizat în cadrul aplicațiilor scrise în alte limbaje. Modulele (bibliotecile) Python pot fi de asemenea scrise în C, compilate și importate în Python pentru a mări viteza de procesare.

3.7. Procesul de instalare a programului Python 3.7.

Interfața grafică pentru controlul terminalului (în cazul nostru robotul RaspTank) este scrisă în Python 3.7, o platformă acceptata de mai multe echipamente.

Pentru a fi compatibil cu sistemul nostru de operare, am descărcat varianta programului pe 64 de biti, de pe site-ul official, deoarece este un program gratuit administrat de fundația Python Software Foundation.

Pentru functionarea programului am parcurs instalarea pachetului numpy, apelând fereastra “CMD”, folosind structura prezentată în figura 3.10.

Fig.3.10. Structura folosită la instalarea pachetului numpy

NumPy este un pachet de procesare matriceală cu scop general conceput pentru a manipula eficient matricele multidimensionale mari de înregistrări arbitrare, fără a sacrifica prea multă viteză pentru tabelele multidimensionale mici.

Pasul următor constă în descărcarea și instalarea librăriei folosite în relizarea aplicațiilor pe care le poate dezvolta robotul nostru în codul sursă, OpenCV_python_whl. Varianta descărcată folosită este prezentată în figura 3.11.

Fig.3.11.Varianta librăriei OpenCV python_whl compatibilă cu aplicația RaspTank

Pentru instalarea librăriei OpenCV python_whl, în fereastra “cmd” au fost introduse pe rând structurile prezentate în figura 3.12.

Fig.3.12.Structurile folosite pentru instalarea librăriei OpenCV

În acest moment sunt disponibile toate programele și librăriile necesare pentru programarea robotului RaspTank,conform algoritmului urmărit și prezentat în figura 3.13.

Fig.3.13.Descrierea algoritmului folosit la configurarea circuitului integrat Raspberry Pi

Capitolul 4.

IMPLEMENTAREA ALGORITMILOR SPECIFICI

După instalarea sistemului de operare pe procesorul Raspberry Pi, asamblarea componentelor hardware ale robotului și a pachetului de aplicații necesare implementării codului, dar și realizarea interfeței de comandă, urmează procesul propriu-zis de programare a subansamblelor, rezultând un cod complex pentru aplicații precum: detectarea de obiecte, transmisia video în timp real sau urmărirea unei linii.

4.1.Controlul LED-urilor WS2821

Conectând modulul LED WS2812 la interfața Robot HAT WS2812, linia de semnal este echivalentă cu Raspberry Pi On GPIO 12.

Se utilizează următoarea comandă pentru a instala rpi_ws281x pentru Raspberry Pi. Deoarece Raspberry Pi are două versiuni de Python încorporate, codul Python3 este utilizat ca exemplu, astfel încât pip3 este adoptat pentru a instala biblioteca: “pip3 instalează rpi-ws281x”

Explicatia succintă a codului :

Pasul 1: Importarea dependențelor

import time

from rpi_ws281x import *

Pasul 2: Construcția clasei de control a led-urilor, cod regăsit în anexa 1

Pasul 3: Se execută funcția

Functia colorWipe () trebuie să treacă în trei parametri, și anume R, G și B, care corespund luminozității celor trei culori primare de roșu, verde și albastru. Intervalul valoric este 0-255, iar cu cât valoarea este mai mare, cu atât luminozitatea canalului de culoare corespunzător este mai mare. Dacă valorile celor trei canale color sunt aceleași, se emite lumină albă. Exemple specifice sunt regăsite în figura 4.1.

Putem realiza și controlul unei singure lămpi folosind codul de mai jos, unde i este numărul de serie al lămpii conectate:

LED.strip.setPixelColor (i, Culoare (R, G, B))

LED.strip.show ()

Fig.4.1.Descrierea codului care controlează toate luminile pentru a parcurge cele 3 culori

4.2.Controlul Servomotorului

4.2.1 Controlul direcției pentru rotația cu un anumit unghi

Întrucât servo poate utiliza semnalul PWM pentru a controla unghiul de rotație al unui mecanism, acesta este un modul mai frecvent utilizat pentru produsele robotice. Roboții mobili, brațele robotice și cardanele sunt conduse de servo. Modulul de adaptare Robot HAT utilizat este conectat la Raspberry Pi și are un cip PCA9685 dedicat pentru controlul servo. Raspberry Pi foloseste I2C pentru a comunica cu PCA9685.

Pasul 1: Pentru a instala scriptul, am utilizat următoarea comandă pentru a instala Adafruit_PCA9685 pentru Python3 în Raspberry Pi: sudo pip3 install adafruit-pca9685

Pasul 2: Am utilizat codul descris în figura 4.2 pentru a controla servomotoarele

Fig.4.2.Codul folosit pentru controlul Servo

În codul de mai sus, set_pwm_freq (50) este utilizat pentru a seta frecvența PWM la 50Hz. Această setare depinde de modelul servo. Servomotorul folosit de produsul nostru robot trebuie să fie controlat printr-un semnal PWM de 50Hz. Dacă se utilizează un altul, valoarea servo trebuie setată prin raportare la documentația servo specifică.

Metoda pwm.set_pwm (3, 0, 300) este utilizată pentru a controla rotația unui servo într-o anumită poziție, unde 3 este numărul portului servo, care corespunde cu numărul identificat pe placa Robot HAT, iar 0 este abaterea comenzii rotației servo-ului. Practic, programul nostru nu utilizează această funcție pentru a corecta abaterea; 300 este valoarea frecvenței PWM pe care dorim să o setam. Conform diferitelor servomotoare, această valoare reprezintă unghiuri servo diferite. Domeniul ciclului de lucru PWM al servo motorului pe care îl utilizăm este de aproximativ 100 până la 560, ceea ce corespunde unui domeniu de rotație de aproximativ 0 ° la 180 °.

4.2.2.Controlul mișcării lente a angrenajului de directie

Codul de mai sus este utilizat pentru controlul angrenajului de direcție, și nu controlează viteza de rotație a angrenajului de direcție. Dacă dorim să reglăm viteza de deplasare mai mică, pe o anumită direcție, între două poziții, trebuie să utilizăm o metodă variabilă de creștere sau scădere pentru a controla angrenajul.

Fig.4.3.Codul folosit la comanda vitezei angrenajului de directive

Codul de mai sus poate face ca, pentru direcția considerată, brațul să se rotească lent înainte și înapoi, cu o viteză cuprinsă între 300 și 400 rot / min, dar această metodă de control a direcției are și multe dezavantaje. Când programul este executat până când mișcarea lentă a “volanului” se va bloca, acest lucru va afecta serios performanțele programului. Astfel s-a realizat o modificare a codului pentru a realiza comanda care nu blochează, regăsit în anexa documentului.

4.3.Controlul motoarelor de curent continuu

Dacă versiunea de imagine Raspbian instalată este furnizată de site-ul oficial, nu este necesar să instalam alte biblioteci dependente. Trebuie doar să comandăm portul GPIO al Raspberry Pi, pentru niveluri simple, înalte și joase și PWM pentru a controla cipul L298N de pe Robot HAT, controlând astfel direcția și viteza motorului.

Fig.4.4. Secvența de cod pentru descrierea controlului motorului de curent continuu

Fig.4.5. Secvența de cod pentru comanda motoarelor de curent continuu la viteza maximă timp de 3 secunde în sens pozitiv, apoi negativ

Funcțiile utilizate în cod pentru controlul motorului A și motorului B au aceeași structură, dar diferă portul de comandă. Această funcție necesită doi parametri, unul este direcția, iar celălalt este viteza. 1 sau -1. Viteza minimă este 0, iar valoarea maximă este 100. Deoarece reglarea vitezei este ajustată de PWM, este de fapt echivalent cu ajustarea valorii de tensiune a portului motorului. Motorul are un mecanism de decelerare ca sarcină. Nu va exista rotație, deci valoarea vitezei nu trebuie să fie prea mică.

4.4.Modulul senzor cu ultrasunete

Camera folosită de robotul nostru Raspberry Pi este monoculară, deci nu poate colecta informații de profunzime. Prin urmare, modulul senzor cu ultrasunete a fost adăugat pentru a obține informații de profunzime și pentru a detecta daca există un obstacol într-o anumită direcție, obținând distanța față de acel obstacol .

Principiul variației cu ultrasunete este dat de formula:

(4.1)

-S este distanța obstacolului ;

-T2 este momentul în care se prime•te ecoul;

-T1 este momentul în care se emite unda sonoră

-Vs este viteza de propagare a sunetului în aer

Modelul modulului cu ultrasunete utilizat în cadrul proiectului este HC-SR04.

Când se utilizează placa de driver Robot HAT, modulele HC-SR04 trebuie conectate la interfața cu ultrasunete de pe placa driver. Aceste module nu trebuie conectate la portul IIC, pentru a evita arderea modulului cu ultrasunete (IIC este o interfață folosită pentru conectarea dispozitivelor I2C, iar pozițiile sale de pin VCC și GND sunt diferite de cele cu ultrasunete).

Metoda de utilizare a Python3 pentru obținerea rezultatelor cu ultrasunete este prezentată în figura 4.6.

În ceea ce privește modulul cu ultrasunete, acesta este un modul utilizat frecvent în multe proiecte preliminare, pentru a reduce complexitatea programului. Deși există o componentă de blocare în acest cod, nu am folosit mai multe filetări pentru a o rezolva, deoarece nu sunt solicitate performanțe atât de înalte.

Fig.4.6.Prezentarea codului folosit pentru controlul și afișarea rezultatelor cu modulul ultrasonic

4.5. Aplicația de urmărire a liniei

Modulul de urmărire a liniei infraroșii cu trei canale conține 3 grupuri de senzori, unde fiecare grup de senzori constă dintr-un LED care emite infraroșu și, prin combinația de tranzistor fotoelectric cu senzor infraroșu, robotul stabilește dacă există o linie, prin detectarea intensității luminii infraroșii detectate de fototranzistorul senzorului infraroșu. Poate detecta linia albă (lumină infraroșie reflectată) pe un fundal negru (lumină infraroșie nereflectată)

Deoarece Raspberry Pi poate citi doar semnale digitale, modulul de urmărire în infraroșu cu trei canale este echipat cu un potențiometru ce poate fi reglat pentru a ajusta sensibilitatea fototranzistorului.

Pașii urmați pentru programarea modulului de urmărire a liniei cu infraroșu:

Pasul 1.Importarea bibliotecilor necesare

Pasul 2. Inițializarea portului GPIO

Pasul 3. Citește valorile a trei fototranzistori (0 -nu este detectată linie, 1 -este detectată linie). Codul regăsit în anexă detectează linia neagră pe un fundal alb.

Fig.4.7.Secvența de cod folosită pentru detectarea liniei negre pe un fundal alb

Pasul 4. Robotul va fi controlat pe direcțiile: înainte, înapoi, stânga, dreapta. Dacă robotul nu detectează linia, acesta se oprește și îl putem readuce în poziția de la care am pornit scanarea mediului.

Când trebuie să utilizăm funcția de urmărire a linie, nu trebuie să rescriem tot codul, trebuie doar să copiem funcția findline.py și move.py în folderul serverului de programare robot, apoi utilizăm următorul cod pentru a utiliza funcția de urmarie a linie:

import findline

findline.setup ()

while 1 :

findline.run ()

Motivul pentru care trebuie să importăm move.py este findline.py, deoarece trebuie să utilizeze metoda move.py pentru a controla mișcarea robotului.

4.6.Aplicația pentru realizarea jocului de lumini

Acest subcapitol introduce utilizarea mai multor filetări pentru a obține unele efecte legate de luminile LED WS2812. Multi-filetarea este o operație frecvent utilizată în proiectele de tip robot, deoarece roboții au cerințe ridicate pentru răspunsul în timp real, atunci când îndeplinesc o anumită sarcină, încercăm să nu blocam comunicarea prin firul principal.

Multi-filetarea este similară cu executarea mai multor programe sau sarcini diferite simultan. Multi-filetarea are următoarele avantaje:

• Utilizarea fileturilor poate executa sarcini pe termen lung pentru procesare.

• Pentru a îmbunătăți eficiența de funcționare a programului, procesarea video în timp real și OpenCV a cadrelor video utilizează mai multe filetări pentru a crește foarte mult rata cadrelor.

În anexă se regăsește codul complet pentru controlul cu mai multe filete ale luminilor , în figurile de mai jos fiind prezentate doar bucăți din program.

Fig.4.8.Setarea culorilor tuturor luminilor

Fig.4.9.Parte din cod pentru realizarea luminilor “de poliție”

Dacă dorim să folosim jocul de lumini și în alte proiecte, nu este nevoie să rescriem tot codul, trebuie doar să salvăm codul în biblioteca robotLight.Py apoi să o importăm în noul proiect .

4.7.Transmisia Video în timp Real

Videoclipurile în timp real și funcția OpenCV sunt avantajele robotului Raspberry Pi.

Există multe modalități de a transfera imaginile colectate de camera Raspberry Pi către alte dispozitive prin intermediul rețelei. Principiul de selecție este flask-video-streaming, această soluție fiind cea mai convenabilă și eficientă în comparație cu alte soluții pe care le-am încercat, iar partea de OpenCV are o interfață bună pentru rescriere ca și procesarea multi-filetată.

Fig.4.10.Descrierea algoritmului de procesare cu mai multe filete a cadrelor video

Explicația procesului: Pentru a îmbunătăți rată cadrelor, separăm sarcina de analiză a cadrului video de procesul de achiziție și afișare și o plasăm într-un fir de fundal pentru a executa și genera informații despre desen modificând codul complet al camera_opencv.py.

Funcțiile software ale acestui proiect necesită utilizarea bibliotecilor OpenCV, numpy, zmq și bibliotecile base64, iar secvența de cod pentru programare se realizează în mai mulți pași prezentați mai jos.

       Pasul 1: Importarea bibliotecilor necesare, urmată de completarea IP-ului receptorului video

       Pasul 2: Inițializarea camerei, cod ce îl regăsim în figura 4.11.

       Pasul 3: Inițierea zmq folosit pentru a trimite cadre folosind un protocol de comunicare de tip tcp

       Pasul 4: Crearea buclei: ”for,, ce colectează imagini de pe camera Raspberry Pi

  Pasul 5: Codificarea tabloului într-un tablou numpy și salvarea în memoria tampon

       Pasul 6: Trimiterea datelor fluxului în buffer prin codificarea bazei 64

       Pasul 7: Decodarea tabloului unidimensional într-o imagine și afișarea acesteia

Fig.4.11.Descrierea secvenței de intializare a camerei video

Capitolul 5.

Rezultate experimentale

Similar Posts