PLEȘCA Robert Marius [631187]
ROBOT UMANOID
PLEȘCA Robert Marius
PURUȘNIUC Sebastian Pagină 1
Cuprins
Cuprins ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 1
Rezumat ………………………….. ………………………….. ………………………….. ………………………….. ……………… 5
Tema Proiectului ………………………….. ………………………….. ………………………….. ………………………….. ….. 6
Memoriu justificativ ………………………….. ………………………….. ………………………….. ………………………….. 7
Notații ………………………….. ………………………….. ………………………….. ………………………….. …………………. 9
Capitolul 1. Studiul deplasării roboților umanoizi bipezi ………………………….. ………………………….. . 11
1.1 Introducere ………………………….. ………………………….. ………………………….. ………………………. 11
1.2 Robo ți pășitori ………………………….. ………………………….. ………………………….. ………………….. 11
1.3 Evoluția r oboților umanoizi (bipezi) ………………………….. ………………………….. …………………. 11
Capitolul 2. Obiectivele și direcțiile de cercetare ale roboților umanoizi bipezi ………………………… 13
Capitolul 3. Cinematica roboților bipezi ………………………….. ………………………….. ……………………… 14
3.1 Introducere ………………………….. ………………………….. ………………………….. ………………………. 14
3.2 Cinematica robotului pășitor ………………………….. ………………………….. ………………………….. . 14
3.3 Notația Denavit Hartenberg și modelul geometric ………………………….. …………………………. 16
3.3.1 Notația Denavit Hartenberg – considerații teoritice ………………………….. ………………… 16
3.4 Parametrii cinematici obținuți pe baza algoritmului Denavit – Hartenberg …………………….. 19
3.5 Problema cinematică inversă a piciorului robotuluiProblema cinematică inversă permite
calculul coordonatelor articulațiilor, care aduc efectorul final în poziția și orientarea dorită, date
fiind coordonatele absolute (operaționale). ………………………….. ………………………….. ………………… 24
3.6 Viteza și accelerația robotului biped ………………………….. ………………………….. ………………… 27
Capitolul 4. Centrul de masa.Dinamca robotului ………………………….. ………………………….. …………. 29
4.1 Centrul de masă (CM) ………………………….. ………………………….. ………………………….. ………… 29
4.2 Descrierea robotului: ………………………….. ………………………….. ………………………….. …………. 30
Capitolul 5. Controlul stabilității unui robot biped. Modelarea dinamică ………………………….. ……. 31
5.1 Algoritmul de deplasare a traiectoriei dinamice. ………………………….. ………………………….. .. 31
5.2 Modelarea dinamică a mersului biped ………………………….. ………………………….. ……………… 31
5.2.1 Abordări de bază ………………………….. ………………………….. ………………………….. ……….. 31
5.3 Controlul stabilității ………………………….. ………………………….. ………………………….. …………… 32
5.4 Criteriile de stabilitate ………………………….. ………………………….. ………………………….. ……….. 32
5.5 Centrul de greutate ………………………….. ………………………….. ………………………….. …………… 34
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 2
5.6 Punctul Momentului Zero (PMZ).Considera ții teoretice ………………………….. ………………….. 34
5.7 Calculul Punctului Momentului Zero ………………………….. ………………………….. ………………. 35
5.8 Modelarea matematică a mersului robotului umanoid biped. Interpolarea polinomilor ….. 36
5.9 Dezvoltarea algoritmului. ………………………….. ………………………….. ………………………….. …… 38
5.10 Forța centripetă ………………………….. ………………………….. ………………………….. ………………… 43
5.11 Formule pentru forța centrifugă și forța centripetă ………………………….. ……………………….. 43
5.12 Traiectoria șoldului pentru faza unică de sprijin ………………………….. ………………………….. … 44
5.13 Traiectoria pivotului și piciorului în faza unică de sprijin ………………………….. …………………. 45
5.14 Determinarea parametrilor algoritmului ………………………….. ………………………….. ………….. 47
5.15 Poziția de control a legăturilor ………………………….. ………………………….. ………………………… 48
5.16 Rezultatele implementării. ………………………….. ………………………….. ………………………….. …. 50
Capitolul 6. Protocolul de comunicare cu controllerul de servomecanisme ………………………….. … 55
6.1 Fundamentare teoretică ………………………….. ………………………….. ………………………….. ……. 55
6.1.1 Numele comenzii: CMD_SERVO_MOVE: ………………………….. ………………………….. ……. 55
6.1.2 Numele comenzii: CMD _ACTION_GROUP_RUN : ………………………….. ……………………. 57
6.1.3 Numele comenzii: CMD_ACTION_STOP : ………………………….. ………………………….. …… 58
6.1.4 Numele comenzii: CMD_ACTION_SPEED : ………………………….. ………………………….. …. 59
6.1.5 Numele comenzii: CMD_GET_BATTERY_COLTAGE: ………………………….. …………………. 60
6.2 Date transmise de către controlerul de servomecanisme: ………………………….. ………………. 61
6.2.1 Numele comenzii: CMD_ACTION_GROUP_RUN ………………………….. ……………………… 61
6.2.2 Numele comenzii: CMD_ACTION_GROUP_STOP ………………………….. …………………….. 61
6.2.3 Numele comenzii: CMD_ACTION_GROUP_COMPLETE ………………………….. …………….. 62
Capitolul 7. Procesare video ………………………….. ………………………….. ………………………….. …………. 65
7.1 Introducere ………………………….. ………………………….. ………………………….. ………………………. 65
Capitolul 8. Instalarea OpenCV ………………………….. ………………………….. ………………………….. ……… 66
8.1 Pregătirea sistemului de operare pentru instalarea OpenCV ………………………….. …………… 66
8.2 Descărcarea codului sursă al OpenCV ………………………….. ………………………….. ………………. 67
8.3 Python 2.7 si Python 3 ………………………….. ………………………….. ………………………….. ……….. 67
8.3.1 Crearea mediului virtual Python ………………………….. ………………………….. ………………. 68
8.3.2 Cum putem verifica dacă suntem în mediul virtual CV: ………………………….. ……………. 68
8.3.3 Instalarea NumPy ………………………….. ………………………….. ………………………….. ………. 69
8.4 Compilarea și instalarea OpenCV ………………………….. ………………………….. …………………….. 69
8.4.1 Configurarea dimensiunii spațiului de swap înainte de al compila: ……………………….. 71
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 3
8.5 Finalizarea instalării OpenCV pe Raspberry Pi ………………………….. ………………………….. …… 72
8.5.1 Pentru Python 2.7: ………………………….. ………………………….. ………………………….. …….. 72
8.5.2 Pentru Python 3 : ………………………….. ………………………….. ………………………….. ……….. 73
8.6 Cum testăm dacă am instalat OpenCV 3: ………………………….. ………………………….. ………….. 73
Capitolul 9. Metoda segmentării imaginilor în recunoașterea gesturilor mâinii ……………………….. 75
9.1 Introducere ………………………….. ………………………….. ………………………….. ………………………. 75
9.2 Modelarea imaginilor care conțin gesturile mâinilor: ………………………….. ……………………… 76
9.3 Modelul Distribuției unice Gaussiene ………………………….. ………………………….. ………………. 77
9.4 Modelul Gaussian de amestec al unei imagini RGB ………………………….. ………………………… 77
9.5 Algoritmul maxim de așteptare ………………………….. ………………………….. ……………………….. 79
9.6 Segmentarea interactivă a imaginilor ………………………….. ………………………….. ………………. 80
9.7 Câmpul aleatoriu Gibbs ………………………….. ………………………….. ………………………….. ……… 81
9.8 Matrici de selecție automată ………………………….. ………………………….. ………………………….. 82
9.9 Algoritmul Min -Cut/Max -Flow ………………………….. ………………………….. ………………………… 83
Capitolul 10. Construirea programului de recunoaștere facială ………………………….. ……………….. 85
10.1 Bazele recunoașterii faciale ………………………….. ………………………….. ………………………….. … 86
10.2 Metodele OpenCV de recunoaștere facială ………………………….. ………………………….. ………. 87
10.2.1 Recunoașterea facială cu ajutorul EigenFaces ………………………….. ………………………… 87
10.2.2 Recunoașterea facială cu ajutorul FisherFaces ………………………….. ……………………….. 89
10.2.3 Recunoașterea facială cu ajutorul Local Binary Patterns Histograms (LBPH) …………… 90
10.3 Procesul de codare utilizand Python si OpenCV: ………………………….. ………………………….. .. 92
10.3.1 Pregatirea date lor de instruire ………………………….. ………………………….. …………………. 93
10.4 Prepararea datelor pentru recunoașterea facială: ………………………….. …………………………. 95
10.5 Antrenarea modulului de recunoaștere facială ………………………….. ………………………….. …. 99
Capitolul 11. Predicția ………………………….. ………………………….. ………………………….. ………………. 100
Capitolul 12. Modificarea robotului umanoid ………………………….. ………………………….. ………….. 102
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ………….. 115
12.1 Comunica ția cu controllerul de servomecanisme ………………………….. …………………………. 115
12.2 Instalearea OpenCV ………………………….. ………………………….. ………………………….. …………. 115
12.3 Procesarea imaginilor ………………………….. ………………………….. ………………………….. ………. 115
12.4 Recunoașterea facială ………………………….. ………………………….. ………………………….. ……… 116
12.5 Direcții viitoare de cercetare ………………………….. ………………………….. …………………………. 116
12.6 Concluzii finale. Contribuții originale. ………………………….. ………………………….. …………….. 116
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 4
12.7 Concluziile stadiului actual al sistemelor de deplasare pentru roboți mobili ………………… 116
12.8 Concluzii privind cinematica roboților bipezi ………………………….. ………………………….. ….. 117
12.9 Concluzii asupra controlului stabilității unui robot biped ………………………….. ………………. 118
12.10 Concluzii asupra analizei sistemelor de deplasare pentru roboții mobile …………………. 119
12.11 Contribuții originale ………………………….. ………………………….. ………………………….. …….. 120
12.12 Direcții viitoare de cercetare ………………………….. ………………………….. ……………………… 120
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ………. 121
Anexe ………………………….. ………………………….. ………………………….. ………………………….. ………………. 128
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 5
Rezumat
Studiul aflat la baza lucrării prezentate este constituit de asamblarea, modificarea și
programarea robotului umanoid pentru a funcționa astfel încât să imite mecanismul de
acționare și fiziologie a ființei umane, utilizând de asemenea și senzorii proprioc eptivi și
exteroceptivi (cei de procesare video și de menținere a echilibrului).
Robotul căruia i -am adus îmbunătățiri, l -am achiziționat pe component separate și l -am
asamblat ulterior , iar modificările aduse sunt realizate experimental, studiind locomoț ia și
procesarea video.
Cel mai bun exemplu care se urmează în robotica umanoida, este însăși ființa umană,
roboții având sisteme care imită oamenii, scopul lor fiind de o avansare a tehnologiei și o
evoluție a transhumanismului, care își propune să pună la dispoziție pe o scară largă
tehnologii sofisticate.
Mersul biped și menținerea echilibrului sunt asemenea ființelor umane, iar senzorii de
care dispun ființele umane, în robotul umanoid au fost înlocuite de giroscop și accelerometrul.
Acestea au rolul d e a afla accelerațiile în poziție de rapaus și în mișcarea dinamică, dar și de a
afla viteza unghiulară. Cu ajutorul acestor senzori, robotul se poate deplasa, își poate planifica
traseul.
Procesarea video este, de asemenea, foarte importantă, deoarece cu ajutorul acesteia,
roboții pot să recunoască fețe, obiecte și să funcționeze asemenea ochiului uman, senzorii de
procesare video fiind reprezentați de o tehnologie numită CMOS (complementary metal –
oxide -semiconductor).
Pentru a se descurca mai ușor în me diul real, robotul are nevoie să vadă lucrurile
precum ființa umană, astfel, va capta imagini și mai apoi le va procesa. Astfel, în construcția
lui am folosit și o placă Raspberry Pi 3 și am montat o camera video specială, conectată la
portul CSI, și mai a poi prinsă pe 2 actuatoare de tip SG -90, astfel robotul va putea să miște
camera, asemenea capului unei ființe umane.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 6
Tema Proiectului
Să se studieze modul de deplasare și menținerea echili brului unui robot umanoid și să se
aducă îmbunătățiri pentru a-i putea da comenzi video .
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 7
Memoriu justificativ
Tema propusă și studiată a proiectului de licență este robotul umanoid.
Robotul umanoid reprezintă un robot construit astfel încât să aibă fiziologia identică a
corpului uman, dar și să utilizeze mecan isme de acționare a căror principiu de funcționare este
cel al mișcării corpului uman, mișcare determinată de mușchi și articulații.
Pentru a se obține efectul asemănător mișcării umane, se folosesc în principal
actuatoare, însă complexitatea procedurilor folosite crește odată cu dorința de a -l face să
funcționeze cât mai asemănător corpului uman cu ajutorul senzorilor (proprioceptivi sau
exteroceptivi) cât și a planificării și controlului, acestea fiind extrem de importante
locomoției.
Un senzor foarte i mportant, folosit în construcția robotului a fost cel de procesare video,
cu ajutorul căruia acesta poate să recunoască obiecte și să determine proprietățile acestora,
senzorul funcționând asemănător cu ochii ființelor umane.
În planificare și control, diferența esențială dintre umanoizi și alte tipuri de roboți (cum
ar fi cei industrial i ) este că mișcarea robotului trebuie să fie asemănătoare omului, folosind
locomoția cu picioare, în special mersul biped . (3)
Robotica umano idă oferă o compilație completă a evoluțiilor în conceptualizarea,
proiectarea și dezvoltarea roboților umanoizi, dar și a tehnologiilor aferente. Ființele umane
au construit mediul pe care îl ocupă pentru a se potrivi sistemului biped. Sistemele de
constr ucție, în special în robotică, care sunt compatibile cu mediul bine stabilit și bazat pe
comportamentul și acțiunile omului în mod natural cu mediul înconjură tor dar și cu alți
oameni, reprezentând în final un scop bine delimitat pentru toți cercetătorii ș i inginerii.
Roboții umanoizi sunt roboții reprezentați de sisteme care imită comportamentul uman,
oferind o platformă de studiu a construcției sistemelor care interacționează cu mediul și cu
oamenii. Cea mai provocatoare problemă care stă la baza acestor roboți este proiectarea unor
sisteme care imită ființa umană, cele mai importante fiind pentru realizarea mersului biped,
deoarece simplul act de a găsi echilibrul potrivit în funcție de mediu și pentru a realiza cu
ușurință mersul, săritul, și chiar alerg atul, avem nevoie de cele mai complexe sisteme și
metode de calcul pentru a afla potențialele erori.
Planificarea ideală pentru mișcările umanoide în timpul mersului normal ar trebui să
conducă la un consum minim de energie și un randament cât mai mare, aș a cum se întâmplă
în corpul uman. Din acest motiv, studiile privind dinamica și controlul acestor tipuri de
structuri au devenit din ce în ce mai importante.
Cea mai importantă caracteristică a roboților umanoizi este aceea de a se deplasa
asemenea unei fi ințe umane, folosind în special mersul biped. Caracteristicile folosite pentru
mișcarea umanoida în timpul mersului normal trebuie să conducă la un consum minim de
energie așa cum se întâmplă și cu corpul uman. Menținerea echilibrului dinamic are de
asemen ea o importanță majoră, colectând și făcând legătura informațiilor dintre forța de
contact și mișcarea dorită.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 8
Dacă ființa umană își menține echilibrul datorită segmentului periferic al analizatorului
vestibular, compus din crestele ampulare și aparatul o tolitic (macula), menținând astfel
echilibrul în condițiile accelarațiilor circulare ale capului și corpului, dar și în condiții statice
și dinamice, pentru realizarea imitării echilibrului de care dispune ființa umană, în robotul
umanoid se vor folosi acc elerometrul și giroscopul. Scopul accelerometrului este de a afla
accelerațiile pentru menținerea echilibrului în poziție de repaus dar și în mișcarea dinamică,
pe când cel al giroscopului este de a afla viteaza unghiulară pe axele X, Y, Z ( mișcări în jur ul
axei orizontale, verticale și laterale).
Aceste lucruri au la bază conceptul de (Zero moment poi nt), care are ca scop evaluarea
stabilității și împotrivirea răsturnării robotului, calculând punctul în care totalul forțelor de
inerție orizontală și gravitațională este egală cu 0.
Folosirea senzorilor în acest scop este de asemenea foarte importantă în pe rmiterea
umanoizilor de a se deplasa, a planifica traseul și de a evita obstacolele.
De asemenea, studiul roboticii umanoide oferă o platformă cu ajutorul căreia putem
întelege mecanismele și oferă o percepție fizică despre cum oamenii interacționează, gâ ndesc
și reacționează în mediul înconjurător și cum aceste comportamente pot fi reasamblate și
reconstruite. Însă, în prezent, problema cea mai provocatoare a umanoizilor bipezi este
determinarea acestora de a -și păstra echilibrul. Simplul act de a găsi ce l mai bun echilibru
pentru a permite mersul, săriturile și alergarea ușoară necesită unele dintre cele mai complexe
dezvoltări ale sistemelor robotice pentru a se ajunge la o imitare completă a diversității și
dexterității ființelor umane.
Scopul proiectă rii roboților umanoizi este unul funcțional, aceștia putând interacționa cu
instrumente și medii umane, dar totodată poate fi și experimental, ajutând la studierea
locomoției sau în diverse scopuri.
În prezent, roboții umanoizi sunt folosiți ca instrument e de cercetare în multe domenii
științifice, analizându -se cogniția umană (felul în care oamenii percep informațiile senzoriale,
le prelucrează/procesează și dobândesc abilități specifice).
Construirea roboților umanoizi este foarte avansată și stă de asem enea și la baza
transhumanismului, acesta având la bază scopul de transformare a stării umane prin sporirea
semnificativă a intelectului și a fiziologii umane cu ajutorul ultimelor tehnologii disponibile.
Un alt scop al construirii roboților umanoizi, îna fară de cercetare, este îndeplinirea
sarcinilor umane, aceștia putând (teoretic) efectua orice sarcină pe care o poate avea o ființă
umană, asta datorită unui software adecvat. (2)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 9
Notații
– lungimea elementului
– unghiul elementului
– ordonanta elementului
– unghiul cuplei
– distanța de la la
– este unghiul dinre și
q1
q2
q3
q4
q5 – unghiuri de rotație între două axe OX
lx1
ly1
lz1
lx2
lz2
lx3
lx4
lx5
lx6 – lungimile dintre două articulații
– matricele de poziționare
F – este forța vectorială [N]
M – sunt momentele vectoriale [N m]
G – centrul de greutate
– este masa elementului
⃗⃗⃗ – este vectorul de poziție al centrului de greutate al elementului
M – este masa totală a robotului
g – accelerația gravitațională
G – centrul de masă
– accelerația centrului de masă
̇ – este rata de impuls unghiular la centrul de masă
– este rezultatul forțelor de contact X
– este momentul legat de forțele de contact în orice punct X
P – este un punct pe planul de contact
S = {1,2,3} – suportul nodurilor
(vxhe,vzhe) – viteza dorită
Ls – lungimea treptei
(xPMZ, yPMZ,0) – sunt coordonatele PMZ -ului
(xi,yi,z i) – este centrul de masă al legăturii i în sistemul de coordonate,
m – este masa legăturii i,
g – este accelerația gravitațională,
Iix și Iiy – sunt componentele momentului de inerție ,
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 10
θiy si θix – sunt viteza unghiulară în jurul axelor x și y (luat ca un punct din
centrul de masă al legăturii I).
L – este longitudinea piciorului
-τxa(θ)si τ xb(θ) – sunt m omentele maxime și minime posibile ale gleznei în planul
sagital.
( )=m(g+. ( )
( )/ ( )
( ))
V – este viteza șoldului
-este accelerația centripetală.
ω – reprezintă viteza unghiulară (de valoare constantă, măsurându -se în radiani pe
secundă ) cu care corpul de masă M se rotește în jurul punctului O.
v – este vectorul viteză instantanee a corpului de masă M, vectorul v fiind perpendicular
în punctul P pe dreapta OP.
T – este perioada pentru etapa robotului
Ts – este perioada în faza unică de sprijin
N+2 – lungimea bitului
μ – este așteptarea matematică sau media
σ – este covarianta distribuției gaussiene
exp – denotă exponențiala funcției
– este un vector d dimensional,
a – reprezintă media de roșu, albastru și verde
– este covarianta matricii
– este inversa matricii
( ) – este matricea transpusă a ( ).
* + – arată care model unic gaussian aparține
( ) – este numit likelihood cu parametrii dați de X
B – este setul de pixeli din background
O – este setul de pixeli din prim plan
Cb și Cr – valori ale culorii pielii umane
– tipuri de conexiuni în regiunea N, de la pixel la pixel
– tipuri de conexiuni în regiunea N, de la pixel la S
– tipuri de conexiuni în regiunea N, de la pixel la T
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 11
Capitolul 1. Studiul deplasării roboților umanoizi bipezi
Robotul este un sistem complex din mai multe elemente: mecanică (mecanism de
direcționare), actuatori și senzori. Mecanica stabilește înfățișarea robotului și mișcările
posibile în timpul funcționării și are gri jă ca robotul să -și îndeplinească obiectivul cu succes.
Sistemul de comandă și control evaluează informațiile primite de la senzori, reglează
actuatoarele și planifică mișcările care trebuie efectuate.
O problemă neobișnuită în mersul robotului bipedic est e instabilitatea produsă de
tranziția violentă dintre diferitele faze dinamice de mers . În această lucrare este prezentat un
algoritm dinamic pentru a controla un robot biped. Algoritmul se bazează pe interpolarea
polinomică cubică a condițiilor inițiale p entru poziția, viteza și accelerația robotului.
Aceasta garantează o viteză constantă și o tranziție lină în traiectoriile de control.
1.1 Introducere
Roboții bipezi pot merge în aproape orice tip de teren inclusiv cele care sunt imposibile
pentru roboți i cu roți. Roboții bipezi în comparație cu a lte tipuri de roboți au abilități mai bune
în vederea execut ării unor comenzi și au un grad mai mare de mobilitate, în special în mediul
cu obstacole.
Din acest motiv, sun ă promi țător utilizarea roboților bipe zi pentru mediile cu
caracteristici umane și dezvoltarea algoritmilor de control ale acestora. Mulți ro boți bipezi au
fost dezvoltați în ultimii ani și numeroase cercetări și -au pus atenția în dezvoltarea
algoritmilor de control pentru roboții bipezi.
1.2 Robo ți pășitori
Ideea construirii mașinilor pășitoare, respectiv a mașinilor care se deplasează î ntr-un
mod asemănător mamiferelor terestre sau unor insecte, a atras atenția de multă vreme
cercetătorilor și constructorilor . Omul, ca ființă iscoditoare a încercat permanent să studieze
natura și să -i identifice legile. Cercetările sistematice în domeniul roboților pășitor au început
în a două jumătate a secolului XX, chiar dacă fascinația acestui domeniu a atras cercetătorii
cu mult înainte, în condițiile în care su portul tehnologic nu a permis realizări deosebite
1.3 Evoluția r oboților umanoizi (bipezi)
În următoarele lucrări științifice ale lui Vukobratovic și ale co -autorilor, publicate din
1970 pană în 1972, a introdus un punct a fost numit în mod explicit PUNCTUL ZE RO-
MOMENT (ZMP – Zero -Moment Point) punctul în care forța de reacție dinamic ă la contactul
piciorului cu solul nu produce nici un moment, și sub această denumire s -a răspândit și în alte
limbi până în prezent. Încă de atunci s -a realizat că, în cazul mersul ui normal uman,
traiectoria este formată din punctul zero -moment pe picior, care este în contact cu solul, de
fiecare data acționează momentul prin reacția globală dinamică a sistemului biped
antropomorf.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 12
Cu câ t este mai naturală această cale de deplasare a reacției globale dinamice pe picior,
cu atât este mai natural (antropomorf) mersul sintetizat artificial al mecan ismului robotizat
umanoid cu un număr rela tiv mare de grade de libertate
Tendințele în proiectarea roboților constau în reducerea greutății și a înălțimii și
creșterea numărului de grade de libertate ale robotului. Prin analiza roboților umanoizi, se
poate concluziona că, din perspectiva proiectării, cele mai bune soluții de roboți umanoizi au
înălțimi de 1400 mm, greutate de 70 kg și au cel puțin 35 grade de libertate.
Seria roboților WABIAN, precum și P2 și P3 produși de Honda, la fel ca robotul
umanoid Johnnie, nu sunt complet autonomi din cauza sursei de alimentare prin cablu.
Umanoizii H6 ș i H7 pot merge stabil, dar nu au alte abilități i mportante, cum ar fi mișcarea
continuă sau interacțiunea cu factorul uman.
Robotul KHR -3 este foarte bine conceput și conține diferite inovații în hardware ș i
software de proiectare. Robotul HRP -2P este autonom și poate merge foarte stabil. Principalul
avantaj al HRP -2P este numărul de prototipuri construite și amplasate în cele mai bune centre
de cercetare din lume. Acest lucru demonstrează fiabilitatea de proiectare mecanică și
electrică, precum și posibilitatea de a dezvolta activitățile proprii ale utilizatorului. Familia
roboților HRP este una dintre principalele platforme de dezvoltare a interacțiunii complexe
dintre roboții umanoizi cu utilizatorul uman
Cu toate acestea, dezvoltarea roboților umanoizi rămâne încă o sarcină foarte complexă
a ingin eriei. Rezolvarea acestei sarcini necesită abordări noi în proiectarea mecanică,
electronică , software -ul ingineresc și de control. În timpul evoluției sale, rob otul umanoid a
fost transformat dintr -un mecanism greoi biped într -un corp artificial cu struct ură umanoidă și
cu capacităț i de mers destul de bune. În prezent, roboț ii umanoizi au un impact mare în multe
domenii ale ingineriei.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 13
Capitolul 2. Obiectivele și direcțiile de cercetare ale
roboților umanoizi bipezi
În cadrul studiului efectuat pe baza literaturii de specialitate al cărei domeniu este cel al
roboților mobili, s -a aprofundat domeniul roboților bipezi și în special s -au analizat condițiile
ce trebuie îndeplinite între caracteristicile constructive și cele funcționale pentru asigurarea
condițiilor optime de deplasare. Analiza acestei situații a condus la ideea necesității studierii
detaliate a roboților umanoizi (bipezi) care au fost construiți în secol XIX până în prezent,
precum și studierea stabilității robotului și analiza relațiilor între caracterist icile constructive
și solicitările la care este supusă structura acestuia.
Ținând cont de aceste aspecte, s -au conturat obiectivele generale și cele punctuale
1. Realizarea unui studiu complex asupra sistemelor de deplasare (robot umanoid):
analiza sistemelor de comandă;
analiza gradelor de libertate;
analiza modului de pășire;
analiza caracteristicilor constructive generalele.
2. Determinarea, pe baza cinematicii directe și cinematicii inverse, a ecuațiilor vitezei și
accelerației robotului biped supus analizei:
modelarea ma tematică pe baza cinematicii directe;
modelarea matematică pe baza cinematicii inverse;
modelarea matematică a vitezei robotului biped;
modelarea matematică a accelerație i robotului biped.
3. Realizarea modelului robotului biped:
modelarea virtuală cu ajuto rul programului CATIA;
studiul sistemelor de ac ționare cu servo motoarelor;
studiul caracteristicilor impuse modelului pentru ana liza condițiilor de stabilitate;
studiul Centrului de greutate (CDG) al sistemelor de tip robot biped .
4. Studiul controlului s tabilității robotului biped:
studiul sistemului Punctul Zero -Moment (ZMP);
studiul dinamic al mersului robotului biped pe baza modelului pendulului inversat;
studiul relației dintre centrul de greutate și Punctul Zero -Moment (ZMP).
5. Analiza stabilității modelului robotului cu ajutorul soft -ului MATLAB și a instalației
de încercare:
analiza stării de stabilitate pe baza modelului matematic în diferite condiții constructive,
diferite încărcări ale corpului robotului și în diferite poziț ii de mișcare;
analiza stabilității robotului construit cu ajutorul instalației de încercare.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 14
6. Enunțarea concluziilor finale și valorificarea rezultatelor
Capitolul 3. Cinematica roboților bipezi
3.1 Introducere
Cinematica roboților se ocupă cu determinarea principalilor pa rametri care
caracterizează mișcarea unui robot biped sau industrial. In acest sens, au fost elaborate diverse
metode cu ajutorul cărora se pot determina ecuațiile de poziție, orientările, distribuția de
viteze și respectiv distribuția de accelerații pentru orice element din structura unui robot.
Pentru modelarea mișcărilor efectuate de către un robot se consideră că acesta este
format printr -o succesiune de solide rigide interconectate între ele prin intermediul unor
articulații (care de obicei sunt a rticulații cu câte un grad de libertate) .
3.2 Cinematica robotului pășitor
S-au evidențiat anumite probleme particulare ce apar în analiza cinematică a roboților
pășitori, atât din punct de vedere al cinematicii directe, cât și din cel al cinematicii inverse.
Analiza cinematicii directe s -a efectuat atât asupra mișcării corpului robotului în spațiu, ținând
cont de legile de mișcare ale unui corp rigid în spațiul tridimensional, având numărul gradelor
de libertate egal cu șase, descris printr -un set de șase coor donate generalizate: trei pentru
orientarea acestuia și respectiv, trei pentru definirea unui punct fixat al corpului, cât și asupra
piciorului robotului considerând că acesta are o structură formată din: trei legături, prima
superioară de lungime (care fo rmează șoldul), a doua superioară și cea de -a treia inferioară,
precum și trei grade de libertate în raport cu corpul realizate de trei articulații de rotație, și
anume: prima articulație fiind o articulație abducție -aducție a șoldului, adică o rotație în jurul
axei verticale a corpului, cea de -a doua articulație fiind una a șoldului piciorului, adică o
rotație în jurul axei longitudinale a corpului, iar cea de -a treia articulație este flexie -extensie a
genunchiului. Axele de rotație pentru cele două articu lații care formează șoldul sunt stabilite
astfel încât să se intersecteze orthogonal .
Am decis să elaborez schema cinematică a robotului umanoid biped împreună cu
servomotoarele pentru a avea o imagine de ansamblu mu lt mai corectă și mai practică Figura
3.1.
Pentru a nu încăr ca prea mult schema am elaborat o legendă, astfel se poate înțelege
foarte ușor cinematica robotului.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 15
Figura 3.1 Cinematica robotului umanoid
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 16
3.3 Notația Denavit Hartenberg și modelul geometric
3.3.1 Notația Denavit Hartenberg – considerații teoritice
Un singur element din structura robotului are mai multe atribute pe care un constructor
mecanic trebuie să le ia în considerare:
– tipul de material,
– forța și rigiditatea elementulu i,
– locul și tipul articulației,
– forma externă, greutatea și inertia.
Dar dacă pentru început se consideră acesta ca un corp rigid, atunci axa articulației “ i”
este definit ă ca un vector directiv , după care elementul “ i” se rotește relativ la elementul “ i-1”
Figura 3.2.
Figura 3.2 Intercone ctarea pentru elementele “i-1” și “i”
Astfel în studiul cinematicii un element este caracterizat prin două numere care
defines c poziția relativă a celor două a xe la care este legat elemental, în spaț iul tridimen sional
aceste două numere sunt:
– distanța dintre axe măsurată în lungul perpendicularei commune, numită lungimea
elementului și notată cu ;
– unghiul dintre axe, numit unghiul elementului și notat , acest unghi se măsoară
în sensul de rotire al mâinii drepte orientate după astfel încât, axa “ i-1” să se
suprapună peste axa “i”.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 17
Dar pentru cercetarea cinematică nu sunt suficiente numai două mă rimi pentru a
poziționa un element conectat într -un lanț cinematic, ci este necesar un parametru pentru
interconectare. Acest param etru, numit ordonanta elementului , se notează cu pentru axa
cuplei “i” și se măsoară în lungul axei commune a celor două elemente.
Un alt parametru descrie rotația în jurul axei commune pentru a trece de la un element la
cel vecin . Ace sta se numește unghiul cuplei, și pentru axa “ i” se notează cu .
Pentru primul și ultimul element din lanț pri n convenție se atribuie mărimile = =0 și
= =0.
Ordonata elementului și unghiul se definesc pentru cupla 2 până la n -1.Dacă cupla
“j” este de rotație, atunci poziția 0 pentru se allege arbitrar, dar =0 prin convenție.
Metoda care folosește aceste mărimi, des utilizat e în descrierea cinematicii roboților,
este cunoscută sub numele de Denavit Hartenberg . În câteva cuvinte se va prezenta
abordarea cinema ticii utilizând aceste notații.
Poziționarea unui element relativ cu cel învecinat se face atașând fiecărui element un
sistem de referință care are numărul acordat cu numărul e lementului. Astfel sistemul { i } este
atașat rigid de elementul “i”.
Pentru poziționarea sistemelor de referință se adoptă convenții:
– Axa a sistemului { i } coincide cu axa cuplei “i”;
– Originea a sistemului { i } este în punctul unde intersectează axa cuplei “ i”
este orientat în lungul lui cu sensul de la cupla I la cupla i+1.În cazul în care
=0, este normal la planul axelor și ;
– Unghiul se măsoară în sensul mărimii drepte în jurul lui . Axa completează
sistemul { i }. Sistemul de bază al unui robot se atașează la elementul 0, numindu –
se sistemul { 0 }. De obicei axa se alege să coincidă cu axa , iar sistemul { 1 }
să coincidă cu sistemul { 0 } când variabila cuplei “ 1” este ze ro. Folosind această
convenție este totdeauna posibil ca , suplimentar aceasta asigu rând =0, dacă
cupla “1” este de rotație sau iar originea sistemului { n } este aleasă astfel
ca .
– În cazul în care cupla “n” este prismatică, direcția pentru se al ege astfel ca
, iar originea sistemului { n } este aleasă astfel ca .
Dacă sistemele de referință atașate elementelor se acordează cu parametrii acestora,
atunci:
– – distanța de la la măsurată în jurul axei ;
– -este unghiul dinre și măsurat în jurul axei ;
– -este distanța între axele și măsurat în lungul lui ;
– -este unghiul dintre și măsurat în jurul lui ;
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 18
Cu acești parame tri definiți pentru fiecare element se alcătuiește un tabel sugestiv foarte
ușor de utilizat în scrierea matricilor de transformare între sistemele atașate articulațiilor, cu
scopul descrierii în final a poziției și orientării efectorului în sistemul de co ordonate de bază.
O transformare din sistemul i -1 în sistemul i se scrie :
( ) ( ) R(Oz, ) ( ) (3.1)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 19
Exemplul 1 – Robotul planar cu două grade de libertate Figura 3.2
Figura 3.3 Robotul pla nar cu două grade de libertate
Tabelul parametrilor (Tabelul 3 .1) Denavit -Hartenberg pentru robotul pl anar cu două
grade de libertate .
Tabelul 3 .1 Parametrii cinematici obținuți pe baza algoritmului Denavit -Hartenberg
Element
1 0 0
2 0 0
3.4 Parametrii cinematici obținuți pe baza algoritmului Denavit –
Hartenberg
Se consideră un lanț cinematic deschis al unui robot biped ce are în structură „ n”
elemente conectate între ele prin intermediul unor articulații cu un singur gard de l ibertate (de
translație sau rotație).
De fiecar e element „ i” (i = 0…n ) al lanțului cinematic se solidarizează câte un system de
coordinate ( Ti). Se aplică metoda lui Denavit Hartenberg pentru robotul umanoid conform
Figur ii 3.4 , unde este prezentată schema piciorului Robotului biped, iar apoi se analizează
cinematica piciorului acestuia
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 20
Figura 3.4 Schema cinematică a robotului
Pentru a simplifica procesul și pentru a înțelege mai bine calculele ce urmează făcute
am elaborat o a 2 -a schemă cinematică pentru a analiza cinematica pe fiecare picior în parte.
Din schemele cinematice elaborate mai sus am observat că datorită culorii caroseriei
robotului devine dificil procesul de evidențiere a lanțului cinematic, de aceea de această dată
am folos it o poză monocromă a robotului.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 21
Figura 3 .5 Schema robotului.
Tabelul 3 .2 Parametrii cinematici obținuți pe baza algoritmului Denavit -Hartenberg
pentru piciorul stâng
Transformările
între două
articulații Rotație în jurul
axei ( ) Translație pe
axa ( ) Translație pe
axa ( ) Rotație în jurul
axei ( )
12
23 0 0
34 0 0
45 0
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 22
56 0 0
Unghiurile q1, q2, q3, q4, q5 sunt unghiuri de rotație între două axe OX, în jurul axei
OZ Parametrii lx1, ly1, lz1, lx2, lz2, lx3, lx4, lx5, lx6 reprezintă lungimile dintre două
articulații. Acești parametrii sunt variabili și constituie proprietățile piciorului robotului biped
(Figura 3.5 ).
Sistemele de coordonatele ale piciorului drept al robotului sunt adăugate la fel ca și
pentru piciorul stâng. Diferențe apar la lungimea ly6 pentru că aste negativă în matricea de
transformare. La utilizarea metodei cinematicii inverse se realizează calculele pentru un
singur picior, iar rezultatele pot fi aplicate ambelor membre inferioare.
Articulațiile între cele două picioare sunt proiectate la fel și se poate considera că cele
două membre au o axa de simetrie, unde este plasat sistemul de coordonate .
Sistemul de coordonate este considerat bază pentru corpul considerat, fapt care
facilitează analiza deplasării robotului față de sistemul . Matricea de transformare
în și este folosită la analiza mersului robotului în cazul
în care se poate scrie poziția și orientarea corpului. La analiza deplasării robotului în teren se
mai consideră și matricele care caracterizează deplasarea vârfului membrului robotului, adică
poziția ș i orientarea tălpii piciorului.
Această sarcină este mai complexă și pentru problema cinematică directă. Soluția
parametrică pentru ecuațiile cinematice ale roboților bipezi este de mare importanță pentru
controlabilitatea eficientă a acestor roboți. Forma simb olică a ecuațiilor cinematice descrie
sub formă trigonometrică, în mod explicit, poziția unică și orientarea art iculațiilor ale
robotului biped.
Se determină expresia matricei ce exprimă poziția și orientarea vârfului piciorului de
robot față de sistemul d e coordonate de bază utilizând relații recursive „înainte”:
(( ) ) ) (3.2)
*
( )
( )
] (3.3)
Unde:
( ) ( ) ( ) ( ) ( );
( )
( ) ( ) ( )
( )
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 23
Pe această bază vom presupune faptul că pentru soluția cinematica directă este suficient
să se determine T16, matrice de transformare omogenă în raport cu coordonatele articulațiilor.
Dacă se folosesc relațiile recursive de tip „ înapoi” atunci ecuațiile contribuie la
rezolvarea problemei cinematice inverse. Controlul mișcării în timp real este o cerință tot mai
importantă . Se determină expresia matricei care exprimă poziția și orientarea vârful ui
piciorului de robot față de sistemul de coordonate de bază utilizând relații
recursive „ înapoi” :
( ( ( ( ))) (3.4)
Tabelul 3 .3 Parametrii cinematici obținuți pe baza algoritmului Denavit -Hartenberg pentru pic iorul drep
Transformările
între două
articulații Rotație în axa
( ) Translație pe
axa ( ) Translație pe
axa ( ) Rotație în jurul
axei ( )
78 lz2 lx2
89 0 lx3 0
910 0 lx4 0
1011 0 lx5
1112 0 lx6 0
Când se aplică cinematica inversă nu trebuie să calculăm ambele picioare ci doar pentru
unul și rezultatele se pot aplica ș i celuilalt.
Se determină expresia matricei care exprimă poziția și orientarea vârfului piciorului de
robot față de siste mul de coordonate de bază utilizând relații recursive „ înainte” :
((( ) ) (3.5)
*
( ( )
( ( ))
⌉
(3.6)
Unde:
( ) ( ) ( ) ( );
( ) ( ) ( ) ( )
( ) ( )
( ) ( ) ( ) ( )
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 24
Pe această bază vom presupune faptul că pentru soluția cinematica directă este suficient
să se determine T16, matrice de transformare omogenă în raport cu coordonatele articulațiilor.
Dacă se folosesc relații recursive „ înapoi” , atunci ecuațiile contribuie la rezolvarea problemei
cinematice inverse .
Se determină expresia matricei care exprimă poziția și orientarea vârful pi ciorului stăng
de robot față de sistemul de coordonate de bază utilizând relații recursive
„înapoi” :
( ( ( ))) (3.7)
3.5 Problema cinematică inversă a piciorului robotului Problema
cinematică inversă permite calcu lul coordonatelor articulațiilor, care
aduc efectorul final în poziția și orientarea dorită, date fiind
coordonatele absolute (operaț ionale).
Atunci când problema cinematică inversă are soluție, ea se constituie în modelul
geometric invers, dacă nu putem g ăsi o soluție analitică problemei cinematice inverse (ceea ce
se întâmplă destul de frecvent) putem apela la metode numerice, al căror neajuns însă î l
constituie volumul mare de calcule. Există o varietate de metode de rezolvare a problemei
cinematice inve rse. Dintre acestea se remarcă pentru facilitățile pe care le oferă metoda Pieper
și Khalil. Cea mai frecvent utilizată metodă est e metoda Newton -Raphson, Metodă lui Khalil
și Pieper permite rezolvarea problemei cinematice inverse indifer ent de valorile
caracteristicilor geometrice ale robotului, dar pentru roboț ii cu picioare cu 18 grade de
libertate.
Problema cinematică directă reprezintă ansamblul relațiilor care permit definirea
poziției efectorului final (talpa robotului biped) în funcție de coordona tele articulare, practic
ea asigurând conversia coordonatelor interne (articulare) în coordonate externe (operaționale).
Conversia coordonatelor articulare în coordonate operaționale se face prin rezolvarea
problemei cinematice directe iar conversia coordo natelor operaționale în coordonate articulare
se face prin rezolvarea problemei cinematice inverse, permite calcularea coordonatelor
articulațiilor, care aduc efectorul final în poziția și orientarea dorită, d ate fiind coordonatele
absolute.
Poziția punctu lui de intersecție al celor trei axe este unic determinată doar de variabilele
qn, un alt avantaj al structurii decuplate este că permite disocierea și tratarea separată a
poziționă rii și a orientării.
Spunem că un robot are soluție la problema cinematică inversă dacă putem să -i
calculăm toate configurațiile care permit atingerea unei poziț ii date.
Dacă știm o parte din configurațiile articulațiilor și de la acestea vom defini poziția ș i
orientarea sistemului de coordonate, conform punctul central al tălpii piciorului , astfel am
rezolvat problem a cinematicii directe . Problema cinematică inversă înseamnă că, dacă ș tim
poziția și orientarea tălpii piciorului, atunci trebuie sa calculăm configurația articulației
Robotului.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 25
[
] (3.8)
[
] (3.9)
[
] (3.10)
Cunoaștem matricele de poziționare (comandă) și atunci putem să calculăm matrici le
și . Mai sus a fost rezolvată cinematica directă care ajută, împreună cu metoda
matricelor inverse, la rezolvarea cinematicii inverse. Dacă știm matric ile de transformare
în cinematica directă aplicăm proprietățile matricele ortonormate .
=[
, – , – ] (3.11)
(3.12)
s-a rezolvat în cinematica directă. Pentru mat ricea de poziționare se obține:
=[
] (3.12)
Se aplică și celuilalt picior:
(3.13)
s-a rezolvat în cinematica direct iar apoi p entru matricile de poziționare:
=[
] (3.13)
Aplicăm metoda matricelor inverse în relațiile recursive „ înainte ”.
(3.14)
(3.15)
(3.16)
= (3.17)
Aplicăm metoda matricelor inverse în relațiile recursive „ înainte ” și pentru celălalt
picior când vrem să calculăm simbolic ecuați a din cinematică inversă .
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 26
(3.18)
(3.19)
(3.20)
= (3.21)
Alegerea soluției unice depinde de geometria structurii mecanice a robotului și de
interacțiune a acestuia cu un mediu oarecare .
Aplicăm metodele și obținem următoarele soluții din cinematica inversă :
.
/ (3.22)
(
) (3.23)
(√
) (3.24)
(√
) (3.25)
Unde: K se ca lculează cu următoarea ecuație:
K=
Iar E,G,H se calcu lează prin următoarele ecuații:
E= ( ) ( )
( ) ( ( ) ( ) ( )) (3.26)
G= ( ) ( )
( ) ( ( ) ( ) ( )) (3.27)
H= ( )-lx6 ( ) ( ) (3.28)
=arctg.
√ /-arctg( ( )
( ) (3.29)
Unde P se calcul ează astfel:
P=
√ ( ) (3.30)
(3.31)
În care sunt parametrii în matri cea de
poziționare a robotului.
Aplicăm metodele și ecuațiile pentru celălalt membru și obținem soluții din cinematica
inversă după modelul prezentat anterior sus.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 27
3.6 Viteza și accelerația robotului biped
Neliniaritatea ecuațiilor g eometrice = f( ) care impune anumite restricții pentru ca
robotul biped să fie inversabil, respectiv lipsa controlului asupra vitezei și accelerației pe
traiectoria de mișcare reprezintă dezavantaje importante ale modelării geometrice .Ele sunt
eliminate prin aplicarea modelării cinematice în comanda roboților. În acest caz se menține
ipoteza conform căreia elementele robotului sunt rigide iar cuplele cinematice motoare sunt
perfecte sub aspecte mecanice, ipoteza statică este însă eliminată, astfel că vec torii coloană ai
coordonatelor operaționale și respectiv ai coordonatelor generalizate devin funcț ii de timp.
(t), ( ) (3.32)
Ecuațiile fundamentale pentru modelarea cinematică a unui robot biped cu un număr
degrade de libertate se pot scrie sub forma:
{ ( ⃗⃗⃗⃗ ̇̇)
̈ ( ⃗⃗⃗⃗ ̇ )⃗⃗⃗⃗ ̈ (3.33)
{ ̇ ( )̇
̈ ( ̈̇ (3.34)
Modelul cinematic stabilește relațiile de legătura între viteza și accelerații le cuplelor
motoare și viteza și accelerațiile generalizate ale tălpii robotului biped. Pentru determinarea
modelului cinematic al robotului se pornește de la sistemul de ecuaț ii implicite care defines
relațiile între coordonatele q1,q2,q3,q4,q5,q6,q7,q8,q9,q10 și coordonatele talpă dreaptă și
stângă.
Pentru soluționarea modelării cinematice directe se utilizează metoda matricelor de
poziț ieorientare. Pentru determinarea ecuațiilor vitezei și accelerației utilizăm ecuațiile
cinematice directe rezolvate .
⃗⃗⃗⃗⃗⃗ ̇=
(3.35)
⃗⃗⃗⃗⃗⃗ ̇=
+
(3.36)
⃗⃗⃗⃗⃗⃗ ̇=
+
+
(3.37)
⃗⃗⃗⃗⃗⃗ ̇=
+
+
+
(3.38)
⃗⃗⃗⃗⃗⃗ ̇=
+
+
+
+
(3.39)
Aplicând aceeași metodă și pentru celălalt picior, se obțin vitezele liniare și unghiulare
în fiecare articulație. Coordonatele carteziene și nu au variație î n
timp pentru ca rămân fixe în timpul funcționării față de baza .
Ecuațiile accelerațiilor liniare și unghiulare sunt prezentate mai jos pentru amândouă
picioarele:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 28
⃗⃗⃗⃗⃗⃗ ̈=
( ) (3.40)
⃗⃗⃗⃗⃗⃗ ̈=
( ) +
( ) +
(3.41)
⃗⃗⃗⃗⃗⃗ ̈=
( ) +
+
+
( ) +
+
+
( ) +
+
⃗⃗⃗⃗⃗⃗ ̈=
( ) +
+
+
+
( ) +
+
+
+
( ) +
+
+
+
( )
+
+
+
(3.42)
⃗⃗⃗⃗⃗⃗ ̈=
( ) +
+
+
+
+
( ) +
+
+
+
+
( ) +
+
+
+
+
( ) +
+
+
+
( ) +
+
+
+
(3.43)
Ecuațiile vitezelor și accelerațiilor se aplică și celuilalt picior.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 29
Capitolul 4. Centrul de masa.Dinamca robotului
4.1 Centrul de masă (CM)
Starea de stabilitate și postura corpului uman sunt necesare, pentru a fi
descrise/modelate matematic și mecanic prin intermediul unor parametri și al uno r obiecte
matematice specifice. Dintre aceștia, cel mai important element este centrul de masă (de
greutate) al corpului uman. Pentru studiul centrului de greutate se începe cu identificarea
corpului robotului biped, în funcț ie de zona de concentrare, prin segmente geometrice
rigide.Există, totodată, posibilitatea analizei centrului de greutate prin identificarea z onei
inferioare, de sub centru de greutate, cu un pendul inversat simplu sau dublu rotindu -se în
jurul articulaț iei gleznei respective în jurul gleznei și a genunchiului. Î n acest ultim caz se
utilizează calculele mecanice ș i matematice aferente unui pendu l simplu respectiv dublu
inversat.
Împărțirea maselor (Figura 4 .1) pe fiecare segment din corpul robotului b iped contribuie
la determinarea influențelor pe care le au în menț inerea echilibrului stabil, în calculul forțelor
și a momentelor inerț iale.
Mersul este unul dintre cele mai simple activităț i practicate ale unei ființ e bipede.
Destabiliză rile ce apar în timpul deplasărilor constituie o problemă de sănă tate importantă.
Una dintre cauzele ac estei probleme este lipsa unei metode „ corecte ” de cuantificar e a
stabilității locomoției.
Figura 4.1 Distribuția maselor în centrul de greutate pentru fiecare seg ment din corpul robotului biped
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 30
4.2 Descrierea robotului :
Dinamica roboților bipezi este strâns legată de structura sa mecanică
– 18 servomotoare
– 16 de tip LD -2015
– 2 de tip SG -90
– construc ție integral ă din aluminiu u șor
– 18 grade de libertate
Acest robot include
– un cap,
– un corp principal,
– două brațe,
– două picioare,
Specificații:
– Înălțime: 365 mm
– Greutate: 1861 g
– Articulații: 18 articulații –
Structura: structura din aliaj de aluminiu de 1 mm, greutate redusă și rezistență ridicată.
Servomotoarele structurii sunt controlate de un microcontroler LOBOT, capabil să
conducă simultan 24 servomotoare la viteze relativ ridicate.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 31
Capitolul 5. Controlul stabilităț ii unui robot biped .
Modelarea dinamică
5.1 Algoritmul de deplasare a traiectoriei dinamice.
Deplasarea unui robot biped poate fi determinată prin controlul traiectoriilor șoldului și
piciorului. Stabilitatea poate fi realizată prin aplicarea criter iilor ZMP (zero moment point)
(trad. ENG. Punctul Momentului Zero ).
Punctul momentului zero este un concept legat de dinamica și controlul locomoției cu
picioare, pentru roboți umanoizi .
Specifică punctul în privința căruia forța de reacție dinamică la co ntactul piciorului cu
solul nu produce nici un moment în direcția orizontală punctul în care totalul forțelor de
inerție orizontală și gravitațională este egal cu 0 .
Conceptul presupune că zona de contact este plană și are frecare suficient de mare
pentru a împiedica alunecarea picioarelor .
5.2 Modelarea dinamică a mersului biped
5.2.1 Abordări de bază
Un robot biped are o dinamică extrem de complexă caracterizată prin configurația
mecanică complexă. Figura 5.1 prezintă o configurație mecanică simplificată (doar
articulațiile de bază ), ale unui robot bipe d tipic .
Roboț ii bipezi au mai multe grade de libertate și este extrem de greu să utilizăm
dinamica lor directă pentru a realiza o locomoție bipedă stabilă. Ace ste metode au nevoie de
cunoașterea exactă a dinamicii robotului studiat inclusiv masa, poziția centrului de greutate
precum și momentele de inerție î n fiecare verigă a robotului . De obicei, echilibrul și controlul
locomoț iei de mers ale robotului se reali zează folosind diferite modele simplificate.
În momentul în care un robot biped, în ciclul său de mers, este în faza de suport unic,
dinamica lui poate fi reprezentată de un singur pendul inversat în situația în care piciorul de
sprijin este punctul în car e masa totală corporală este concentrată
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 32
Figura 5.1 Structura mecanică generalizată a unui robot biped
5.3 Controlul stabilității
Deoarece un biped este un sistem electromecanic, ar trebui să posede toate tipurile de
erori (flexia structurii, reacția dintre părțile în mișcare, etc.) specifice pentru acest tip de
mecanism.
Tot odată acesta va funcționa într -un mediu de co -existență cu oamenii, un contact
neașteptat cu omul sau mediul (forțele externe), poate cauza tulburări în orice moment. Mai
mult dec ât atâ t, unele imperfecț iuni ale modelului dinamic conduc de asemenea la perturbații
în miș carea bipedului. Într -o situație excesivă robotul biped poate cădea pentru că își pierde
stabilitatea.
Prin urmare, stabilizarea este un element foarte important pen tru a oferi mersul stabil al
robotului biped, stabilizatorul ar trebui se facă două operații de bază :
– când robotul biped merge, să corecteze traiectoria de mers a robotului (modele
demișcare), în vederea asigurării unei poziții sigure în fiecare moment al mișcării sale ;
– când robotul biped s -a oprit, stabiliza torul ar trebui să îi controleze poziția.
5.4 Criteriile de stabilitate
Una din condițiile de bază impuse unui robot biped este aceea că mișcarea lui trebuie să
fiestabilă, problema analizei în timpul mișcă rii, în condițiile pasului arbitrar este deosebit de
complicată. Pentru rezolvarea acestei probleme se studiază mai întâi deplasarea lentă,
cvasistatică când accelerațiile tuturor punctelor elementelor robotului biped sunt mult mai
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 33
micidecât accelerația gr avitațională și se neglijează. Condițiile de stabilitate ale unei astfel de
deplasări se pot considera că sunt similare cu cele ale stabilități robotului biped atunci când
acesta nu se mișcă. Studierea stabilității robotului biped poate fi efectuată doar p rin luarea în
considerație a unor informații despre caracteristicile constructive ale acestuia .
Stabilitatea roboților bipezi se poate clasifica în stabilitatea statică și stabilitatea
dinamică. Stabilitatea statică descrie un corp care se află în repaus, în cazul în care toate
forțele sunt egale, stabile și neschimbătoare. Stabilitatea dinamică caracterizează un corp care
se mișcă , dar se mișcă într -un mod perfect previzibil .
Un sistem care este într -o stare de echilibru stabil va reveni la pozi ția inițială după o
perturbație, echilibrul instabil, pe de altă parte, apare în cazul în care sistemul este perturbat și
nu mai revine la starea inițială. Fenomenul de susținere a stabilităț ii este dificil de descris,
deoarece nu se "vede", "aude " sau "simte" , dar dă răspuns la diverse mișcări ale membrelor
corpului roboților bipezi .
Oricare corp, inclusiv corpul uman, își menține poziția de echilibru stabil dacă suma
vectorială a tuturor forțelor și momentelor, care acționează asupra acestuia, este egală cu z ero,
afirmația se face în felul următor în mecanica clasică:
{∑
∑ (5.1)
Unde: F este forța vectorială [N] și M sunt momentele vectoriale [N m].
O forță ce rămâne neechilibrată determină o accelerație liniară, iar orice moment
neechilibrat dete rmină o accelerație unghiulară.
Studierea stabilității statice are la bază noțiunea de configurație întărită a robotului
biped, care definește corpul solid, obținut prin legarea rigidă a picioarelor robotului biped la
un moment dat, într -o anumită poziție fața cor p, în fiecare moment, acest sistem se sprijină pe
suprafața terenului .
Robotul biped își menține stabilitatea statica dacă la momentul de timp t, configurația
întărită este în stare de echilibru static stabil sub acțiunea forțelor de greutate.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 34
5.5 Centrul de greutate
Ecuațiile simbolice ale cinematicii inverse, care au fost rezolvate în C apitolul 3 , sunt
utilizate în programarea robotului. Pentru analiza virtuală a stabilităț ii robotului biped s -a
realiz at un program în mediul MATLAB.
Pentru a determina centr ul de greutate G al unui mecanism plan este suficient să
determinăm vectorul de poziție g r al acestuia cu relația :
g = ∑
∑
(5.2)
+ ⃗ (5.3)
= + ⃗ ; (o=0 ) (5.4)
Unde: este masa elementului și ⃗⃗⃗ este vectorul de poziție al centrului de greutate al
elementului.
Cunoscând cinematica directă și inversă a robotului putem calcula coordonatele
articulațiilor. După calcularea coordonatelor articulațiilor se verifică dacă cen trul de greutate
se încadrează în poligonul de susținere. În cazul în care acest lucru nu este realizat este
necesară o altă compensare pentru înclinarea robotului spre dreapta sau stânga până când
proiecția centrului de greutate se încadrează în poligon.
Problema se poate rezolva ușor cu un algoritm bazat pe cinematica directă și inversă,
care să verifice și să asigure compensarea necesară pentru ca proiecția centrului de greutate al
robotului să se încadreze în interiorul poligonului de stabilitate .
5.6 Punctul Momentului Zero (PMZ).Considera ții teoretice
Acest concept a fost introdus în ianuarie 1968 de către Miomir Vukobratović la al
treilea Congres al Mecanicii Teoretice și Apl icate din Moscova .
Punctul momentului zero este un concept foarte important în planificarea mișcării
pentru roboți bipezi. Întrucât au doar două puncte de contact cu podeaua și t rebuie să meargă,
alerge, sau să sară (în contextul mișcării), mișcarea lor trebuie planificată cu privire la
stabilitat ea dinamică a întregului lor corp. Aceasta nu este o sarcină ușoară, mai ales dacă
corpul superior al robotului (torsul) are o masă și o inerție mai mare decât picioarele care ar
trebui să susțină și să miște robotul. Acest lucru poate fi comparat cu probl ema ech ilibrării
unui pendul inversat.
Traiectoria de mers a unui robot este planificată utilizând ecuația unghiulară de
impulsuri pentru a se asigura că traiectoriile articulate generate garantează stabilitatea
dinamică posturală a robotului, care, de obi cei, este cuantificată de distanța punctul
momentului zero în limitele unei regiuni de stabilitate predefinite. Poziția punctului
momentului zero este afectată de masa și inerția menționată a torsului robotului, deoarece
mișcarea acestuia necesită în gener al cupluri de gleznă mari pentru a menține stabil itatea
dinamică satisfăcătoare.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 35
O abordare pentru a rezolva această problemă constă în utilizarea unor mici mișcări de
trunchi pentru stabilizarea posturii robotului. Cu toate acestea, unele noi metode de pl anificare
sunt dezvoltate pentru a defini traiectoriile legăturilor picioarelor astfel încât trunchiul
robotului să fie condus în mod natural pentru a reduce cuplul gleznei necesar pentru a
compensa mișcarea acestuia. Dacă planificarea traiectoriei pentru legăturile piciorului este
reușită, atunci punctul momentului zero nu se va muta din regiunea de stabilitate
predefinită, iar mișcarea robotului va deveni mai fină, imită o traiectorie naturală.
5.7 Calculul P unctului Momentului Zero
Forța rezultantă a forțe lor de inerție și gravitație care acționeaza asupra unui robot cu
șoc este exprimată prin formula:
=mg- (5.5)
Unde: m-este masa totală a robotului;
g-accelerația gravitațională;
G-centrul de masă;
-accelerația centrului de masă;
Momentul în orice punct X poate fi astfel definit:
= ⃗⃗⃗⃗⃗ x mg- ⃗⃗⃗⃗⃗ x – ̇ (5.6)
Unde ̇ este rata de impul s unghiular la centrul de masă.
Ecuațiile Newton -Euler ale mișcării globale a robotului biped pot fi scrise ca:
+mg= (5.7)
+ ⃗⃗⃗⃗⃗ x mg = ̇+ ⃗⃗⃗⃗⃗ x (5.8)
Unde este rezultatul forțelor de contact X și
este momentul legat de forțele de contact în orice punct X.
Ecuațiile Newton -Euler pot fi rescrise ca:
( ) (5.9)
+ ( ⃗⃗⃗⃗⃗ x mg – ⃗⃗⃗⃗⃗ x – ̇) = 0 (5.10)
Astfel încât este mai ușor să vedem că avem:
= 0 (5.11)
= 0 (5.12)
Aceste ecuații arată că robotul este ECHILIBRAT dinamic dacă forțele de contact și
forțele de inerție d e gravitație sunt strict opuse.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 36
Dacă o axă este definit, în cazul în care momentul este paralel cu vectorul normal n
de la suprafață în jurul fiecărui punct al axei, atunci Punctul Momentului Zero la această
axă, deoarece ea este prin definiție direcționată de -a lungul vectorului n. PMZ va fi apoi
intersecția dintre axa și suprafața solului astfel încât:
= ⃗⃗⃗⃗⃗ x mg – ⃗⃗⃗⃗⃗ x – ̇ (5.13)
Unde:
x n = 0 (5.14)
⃗⃗⃗⃗⃗ =
(5.15)
Unde : P este un punct pe planul de contact;proiecția normală a centrului de masă.
5.8 Modelarea matematică a mersului robotului umanoid
biped. Interpolarea polinomilor
Procesul de construire a unei funcții f (x) verifică că în valori predeterminate ale
variabilei independente x0, x1, …, xn poate lua valori precum y0 = f (x0), y1 = f (x1), …, yn
= f (xn) este cunoscut ca interpolare și poate fi definită ca o procedură clasică pentru
abordarea funcțională.
Foarte important este stabilirea funcției de tip astfel încât să satisfacă condiția de
interpolare yi = f (xi) cu i = 0, …, n . Apoi exista un numar infinit de func ții care satisfac
condi țiile de date pentru a fi interpolate.
O funcție generică polinomică poate fi generată de coeficienții n + 1 în ceea ce privește
o bază fixă.
Condițiile n + 1 produc o ecuație a sistemului a cărei rezoluție generează funcția
căutată.
Considerând ca bază :
ℑ = {1, x, x2 …, xn } (5.16)
Un p olinom poate fi definit astfel:
(x)= + x+ +….+ (5.17)
Considerând o susținere de interpolare a x0 <x1 <… … <xn și funcția lor
corespunzătoare valorilor y0, y1 …, yn sistemul de ecuații pentru genera rea condițiilor de
interpolare:
[
]
[
] [
] (5.18)
Matricea acestui sistem dobândește o structură specială numită Vandermonde Matrix
a cărei determinantă poate fi calculată cu ușurință prin:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 37
det(B) = ∏(xi − xj) (5.19)
i> j
Deoarece nodurile de interpolare x0 <x1 < …. <xn sunt diferite, este evident că det (B) ≠
0 independent de suportul de interpolare. Astfel, problema interpolării are întotdeauna o
soluție unică.
Exemplu:
Luați în considerare punctele de interpolare (0,2), (1,1), (2,0), (3,5).
Suportul nodurilor este S = {1,2,3} care corespunde n = 3, atunci polinomul căutat
trebuie să fie de gradul trei sau mai mic.
(x)= + x+ + (5.20)
Sistemul de ecuații reprezentat ca:
*
+[
] [
] (5.21)
Rezolvând sistemul de ecuații, obținem: = 2, = 1, = -3 și = 1, iar polinomul
este reprezentat ca:
(x)= + – + (5.22)
Figura 5.2 Interpolarea polinomilor
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 38
5.9 Dezvoltarea algoritmului.
Algori tmul de control are trei părți:
1. Pentru fiecare etapă, viteza dorită (vxhe,vzhe) și lungimea treptei Ls sunt
specificate anterior.
2. Unghiul dorit este specificat anterior
3. Traiectoriile șoldului și piciorului sunt generate de diferite perioade de mers, apoi se
alege traiectoria care garantează criteriile PMZ .
Figura 5.3 Fazele mersului: a)cu un sin gur support b)cu support dublu
Un ciclu de mers pe jos poate fi împărțit în faza unică de sprijin și faza de dublu su port.
Așa cum se arată în Figura 5.3 .
În faza unică de susținere , un picior susține greutatea robotului în timp ce celălalt
picior se deplasează în aer de la înapoi spre înainte, în același timp șoldul se mișcă de -a lungul
unei traiect orii Th așa cum este arătat în F igura 5.4.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 39
Figura 5.4 Traiectoria șoldului (Hip Trajectory) și traiectoria piciorului (Foot Trajectory
Faza de sprijin simplu începe când piciorul în mișcare părăsește podeaua și se ridică în
aer și se termină când se întoarce la podea.
Faza de susținere dublă începe când piciorul în mișcare (la o singură fază de susținere)
atinge podeaua și se termină atunci când piciorul de la podea (la o singură fază d e susținere)
părăsește podeaua.
Pentru a realiza mersul dinamic, schimbarea dintre faza simplă a suportului și faza dublă
a suportului ar trebui să fie netedă .
De obicei, la început din faza dublă a suportului, impactul piciorulu i împotriva podelei
atunci când se întoarce din aer este foarte puternic și, evident, afectează balanța de mers pe
jos. O soluție pentru această problemă este utilizarea controlului forței feedback -ului.
PMZ este un punct pe teren unde suma tuturor impulsurilor este zero. Folosind acest
principiu, PMZ poate fi calculat după cum urmează:
∑ ( ̈ ) ∑ ̈ ∑ ̈
∑ ( ̈ ) (5.23)
∑ ( ̈ ) ∑ ̈ ∑ ̈
∑ ( ̈ ) (5.24)
Unde: (xPMZ, yPMZ,0) -sunt coordonatele PMZ -ului
(xi,yi,z i) -este centrul de masă al legăturii i în sistemul de coordonate,
m -este masa legăturii i,
g -este accelerația gravitațională ,
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 40
Iix și Iiy -sunt componentele momentului de inerție ,
θiy si θix -sunt viteza unghiulară în jurul axelor x și y (luat ca un punct din c entrul de
masă al legăturii I).
Distribuția maselo r robotului este prezentată în F igura 5.5:
Figura 5.5 Distribuțiile maselor robotului.
În planul sagital, PMZ -ul este calculat direct împărțind cuplul gleznei prin reacția forței
la sol
∑ ( ) (5.25)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 41
Figura 5.6 Zona stabilă a PMZ -ului în axa X
Pentru a menține echilibrul în mersul dinamic, punctul PMZ trebuie să fie în zona
convexă a piciorului, în contact cu podeaua, așa cum se arată în figură. PMZ poate fi definit
ca:
XPMZ { S│S R, S (−xa , xb )} (5.26)
semnul negativ al lui înseamnă că punctul P este la origine.
Robotul are un punct de masă în șold și genunchiul de sprijin este în poziție constantă,
pentru aceste condiții modelul pendul ului inversat poate fi utilizat pentru a modela mișcările
dinamice ale structurii robotului. Figura 5.7 urmatoare prezintă modelul robotului pentru a
determina cuplul gleznei .
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 42
Figura 5.7 Modelul robotului biped obținut din modelul pendulului inversat .
L-este longitudinea piciorului
τxa(θ)si τxb(θ) sunt momentele maxime și minime posibile ale gleznei în planul sagital.
Apoi, această relație poate fi descrisă ca :
( )=m(g+. ( )
( )/ ( )
( )) (5.27)
Unde: v este viteza șoldului
este accelerația centripetală.
Accelerația centripetală este mai mică decât alte componente, astfel încât poate fi
eliminată din ecuația de mai sus , apoi cuplul gleznei poate fi redefinit ca:
( ( ))
( )
(5.28)
( ( ))
( )
(5.29)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 43
5.10 Forța centripetă
Forța centrifugă este egală și opusă ca sens cu forța centripetă, forța centrifugă fiind
rezultanta celei de a treia legi a lui Newton : orice forță (forța centripetă în cazul nostru) are o
reacție egală și opusă ca sens (în cazul nostru forța centrifugă) .
Figura 5.8 Forța centrifugă și forța centripedă
În figura 66
– ω reprezintă viteza unghiulară (de valoare constantă, măsurându -se în radiani pe
secundă ) cu care corpul de masă M se rotește în jurul punctu lui O.
– v este vectorul viteză instantanee a corpului de masă M, vectorul v fiind perpendicular
în punctul P pe dreapta OP.
5.11 Formule pentru for ța centrifug ă și forța centripet ă
Formulele dintre viteza unghiulară – ω și viteza instantanee – v sunt următoarele:
v=ωR (5.30)
ω=v/R (5.31)
Accelerația centripeta ce acționează asupra corpului de masă M, de -a lungul dreptei PO
având sensul de la punctu l P spre punctul O are valoarea:
=ω2R (5.32)
sau
=
(5.33)
Forța centripeta va avea valoarea (forța este egală cu masa ori accelerația) :
= M R (5.34)
=
(5.35)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 44
Forta centrifuga ce acționează asupra corpului de masă M în punctul P este egală cu:
= M R (5.36)
=
(5.37)
5.12 Traiectoria șoldului pentru faza unică de sprijin
După cum sa arătat în Figura 5.4, traiectoria șoldului poate fi generată de algoritmi
polinomali cubi, dacă starea inițială și cea finală sunt cunoscute din fază monofazică .
Starea inițială în F igura 5.4, definiți [xhs,zhs],si [xhe,zhe] pentru s tarea finală. Viteza
inițială [vxhs,vzhs] (produs atunci când robotul părăsește poziția inițială) este de asemenea
specificat în modelul de traiectorie .
Același caz este pentru viteza finală [vxhe,vzhe] (când robotul ajunge la poziția sa
finală)Pozițiile i nițiale și finale de stat pentru traiectoria cubică pentru z (directia zh(t)) pot fi
exprimate ca:
( ) {
} (5.38)
Unde: T este perioada pentru etapa robotului și Ts este perioada în faza unică de sprijin
( ) {
} (5.39)
Polinomul cubic poate fi generalizat prin următoarea expresie:
zh (t) = a0 + a1t + a2t 2 + a3t 3 (5.40)
Obtinem:
zh(t)= (t-kT)+ ( )
( )
( ) ( )
( ) kT<t≤kT+ (5.41)
xh(t) este impartit in 2 parti:
– din x h(KT) in x h(kT+T 1) si
– din x h(kT+T 1) in x h(kT+T p)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 45
Configuratia pentru xh(t) este:
{ ( )
( )
( )
̇ ( )
̇ ( ) ̇( )
̇ ( )
̈ ( ) }
(5.42)
Unde: ao trebuie specificat anterior pentru a satisface starea inițială a accelerației. Polinomul
cubic de traiectorie poate fi obținut după cum urmează:
( )
{ ( )
( )
(
( )
( )
( ( ) ( ))( )
( )
( ( ) ( )( ))( )
( ) }
(5.43)
5.13 Traiectoria pivotului și piciorului în faza unică de sprijin
Interpolarea cubică este utilizată pentru a genera traiectoria piciorului în faza unică de
sprijin. Poziția inițială și finală a piciorului care reprezintă stările și vitezele satisfăcute sunt:
( )
{ ( )
( )
̇( )
̇( ) }
(5.44)
( )
{ ( )
( )
̇( )
̇( ) }
(5.45)
Considerând că cunoaștem stările inițiale și finale în direcțiile x și z, o traiector ie netedă
poate fi generată de interpolarea polinomică cubică. Definiți în acest caz după cum urmează:
Pentru :
( ) ( )
+3( )( )
( )( )
(5.46)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 46
Pentru :
( ), ( )( )
( )( )
( )( )
( ) ( )( )
( ) –
(5.47)
Poziția șoldului și a genunchiului pentru a produce mișcarea piciorului poate fi calculată
utilizând cinematica inversă a structurii robotului.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 47
5.14 Determinarea parametrilor algoritmului
Determinarea parametrilor Tp, , , și nu este triv ial, deoarece modificarea
uneia dintre ele presupune o schimbare a traiectoriei și a condițiilor de net ezire în viteza și
accelerații.
Una dintre principalele caracteristici ale acestei abordări este aceea că viteza la sfârșitul
fazei unice de sprijin este zero sau aproape de zero, prin urmare este garantat un contact neted
cu suprafața podelei.
Pentru a determina ace ști parametri a fost programată o interfață Matlab (Figura 5.8) ,
permite modificarea automată a tuturor parametrilor importanți (reprezentați la ecuațiile
37,39,42,43, ). Astfel putem varia cu ușurință parametrii și să verificăm coerența traiectoriilor.
Figura 5.8 Interfața programului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 48
5.15 Poziția de control a legăturilor
Cinematica inversă din structura robotului este utilizată pentru a găsi referința
unghiulară (pozițiile motorului). Traiectoriile pentru șold și picior în faza unică de sprijin sunt
calculate folosind ecuațiile 37,39,42,43 .
Această problemă de control poat e fi împărțită în două părți, prima fiind reprezentată de
piciorul care are contact cu podeaua, iar a doua parte este reprezentată de piciorul care se
ridică în aer care se mișcă din spate spre înainte.
În primul caz motorul șoldului nu -și schimbă poziția, în același timp, mișcările necesare
pentru a efectua traiectoria piciorului sunt efectuate numai de motoarele genunchiului și
gleznei, așa cum se arată în F igura 5.9.
Figura 5.9 Mișcarea motoarelor preformată de picior în contact cu podeaua.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 49
În cel d e-al doilea caz, motorul gleznei nu -și schimbă poziția, în același timp, mișcările
necesare pentru a efectua traiectoria piciorului sunt efectuate numai de motoarele
genunchiului și șoldului așa cum arată Figura 5.10.
Figura 5.10 Mișcarea motoarelor efectuată de piciorul care se ridică în aer
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 50
5.16 Rezultatele implementării.
Tabelul 5.1 Rezultatele implementării
Parameteru Valoare
-5
0
20
20
-2.5
0.1
0.18
0.01
-0.03
Ts 2
T1 1.14
Tp 4
a0 -0.02
4.56
3
Tm 1
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 51
Următoarele poziții de legături sunt obținute prin rezolvarea cinematicului invers al
robotului :
a) Pentru piciorul în contact cu podeaua
Figura 5.11 Poziția moto rului pentru gleznă și genunchi
Figura 5.12 Pozițiile motorului pentru gleznă și genunchi
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 52
Figura 5.13 Viteza pentru motoarele pentru glezne și genunchi.
b) Pentru ca piciorul să se ridice din spate spre înainte:
Figura 5.14 Poziția motorului pentru șold și genunchi.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 53
Figura 5.15 Viteza pentru motoarele de șold și genunchi
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 54
Figura 5.16 Pozițiile motorului pentru șold și genunchi
Din graficele anterioare este posibil să se observe tranziția lină între faza de suport unică
și faza de susținere dublă. (deoarece vitezele atinse la sfârșitul acestui ciclu sunt zero sau
foarte aproape de zero). Această caracteristică a algoritmului permite robotului să obțină
stabilitate chiar și în cazul unui impact violent ca și cele produse de viteza legăturii în timpul
fazei de suport unice .
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 55
Capitolul 6. Protocolul de comunicare cu controllerul de
servomecanisme
6.1 Fundamentare teoretică
Pentru a putea realiza comunicația între Raspberry Pi și controlerul de servomecanisme,
trebuie să îl legăm pe cel din urmă la pinii UART de la placa Raspberry Pi și să setăm un
Baud Rate de 9600. Succesiunea comenzilor pe care trebuie să le trimitem controllerului de
servomecanisme va fi ca în tabelul de mai jos:
Tabelu l 6.1 Format date de trimitere
Header Mărimea datelor Comanda Parametru
0x55 0x55 Lenght Cmd Prm 1… Prm N
Header: Trimitem 2 numere în format hexazecimal 0x55 pentru a indica că urmează să
trimitem pachete de date.
Mărimea datelor: este egală cu parametrul numărului N plus o comandă, plus lungimea
bitului ocupat de lungimea datelor transmise. Asta înseamnă că lungimea datelor est e egală cu
parametrul N plus 2.
Lenght = N+comanda+lungimea bitului
Lungimea bitului = N+2
Comanda: Diverse instrucțiuni de control.
Parametrul : Pentru a face robotul să se miște trebuie să trimitem diverse informații
auxiliare de control ale comenzii principale.
Putem transmite date activ către controlerul de servomecanisme. Pinul TX prin care
putem transmite date trebuie conectat pe pinul RX al controlerului. Pentru a funcționa va
trebui să avem pinii de GND conectați. Dacă transm item date corect la controlerul de
servomecanisme led -ul 2 de pe placă va clipi de 2 ori, indicând că datele au fost primite. Dacă
transmitem date greșite, led -ul 2 nu va avea nicio reacție, va lumina la fel, apoi vom auzi un
sunet ascuțit de 2 ori avertiz ându -ne că ceva este în neregul ă.
6.1.1 Numele comenzii: CMD_SERVO_MOVE :
Valoarea comenzii: 3
Descrierea comenzii: Controlăm mișcările de rotașie ale oricărui servomecanism:
Lungimea datelor = numărul servomecanismului*3+5
Parametrul 1: Numărul servomecanismu lui care va fi controlat
Parametrul 2: Valoarea inferioară de 8 biți de timp
Parametrul 3: Valoarea superioară de 8 biți de timp
Parametul 4: Numărul servomecanismului
Parametrul 5: Valoarea inferioară codată pe 8 biți a unghiului
Parametrul 6: Valoarea s uperioară codată pe 8 biți a unghiului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 56
Parametrul N: Formatul este același ca și la Parametrii 4, 5 și 6 pentru controlul
unghiului poziției diferitelor servomotoare.
De exemplu:
(1) Controlați servomotorul numărul 1 pentru a ajunge la poziția 2000 în timp de 1000ms.
Tabelul 6 .2 Form at date mișcare servomecanism
Header Lungime Comandă Parametri
0x55 0x55 0x08 0x03 0x01 0xE8 0x03 0x01 0xD0 0x07
(2) Controlați servomecanismul numărul 2 pentru a ajunge la poziția 2000 și
servomecanismul numărul 9 pentru a ajunge la poziția 2300 în timp de 800 ms.
Tabelul 6 .3 Format date mișcare servomecanism
Header Lungime Comandă Parametri
0x55 0x55 0x0B 0x03 0x02 0x20 0x03 0x02 0xB0 0x04 0x09 0xFC 0X08
void LobotServoController::moveServo(uint8_t servoID, uint16_t
Position, uint16_t Time)
{
uint8_t buf[11];
if (servoID > 31 || !(Time > 0)) {
return;
}
buf[0] = FRAME_HEADER;
buf[1] = FRAME_HEADER;
buf[2] = 8;
buf[3] = CMD_SERVO_MOVE;
buf[4] = 1;
buf[5] = GET_LOW_BYTE(Time);
buf[6] = GET_HIGH_BYTE(Time);
buf[7] = servoID;
buf[8] = GET_LOW_BYTE(Position);
buf[9] = GET_HIGH_BYTE(Position);
SerialX->write(buf, 10);
}
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 57
6.1.2 Numele comenzii: CMD_ACTION_GROUP_RUN :
Valoarea comenzii: 6
Mărimea datelor: 5
Descriere: Controlul acțiunilor de mișcare deja încărcate în controler. Putem controla
numărul de iterații ale acțiuni de apelate, dacă vrem ca acțiunea să ruleze fără a se opri trebuie
să setăm valoarea 0.
Parametrul 1: Numărul acțiunii de mișcare
Parametrul 2: Valoarea inferioară pe 8 biți a acțiunii care va rula
Parametrul 3: Valoarea superioară pe 8 biți a acțiunii care va rula
Exemplu:
(1) Controlați acțiunea numărul 8 pentru a rula o singură dată.
Tabelul 6. 4 Format date acțiuni
Header Lungime Comandă Parametru
0x55 0x55 0x05 0x06 0x08 0x01 0x00
(2) Controlați actiunea numărul 2 pentru a rula un număr nelimitat.
Tabelul 6. 5 Format date acțiuni
Header Lungime Comandă Parametru
0x55 0x55 0x05 0x06 0x02 0x00 0x00
void LobotServoController::runActionGroup(uint8_t numOfAction,
uint16_t Times)
{
uint8_t buf[7];
buf[0] = FRAME_HEADER;
buf[1] = FRAME_HEADER;
buf[2] = 5;
buf[3] = CMD_ACTION_GROUP_RUN;
buf[4] = numOfAction;
buf[5] = GET_LOW_BYTE(Times);
buf[6] = GET_HIGH_BYTE(Times);
SerialX->write(buf, 7);
}
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 58
6.1.3 Numele comenzii: CMD_ACTION_STOP :
Valoarea comenzii: 7
Lungimea comenzii: 2
Descriere: Oprește orice acțiune din a rula.
Nu trebuie să dăm niciun parametru.
Exemplu:
(1) Opriți din a rula o acțiune.
Tabelul 6. 6 Format date orire acțiuni
Header Lungime Comandă Parametru
0x55 0x55 0x02 0x07 Fara parametru
void LobotServoController::stopActionGroup(void)
{
uint8_t buf[4];
buf[0] = FRAME_HEADER;
buf[1] = FRAME_HEADER;
buf[2] = 2;
buf[3] = CMD_ACTION_GROUP_STOP;
SerialX->write(buf, 4);
}
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 59
6.1.4 Numele comenzii: CMD_ACTION_SPEED :
Valoarea comenzii: 11
Lungimea comenzii: 5
Descriere: Ca să modificăm viteza de rulare a unei acțiuni o putem exprima în procente,
de exemplu, dacă dorim să rulăm acțiunea numărul 1 cu viteza dublă decât cea originală vom
scrie valoarea 200, ceea ce înseam nă 200%. Dacă denumirea acțiunii în format hexazecimal
este 0xFF, vom modifica viteza tuturor acțiunilor.
Nota1: Noua viteză nu va fi salvată.
Nota2: Servomecanismele sunt limitate mecanic la anumite viteze, dacă mărim de
câteva ori la un moment dat viteza nu va mai crește.
Parametrul 1: Numărul acțiunii căreia vrem să îi ajustăm viteza.
Parametrul 2: Valoarea inferioară pe 8 biți a vitezei.
Parametrul 3: Valoarea superioară pe 8 biți a vitezei.
Exemplu:
(1) Controlați acțiunea numărul 8 pentru a rula la 50% d in viteza inițială.
Tabelul 6. 6 Format date setare viteză acțiuni
Header Lungime Comandă Parametru
0x55 0x55 0x05 0x0B 0x08 0x32 0x00
(2) Mariți viteza de rulare a tuturor acțiunilor încărcate în controler de 3 ori decât viteza
originală.
Tabelul 6. 7 Format date setare viteză acțiuni
Header Lungime Comandă Parametru
0x55 0x55 0x05 0x0B 0xFF 0x2C 0x01
void LobotServoController::setActionGroupSpeed(uint8_t numOfAction,
uint16_t Speed)
{
uint8_t buf[7];
buf[0] = FRAME_HEADER;
buf[1] = FRAME_HEADER;
buf[2] = 5;
buf[3] = CMD_ACTION_GROUP_SPEED;
buf[4] = numOfAction;
buf[5] = GET_LOW_BYTE(Speed);
buf[6] = GET_HIGH_BYTE(Speed);
SerialX->write(buf, 7);
}
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 60
6.1.5 Numele co menzii: CMD_GET_BATTERY_COLTAGE:
Valoarea comenzii: 11
Lungimea comenzii: 2
Descriere: Obținem voltajul bateriei în milivolți, controlerul va returna imediat voltajul
după ce comanda a fost trimisă. Datele returnate vor fi într -un pachet cu 2 parametri.
Aici nu avem niciun parametru.
Date transmis e:
Tabelul 6. 8 Format date citire voltaj baterie
Header Lungime Comandă Parametru
0x55 0x55 0x02 0x0F Fără parametru
Date primite:
Tabelul 6. 9 Format date primate
Header Lungime Comandă Parametru
0x55 0x55 0x04 0x0F 0x4C 0x1D
void LobotServoController::getBatteryVoltage()
{
uint8_t buf[4];
buf[0] = FRAME_HEADER;
buf[1] = FRAME_HEADER;
buf[2] = 2;
buf[3] = CMD_GET_BATTERY_VOLTAGE;
SerialX->write(buf, 4);
}
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 61
6.2 Date transmise de către controlerul de servomecanisme:
În timp ce servomecanismele se mișcă drept urmare a finalizării unei acțiuni, deoarece
avem mai mult decât o singură metodă de a trimite comenzi controlerului, acesta va transmite
date către utilizator prin intermediul portului serial.
6.2.1 Numele comenzii: CMD_ACTION_GROUP_RUN
Valoarea comenzii: 6
Lungimea datelor: 5
Descriere: Când o acțiune a controlerului începe să ruleze, acesta imediat va transmite
date prin care va transmite parametrii acțiunii. De fapt, formatul datelor returnate es te la fel
precum datele trimise de către utilizator.
Parametrul 1: Numărul acțiunii care rulează.
Parametrul 2: Valoarea inferioară pe 8 biți a numărului de iterații a acțiunii.
Parametrul 3: Valoarea superioară pe 8 biți a numărului de iterații a acțiunii
Exemplu:
Când acțiunea numărul 8 rulează o singură dată, datele t ransmise către utilizator sunt:
Tabelul 6. 10 Format date primate
Header Lungime Comandă Parametru
0x55 0x55 0x05 0x06 0x08 0x01 0x00
6.2.2 Numele comenzii: CMD_ACTION_GROUP_STOP
Valoarea comenzii: 7
Lungimea datelor: 2
Descriere: Această comandă va fi returnată atunci când în timpul rulării unui grup de
acțiuni se va trimite comanda de oprire.
Nu avem nici un parametru.
Tabelul 6. 11 Format date primite
Header Lungime Comandă Parametru
0x55 0x55 0x02 0x07 Fara parametru
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 62
6.2.3 Numele comenzii: CMD_ACTION_GROUP_COMPLETE
Valoarea comenzii: 8
Lungimea datelor: 5
Descriere: Când un grup de acțiuni ajunge la final, controlerul va returna o comandă
descrisă mai jos.
Parametrul 1: Numărul acțiunii rulate.
Parametrul 2: Valoarea inferioară pe 8 biți a numărului de iterații a acțiunii.
Parametrul 3: Valoarea superioară pe 8 biți a numărului de iterații a acțiunii.
Exemplu:
Când acțiunea numărul 8 a terminat prima iterație, datele returnate vor fi următoarele:
Tabelul 6.3 For mat date mișcare servomechanism
Header Lungime Comandă Parametru
0x55 0x55 0x05 0x08 0x08 0x01 0x00
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 63
void LobotServoController::receiveHandle()
{
uint8_t buf[16];
static uint8_t len = 0;
static uint8_t getHeader = 0;
if (!SerialX ->available())
return;
do {
switch (getHeader) {
case 0:
if (SerialX ->read() == FRAME_HEADER)
getHeader = 1;
break;
case 1:
if (SerialX ->read() == FRAME_HEADER)
getHeader = 2;
else
getHeader = 0;
break;
case 2:
len = SerialX ->read();
getHeader = 3;
break;
case 3:
if (SerialX ->readBytes(buf, len – 1) > 0)
getHeader = 4;
else{
len = 0;
getHeader = 0;
break;
}
case 4:
switch (buf[0]) {
case BATTERY_VOLTAGE:
batteryVoltage = BYTE_TO_HW(buf[2], buf[1]);
break;
case ACTION_GROUP_RUNNING:
numOfActinGroupRunning = buf[1];
actionGroupRunTimes = BYTE_TO_HW(buf[3],
buf[2]);
isRunning = true;
break;
case ACTION_GROUP_STOPPED:
case ACTION_GROUP_COMPLETE:
isRunning = false;
numOfActinGroupRunning = 0xFF;
actionGroupRunTimes = 0;
break;
default:
break;
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 64
}
default:
len = 0;
getHeader = 0;
break;
}
} while (SerialX ->available());
}
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 65
Capitolul 7. Procesare video
7.1 Introducere
Procesarea video se referă la procesarea datelor de la orice device care folosește
spectrum electromagnetic pentru a produce o imagine. La roboții umanoizi se folosește pentru
recunoașterea obiectelor și pentru a le determina pr oprietățile.(2,3)
Senzorii de procesare video lucrează asemănător ochiului uman, astfel celule cu con și
bastonaș sunt imitate de o tehnologie ce are în construcția ei circuite integrate, numită CMOS
(complementary metal -oxide -semiconductor).
Un senzor de imagine CMOS are un amplificator pentru fiecare pixel comparativ cu
câțiva amplificatori ai unui CCD (charged -coupled devices). Acest lucru are ca rezultat o zonă
mai mică pentru captarea fotonilor decât un CCD, dar această problemă a fost depășită prin
utilizarea de microlentile în fața fiecărei fotodiode, care focalizează lumina în fotodioda care
altfel ar fi lovit amplificatorul și nu ar fi detectată. Tehnologia modernă CMOS utilizează
structuri cu dimensiuni foarte fine, iar acestea pot fi realizate pr in separarea legăturilor
polimer -siliciu printr -un decalaj foarte mic. (5)
Problema clasica a procesării video este determinarea sau nu a datelor imaginilor care
conțin un obiect specific, caracteristică sau activitate.
Recunoașterea este reprezentată de clasificarea obiectelor, identificare și detectare.
Clasificarea obiectelor reprezintă recunoasterea a unul sau mai multe obiecte învățate
sau clasificate, care pot fi recunoscute, de obicei împreună cu poziția lor 2D în imagine sau a
poziției 3D.
Identificarea obiectelor reprezintă recunoașterea unei particularități a obiectului precum
fețe, culori și forme, calculând unghiuri, dimensiuni, analizând culorile obiectelor/persoanelor
și căutând obiectele, precum cercurile, la o anumită distanță de un punct(centrul). (4)
Detectarea înseamnă scanarea imaginii pentru o anumită particularitate, fiind bazată pe
calcule relativ simple și rapide, utilizate pentru identificarea regiunilor mai mici de date de
imagine, care pot fi analizate în continuare prin te hnici de calcul mai exigente pentru a
produce o interpretare corectă. (11)
Pentru a se descurca mai ușor în mediul real un robot umanoid are nevoie de a vedea
lucrurile asemănător oamenilor, pentru a realiza această parte a unui robot avem nevoie de a
capta imagini și de a le procesa. În ajutorul nostru vine o librărie open source care ne ajută în
linii mari pentru a procesa imaginile. Placa de achiziție a imaginilor este o cameră pentru
Raspberry pi 3, iar partea de procesare video este realizată de un SBC (single -board
computer). Un single -board computer este un sistem de calcul proiectat și executat pe o
singură placă de circuit, cu un microprocesor, memorie, sisteme input și output și alte
funcționalități necesare unui sistem de calcul. Single -board comp uterele au fost create ca și o
demonstrație sau o dezvoltare pentru sistemul educațional sau pentru a fi folosite ca și
calculatoare încorporate în anumite sisteme. Spre deosebire de sistemele desktop, SBC -urile
nu se bazează pe sloturi de expansiune a fun cțiilor.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 66
Capitolul 8. Instalarea OpenCV
8.1 Pregătirea sistemului de operare pentru instalarea OpenCV
Primul pas pentru instalarea OpenCV este să facem update sistemului Linux pe care îl
folosim,
$ sudo apt -get update && sudo apt -get upgrade
apoi trebuie să instalăm unel e unelte de dezvoltator precum CMake, care ne ajută să
configurăm procesul de construire al OpenCV. (1)
$ sudo apt -get install build -essential cmake pkg -config
În continuare trebuie să instalăm unele pachete inpu/output care ne permit sa încărcăm
diferite extensii de imagine din memorie. Exemple de extensii de imagini: JPEG, PNG, TIFF,
RAW, etc.
$ sudo apt -get install libjpeg -dev libtiff5 -dev libjasper -dev
libpng12 -dev
La fel cum avem nevoie de pachetele de input/output ale imaginilor ne trebuie și
pachetele de input/output pentru fișiere video. Aceste librarii ne permit să citim numeroase
formate video din memorie, acestea lucrând la fel de bine și cu streaming -ul video:
$ sudo apt -get install libavcodec -dev libavformat -dev libswscale -dev
libv4l-dev
$ sudo apt -get install libxvidcore -dev libx264 -dev
Libraria OpenCV vine cu un sub -modul numit highgui care este folosit pentru a afișa
imagini pe ecran și pentru a crea interfețe grafice simple. În altă ordine de idei pentru a
completa modulul highgu i, trebuie să instalăm libraria de dezvoltator GTK.
$ sudo apt -get install libgtk2.0 -dev libgtk -3-dev
Multe operații în interiorul OpenCV și anume operațiile cu matrici pot fi optimizate mai
mult instalând câteva dependente:
$ sudo apt -get install libatlas -base-dev gfortran
Aceste librârii de optimizare sunt în special importante pentru devices -urile care au
resurse constrânse precum Raspberry Pi.
Mai întâi vom instala mediile de programare Python 2.7 si Python 3 pentru a putea
compila OpenCV cu ajutorul Python:
$ sudo apt -get install python2.7 -dev python3 -dev
Dacă omitem acest pas vom avea erori când vom rula comanda de compilare make .
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 67
8.2 Descărcarea codului sursă al OpenCV
Acum că avem programele auxiliare instalate, trebuie să descărcăm arhiva cu codul
sursă al OpenCV 3 .3.0 din sursa oficială.
*Această versiune include modulul DNN despre care am discutat în Deep learningwith
OpenCV*
$ cd ~
$ wget -O opencv.zip
https://github.com/Itseez/opencv/archive/3.3.0.zip
$ unzip opencv.zip
Dorim o instalare full a OpenCV 3 pentru a avea acces la funcțiile SHIFT și SURF, deci
trebuie să descărcăm și pachetul opencv_contrib de asemenea:
$ wget -O opencv_contrib.zip
http://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
$ unzip opencv_contrib.zip
Asigurați -vă că versiunile opencv și opencv_contrib sunt aceleași, în acest caz 3.3.0. În
caz că versiunile nu sunt aceleași mai apoi veți avea erori când rulați opencv.
8.3 Python 2.7 si Python 3
Înainte de a începe să compilăm OpenCV pe Raspberry pi $ trebui e să instalăm un
pachet de date numit pip:
$ wget https://bootstrap.pypa.io/get -pip.py
$ sudo python get -pip.py
$ sudo python3 get -pip.py
Puteți primi un mesaj în consolă precum că pip e deja instalat și la zi cu toate
actualizările, dar este bine să nu trecem peste acest pas.
În continuare vom instala 2 pachete de date virtualenv si virtualenvwrapper. Aceste
pachete sunt niște unelte speciale utilizate pentru a ne ține diferitele proiecte în locuri creând
medii Python separate pentru fiecare dintre ele.
Pe scurt ne ajută să ținem proiectul X dependent de versiunea 1.x, dar ne ajută ((site –
packages)) să ținem și pachetele pe care le descărcăm îngrijite, ordonate, departe de
dezordine.
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/ pip
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 68
Acum că ambele, virtualenv și virtualenvwrapper, au fost instalate, trebuie să facem o
actualizare a fișierelor profilului care include și următoarele linii.
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Acum că avem actualizate fișierele profilului și ca acestea să își facă efectul, putem face
una dintre urmatoarele acțiuni :
1. Să ne delogăm și să ne relogăm
2. Să închidem fereastra din terminal și să deschidem una noua
3. Să folosim o comandă mai simplă precum cea de mai jos
$ source ~/.profile
Notă: se recomandă a se da comanda source ~/.profile de fiecare dată când deschidem o
fereastră nouă a terminalului pentru a ne asigura ca toate variabilele de sistem au fost setate
corect.
8.3.1 Crearea mediului virtual Python
În continuare să creăm un mediu virtual Python pe care îl vom folosi pentru dezvoltarea
procesării de imagini.
$ mkvirtualenv cv -p python2
Această comandă va crea un nou mediu virtual numit cv care va fi u tilizat de Python
2.7, iar dacă în loc de acesta dorim să utilizăm Python 3 trebuie să utilizam această comandă
în schimb:
$ mkvirtualenv cv -p python3
Mediul virtual creat în Python, cv, este independent și izolat de versiunea de Python
descarcată atunc i când instalăm sistemul de operare Raspbian Stretch. Oricare pachet Python
global din directorul site -packages nu va fi disponibil pentru mediul virtual cv.
8.3.2 Cum putem verifica dacă suntem în mediul virtual CV:
Dacă dați vreodată reboot la Raspberry Pi sau log out și log in va trebui să utilizăm
comanda workon pentru a reaccesa mediul virtual cv.
După aceasta putem utiliza workon și vom intra în mediul nostru virtual.
$ source ~/.profile
$ workon cv
Pentru a ne putea da seama că suntem în mediul virtual cv trebuie să examinăm consola
și dacă vedem textul (cv) la începutul rândului suntem în mediul virtual cv.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 69
Figura 8.1 Cu mediu virtual CV
În cazul în care nu există, nu suntem în mediul virtual cv.
Figura 8.2 Fără mediu virtual CV
8.3.3 Instalarea NumPy
Presupunând că am facut toți pașii corect, acum trebuie să fim în mediul virtual cv, unde
vom lucra pentru tot restul insatalării, singura dependentă de Python este NumPy, un pachet
de date care este utilizat pentru procesarea numerică:
$ pip install numpy
8.4 Compilarea și instalarea OpenCV
Acum suntem gata de a compila și instala OpenCV, pentru aceasta avem de verificat
dacă suntem în mediul virtual cv examinând consola, dacă nu suntem, pur și simplu e xecutăm
comanda:
$ workon cv
Odată ce ne -am asigurat că suntem în mediul virtual cv, ne putem seta compilarea
folosind CMake:
$ cd ~/opencv -3.3.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib -3.3.0/modules \
-D BUILD_EXAMPLES=ON ..
Notă: înainte de a trece la pasul următor trebuie să ne asigurăm examinând output -ul CMake
începem să derulăm în sus până găsim titlurile Python2 și Python3.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 70
Dacă compilăm OpenCV pentru Python 2.7 trebuie să ne asiguram că secțiunea Python
2 include părți valide ale interpretorului, librării, librării numpy și destinațiile pachetelor similare
cu poza de mai jos:
Figura 8.3 Setări python 2.7
Similar e și dacă compilăm OpenCV pentru Python 3, dar trebuie să ne asigurăm că
avem secțiunea de sub Python3 ca în imaginea de mai jos:
Figura 8.4 Setări python 3
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 71
Din nou punctele cheie ale interpretorului Python sunt localizate în mediul virtual cv în
timp ce pentru numpy este în instalarea NumPy.
8.4.1 Configurarea dimensiunii spațiului de swap înainte de al compila:
Înainte de a începe procesul de compilare, trebuie să mărim dimensiunea spațiului swap.
Aceasta activează OpenCV -ul să compileze cu toate cele 4 nuclee ale Ra spberry Pi fară să
ajungem să avem probleme de memorie.
Trebuie să deschidem fișierul din locația /etc/dphys -swapfile și apoi să edităm
variabila CONF_SWAPSIZE :
# set size to absolute value, leaving empty (default) then uses
computed value
# you most likely don't want this, unless you have an special disk
situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024
Nota1: Am comentat linia în care avem spațiul swap de 100Mb și am adăugat o nouă
linie în care avem spațiul swap de 1024Mb. (Acesta este un secret pentru a compila cu toate
cele 4 nuclee ale Raspberry Pi)
Nota2: Dacă omitem acest pas OpenCV s -ar putea să nu se compileze.
Pentru a activa noul spațiu swap, trebuie să restartăm serviciul swap :
$ sudo /etc/init.d/dphys -swapfile stop
$ sudo /etc/init.d /dphys-swapfile start
Notă: deoarece rulăm sistemul de operare pe un card microSD este posibil să îi ardem
memoria deoarece acesta are un număr limitat de scrieri până când cardul nu va mai
funcționa. Este recomandat ca atunci când teminăm de compilat și de instalat OpenCV să
schimbăm spațiul swap înapoi de la 1024Mb la 100Mb.
După toate aceste operațiuni suntem gata să compilăm OpenCV:
$ make -j4
Odată ce am terminat de compilat OpenCV 3 ar trebui să aveți următoarea secvența de
linii de cod în consolă:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 72
Figura 8.5 Compilarea OpenCV
De aici tot ceea ce trebuie să facem este să instalăm OpenCV 3 pe Raspberry Pi 3:
$ sudo make install
$ sudo ldconfig
8.5 Finalizarea instalării OpenCV pe Raspberry Pi
8.5.1 Pentru Python 2.7:
Fiind asigurați de la pasul #5 că l -am terminat fără nicio eroare, OpenCV ar trebui să fie
instalat în /usr/local/lib/python2.7/site -pacakges . Putem verifica aceasta cu ajutorul
comenzii ls :
$ ls -l /usr/local/lib/python2.7/site -packages/
total 1852
-rw-r–r– 1 root staff 1895772 Mar 20 20:00 cv2.so
Notă: În unele cazuri OpenCV poate fi instalat în /usr/local/lib/python2.7/dist -packages
Dacă nu găsim cv2.so în site-packages , trebuie să verificăm și dist-packages.
Pasul final este să creăm o legatură între mediul virtual cv și Python 2.7:
$ cd ~/.virtualenvs/cv/lib/python2.7/site -packages/
$ ln -s /usr/local/lib/python2.7/site -packages/cv2.so cv2.so
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 73
8.5.2 Pentru Python 3 :
După ce am executat comanda make install , OpenCV și conexiunile cu Python vor fi
instalate în /usr/local/lib/python3.5/site -packages, din nou putem verifica dacă a fost
instalat cu ajutorul comenzii ls:
$ ls -l /usr/local/lib/python3.5/site -packages/
total 1852
-rw-r–r– 1 root staff 1895932 Mar 20 21:51 cv2.cpython -34m.so
Din cauza unui bug în script -ul CMake, când compilăm OpenCV 3 numele fișierului de
legatură pentru Python 3+ .so este denumit cv2.cpython -35m-arm-linux-gnueabihf.so față
de cum este denumit în Python 2.7. Nu am reușit să rezolv acest bug dar o rezolvare ma i
ușoară se poate face cu ajutorul următoarelor comenzi :
54
55 $ cd /usr/local/lib/python3.5/site -packages/
$ sudo mv cv2.cpython -35m-arm-linux-gnueabihf.so cv2.so
După redenumirea fișierului cv2.so putem să atașăm link -ul simbolic de legăturile cu
OpenCV în mediul virtual CV pentru Python 3.5:
$ cd ~/.virtualenvs/cv/lib/python3.5/site -packages/
$ ln -s /usr/local/lib/python3.5/site -packages/cv2.so cv2.so
8.6 Cum testăm dacă am instalat OpenCV 3:
Deschideți o nouă fereastră terminal și executați comenz ile: source și workon , și în final
încercîm și importăm în Python legăturile cu OpenCV:
$ source ~/.profile
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'3.3.0'
>>>
După cum puteți vedea în captura de ecran a ferestrei terminal OpenCV 3 a fost instalat
cu succes pe Raspberry Pi 3 B + în mediul de programare Python 3.5.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 74
Figura 8.6 Impor tarea bibliotecii OpenCV și verificarea instalării
Acum că OpenCV a fost instalat putem șterge fișierele opencv -3.3.0 și opencv_contrib –
3.3.0 pentru a elibera din spațiu:
$ rm -rf opencv -3.3.0 opencv_contrib -3.3.0
Trebuie să fim precauți cu această comandă. Mai întâi trebuie să ne asigurăm că
OpenCv s -a instalat cum trebuie în sistemul de operare înainte de a șterge aceste fișiere. O
mică greșeală aici ne poate costa ore de compilare.
Să nu uităm să schimbăm înapoi dimensiunea swap:
Deschidem fișierul /etc/dphys -swapfile și mai apoi edităm variabila CONF_SWAPSIZE :
# set size to absolute value, leaving empty (default) then uses
computed value
# you mo st likely don't want this, unless you have an special disk
situation
CONF_SWAPSIZE=100
# CONF_SWAPSIZE=1024
Notă: am comentat linia cu 1024MB și am necomentat linia cu 100Mb.
Dacă sărim peste acest pas, cardul nostru de memorie nu va avea durată de viață foarte
mare, după cum am spus și mai înainte, spațiile largi swap pot conduce la coruperea cardului
de memorie, deci se recomandă revenirea la varianta de 100Mb.
$ sudo /etc/init.d/dphys -swapfile stop
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 75
$ sudo /etc/init.d/dphys -swapfile start
Capitolul 9. Metoda segmentării imaginilor în
recunoașterea gesturilor mâinii
9.1 Introducere
Recunoașterea gesturilor mâinii, utilizată în controlarea video a calculatoarelor, este un
aspect important între interacțiunile calculatoarelor cu oamenii.(13) Comparativ cu metodele
tradiționale de introducere a datelor, cum ar fi mouse -ul, tastatura,(14,15) utilizarea gesturilor
mâinii pentru a controla calculatoarele va reduce curba de învățare a utilizatorilor și o
expansiune mai amplificată a acestui scenariu. Pentru a ajunge la con trolul cu ajutorul
gesturilor mâinii,(16) foarte multe cercetări au fost elaborate de pionieri în acest domeniu. Au
fost create mănuși sofisticate cu senzori foarte senzitivi (17, 18)care pot prelua orice mișcare a
falangelor degetelor și care stochează ac este date. Procesul de recunoaștere a gesturilor
mâinii bazat pe procesarea video este ilustrat în Fig1. În orice caz, câteva probleme esențiale
nu au fost încă rezolvate. În primul rând metoda recunoașterii vizuale a gesturilor mâinii este
foarte depend entă de rezoluția imaginii, prin urmare calitatea slabă a imaginii împiedică
dezvoltarea acesteia. În al doilea rând, algoritmii de procesare nu sunt atât de robuști pe cât ar
trebui să fie, deoarece nu pot realiza segmentarea imaginii corect, în timp ce a lți algoritmi
îndeplinesc cererile, dar necesită prea multe interacțiuni umane,(19) și nu sunt eficiente în
aplicațiile reale.
Pentru a soluționa problemele de mai sus cu tehnologia actuală, industria senzorilor a
înflorit recent. Pe de o parte noile tipur i de senzori, precum Microsoft Kinect 2.0 sau Asus
Xtion, au apărut pe piața comercială,(20) și camerele inovative infraroșii (21) fac totul posibil
pentru a obține adâncimea imaginii de la senzori. Pe de altă parte, inovațiile în algoritmii de
procesare v ideo au făcut posibilă segmentarea gesturilor mâinii și clasificarea lor sub diferite
tipare.
Fig 9.7 Procesul de recunoaștere a l mâinii
Segmentarea imaginilor este un stadiu important în tot procesul de recunoaștere a
gesturilor mâinii, și câteva metod e bine cunoscute au fost propuse pentru diferitele cerințe de
segmentare. De exemplu, metoda de tăiere a graficului (22), propusă de Boykov și Jolly, ideea
principală a fost de a împărți imaginea în „obiect‟ și „fundal‟. O histogramă alb -negru a fost
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 76
creat ă pentru a descrie distribuția de gri, și apoi a fost realizată o decupare a obiectului și a
fundalului. A fost aplicat algoritmul de tăiere Max -flow/min pentru a minimiza spațiul dintre
mână și fundal. Acești algoritmi nu doar că se focusează pe toată ima ginea, dar iau în
considerare fiecare detaliu morfoligic. O altă metodă de segmentare este Random walker (23,
24), unde imaginea este văzută ca și un circuit electric. Marginile sunt înlocuite cu rezistori
pasivi liniari, iar greutatea fiecărei margini est e egală cu conductanță electrică. Gulshan et al.
(25) a propus o metodă interactivă a segmentării imaginii, unde fiecare formă este un indiciu
pentru recunoașterea obiectelor. Utilizarea convexității a unei stele geodezice ajută la
obținerea unor rezultate mai precise decât cele calculate cu convexitatea stelei Euclidiene.
În procesul de recunoaștere a gesturilor mâinii (26), extragerea caracteristicilor este
foarte importantă, astfel acestea se extrag cu ajutorul următoarelor metode: HOG (27), Hu
invarian t (28) și Haar (29) su nt utilizate.
9.2 Modelarea imaginilor care conțin gesturile mâinilor:
Pentru a optimiza segmentarea, a fost studiat sistemul vizual cu atenție. Ochii noștri de
obicei captează o imagine neclară a întregii scene care se petrece în fața no astră, iar apoi cu
mișcări sacadate ale ochiului (29) ne ajutăm să obținem detaliile regiunii de interes.
Utilizând inspirația sistemului vizual uman, am utilizat modelul Gaussian Mixture
(GMM) (30) pentru a prelua o idee a distribuției culorilor în imagin e. Deoarece imaginile
color sunt reprezentate în format digital, cu zeci de mii de pixeli, o imagine este compusă din
3 tipuri sub -imagine roșie, albastră și verde, după cum putem vedea în fig 2, au fost aplicate 3
matrici M x N pentru a stoca informațiile de culoare a unei singure imagini, unde M este
rezoluția orizontală și N este cea verticală.
Figura 9.8 Format -ul RGB al unei imagini
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 77
9.3 Modelul Distribuției unice Gaussiene
Distribuția unică Gaussiană , cunoscută ca și distribuția normală (31) , a fost propusă de
savantul francez Moivre în 1733. Probabilitatea densității distribuției funcției unice gaussiene
este dată de formula:
( )
√ ( ( )
) (9.1)
unde: μ este așteptarea matematică sau media
σ este covarianta distribuției gaussiene
exp denotă exponențiala funcției.
Pentru comoditate, distribuția unică gaussiană este aflată cu formula:
( ) (9.2)
Formula distribuției unice gaussiene este capabilă să proceseze și imagini alb -negru,
deoarece variabila X are doar o dimensiune. O imagine cu o singură culoare are matricea M x
N x 3, deci oricare element din setul de date * +ar trebui sa fie cel puțin
tridimensională. Pentru a putea rezolva aceasta problemă este introdus conceptul de distribuție
multi di mensională. Definirea distribuției g aussiene de dimensiunea d este:
( )
√( ) , ( ) ( )
– (9.3)
unde: este un vector d dimensional, ca și la modelul RGB, fiecare componentă a reprezintă
media de roșu, albastru și verde. este covarianta matricii și este inversa matricii.
( ) este matricea transpusă a ( ). Pentru a simplifica ecuația 3 de mai sus, este
introdus pentru a reprezenta parametrii și , apoi probabi litatea densității distribuției
gaussiene d dimensionale poate fi scrisă astfel:
( ) ( ) (9.4)
Conform legii numerelor mari, fiecare pixel este o monstră a unui scenariu real. Când
rezoluția este destul de mare, media densității culorii poate fi estimată.
9.4 Modelul G aussian de amestec al unei imagini RGB
În realitate, distribuția culorilor pe o imagine în fig 2 poate fi reprezentată de 3
histograme (32), fig 3. Cu distribuția separată de roșu, albastru și verde, putem observa că
gestul de imagine nu poate fi descris cu un singur model gaussian. În fiecare histogramă sunt
aproximativ 5 vârfuri, deci ar trebui să avem 5 modele gaussiene care ar trebui să fie aplicate
în modelarea imaginilor.
GMM este introdus pentru a aproxima distribuția probabili tății continue prin mărirea
numărului modelului gaussian singular. Probabilitatea densității funcției GMM cu k modele
gaussiene devine:
( ) ∑ ( )
(9.5)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 78
( ) ∑ ( )
(9.6)
Unde: * +e arată care model unic gaussian aparține este amestecarea
coeficienților componentelor (33) k sau prioritatea probabilității lui x care aparține modelului
gaussian unic , și ∑ ( )
este probabilitatea densității funcției modelului
gaussian unic , cu următorii parametri si . este introdus ca și un set de parametri (34)
* +pentru a afla si .
Figura 9.3 Distribuția de culori in imaginile cu gesture ale mâinii a)distribuția de roșu b)distribuția de verde
c)distribuția de albastru
După cum am menționat mai sus, o imagine a unui gest al mâinii poate fi descris în
setul de date astfel: * +, și dacă privim X ca un eșantion, densitatea de
probabilitate este:
( ) ∏ ( ) ( )
(9.7)
Unde ( ) este numit likelihood cu parametrii dați de X. Apoi sperăm să găsim un set de
parametri pentru a finaliza modelarea. Conform metodei maxime likelihood (35),
următoarea noastră acțiune este a ceea de a găsi ̂unde:
̂ ( ) (9.8)
Funcția ( )și ( )au aceeași formă a ecuației, dar considerând că de acum vom
folosi X pentru a estima , acesta devine variabil și X devine un parametru fix. Valoarea
( )este de obice i prea mică pentru a fi calculată de un calculator, deci o vom înlocui cu
funcția long -likelihood (36).
( ( )) ,∏ ( )
– (9.8)
∑ ,∑ ( )
–
(9.9)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 79
9.5 Algoritmul maxim de așteptare
După stabilirea modelului de amestec gaussian a unei imagini RGB care conține un gest
al unei mâini, mai sunt câțiva parametri care trebuie estimați. Algoritmul maxim de așteptare
[EM] (36) a fost introdus ulterior în calcule. Acesta este o metodă simplă de obținere a
setului de parametri în metoda maximă likelihood. Acest algoritm are 2 pași numiți E -step și
M-step. Pentru a începe cu pasul E -step vom introduce o altă probabilitate ( ). Este un
eveniment întâmplător al , cu alte cuvinte, even imentul întâmplător al fiecărui aparține
modelului gaussian singular din setul de date X.
( ) ( )
∑ ( )
(9.10)
Unde: definirea ( )este dată de teorema Bayes‟ și apoi utilizăm ecuația 11 pentru a
modifica funcția log -likelihood in (10):
( ( )) ∑ [∑ ( ) ( )
( )
]
(9.11)
∑∑ ( ) [ ( )
( )]
(9.12)
În ecuațiile 12 și 13 a fost aplicată inegalitatea Jensen, în timp ce ( )
este
concavă pe domeniul său, atunci:
[∑ ( ) ( )
( )
] ∑ ( )
[ ( )
( )] (9.13)
Maximizând ecuația (13) garantează că ( ( ))este maximizat. Dacă iteram prima
dată al goritmul EM stabilind noi parametri în locul celor vechi vom obține următoarele:
● Inițializarea: Inițializăm cu numere random (37) (întâmplătoare), apoi matricile
unitate sunt utilizate ca matrici de covarianță pentru a porni prima iterație.
Coeficienții micști sau probabilitatea anterioară presupun că:
(9.14)
● E-step: Calcularea evenimentului întâmplător al utilizând parametrii actuali:
( ) ( )
∑ ( )
( )
∑ ( )
(9.15)
● M-step: reînnoirea parametrilor:
∑ ( )
(9.16)
∑ ( )
∑ ( )
(9.17)
∑ ( )( )( )
∑ ( )
(9.18)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 80
Pentru majoritatea imaginilor care conțin gesturi ale mâinilor numărul de iterații este
cert definit. În altă ordine de idei pentru a îmbunătăți calitatea segmentării și pentru a fi mai
eficientă, numărul de iterații este 8 (38).
9.6 Segmentarea interactivă a imaginilor
Metoda de modelare discutată anterior ne o feră o cale universală în rezolvarea
problemei imaginilor care conțin gesturi ale mâinii. Pentru segementarea imaginilor digitale
este introdusă o mască, precum putem vedea în fig 4 care este un bitmap binar marcat cu .
Introducând această mască transfor măm segmentarea într -o problemă de etichetare a pixelilor.
* +, valoarea 0 este luată pentru etichetarea pixelilor din background și 1 pentru
pixelii din prim plan.
Figura 9.4 Aplicarea măștilor de recunoaștere
Pentru a ne descurca cu maleabili tatea GMM vom introduce 2 componente
independente k, una pentru modelarea prim planului și una pentru modelarea background –
ului. Fiecare pixel este marcat după cum urmează: 1 sau 0. Atunci parametrii fiecărei
componente devin:
* ( ) ( ) ( ) + (9.19)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 81
9.7 Câmpul aleatoriu Gibbs
Modelarea globală a culorilor completează primul pas în sistemul nostru vizual vizual,
iar pentru a lua fiecare detaliu în considerare, este introdus Câmpul aleator a lui Gibbs (GRF)
(39). Și este definit după cum urmează:
( )
( ) (
( )) (9.20)
Unde: ( ) ne dă probabilitatea sistemului A de a fi în starea a. T este o constantă
parametru, a cărei unitate este temperatura în fizică, și de obicei valoarea sa este 1. ( )este
funcția de divizare:
( ) ∑ (
( )) (9.21)
Unde: ( )este interpretat ca și funcție energetică a stării a, pentru a aplica GRF în
segmentarea imaginii. Energia Gibbs (40) poate fi definită după cum urmează:
( ) ( ) ( ) ( ) ( ) (9.22)
Termenul ( )este de asemenea denumit termen regional și este definit tinând
cont de GMM. Acesta indică modul lui de a fi clasificat în background sau prim plan.
( )∑ , ( ) ( )-
(9.23)
∑2 , ( )- ,
( ) –
, ( )- ( ) , ( )-3
(9.24)
Și ( )denumit termen limită, fiind definit pentru a descrie tranziția fină între pixelul
și pixelul în setul de pixeli N:
( ) ∑, – ( ) (9.25)
Unde: constanta a fost obținută ca 50 prin optimizarea eficienței prin training. ,
-este o funcție indicator care ia valorile 0 sau 1, analizând formula, este o constantă care
reprezintă contrastul setului de pixeli N , pentru a ajusta termenul exponențial ( )în
ecuație, vom avea:
,( ) ( )- (9.26)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 82
9.8 Matrici de selecție automată
Până acum toate constantele au fost definite. Pentru a începe, toți pixelii din imagine
sunt marcați automat ca nedefiniți sau etichetați U (41). B este setul de pixeli din background
si O este setul de pixeli din prim plan. După terminarea antrenării setu lui X, setul O este
obținut ca fiind rezultarea segmentării O U. Trei seturi de pixeli sunt reprezentați în fig 5 de
mai jos:
Figura 9.5 Relațiile intre ce le trei seturi de pixeli a)im aginea originală b)imaginea unde am identificat
background -ul și pr im plan -ul c)imaginea unde avem background -ul si prim plan -ul segmentate
Pentru a obține segmentarea automată, am propus o metodă de selectare inițială în
imaginile cu gesturi ale mâinilor. Considerând că pielea umană are culoarea distribuită eliptic
în culoare YCbCr (42) , imaginea este transformată din culori RGB în YCbCr, folosind
următoarea ecuație:
[
] [
]
[
] [
] (9.27)
Unde : Y indică intensitatea luminii. Prin atribuirea valorii Y (0, 80), interferența dintre cele
două intensități poate fi prea mare. Apoi, valorile Cb și Cr ale culorii pielii umane sunt
regăsite în ecuațiile eliptice de mai jos:
{( )
( )
0
1 [ ( ) ( )
( ) ( )] 0
1 (9.28)
Unde: x și y sunt valori intermediare. Toți pixelii care satisfac ecuația de mai sus sunt marcați
ca fiind în prim plan, aceștia aparținând setului O. De asemenea, definim pixelii din marginile
imaginii ca fiind pixeli de back ground, aceștia aparținând setului B, deoarece gesturile sunt de
obicei localizate departe de colțurile imaginilor. Rezultatul pixelilor de background sunt
dispuși astfel:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 83
Figura 9.6 Rezultatele selecției automate a)imaginea originală b)pixelii selec tați
9.9 Algoritmul Min -Cut/Max -Flow
Conform câmpului întâmplator Bibbs, problema segmentării imaginii sau etichetării
pixelilor este reprezentată prin minimizarea funcției energiei Gibbs:
* , ( )- (9.29)
Algoritmul min-cut/max -flow( 43) este pentru finalizarea segmentării mult mai precise.
Principul acestui algoritm este de a considera o imagine drept o rețea cu noduri, iar fiecare
nod corespunde fiecarui pixel în parte. În afară de asta, două noduri suplimentare, S și T, sunt
introdu se, ele reprezentând prim planul, respectiv backgroundul. Nodul S este conectat
pixelilor ce aparțin lui O, în timp ce T este conectat pixelilor din B.
Figura 9.7 Modul de tăiere al nodurilor a)imaginea originală b)nodurile și modul lor de alocare c) segmentarea
Există trei tipuri de conexiuni în regiunea N, de la pixel la pixel, de la pixel la S si de la
pixel la T, notate cu , , . Fiecare legătură are o anumită valoare sau o pierdere
în timp (44), detaliate în tabelul de mai j os:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 84
tipul link -ului expresia conditia
( )
( )
( )
Unde: ( )
Conform teoremei, o segmentare optimă este definită de secționarea minimă C. C este
cunoscut ca un set de legături, astfel:
∑ ( ) ∑ ( ) (9.30)
( ) [∑ ( ) ∑ ( ) ] (9.31)
Apoi, energia Gibbs poate fi minimizată folosind secționarea minimă de mai sus.
Întregul proces a segmentării este următorul:
– atribuim componentele GMM i fiecărui xj U , în funcție de selecția umană a regiunii
U
– parametrul setat este învățat din întregul set de pixeli X
– utilizăm segmentarea minimă pentru a minimiza energia Gibbs din întreaga imagine
– folosim din nou primul pas pentru a începe o altă etapă, iar după 8 etape, vom obține
segmentarea optimă
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 85
Capitolul 10. Construirea programului de rec unoaștere
facială
Fiecare om are o față unică, chiar și așa numiții „gemeni identici‟ nu au aceeași structură
facială. Conform unui articol „Face Recognition Tehnology Overview‟, fața fiecărei persoane
are aproximativ 80 de puncte structurale, unele dintre aceste puncte măsurate de această
tehnologie, fiind:
● Distanța dintre ochi
● Lățimea nasului
● Adâncimea orbitelor
● Forma pomeților
● Lungimea liniei maxilarului.
Următorul proces compus din 4 etape ilustrează cum un sistem identifica o față umană:
● Capturarea imaginilor – O probă fizică sau comportamentală este capturată de sistem
în timpul înscrierii unor fețe noi care vor fi stocate în baza de date.
● Extragerea – Date unice, ca de exemplu lățimea nasului, sunt extrase din probă și este
creat un șablon.
● Compara ția – Șablonul este mai apoi comparat cu o nouă probă.
● Potrivirea – În cele din urmă sistemul va decide dacă caracteristicile se potrivesc cu
noua probă sau nu.
Figura 10.1 Procesul de recunoaștere facială
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 86
O primă acțiune este modul de lucru al recunoa șterii faciale și modul de folosire pentru
a ne ajuta în problema noastră, pașii de lucru fiind următorii:
1. Vom explica teoria OpenCV 3 pentru recunoașterea facială;
2. Vom explica cum creăm codul pentru a putea recunoaște;
3. Vom compara cele trei module de recunoștere facială cu calitățile și dezavantajele pe
care le are fiecare;
4. În final, vom asambla tot codul pentru a realiza recunoașterea facială.
La finalul acestui capitol vom învăța să facem un program de recunoaștere facială dar să
știm și cum funcțio nează acesta.
10.1 Bazele recunoașterii faciale
Când ne uităm la un măr, mintea noastră ne spune imediat că acela este un măr. Acesta
este un proces de recunoaștere, în termeni simpli. (12)
Deci ce este recunoașterea facială? Este același lucru dar pentru fețe .
Întrebarea adevarată este: Cum un computer poate să recunoască o față?
Să luăm un exemplu din viața reală:
Când ne întâlnim cu o persoană pentru prima dată nu știm cine este acea persoana din
prima, iar în timp ce vorbește sau ne salută ne uităm la ochi, nas, gură, culoarea pielii. Acesta
este un proces prin care mintea noastră se antrenează și adună informații și se antrenează în
recunoașterea facială.
Datorită cumulării informațiilor, chiar și după ce am văzut o singură dată o persoană,
urmatoarea dată când vedem o poză a persoanei căreia i -am reținut datele faciale, mintea
noastră va urma exact același proces, după cum urmează:
1. Detectarea feței: ne uităm la fotografie și găsim fețele în ea.
2. Preluăm datele: extragem anumite caracteristici ale persoanei d e la care am adunat
informații mai devreme când am întâlnit -o.
3. Compararea datelor: în ciuda variațiilor de lumină și a expresiilor faciale, mintea
noastră va compara acele caracteristici unice ale tuturor oamenilor pe care îi știm.
4. Recunoașterea feței: vom determina că am găsit persoana pe care o căutăm și numele
ei.
Într-un final, cu cât mai mult întâlnim persoana respectivă, cu atât vom colecta mai
multe date despre ea și cu atât mai rapid mintea noastră va recunoaște fața respectivă.
Creierul nostru est e foarte prins în această problematică de recunoaștere a fețelor și o
face automat oriunde.
Calculatoarele nu sunt capabile să facă aceste lucruri de unele singure automat, deci
trebuie să le învățăm cum să facă această recunoaștere pas cu pas.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 87
10.2 Metodele OpenCV de recunoaștere facială
Datorită OpenCV, codarea pentru recunoașterea facială este mai ușoară decât de
obiecei. Sunt 3 pași simpli pentru scrierea codului de recunoaștere facială, care sunt similari
modului de gândire pe care creierul nostru îl folo sește în recunoașterea facială. Acesti pași
sunt:
1. Adunarea datelor: adunarea datelor feței (imaginile feței în acest caz) ale persoanei pe
care dorim să o identificăm.
2. Antrenarea modulului de recunoaștere: “Hrănirea” cu informații a modulului de
recunoaște re pentru fiecare fața pe care o recunoaște pentru a putea avea o
recunoaștere cât mai perfectă.
3. Recunoașterea: recunoașterea fețelor și testarea recunoașterii faciale.
OpenCV are 3 module încorporate de recunoaștere facială și datorită metodei de codare
simple putem folosi oricare dintre ele doar schimbând o singură linie de cod.
Mai jos avem numele si cum le putem apela în profram:
● EigenFaces – cv2.face.createEigenFaceRecognizer()
● FisherFaces – cv2.face.createFisherFaceRecognizer()
● Local Binary Patterns Histograms (LBPH) – cv2.face.createLBPHFaceRecognizer()
10.2.1 Recunoașterea facială cu ajutorul EigenFaces
Acest algoritm consideră că de fapt nu to ate părțile unei fețe au aceeași importanță sau
pot fi folosite pentru recunoașterea feței. Într -adevăr, când ne uităm la cineva îl recunoaștem
după acele caracteristici distincte ale sale, cum ar fi ochii, nasul, bărbia, fruntea, și cum
variază de la o pe rsoană la alta.
În acest caz, ne axăm pe ariile de maximă diferențiere. De exemplu, de la ochi la nas
este o schimbare semnificativă, iar la fel se aplică de la nas la gură. Când avem mai multe fețe
le comparăm între ele cu ajutorul acestor arii deoarece a vând diferențieri maxime în aceste
arii vom prinde zonele de maximă variație între fețe și ne vor ajuta să le diferențiem unele de
celelalte.
În acest fel EigenFaces functionează. Se pare că toate imaginile după care EigenFaces
face comparația între fețele oamenilor ca un întreg și încearcă să extragă componentele care
sunt relevante și folositoare, ignorându -le pe restul. Aceste caracteristici sunt numite
componente principale.
Mai jos este o imagine care ne arată variațiile extrase de la o listă de fețe:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 88
Figura 10.2 Mostră a algoritmului EigenFaces
Astfel, EigenFaces, se antrenează singur extrăgând principalele componente, dar în
același timp ține și o evidență a posesorilor fiecărei fețe. Oricând introducem o față nouă,
acest algoritm repetă același p roces, după cum urmează:
1. extrage componentele principale din noua imagine;
2. compară aceste caracteristici cu o serie de elemente sortate în timpul învățării;
3. găsește unele cu cea mai bună potrivire;
4. returnează o etichetă asociată persoanei respective, care se potrivește cel mai bine.
Un lucru important de ramarcat în imaginile de mai sus este acela că algoritmul
EigenFaces are ca și caracteristică importantă iluminarea. În consecință, lumina și umbrele
sunt luate în considerare de EigenFaces, care le clasif ică precum o caracte ristică
reprezentativă a feței.
Schimbările de iluminare ale feței:
Figura 10.3 Diferite condiții de lumină
EigenFaces găsește iluminarea o componentă folositoare, această variație fiind una
foarte relevantă pentru recunoașterea facială și va ignora caracteristicile altor oameni,
considerându -le mai puțin folositoare.
Cum putem repara acest incovenient?
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 89
Putem să reparăm acest inconvenient punând Eigen Faces să extragă acele caracteristici
folositoare de la fiecare persoană în part e, în loc să le extragă pe toate combinat. În acest caz
chiar dacă o persoană are fața foarte bine luminată, nu va afecta caracteristicile altor persoane
în procesul de extragere al caracteristicilor.
10.2.2 Recunoașterea facială cu ajutorul FisherFaces
Acest al gortim este o versiune îmbunătățită a ultimului. După cum am văzut,
EigenFaces compară doar fețele pe care le are în fișierele sale după ce a făcut învățarea, și se
uită la principalele caracteristici combinate. Făcând asta nu se concentrează pe acele
caracteristici care discriminează un individ de celălalt.
Mai precis, acest algoritm extrage principalele componente, acestea diferențiind o
persoană de cealaltă, însă caracteristicile recesive nu vor fi ignorate î n favoarea celor
dominante.
Dedesubt este o i magine a principalelor componente pe care FisherFaces le folosește:
Figura 10.4 Mostră cu m lucrează algoritmul FisherFaces
Aici putem vedea caracteristicile reprezentative după care FisherFaces lucrează.
Un lucru de notat este acela că FisherFaces previne ca unele caracteristici să fie
dominante, dar folosește iluminarea ca o caracteristică cheie. Știm ca variațiile de lumină nu
sunt o caracteristică care să ne ajute, deoarece nu sunt o comonenta a feței.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 90
10.2.3 Recunoașterea facială cu ajutorul Local Bina ry Patterns Histograms
(LBPH)
Știm deja că EigenFaces și FisherFaces sunt afectate de lumină, iar în viața reală nu
putem garanta condiții perfecte. Recunoașterea facială cu LBPH este o îmbunătățire care
reușește să depășească acest dezavantaj.
Procesul de recunoaștere facială LBPH:
Acesta ia o fereastră de 3×3 și o mută pe toată imaginea. La fiecare mutare (fiecare parte
locală a imaginii), acesta compară pixelii din centru cu cei de lângă. După codul de culoare al
pixelilor, algoritmul îi procesează pe ce i mai mari decât pixelul din mijloc cu 1 iar pe cei mai
mici decât el cu 0.
După ce citim aceste valori 0 și 1 pe o matrice 3×3 în ordinea acelor de ceasornic, vom
avea un model binar precum: 11100011. Acesta este un model particular al ariei respective a
imaginii.
După ce terminăm de făcut acest lucru vom avea o imagine totală a întregii imagini, și
vom avea o l istă a modelelor locale binare.
Figura 10.5 Mod de lucru al algoritmului LBPH
Acest proces de transformare binara poartă denumirea de tresholdin g.Aceasta este cea
mai simplă metodă de segmentare a imaginilor. Tresholding -ul este o operație non -lineară
care convertește imaginile alb -negru în imagini binare, unde cele 2 nivele alocate pixelilor pot
fi mai mici sau mai mari decât valoarea de prag. Cu alte cuvinte, dacă valoarea pixelului este
mai mare decât valoarea de prag, este alocata o valoare (alb) altfel este alocată valoarea opusă
(negru). În OpenCV vom folosi funcția cv2.treshold() :
cv2.threshold(src, thresh, maxval, type[, dst])
src – aceasta este locația imaginii alb -negru;
thresh – aceasta este valoarea de prag, și este utilizată pentru clasificarea valorilor
pixelilor;
maxval – este valoarea maximă folosită împreună cu tipurile de valori de prag numite
THRESH_BINARY și THRESH_BINARY_ INV;
type – tipul valorilor de prag
cv2.THRESH_BINARY
cv2.THRESH_BINARY_INV
cv2.THRESH_TRUNCY
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 91
cv2.THRESH_TOZEROY
cv2.THRESH_TOZERO_INV
dst-matrice de ieșire de aceeași mărime și tip ca src.
Această funcție se aplică pragurilor fixe de nivel la o singură matrice. Această funcție
este de obicei folosită pentru a obține imagini binare din imaginile gri, de exemplu, cu
ajutorul funcției compare() poate fi folosită pentru reducerea zgomotului.
Acum după ce avem această listă de modele locale binare, putem să le convertim pe
fiecare dintre ele în numere zecimale utilizând o conversie din binar în zecimal, apoi să facem
o histogramă a tuturor valorilor zecimale.
Figura 10.7 Mod de lucru al diferitelor valori de prag
O ast fel de histogramă arată astfel:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 92
Figura 10.6 Histogramă
În cele din urmă vom avea o histogramă pentru fiecare față din setul de date de instruire.
Asta înseamnă că dacă ar fi 100 de imagini în setul de instruire al datelor , atunci LBPH -ul va
extrage 100 de histograme după instruire și le va stoca pentru a le compara mai târziu când se
va folosi recunoașterea facială. Algoritmul de asemenea păstrează evidența fiecărei
histograme ce îi aparține unei persoane.
Mai tarziu, după recunoaștere, procesul are următoarele etape:
1. Alimentarea cu o nouă imagine a modulului de recunoaștere facială;
2. Modulul de recunoaștere facială generează o histogramă pentru noua imagine;
3. Compară acea histogramă cu histogramele pe care le are stocate;
4. În final găsește cea mai bună potrivire și returnează o etichetă cu numele persoanei cu
care are cea mai bună potrivire.
Mai jos este o grupare de imagini a fețelor și respectivelor modele locale binare. Putem
observa că variațiile de lumină nu afectează im aginile procesate de modulul LBP.
Figura 10.7 Exemplu de imagine cu algoritmul LBPH
10.3 Procesul de codare utilizand Python si OpenCV:
Vom diviza procesul de recunoaștere facială într -unul care are 3 pași:
1. Prepararea datelor de instruire: citirea imaginilor pentru fiecare persoană împreună
cu particularitățile lor, detectarea fețelor din fiecare imagine și atribuirea fiecărei fețe
detectate cu eticheta persoanei căreia îi aparține.
2. Instruirea modulului de recunoaștere facială: instruirea p rogramului de
recunoaștere facială LBPH prin administrarea acestuia cu datele prelucrate în pasul 1.
3. Predicția: Introducerea unor imagini pentru a vedea dacă recunoașterea facială
funcționează corespunzător.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 93
Înainte de a începe programare în sine, trebuie să instalăm librăriile și să importăm
modulele necesare.
Biblioteci necesare:
1. OpenCV 3
2. Python 3
3. NumPy (ceea ce face procesarea în Python mai ușoară)
Module necesare:
cv2: Acesta este un modul OpenCV pentru Python folosit pentru detectarea și
recunoașterea facială.
os: Vom folosi acest modul Python pentru a citi numele directoarelor de instruire și a
fișierelor.
numpy: Acest modul convertește listele Python în matrici numpy astfel încât
recunoașterea facială OpenCV va avea nevoie de ele pentru procesul de recunoaștere facială.
#OpenCV module
import cv2
#os module for reading training data directories and paths
import os
#numpy to convert python lists to numpy arrays as it is needed by
OpenCV face recognizers
import numpy as np
Figura 10.8 Structura datelor de training
10.3.1 Pregatirea datelor de instruire
Premiza pe care funcționează prepararea datelor de instruire este simplă, folosind cât
mai multe imagini în instruire pentru a obține un rezultat cât mai bun. Acest principiu este
foarte important deoarece este singura modalitate de antrenare a recunoașterii faciale pentru a
învăța diferitele unghiuri ale feței ale aceleiași persoane, de exemplu: cu ochelari, fără
ochelari, râzând, fiind tristă sau fericită, plângând, cu barbă, fără barbă, etc.
Astfel datele de instruire reprezintă un total de 2 persoane cu câte 12 imagini pentru
fiecare. Toate datele de instruire se regăsesc în folderul denumit training -data.
Acest folder conține un subfolder pentru fiecare individ, numit după urmatoarea f ormă:
sLabel (ex : s1, s2) unde eticheta este atribuită unei persoane specifice. De exemplu
subfolderul denumit s1 înseamnă că acesta va conține imagini pentru persoana 1.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 94
Astfel structura directorului cu datele de instruire arată astfel:
De cealaltă part e folderul test-data conține imagini pe care le vom folosi pentru a testa
programul de recunoaștere facială după ce l -am instruit cu succes.
Considerând că recunoașterea facială OpenCV acceptă doar etichete ca și întreg, trebuie
să definim o legătură între eticheta și numele persoanei.
Deci, mai jos am definit legătura între etichetă și numele respectiv.
Notă: Deoarece nu am atribuit niciun nume etichetei 0, legătura pentru eticheta 0 este goală.
#there is no label 0 in our training data so subject name fo r index/label 0 is
empty
subjects = ["", "Persoana 1", "Persoana 2"]
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 95
10.4 Prepararea datelor pentru recunoașterea facială:
Pentru a ști care față aparține fiecărei persoane recunoașterea facială în OpenCV acceptă
informații într -un format particularizat. De fapt acesta primește 2 vectori:
unul este reprezentat de fețele persoanelor
al doilea este reprezentat de etichetele fi ecărei fețe.
De exemplu dacă avem 2 indivizi și 2 imagini pentru fiecare:
PERSON -1 PERSON -2
img1 img1
img2 img2
Atunci etapa de pregatire a datelor va produce următorii vectori ai fețelor și ai
etichetelor:
FACES LABELS
person1_img1_face 1
person1_img2_face 1
person2_img1_face 1
person2_img2_face 1
În detaliu, putem divide acest pas în urmatoarele subetape:
1. Citim numele tuturor subfolderelor provenite din folderul training -data.
2. Extragem numărul etichetei. Trebuie să ne amintim că toate subfolderele conțin
imagini a unei persoane cu următorul format sLabel , unde un număr reprezintă fiecare
persoană. Vom atribui numărul extras în această etapa fiecărei fețe detectate în
urmatoarea.
3. Citim toate imaginile persoanei și mai apoi aplicăm detectarea facială fiecăreia.
4. Adăugăm fiecare față vectorilor faciali cu eticheta corespunzătoare fiecărei persoane.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 96
#function to detect face using OpenCV
def detect_face(img):
#convert the test image to gray scale as opencv face detector expects
gray images
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#load OpenCV face detector, I am using LBP which is fast
#there is also a more accurate but slow: Haar classifier
face_cascade = cv2.CascadeClassifier( 'opencv-
files/lbpcascade_frontalface.xml')
#let's detect multiscale images(some images may be closer to camera than
others)
#result is a list of faces
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2,
minNeighbors=5);
#if no faces are detect ed then return original img
if (len(faces) == 0):
return None, None
#under the assumption that there will be only one face,
#extract the face area
x, y, w, h) = faces[0]
#return only the face part of the image
return gray[y:y+w, x:x+h], faces[0]
După cum putem observa vom folosi detectarea facială OpenCV. Pentru a folosi asta,
avem nevoie de:
1. Pe linia 4, vom converti imaginea în alb -negru deoarece OpenCV de obicei
operează imaginile în alb -negru.
2. Apoi, pe linia 8, vom încărca detectorul facial L BP scriind linia de cod, folosind
classcv2.cascadeClassifier.
3. Mai apoi în linia 12 vom folosi metoda de detectare a tuturor fețelor din imagine
classcv2.CascadeClassifier’detectMultiscale .
4. Pe linia 20, de la fețele expuse, vom alege prima față, deoarece în portretul unei
persoane ar trebui sa fie o singură față (sub asumpția ca în acea imagine va fi o
singură față evidențiată).
5. Deoarece fețele returnate prin metoda detectMultiScale sunt dreptunghiuri (X, Y,
lățime, înălțime) nu sunt actualel e imagini ale fețelor, astfel trebuie să extragem
aria feței din imaginea principală. Astfel, în linia 23, vom extrage aria facială din
imaginea alb -negru și vom returna ambele arii ale feței din imagine.
Acum, vom avea modulul de detectare facială. De ase menea, știm și cele 4 etape de
pregătire a datelor, codul fiind următorul:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 97
#this function will read all persons' training images, detect face from
each image
#and will return two lists of exactly same size, one list
#of faces and another list of labels for each face
def prepare_training_data(data_folder_path):
#––STEP-1–––
#get the directories (one directory for each subject) in data folder
dirs = os.listdir(data_folder_path)
#list to hold all subject faces
faces = []
#list to hold labels for all subjects
labels = []
#let's go through each directory and read images within it
for dir_name in dirs:
#our subject directories start with letter 's' so
#ignore any non -relevant directories if any
if not dir_name.startswith("s"):
continue;
#––STEP-2–––
#extract label number of subject from dir_name
#format of dir name = slabel
#, so removing letter 's' from dir_name will give us label
label = int(dir_name.replace("s", ""))
#build path of directory containing images for current subject subject
#sample subject_dir_path = "training -data/s1"
subject_dir_path = data_folder_path + "/" + dir_name
#get the images names that are inside the given subject directory
subject_images_names = os.listdir(subject_dir_path)
#––STEP-3–––
#go through each image name, read image,
#detect face and add face to list of faces
for image_name in subject_images_names:
#ignore system files like .DS_Store
if image_name.startswith("."):
continue;
#build image path
#sample image path = training -data/s1/1.pg m
image_path = subject_dir_path + "/" + image_name
#read image
image = cv2.imread(image_path)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 98
#display an image window to show the image
cv2.imshow("Training on image…", image)
cv2.waitKey(100)
#detect face
face, rect = detect_face(image)
#––STEP-4–––
#for the purpose of this tutorial
#we will ignore faces that are not detected
if face is not None:
#add face to list of faces
faces.append(face)
#add label for this face
labels.append(label)
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.destroyAllWindows()
return faces, labels
Am definit o funcție care găsește calea fișierului unde stochează folderul de antrenare ca
și parametru. Această funcție urmează aceleași subetape a datelor de pregătire pe care le -am
reamintit anterior.
Pasul 1: Pe linia 8 vom folosi methodos.listdir pentru a citi numele tuturor folderelor
stocate în directorul de pregătire, astfel va începe să funcționeze ca un parametru.
Pe liniile 10 -13 vom defini etichetele și fețele vectorilor.
Pasul 2: După aceea, vom trece la folderul cu numele tuturor subiecților, iar din fiecare
vom extrage, pe linia 27, informațiile etichetei. Deoarece numele folderului urmează
convenția sLabelnaming , doar prin eliminarea literelor de la numele folderului vom obține
eticheta specifică a acelui subiect.
Pasul 3: Pe linia 34 vom citi toate imaginile curente ale persoanelor, iar pe liniile 39 -66
vom procesa fiecare imagine una câte una.
Pe liniile 53 -54 vom folosi metoda de afișare a actualelor imagini imshow(window_title,
image) împreună cu waitkey(interval) .
Această metodă, waitkey(interval) , oprește codul din rulare pentru a forma un interval
(de milisecunde). Deci vom folosi intervale a cate 100ms pentru a putea vedea fiecare imagine
pe rând.
Pe linia 57 vom implementa detectarea facială din imaginea actuală.
Pasul 4: Pe liniile 62 -66 vom adăuga fața detectată și eticheta pentru respectivii vectori.
Pentru a pregăti datele de recunoaștere facială avem nevoie de următorul cod:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 99
#let's first prepare our training data
#data will be in two li sts of same size
#one list will contain all the faces
#and the other list will contain respective labels for each face
print("Preparing data…")
faces, labels = prepare_training_data("training -data")
print("Data prepared")
#print total faces and labels
print("Total faces: ", len(faces))
print("Total labels: ", len(labels))
10.5 Antrenarea modulului de recunoaștere facială
Biblioteca OpenCV este deja echipată cu 3 module de recunoaștere facială.
1. EigenFaces cv2.face.create.EigenFaceRecognizer()
2. FisherFaces cv2.face.create.FisherFaceRecognizer()
3. Local Binary Patterns Histogram (LBPH) cv2.face.LBPHFisherFaceRecognizer()
Acum vom folosi modulul de recunoaștere facială LBPH pentru a vedea dacă
funcționează corespunzător.
#create our LBPH face recognizer
face_recognizer = cv2.face.createLBPHFaceRecognizer()
#or use EigenFaceRecognizer by replacing above line with
#face_recognizer = cv2.face.createEigenFaceRecognizer()
#or use FisherFaceRecognizer by replacing above line with
#face_recognizer = cv2.face.create FisherFaceRecognizer()
După ce am inițializat recunoașterea facială, de asemenea trebuie să pregătim datele de
antrenare a acesteia cu ajutorul methodtrain(faces -vector, labels -vector)
#train our face recognizer of our training faces
face_recognizer.train(faces, np.array(labels))
De menționat este faptul că în loc să trecem etichetele vectoriale direct la recunoașterea
facială, trebuie mai întâi să le convertim în matricea numpy, motivul fiind acela că biblioteca
OpenCV așteaptă ca etichetele vectoriale să fie matrici numpy.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 100
Capitolul 11. Predicția
Acesta este pasul în care vom vedea dacă algoritmul recunoaște fețe individuale sau nu.
Vom folosi câte o imagine de test de la fiecare persoană și vom folosi modulul de
detectare facială pentru a ve dea dacă acesta funcționează. Apoi vom afla dacă acesta
funcționează cu succes.
Mai jos sunt câteva funcții pe care le vom folosi pentru desenarea dreptunghiului din
jurul feței și punerea numelui persoanei lângă acesta.
#function to draw rectangle on ima ge
#according to given (x, y) coordinates and
#given width and heigh
def draw_rectangle(img, rect):
(x, y, w, h) = rect
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
#function to draw text on give image starting from
#passed (x, y) coordinates.
def draw_text(img, text, x, y):
cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.5, (0, 255,
0), 2)
Aceasta primă funcție draw_rectangle desenează un dreptunghi pe imaginea de bază în
coordonatele date. Utilizăm funcția predefinită în OpenCV cv2.r ectangle(img, topLeftPoint,
bottomRightPoint, rgbColor, lineWidth) pentru a face aceasta.
Cea de -a doua funcție predefinită în OpenCV draw_text cv2.putText (img, text,
startPoint, font, fontSizem rgbColor, lineWidth) este pentru a scrie textul în imagine.
Acum că avem funcțiile de desenare, trebuie doar să apelăm modulul de recunoaștere
facială și de predicție, pentru a -l testa pe imaginile de test. Următoarele funcții vor face asta
pentru noi:
#this function recognizes the person in image passed
#and draw s a rectangle around detected face with name of the
#subject
def predict(test_img):
#make a copy of the image as we don't want to change original image
img = test_img.copy()
#detect face from the image
face, rect = detect_face(img)
#predict the image using our face recognizer
label= face_recognizer.predict(face)
#get name of respective label returned by face recognizer
label_text = subjects[label]
#draw a rectangle around face detected
draw_rectangle(img, rect)
#draw name of predicted person
draw_text (img, label_text, rect[0], rect[1] -5)
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 101
return img
Explicația acestui ultim cod ar fi astfel:
Pe linia 6 citim imaginile de test.
Pe linia 7 detectăm fețele din imaginile de test.
Pe linia 11 recunoaștem fețele apelând modulul de recunoaștere facială și metoda de
predicție. Această metodă va returna o etichetă.
Pe linia 12 vom afla numele asociate etichetelor.
Pe linia 16 vom desena dreptunghiul în jurul feței detectate.
Pe linia 18 vom scrie numele persoanei recunoscute deasupra dreptunghiului desenat.
Acum că avem funcția de recunoaștere bine definită, următorul pas este acela de a apela
această funcție în testarea imaginilor, afișarea lor fiind pentru a vedea dacă acesta
funcționează corect.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 print("Predicting images…")
#load test images
test_img1 = cv2.imread("test -data/test1.jpg")
test_img2 = cv2.imread("test -data/test2.jpg")
#perform a prediction
predicted_img1 = predict(test_img1)
predicted_img2 = predict(test_img2)
print("Prediction complete")
#display both images
cv2.imshow(subjects[1], predicted_img1)
cv2.imshow(subjects[2], predicted_img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 102
Capitolul 12. Modificarea robotului umanoid
Robotul a fost achiziționat ca și un kit pentru a putea fi modificat astfel încât să poată
merge și să își țină echilibrul, și pentru a putea recunoaște fața utilizatorului și a executa
acțiuni atunci când recunoaște anumite culori.
Figura 12.1 Kit-ul cu robotul umanoid
Apoi am achiziționat o placă Raspberry Pi 3B pentru procesarea vide o și pentru a
executa algoritmul de pășire. Familia de single -board computers SBC a Raspberry Pi
utilizează Python ca și limbaj de programare preferat. Raspberry pi este o serie de SBC
ieftine, cât dimensiunea unei palme, dezvoltate de fundația cu același nume din Marea
Britanie. Intenția din spatele acestei fundații este aceea de a promovarea învățarii în scoli și
mai ales învățarea bazelor științei calculatoarelor.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 103
Servomecanisme LD2015
Figura 12.2 Servomecanism
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 104
Figura 12.3 Asamblarea robotului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 105
Figura 12.4 Asamblarea robotului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 106
Figura 12. 5 Vedere frontal a placii Raspberry Pi
Figura 12. 6 Vedere din spate a plăcii Raspberry Pi
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 107
Raspberry Pi folosește un sistem de operare Linux, care este bazat pe Unix, precum și
variante de Debian și Fedo ra. Modelul nostru poate suporta următoarele sisteme de operare:
Raspbian, OpenELEC, Pidora, RASPBMC, Ubuntu, Windows IOT. Pentru a utiliza
Raspberry pi avem nevoie de un cablu micro USB și o sursă de curent de 5V și 2A un monitor
cu intrare HDMI, un card de minim 4Gb, un mouse și o tastatură.
Un set de 2 acumulatori care inițial au fost folosiți separat dar mai apoi împreună
conectați în serie.
Figura 12. 7Acumulatorii robotului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 108
O cameră video specială pentru Raspberry Pi. vom conecta camera la portul CSI, care
este localizat în spatele portului de Enthernet, după va trebui să activăm camera cu ajutorul
comenzii sudo raspi -config. Pentru a putea prelua imagini putem folosi urmatoa rea comanda
raspistill -o cam_module_pic.jpg
Figura 12. 8 Camera pentru Raspberry Pi
Figura 12. 9 Raspberry Pi cu camera conectată
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 109
2 servomecanisme SG -90
Figura 12. 10 Servomecanismul SG -90
Și 2 regulatoare de voltaj unul step -up și altul step -up st ep-down
Figura 12. 11Regulatoarele de voltaj
Am ales să punem 2 regulatoare de voltaj pentru că unul îl dorim a folosi pentru placa
ce comandă toate cele 18 servomotoare iar celălalt pentru placa Raspberry pi deoarece aceasta
este mai sensibilă la varia țiile de voltaj introduse de cele 18 servomotoare.
După ce am avut toate componentele am început să asamblăm robotul:
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 110
Am montat bateriile în interiorul său și am tras fire pentru a le putea reîncărca și folosi
Figura 12. 12 Bateriile montate pe robot
Figura 12.1 3 Interiorul robotului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 111
Apoi am reamplasat controllerul care se ocupă de mișcarea fiecărui servomecanism.
Am recablat toate servomecanismele pentru a ajunge în locul noii amplasări a
controllerului și am numerotat fiecare cablu și montat alte mufe pentru că cele vechi erau prea
mari. Am numerotat servomecanismele pentru a ști care fir aparține fiecăruia.
Figura 12.1 4 Numerotarea servomecanismelor
Figura 12.1 5 Reamplasarea controlerului de servomecanisme
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 112
Am montat placa Raspberry Pi, c ele două regulatoare de voltaj în partea din spate a
robotului, am pus 2 plăci de plexiglass pentru a izola de carcasa metalică Raspberry Pi -ul, iar
cea de -a doua placă de plexiglass este pentru a putea monta regulatoarele de voltaj.
Figura 12.1 6 Regula toarele de voltaj montate pe robot
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 113
Am creat o articulație a capului pentru a putea imita mișcările capului unui om normal,
pentru aceasta am folosit 2 servomecanisme tip SG -90 cărora le -am îndepărtat suporții de
prindere și pe unul dintre ele l -am pus ră sturnat pentru a putea misca camera stanga dreapta,
iar pe celălalt transversal deasupra celuilalt pentru a putea misca camera sus si jos. Inițial am
vrut să controlăm cele 2 servomecanisme de pe Raspberry Pi dar deoarece nu le -am putut
controla prea stabi l și se încălzeau, am ales să schimbăm modul de a le controla prin
controllerul cu care a venit robotul deoarece acesta este specializat.
Figura 12.1 7 Vedere frontal ă a servomecanismelor capului
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 114
În final am montat camera de la Raspberry Pi pentru a putea face achiziția de imagini.
Figura 12.1 8 Vedere laterală a servomecanismelor care realizează mișcarea capului
Figura 12.1 9 Vedere frontală cu camera montată
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 115
Concluzii
12.1 Comunica ția cu controllerul de servomecanisme
Deoarece pe Raspberry Pi nu pute m conecta 18 servomecanisme, acesta neavând pini
PWM am ales să utilizăm un controller specializat pentru toate servomecanismele ca re
acționează robotul. De aceea am avut nevoie de un protocol de comunicație între cele 2. Din
datele tehnice pe care le -am a vut la î ndemână am reușit am reușit să facem ceea ce ne -am
propus prin urmare putem da comenzi robotului fără nicio pro blema, ba chiar mai mult putem
și primi comenzi care ne in dică voltajul bateriei, sau dacă am oprit vreo acț iune care era î n
desfășurare.
12.2 Instalearea OpenCV
După executarea liniilor de cod și folosir ea platformei OpenCV concluzionăm că este
foarte flexibilă ș i ne oferă următoarele avantaje :
– este cea mai puternică platformă independentă și are librării care suportă C++, Java,
Python;
– oferă un suport foarte bun în detectarea formelor și a culorilor ;
– instalarea este relativ ușoară ;
– oferă un suport video foarte bun care este compatibil cu majori tatea c amerelor web ;
– putem folosi OpenCv și pentru detectarea ex actă a feței, conturul buzelor ;
– se po t implementa alți algoritmi de care să optimizeze procesarea video ;
– OpenCV oferă suport ți pentru calibrarea camerei, recunoașterea textelor .
12.3 Procesarea imaginilor
În concluzie, recunoașterea interactivă prin metoda segmentării ima ginilor poate fi
perfecț ionată ș i se pot procesa imaginile cu gesturi ale mâinii fără intervenția umană.
Mecanismul din spatele acestei metode a fost explorat cu grijă ș i asistat de teoriile matematice
moderne. Calcularea rezultatelor segmentări i gesturilor mâinii cu alte metode de segmentare,
metoda noastră poate obține o acuratețe mai mare pe langă calitatea îmbunătățită. Selecția
automată a pixelilor de fundal și de prim plan de asemenea ajută la reducerea interacțiunilor
umane. Segmentarea ajută la îmbunătățirea ratei de recun oașere .
În viitor doresc să adaptez această metodă pentru imaginile cu rezoluție mai mare care
necesită simplificarea procesului de calcul. În selectarea pixelilor, această metodă poate fi
imbunătățită pentru a putea depăși diferitele interferențe cum ar fi supraexpunerea imaginilor,
umbrele, si distorsiunile de imagine. P e viitor v oi dori să mă axez pe î mbunătățirea
algoritmului de recunoaștere prin integrarea unui algoritm de segmentar e cu metode avansate
de recunoaș tere.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 116
12.4 Recun oașterea facială
Recunoaște rea facială este fascinantă iar OpenCV a facut o treabă incredibilă și este
foarte simplu de scris codul sursă. Sunt suficiente câteva linii de cod pentru a avea o aplicație
de recunoaștere facială complexă.
Putem schimba între cele 3 module de recunoaște re facială ale OpenCV prin schimbarea
unei singure linii de cod.
Chiar dacă programele de recunoaștere facială, EigenFaces FisherFaces și LBPH, sunt
bune, sunt și metode chiar mai bune de a face recunoașterea facială mai performantă precum
folosirea Histog ram of Oriented Gradients (HOGs) și Rețele Neurale.
Mai mulți algoritmi de recunoaștere facială mult mai avansați sunt implementați
folosind o combinație între OpenCV și Machine Learning.
Mulți cercetători au dezvoltat această tehnologie pentru a o folosi pentru autentificare și
securitate. De asemnea, este folosită în aeroporturi, bănci, birouri și alte locații.
În opinia mea, în aproximativ doi ani de acum încolo, acuratețea recunoașterii faciale va
progresa semnificati v, făcând -o utilizabilă în unită ți cu cerințe ridicate de securitate.
Tehnologia a devenit foarte avansată și a câștigat o mulțime de îmbunătățiri, iar peste
ani de zile poate va fi posibil să stăm în fotolii și să lăsăm comput erele să se descurce cu totul.
12.5 Direcții viitoare de cercetare
– Schimbarea SBC -ului cu unul mai potent și care să facă față unei procesări de imagine
mai complexă
– Implementarea unui algoritm neuronal, care să facă mai ușoară ‚învățarea‟ robotului.
– Proiectarea unei căști care să aducă un aspect mai plăcut.
– Rezolvarea prob lemei capului d e a nu se rupe atunci câ nd cade.
– Rezolvarea prinderii în spatele robotului a plăcii Raspberry Pi ș i a regulatoarelor de
voltaj, dar și așezarea acestora mult mai ordonată.
12.6 Concluzii finale. Contribuții originale.
Prin tema abordată s-a încercat completarea cunoștințelor actuale în domeniul roboților
bipezi. Un element cheie în cadrul cercetărilor întreprinse este de a cunoaște îndeaproape
evoluția roboților și mai cu seamă evoluția roboților bipezi și performanț ele la care aceștia au
ajuns. Astfel, în primul capitol atenția este îndreptată spre stadiul actual al cercetărilor în
domeniul roboților bipezi (umanoid), fiind prezentat e pe scurt istoricul roboticii,
caracteristicile generale ale roboților bipezi, accentuându -se avantajele pe ca re roboții
umano izi le au în rapor t cu celelalte tipuri de roboți
12.7 Concluziile stadiului actual al sistemelor de deplasare pentru roboți
mobil i
Prin compararea confi gurațiilor de roboți umanoizi (bipezi) prezentate s -au putut
sintetiza unele concluzii cu pr ivire la tendințele în acest domeniu de dezvoltare. Parametrii de
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 117
bază ai roboților umanoizi, cum ar fi înălțimea, greutate și numărul de grade de libertate se
schimbă î n timp. Tendin țele în proiectarea robo ților constau în reducerea greutății și a
înălțimii și creș terea numărului de grade de libertate ale robotului. Prin analiza roboț ilor
umanoizi, se poate concluziona că, din perspectiva proiectării, cele mai bune soluții de robo ți
umanoizi au înălț imi de 1400 mm, greutate de 70 kg și au cel puțin 35 grade de libertate.
Seria robo ților WABIAN, precum și P2 și P3 produș i de Honda, la fel ca robotul
umanoid Johnnie, nu sunt complet autonomi din cauza sursei de alimen tare prin cablu.
Umanoizii H6 și H7 pot merge stabil, dar nu au alte abilități importa nte, cum ar fi mișcarea
continuă sau interacțiunea cu factorul uman .
Robotul KHR -3 este foarte bine conceput și conține diferite inovații în hardware și
software de proiectare. Robotul HRP -2P este autonom și poate merge foarte stabil. Principalul
avantaj a l HRP -2P este numărul de prototipuri construite și amplasate în cele mai bune centre
de cercetare din lume. Acest lucru demonstrează fiabilitatea de proiectare mecanică și
electrică , precum și posibilitatea de a dezvolta activitățile proprii ale utilizator ului. Familia
roboților HRP este una dintre principalele platforme de dezvoltare a interacțiunii complexe
dintre robo ții umanoizi cu utilizatorul uman. Cu toate acestea , dezvoltarea roboților umanoizi
rămâne încă o sarcină foarte complexă a ingineriei. Rezolvarea acestei sarcini necesită
abordări noi în proiectarea mecanică, electronică, software ingineresc și de control. În timpul
evoluției sale, robotul umanoid a fost transformat dintr -un mecanism greoi biped într -un corp
artificial cu structură umanoi dă și cu capacități de mers destul de bune. În prezent, robo ții
umanoizi au un i mpact mare în multe domenii ale ingineriei.
12.8 Concluzii privind cinematica roboților bipezi
Prin determinarea cât mai precisă a relațiilor între fiecare articulație a robotul bip ed se
poate realiza comanda mai ușoară a robotului biped, dar în special se poate realiza cu mare
ușurință stabilitatea robotului, pentru că se pot calcula reacțiile între picior (talpă) și sold.
Adică se pot genera semnale corecte pentru comanda servomoto arelor pentru echilibrarea
robotului atunci când stă numai pe un picior.
Modelarea matematică asigură un control mult mai ușor al robotului putând fi realizată
simularea virtuală a acestuia folosind ecuațiile cinematica directă, inversă cu ecuaț iile
simbol ice. Î n acest fel nu este necesară construirea fizică a robotu lui, fapt care r educe
costurile de proiectare.
Pe baza ecuațiilor determinate cu ajutorul cinematicii directe și inverse s -a putut realiza
un algoritm pentru deplasarea și comanda picioarelor r obotului. Aces t lucru a fost posibil
deoarece cinematica directă dă poziția piciorului (talpă, efectorul final) câ nd se cunosc
unghiurile de rotație. Î n cazul în care se cunoaște poziția efectorului final atu nci se pot
determina unghiurile acestuia folosin d cinematica inversă cu ajutorul ecuaț iilor simbolice.
Utilizarea calculului parametric/simbolic duce la o funcționare mai rapidă a
controllerului care asigură comanda de bază a robotului, dar face posibil și calculul vitezei și
accelerației pentru fiecare element al piciorului robotului. Cunoscând viteza și accelerația se
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 118
pot calcula forțele și momentele ce acționează pe fiecare element al picioarelor robotului
biped .
Cinematica directă asigură poziția piciorului (talpă, efector final) când se cunos c
unghiurile de rotație ale robotului, iar cinematica inversă, prin calculul simbolic, permite, prin
creșterea vitezei de funcționare a controllerului, asigurarea funcționării continue a robotului în
regim stabil. Pe baza ecuațiilor determinate prin cinema tica directă și inversă se poate genera
un algoritm de navigare care să asigure optimiza rea deplasării robotului biped.
12.9 Concluzii asupra controlului stabilității unui robot biped
Mersul bipedului de tip uman prezintă dezavantajul unui centru de greutate în alt cu o
suprafață mică de contact cu solul, obținând un poligon de susținere cu suprafață mică, cu
consecința pericolului permanent de pierdere a echilibrului.
Pentru e fectuarea unei mișcări a robotului trebuie să oferim traiectorii tuturor
articulațiilor care participă la această mișcare. În timpul realizării mișcării mecanismului
biped, este important să se aibă în vedere diferite caracteristici constructive și funcționale. Cea
mai importantă dintre aceste caracteristici este Punctul Momoentului Zero (PM Z).
În cazul fazei de suport unic (când robotul se sprijină pe un singur picior), pentru a
asigura stabilitatea mecanismului biped (astfel încât să nu cauzeze rotația mecanismului de
către momente de dezechilibru) PMZ trebuie să fie localizat în interiorul poligonului de
suport. Pentru a unifica folosirea PMZ pentru ambele faze de mers, este necesar să se
introducă conceptul de regiune de stabilitate.
Stabilitatea roboților bipezi se poate clasifica în stabilitate statică și stabilitate dinamică.
Stabilitat ea statică descrie robotul care se află în repaus, în cazul în care toate forț ele
sunt egale, stabile și neschimbătoare. Stabilitatea dinamică caracterizează robotul care se
mișcă , dar se mișcă într-un mod perfect previzibil.
Pentru realizarea unui robot biped sau umanoid care să se deplaseze continuu în teren
accidentat și neaccidentat, robotul trebuie să fie dotat cu un senzor amplasat în punctul ZPM
din talpa piciorului, pe baza căruia să determine momentele de inerție la nivelul tălpii.
Programul de co mandă generează modificarea înclinării robotului în așa fel încât robotul să
fie stabil.
În aceste condi ții se poate concluziona:
– Deși modelele de mișcare planificate satisfac constrângerile de stabilitate, anumite
erori cauzate de dinamică, neregularitate a terenului sau forțele externe pot provoca
dezechilibrarea robotului umanoid.
– Cel mai important criteriu pentru determinarea locomoției stabile a unui robot
umanoid este conceptul ZMP. Acest concept este în prezent utilizat pe scară largă ca
o metodă de bază pentru generarea locomoției bipede stabile.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 119
12.10 Concluzii asupra analizei sistemelor de deplasare pentru roboții
mobile
Robotul pășitor folosește pentru mișcarea pe teren dispozitive analoage picioarelor
omului sau animalelor. Piciorul nu este un sistem de deplasarea continuă, așa cum este roata,
acesta trebuie ridicat de pe suprafața de sprijin, deplasat în direcția de înaintare a robotului
biped și apoi așezat, după care se reia un nou ciclu cu celălalt picior. Cum robotul biped are
două picioare, mișcă rile acestora trebuie să fie coordonate astfel încât să fie asigurată
locomoția în condiții de stabilitate a sistemului.
Robotul biped se sprijină pe rând pe cele două picioare, mutându -le alternativ în poziții
noi cu asigurarea unui sprijin stabil. Ocupar ea succesivă de noi poziții, într -o mișcarea sigură
și stabilă, imp1ică definirea mersului. Pasul robotului biped este definit ca distanța cu care se
deplasează centrul de greutate al acest uia într -un ciclu de deplasare.
Algoritmu l de conducere a robotului calculează poziția corectă pe baza modelului
matematic, determinând accelerația, forțele, viteza și momentele de inerț ie ale robotului
pentru o tensiune de alimentare cunoscută. Dacă sunt folosite ecuațiile simbolice și algoritm ul
de calcul al centrului d e greutate atunci robotul devine mai stabil, condiție ce trebuie
îndeplinită pentru mersul biped.
În timpul mersului robotul se poate afla în două faze:
– Robotul se sprijină pe ambele picioare , atunci poligonul este mai mare ceea ce ii
conferăo stabilitate mai bună;
– Robotul se sprijină pe un picior, stabilitatea robotului este mai mică deoarece
șipoligonul este mai mic, caz în care robotul trebuie stabilizat.
Atunci când piciorul stâng este ridicat, proiecția centrului de greutate trebuie să cadă în
interiorul poligonului des cris de talpa piciorului drept. Dacă nu cade în interiorul poligonului ,
rezultă că robotul este instabil și este necesară o corecție adică înclinarea robotului spre partea
dreaptă. Cunoscând ecuațiile cinematice directe și inverse ale robotului se pot calcula
coordonatele articulațiilor. După calculul coordonatelor articulațiilor, dacă proiecția centrului
de greutate nu se află în interiorul poligonului, atunci robotul trebuie să se încline ca să
compenseze eroarea până când centru l de greutate ajunge în interiorul poligonului de sprijin.
Stabilitatea robotului constă în menținerea poziției verticalei prin centrul de greutate în
interiorul poligonului de sprijin în timpul deplasării pe suprafață. Dacă solul este relativ plan,
nu sun t efecte dinamice și acceler ația robotului este mai mică de cât este accelerația
gravitațională, robotul biped este stabil , dacă verticala prin centrul de greutate cade în
interiorul poligonului de susținere .
Metodele de cre ștere a stabilității roboț ilor bi pezi sunt:
– Mărirea poligonului de stabilitate
– Coborârea centrului de greutate
– Modificarea vârfului poligonului de stabilitate
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 120
12.11 Contribuții originale
Cercetările teoretice realizate în cadrul prezentei lucrări de licență , în care autorul
prezintă robot ul biped cu 18 grade de libertate prezintă o serie de contribuții originale :
– Definirea unei str ucturi de tip robot biped cu 18 grade de libertate cu posibilitățile de
pășire ;
– Modelarea cinematică a structurii robotice cu 18 grade de libertate și obținerea
ecuațiilor analitice.
– Realizarea unui model virtual al structurii cinematice care a permis studiul comportării
acesteia și validarea ipotezelor și modelelor matematice dezvoltate ;
– Simularea diferitelor traiectorii de mișcare ale bipedului cu evidențierea
comportamentului efectorului final, al cuplelor motoare și reprezentarea grafică a
parametrilor: deplasări, viteze și accelerații
– Analiza stabilității robotului cu ajutorul modelului matematic și real
– Programarea robotului pentru a realiza comanda de deplas are.
12.12 Direcții viitoare de cercetare
– Implementarea unui senzor care montat pe robot să determine centrul de greutate
și forțele care acționează in timpul deplasării
– Deplasarea să se realizeze în mod complet autonom cu diferiți senzori de analiză a
mediului înconjurător
– Mărirea puterii de procesare prin instalarea unei noi plăci Ra spberry Pi de ultimă
generație
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 121
Bibliografie
1) https://www.pyimagesearch.com/2017/09/04/raspbian -stretch -install -opencv -3-
python -on-your-raspberry -pi/
2) https://en.wikipedia.org/wiki/Computer_vision#Recognition
3) https://en.wikipedia.org/wiki/Humanoid_robot#Notes
4) https://en.wikipedia.org/wiki/Charge -coupled_device
5) https://en.wikipedia.org/wiki/Image_sensor
6) https://en.wikipedia.org/wiki/Transhumanism
7) http://www.itpro.co.uk/security/27856/the -future -of-face -recognition -more -than –
meets -the-eye
8) http://www.techguruit.com/top -8-ways -face -recognition -software -used -today/
9) http://www.sciencedirect.com/science/article/pii/S1877050915021870
10) https://petapixel.com/2015/11/12/the -unsettling -future -of-face -recognition/
11) http://www.ex -sight.com/technology.ht m
12) https://www.superdatascience.com/opencv -face -recognition/
13) Nardi, B.A. Context and Consciousness: Activity Theory and Human -Computer
Interaction; MIT Press: Cambridge, MA, USA, 1996; p. 400.
14) Chen, D.C.; Li, G.F.; Jiang, G.Z .; Fang, Y.F.; Ju, Z.J.; Liu, H.H. Intelligent Computational
Control of Multi -Fingered Dexterous Robotic Hand. J. Comput. Theor. Nanosci. 2015,
12, 6126 –6132.
15) Ju, Z.J.; Zhu, X.Y.; Liu, H.H. Empirical Copula -Based Templates to Recognize Surface
EMG Signals of Hand Motions. Int. J. Humanoid Robot. 2011, 8, 725 –741. [CrossRef]
16) Miao, W.; Li, G.F.; Jiang, G.Z.; Fang, Y.; Ju, Z.J.; Liu, H.H. Optimal grasp planning of
multi -fingered robotic hands: A review. Appl. Comput. Math. 2015, 14, 238 –247.
17) Farina, D.; Jia ng, N.; Rehbaum, H.; Holobar, A.; Graimann, B.; Dietl, H.; Aszmann, O.C.
The extraction of neural information from the surface EMG for the control of upper –
limb prostheses: Emerging avenues and challenges. IEEE Trans. Neural Syst. Rehabil.
Eng. 2014, 22, 7 97–809.
18) Ju, Z.; Liu, H. Human Hand Motion Analysis with Multisensory Information.
IEEE/ASME Trans. Mechatron. 2014, 19, 456 –466. [CrossRef]
19) Panagiotakis, C.; Papadakis, H.; Grinias, E.; Komodakis, N.; Fragopoulou, P.; Tziritas,
G. Interactive Image Segmen tation Based on Synthetic Graph Coordinates. Pattern
Recognit. 2013, 46, 2940 –2952. [CrossRef]
20) Yang, D.F.; Wang, S.C.; Liu, H.P.; Liu, Z.J.; Sun, F.C. Scene modeling and autonomous
navigation for robots based on kinect system. Robot 2012, 34, 581 –589.
21) Wang, C.; Liu, Z.; Chan, S.C. Superpixel -Based Hand Gesture Recognition with Kinect
Depth Camera. Trans. Multimed. 2015, 17, 29 –39.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 122
22) Sinop, A.K.; Grady, L. A Seeded Image Segmentation Framework Unifying Graph Cuts
and Random Walker Which Yields a New Algorit hm. In Proceedings of the IEEE 11th
International Conference on Computer Vision (ICCV), Rio de Janeiro, Brazil, 14 –20
October 2007; pp. 1 –8.
23) Grady, L. Multilabel random walker image segmentation using prior models. In
Proceedings of the IEEE Computer Soci ety Conference on Computer Vision and
Pattern Recognition (CVPR’05), San Diego, CA, USA, 20 –26 June 2005; pp. 763 –770.
24) Couprie, C.; Grady, L.; Najman, L.; Talbot, H. Power watersheds: A new image
segmentation framework extending graph cuts, random walker and optimal spanning
forest. In Proceedings of the IEEE 12th International Conference on Computer Vision
(ICCV), Kyoto, Japan, 27 September –4 October 2009; pp. 731 –738.
25) Varun, G.; Carsten, R.; Antonio, C.; Andrew, B.; Andrew, Z. Geodesic star convexity fo r
interactive image segmentation. In Proceedings of the IEEE CVPR, San Francisco, CA,
USA, 13 –18 June 2010; pp. 3129 –3136.
26) Ju, Z.; Liu, H. A Unified Fuzzy Framework for Human Hand Motion Recognition. IEEE
Trans. Fuzzy Syst. 2011, 19, 901 –913. 15. Xu, Y.; Yu, G.; Wang, Y.; Wu, X.; Ma, Y. A
Hybrid Vehicle Detection Method Based on Viola -Jones and HOG + SVM from UAV
Images. Senso rs 2016, 16, 1325.
27) Fernando, M.; Wijjayanayake, J. Novel Approach to Use Hu Moments with Image
Processing Techniques for Real Time Sign Language Communication. Int. J. Image
Process. 2015, 9, 335 –345.
28) Chen, Q.; Georganas, N.D.; Petriu, E.M. Real -time vi sion-based hand gesture
recognition using haar -like features. In Proceedings of the EEE Instrumentation &
Measurement Technology Conference IMTC, Warsaw, Poland, 1 –3 May 2007; pp. 1 –
6.
29) Sun, R.; Wang, J.J. A Vehicle Recognition Method Based on Kernel K -SVD and Sparse
Representation. Pattern Recognit. Artif. Intell. 2014, 27, 435 –442.
30) Jiang, Y.V.; Won, B. -Y.; Swallow, K.M. First saccadic eye movement reveals persistent
attentional guidance by implicit learning. J. Exp. Psychol. Hum. Percept. Perform.
2014, 40, 1161 –1173.
31) Ju, Z.; Liu, H.; Zhu, X.; Xiong, Y. Dynamic Grasp Recognition Using Time Clustering,
Gaussian Mixture Models and Hidden Markov Models. Adv. Robot. 2009, 23, 1359 –
1371.
32) Bian, X.; Zhang, X.; Liu, R.; Ma, L.; Fu, X. Adaptive classification of hyperspectral
images using local consistency. J. Electron. Imaging 2014, 23, 063014.
33) Song, H.; Wang, Y. A spectral -spatial classification of hyperspectral images based on
the algebraic multigrid method and hierarchical segmentation algorithm. Remote
Sens. 2016, 8, 296.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 123
34) Hatwar, S.; Anil, W. GMM based Image Segmentation and Analysis of Image
Restoration Tecniques. Int. J. Comput. Appl. 2015, 109, 45 –50.
35) Couprie, C.; Najman, L.; Talbot, H. Seeded segmentation methods for medical image
analysis. In Medica l Image Processing; Springer: New York, NY, USA, 2011; pp. 27 –57.
36) Ba ´nbura, M.; Modugno, M. Maximum likelihood estimation of factor models on
datasets with arbitrary pattern of missing data. J. Appl. Econ. 2014, 29, 133 –160.
37) Simonetto, A.; Leus, G. Dist ributed Maximum Likelihood Sensor Network Localization.
IEEE Trans. Signal Process. 2013, 62, 1424 –1437.
38) Ju, Z.; Liu, H. Fuzzy Gaussian Mixture Models. Pattern Recognit. 2012, 45, 1146 –1158.
[CrossRef] 28. Zhang, Y.; Brady, M.; Smith, S. Segmentation of brain MR images
through a hidden Markov random field model and the expectation -maximization
algorithm. IEEE Trans. Med. Imaging 2001, 20, 45 –57.
39) Song, W.; Cho, K.; Um, K.; Won, C.S.; Sim, S. Intuitive terrain reconstruction using
height observation -based ground segmentation and 3D object boundary estimation.
Sensors 2012, 12, 17186 –17207.
40) Wei, S.; Kyungeun, C.; Kyhyun, U.; Chee, S.; Sungdae, S. Complete Scene Recovery
and Terrain Classification in Textured Terrain Meshes. Sensors 2012, 12, 11221 –
11237.
41) Liao, L.; Lin, T.; Li, B.; Zhang, W. MR brain image segmentation based on modified
fuzzy C -means clustering using fuzzy GIbbs random field. J. Biomed. Eng. 2008, 25,
1264 –1270.
42) Kakumanu, P.; Makrogiannis, S.; Bourbakis, N. A survey of skin -color modeling a nd
detection methods. Pattern Recognit. 2007, 40, 1106 –1122.
43) Lee, G.; Lee, S.; Kim, G.; Park, J.; Park, Y. A Modified GrabCut Using a Clustering
Technique to Reduce Image Noise. Symmetry 2016, 8, 64.
44) Ning, J.; Zhang, L.; Zhang, D.; Wu, C. Interactive ima ge segmentation by maximal
similarity based region merging. Pattern Recognit. 2010, 43, 445 –456.
45) Cornel, B., „ Roboti Bipezi structura, cinematica” , Editura „ Dacia” , 1998.
46) Carlos, A., Filho, P., „ Biped Robots”, „Intech” , 2011.
47) Harada, K., Yoshida, E., Yokoi, K., „ Motion planing for humanoid Robots”,Springer –
Verlag London , 2010
48) Davidovici u, A., Drăgan, Gh., Moangă, A., „ Modelarea, simularea și comanda
manipilatoarelor și roboților industrie”, E ditura „Tehnică Bucureșt”, 1986.
49) Dmitry Kaynov – „Open motion control architecture for humanoid robots” , „LAP
Lambert Academic Publishing”, 2010.
50) Jimmy O., „ A hybrid CPG_ZMP control system for stable walking of a simulated
flexiblespine humanoid robot” , „Neural Networks ”, Vol. 23, pp. 452 -460, 2010.
51) Low, D., „ Active Balance for a Humanoid Robot”, „University of Queensland,
Bachelor thesis” , 2003.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 124
52) Mario R., A., S., „ Stable locomotion of humanoid robots based on mass concentrated
model”, Ph.D. Thesis, Univerity Carlos III de MadridDepartment of System and
Automation En gineering ”, 2008.
53) Medved, V., „ Measurement of human locomotion” , „CRC Presss, New York”, 2001.
54) Ion, N., „ Robo ți păș itor” , „Bucuresti: Bren ”, 2001.
55) Iuliu, N., Ioan, V., Nicolae, H., „ Robotica Modelarea Cinematica si Dinamica”,
Editura „Didactica si pedagocica ”, 1997.
56) https://en.wikipedia.org/wiki/Zero_moment_point
57) https://despretot.info/forta -centrifuga -definitie/
58) Stefa n, C., „ Analiza teoretica si experimentala a stabilitatii la deplasare a robotiilor
„lucrarea de licență la Universitatea Transilvania din Brașov”, 2012.
59) Viorel H.L., Maties, V., Cornel, B., „ Roboți Srtuctură cinematică și caracteristici ”,
Editura „Dacia C luj-Napoca ”, 1996.
60) http://www.robotics.ucv.ro/master/pdf/Modele geometrice si cinematice.pdf .
61) http://www.sfu.ca/~stever/kin840/lecture_outlines/lecture_6_posture.pdf .
62) http://www.worldsciboo ks.com/etextbook/5305/5305_chap1.pdf .
63) http://www.kistler.com/mediaaccess/9286B_BP__000 -713e -05.10.pdf .
64) T.McGeer, Pasive dynamic walking, Int. J. Robot Res.,Vol. 9,no 2. (1990) 62-82.
65) Shuuji Kajita, Tomio Yamaura and Akira Kobayashi, Dynamic walking control of a
biped robot along a potiential energy conserving orbit, IEEE Trans. Robot Automat.
Vol. 8, no. 4.
66) Y. Zheng and J.Shen, Gait synthesis for the SD -2 biped robot to climb sl oped surface,
IEEE, Trans. Robot Automat. Vol 6, no 1. (1990) 86 -96.
67) W. T. Miller, III, Real -time neural network control of a biped walking robot, IEEE
contr. Syst., vol. 14 (1994) 41 -48.
68) Ching -Long Shih, Ascending and descending stairs for a biped robot, IEEE Trans.
Syst., Man. Cyb., vol 29, no. 3 (1999).
69) C. L. Shih, W. A. Gruver, and T.T Lee, Inverse kinematics and inverse dynamics for
control of a biped walking machine, J. Robot. Syst. Vol., 10, no 4 (1993) 531 -555.
70) C. L. Shih and C. J. Chiou, The motion control of statically stable biped robot on
uneven floor, IEEE Trans. Syst. Man. Cyber., vol. 28, no. 2. 1999.
71) C. L. Shih, Y. Z. Li, S. Churng, T. T. Lee and W. A. Cruver, Trajectory synthesis and
physical admissibility for a biped robot during the single support phase, in Proc. 1990
IEEE Int. Conf. Rob. And Autom. (1990) 1642 -1652.
72) J. Pratt, Chee -Meng Chew; Ann Torres, Peter Dilworth and Gill Pratt, Virtual model
control: an intuitive approach for bipedal locomotion, Int. Jon. Ro. Res., vol. 20, no 2,
129-143
73) Jerry E. Pratt and Gill A. Pratt, Exploiting natural dynamics in the control of a 3D
bipedal walking simulation, Int. Conf. On Climbing un Walking Robots, Portsmouth,
UK, September (1999).
74) J. H. Park, Impedance control for biped robot locomotion, IEEE Trans. Rob. Aut., vol.
17, no. 6 (2001), 870 -882.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 125
75) Shuuji Kajita and Kazuo Tani, Experimental study of biped dynamic walking, IEEE
Cont. Sys. (1996).
76) M. Vukobratovic and D. Juricic, Contribution to the synthesis of biped gait, IEEE
Trans. Bio -Med. Eng., vo l. BME -16, no. 1 (1969) 1 -6.
77) M. Vukobratovic, How to control artificial anthropomorphic system, IEEE Trans.
Syst. Man. Cyb., vol. SMC -3, no. 5 (1973) 497 -507.
78) A. Takanishi, M. Ishida, Y. Yamazaki and I. Kato, The realization of dynamic walking
robot WL -10RD, in Proc. 1985 Int. Conf. Advanced Robotics (1985) 459 -466.
79) K. Hiria, M Hirose, Y. Haikawa, and T.Takenaka, The development of Honda
Humanoid robot, in IEEE Int. Conf. Rob. and Aut. (1998) 1321 -132.
80) K. Hiria, The Honda Humanoid robot, in Proc. 1997 IEEE -RSJ Int. Con. Intelli. Rob.
Sys., Grenobe, France. (1997) 499 -508.
81) Q. Huang , K. Yokoi, S. Kajita, K. Kaneko, H. Arai, N. Koyachi and K. Tanie,
Planning walking patterns for a biped robot, IEEE Trans. Rob. Aut., vol.17,no. 6
(1998).
82) J. Furuscho and A. Sano, Sensor -based control of a nine link biped, Int. J. Robot Res.,
vol. 9, no. 2 (1990) 83 -98.
83) P. Sardain, M. Rostami and G. Bessonet, An anthropomorphic biped robot: dynamic
concepts and technological design, IEEE Trans. Syst. Man. Cyber., vol. 22, no. 6
(1998).
84) T. McMahon, Mechanics of locomotion, Int. J. Robot. Res., vol. 3, no. 2 (1994) 4 -28.
85) R. Goddard, Y. Zheng and H. Hemami, Control of the heel -off to toe -off motion of a
dynamic biped gait, IEEE Trans. Syst. Man. Cayb., vol.22, no. 1 (1992).
86) Y. Zeh ng, Acceleration compensation for biped robots to reject external disturbances,
IEEE Trans. Sys. Man. Cyb. vol. 19, no. 1 (1989).
87) N. Kanehira, T. Kawasaki, S. Ohta, T. Isozumi, T. Kawada, F. Kanehiro, S. Kajita and
K. Kaneko, Design and experiments of advanced module (HRPL -2L) for humanoid
robot (HRP -2) development, Proc. 2002, IEEE -RSJ Int. Conf. Intell. Rob. Sys. EPFL,
Lausanne, Switzerland (2002) 2455 -2460.
88) A. Konno, N. Kato, S. Shirata, T. Furuta and M. Uchiyama, Development of a light –
weight biped humanoid robot in Proc. 2000 IEEE -RSJ Int. Con. Intell. Rob. Sys.
(2000) 1565 -1570
89) J. Yamaguchi, E. Soga, S. Inoue and A. Takanishi, Development of a biped robot –
control method of a whole body cooperative dynamic biped walking, in Proc. 1999
IEEE Int. Conf . Robot. And Aut., Detroit, Michigan (1999) 368 -374.
90) G. Taga, Y. Yamaguchi and H. Shimizu, Self -organized control of bipedal locomotion
by neural oscilators in unpredictable environment, Biol. Cyb. 65 (1991) 147 -165.
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 126
Anexe
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 127
ROBOT UMANOID
PLEȘCA Robert Marius
PURU ȘNIUC Sebastian Pagină 128
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: PLEȘCA Robert Marius [631187] (ID: 631187)
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.
