Documente Academic
Documente Profesional
Documente Cultură
Intelligent Mobile Walking Robots Cooperation System in Industrial Environments
Intelligent Mobile Walking Robots Cooperation System in Industrial Environments
RP
(poziia iniial)
OBIECT
(punct iniial)
OBIECT
(punct final)
Eliberare
Deplasare cu
braele
Traseu robot cu obiect
Traseu robot fr
obiect
Fig. 3.3 Procesul de manipulare a unui obiect cu RP
Capitolul 3
50
Y
Punct
final
0
Yo
Xo
0
I
Xo
Y
o
Xo3
Yo1
f
(Xo, Yo,)
Obiect 1
Obiect 2
Obiect 3
(Xo1, Yo1,o1)
(Xo3, Yo3,o3)
(Xo2, Yo2,o2)
Xo2 Xo1 Xf
Yf
Yo2
Yo3
RP1
Fig. 3.4 Poziionarea i orientarea RP i a obiectelor n
mediul de lucru
c. A treia etap, de manipulare local final, presupune deplasarea obiectului cu o
mn sau cu ambele mini n spaiul de operare robot, urmat de eliberarea acestuia
n punctul final.
n cazul distanelor de deplasare mici, comparabile cu lungimea braelor robotului,
etapa b de manipulare n micare poate lipsi i procesul de manipulare se va reduce la
manipularea local cu preluarea (apucarea) obiectului, deplasarea doar cu braele i aezarea
(eliberarea) acestuia n alt punct.
n majoritatea cazurilor de manipulare a obiectelor cu RP poziiile iniiale ale acestora
nu sunt ns identice cu poziiile iniiale ale obiectelor de manipulat (fig.3.3). Astfel, pentru
derularea procesului de manipulare, se impune o etap preliminar de localizare-poziionare,
ce presupune detectarea i precizarea poziiei (distanei) obiectului fa de RP urmat de
deplasarea acestuia pn la obiectul de manipulat.
3.3 MANIPULAREA OBIECTELOR DE CTRE ROBOII
PITORI
3.3.1 LOCALI ZAREA OBI ECTELOR DE MANI PULAT
Pentru a realiza eficient sarcini ntr-un mediu dinamic, un RP trebuie s fie capabil s
detecteze obiectele din mediul su de aciune i s le identifice [Belongie, 2002;
Malisiewicz,2011]. Un robot care are capabilitatea s recunoasc obiectele n mediul de lucru
i s rein informaii i date despre acestea, duce la dezvoltarea unei hri [Meger, 2008]. n
lucrarea [Shubina, 2010] este prezentat o soluie i o aplicaie practic care ajut la
localizarea unui obiect ntr-un spaiu n mare parte necunoscut de ctre un robot mobil,
utiliznd un mecanism de urmrire vizual care ajut la optimizarea procesele de cutare a
obiectelor. Urmrirea micrii obiectelor n timp real de ctre robotul mobil este prezentat
de [Jung, 2010] care propune i evalueaz un set de algoritmi de urmrire a micrilor
multiple folosind o camer video mono-ocular i un detector de distan cu laser. Problemele
cheie soluionate: compensarea micrii robotului pentru a detecta micri externe a acestuia
i rezolvarea zgomotului pentru a permite o urmrire robust a micrilor. O alt metod de
urmrire a intelor mobile aflate n mediul nconjurtor robotului folosete modele pentru
recunoaterea att a intelor, ct i a fundalului bazate pe sistem vision [Zhang, 2010].
Localizarea obiectelor n mediul de lucru de ctre RP reprezint procesul cu ajutorul
cruia este detectat poziia i
determinat distana pn la
acesta. n cazul n care se
dorete elaborarea unui
program de deplasare/navigare
a robotului n mediu de lucru,
problema localizrii este
esenial. Pentru localizarea
robotului Nao s-a definit un
sistem de coordonate (fig. 3.4)
asociat robotului reprezentat
printr-un vector v= [x, y, ],
unde x i y reprezint
coordonatele carteziene ale
centrului robotului i este
unghiul de orientare.
Calea/traseul unui robot n
Modelarea manipulrii obiectelor cu roboi mobili pitori
51
Fig. 3.5 Markere de localizare
mediul de lucru implic cunoaterea
valorilor coordonatelor unui numr de
vectori asociai punctelor de atins.
Pentru experimentele dezvoltate
cu RP de tip Nao n cadrul acestei
lucrri, localizarea obiectelor n mediul
de lucru s-a realizat cu ajutorul unor
markeri de tip Naomarks (fig.3.5).
Markeri Nao sunt discuri circulare care
au n interiorul lor un set de arii
(sectoare) triunghiulare poziionate
unghiular diferit. Roboii Nao dispun de un algoritm implementat ca program distinct, care
detecteaz aceste markere i returneaz informaii despre acestea. Acest algoritm detecteaz
forma prin mprirea discurilor n funcie de dimensiunile ariilor detectate din cadrul
markerului. Diferena dintre markere este dat de poziia unghiular a triunghiurilor.
Aceste markere pot fi amplasate n locaii diferite n mediul de lucru. Odat marker-ul
detectat de ctre robot se obin i informaii cu privire la locaia acestuia n mediul de lucru i
cel mai important lucru, distana robotului pn la marker. Localizarea makerilor folosete
modulul vision.
Ca urmare a testelor efectuate s-a constatat c este posibil detectarea tuturor obiectelor
n mediul de lucru atta timp ct pe acestea se gsesc amplasai markerii specifi. Acetia pot fi
amplasai n orice poziie i orientare n raport cu direcia de micare a robotului. Detectarea
cu o precizie mai bun presupune amplasarea mai multor markeri pe suprafaa aceluiai
obiect. Procesul de detectare a obiectelor de ctre roboii Nao se realizeaz parcurgnd
urmtoarele faze:
a. Scanarea mediului de lucru prin rotirea robotului i a capului acestuia.
b. Detectarea marker-ului cu ajutorul camerelor video ale robotului i preluarea
informaiilor (fig. 3.6) legate de codul marker-ului (marcat n partea din stnga sus),
unghiurile (pentru camera de sus), (pentru camera de jos), unghiul (de
orientare), poziia (sus-jos, stnga-dreapta) i forma acestuia (sizeX, sizeY).
c. Procesarea informaiilor captate de la camerele video pentru determinarea distanei
de la robot la marker i unghiul de orientare necesar la sosire.
n figura 3.7 este prezentat imaginea markerului identificat de ctre sistemul vision.
Atunci cnd se ajunge la faza c, toate informaiile culese despre obiectul de manipulat sunt
transmise pentru calculul distanei robot-obiect i pentru a ncepe aciunea de deplasare.
RP1
Returneaz informaii
Procesare
Controler
robot
Obiect
CV1
CV2
Fig. 3.6 Procesul de identificare Vision cu markeri
Capitolul 3
52
Algoritmul FindNaoMark (fig. 3.8)
realizeaz localizarea obiectelor n mediul
de lucru, cutnd markerul prin pai
succesivi ntr-un cmp circular cu
deschiderea de 360
o
. Procesul de localizare
pornete cu iniializarea robotului, ridicarea
acestuia n poziia de mers i alocarea n
memorie a codului markerului. n cazul n
care n timpul scanrii mediului de lucru
markerul este identificat de ctre sistemul
vision, se va evalua poziia i orientarea
robotului, dup care se trimit informaiile
preluate mai departe, pentru calcularea
distanei pn la obiect. n caz contrar, cnd
marker-ul nu este identificat se continu
cutarea, dar nu nainte de a se testa dac este atins starea final, n care robotul s-a rotit deja
cu 360
o
. n cazul n care nu s-a atins starea final, se reia algoritmul de cutare dup ce
robotul se rotete cu 90
o
grade la stnga.
n timpul cutrii
obiectelor n mediul de lucru
de ctre robot, acesta
efectueaz o deplasare a
capului de la dreapta la stnga
i de la stnga la dreapta, de
sus n jos, efectund astfel o
micare care i permite
localizarea obiectelor chiar
daca acestea se afla pe jos, la
nlimea camerelor sau mai
sus. n cazul n care marker-ul
cutat nu este identificat,
algoritmul se oprete i revine
cu un mesaj de atenionare
(fig. 3.8). Aceast succesiune,
prezentat la nivel de meta-
limbaj n alg. 3.1 este
transpus n mediul Visual
Studio (anexa 2).
Alg. 3.1 Funcia de localizare a markerelor (FindNaoMark)
function robot= FindNoaMark (markID, robotIP, robotPort, marksize)
{
< Validare parametrii intrare >
< Iniializarea parametrii funciei i cei ai robotului [robotIP, robotPort] >
< WHILE (totalul rotaiei robotului < 360grade) AND (Marker-ul nu a fost gsit) >
{
< Calculeaz parametrii strii curente >
Fig. 3.7 Imaginea markerului recepionat de
sistemul vision
Start
Inializarea
RP
Cutare
marker
Marker
identificat?
Total rotaie
< 360 grade
ntoarcere
90grade stnga
Identificarea
poziiei RP
Evaluarea
distanei
Marker
neidentificat
Sfrit
NU
NU
DA
DA
Fig. 3.8 Schema logic a algoritmului de localizare
Modelarea manipulrii obiectelor cu roboi mobili pitori
53
< ncepe cutarea marker-ului >
Se ncepe cu deplasarea
capului de la dreapta la stnga la nivelul ochilor robotului
capului de la stnga la dreapta la un nivel superior nivelului ochilor robotului
capului de la dreapta la stnga la un nivel inferior nivelului ochilor robotului
< IF markID nu a fost identificat >
{
<ntoarce stnga 90 grade>
<Calculare stare curent>
}
< ELSE >
{
< Soluie >
< Se oprete din cutare>
< Trimite mesaj sistemului c a fost identificat >
< Culege informaiile legate de coordonatele markID-ului i
cu funcia de la Alg.4.1 se calculeaz distana robotului
pn la acesta folosind marksize>
< MarkID identificat>
}
}
< IF MarkID nu a fost identificat >
< Returneaz un mesaj de eroare >
}
Algoritmul de detectare a markerilor conform schemei logice din fig. 3.8 i funciei
FindNaoMark (alg. 3.1) a fost implementat i n mediul de programare grafic Choregraph
(fig. 3.9), utiliznd blocuri predefinite, blocuri nou create i blocuri existente modificate
conform procesului.
Fig. 3.9 Programarea grafic a procesului de localizare n mediul de lucru
3.3.2 DETERMINARE DISTANEI ROBOT- OBI ECT
Pentru reconstruirea spaiului tridimensional adiacent robotului s-a folosit un sistem de
vedere stereo binocular clasic cu dou camere video poziionate fix pe faa RP. Acest
sistem permite corelarea imaginilor de la cele dou camere i realizeaz toate calculele
necesare reconstruciei tridimensionale bazat pe un model al geometriei camerelor.
Capitolul 3
54
Metoda clasic de
realizare a vederii stereo
utilizeaz dou camere
video, aezate la o anumit
distan cunoscut una de
cealalt. n fig. 3.10 este
prezentat principiul general
al vederii stereo, care const
n capturarea simultan a dou
imagini ale obiectului/intei
de la fiecare camer video.
Punctul O este centrul
marker-ului pn la care
urmeaz s se determine
distana D. Punctele C
U
i C
D
reprezint centrele de
proiecie ale celor doua camere video ale robotului. Dac s-ar lua n considerare doar poziia
imaginii punctului O din planul imagine al camerei de sus (C
U
), atunci punctul O s-ar afla la o
distan nedefinit de pe segmentul OC
U
i astfel se impune luarea n considerare i a imaginii
camerei de jos (C
D
). Odat identificat poziia punctului O n planul imagine al camerei din
partea de jos, se identific punctul de intersecie al celor dou direcii i apoi prin calcul se
determin distana la care se afl obiectul O.
Metoda descris mai sus poart numele de metoda triangulaiei (fig. 3.11) i s-a
aplicat pentru calculul distanei de la robotul pitor la poziia obiectelor din mediul de lucru.
Notnd cu d
o
distana dintre cele dou camere a robotului (de sus i de jos), cu ,
unghiurile direciilor camerelor video, c
d
i c
u
distana de la camera de sus, respectiv camera
de jos pn la obiect i cu D, distana dintre punctul O i linia pe care sunt aezate camerele,
din relaiile,
, (3.1)
( ) (3.2)
rezult distana de la camera de jos pn la
obiect,
, (3.3)
Cunoscnd distana d
o
i unghiurile
i determinate n urma procesului de
localizare (fig. 3.6) din relaiile (3.2) i (3.3)
se obine relaia de calcul a distanei,
(3.4)
CU
CD
O
O
X
Y
D
Fig. 3.11 Schema de calcul a distanei
Modelarea manipulrii obiectelor cu roboi mobili pitori
55
3.4 DEPLASAREA ROBOTULUI PN LA OBI ECT
Deplasarea robotului pn la obiect odat ce acesta a fost localizat se face dup o
traiectorie liniar.
n cazul distanelor mari (mai mari de 0,5 m) din cauza alunecrilor de pire, jocurilor
mecanice i instabiliti sistemului de comand i control apar deviaii de la traiectoria liniar
a robotului. Din cauza acestor abateri pot aprea deviaii de poziionare inadmisibile pentru
operaii de manipulare. Astfel, se impune corecia pe parcursul deplasrii, n vederea revenirii
la traiectorie liniar impus (fig. 3.12). n urma coreciilor, traiectoria programat se
transform ntr-un zig-zag, care prezint abateri mult reduse. n consecin procesul de
deplasare a RP pn la int se poate realiza bazat pe dou metode diferite , una pentru
distane mai mici de 0,5m, iar cea de-a doua pentru cele mai mari.
Metoda de deplasare 1 (cu calibrare iniial) a robotului pn la int, folosete o
funcie robot care dispune de un apel de blocare, ceea ce nseamn c execuia (deplasarea) se
va face fr oprire pn la int. Dup ce robotul msoar distana pn la punctul final, el
ncepe deplasarea la coordonatele detectate, fr a fi capabil de a actualiza coordonatele intei
pe parcursul deplasrii. n urma testelor de deplasare efectuate pentru distane diferite i
evalurii preciziei de atingere a intei s-a obinut pentru deplasri pe distan de 0,5m erori de
poziionare de maxim 2 cm care pentru operaiile de manipulare sunt acceptabile. n cazul
acestei metode, actualizarea poziiei este posibil numai n cazul n care robotul se oprete
pentru un moment, fapt ce ncetinete deplasarea robotului.
Metoda de deplasare 2 (cu recalibrri pe parcurs) (fig. 3.12), folosete un modul ce
funcioneaz similar cu cel de la metoda1 cu deosebirea c n acest caz i se permite robotului
s actualizeze poziia intei n timpul deplasrii. n plus, n acest caz este folosit o proprietate
care permite un mers mai lent atunci cnd se apropie de obiect, astfel nct poziia s poat fi
msurat ct mai precis. Metod este apelat n aplicaie des, astfel nct datele msurate s
fie suficient de precise pentru a merge exact la punctul int.
ntregul algoritm de deplasare a roboilor a fost integrat n funcia GotoNaomark,
care realizeaz deplasarea pn la 50 cm distan de obiectul identificat n mediul de lucru.
Algoritmul de deplasare pornete cu iniierea unei noi iteraii i apelarea funciei
FindNaomark. n urma rulrii acestei funcii, n cazul identificrii unui obiect se continu cu
urmtorul pas care presupune deplasarea
propriu-zis a robotului. Odat ce
distana i direcia pn la Naomark este
cunoscut de robot, dar nu nainte de a
testa dac este atins starea final (n
care robotul se afla la 50 cm de obiect),
se recalculeaz traiectoria robotului Nao
de deplasare dup care robotul ncepe s
se deplaseze.
n cazul n care nu se
nregistreaz nici un obiect, algoritmul
se oprete i revine cu un mesaj
(fig.3.13.). Aceast succesiune,
prezentat la nivel de meta-limbaj n
alg. 3.2 este programat n mediul
Visual Studio (anexa 3).
(XR, YR)
(Xn, Yn, n)
Traiectorie
intermediar
Traiectorie
programat
Recalibrarea traiectoriei
Obiect
Poziie final
Fig. 3.12 Deplasarea robotului pn la obiect
Capitolul 3
56
Alg. 3.2 Algoritmul GotoNaomark
function robot= GotoNaomark (markID, robotIP, robotPort, marksize, stopDistance,
advanceDistance)
{
< WHILE (user cancel)>
{
< Apelarea funciei FindNaomark >
<IF markID identificat >
{
< Validare parametrii intrare >
< Iniializarea parametrii funciei i cei ai robotului >
< Citete din memorie datele legate de poziia markID-ului >
< Alinierea cu marker-ul>
< Calcularea distanei pn la obiect>
<IF distana de deplasare D>0,5m)>
<IF distana robotului pn la markID <= stopDistance)>
{
Break while;
}
ELSE
{
< Avanseaza spre markID cu o distan egal cu advanceDistance >
}
}
ELSE {< Deplasare pe traectorie final> }
}
}
Start
Distana de
deplasare
D > 0,5m
Deplasare pe traectorie
liniar intermediar
Obiectul nu a fost
gsit
Deplasare pe traectorie
final
Sfrit
Obiect identificat?
(Findnaomark)
Calculeaz distana
pn la obiect
DA NU
NU
DA
Fig. 3.13 Schema bloc a algoritmului de deplasare pn la obiect
Modelarea manipulrii obiectelor cu roboi mobili pitori
57
3.5 MANIPULAREA LOCAL A OBI ECTELOR CU RP
3.5.1 CAPABILITILE DE MICARE ALE RP NAO
n vederea construirii secvenelor elementare de manipulare a fost nevoie de
cunoaterea n prealabil a micrilor ce le compun. Astfel, fiecare sarcina elementar a RP are
o structur similar, fiind compus dintr-un numr de faze, care la rndul lor sunt compuse
din secvene nvate. Numrul fazelor i a secvenelor componente difer n funcie de
complexitatea sarcinilor i a operaiilor de realizat.
Pentru definirea i nvarea secvenelor elementare de manipulare se impune
cunoaterea gradelor de mobilitate ale cuplelor robotului (fig. 3.14) precum i a valorilor
limitelor unghiurilor acestora. Roboii Nao au 26 grade de mobilitate, dintre care 2 pentru cap,
12 pentru mini (6 pentru umr, 4 pentru cot, 2 pentru mn) i 12 pentru picioare (6 pentru
old, 4 pentru genunchi, 2 pentru glezn). n tab 3.1 se prezint valorile ale unghiurilor
cuplelor robotului.
Realizarea secvenelor elementare de manipulare implic micri a mai multor cuple
robot. Planificarea i programarea micrilor componente ale secvenelor elementare avnd n
vedere numrul mare de cuple cinematice (grade de mobilitate) participante este anevoioas i
n cazul micrilor complexe chiar imposibil de realizat.
n cadrul acestei lucrri s-a optat pentru varianta nvrii prin demonstrare a
secvenelor elementare, urmat de planificarea fazelor, sarcinilor i operaiilor compuse din
secvene elementare nvate anterior (anexa 5).
SR
ER
EY
WY
H
HP
HY
AR
AP
KP
HP
HR
HYP
SP
Fig. 3.14 Parametrii geometrici ai cuplelor robotului Nao
Capitolul 3
58
Tab.3.1 Parametrii geometrici asociai cuplelor RP Nao
Parametrul Denumirea parametrului
Limite [min,
maxim][]
SP
SR
EY
ER
WY
HP
HR
HP
HR
KP
HYP
AP
AR
unghiul de nclinare a umrului (ShoulderPitch )
unghiul de rotire a umrulu (ShoulderRoll )
unghiul de deviere a cotului (ElbowYaw)
unghiul de rotire a cotului (ElbowRoll)
unghiul de deviere ncheieturii minii (WristYaw)
unghiurile degetelor minii (Hand)
unghiul de nclinare a capului (HeadPitch)
unghiul de rotire a capului (HeadRoll)
unghiul de nclinare a oldului (HipPitch)
unghiul de rotire a oldului (HipRoll)
unghiul de nclinare a genunchiului (KneePitch)
unghiul de nclinare a bazinului (HipYawPitch)
unghiul de nclinare a gleznei (AnklyPitch)
unghiul de rotire a gleznei (AnklyRoll)
[ -119,5; 119,5 ]
[ -0,5 ; 94,5 ]
[ -119,5; 119,5 ]
[ 0,5 ; 89,5 ]
[ -104,5; 104,5 ]
[ 0 ; 1 ]
[ -119,5; 119,5 ]
[ -25,7 ; 18,9 ]
[ -101,6; 27,7 ]
[ -42,3 ; 25,8 ]
[ -5,3 ; -121,0 ]
[ -119,5; 119,5 ]
[ -68,0 ; 53,4 ]
[ -22,3 ; 45,0 ]
3.5.2 DEFINIREA SECVENELOR ELEMENTARE DE
MANI PULARE
3.5.2.1 NVAREA SECVENELOR ELEMENTARE DE MANIPULARE
LOCAL
Procesul de nvare a unei secvene elementare are loc prin conducerea cuplelor
robotului prin intermediul unui panel, joystick, tastaturi sau mouse, dup o traiectorie impus
i memorarea valorilor unghiurilor cuplelor a tuturor punctelor traiectoriei parcurse. nvarea
secvenelor de manipulare elementare a obiectelor cu roboii Nao, s-a realizat pentru fiecare
grup de obiecte de manipulat n parte, conform mrimilor i caracteristicilor acestora
(greutate, form i poziie). De exemplu n cazul manipulrii unei bare groase i scurt,
H=45
cm
D=4cm
H=35
cm
D=5.5cm
Fig. 3.15 Prinderea unui obiect de sus n jos
Modelarea manipulrii obiectelor cu roboi mobili pitori
59
robotul va fi nvat pentru micarea de prindere a barei de jos n sus i pentru
ridicarea/coborrea acesteia.
nvarea secvenelor elementare cu roboi offline presupune i optimizarea micrilor
de manipulare prin care se urmrete s se apropie de naturaleea celor umane. n tab. 3.2 se
prezint secvenele de manipulare local nvate de roboii Nao.
Tab. 3.2 Micri (secvene) elementare de manipulare locale (SL1..p)
Cod Denumire Descriere
SL1 Apucare din fa de jos n sus
Se poate utiliza atunci cnd obiectul este
poziionat pe un suport care permite
prinderea acestui de jos n sus
SL2 Apucare din fa de sus n jos
Se utilizeaz atunci cnd obiectul nu este
poziionat pe un suport care s permit
prinderea acestui de jos n sus
SL3 Apucare din stnga din interior
Se utilizeaz atunci cnd spaiul de lucru nu
permite prinderea obiectului din fa sau din
partea dreapt i acesta se afl poziionat
suport care permite apucarea din interior
SL4 Apucare din stnga din exterior
Se utilizeaz atunci cnd spaiul de lucru nu
permite prinderea obiectului din fa i
acesta este nu se afl pe un suport care s
permit apucarea din interior
SL5 Apucare din dreapta de jos n sus
Se utilizeaz atunci cnd prinderea
obiectului se poate realiza doar din partea
dreapt a robotului atunci cnd acesta se afl
pe un suport.
SL6
Apucare din dreapta de sus n
sus
Se utilizeaz atunci cnd prinderea
obiectului se poate realiza doar din partea
dreapt a robotului atunci dar cnd acesta nu
se afl suport care s permit apucarea de jos
n sus
SL7 Ridicare din fa
Se utilizeaz atunci cnd obiectul nu dispune
de mnere pe prile laterale i ridicarea se
face pe brae
SL8 Ridicare din lateral
Se utilizeaz atunci cnd obiectul are mnere
pe prile laterale
SL9 Flexare/poziionare prindere jos
Se utilizeaz atunci cnd obiectul de
manipulat este poziionat mai jos de braele
robotului.
SL10 Rotire stnga bazin
Se utilizeaz atunci cnd nu se dorete
deplasarea robotului ci doar rotirea lui ctre
stnga
SL11 Rotire dreapta bazin
Se utilizeaz atunci cnd nu se dorete
deplasarea robotului ci doar rotirea lui ctre
dreapta
SL12 Rotire cap
Se utilizeaz atunci cnd e nevoie de
monitorizare
Capitolul 3
60
Valorile unghiurilor cuplelor (exprimate n radiani) pentru cazul prinderii unei bare cu
diametrul de 4cm de sus n jos sunt (pentru mana stng, pentru cea dreapt se iau valorile
prin simetrie):
SP
= 1,1219;
SR
= 0,23577;
EY
= -0,640911;
ER
= -1,66816;
WY
=
1,614222;
WY
= 0,557111;
H
= 0,731223.
n funcie de parametrul
de intrare care indic
diametrul obiectului de
manipulat unghiul de prindere
al minii (
H
) variaz direct
proporional cu aceast
valoare i se ntinde pe o plaj
de la 0 (pentru cel mai mic
diametru) pn la 1 (obiecte
cu diametrul de 5cm). Pe
lng parametrul ce indic
diametrul obiectului de
manipulat se specific
nlimea la care se afl
obiectul relativ la podea.
nlimile la care pot fi
amplasate obiectele pot avea
valori de la 0cm (planul solului) pn la aproximativ 60cm. n acest caz unghiul de nclinare a
genunchiului i cel de rotire i nclinare a oldului se modific ntre [-119,5; 119,5 ].
Pentru manipularea obiectelor amplasate la nlimi cu H<=35cm , roboii au fost
nvai s flexeze genunchii pentru a putea prinde bara de sus n jos. Valorile unghiurilor
cuplelor pentru cazul H=35cm sunt urmtoarele:
HP
= 0;
HR
= 0;
HYP
= -0,4361111;
KP
=
1,6572222;
AP
= -1,1862222;
AR
= 0 exprimate n rad.
n fig. 3.16 este prezentat simularea pentru prinderea unor obiecte pe partea stng
aflate la diverse nlimi. Ca i n cazul precedent i aceast secven depinde de cei doi
parametrii de intrare: nlimea la care se afl obiectul relativ la podea i diametrul acestuia.
Astfel n cazul n care d=5cm i H=45cm valorile unghiurilor exprimate n rad sunt
SP
=
0,3659;
SR
= 0,16534;
EY
= -1,240661;
ER
= -0,668166;
WY
= -1,334982;
WY
= 0 ;
H
= 1;
HP
= 0,1776;
HR
= 0;
HYP
= -0,3354211;
KP
= 1,35755432;
AP
= -1,0861112;
AR
= 0,1.
3.5.1.2 NVAREA SECVENELOR ELEMENTARE DE MANIPULARE N
MICARE
Dac numrul de secvene elementare dezvoltate i nvate de roboii pitori pentru
manipularea local este mare, n
cazul manipulrii n micare
numrul acestora este redus doar
la cele locale de micare, dar i la
secvene de micare ale robotului.
Astfel, printre secvenele de
manipulare n micare nvate de
RP Nao se prezint urmtoarele:
SM1-ridicarea obiectelor din fa
(fig. 3.17); SM2- ridicarea
obiectelor pe partea dreapt; SM3-
ridicarea obiectelor pe partea
H=35cm
H=45cm
d=5cm d= 2cm
Fig. 3.16 Prinderea din stng a obiectelor
Fig. 3.17 Ridicarea unui obiect n timpul micrii
Modelarea manipulrii obiectelor cu roboi mobili pitori
61
stng; SM4- coborrea obiectelor din fa; SM5 - coborrea obiectelor pe partea dreapt;
SM6 - coborrea obiectelor pe partea stng; SM7 - apropierea obiectelor din fa; SM8 -
ndeprtarea obiectelor de corp din fa.
Fig. 3.18 Apropierea unui obiect n timpul deplasrii
Tab. 3.3 Micri (secvene) elementare de manipulare n micare (SM1...q)
Cod Denumire Descriere
SM1
Ridicarea obiectelor din fa
n micare
Se utilizeaz atunci cnd se dorete ridicarea
obiectului n mers din fa.
SM2
Ridicarea obiectelor pe partea
dreapt
Se utilizeaz atunci cnd se dorete ridicarea
obiectului n mers de pe partea dreapt.
SM3
Ridicarea obiectelor pe partea
stng
Se utilizeaz atunci cnd se dorete ridicarea
obiectului n mers de pe partea stng.
SM4 Coborrea obiectelor din fa;
Se utilizeaz atunci cnd se dorete coborrea
obiectului n mers i obiectul se afl n fa.
SM5
Coborrea obiectelor pe
partea dreapt;
Se utilizeaz atunci cnd se dorete coborrea
obiectului n mers i obiectul se afl transportat pe
partea dreapt.
SM6
Coborrea obiectelor pe
partea stng;
Se utilizeaz atunci cnd se dorete coborrea
obiectului n mers i obiectul se transportat pe
partea stng.
SM7 Apropiere n micare din fa
Se utilizeaz atunci cnd se dorete apropierea
obiectului n mers i obiectul se afl n fa.
SM8
Apropiere n micare din
lateral
Se utilizeaz atunci cnd se dorete apropierea
obiectului n mers i obiectul se afl transportat
prin lateral.
SM9
ndeprtarea obiectelor din
fa
Se utilizeaz atunci cnd se dorete ndeprtarea
obiectelor din fa
SM10 mpingere
Se poate utiliza atunci cnd spaiul de lucru nu e
limitat pe orizontal sau vertical.
Capitolul 3
62
SM11 Rotire robot
Se utilizeaz atunci cnd se dorete rotirea
robotului cu diferite obiecte.
3.5.3 TESTAREA I SIMULAREA ALGORITMILOR DE
MANIPULARE I DEPLASARE A OBIECTELOR
n fig. 3.19 este prezentat simularea pentru prinderea unui obiect de jos n sus a unei
bare n mediul Choregraph. n acest caz parametrii unghiurilor cuplelor braelor primesc
urmtoarele valori (exprimate n rad):
SP
= 1.3659;
SR
= 0.12734;
EY
= -1.440911;
ER
= -
0.96816;
WY
= -1.814222;
WY
= 0.
Valorile tuturor unghiurilor impuse de secvenele de manipulare a unui obiect sunt
preluate din mediul Choregraph (fig. 3.19), mediu care ne permite controlul, verificarea i
corectarea unghiurilor robotului Nao n orice poziie. Odat simulate i verificate secvenele
de micare, se stocheaz valorile unghiurilor cuplelor n baza de secvene de unde pot fi
folosite de fiecare dat cnd este nevoie (n structura diferitelor sarcini). n urma nvrii
tuturor acestor sarcini elementare, n baza de date proprie fiecrui robot se construiete un
tabel care conine informaii i notaii ale sarcinilor stocate (tab.3.2 i tab. 3.2).
Pentru a verifica eficacitatea algoritmilor propui pentru localizarea obiectelor i pentru
deplasare a roboilor Nao n mediul de lucru, au fost implementate diferite scenarii. Toi
algoritmii dezvoltai, de manipulare, deplasare sau localizare se asociaz cu secvene
elementare, care dup ce au fost testate n mediul virtual, au fost salvate n baza de secvene
comun, n vederea folosirii acestora pentru operaii viitoare. Pentru efectuarea testelor, au
fost stabilite urmtoarele personalizri: spaiul de lucru sub form de dreptunghi i markere cu
diametrul de 9,5cm cu numere: 64, 102, 104 i 96 poziionate la diferite nlimi i diferite
distane de robot.
Datorit faptului c n mediul virtual introducerea de makere nu a fost posibil, toate
testele algoritmului de localizare s-au realizat direct n mediul real, conform scenariului din
fig. 3.20. Dup cum se observ n aceast figur, poziia iniial a robotului relativ la marker
poate fi oricare, ns trebuie sa fie poziionat n raza robotului de detectare, adic nu mai
departe de 3m. Datorit complexitii algoritmului dezvoltat, se sigur oferit posibilitatea de
poziionare a marker-ului de la podea pn la o nlime de 1m.
Pentru testarea algoritmilor de manipulare i deplasare a roboilor, scenariile au fost
acelai ca n cazul celor de nvate, deoarece datele primite (coordonatele marker-ului) n
urma identificrii obiectelor din spaiul de lucru au devenit date de intrare pentru deplasare.
Astfel odat cunoscui aceti parametrii roboii ncep s se deplaseze la punctele fixe date. n
urma testelor realizate s-a verificat c roboii nu ajung la destinaie conform coordonatelor
date i s-au fcut evaluri de precizie de poziionare.
Modelarea manipulrii obiectelor cu roboi mobili pitori
63
Fig. 3.19 nvarea micrii de prindere de jos n sus
Fig. 3.20 Scenariu de operare pentru testare n mediul real
n fig. 3.21 se prezint scena virtual, inclusiv cu robotul virtual Nao din mediul
Webots de simulare i testare a secvenelor de manipulare nvate. n aceast scen se
observ bara de manipulat (definit conform caracteristicilor de lungime, greutate i densitate)
care este poziionat pe un suport paralelipipedic. Punctele de interesez pentru poziionarea
robotului n poziia dorit sunt preluate de robot din baza de secvene.
Condiia de lucru impetuos necesar ca aceti algoritmi sa funcioneze la capacitate
maxim a fost ca lumina din mediul de lucru sa fie suficient de puternic, astfel nct markeri
sa fie identificai de fiecare dat ct mai rapid i corect.
Odat simulate i verificate secvenele de micare, se stocheaz valorile unghiurilor
cuplelor n baza de secvene de unde pot fi folosite de fiecare dat cnd este nevoie (n
structura diferitelor sarcini). n urma nvrii tuturor acestor sarcini elementare, n baza de
date proprie fiecrui robot se construiete un tabel care conine informaii i notaii ale
sarcinilor stocate.
Capitolul 3
64
Fig. 3.21 Scen virtual de manipulare
3.6 CONCLUZI I
n acest capitol se prezint procesele de concepie i nvare a secvenelor elementare
de manipulare, deplasare i localizare a obiectelor de ctre RP n mediul de lucru, necesare
pentru construirea operaiilor unei echipe de roboi.
Toate secvenele elementare nvate de ctre roboi prin tehnica demonstrativ i
stocate ntr-o baz de secvene, stau la baza dezvoltrii de operaii complexe pe care roboii le
execut prin cooperare. Tehnica de nvare abordat a fost corelat i dezvoltat conform
caracteristicilor roboilor pitori Nao astfel:
- pentru sarcinile de localizare a obiectelor s-a optat pentru utilizarea markerilor Nao;
- pentru sarcinile de manipulare s-au construit faze formate din secvene elementare
nvate ale robotului;
- roboii au fost nvai micri elementare care au fost stocate n baza de secvene
pentru a putea fi folosite la planificare;
- pentru sarcinile de deplasare pn la obiectul de manipulat s-au conceput i dezvoltat
funcii de calcul a distanei (GotoNaomark);
Modelul de nvare a roboilor Nao traseele obiectelor manipulate este sigur deoarece
ia n considerare factori geometrici de apropiere (setai anterior) pentru evitarea coliziunilor i
n plus au fost testate i corectate n medii virtuale dedicate. n timpul proceselor de nvare a
secvenelor de manipulare au fost urmrite secven cu secven deplasrile braelor, viteza
acestora i nivelul de apropiere de elementele adiacente (supori, robot, obiecte etc.).
n cadrul ultimei etape s-au dezvoltat teste pornind de la diferite cazuri de localizare a
obiectelor n mediul de lucru i de manipulare a acestora. Testarea algoritmilor concepui i
dezvoltai s-a realizat i n mediul virtual Webots. n urma testelor realizate n mediul real
unele micri i poziii au fost corectate prin modificarea secvenelor nvate, pentru a obine
o precizie ct mai mare la manipularea obiectelor n mediul de lucru de ctre RP.
Pentru vizualizarea, simularea i testarea funcionrii ntregului sistem propus pentru
operaii complexe compuse din secvene elementare de manipulare dezvoltate n cap.3, n
cap.6 sunt prezentate experimente realizate n mediul real.
Modelarea manipulrii obiectelor cu roboi mobili pitori
65
UTILIZATOR
PLANIFICAREA
SARCINILOR/
OPERAIILOR
ALOCAREA
ECHIPEI
SISTEM DE
COMAND I
CONTROL
ECHIP DE
ROBOI
Fig. 4.1 Structura
general a unui sistem de
cooperare cu roboi n
echip
4. PLANIFICAREA OPERAIILOR I SARCINILOR DE
MANI PULARE
4.1.1 ASPECTE GENERALE
n vedere realizrii sistemelor de control multi-robot este nevoie de o perspectiv
global asupra mediului n care acioneaz roboii echipei i o unificare a metodelor de luare a
deciziei i de gestionare, respectiv de mprire a execuiei sarcinilor ntre roboi [Jolly, 2010;
Nanjanath, 2010; Zhu, 2011]. Pentru controlul acestor sisteme sunt necesare mecanisme
complexe de alocare a sarcinilor ntre agenii (fig. 4.1) ce alctuiesc echipa [Elango, 2011],
ns i o arhitectur sau o structur de control riguros definit [Navarro, 2011; Lopez, 2011].
Dorina unei flexibiliti ct mai ridicate i a unor cicluri de producie scurte n mediul
industrial a dus la dezvoltarea unor sisteme de roboi cooperativi [Arai, 2002; Farinelli, 2004].
Sistemele robotizate n main s-au dovedit a fi din ce n ce mai dificil de
programat/controlat, din cauza complexitii lor care se afl n continu cretere. Provocri,
precum planificarea sau setarea unor astfel de sisteme au necesitat coordonri a execuiilor i
cooperri supravegheate. Prin urmare, s-a dovedit c o transpunere a strategiilor de planificare
clasice pentru sistemele robotice n echip nu acoper totalitatea i complexitatea aspectelor
care apar n aceste sisteme.
Planificarea sarcinilor unui robot (Robot Task Planning) se regsete n multiple
lucrri prezentat ca fiind o sintez a aciunilor de operare pentru a ndeplini cu succes un
scop impus de o problem dat [Wei, 2003; Yao, 2007; Panfir, 2012b]. n literatura de
specialitate se identific dou tipuri de planificare a sarcinilor: prin modelare (Model Based
Planing) i bazat pe cazuri (Case Baesd Planing).
Primul tip de planificare [Walsh, 2010; Lee, 2007] utilizeaz modele deterministe
ntruct domeniul real al aplicaiei are un numr de stri infinit, ceea ce face imposibil ca
acestea s fie cuprinse ntr-un model complet, se folosete
modelarea cu ipoteze. Chiar dac acest tip folosete algoritmi
numerici exaci, n unele cazuri reprezentarea ajunge s fie
imprecis i chiar s se ajun la rezultate cu erori semnificative.
Cel de al doilea tip de planificare [Spalzzi, 2001; Ontanon, 2010]
bazat pe cazuri utilizeaz pentru rezolvarea unor noi probleme
sau generarea de noi cazuri, planurile anterioare stocate ntr-o
baz de cunotine proprie, care sunt refolosite i eventual
modificate. Scopul planificrii este acela de a genera o succesiune
de sarcini, aciuni i faze ntr-un spaiu dat cu o anumit predicie
a rezultatului sau organizarea sarcinilor ntr-o anumit ordine sau
dup o anumit regul pentru a ndeplini operaia dat sau pentru a
optimiza funciile de utilizate [Jung, 2004;].
Planificarea operaiilor presupune parametrizarea
n raport cu datele de intrare a funciilor de luare de hotrri legate
de numrul de roboi necesari i a secvenelor de executat
dezvoltate anterior cu algoritmi dedicai. Pe baza parametrilor de
intrare introdui de ctre utilizator se determin operaia care
corespunde acestor cerine, numrul de roboi necesari i tipul
acestora pentru executarea acesteia.
De obicei, planificarea sarcinilor pentru o echip de roboi
este un proces complex ce se realizeaz offline prin care se
determin un flux de secvene elementare care conecteaz starea
Planificarea operaiilor i sarcinilor de manipulare
67
iniial i final a robotului pentru a executa sarcini n mediul de lucru. Pentru configurarea
operaiilor complexe ce implic roboi cu diferite capaciti care opereaz n cooperare cu ali
roboi n echip, generarea unui plan al sarcinilor este uneori greoaie.
Sistemele de planificare au la baz un program (planificator/agent inteligent) care
opereaz cu date legate de domeniul problemei, interconexiunile intermediare, intrrile i
ieirile impuse. Ieirile planificatorului sunt sintetizate n sincronizri/numr de roboi/ sarcini
componente care trebuie implementate prin sistemul de control. n definiia unui planificator
se ntlnete noiunea de: domeniul problemei care nglobeaz colecia ntreag de situaii pe
care planificatorul le analizeaz, dup care se selecteaz cele care conduc la ndeplinirea
scopului propus.
n cazul n care se dorete rezolvarea unei operaii cu ajutorul unei echipe de roboi,
este recomandat modelarea cazului iniial n mediul real, i apoi gsirea unei soluii practice.
De exemplu, dac se dorete manipularea unei bare lungi, operaie care nu poate fii executat
de un singur robot din cauza gabaritului mare, o situaie similar i n cazul oamenilor, pentru
nceput se impune identificarea unei persoane poate executa operaia. Pentru a se rezolva
aceast problem exist mai multe abordri: fie toi oamenii din ncpere vor fii ntrebai pe
rnd dac sunt disponibili pentru a ajuta la aceast operaie, fie s-ar striga foarte tare Care
este disponibil pentru operaie de manipulare? astfel nct toate persoanele prezente s aud.
Oricare dintre aceste abordri constituie situaii reale, i au ajutat n construirea unui algoritm
de planificare pentru roboi n echip. Printre aceste translatri din lumea reala n lumea
roboilor i invers, se pot gsi diverse metode de pornire n schiarea algoritmilor de nvare,
planificare i execuie a sarcinilor.
Pentru execuia unei sarcini (fig. 4.2) un robot din cadrul unei echipe funcioneaz pe
baza unui ciclu de tip percepie-analiz-aciune [Klumpp, 2012].
Acest ciclu permite unui robot s funcioneze i s interacioneze n mod inteligent cu
ali roboi i cu mediul de operare, mediu care poate fi unul cunoscut total sau parial. Pe baza
informaiilor din mediul de operare i de la roboii cu care coopereaz, sistemul de comanda
construiete un raionament i apoi trimite comenzi robotului s le execute. Astfel, conform
ciclului din fig.4.2, prima etap lansat de primirea unui mesaj (fie el scris sau verbal)
presupune percepia mediului nconjurtor prin identificarea i localizarea obiectelor i a
celorlali roboi. Etapa de analiz presupune procese de decizie i control la nivelul
controlerului sistemului, care trimite mesaje de execuie a comenzilor roboilor. Ultima etapa
presupune executarea comenzilor, de asemenea corelate de funcii ale controlerului robotului.
4.2 OPERAII, SARCINI I FAZE
4.2.1 TIPURI DE OPERAII, SARCINI I FAZE
Conceptul de sarcin (T1,T2...Tn) poate fi aplicat unei mari varieti de operaii
(OP1,OP2...OPn), dezvoltnd descrieri ierarhice ale acestora, la nivel de detaliere diferit, n
funcie de contextul analizei.Sarcini se descompun n alte subsarcini componente numite faze.
PERCEPIE ANALIZ ACIUNE
Fig. 4.2 Etapele principale de lucru n echip
Capitolul 4
68
Conceptul de sarcin poate fi aplicat unei mari varieti de operaii. Structur ierarhic
a unei operaii (OP1, OP2..OPn) prezentat n fig 4.3, ofer o imagine de ansamblu asupra
compunerii acesteia din sarcini (T1, T2..Tn), faze (F11, F12Fmn) i secvene. Fazele ce
compun sarcinile sunt o succesiune de secvene elementare locale (SL1, SL2...SLp) sau n
micare (SM1, SM2...SMq) nvate anterior i stocate n baza de secvene.
Dac succesiunea mai multor sarcini duc la formarea operaiilor, iar fazele sunt
reprezentate prin succesiuni de una sau mai multe secvene, se poate deduce c operaia este o
succesiune de secvene nvate anterior, care sunt planificate pentru execuie dup algoritmi
dezvoltai offline. n tab 4.1 sunt prezentate operaii de baz care pot aprea ntr-un mediu
industrial general, cele mai comune care sunt efectuate n scopul de a realiza monitorizare,
transport, manipulare sau procesare. Operaiile au fost analizate, mprite i grupate n
vederea apropierii de modul n care oamenii le efectueaz.
Tab 4.1 Operaii n medii industriale executabile de RP
Categorii de sarcini Sarcini variate
Percepie
Identificarea obiectelor n mediul de lucru
Identificarea intrrilor/ieirilor n mediul industrial
Monitorizarea proceselor
Transport
(deplasare)
Transportarea piesei la blocul de asamblare, procesare sau
mpachetare
Manipulare
Manipularea local
Manipularea n micare
Procesare
Asamblarea unui produs,finisarea, ambalarea etc
OPERAIA
OP1
SARCINA 1
T1
SARCINA 2
T2
SARCINA n
Tn
Faza F11
Faza F12
Faza F13
Faza F21
Faza F22
Faza Fn1
Faza Fnm
Secvena SL1
Secvena SL9
Secvena SM2
Secvena SL11
Secvena SM1
Secvena SL1
Secvena SM3
Secvena SMn
Secvena SL7
Secvena SLm
Fig. 4.3 Structura general a unei operaii
Planificarea operaiilor i sarcinilor de manipulare
69
Fiecare RP dezvolt o list cu toate secvenele componente a unei operaii de executat
la un anumit moment de timp. n fig. 4.4 este prezentat structura general a operaiei
complexe OP6 (operaia de manipulare i deplasare a unui obiect cu masa <2kg de ctre un
singur RP).
Toate secvenele, fazele i sarcinile ce in de rezolvarea operaiei complexe sunt
rezolvate de ctre roboi, utilizatorul nefiind nevoit s intervin n timpul desfurrii
execuiei. Toate secvenele elementare componente a operaiilor sunt nvate anterior de
roboii Nao prin demonstrare i stocate n baza de secvene. Prin combinarea secvenelor
Apucare de jos n sus (SL1)
Ridicare jos n sus (SL3)
F11
Deplasare (SM1)
Apropiere obiect (SM7)
F12
Rotire (SM8)
Coborre (SL3)
F22
Poziionare maini pentru
mpingere (SL8)
mpingere (SM7)
Eliberare (SL11)
Apucare de jos n sus (SL1)
Ridicare jos n sus (SL3)
Coborre (SL3)
Eliberare (SL11)
F21
OP6
T1
T2
T3
T4
F41
F42
Deplasare
prin mpingere
Eliberare obiect
de jos n sus
Manipulare
local de jos n
sus
Manipulare cu
rotire
T3
T1
T2
T4
(Xi,Yi,i)
(Xf,Yf,f)
Date iniiale
Cerine finale
Punct iniial
Punct final
Fig. 4.4 Structura operaiei OP6
Capitolul 4
70
elementare se obin fazele, care prin combinare conduc la sarcini, care la rndul lor formeaz
operaii.
Operaiile executabile de RP n medii industriale sunt:
- Operaii care implic utilizarea unui singur robot: transportul unei piese de lucru
uoare de la punctul de intrare n producie la depozit (compus din deplasare i manipulare);
identificarea finalizrii unei piese uoare i transportul acesteia de la un punct la altul (compus
din monitorizare i deplasare).
- Operaii care implic utilizarea de doi sau mai muli roboi mobili pentru realizarea
operaiei. Acest caz apare atunci cnd n urma deciziei luate de ctre sistemul de comand
reiese faptul c operaia nu poate fi ndeplinit cu succes de ctre un singur robot, sau din
diverse alte motive pe care utilizatorul le poate specifica online.
4.2.2 OPERAII I SARCINI DE MANIPULARE CU RP
Fiecare RP membru a unei echipe primete o list cu toate sarcinile ca succesiuni de
secvene elementare pe care trebuie s le execute, dintr-o baz de secvene n care pot fi
adugate sau terse i alte secvene n funcie de necesiti.
Secvenele se pot executa de ctre un robot n dou feluri: fie simultan (n paralel) de
ctre roboi independent sau n echip, fie secvenial (unul dup altul). Atta timp ct o
sarcin se execut, exist posibilitatea de a porni o alt sarcin cu condiia ca aceste sarcini s
nu depind una de cealalt i s poat fii executate simultan fr a exista conflicte. n sistemul
implementat majoritatea sarcinile trebuiesc executate ntr-o anumit ordine impus i
planificat robotului de la nceput, astfel c o nou secven component a operaiei trebuie s
atepte finalizarea precedentei nainte de a intra n execuie. Acest lucru se datoreaz faptului
c secvenele elementare sunt total dependente unele de celelalte (de modificrile secvenei
precedente alteia), astfel spre exemplu: robotul nu poate s prind o bar dac nu a ajuns la
ea, adic secvena precedent care presupune deplasarea pn la bar nu a fost finalizat.
n fig. 4.5 este prezentat fluxul operaional cu toate sarcinile componente (T1.. T6) ale
NAO 1
NAO 2
T2
T2
T1
T1
(XR1,YR1)
(XR2,YR2)
T3+ sincronizare
T4 T4
T5+ sincronizare
T6
T6
Fig 4.5 Schema de sarcini elementare componente pentru o operaie a roboilor Nao
Planificarea operaiilor i sarcinilor de manipulare
71
unei operaii complexe executat de ctre doi roboi pitori NAO care coopereaz pentru a
manipula un obiect sub forma unui bare de lungime mare. ntreaga operaie este alctuit n
principal din ase sarcini diferite. Prima sarcin (T1) reprezint detectarea obiectului de
manipulat n mediul de lucru, presupune localizarea naomark-ului specific fiecrui obiect n
parte i trimiterea coordonatelor necesare urmtoarei sarcini. Deplasarea pn la obiectul de
manipulat se realizeaz n al doilea task (T2). n a treia sarcin (T3), are loc manipularea
(prinderea i ridicarea) obiectului. A patra sarcin (T4) const n deplasarea roboilor ntr-un
mod sincron pentru a muta obiectul la standul de ambalare. Cea de a cincea sarcin (T5) este
parte n cazul n care roboii elibereaz obiectul n punctul destinat. Sarcina final (T6)
presupune revenirea roboilor la poziia iniial.
n figura 4.6 se prezint structura unei operaii complexe care cuprinde urmatoarele
componente: sarcini, faze i secvene. Pentru compunerea operaiei de manipulare a barelor
lungi se identific urmtoarele dou tipuri de sarcini executate de ctre roboi i anume:
sarcini independente (T1, T2 i T6) i sarcini sincronizate/ simultane (T3, T4 i T5). Fiecare
faz (F11, F15F43) care ajut la formare unei sarcini, este la rndul ei compus dintr-o
serie de secvene elementare. De exemplu faza32: Prinderea barei, care este compus din
urmtoarele patru secvene: Secvena 31: Ridicarea din poziia de manipulare a barei ;
Secvena 32: ntinderea braelor; Secvena 33: Mutarea nainte a braului stng de 5 cm ;
Secvena 34: nchiderea braului stng. Aceste secvene au fost nvate de ctre roboi i
stocate; prin combinarea lor se obin faze, sarcini i operaii.
Operaia Manipularea barelor lungi
Identificarea
obiectului de
manipulat
Deplasare pn la
obiect
Manipularea
obiectului (n mod
sincron)
Deplasarea obiectului
pn la standul de
depozitare
Eliberarea obiectului
( n mod sincron)
ntoarcerea la poziiile
iniiale
T1 T2 T3 T4 T5 T6
Ridicarea din poziia
iniial
ncepe cutarea prin
deplasarea capului/ a
ntregului corp
Extragerea
coordonatelor obiectului
Prelucrarea datelor
Conform datelor
primite de la Task1
ncepe deplasarea
Alinierea corpului la
fiecare 30cm cu
Markerul
Deplasarea pn la o
distana de 10cm de
Naomark
Deplasare n stnga/
respectiv dreapta barei
Aezare n poziie de
manipulare a barei
Apuc bara
(n mod sincron)
Ridic bara
(n mod sincron)
Aezare n poziie de
mers
Deplasare 3m pn la
stand (n mod sincron)
Oprire la punctul final
ndoirea genunchilor
(n mod sincron)
Eliberarea obiectului
(n mod sincron)
ntoarcerea robotului
la un unghi de 90grade
Deplasarea pn la
poziiile iniiale
Oprirea motoarelor
robotilor/sleep robot
Identificarea NaoMark-
ului corespunztor ob
Faza 11
Faza 12
Faza 13
Faza 14
Faza 15
Faza 21
Faza 22
Faza 23
Faza 24
Faza 31
Faza 32
Faza 33
Faza 41
Faza 42
Faza 43
Faza 51
Faza 52
Faza 61
Faza 62
Faza 63
Fig 4.6 Structura operaiei de manipulare a barelor lungi (l >1,5 m)
4.3 DESCRIEREA OPERAIILOR, SARCINILOR I FAZELOR
Pentru studiile din aceast lucrare prin care se propune dezvoltarea unui sistem
inteligent de cooperare a RP n vederea execuiei de operaii complexe de manipulare i
deplasare, au fost definite trei operaii:
- OP1 - de manipulare cu un singur RP, presupune manipularea local iniial, deplasarea
Capitolul 4
72
obiectului cu robotul (eventual cu manipulare n micare): date intrare despre obiect:
masa< 2kg, form bar, lungimea 1m; date intrare despre micare: prindere, deplasare,
coborre, eliberare.
- OP2 - manipulare cu doi RP, presupune manipulare local iniial, deplasarea i manipulare
local final prin secvene elementare executate simultan de cei doi RP: date intrare
despre obiect: masa>= 2kg i < 4.5kg, form bar, lungimea 2,5m; date intrare despre
micare: prindere, deplasare, coborre i eliberare.
- OP3 - deplasare prin mpingere cu un singur robot RP, presupune poziionarea i orientarea
iniial, deplasarea prin mpingere i poziionare i orientarea final: date intrare
despre obiect: masa < 3.5kg, form circular; date intrare despre micare: poziionare,
orientare, mpingere, deplasare.
Fiecare robot pitor component al echipei, dispune de o serie de caracteristici i
funcii, pe baza crora s-au construit secvene elementare, iar pentru identificarea acestora n
baza de secvene au fost salvate corespunztor versiunilor roboilor (V25, V35, V45 etc.) care
le pot executa. De exemplu pentru trei modele de roboi pitori Nao care pot face parte din
echipe de roboi aceste versiuni sunt:
- versiunea V25- reprezint robotul Nao care poate executa sarcini de manipulare i
monitorizare
- versiunea V35- reprezint robotul Nao care poate executa toate sarcinile elementare
mai puin sarcina de sincronizare necesar cooperrii n echipele de roboi
- versiunea V45- reprezint robotul Nao care poate executa toate sarcinile elementare,
inclusiv sarcina de sincronizare necesar cooperrii n echipele de roboi
Datele de intrare care se regsesc n definiia unei operaii ajut la construirea i
identificarea operaiile asociate parametrilor de intrare introduse de user atunci cnd deschide
aplicaia client, unde:
-masa este o cerin de tip numeric (real) i frecvent se refer la limita maxim..
- deplasare este o cerin de tip Boolean (adevrat sau fals) care arat c este nevoie
ca obiectul s fie deplasat (transportat).
-forma este o cerin de tip text care permite i recunoate anumite forme predefinite
precum: circular, trapezoidal, bar, neregulat, cutie, paralelipipedic etc i determin
forma obiectului de manipulate.
-poziiile i orientrile iniiale i finale ale obiectului sunt cerine de tip numeric.
n partea de planificare a operaiilor are loc luarea deciziilor i interpretarea datelor de
intrare legate de scopul dorit. Principiul de planificare se bazeaz pe ideea de interpretare i
de analiz a datelor de intrare, n funcie de care se decide dac operaia poate fi executat de
ctre un singur robot sau de ctre mai muli. n urma deciziei luate, operaia este descompus
n sarcini, faze i secvene componente. Apelnd la secvenele existente n baza de secvene,
una cte una, sunt interogai roboii pentru a afla care sunt disponibili, dup care este trimis
operaia spre execuie. Urmtorul pas este confirmarea realizrii cu succes a sarcinii propuse.
Odat ce rspunsul primit este afirmativ, i se trimite robotului urmtoarea secven spre
execuie, n caz contrar, se reia sarcina pn cnd este executat cu succes, acest flux
repetndu-se pn cnd toate secvenele componente ale operaiei sunt efectuate.
Aplicaiile dezvoltate permit adugarea i editarea oricnd cerine de intrare noi i
bineineles tergerea acestora. Pentru testarea funcionalitii blocului de planificare a unei
operaii, s-a ales tipuri de cerine reprezentative corespunztoare operaiilor de manipulare
asociate cu mediul industrial simulat:
- Masa obiectului (kg) de manipulat, exprimat printr-o valoare pozitiv real;
- Volumul obiectului (m
3
) de manipulat, exprimat printr-o valoare real;
- Forma obiectului (forme geometrice) de manipulat, exprimat printr-o valoare de tip
alfanumeric;
Planificarea operaiilor i sarcinilor de manipulare
73
- Poziia i orientarea iniiale, coordonatele reale x
i
, yi i orientarea i (fig. 4.4)
exprimate prin valori reale;
- Poziia i orientarea finale, coordonatele reale x
f
, y
f
i orientarea
f
(fig. 4.4)
exprimate prin valori reale
n urma analizei valorilor coordonatelor iniiale i finale n funcie de dimensiunile
braelor roboilor se determin tipurile de manipulri (local iniial, local final, n micare)
precum i necesitatea micrilor de deplasare cu RP a obiectului n spaiul de lucru. Astfel, n
funcie de coordonatele carteziene se determin distana dintre poziia iniial i cea final,
(
, (4.1)
n cazul n care aceast distan este mai mic dect cursa minii unui robot, se
impune manipulare local iniial i final. Aceast situaie se descrie cu regula de producie
IF d 15cm THEN manipulare local iniial & manipulare local final. Dac aceast
situaie nu este ndeplinit se impune ca cele dou manipulri iniial i final s fie separate
de o deplasare a obiectului de ctre RP. Descrierea acestei situaii se face cu regula de
producie: IF d>15cm THEN manipulare local iniial & deplasare & manipulare local
final. Pe de alt parte, diferenele dintre unghiurile de orientare iniial
i
i final
f
implic
micri de rotire a obiectului, fapt descris prin regula IF
f
-
i
0 THEN rotire pe loc cu
unghiul
f
-
i
.
Atunci cnd o operaie este descompus n sarcini, planificatorul stabilete regula care
guverneaz aceast secveniere sau selectarea subsarcinilor. Unele sarcini, faze sau secvene
se realizeaz serial dup reguli simple de execuie, de tipul: realizeaz sarcina T1, apoi T2,
apoi T3 etc., altele implic realizarea a dou sau mai multe sarcini n sistem concurent. n
cazul altor operaii, se poate stabili o ordine a prioritilor, chiar dac nu exist o secven
predeterminat a lor pentru realizarea acestora. Pentru operaii care implic mai multe sarcini
concurente dependente s-a conceput un algoritm decizional bazat pe regula IF T1 THEN T2,
pentru a nu lsa nceperea execuiei T2 n cazul n care n urma examinrii din punct de
vedere al erorilor sau omisiunilor sarcina T1 nu a fost ndeplinit cu succes. Acest lucru a fost
implementat n tez, prin descrierea pailor ierarhiei, ceea ce avertizeaz de fiecare dat sau
cnd este cazul asupra faptului c n execuia operaiei exist erori semnificative.
Planificarea i alocarea secvenelor elementare n echipa de RP are loc dup reguli de
producie cu o structur IF condiie THEN aciune, stabilite pe baza datelor de intrare. Astfel
generarea unui plan de execuie necesar sistemului de comand i control se bazeaz pe
nlnuirea logic a unui set de regulilor de producie, n care aciunile rezultate n urma unor
condiii s devin noi condiii pentru alte seturi de reguli de producie din sistem. Regulile de
producie s-au dezvoltat corelat i cu datelor de intrare (parametrii):
IF nlimea la care se afl obiectul este H>=35cm THEN apucare de jos n sus;
IF nlimea la care se afl obiectul este H<35cm THEN apucare de sus n jos;
IF obiect cu prindere n lateral stnga cu H>=30cm THEN apucare din stnga
interior;
IF obiect cu prindere n lateral stnga cu H<30cm THEN apucare din stnga
exterior;
IF poziia final i apucare de jos n sus THEN coborre din fa;
IF obiect circular i spaiul de lucru nelimitat THEN mpingere.
Scrierea alocrii secvenelor elementare se face tot prin reguli de producie de forma:
IF apucare de jos n sus THEN secvena SL1;
IF apucare de sus n jos THEN secvena SL2;
IF apucare din stnga interior THEN secvena SL3;
Capitolul 4
74
IF apucare din stnga exterior THEN secvena SL4;
IF coborre din fa THEN secvena SL5;
IF ridicare din lateral THEN secvena SL8;
IF ridicarea din fa n micare THEN secvena SM1;
IF coborrea pe partea dreapt n micare THEN secvena SM5;
IF ndeprtarea obiectelor n micare THEN secvena SM9;
IF mpingere din fa THEN secvena SM10;
IF rotire THEN secvena SM11.
Selectarea numrului de roboi executani pentru o operaie impus are loc de
asemenea pe baza unor reguli de producie.
IF forma =bar i l=1,5m i masa>=1kg THEN se aloc doi roboi pentru execuie;
IF forma =bar i l=1,5m i masa<1kg THEN se aloc un robot pentru execuie;
IF forma =cutie i l=2m i masa>=3kg THEN se aloc doi roboi pentru execuie;
IF forma =cutie i l=2m i masa<3kg THEN se aloc un robot pentru execuie;
Regulile de producie stocate n baza de cunotine sunt utilizate de modulul de
raionare pentru generarea planurilor de execuie.
4.4 ALGORITMUL DE PLANIFICARE A OPERAIILOR I
SARCNI LOR
Nevoia implementrii unui modul inteligent de planificare a operaiilor i sarcinilor a
decurs din considerentele urmtoare [***a]:
Pentru minimizarea timpului de execuie a unei operaii, sarcinile componente trebuie
s fie pe ct posibil independente una fa de cealalt. Procedeul se numete procesare
asincron i n cazul sistemului dezvoltat n cadrul acestei lucrri acesta a fost aplicat la
descrierea secvenelor innd cont de urmtoarele:
- sarcinile s poat fi detectate atunci cnd ajung n strile de eec sau reuit ca apoi
aceast informaie s fie folosit ca i condiie pentru execuia altor secvene; acestea
trebuie organizate ntr-un mod robust.
- procesare ct mai eficient a mesajelor; sarcinile trebuie astfel adaptate nct
transmiterea i recepionarea mesajelor s se fac ntr-un mod ct mai lizibil.
Managementul operaiilor reprezint procesul de gestionare a activitilor sarcinilor
Cerine de intrare
Analiza
cerinelor de
intrare
Definire
operaie
Divizarea
operaiei
Selectare roboi
Alocarea
sarcinilor
T1 T2 Tn
Divizarea
sarcinilor
F11 F12 F2n
Divizarea fazelor
SLp SMq
Fig.4.7 Schema general de planificare a unei operaii
Planificarea operaiilor i sarcinilor de manipulare
75
componente prin tot ciclul lor de via, ceea ce implic planificarea, testarea i raportarea.
Schema bloc a procesului de planificare a unei operaii n cadrul unei echipe de RP este
prezentat n fig.4.7. Planificarea operaiilor se realizeaz de ctre modulul inteligent de
planificare i const n planificarea i coordonarea secvenelor fiecrui robot bazat pe regulile
de producie din baza de cunotine, cu scopul de a obine fluxul secvenelor elementare de
executat. Rezultatul planificrii nu este altceva dect o sum de secvene elementare nvate
de roboi anterior cu parametrii personalizai n funcie de operaia de executat.
Procesul de planificare este descris print-un proces iterativ alctuit din urmtorii patru
pai (fig. 4.2): a. analiza cerinelor de intrare primite de la utilizator; b. definirea i
identificarea operaiei dorite i a numrului de roboi necesari execuiei acesteia; c. divizarea
operaiei n sarcini, faze i respectiv secvene elementare pe baza regulilor de producie din n
baza de cunotine; d. alocarea secvenelor elementare roboilor executani pentru a ncepe
executarea fluxului tehnologic.
La baza operaiilor complexe stau secvene elementare enumerate anterior, care
compun sarcini i/sau faze ce pot fi ndeplinite fie de ctre acelai robot sau de muli roboi ce
alctuiesc echipa.
Planificarea operaiilor de manipulare a obiectelor de ctre doi roboi pitori a fost
ghidat i a respectat urmtoarele reguli generale care au condus la creterea eficienei
manipulrii i la optimizarea fluxului tehnologic:
Eliminarea obstacolele, fie ele fixe sau mobile din zonele de manipulare, deplasare
etc.
Traseele obiectelor au fost planificate sub form de linii drepte, evitndu-se pe ct
posibil revenirea i micrile ocolitoare.
Exploatarea formei obiectului de manipulat acolo unde este posibil; de exemplu
pentru cutiile voluminoase i grele, dar nefragile au fost nvate secvene elementare
dedicate pentru mpingere, rotire etc.
Traseele obiectelor n mediul de lucru au fost dispus pe un singur nivel, eliminndu-
se astfel sincronizarea roboilor pentru manipularea de obiecte i transportul acestora
ntre etaje.
Deplasarea obiectele voluminoase/grele a fost planificat nct s se realizeze pe
distane ct mai scurte, pentru a evita suprasolicitarea motoarelor roboilor, punctul
de final fiind ct mai aproape posibil de cel iniial.
Au fost aplicate principiile economiei de micare, evitndu-se manipularea,
transportul i deplasrile inutile.
Adaptarea capabilitilor echipamentelor utilizate pentru manipularea obiectelor la
operaiile impuse.
S-a evitat utilizarea echipamentelor eterogene (de diferite tipuri, dimensiuni i
mrci), datorit dificultii de comunicare ntre acestea.
4.5 TESTAREA I SIMULAREA ALGORITMULUI DE
PLANI FI CARE
Fiecare robot component al unei echipe deine informaii legate de operaia i sarcinile
sale (faze i secvene) care sunt active la anumite momente de timp cerute de fluxul
tehnologic. Astfel, odat cu primirea unei noi comenzi de executat, robotul i poate modific
starea intern sau poate executa o nou secven.
Capitolul 4
76
n fig. 4.8 se
prezint schema bloc a
procesului de execuie a
unei operaii. Dup
stabilirea planului de
operaie pe baza
cerinelor i restriciilor
venite de la user se
ncepe execuia
secvenelor componente.
Dup ce o secvena a
fost executat, starea
robotului va fi de
ateptare pn la sosirea
urmtoarei secvene. Cu
ajutorul strii interne a
secvenei se verific
dac aceasta este activ
sau dac a fost executat.
Odat ce aceasta s-a
executat, starea intern
ne indic dac acesta s-a
finalizat cu succes sau a
euat n activitatea sa.
Odat ce secvena este
executat cu succes,
acesta este eliminat din
comportamentul
agentului, iar n caz
contrar se ncerc
reluarea execuiei
secvenei de trei ori. Dac n urma celor trei pai secvena nu primete statusul de succes,
atunci utilizatorul primete mesaj de eroare c operaia nu s-a executat cu succes. Utiliznd un
astfel de planificator, doar o singur secven se poate executa la un anumit moment dat, fiind
necesar verificarea strii secvenei pentru a tii cnd se poate trece la urmtoarea.
Pentru a verifica eficacitatea algoritmului de planificare propus, au fost implementate
diferite scenarii (un exemplu fiind cel din Fig. 4.9), folosind pentru vizualizare o interfa
grafic dezvoltat n mediul de programare Webots. n final s-au realizat teste de
implementare i validare a algoritmului propus n medii reale.
n urma testelor efectuate, reiese faptul c algoritmul de planificare a sarcinilor,
respectiv a operaiilor n cadrul unei echipe de RP soluioneaz cu uurin situaiile de
manipulare impuse. Dei nu sunt cele mai scurte, traseele de manipulare sau deplasare
obinute permit o operaie sigur, n timpi redui, a roboilor pitori fr a intra n situaii de
blocaj n ceea ce privete cooperarea roboilor.
DA
Stop
Secven activ
Eroare de
execuie?
Sistem de planificare
inteligent
Mesaj de
eroare
Baza cu planuri de
operaii
Planul de operaie
Execuie euat
de 3 ori?
NU
Execuie secven
Secven
final?
DA
DA
NU
NU
User
Cerine i
restricii
Fig. 4.8 Schema logic a procesului de execuie a unei operaii
Planificarea operaiilor i sarcinilor de manipulare
77
Fig. 4.9 Scenariul de simulare a operaiei de manipulare a unui bare de ctre doi RP
4.6 CONCLUZI I
n cadrul acestui capitol se prezint algoritmul de planificare a operaiilor i sarcinilor
de manipulare pentru o echip de RP care i desfoar activitatea ntr-un mediu industrial.
Algoritmul de planificare dezvoltat utilizeaz secvenele elementare nvate prin demonstrare
stocate ntr-o baza de secvene comun. n acest capitol au fost prezentate detaliat modele de
operaii de baz care pot aprea ntr-un mediu industrial, structura acestora,
operaii/sarcini/faze i secvene pe care le pot ndeplinii RP ce fac parte din echip. Pentru
detalierea noiunilor de operaie, sarcin, faz i secven a fost prezentat un exemplu de
operaie complexa, aa cum este ea interpretat de sistem, compus i planificat. Planificarea
i alocarea secvenelor elementare n echipa de RP are loc dup reguli de producie, stabilite
pe baza datelor de intrare impuse de utilizator.
Metodologia de dezvoltare a algoritmului de planificare a unei operaii presupune
parcurgerea succesiv a urmtoarelor etape: analiza cerinelor de intrare primite de la
utilizator; definirea i identificarea operaiei dorite i a numrului de roboi necesari execuiei
acesteia; divizarea operaiei n sarcini, faze i respectiv secvene elementare pe baza regulilor
de producie definite n baza de cunotine; alocarea sarcinilor roboilor executani pentru a fi
executate.
5. SISTEM INTELIGENT DE COOPERARE A ROBOILOR
PITORI
5.1 ASPECTE GENERALE
Noiunea de agent inteligent nu este nou, ea apare pentru prima dat n anul 1970 n
lucrrile lui Nicholas Negraponte i n 1984 n cele ale lui Alan Kai [Negraponte,1970;
Kai,1984]. i ali cercettori, cum ar fi Marvin Misky, Rodney Brooks, Burgard, Feigenbaum,
Russell i Norvig au studiat problemele legate de ageni, modelarea acestora i au evideniat
diferite tipuri de clase i de comportamente [Feigenbaum,2003; Burgard, 2000].Modele
reprezentative a agenilor inteligeni elementari definite de Meystel i Albus sunt artate n
fig. 5.1. Agentul inteligent reprezint componenta de baz a unui sistem complex, care
percepe mediul su nconjurtor cu ajutorul senzorilor i acioneaz autonom n funcie de
acesta, prin intermediul efectorilor pentru ndeplinirea unei funcii date [Wooldrige, 2002]. O
definiie cuprinztoare conform lui [Ferber, 1999] are urmtorul enun: Agentul inteligent
este o entitate real sau abstract capabil de a aciona asupra ei nii i asupra mediului su,
care dispune de o reprezentare parial a acestui mediu, care poate comunica cu ali ageni
ntr-un mediu multi-agent i al crui comportament este consecina observaiilor sale,
cunotinelor sale i interaciunilor cu ali ageni.
Sistemele inteligente implementate n medii industriale prezint o serie de avantaje:
1) Crete disponibilitatea accesului la aplicaii diverse, n ideea n care expertiza devine
accesibil de pe oricare resurse hardware.
2) Reducerea costului, innd cont de preurile sczute ale unor astfel de sisteme.
3) Crete calitatea proceselor tehnologice.
4) Ajut la eliminarea sau chiar reducerea pericolelor, n ideea n care aceste sisteme pot fi
folosite n medii periculoase pentru om, atunci cnd sunt ncorporate n sisteme adecvate (de
exemplu, n sistemele de comand ale roboilor industriali).
5) Durat de via foarte lung i fiind n continu ascensiune sunt mereu mbuntite i
updatate la noile tehnologii care apar.
6) Rapiditate, n sensul c pe sisteme software i hardware adecvate se pot obine performane
de timp mai bune dect cele ale experilor umani.
5.2 SISTEME INTELIGENTE DE ACIUNE N MEDII
I NDUSTRI ALE
n funcie de tipologia aplicaiilor industriale dar i al proceselor, de informaia creat
explicit i mai apoi folosit de ctre agent n cadrul deciziei, exist numeroase tipuri de ageni
inteligeni. Acetia se difereniaz ntre ei prin modalitatea de considerare a percepiilor,
aciunilor, scopurilor i a nivelului de inteligen i capabiliti. De exemplu, Russel i Norvig
[Russel, 2003] evideniaz cinci modele de ageni inteligeni: ageni care se bazeaz pe
reflexe simple, ageni care se bazeaz pe scop, ageni care se bazeaz pe model, ageni care se
bazeaz pe utilitate, ageni care se bazeaz pe nvare.
Agenii bazai pe reflexe simple (reflex agent) (fig. 5.1,a) se caracterizeaz prin
rspunsul imediat la o secven de intrare, realizeaz conexiuni ntre situaia pe care el o
percepe i o anumit aciune. Aceste conexiuni sunt memorate de ctre agent sub forma unor
reguli condiie-aciune (if percepie(condiie) then aciune). Acest agent dispune de un
program foarte simplu, care este dezvoltat astfel nct s caute ntotdeauna o regul a crei
parte de condiie s se potriveasc situaiei curente (aa cum este ea definit de ctre
Sistem inteligent de cooperare a roboilor pitori
79
percepie), dup care efectueaz aciunea asociat acestei reguli. Pentru aceti ageni mediul
n care lucreaz trebuie s fie total observabil.
Agenii bazai pe model (model-based agent) (fig. 5.1,b), lucreaz ntr-un mediu de
operare care trebuie s fie parial observabil. Starea sa intern este dat de un model teoretic
care ofer informaii despre partea din mediul real pe care agentul nu poate s o observe,
precum i despre percepiile i aciunile anterioare. Pentru modificarea strii interne este
nevoie ca programul de care dispune agentul s includ dou tipuri de informaii: informaii
despre modul n care lumea evolueaz n mod independent fa de agent i informaii cu
privire la modul n care aciunile acestuia afecteaz mediul. Acest tip de agent acioneaz pe
baza modelului structurii mediului creat dup un algoritm dedicat.
Agenii bazai pe scop (goal-based agents) (fig. 5.1,c), au la baz acionarea n sensul
ndeplinirii scopului propus. Cunoaterea strii curente nu reprezint ntotdeauna metoda
suficient pentru a se putea selecta o aciune corect. n unele cazuri, agentul inteligent are
nevoie de informaie care s descrie atingerea scopului impus. Programul de care dispune
agentul combin aceast informaie cu informaia despre rezultatele aciunilor sale, ca n urma
acestora s aleg aciunile care conduc la scopul propus.
Agenii bazai pe utilitate (utility-based agents) (fig. 5.1,d) au aprut datorit faptului
c nu este suficient ntotdeauna cunoaterea scopului, pentru a se putea genera cea mai bun
strategie posibil. Datorit faptului c singura funcie a scopului impus este de a determina
deosebirile ntre strile care sunt considerate favorabile i cele nefavorabile, asocierea unei
msuri de performan fiecrui scop va permite compararea strilor, din punct de vedere al
utilitii pe care acestea o prezint din punctul de vedere al agentului. Astfel, funcia de
utilitate permite agentului s ia decizii n cazul scopurilor conflictuale.
Senzori
Mijloace de aciune
Reguli
condiie-aciune
Agent
inteligent
M
e
d
i
u
l
d
e
l
u
c
r
u
Aciune
Senzori
Mijloace de aciune
Reguli
condiie-aciune
Agent
inteligent
M
e
d
i
u
l
d
e
l
u
c
r
u
Structura
mediului
Senzori
Mijloace de aciune
Planificarea scopului
Agent
inteligent
M
e
d
i
u
l
d
e
l
u
c
r
u
Aciune
Structura mediului
Senzori
Mijloace de aciune
Planificarea scopului
Agent
inteligent
M
e
d
i
u
l
d
e
l
u
c
r
u
Aciune
Structura mediului
Sistemul de utilitate
a
b
c
d
Fig. 5.1 Modele funcionale ale agenilor inteligeni: a - reflexive; b - bazai pe model; c - bazai pe
scop; d - bazai pe utilitate
Capitolul 5
80
Agenii bazai pe nvare (learning agents) (fig 5.2) sunt acei ageni inteligeni care
opereaz n medii de lucru necunoscute, bazndu-se doar pe anumite cunotine iniiale
(nvate anterior). Aciunile sunt selectate prin procese de raionare bazate pe cunotine, pe
percepie i pe experienele accumulate prin nvare. Performanele atinse de agent sunt
continuu evaluate prin compararea cu performanele impuse de dezvoltator, dup care sunt
stocate n baza de cunotine. Aceti ageni sunt caracterizai printr-o autonomie ridicat,
deoarece iau n considerare comportamentele anterioare stocate n memorie, n urma crora
identific i evalueaz mbuntirile obinute n urma nvrii.
n sintez, prin sistem inteligent (expert) se nelege un sistem software care prelund
cunotinele unui expert i nmagazinndu-le ntr-o baz de cunotiinte proprie, poate rezolva
probleme complexe dintr-un anumit domeniu de expertiz [Beetz, 2010; Butil, 2013].Deci
sistemul expert [Feigenbaum,2003] este un program de calculator care folosete cunotine i
proceduri de raionament pentru a rezolva probleme complexe, necesit n mod obinuit
pentru a obine o soluie corect cunotinele unui expert uman n domeniu [Beetz, 2010].
n fig. 5.3 este prezentat schema principial a unui sistem inteligent/expert.
Utilizatorul furnizeaz cunotine iniiale specifice problemei ce se dorete a fi rezolvat i
primete rezultate sub forma expertizei, adica a soluiei pe care sistemul o indic referitor la
problema precizat prin datele de intrare.
Componentele principale ale sistemului inteligent sunt: baza de cunotiine, motorul
de inferen, interfaa cu utilizatorul si modulul explicativ.
Baza de cunotine (Knowledge Base) este o component de baz a unui sistem
inteligent care ajut la stocarea informaiilor (fapte, reguli, soluii de rezolvare) specifice
domeniului de aplicaie, preluate de la experii umani sau din alte surse.
Motorul de inferen (Inference Engine) este o component program care conine
reguli i elemente de control, cu ajutorul cruia se exploreaz baza de cunotine n vederea
efecturii de raionamente pentru obinerea de soluii, recomandri sau concluzii n condiiile
unor restricii impuse.
Interfaa cu utilizatorul permite dialogul cu utilizatorii n timpul sesiunilor de
consultare i interogare, precum i accesul acestora la cunotinele din baz pentru adugarea
i/sau actualizarea acesteia.
Senzori
Baz de date/
cunotiine
Agent inteligent
dezvoltat
M
e
d
i
u
l
d
e
l
u
c
r
u
Aciune
Motor de
inferen
Sistem de nvare a
sarcinilor elementare
Performane impuse
de dezvoltator
Cunotiine ale
experilor umani
Mijloace de aciune
Fig. 5.2 Modelul funcional al agenilor inteligeni bazai pe nvare
Sistem inteligent de cooperare a roboilor pitori
81
Modulul explicativ reprezint blocul cu rolul de a explica utilizatorilor att
cunotinele pe care le are sistemul, ct i modurilor de raionare de care dispune acesta pentru
obinerea soluiilor n cadrul sesiunilor de consultare.
Sistemele expert sunt utilizate frecvent pe de-o parte datorit capacitilor acestora de
a procesa un volum imens de cunotine i date (care ar fi foarte anevoios de procesat de
operatorii umani), i pe de alt parte, datorit posibilitilor de reprezentare i stocare
structurat a expertizelor operatorilor umani astfel eliminndu-se dependenele de prezen a
acestora, dar i facilitatea dezvoltrii ulterioare a acestora.
5.3 STRUCTURA FUNCIONAL A SISTEMULUI DE
COOPERARE A ROBOILOR PITORI, NaoCoop
Cercetrile privind sistemele de cooperare a roboilor mobili au nceput n jurul anilor
1980, o atenie mrit fiind acordat problemei de coordonare i cooperare a roboilor n
cadrul echipelor [Burgard, 2000; Gerkey, 2002; Lawton, 2003; Yulan, 2012a; Wang, 2008a;
Wang, 2008b].
Sistemele multi-robot sunt definite ca grupuri de roboi care opereaz n acelai mediu,
pentru a realiza un set de sarcini, mpreun sau independent. Cercetrile pe aceast tem, n
care diverse echipe de roboi trebuie s realizeze operaii complexe n colaborare, n ultimul
timp au nceput s ctige popularitate.
Interesul de a dezvolta un sistem de cooperare a roboilor n care sarcinile sunt alocate
de ctre un agent inteligent a aprut datorit necesitilor impuse de procesele industriale
complexe. Beneficiul folosirii unui planificator de sarcini centralizat (agent inteligent) este dat
de faptul c permite luarea unei decizii n locul roboilor privind din perspectiva unei echipe.
n acest scop, sistemul poate lua o decizie mai potrivit nainte ca anumite aciuni s aib loc.
n acest lucrare se propune un nou concept de distribuie a sarcinilor n cadrul unei echipe,
BAZ DE DATE / CUNOTIINE
MODUL
EXPLICATIV
MODUL DE
ACHIZIIE A
CUNOTIINTELOR
INTERFA OPERATOR
MOTOR DE
INFEREN
(RAIONARE)
UTILIZATOR
Colecteaz
cunotiine
Efectueaz
raionamente
Explic
raionamentele
Fig. 5.3. Schema de pricipiu a unui sistem inteligent
Capitolul 5
82
sarcini care compun operaii complexe, n funcie de disponibilitatea i caracteristicile
roboilor, precum i n funcie de sarcinile care pot fi executate de fiecare robot n parte.
n fig. 5.4 se prezint arhitectura sistemului inteligent NaoCoop dezvoltat care conine
procese offline (prezentate detaliat n cap 3) i procesele online. Blocurile componente
proceselor online sunt: sistemul de comand i control, controlerele roboilor, baza de date,
blocul de comunicare i sincronizare, interfaa grafic utilizator-sistem i roboii echipei.
Baza de date, conine toate informaiile cuantificabile necesare pentru ca sistemul s
funcioneze: tipurile roboilor i caracteristicile lor, codurile planurilor de operaii. Aceasta
conine, de asemenea, informaii statice privind capabilitile roboilor, i informaii dinamice,
cum ar fi strile n care se afl n anumite momente roboii i informaiile necesare pentru
funcionarea corect a sistemului.
Interfaa grafic utilizator este componenta care permite comunicarea cu operatorul i
accesarea informaiilor din baza de date ntr-o form standard. Aceast interfa face posibil
accesul utilizatorului la informaiile despre roboi, respectiv despre echip, la planurile de
operaii curente, editarea, adugarea sau tergerea acestora [Panfir, 2012a].
Sistemul de comand i control al echipei de RP reprezint partea central a sistemului
NaoCoop care coordoneaz toate aciunile roboilor conform planului operaiei curente; n
plus, n cadrul acestui subsistem sunt gestionate codurile de eroare i procesele de
sincronizare.
Echipa de roboi pitori RP1 i RP2 realizeaz aciuni independent sau n echip sub
BAZA DE CUNOTIINE
PLANIFICAREA
INTELIGENT A
OPERAIILOR
BAZ CU PLANURI DE
OPERAII
CONTROLER RP2 CONTROLER RP1
NVAREA SECVENELOR
ELEMENTARE
BAZ DE SECVENE
ELEMENTARE
SIMULAREA I TESTAREA
N MEDIUL DE LUCRU
VIRTUAL
BLOC DE COMUNICARE I
SINCRONIZARE
SISTEM DE COMAND I CONTROL AL
ECHIPEI DE RP
M
O
D
E
L
A
R
E
A
O
P
E
R
A
I
I
L
O
R
I
N
T
E
R
F
A
G
R
A
F
I
C
U
T
I
L
I
Z
A
T
O
R
BAZA DE DATE
MEDIUL DE LUCRU
Inginer de
cunotiine
Operator
Inginer de
cunotiine
RP1 RP2
P
R
O
C
E
S
E
O
N
L
I
N
E
P
R
O
C
E
S
E
O
F
F
L
I
N
E
Fig. 5.4 Arhitectura general a sistemul inteligent NaoCoop
Sistem inteligent de cooperare a roboilor pitori
83
controlul i comanda controlerelor proprii care gestioneaz funciile la nivelul motoarelor de
acionare, a blocului de comunicaie i senzorilor externi.
5.3.1 STRUCTURA I FUNCIONAREA PROCESELOR OFFLINE
Toate blocurile componente din procesele offline: modelarea operaiilor, planificarea
operaiilor n urma creia a rezultat baza cu planuri de operaii, nvarea secvenelor
elementare simulate i testate au fost descrise detaliat n capitolele 3 i 4. nvarea
secvenelor s-a realizat prin demonstrare i simulare, secvene care apoi au fost stocate n baza
de secvene elementare distincte. Planificarea inteligent a operaiilor s-a realizat pe baza
regulilor de producie de forma IF condiie THEN aciune, reguli stocate ntr-o baz de
cunotine comun roboilor. n urma combinrii mai multor reguli de producie pe baza
cerinelor utilizatorului i ale mediului de lucru s-a format o baza cu planurile de operaii, care
devin intrri pentru sistemul de comand i control din procesele online. Toate secvenele
nvate ce stau la baza planurilor de operaii au fost simulate i testate n mediul de lucru
virtual.
5.3.2 STRUCTURA I FUNCIONAREA PROCESELOR ONLINE
5.3.2.1 I NTERFEELE GRAFI CE ALE SISTEMULUI
Interfaa grafic a utilizatorilor
pentru aplicaia NaoCoop a fost
implementat folosind standardul Model
View ViewModel (MVVM) specializat
pentru interfee care faciliteaz o separare
clar a dezvoltrii interfeei grafice de
dezvoltare de logic business sau de logic
back end. ViewModel-ul din MVVM este
un convertor valoare n sensul c acesta
este responsabil pentru expunerea
obiectele de date din Model n aa fel nct
aceste obiecte s fie uor de administrat i
de accesat de View.
Aplicaia NaoCoopApp dispune de
dou funcionaliti majore i anume:
prima este folosit pentru editarea bazei de
date folosind librria
NaoCoopDataAccess, iar cea de a doua
este folosit pentru executarea operaiilor
folosind librria NaoCoopLib.
n sistemul NaoCoop exist dou tipuri de utilizatori: operatori/utilizatori i ingineri
de cunotine. La pornirea aplicaiei NaoCoopApp operatorul este nevoit s se autentifice (fig.
5.5), iar n urma tipului su, se va afia meniul corespunztor astfel nct acesta va avea acces
la pagina de execuii, iar inginerul de cunotine va avea acces att la execuii ct i la paginile
de editare a datelor din baza de date, a cunotinelor din baza de cunotine i a secvenelor
din baza de secvene.
Fig. 5.5 Autentificarea utilizatorului
Capitolul 5
84
5.3.2.1.1 INTEFAA GRAFIC UTILIZATOR
Interfaa operatorului (fig. 5.6) permite: accesarea paginii cu ajutorul unei parole,
introducerea caracteristicilor pe baza crora se face selecia operaiei corespunztoare din
baz, vizualizarea progresului fiecrei sarcini care compune o operaiune n curs de
desfurare.
Interfaa inginerului de cunotine (fig. 5.7) permite: accesarea paginii utiliznd o
parol, editarea/tergerea i adugarea de noi roboi n echipa Robot, caracteristicile, sarcinile,
strile sale, care se pot executa i, de asemenea, poate comanda echipa de roboi care sunt sub
administrarea lui prin trimiterea de cereri i nu n ultimul rnd permite nvarea de noi
secvene elementare atunci cnd este nevoie.
5.3.2.1.2 INTEFAA GRAFIC DE EDITARE A BAZEI DE DATE
Inginerul de cunotine este capabil s actualizeze informaiile din baza de date folosind
paginile din grupul Settings Robots (fig. 5.8), Robot Versions, Requirements (fig. 5.9),
Operations, State sau Tasks. Fiecare pagin din cadrul grupului Settings dispune de dou
butoane, unul pentru modificarea datelor, iar cellalt pentru salvarea modificrilor dorite
(Refresh, Save). nregistrrile din baza de date sunt ncadrate ntr-un grid care are
capabilitatea de a adaug, modifica sau terge rnduri.
Fig. 5.6 Interfaa pentru inginer de cunotine Fig. 5.7 Interfaa pentru operator
Fig. 5.8 Pagina de setare a roboilor Fig. 5.9 Pagina de setare a datelor de intrare
Sistem inteligent de cooperare a roboilor pitori
85
5.3.2.2 SISTEMUL DE COMAND I CONTROL AL ECHIPEI DE RP
n figura 5.10 se prezint arhitectura sistemului de comand i control al echipei de RP
compus din urmtoarele module: modulul de accesare la baza de date, modulul de comunicare
cu robotul i modulul cu toate entitile folosite. Toate modulele componente ale sistemul de
comand i control au fost dezvoltate n mediul de programare .NET (limbajul C#) i grupate
ntr-un programul principal numit NaoCoopApp. Cu ajutorul acestuia am realizat cooperarea
roboilor bazat pe comunicarea explicit, prin voce, care interacioneaz cu celelalte blocuri.
Modulele componente folosesc librria dll comun NaoCoopLib. Aceast librrie
definete logica robotului care prin intermediul interfeei de programare (API) NAOqi.Net
trimite comenzile ctre controlerul robotului Nao pentru a putea fi executate. NaoCoopLib
este librria comun prin care se efectueaz orice operaie a robotului. Acesta are ca referin
kitul de dezvoltare software (SDK) .Net pentru sistemul NAOqi.
Modulul de legtur
ntre robot i aplicaie
(NAOqi.Net)
NaoCoopDb
NaoCoopDataAccess
Modulul de comunicare
cu robotul
(NaoCoopLib)
Modulul cu toate
entitile folosite
(NaoCoopObjects)
Fig. 5.10 Arhitectura sistemului de comand i control al echipei de RP
5.3.2.2.1 BAZA DE DATE
Baza baza de date de tip NaoCoopDb reprezint Microsoft SQL n care sunt stocate
informaiile legate de sistemul dezvoltat NaoCoop ce are o structur de 7 blocuri principale i
7 blocuri de legtur, dezvoltat n Microsoft SQL pentru robustee, simplitate i
disponibilitate. Baza de date, conine astfel toate legturile grafice necesare pentru ca sistemul
implementat s funcioneze la capacitate maxim (tab. 5.1).
Tab 5.1 Blocurile componente ale bazei de date
Nume Descriere
dbo.ExecutionRobots Bloc de legtur ntre execuii i roboi.
dbo.Executions Bloc ce conine detalii despre execuiile operaiilor.
Capitolul 5
86
dbo.OperationRequirements Bloc de legtur ntre cerine i operaii.
dbo.OperationRobots Bloc ce conine date despre roboii necesari unei operaii.
dbo.OperationRobotStates Bloc de legtur ntre OperationRobots i States.
dbo.Operations
Blocul Operations conine date despre operaiile suportate n
NaoCoop.
dbo.Requirements Bloc ce conine cerine generale definite n sistemul NaoCoop.
dbo.Robots Stocheaz date despre roboii disponibili.
dbo.RobotVersions Bloc ce conine versiuni ale roboilor Nao.
dbo.States Bloc ce conine strile suportate de roboi din sistemul
NaoCoop.
dbo.StateTasks Blocul de legtur ntre States (stri) i Tasks (sarcini).
dbo.Tasks Bloc ce conine sarcinile suportate de sistemul NaoCoop.
dbo.TaskSettings Bloc ce conine setri ale task-urilor.
dbo.Users Bloc ce conine informaii despre utilizatorii sistemului
NaoCoop.
Fig.5.11 Structura bazei de date
Sistem inteligent de cooperare a roboilor pitori
87
Descrierea detaliat a tuturor blocurilor existente n baza de date utilizat de sistemul
conceput se regsesc n anexa 4.
5.3.2.2.2 MODULUL PENTRU DEFINIREA ENTITILOR
n modulul (librria) NaoCoopObjects sunt definite entitile folosite de sistemul
NaoCoop. Aceste entiti sunt exprimate n clase (fig 5.12) i folosite de toate blocurile
aplicaiei.
Fig. 5.12 Librria pentru definirea entitilor, NaoCoopObjects
5.3.2.2.3 MODULUL PENTRU ACCESUL LA BAZA DE DATE
NaoCoopDataAccess este blocul care asigur accesul la baza de date prin componenta
framework-ului .Net numit LINQ to SQL (anexa 1). n LINQ la SQL, modelul de date a unei
baze de date relaionale este mapat la un model de obiecte exprimat n limbajul de programare
utilizat. Atunci cnd aplicaia ruleaz, LINQ to SQL traduce modelul de obiecte n interogri
SQL i le trimite la baza de date pentru execuie. Cnd se primete rspunsul, LINQ to SQL l
transform napoi n obiecte.
Layer-ul LINQ to SQL nu este ns expus public, NaoCoopDataAccess dispune de
clase manager care primesc ca i parametru sau returneaz obiectele definite n
NaoCoopObject. Pentru fiecare tabel sau tip de operaie exist cte o clas manager (fig. 5.13)
care are ca i metode:
GetRecordByID: primete ca i parametru un ID de tip Guid i returneaz obiectul
din baza de date cu acel ID.
GetRecords: returneaz ntreaga colecie de nregistrri din tabelul bazei de date
aferent managerului.
Capitolul 5
88
SaveRecord: primete ca i parametru un obiect definit n NaoCoopObject pe care
l transform n obiect LINQ to SQL i l trimite la baza de date pentru stocare
(inserare sau actualizare).
DeleteRecord: primete ca i parametru un obiect definit n NaoCoopObject i
terge din baza de date nregistrarea aferent acestui obiect.
Fig. 5.13 Blocul pentru accesul la baza de date: NaoCoopDataAccess
5.3.2.2.4 MODULUL DE COMUNICARE CU ROBOTUL NAO
NaoCoopLib (fig5.14) este modulul comun prin care se efectueaz orice operaie a
robotului. Are ca referin kitul de dezvoltare software (SDK) .Net pentru sistemul NAOqi.
Blocul este capabil s transforme din obiectul Operation definit n NaoCoopObject n mai
multe obiecte interne NaoCoopRobot i apoi s execute comenzi direct pe robotul fizic Nao.
Sistem inteligent de cooperare a roboilor pitori
89
Fig. 5.14 Librria de comunicare cu robotul Nao ( NaoCoopLib)
5.3.2.2.5 CLASA PRINCIPAL A RP
NaoCoopRobot este clasa principala care definete obiectul robotului (toate aciunile
i strile acestuia). Aceast clas se iniializeaz o dat pentru fiecare robot primind ca
parametrii datele robotului (ip, port). Clasa dispune de un automat finit care se genereaz n
mod dinamic n funcie de strile i sarcinile definite n obiectul Robot al librriei
NaoCoopObjects (anexa 6).
Un automat finit normal sau o "main cu un numr finit de stri" este un model de
Robotul este
initializat
WalkToCheckpoint
AtCheckpoint
Robotul se afla la
principalul
punct de control.
Stop
AtGrabLocationA
Robotul se afla la
punctul A (stanga) de
ridicare a obiectului.
AtGrabLocationB
Robotul se afla la
punctul B (dreapta) de
ridicare a obiectului.
InLiftPosition
Robotul se afla
in pozitia de ridicare
a obiectului.
Lift
InWalkPosition
Robotul se afla
in pozitie de
transportare
a obiectului.
Proces
terminat
WalkWithObject
GoToGrabLocationA
GoToGrabLocationB
GoToLiftPosition
GoToLiftPosition
Comenzi care se execut
ntr-un mod sincron ntre
cei doi roboi.
Fig.5.15 Automatul finit al clasei NaoCoopRobot pentru manipulare a unui
obiect de ctre doi RP
Capitolul 5
90
comportament compus din stri, tranziii i aciuni. O stare stocheaz informaii despre trecut,
adic reflect schimbrile intrrii de la iniializarea sistemului pn n momentul de fa.
Automatul finit n cazul de fa [Yulan, 2012b] este folosit pentru monitorizarea strilor i
aciunilor robotului (fig. 5.15). O tranziie indic o schimbare de stare i este descris de o
condiie care este nevoie s fie ndeplinit pentru a declana tranziia. O aciune este o
descriere a unei activiti ce urmeaz a fi executat la un anumit moment.
Strile specificate n fig. 5.15 pentru execuia unei operaii, reprezint strile ntlnite
de ctre un robot n traseul acestuia de parcurgere a unei operaii complexe, fie c aceasta este
executat de ctre un singur robot sau n cooperare cu altul. Pentru operaiile executate prin
cooperarea a doi roboi, apar noi stri specifice acestora impuse de fluxul operaiei. Exemple
de stri identificate n automatul finit al unui robot pitor Nao sunt: Initialized- robotul este
iniializat; AtCheckpoint- robotul a ajuns la punctual de control(naomark-ul de pe cutie);
AtGrabLocation- robotul a ajuns la locaia de ridicare a obiectului; InLiftPosition- robotul se
afl n poziia de ridicare a obiectului; InWalkPosition- robotul se afl n poziia de
transportare a obiectului; Terminated- robotul a ncheiat execuia.
Comenzile (NaoCommand) trimise robotului Nao pentru a executa cu succes o
operaie de manipulare a unui obiect sunt:
1. Walk to checkpoint, comanda de deplasare a robotului pn la obiect.
2. GoToGrabLocation, comanda de deplasare a robotului ctre poziia de ridicare a
obiectului (stnga sau dreapta).
3a. GoToLiftPosition synch, robotul se pune n poziia de ridicare a obiectului cu
sincronizare.
3b. GoToLiftPosition no synch, robotul se pune n poziia de ridicare a obiectului fr
sincronizare.
4. Lif, robotul curent se sincronizeaz cu cellalt robot i mpreun, ridic simultan
obiectul.
5. WalkWithObject, robotul curent este sincronizat cu un alt robot pentru deplasarea
obiectului.
5.3.2.3 CONTROLERELE ROBOILOR PITORI
Roboii Nao au n structura lor procesoare Intel Atom de 1.6 GHz ce dispun de
urmtoarele module software de baz ce ruleaz la nivel de controler (fig.5.16):
- Software ncorporat, care ruleaz pe placa de baz (controler-ul) situat n capul
robotului, cu sistemul de operare al robotului OpenNAO; acesta este de tip GNU/Linux
embedded bazat pe Gentoo i dezvoltat special pentru roboii pitori.
- NAOqi este software-ul principal care controleaz robotul i crearea de
RP
OpenNao
NAOqi
Choregraphe
Monitor
Windows/Linux/Mac
Fig. 5.16 Module sofware de baz a roboilor Nao
Sistem inteligent de cooperare a roboilor pitori
91
comportamente bazat pe module i metode dezvoltate specifice. Acest software se poate rula,
de asemenea, pe alt computer, n scopul de a testa codul implementat pe un robot virtual.
Softwareul desktop (Choregraphe, Monitor) ruleaz pe un calculator gazd i permite
programarea i controlul de la distan al robotului. Modulul Choregraphe este un limbaj de
programare vizual care permite crearea de animaii i simulri, monitorizarea i controlul
robotului. Softul Monitor este dedicat pentru vizualizarea feedbackului elementar de la robot
i un acces simplu la setrile camerelor video.
5.3.2.4 BLOCUL DE COMUNICARE I SINCRONIZARE
Ca i un om, robotul poate fii pn la un punct autonom, fiind capabil de a lua decizii
bazate pe situaia curent n care se afl. Din dorina de a fii ct mai asemntori cu oamenii
i n ceea ce privete cooperarea propriu-zis, nsuirea comunicrii verbale ntre acetia a fost
inevitabil. Astfel aceast capacitate de a comunica prin cuvinte, propoziii i fraze a fost
transpus i roboilor Nao. Ei au fost programai s comunice prin trimitere i recepie de
mesaje. Ca i oamenii, roboii Nao i pot pune ntrebri unul altuia, pot rspunde sau spune
ce nu au neles, pot trimite sarcini de executat, pot negocia unul cu cellalt, totul
ntmplndu-se la nivel de interpretare a mesajului primit.
5.3.2.4.1 MODELUL GENERAL DE COMUNICARE
Pentru a coopera, roboii trebuie s comunice, iar pentru a comunica acetia trebuie s
i trimit mesaje. Pentru comunicare este necesar s se foloseasc acelai limbaj, care s
conin un set comun de mesaje, care s permit roboilor participani s le neleag.
Mesajul reprezint unitatea de baz a comunicrii putnd fi alctuit fie din cuvinte
scrise sau rostite, imagini, muzic, zgomote, semnale, simboluri, culori, gesturi, etc.
Complexitatea unui mesaj poate s difere de la caz la caz, acestea putnd fi formate din
informaii simple, sau din liste complete de informaii rezultate n urma unor aciuni.
Schimbul de mesaje n cadrul sistemului NaoCoop se realizeaz cu precdere printr-o
comunicare oral.
Protocolul de comunicare reprezint setul de reguli pe baza cruia roboii pot s
comunice, reguli care impun ceea ce poate fi trimis, cum poate fi trimis, i respectiv, ceea ce
se ateapt ca rspuns. Pentru a putea comunica, indiferent de tipul robotului echipei, att
emitorul ct i receptorul trebuie s utilizeze acelai protocol de comunicare pentru ca
fiecare s neleag ce spune cellalt.
5.3.2.4.2 COMUNICAREA RP PRIN TRANSMITEREA DE MESAJE CLIENT-
SERVER
Pentru simularea comunicrii prin transfer de mesaje s-a utilizat softul Webots care
ofer posibilitatea simulrii n lumi virtuale. Mediul software Naosim nu oferea posibilitatea
simulrii mai multor roboi n acelai timp, ns se pot deschide mai multe instane ale
acestuia astfel nct se pot coordona roboii din lumea virtual (fig. 5.17). Conectarea
roboilor la calculatorul gazd se realizeaz prin protocolul TCP/IP, fiind adresai prin IP i
PORT. Accesul la roboii Nao este posibil att de pe maina de calcul local ct i din reea.
Capitolul 5
92
n fig. 5.18 se prezint
adresele celor 4 roboi simulai n
lumea virtual creat, ntr-o
imagine extras din softul
Choreographe. Datorit faptului
c toi sunt simulai pe aceeai
main, roboii au aceleai adrese
IP difereniindu-se prin numrul
portului pe care l ascult.
Datorit faptului c
modulul/funcia ALInfrared este
disponibil numai pe robot ci nu i
pe maina local pentru simulare,
a fost implementat o clas
asemntoare ca mod de
funcionare cu ALInfrared (clas
specific roboilor Nao) pe care
s o putem folosi la simulare. n
figura 5.19 prin linii ntrerupte este reprezentat arhitectura implementat pentru aplicaiile
din aceast lucrare, iar prin linii continue arhitectura modulului ALInfrared instalat pe robot.
n mod normal, roboii
pot comunica ntre ei n
mod independent de
alte resurse prin
intermediul funciilor
IR Send i IR Get.
Unul dintre roboi
trimite date prin
metoda IR Send iar
cellalt le primete i le
interpreteaz prin
metoda IR Get.
Pentru o comunicare
mai eficient s-a folosit
un server de mesagerie.
Prin intermediul
interfeei unui robot
pleac o comand sub
form de mesaj ctre server, de unde este redirecionat ctre toi roboii conectai la acest
sistem. Acetia din urm primesc mesajul, l interpreteaz, dup care execut comanda
primit.
n fig. 5.20 este prezentat interfaa realizat n limbajul C# pentru a comanda un
robot i pentru a trimite mesaje altora. Aceast interfa conine: seciunea de conectare la
robot, este compus din cmpurile IP, Port, butonul Connect i statusul conexiunii
(Connected, Addr. not found, Not connected); seciunea de comand a robotului care are n
componen un cmp de tip select ncrcat cu tipurile de aciuni pe care le cunoate robotul,
butonul de trimitere a comenzii (Act) i statusul aciunii robotului (Ready, Acting... Done);
seciunea de trimitere a comenzilor ctre ceilali roboi (asemntor IR) este asemntoare cu
seciunea precedent, numai c de aceast dat destinatarii sunt toi ceilali roboi.
Fig. 5.17 Roboi Nao simulai n mediul Webots
Fig. 5.18 Conectarea roboilor Nao din Chroregraphe
Sistem inteligent de cooperare a roboilor pitori
93
Fig.5.19 Arhitectura comunicri prin infrarou vs prin transfer de date
5.3.2.4.3 COMUNICAREA VOCAL A RP
Comenzile de ridicare, coborre i deplasare a obiectelor trebuie executate simultan de
ambii roboi. Pentru a facilita acest lucru se impune sincronizarea roboilor prin comenzi
vocale folosind modulele de vorbire (ALTextToSpeech) i de recunoatere a vorbirii
(ALSpeechRecognition).
Modulul ALSpeechRecognition confer robotului abilitatea de a recunoate cuvinte
predefinite sau fraze n mai multe limbi (englez, francez, italian etc.).
ALSpeechRecognition se bazeaz pe tehnologii complexe de recunoatere a vorbirii furnizate
de: Acapela GROUP pentru NAO versiunea 3.x i NUANCE pentru versiunea 4.
n tab 5.2 sunt prezentai paii principiului de funcionare a recunoaterii vocale a
cuvintelor/expresiilor de comunicare ntre roboii Nao.
NAO NAO
Instant Messenger
IR Get IR
IR IR Get
Ac Ac
Ac
Ac
Send
Command
Send
Command
Fig. 5.20 Interfaa aplicaiei de comunicare prin transfer de date
Capitolul 5
94
Variabila WordRecognized este o list bidimensional i este organizat dup cum
urmeaz: [[fraza_1, precizie_1], [fraza_2, precizie_2], ..., [fraza_n, precizie_n]]; unde fraza_i
este una din frazele predefinite i precizie_i o estimare
a probabilitii ca aceast expresie este ntr-adevr ceea
ce a fost pronunat de ctre vorbitor.
Valorile ncrcate n variabila WordRecognized
sunt ordonate descresctor n funcie de precizie astfel
nct fraza cea mai probabil este pe primul loc.
Comenzile care compun sarcinile de manipulare
a unei echipe compus din doi roboi cum ar fi ridicarea
i deplasarea obiectului trebuiesc executate simultan de
ambii roboi participani la aceast operaie de
cooperare.
Partea de sincronizare a roboilor n mediile de
lucru a fost i este un subiect tratat i analizat n multe
lucrri de specialitate precum [Yasuda, 2012; Sanhoury,
2012]. Sincronizare prin comunicare verbal a fost
dezvoltat i n aceast lucrare pentru o rapiditate mai
mare i o simulare ct mai natural a comportamentului
uman. Pentru a sincronizeze s-au folosit comenzi vocale
care au la baz modulele de vorbire (ALTextToSpeech)
i de recunoatere a vorbirii (ALSpeechRecognition).
n fig. 5.21 este prezentat schema de
sincronizare a RP. n funcie de ordinea n care roboii
ajung n poziia de ridicare a obiectului se va stabili
robotul master (care va da comanda de start) i robotul
slave (care va asculta comanda i va confirma).
Neavnd posibilitatea de a apela la evenimentele
generate de recunoatere a vorbirii (acestea nefiind
implementate n API-ul pentru NAOqi C#) s-a
dezvoltat o funcie care monitoriz periodic memoria
robotului (mai precis variabila SpeechDetected) la un
interval de 500 de milisecunde controlat prin aplicaie.
n fig. 5.22 se prezint schema logic de detecie i
recunoatere a cuvintelor necesare comunicrii vocale
ntre roboii RP (modulul de recunoatere vocal). Cnd
Tab. 5.2 Paii comunicrii prin voce
Nr. Descriere
I.
nainte de nceperea comunicrii, ALSpeechRecognition alimenteaz cu o list
de fraze care s fie recunoscute
II.
Dup nceperea comunicrii, ALSpeechRecognition stocheaz n variabila
SpeechDetected, un parametru de tip boolean care specific dac vorbitorul
este auzit sau nu
III.
n cazul n care un vorbitor este auzit, cuvntul care are precizia cea mai mare
din lista setat iniial este plasat n variabila WordRecognized
Start
Modul de
recunoatere
vocal
Cuvnt=ready
Da
Trimite robot ului
cuvntul Start
pent ru a fi
pronunat
Nu
Cuvnt=start
Nu
Trimite robot ului
cuvntul Ready
pent ru a fi
pronunat
Da
Trimite robot ului
cuvntul Ok
pent ru a fi
pronunat
Ateapt numarul
de secunde pana la
urmatorul multiplu
de 5
Executa comanda
de ridicare
Stop
Modul de
recunoatere
vocal
Fig. 5.21 Schema de sincronizare a
RP
Sistem inteligent de cooperare a roboilor pitori
95
valoarea variabilei SpeechDetected devine true funcia dezvoltat
citete din nou n memoria robotului, dar de aceast dat n
variabila WordRecognized i extrage primul cuvnt detectat
mpreun cu precizia aferent lui. Valoarea implicit pe care
precizia cuvntului trebuie sa o depeasc este 0.3 dar i aceasta
poate fi controlat prin setrile aplicaiei. Dac ntr-adevr
cuvntul detectat este foarte probabil sa fie cel pronunat de
vorbitor clasa va trimite mai departe acest cuvnt aplicaiei.
Ajuns n poziia de ridicare a obiectului robotul va
pronuna cuvntul ready i i va iniializa modulul pentru
recunoaterea vorbirii pentru viitoarele comenzi. Primul robot
ajuns n poziia de ridicare se va atepta s detecteze cuvntul
ready iar dup ce este detectat el va pronuna comanda start i va
atepta confirmarea (prin detectarea cuvntului ok).
Al doilea robot ajuns n poziia de ridicare va pronuna
cuvntul ready i va atepta comanda start, iar dupa ce aceast
comand a fost detectat va pronuna cuvntul ok pentru
confirmare.
Procesarea cuvintelor prin modulul de detectare nu este
instantanee aadar pentru garantarea executrii simultane a
comenzii de ridicare procesul fiecrui robot va nghea pn cnd
numrul secundelor orei curente va ajunge la urmtorul multiplu
de 5 (anexa 4).
5.4 EXECUIA OPERAIILOR I TESTRI N MEDII DE LUCRU
VI RTUALE
n vederea implementrii eficiente a proceselor de manipulare i deplasare n mediile
de lucru reale s-a conceput i dezvoltat un mediu de lucru virtual care a permis testarea i
corectarea etap cu etap a lucrului cu sistemul NaoCoop. n fig 5.23 este prezentat fereastra
principal a aplicaiei printe
de testare a operaiei de
manipulare a unui obiect de
ctre doi roboi care permite
controlarea unuia din roboi i
pornirea aplicaiei consol.
n fereastra principal a
aplicaiei se evideniaz
urmtoarele module: Master
Robot, conine setrile pentru
conectarea la robotul principal
i butoanele de comand pentru
pornire/oprire a robotului; Slave
Robot: conine setrile pentru
conectarea la robotul secundar
i butonul pentru pornire a
aplicaiei consol
NaoCoopConsoleApplication.
Fig 5.23 Aplicaia NaoCoopFormsApp
Monitorizeaz
variabila
SpeechDetected din
memoria robotului
Precizie>=0.3
Citete prima fraz
din memoria
WordRecognized
SpeechDetected
=true
Cuvnt de
identificat
Returneaz
cuvntul
Fig. 5.22 Modulul de
recunoatere vocal
Capitolul 5
96
Rularea aplicaiei va porni automat robotul secundar, oprirea fcndu-se din linia de comand
a aplicaiei.
General Settings se specific setrile generale pentru roboi: Mark ID: indic ID-ul
NaoMark-ului la care robotul trebuie s ajung; Mark Size, indic mrimea NaoMark-ului de
mai sus n metri; Master Robot Grab Location, indic locaia (stnga sau dreapta) de apucare
a obiectului pentru robotul principal; Slave Robot Grab Location, indic locaia (stnga sau
dreapta) de apucare a obiectului pentru robotul secundar.
Debug Settings seciune este vizibil n modul debug ce conine setri avansate pentru
execuia robotului; Start State, indic starea de start a robotului; Stop Distance, indic distana
de NaoMark la care robotul ar trebui sa se opreasc; Advance Distance, indic distana cu
care robotul avanseaz spre NaoMark; Grab Location (x,y), indic distana pe x i y pe care
robotul trebuie s o parcurg pn ajunge n punctul de ridicare al obiectului.
Status permite evidenierea strii de execuie a robotului.
Pentru executarea operaiilor utilizatorul folosete pagina Executions (fig. 5.24)
Aceast pagin conine iniial
un chestionar generat dinamic
n funcie de nregistrrile din
tabelul Requirements al bazei
de date. Pentru fiecare cerin
din baza de date se va afia un
cmp text n care userul
introduce o valoare n funcie
de datele problemei. Dup
completarea tuturor
cmpurilor de cerine n
funcie de valorile acestora,
aplicaia va afia operaiile
care ndeplinesc datele de
intrare sub form de butoane.
Pentru executarea
secvenelor asociate operaiei
gsite n urma completrii
formularului cu date de intrare
utilizatorul folosete butonul
aferent operaiei dup care se
va afia o fereastra (fig. 5.25)
n care se permite s selecteze
ce roboii. Roboii afiai n
aceast fereastr provin din
tabela Robots din baza de date
i se pot edita de ctre
inginerul de cunotine n
sectiunea Settings.
Operaia, mpreun cu
selecia de roboi vor fi validate
de ctre modulul NaoCoopLib.
Dac se gsesc erori la validare
(numrul de roboi sau versiunile lor nu coincid cu cerinele operaiei) atunci userul va fi
nevoit s selecteze din nou roboii. Daca nu sunt erori de validare atunci se afieaz fereastra
de execuii (fig. 5.26).
Fig.5.25 Selectarea roboilor executani
Fig. 5.24 Fereastra Executions a sistemului NaoCoop
Sistem inteligent de cooperare a roboilor pitori
97
Aceast fereastr conine informaii despre operaia curent (nume i status), despre
roboi (nume, ip, port, status, starea curent, comanda n execuie). Execuia poate fi pornit
sau oprit prin butoanele de execuie, aciuni ce vor afecta direct starea roboilor (pornirea
unei execuii va lansa automat secvenele i roboi afereni).
Fig. 5.26 Fereastra de execuie
Statusul operaiei, statusul robotului, starea curent i comanda n execuie se
actualizeaz n timp real n funcie de evoluia strilor, folosind evenimentele din librria
NaoCoopLib. Fiecare modificare n automatul finit al robotului este salvat ntr-un fiier text
(fig. 5.27).
Fig. 5.27 Fiierul text cu evoluia mesajelor de informare
5.5 CONCLUZI I
Acest capitol rspunde obiectivelor specifice ale tezei de concepie, modelare,
algoritmizare i implementare a unui sistem inteligent de cooperare a RP. Sunt prezentate pe
rnd toate procesele online ale sistemului NaoCoop cuprinznd modulele de cooperare i de
sincronizare a roboilor din cadrul echipei ce execut operaii n mediul industrial.
Capitolul 5
98
Scopul sistemului inteligent dezvoltat const n executarea unei operaii complexe de
manipulare de ctre o echip de roboi care coopereaz pentru ndeplinirea cu succes a
acesteia. Sistemul implementat dispune de o interfa simpl i prietenoas, prin care
utilizatorul/inginerul de cunotine poate controla echipa de RP. Fiecare robot component al
echipei este dezvoltat avnd propriul su set elementar de secvene elementare pe care le
poate executa. Atunci cnd se constat ca un singur robot pitor nu este n msur s execute
operaia independent (motivul pentru care acest sistem a fost construit) sunt utilizai doi roboi
pentru o execuie cooperativ, folosind o baz de date, o baz de secvene i o baz de planuri
de operaii ca suport.
Baza de date conine toate informaiile necesare pentru a efectua operaii complexe.
Baza de secvene cuprinde toate secvenele elementare nvate de roboi offline. Baza de
planuri de operaii conine lista tuturor planurilor rezultate n urma planificrii secvenelor
elementare nvate n funcie de operaia cerut. Sistemul dezvoltat permite i controlul de la
distan a echipei de RP din mediul industrial.
6. TESTE I EXPERIMENTE CU SISTEMUL NaoCoop
6.1 I NTRODUCERE
n vederea testrii performanelor rezultatelor sistemului inteligent de cooperare
NaoCoop descris n detaliu n cap. 5, au fost efectuate experimente n mediul real utiliznd o
echip format din doi roboi pitori NAO. Pentru pregtirea roboilor i a mediului de lucru
pentru experimente au fost realizate urmtoarele: ncrcarea bateriilor roboilor, punerea n
funciune a sistemului wireless, delimitarea zonei de lucru i generarea acesteia.
Scopul experimentelor de cooperare prezentate n acest capitol const n efectuarea
unei analize detaliate asupra modului de manipulare i
deplasare prin cooperare a roboilor NAO, precum i
evaluarea performanelor de execuie a operaiilor compuse
din secvene elementare nvate i salvate n baza de
secvene. Fluxul de realizare a experimentelor de cooperare
prezentat n fig. 6.1. conine 5 pai. Primul pas presupune
dezvoltarea mediului de lucru pentru experimente ce urmeaz
a fi realizate n vederea validri algoritmilor sistemului
dezvoltat. Urmtorul pas const n definirea operaiilor pentru
experimente. n continuare, la pasul trei are loc elaborarea
programului de experimente; la pasul 4 se realizeaz
experimentele propuse. Procesarea rezultatelor experimentelor
obinute cu echipa de roboi pitori Nao are loc la pasul 5.
n vederea unei analize ct mai detaliate a modului de
cooperare pentru manipularea de diferite obiecte a sistemului
NaoCoop n mediile de lucru, au fost concepute scene de lucru
n care s-au realizat multiple teste ce au pus accent pe diferite
aspecte ale cooperri roboilor, modul de planificare a
sarcinilor, precizia atingerii intelor, timpul necesar pentru
parcurgerea i realizare unor operaii. n prealabil pentru
testarea sistemului i evidenierea cu o precizie ct mai bun a
derulrii experimentelor, precum i a performanelor obinute, s-a dezvoltat o replic a scenei
reale de lucru n mediul virtual Webots.
Pentru realizarea experimentelor au fost urmate i respectate urmtoarele aspecte
specifice:
a. fiecare robot existent adugat n echip trebuia s fi fost nregistrat n baza de date
cu toate datele aferente acestuia (caracteristici, sarcini, secvene care le poate executa);
b. pentru fiecare robot al echipei s-au nvat secvene elementare stocate n baza de
secvene;
c. toate datele necesare fluxurilor de execuie a operailor au fost nregistrate anterior;
d. operaiile complexe cerute sunt formate din secvene nvate anterior, n caz
contrar utilizatorul este avertizat c operaia dorit are secvene elementare necunoscute nc
de roboi.
Pentru aplicarea modulului de planificare a manipulrii obiectelor n cele mai bune
condiii s-a inut cont de urmtoarele aspecte:
- mediul de lucru pentru experimente este special construit n laborator;
- s-a evitat amplasarea obiectelor de manipulat direct pe podea;
- s-au respectat principiile legate de economia de micare;
- s-a ncercat pe ct posibil planificarea i monitorizarea operaiilor pe durata
deplasrii;
Fig. 6.1 Etapele procesului de
realizare a experimentelor
Dezvoltarea mediului de
lucru pentru experimente
Definirea operaiilor
pentru experimente
Elaborarea programului
de experimente
Realizarea experimentelor
Procesarea rezultatelor
Capitolul 6
100
- s-au utilizat RP umanoizi Nao pentru a reduce limea culoarelor de acces i astfel s-
a exploatat n mod optim volumul mediului de lucru.
6.2 DEZVOLTAREA MEDI ULUI DE LUCRU
Spaiul de lucru (fig. 6.2) pentru realizarea experimentelor are o lungime de 4,3 m i
lime de 5 m i se afl n laboratorul centrului de cercetare de Robotic i Realitate virtual
al Universitii Transilvania din Braov.
Fig. 6.2 Mediul de lucru pentru experimente de cooperare a roboilor Nao
a
b
Fig. 6.3 Reprezentarea spaiului de lucru al experimentului de cooperare pentru manipularea unei
bare lungi n: a - NAOsim, b - Webots(b)
Teste i experimente cu sistemul NaoCoop
101
Punctele de deplasare pan la obiectul de manipulat sunt calculate n urma identificrii
Naomark-ului specific fiecrui obiect n parte (numrul 112 pentru bar i numrul 64 pentru
obiectul de tip cutie, care reprezint punctul de mijloc al obiectului de manipulat) i sunt
msurate raportndu-se la poziia actual a robotului, fiind trimise ca i coordonate fixe
acestora pentru deplasare. Scena virtual (fig. 6.3) asociat scenei reale, reprezint o interfaa
de lucru ntre sistemul dezvoltat i mediul real creat pentru nvarea diverselor secvene de
manipulare i testare de sarcini concrete.
Scenariul de testare simulat n condiii de laborator este prezentat i in capitolul 3.
6.3 DEFINIREA OPERAIILOR PENTRU EXPERIMENTE
Pentru testarea sistemului de cooperare NaoCoop s-a optat pentru dou operaii
complexe de manipulare a obiectelor n mediul de lucru, operaii care nu se pot executa de
ctre un singur robot pitor: OP1, manipularea unei bare lungi i OP2, mpingerea unui corp
voluminos.
Aceste operaiile constau n manipularea obiectelor de ctre echipa de doi RP i
deplasarea acestora n diferite puncte finale aflate la distane de 3m, respectiv 6 m relativ la
poziia iniial a obiectului. Aa cum au fost prezentate operaiile n cap. 4, acestea sunt n
final sume de secvene elementare nvate anterior de roboii Nao i stocate n baza de
secvene. Scenariul poziionrii roboilor i obiectelor n planul unei operaii este prezentat n
fig. 6.4.
Obiect de
manipulat
Punct final 2
(6m)
Punct final 1
(3m)
RP1
RP2
D1
D2
(0,0,0)
(3,1,20)
(6,1,5)
Fig. 6.4 Scenariul de lucru asociat operaiilor pentru experimente
n urma procesului de planificare a operaiilor cu algoritmul prezentat n cap. 4 au
rezultat urmtoarele planuri i succesiuni de secvene elementare:
- OP1: SL9 - poziionarea pentru manipulare a unei bare cu diametrul de 5cm aflat la
nlimea de 25 cm, SL1 - prinderea obiectului de jos n sus (manipulare local iniial), SM1-
deplasarea cu obiectul (manipulare n micare) i SL13 - eliberarea obiectului (manipulare
local final).
- OP2: SL14 - poziionarea pentru manipulare a unei cutii prin mpingere, SM10-
deplasarea cutiei prin mpingere (manipulare n micare) i SL10 - rotirea robotului
(orientarea robotului).
Capitolul 6
102
nainte de fiecare proces de manipulare conform planului rezultat are loc identificarea
obiectului de manipulat n mediul de lucru i deplasarea pn la acesta conform algoritmului
dezvoltat prezentat n cap. 3.
6.4 ELABORAREA PROGRAMULUI DE EXPERI MENTE
n cadrul programului experimentelor au fost stabilite regulile de msurare a timpilor
execuiei operaiilor (de la plecarea roboilor din punctul iniial pn la finalizarea execuiei
operaiei), marcarea punctelor iniiale i finale (punctele n care trebuie s ajung echipa de
roboi cu obiectul). Programul de experimente const n testarea i msurarea timpilor
realizai de echipa de roboi pitori Nao pentru ndeplinirea cu succes a operaiilor complexe.
Astfel pentru msurarea timpilor de execuie a operaiilor de manipulare s-a pornit
cronometrul odat cu nceperea localizrii obiectului n mediul de lucru de ctre primul robot
Nao din echip, i pn la atingerea intei (punctului final). Punctele iniiale ale roboilor i
punctele finale ale obiectelor de manipulat au fost marcate pentru o identificare mai uoar la
repetarea testelor. n cadrul programului s-a hotrt un numr de 12-15 repetiii ale
experimentelor pentru fiecare situaie n parte (cnd obiectul este deplasat 3 m-punct final 1
sau 6 m-punct final 2).
6.5 REALI ZAREA EXPERI MENTELOR DE COOPERARE
PENTRU MANI PULARE
Roboii Nao sunt deplasai n poziii diferite, n funcie de obiectele de manipulat,
conform programului, innd cont de centrele de greutate ale obiectelor. Pentru fiecare dintre
cele 2 obiecte de forme i greuti diferite au fost efectuate 15, respectiv 12 teste de
manipulare. n fig. 6.5 i fig. 6.6 sunt prezentate secvene din micrile efectuate pentru
manipularea celor 2 obiecte de tip bar i respectiv de tip cutie.
Fig 6.5 Secvene din traectoriile operaiei OP1
Teste i experimente cu sistemul NaoCoop
103
n fig. 6.6 se prezint secvene ale celuilalt experiment ce presupune cooperarea
roboilor Nao pentru manipularea unei cutii de dimensiuni mari prin mpingere.
Fig. 6.6 Secvene din traiectoriile operaiei OP2
Pentru derularea experimentelor s-a inut cont de planul de experiment stabilit, astfel
c RP1 i RP2 au plecat din poziiile iniiale marcate, obiectul de manipulat s-a identificat
prin marker-ul poziionat n centrul acestuia, iar punctul final a fost de asemenea marcat pe
duumea pentru a se putea interpreta precizia de atingere a intei.
Rezultatele obinute n urma testrii sistemul dezvoltat subliniaz simplitatea de a crea
operaii care sunt trimise spre execuie echipei de roboi. Execuia curat i simpl de
funcionare, precum i feedback constant primit de la roboii echipei de ctre utilizator au fost
punctele de interes apreciate ale aplicaiei. Feedback-ul primit de un utilizator de la echipa de
roboi comandat se realizeaz n timp real i este prezentat n fig.6.7. Utilizatorul primete
informaii legate de statusul i starea curent a robotului i comanda executat la un anumit
moment de timp.
Fig. 6.7 Feedback-ul primit constant i n timp real de la roboi n interfaa aplicaiei NaoCoop
Capitolul 6
104
6.6 PROCESAREA REZULTATELOR EXPERI MENTELOR DE
COOPERARE
n timpul experimentelor au fost urmrite secven cu secven deplasrile roboilor la
punctul de identificare a obiectului de
manipulat, precizia de atingere a intei,
manipularea pieselor/obiectelor n mod
sincron, deplasarea acestora i toi paii
intermediari. Pe parcursul experimentelor nu
s-au evideniat coliziuni cu obstacolele din
mediu i nici pierderi de semnale nregistrate
ntre sistem i roboi. Implementarea n
mediul real i rezultatele prezentate nu au
nregistrat eecuri, experimentele
confirmnd robusteea algoritmilor i a
sistemului conceput, validnd astfel
rezultatele prezentate teoretic.
n tab. 6.1 sunt prezentai timpii
nregistrai de echipa de roboi ce duce la
ndeplinire operaia complex de depozitare
a unui obiect de forma unor bare lungi. Au
fost sintetizate rezultatele corespunztoare
celor dou cazuri n care obiectul de
manipulat a fost depozitat la distane de 3 m,
respectiv 6 m de la punctul iniial. S-a
observat c n cazul depozitelor obiectelor
aflate la distane mai mari de 4m, precizia de
atingere a punctului final de ctre roboii Nao se nregistrau erori de poziionare (plaja de
eroare fiind de +/- 10 cm, eroare nu ntotdeauna acceptabil pentru operaii de manipulare,
deoarece obiectul trebuie s ajung cu o precizie mai mare n punctul final pentru a putea fi
preluat pentru urmtoarea operaie), motiv pentru care a fost nevoie de corecii n sistemul de
comand i control pentru reducerea acestor erori.
Fig.6.8 Timpii nregistrai pentru ndeplinirea cu succes a operaiei OP1
0
1
2
3
4
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
T
i
m
p
Test
Timp (min) Timp (min)
Tab. 6.1 Rezultatele obinute la executarea
operaiei OP1
Nr. test
Timp (min)
3m
Timp (min)
6m
1 3,45 4.14
2 3,55 4.22
3 3,29 4,00
4 3,29 4,05
5 3,36 4.10
6 3,28 3,58
7 4,01 4,37
8 4,02 4,35
9 3,27 4,32
10 3,33 4,01
11 3,29 4,01
12 3,31 4,03
13 3,55 4,24
14 3,40 4,26
15 4,00 4,36
Teste i experimente cu sistemul NaoCoop
105
Pe lng coreciile aferente fiecrei operaii s-au stabilit i limitri ale distanelor
pentru manipularea prin cooperare. Conform datelor din tab.6.1 variaiile timpilor pentru
ndeplinirea cu succes a sarcinii complexe de manipulare a unei bare de dimensiuni mari sunt
prezentate n graficele din fig. 6.8.
n urma efecturii celor 15 teste de manipulare pentru obiectul de tip bar de 1,5 m,
rezult valoarea timpului mediu pentru ndeplinirea sarcinii de 3,49 minute pentru deplasarea
sa pn la punctul aflat la 3 m distan.
n tab. 6.2 sunt prezentai timpii nregistrai n care echipa de roboi execut operaia
complex de manipulare prin mpingere a obiectului 2 sub forma unei cutii mari. Pentru acest
experiment au fost tratate de asemenea sintetizate rezultatele celor dou cazuri n care
obiectul de manipulat a trebuit mpins o
distan de 3 m, respectiv 6 m, metri
msurai relativ la punctul iniial al
obiectului de manipulat. S-a observat c n
acest experiment, precizia de atingere a intei
(punctului) finale pentru distane mai mari de
3 m de ctre roboii Nao nregistrau erori mai
mici (plaja de eroare fiind de +/- 3-5 cm) fapt
pentru care nu a fost nevoie de corecii n
sistemul de comand i control.
Conform datelor din tab.6.2 variaiile
timpilor pentru ndeplinirea cu succes a
sarcinii complexe de manipulare a unei cutii
mari i grele sunt prezentate n graficul din
fig. 6.9.
n urma efecturii celor 12 teste de
manipulare pentru obiectul2, rezult valoarea
timpului mediu pentru ndeplinirea sarcinii
de 2,49 min (n cazul deplasrii pe orizontal
a cutiei pe o distan de 3 m).
Fig.6.9 Timpii nregistrai pentru ndeplinirea cu succes a operaiei OP2
0
0.5
1
1.5
2
2.5
3
3.5
1 2 3 4 5 6 7 8 9 10 11 12
T
i
m
p
(
m
i
n
)
Test
Timp (min) Timp (min)
Tab. 6.2 Rezultatele obinute la executarea
operaiei OP2
Nr. test
Timp (min)
3m
Timp (min)
6m
1 2,25 2,45
2 2,38 2,57
3 2,44 3,00
4 2,50 3,07
5 2,55 3,11
6 2,30 2,51
7 3,02 3,22
8 3,05 3,21
9 2,53 3,14
10 2,37 3,02
11 3,07 3,28
12 3,10 3,28
Capitolul 6
106
6.7 COMENTARI I ASUPRA REZULTATELOR
EXPERI MENTELOR
n urma finalizrii experimentelor se observ eficiena sistemului dezvoltat i
avantajele care vin odat cu implementarea acestuia. Idei noi pentru aplicaii viitoare n ceea
ce privete controlul unei echipe de roboi pentru a efectua operaii complexe au fost deduse
i n urma experimentelor.
Pe parcursul experimentelor s-au urmrit i aspecte de optimizare a cii roboilor pn
la int, influena obstacolelor fixe, precum i a altor factori externi ce au fost luai n
considerare, fiecare scenariu fiind tratat n mod diferit.
Sistemul implementat permite extinderea sa de la un sistem simplu, la unul extrem de
complex, n funcie de nevoile individuale, de roboii disponibili i caracteristicile acestora.
Tab. 6.3 Structura chestionarului
Seciune ntrebare Rspuns
Date
biografice
1.Vrst? 22 ani 3;
23 ani 3;
29 ani 2;
30 ani 2;
23 ani 2;
28 ani 1;
42 ani 1;
45 ani 1;
2.Sexul? M 67% F 33%
3.Ct de des utilizai calculatorul? 8.80 (1 nu l-am utilizat niciodat; 10
il utilizez n fiecare zi)
4.Ct de des interacionai cu roboi/ echipe de
roboi?
5.50 (1 nu am interacionat niciodat;
10 interacionez n fiecare zi)
5.Ct de familiarizat suntei cu tehnologiile de
SI?
5.90 (1 nu am auzit niciodat; 10
foarte familiarizat)
Date
specifice
6.Ct de repede se mic robotii din echipa? 6.30 (1 foarte ncet; 10 foarte
repede)
7.Ct de exacte sunt braele roboilor n
culegerea/prinderea/plasarea obiectelor int?
9.15 (1 foarte inexact; 10 foarte
exact)
8.Ct de des ai observat o sincronizare sigura
ntre roboi?
9.20 (1 niciodat; 10 tot timpul)
Evaluarea
calitii
10.Ct de naturale vi s-au prut experimentele
de cooperare a roboilor?
9.30 (1 foarte nenaturale; 10 foarte
naturale)
11.Ct de dificil vi s-a prut interaciunea cu
echipa de roboi?
12.Ct de interesant vi s-a prut interaciunea
cu echipa de roboi?
8.60 (1 dificila; 10 simplista)
8.90 (1 neinteresant; 10 -
interesant)
13.Ce lipsete aplicaiei pentru a fi mai uor
de interacionat cu echipa?
-
Teste i experimente cu sistemul NaoCoop
107
Experimentele de mai sus au fost executate de 15 operatori din diferite domenii
(studeni, doctoranzi i personal administrativ), care dup finalizarea acestora au completat un
chestionar ce st la baza culegerii informaiilor legate de interaciunea utilizator-echipa.
Chestionarul conine 13 ntrebri structurate pe 3 grupe si anume:
-Seciunea de informaii biografice, care conine ntrebri referitoare la datele
biologice i la cunotinele tehnice ale subiecilor.
-Seciunea de informaii specifice aplicaiei, conine ntrebri legate de particularitile
sistemului NaoCoop din timpul experimentului de manipulare.
-Seciunea de evaluare a calitii interaciunii, conine un set ntrebri care ncearc s
determine nivelul de dificultate i nelegere a aplicaiei care comanda robotii din mediul real.
Pentru analiza la rspunsurile la ntrebrile din chestionar s-a optat pentru selectare
unei note de la 1 la 10, cu specificaia pentru fiecare ntrebare n parte a notei
corespunztoare. n Tab. 6.3 sunt prezentate rezultatele obinute prin testarea a 10 de studeni,
3 doctoranzi i 2 persoane din personalul administrativ al universitii.
Conform datelor centralizate pentru ntrebarea 8, evaluarea sincronizrii RP a primit o
not de 9,2. Raportat la aceast valoare, rezultatul de la 8,70 de la ntrebarea 9 arat faptul c
folosirea acestui sistem NaoCoop reprezint o metod bun de interaciune a utilizatorilor cu
echipa i de control a acesteia. Marea majoritatea subiecilor au apreciat interaciunea cu
echipa de roboi real ca fiind nu foarte complicat (8,6). Interesul mrit asupra aplicaiei
NaoCoop este dat de nota ridicat obinut la ntrebarea 12 (8,90). ntreg sistemul este
perceput drept foarte natural (9,30), datorit sincronizrii roboilor participani ai acestuia
(9,20). Principalul punct slab al sistemului NaoCoop dezvoltat este evideniat folosind
ntrebarea 6, cu nota 6,30 , care reprezint viteza i rapiditatea algoritmului n execuia
sarcinilor complexe.
6.8 CONCLUZI I
n acest capitol sunt prezentate procesele de generare a scenelor de lucru pentru
experimentele de cooperare n vederea manipulrii obiectelor n mediile reale cu o echip
format din doi roboi Nao i n final analiza rezultatelor obinute.
Pentru experimentele realizate n medii reale, a fost nevoie de o pregtire adecvat a
mediului de lucru privind poziionarea obiectelor (la puncte fixe), ndeprtarea obstacolelor i
o pregtire a roboilor privind interfaarea cu sistemul de comand de cooperare dezvoltat.
Pentru cazul cooperrii n mediul de lucru cu ajutorul comunicrii wireless (directe) i
a comunicrii prin transmiterea de date prin mesaje, s-a constatat un timp de sincronizare a
roboilor cu aproximativ 30% mai mic n cazul comunicrii prin wireless; acesta a condus la o
scdere semnificativ a duratei execuiei operaiei cu aproximativ 15%. Dezavantajul major
constatat n urma acestor teste, este faptul c utiliznd comunicarea prin transfer de date,
acestea se transmit mai greu i programarea acestora se face mai anevoios.
Timpii nregistrai de echipa de roboi pentru ndeplinirea operaiilor complexe testate
au fost sintetizai i interpretai, astfel c pentru obiectele de manipulat ce au fost depozitate la
distane de 6 m s-a observat c precizia de atingere a intei finale nregistra erori de +/- 10cm,
eroare nu ntotdeauna acceptabil pentru operaii de manipulare prin cooperare. n acest caz a
fost nevoie de corecii n sistemul de comand i control i limitri ale distanei pentru
manipulare. Pentru cazul distanelor mai mici de 6 m s-a observat o precizia de atingere a
intei finale mai bun, cu o abatere de +/- 3-5 cm, n acest caz nefiind nevoie de corecii n
sistemul de comand i control.
n cadrul experimentelor de manipulare bazate pe cooperarea roboilor a fost urmrit
att traseul i deplasarea roboilor pn la obiectul de manipulat, ct i nivelul de apropiere de
Capitolul 6
108
acesta, sincronizarea ntre acetia i procesul de manipulare. Pe parcursul acestor experimente
nu au avut loc coliziuni cu obstacole din mediul de operare, implementarea n mediile reale
validnd soluiile teoretice propuse.
7. CONCLUZII, CONTRIBUII PROPRII,
DISEMINAREA REZULTATELOR I DIRECII DE
CERCETARE N VIITOR
7.1 CONCLUZI I FI NALE
ntrebarea principal la care prezenta lucrare rspunde este: Cum se poate mbuntii
lucrul n echip a roboilor pitori n mediile industriale? nc de la nceput, roboii mobili
pitori au fost concepui s execute n mediile industriale, sarcini de la cele mai simple la
cele mai complexe ntr-un mod repetitiv. Folosirea echipelor de roboilor pitori n mediile
industriale, n procese complexe de transport local, manipulare i monitorizare, raportat la
echipe de roboi fici, aduce un plus de utilitate prin acoperirea unor spaii de lucru mai mari,
precum i prin creterea adaptabilitii, flexibilitii i complexitii. Echipele de roboi
pitori sunt integrate n mediile industriale pentru diferite operaii: manipularea i transportul
local de piese/obiecte/scule, asamblarea/mpachetarea de produse, execuia de operaii
tehnologice, inspecia i monitorizarea sistemelor i proceselor etc.
Dei resursele hardware ale roboilor pitori au atins n ultimii ani un nivel nalt n
ceea ce privete performana i fiabilitatea, din studiile literaturii de specialitate reiese faptul
c partea software este nc limitat de performanele sczute privind flexibilitatea,
portabilitatea, comunicabilitatea i inteligena. Astfel, actual se impune dezvoltarea de nivele
superioare ale sistemelor inteligente existente de comunicare/cooperare a roboilor n cadrul
echipelor din care fac parte, precum i noi interfee de comunicare cu operatorul uman.
n urma analizei stadiului actual al cercetrilor de implementare i adaptare a echipelor
de roboi pitori n activiti din mediile industriale, se evideniaz tendina de dezvoltare a
acestora ca sisteme inteligente, cu capaciti evoluate de cooperare, planificare i interaciune
cu operatorul.
Prin cercetrile dezvoltate n cadrul acestei teze s-a pus n eviden posibilitatea
realizrii unei comunicaii simple i necostisitoare care s permit includerea celor doi roboi
n cadrul unor sarcini de cooperare. Timpul de rspuns i modul de interaciune permit
dezvoltarea cu succes de aplicaii de transfer direct de obiecte sau asamblarea unor
componente n cadrul unor spaii de lucru diverse.
Prezenta cercetare a condus la un sistem inteligent de cooperare ce ajut la
coordonarea unei echipe de roboi pitori pentru execuia de operaii complexe ce au loc n
mediile industriale, cu algoritmii de sincronizare, nvare, decizie, planificare i selectare
evaluate. La baza generrii operaiilor complexe au stat secvenele elementare care au fost
nvate de ctre roboii pitori prin tehnica demonstrativ i stocate n baz de secvene.
Tehnica de nvare abordat a fost corelat i dezvoltat conform caracteristicilor roboilor
pitori Nao astfel: pentru sarcinile de localizare a obiectelor s-a optat pentru utilizarea
markerilor Nao; pentru sarcinile de manipulare s-au construit faze formate din secvene
elementare nvate preliminar; pentru sarcinile de deplasare s-au conceput i dezvoltat funcii
de calcul a distanei (GotoNaomark). Toate sarcinile, fazele i respectiv secvenele elementare
componente ale unei operaii complexe au fost descrise cu reguli de producie cu structura IF
condiie THEN aciune, stabilite pe baza datelor de intrare (cerinelor) impuse de utilizator i
stocate ntr-o baza de cunotine.
n cadrul sistemului NaoCoop au fost dezvoltate i dou module: de comunicare i de
sincronizare a roboilor pitori din cadrul echipei ce execut operaii n mediul industrial. Din
Capitolul 7
110
dorina de a fii ct mai asemntori cu oamenii n ceea ce privete cooperarea propriu-zis,
nsuirea comunicrii verbale ntre RP a fost inevitabil. Astfel aceast capacitate de a
comunica prin cuvinte, propoziii i fraze a fost transpus i n sistemul NaoCoop, roboii
fiind programai s comunice prin trimitere i recepie de mesaje, mesaje interpretate printr-un
modul de recunoatere vocal.
Pentru un control simplu al echipei de roboi, sistemul dispune i de o interfa simpl
i prietenoas, prin care i se permite utilizatorului/inginerului de cunotine accesul la
informaiile despre roboi, respectiv despre echip, la planurile de operaii curente, editarea,
adugarea sau tergerea acestora.
Sistemul conceput i dezvoltat funcioneaz dup principiul n care dac se constat ca
un singur robot pitor nu este n msur s execute operaia independent sunt utilizai doi
roboi pentru o execuie prin cooperare, folosind o baz de date, o baz de secvene i o baz
de planuri de operaii ca suport.
Baza de date conine toate informaiile necesare pentru a efectua operaii complexe.
Baza de secvene cuprinde toate secvenele elementare nvate prin demonstrare offline. Baza
de planuri de operaii conine lista tuturor planurilor rezultate n urma planificrii secvenelor
elementare nvate n funcie de operaia cerut.
Performanele sistemului inteligent de cooperare NaoCoop au fost testate prin
experimente de cooperare n vederea manipulrii obiectelor n mediul virtual i cel real,
utiliznd o echip format din doi roboi pitori de tip Nao, iar rezultatele au fost analizate i
interpretate. Astfel s-a observat c pentru obiectele de manipulat ce au fost depozitate la
distane de 6 m, precizia de atingere a intei finale de ctre roboi nregistrau erori de
poziionare de +/- 10cm, eroare nu ntotdeauna acceptabil pentru operaii de manipulare prin
cooperare. n acest caz a fost nevoie de corecii n sistemul de comand i control al
sistemului i de limitri de distane pentru manipularea prin cooperare. Pentru cazul
distanelor mai mici de 6 m s-a observat o precizie de atingere a intei finale mai bune, cu o
abatere de +/- 3-5 cm, n acest caz nefiind nevoie de corecii n sistemul de comand i
control. Pe parcursul experimentelor din mediul real nu au avut loc coliziuni cu obstacole din
mediul de operare, implementarea construit validnd soluiile teoretice propuse.
7.2 CONTRIBUII PROPRII
Prezenta teza de doctorat are un profund caracter inovativ, aducnd o serie de
contribuii originale privind conceperea, implementarea i testarea unui sistem inteligent de
cooperare a unei echipe de roboi pitori pentru operaii n medii industriale. Pornind de la o
metodologie de cercetare judicioas urmrind ndeplinirea scopului i obiectivelor propuse, n
urma cercetrilor efectuate precum i a rezultatelor obinute se prezint urmtoarele
contribuii proprii:
1. Analiza critic a studiilor teoretice i experimentale din testarea de specialitate privind
funciile i modulul de integrare a echipelor de roboi mobili n medii industriale,
precum i stadiul actual al cercetrilor n domeniul cooperrii roboilor i a echipelor
de roboi.
2. Concepia, dezvoltarea i implementarea unui algoritm de deplasare cu recalibrarea pe
traseu a roboilor pitori n medii industriale.
3. Conceperea unei baze de secvene elementare prin nvarea prin demonstrare a
roboilor pitori.
Concluzii
111
4. Concepia, dezvoltarea i implementarea sistemului inteligent NaoCoop, care are la
baz algoritmului de cooperare i de sincronizare bazat pe comunicare vocal.
5. Metodologia de dezvoltare a unui sistem de simulare i testare n medii virtuale a
funcionrii algoritmilor sistemului NaoCoop.
6. Concepia, dezvoltarea i implementarea unui algoritm de planificare inteligent a
operaiilor i sarcinilor de manipulare a unei echipe de roboi pitori pe baza regulilor
de producie stocate n baza de cunotine.
7. Concepia, dezvoltarea i implementarea unor interfee grafice bazate pe arhitecturi
care integreaz toate componentele sistemului, nregistreaz i prelucreaz datele
aflate n baza de date, pentru conducerea echipelor de roboi n timp real.
8. Dezvoltarea, concepia i implementarea unei metode de sincronizare a roboilor
pitori ce are la baz un algoritm de recunoatere vocal.
9. Programe i metodologii de experimentare pentru evaluarea i validarea sistemului
inteligent de cooperare elaborat i a rezultatelor teoretice obinute.
10. Metoda de evaluare a performanelor sistemului NaoCoop i a interaciunii om-echip
la executarea unor operaii complexe n medii industriale.
7.3 VALORIFICAREA REZULTATELOR CERCETRII
7.3.1 LUCRRI PUBLICATE
n perioada de realizare a prezentei teze de doctorat, autoarea a elaborat 11 lucrri
tiinifice ( 6 prim autor i 5 coautor) publicate n jurnale i buletine de conferine, dup cum
urmeaz:
Conferine cu proceedings ISI
1. Panfir, A.N, Covaci, A., Postelnicu, C.C; Mogan, Gh., Control Interfaces for a
Collaborative System Using LabView Package, DoCEIS 2012, pp 33-40, 2012.
2. Panfir, A.N, Covaci, A., Postelnicu, C.C, Mogan Gh., An Intelligent Tasks
Planning System for Industrial Mobile Robots, MTM & Robotics 2012 Mechanical
Transmissions (MTM) and the International Conference on Robotics
(Robotics12), Clermont-Ferrand, France, 6-8 iunie, pp 308-315, 2012
3. Panfir, A.N, Boboc, R. G., Mogan, Gh., NAO Robots collaboration for object
manipulation, Optirob 2013 Applied Mechanics and Materials vol. 332, pp 218-
223, 2013.
4. Panfir, A.N., Boboc, R. G., Mogan Gh., Intelligent Mobile Robots Cooperation
within a Tasks Oriented Environment, CINTI 2013, Budapest, Hungary, 2013.
5. Panfir, A. N, Butil E., Boboc, R., Mogan, Gh., Controlling humanoid NAO
robots using a web interface, 3rd World Conference on Information Sciences
(WCIT-2012) , Barcelona, Spain. 14-16 Noiembrie, 2012.
Capitolul 7
112
6. Covaci, A, Panfir, A.N., Postelnicu, C.C, Talaba D., A Virtual Reality Simulator
for Basketball Free-Throw Skills Development, DoCEIS 2012,pp 105-112, 2012.
7. Postelnicu, C.C, Covaci, A, Panfir, A.N., Talaba D., Evaluation of a P300-Based
Interface for Smart Home Control , DoCEIS 2012, pp 179-186, 2012.
8. Butil, E.V., Panfir, A.N., Mogan Gh., Expert System for Coupling Selection,
Optirob 2013 Applied Mechanics and Materials Vol. 332, pp 314-318, 2013.
9. Boboc, R. G., Toma, M., Moga, H., Panfir, A.N., Talaba D., An Omnidirectional
System for Navigation in Virtual Environments, DoCEIS 2013, Caparica,
Lisabona, Portugal, pp. 192-199, 2013.
10. Boboc, R. G., Panfir, A.N., Talaba D., Learning New Skills by a Humanoid Robot
through Imitation, CINTI 2013, Budapest, Hungary, 2013.
Conferine cu proceedings BDI
11. Panfir, A.N, Covaci, A., Mogan, G., Mobile robots communication system using
LabView Package, ADEMS11 , Acta Technica Napocensis, Series Applied
Mathematics and MechanicsCluj-Napoca, Romania, 21-23 Septembrie, 2011.
7.3.2 PARTICIPRI LA CONFERINE
n perioada elaborrii tezei de doctorat autoarea a prezentat lucrri tiiifice n cadrul
urmtoarelor conferine:
1. International Conference on Robotics (Robotics 2010), Cluj-Napoca, Romnia, 23-25
Septembrie, 2010.
2. Doctoral Conference on Computing, Electrical and Industrial Systems Conference
(DoCEIS12), Caparica, Portugalia, 26-28 Februarie, 2012.
3. International Conference on Robotics (Robotics 2012), Clermont-Ferrand, Frana, 6-8
Iunie, 2012
4. 3rd World Conference on Information Sciences (WCIT-2012) , Barcelona, Spain. 14-16
Noiembrie, 2012.
5. International Conference on Biomechanics, Neurorehabilitation, Mechanical
Engineering, Manufacturing Systems, Robotics and Aerospace: Optimization of the
Engineering Systems (OPTIROB2013), Constana, Romnia, 20-23 Iunie, 2013.
7.3.3 PARTICIPRI LA CONTRACTE DE CERCETARE I
DEZVOLTARE
n perioada studiilor doctorale autoarea a participat ca membru n cadrul contractelor
POSDRU/107/1.5/S/76945 i PNII-IDEI 775/2010.
7.3.4 STAGI U EXTERN
n perioada studiilor doctorale autorul a participat la un stagiu extern de patru luni n
cadrul institutului de cercetare Fraunhofer Institute for Manufacturing Engineering and
Concluzii
113
Automation (Institutul IPA- Stuttgart) din Germania ntre 01.03.2012 i 30.06.2012 sub
ndrumarea cercettorului ing. Bubeck Alexander.
7.4 DIRECII DE CERCETARE VIITOARE
Cercetrile realizate, precum i rezultatele teoretice, experimentale i practice obinute,
integrate ntr-o structur logic de obinere de sisteme inteligente, acoper doar parial
diversitatea problemelor evideniate n urma stadiului actual prezentat. Astfel, n urma
studiilor realizate, precum i a rezultatelor obinute n cadrul acestei lucrri, se evideniaz
trei direcii principale de continuare a acestora:
- Conducerea unei echipe de roboi pentru cooperare, format din diferite modele i
tipuri de roboi, cu diferite capaciti.
- Dezvoltarea de scenarii pentru realizarea de operaii complexe n care exist
obstacole mobile i creterea complexitii operailor echipei de roboi.
- Studii privind interfee multimodale de comunicare om-roboi corelate cu noile
tendine de programare cognitiv a roboilor.
BI BLI OGRAFI E
1. [Aguilar, 1995] L. Aguilar, R. Alami, S. Fleury, M. Herrb, F. Ingrand, and F.
Robert. Ten autonomous mobile robots (and even more). In
IEEE/RSJ IROS, page 260267, 1995.
2. [Aleotti, 2010] Aleotti, J., Caselli, S., Interactive teaching of task-oriented robot
grasps, Robotics and Autonomous Systems, vol. 58, pag. 539-550,
2010.
3. [Alpopi,2002] Cristina ALPOPI. Creativitate si inovare. Cap.5. Elemente de
automatizare, cibernetizare i robotizare a proceselor
tehnologice,Bucuresti : Editura ASE , 2002.
4. [Arai, 2002] Arai, T., Pagello, E., Parker, L., E., Guest editorial advances in
multirobot systems. , Robotics and Automation, IEEE Transactions
on, Vol. 18, No. 5. pp. 655-661, 2002
5. [Arai,1993] T. Arai and J. Ota. Motion planning of multiple robots. In
IEEE/RSJ IROS, pages 17611768, 1992.
6. [Argall, 2009] Argall, B. D., Chernova, S., Veloso, M., Browning, B., A survey of
robot learning from demonstration, Robotics and Autonomous
Systems, vol. 57, pag. 469-483, 2009.
7. [Argall, 2010] Argall, B. D., Billard, A. G., A survey of Tactile Human Robot
Interactions, Robotics and Autonomous Systems, Vol. 58(10), pp.
1159-1176, Elsevier B.V., doi:10.1016/j.robot.2010.07.002, 2010
8. [Arkin, 1992] R. C. Arkin. Cooperation without communication: Multiagent
schema-based robot navigation. Journal of Robotic Systems,
9(3):351364, 1992.
9. [Arkin, 1998] Arkin, R. C., Behavior-Based Robotics, Cambridge, MA, USA,
MIT Press, 1998.
10. [Arkin, 2000] Arkin, R. C., Stoytchev, A., Combining deliberation, reactivity, and
motivation in the context of a behavior-based robot architecture,
Proceedings 2001 IEEE International Symposium on
Computational Intelligence in Robotics and Automation, IEEE
2000, pag. 290-295, 2000.
Bibliografie
115
11. [Asama, 1989] H. Asama, A. Matsumoto, and Y. Ishida. Design of an autonomous
and distributed robot system: ACTRESS. In IEEE/RSJ IROS, pages
283290, 1989.
12. [Asama, 1991] H. Asama, M. K. Habib, I. Endo, K. Ozaki, A. Matsumoto, and Y.
Ishida. Functional distribution among multiple mobile robots in an
autonomous and decentralized robot system. In IEEE ICRA, pages
19216, 1991.
13. [Atkinson, 2009] J. Atkinson and D. Rojas, On-the-fly generation of multi-robot team
formation strategies based on game conditions, Expert Systems
with Applications, vol. 36, pp. 6082-6090, 2009.
14. [Ayanian,2010] N. Ayanian and V. Kumar (2010) Decentralized Feedback
Controllers for Multi-Agent Teams in Environments with Obstacles.
IEEE Transactions on Robotics.
15. [Aylett, 1998] R. Aylett and D. Barnes. A multi-robot architecture for planetary
rovers. In Proceedings of the 5th ESA Workshop on Advanced
Space Technologies for Robotics and Automation, 1998
16. [Balakirsky, 2007] S. Balakirsky, S. Carpin, A. Kleiner, M. Lewis, A. Visser, J. Wang,
et al., Towards heterogeneous robot teams for disaster mitigation:
Results and performance metrics from RoboCup rescue, Journal of
Field Robotics, vol. 24, pp. 943-967, 2007.
17. [Barberd, 2011] Barberd, H. M., Izquierdo, M. A. Z, Skarmeta, A. F. G.: Web-
based Supervisory Control of Mobile Robots. Robot and Human
Interactive Communication. In Proceedings of the 10th IEEE
International Workshop, pp. 256-261 (2011)
18. [Barto ,1983] A.G. Barto, R.S. Sutton, and C.J.C.H. Watkins. Learning and
sequential decision making. In M. Gabriel and J. Moore, editors,
Learning and Computational Neuroscience: Foundations of
Adaptive Networks, pages 539603. MIT Press, 1983.
19. [Batarlien, 2007] Batarlien, N., Baublys, A. 2007. Mobile Solutions in Road
Transport. In: Transport, 22 (1), 55-60.
20. [Beckers,1994 ] R. Beckers, O. E. Holland, and J. L. Deneubourg. From local
actions to global tasks: Stigmergy and collective robotics. In Proc.
A-Life IV. MIT Press, 1994.
21. [Begley, 2008] Begley, S. M., Gesture Recognition and Mimicking in a Humanoid
Robot, MSc Thesis, Vanderbilt University, Nashville, Tennessee,
USA, 2008
Bibliografie
116
22. [Bell, 2010] M. Bell, Flexible object manipulation. PhD thesis, Dartmouth
College, Hanover, New Hampshire,2010.
23. [Belongie , 2002] S. Belongie, J. Malik, and J. Puzicha, Shape matching and object
recognition using shape contexts, Pattern Analysis and Machine
Intelligence, IEEE Transactions on, vol. 24, no. 4,pp. 509522,
2002.
24. [Beni,1988] G. Beni. The concept of cellular robotic system. In IEEE
Internationl , 1988.
25. [Bentivegna, 2004] Bentivegna, D. C., Learning from Observation Using Primitives,
Georgia Institute of Technology, 2004.
26. [Berman , 2010] S. Berman , Q. Lindsey , M. S. Sakar , V. Kumar and S. Pratt Study
of group food retrieval by ants as a model of multi-robot collective
transport strategies. In Robotics Science and Systems. Zaragoza,
Spain, June, 2010
27. [Berman, 2011] Spring Berman , Quentin Lindsey , Mahmut Selman Sakar , Vijay
Kumar and Stephen C. Pratt Experimental study and modeling of
group retrieval in ants as an approach to collective transport in
swarm robotic systems. Proceedings of the IEEE, 2011.
28. [Bhattacharya ,2011] Subhrajit Bhattacharya , Hordur Heidarsson , Gaurav S.
Sukhatme and Vijay Kumar Cooperative Control of Autonomous
Surface Vehicles for Oil Skimming and Cleanup. In Proceedings of
IEEE International Conference on Robotics and Automation
(ICRA). 9-13 May, 2011
29. [Bianchini, 2010] Bianchini, D., Montanelli, S., Aiello, C., Baldoni, R., Bolchini, C.,
Bonomi, S., Castano, S., et al., Emergent Semantics and
Cooperation in Multi-knowledge Communities: the ESTEEM
Approach, World Wide Web, Vol. 13(1-2), pp. 331. doi:
10.1007/s11280-009-0080-6, 2010.
30. [Biggs, 2003] Biggs, G., MacDonald, B., A survey of robot programming
languages, Proceedings of the Australasian Conference on Robotics
and Automation, CSIRO, 2003.
31. [Bingul, 2005] Bingul, Z., Ertunc, H. M., Oysu, C., Applying Neural Network to
Inverse Kinematic Problem for 6R Robot Manipulator with Offset
Wrist, Adaptive and Natural Computing Algorithms, pag. 112-115,
2005.
32. [Birk ,2005] Birk, A., Carpin, S., Chonnaparamutt, W., Jucikas, V.,Bastani, H.,
Delchev, I., Krivulev, I., Lee, S., Markov, S., & Pfeil, A. The iub
Bibliografie
117
2005 rescue robot team. In Robocup 2005: Robot Soccer World
Cup IX, Osaka, Japan, 2005
33. [Boboc, 2013a] Boboc, R. G.; Panfir, A.N.; Talaba D. Learning New Skills by a
Humanoid Robot through Imitation, CINTI 2013, Budapest,
Hungary, 2013.
34. [Boboc, 2013b] Boboc, R. G.; Panfir, A.N.; Talaba D. Learning New Skills by a
Humanoid Robot through Imitation, CINTI 2013, Budapest,
Hungary, 2013.
35. [Bond,1988] Alan Bond and Less Gasser., Eds., Readings in Distributed Articial
Intelligence. Morgan Kaufmann. 1988.
36. [Botterill, 2011] Botterill, T., Mills, S., Green, R., Bag-of-Words-Driven, Single-
Camera Simultaneous Localization and Mapping, Journal of Field
Robotics, Wiley Periodicals Inc., Vol. 28(2), pp. 204-226,
doi:10.1002/rob , 2011
37. [Boulebtateche, 2005] Boulebtateche, B., Fezari, M., Bedda, M., A voice Guiding System
for Autonomous Robots, Asian Journal of information Technology,
Vol. 4(12), pp. 1201-1207, 2005
38. [Breuer, 2011] Breuer, T., Giorgana, G. R., Ronny, M., Hochgeschwender, N.,
Holz, D., Hegger, F., Jin, Z., et al., Johnny: An Autonomous
Service Robot for Domestic Environments, Journal of Intelligent
and Robotic Systems, Springer, Vol.66(2), pp. 245-272,
doi:10.1007/s10846-011-9608-y, 2011
39. [Brooks, 2007] Brooks, A. G., Coordinating Human-Robot Communication, PhD
Thesis, Massachusetts Institute of Technology, 2007
40. [Brooks,1986] R. A. Brooks. A robust layered control system for a mobile robot.
IEEE Journal of Robotics and Automation, RA-2(1):1423, 1986.
41. [Burgard, 2000] Burgard, W. et al. 2000. Collaborative Multi-Robot Exploration.
Proc. IEEE International Conference on Robotics and Automation
(ICRA), San Francisco CA, 2000.
42. [Burger, 2012] Burger, B., Ferran, I., Lerasle, F., Infantes, G., Two-handed
gesture recognition and fusion with speech to command a robot,
Autonomous Robots, Vol. 32, pp. 129-147, doi:10.1007/s10514-
011-9263-y, 2012
43. [Butil, 2013] Butil, E.V., Panfir, A.N., Mogan G. Expert System for Coupling
Selection, Optirob 2013 Applied Mechanics and Materials Vol. 332,
pp 314-318, 2013.
Bibliografie
118
44. [Cai, 1995] A.-H. Cai, T. Fukuda, F. Arai, T. Ueyama, and A. Sakai.
Hierarchical control architecture for cellular robotic system. In
IEEE ICRA, pages 11911196, 1995.
45. [Caloud, 1990] P. Caloud, W. Choi, J.-C. Latombe, C. L. Pape, and M. Yim. Indoor
automation with many mobile robots. In Proceedings of the
International Workshop on Intelligent Robotics and Systems
(IROS), 1990
46. [Carpin, 2009] Carpin, S., Pagello, E., An experimental study of distributed robot
coordination, Robotics and Autonomous Systems, Elsevier, Vol.
57, pp. 129133 , doi: 10.1016/j.robot.2008.07.001, 2009
47. [Causse ,1995] O. Causse and L.H. Pampagnin. Management of a multi-robot
system in a public environment. In IEEE/RSJ IROS, pages 246
252, 1995.
48. [Charrow ,2012] Benjamin Charrow , Nathan Michael and Vijay Kumar
Cooperative Multi-Robot Estimation and Control for Radio Source
Localization. In Proc. of the Intl. Sym. on Experimental Robotics.
Quebec, Canada, iunie, 2012
49. [Chen, 1997] T. M. Chen, and R. C. Luo, Remote Supervisory Control of An
Autonomous Mobile Robot Via World Wide Web, IEEE
International Symposium Industrial Electronics. ISIE '97., vol. 1,
1997, pp. 60-64.
50. [Chen, 2013] Y.-J. Chen, K.-S. Hwang, and W.-C. Jiang, Policy sharing between
multiple mobile robots using decision trees, Information Sciences,
vol. 234, pp. 112-120, 2013.
51. [Chen,1994] Q. Chen and J. Y. S. Luh. Distributed motion coordination of
multiple robots. In IEEE/RSJ IROS, pages 14931500, 1994.
52. [Cheng ,2008] P. Cheng , J. Fink and V. Kumar Abstractions and Algorithms for
Cooperative Multiple Robot Planar Manipulation. In Robotics:
Science and Systems, 2008.
53. [Cheng ,2009] P. Cheng , J. Fink and V. Kumar Cooperative Towing with Multiple
Robots. ASME Transactions: Journal of Mechanisms and Robotics,
2009.
54. [D. Lpez, 2009] D. Lpez, R. Cedazo, F. M. Snchez, and J. M. Sebastin, Ciclope
Robot: Web-Based System to Remote Program an Embedded Real-
Time System, IEEE Transaction on Industrial electronics, vol. 56,
no. 12, 2009, pp. 4791-4797.
Bibliografie
119
55. [Dahl, 2009] Torbjorn S. Dahl , Maja Mataric and Gaurav S. Sukhatmeb. Multi-
robot task allocation through vacancy chain scheduling. Robotics
and Autonomous Systems 57 , 674-687, 2009.
56. [Dames, 2012] Philip Dames , Dinesh Thakur , Mac Schwager and Vijay Kumar
Adaptive Information Gathering Using Visual Sensors. In
Workshop on Stochastic Geometry in SLAM at the International
Conference on Robotics and Automation. Saint Paul, MN, USA,
mai, 2012.
57. [Diankov, 2008] R. Diankov and J. Kuffner, Openrave: A planning architecture for
autonomous robotics, Robotics Institute, Pittsburgh, PA, Tech. Rep.
CMU-RI-TR-08-34, p. 79, 2008.
58. [Donald ,1994] B. R. Donald, J. Jennings, and D. Rus. Analyzing teams of
cooperating mobile robots. In IEEE ICRA, pages 18961903, 1994.
59. [Donald, 1993a] B. R. Donald. Information invariants in robotics: I. state,
communication, and side-effects. In IEEE ICRA, pages 276283,
1993.
60. [Donald, 1993b] B. R. Donald. Information invariants in robotics: II. sensors and
computation. In IEEE ICRA, volume 3, pages 28490, 1993.
61. [Doty ,1993] K. L. Doty and R. E. Van Aken. Swarm robot materials handling
paradigm for a manufacturing workcell. In IEEE ICRA, volume 1,
pages 778782, 1993.
62. [Doulgeri, 2006] Z.Doulgeri, and T. Matiakis, A Web Telerobotic System to Teach
Industrial Robot Path Planning and Control, IEEE Transactions on
Education, vol.49, 2006, pp. 263-270.
63. [Drgoul ,1993] A. Drgoul and J. Ferber. From tom thumb to the dockers: Some
experiments with foraging robots. In Proc. Simulation of Adaptive
Behavior, 1993.
64. [Ducasse, 2005] Ducasse, S., Board, E., Anglin, S., Appleman, D., Buckingham, E.,
Cornell, G., Davis, T., et al., Squeak, Learn Programming with
Robots, p. 362, ISBN1590594916, Apress, 2005
65. [Dudek, 1993] G. Dudek, M. Jenkin, E. Milios, and D. Wilkes. A taxonomy for
swarm robots. In Proceedings of the IEEE/RSJ International
conference on Intelligent Robotics
66. [Dugulean, 2009a] Dugulean, M., Towards Development Of Brain-Computer-Based
Human-Robot Interaction, Proceedings of DAAAM 2009
Conference, Viena, Austria, 2009.
Bibliografie
120
67. [Dugulean, 2009b] Dugulean, M., An Approach to Solving Kinematics Models and
Motion Planning for Manipulators with Mobile Base, Proceedings
of RAAD 2009 Conference, Braov, Romnia, 2009.
68. [Dugulean, 2010a] Dugulean, M., Mogan, G., Using Eye Blinking in an EOG-Based
Human-Robot Interaction, Proceedings of DoCEIS'10 Conference,
Lisabona, Portugalia, 2010.
69. [Dugulean, 2011a] Dugulean, M., Barbuceanu F., Evaluating Human-Robot
Interaction during a Manipulation Experiment Conducted in
Immersive Virtual Reality, Procedings of Human-Computer
Interaction, HCII11, USA, 2011.
70. [Dugulean, 2011b] Dugulean, M., Barbuceanu, F., Teirelbar, A.; Mogan, G., Obstacle
avoidance of redundant manipulators using neural networks based
reinforcement learning, Journal of Robotics and Computer
Integrated Manufacturing USA, acceptat pentru publicare la 15
Iulie, 2011.
71. [Elango, 2011] Elango, M.,Nachiappan, S., Tiwari, M.K., Balancing task
allocation in multi-robot systems using K-means clustering and
auction based mechanisms,Expert Systems with Applications,
Elsevier, Vol. 38, pp. 6486-6491, doi:10.1016/j.eswa.2010.11.097,
2011
72. [Everett, 1993] H. Everett, G.A. Gilbreath, T.A. Heath-Pastore, and R.T. Laird.
Coordinated control of multiple security robots. Mobile Robots
VIII, 2058:292305, 1993.
73. [Fabri, 2004] D. Fabri, C. Falsetti, S. Ramazzotti, and T. Leo, Robot Control
Designer Education on the Web, IEEE International Conference on
Robotics and Automation, vol. 2, 2004, pp. 1364-1369.
74. [Fai, 2005] Fai, Y. C., Amin, S. H. M., Fisal, N., Su, E. L. M., Development
and Evaluation of Various Modes of Human Robot Interface for
Mobile Robot, Proceeding of the 9th International Conference on
Mechatronics Technology, 2005
75. [Farinelli, 2004] Farinelli, A., Iocchi, L., Nardi, D., Multirobot systems: a
classification focused on coordination. In: IEEE Transactions on
Systems, Man, and Cybernetics, Part B 34(5): 2015-2028 (2004)
76. [Farinelli, 2010] Farinelli, A., Fjii, H., Tomoyasu, N., Takahashi, M., DAngelo, A.,
Pagello, E., Cooperative control through objective acheivement ,
Robotics and Autonomous Systems, Elsevier, Vol. 58, pp. 910-920,
doi: 10.1016/j.robot.2010.03.012, 2010
Bibliografie
121
77. [Farley, 1998] Farley M., JavaTM Distributed Computting, OReilly Media, ISBN
1-56592-206-9, Sebastopol, USA, 1998
78. [Feigenbaum,2003 ] Feigenbaum, Edward A. Some challenges and grand challenges for
computational intelligence. Journal of the ACM 50 (1): 3240.
doi:10.1145/602382.602400, 2003
79. [Fink ,2009] J. Fink , N. Michael , S. Kim and V. Kumar , Planning and control
for cooperative manipulation and transportation with aerial robots.
In International Symposium on Robotics Research. September. (R.
Siegwart, Eds.) Springer Verlag.
80. [Fink ,2011] Jonathan Fink , Nathan Michael , Soonkyum Kim and Vijay
Kumar , Planning and Control for Cooperative Manipulation and
Transportation with Aerial Robots. The International Journal of
Robotics Research, 30(3), 2011.
81. [Fong, 2002] Fong, T., Thorpe, C., Baur, C., Collaboration, dialogue and human-
robot Interaction, 10th International Symposium on Robotics
Research, 2002
82. [Franklin ,1995] D.E. Franklin, A.B. Kahng, and M.A. Lewis. Distributed sensing
and probing with multiple search agents: toward system-level
landmine detection solutions. In Detection Technologies for Mines
and Minelike Targets, Proceedings of SPIE, Vol.2496, pages 698
709, 1995.
83. [Fukuda ,1990] T. Fukuda, Y. Kawauchi, and H. Asama. Analysis and evaluation of
cellular robotics (CEBOT) as a distributed intelligent system by
communication amount. In IEEE/RSJ IROS, pages 827834, 1990.
84. [Fukuda ,1994] T. Fukuda and K. Sekiyama. Communication reduction with risk
estimate for multiple robotic system. In IEEE ICRA, pages 2864
2869, 1994.
85. [Gage,1993] D. Gage. How to communicate to zillions of robots. In Mobile
Robots VIII, SPIE, pages 250257, 1993.
86. [Ge, 2006] Ge, S. S., & Lewis, F. L., Autonomous Mobile Robots Sensing,
Control, Decision Making and Applications, Control Engineering,
p. 698, ISBN9780849337482, CRC Press Taylor Francis Group,
2006
87. [Gerkey, 2002] Gerkey, B. and M.J. Mataric. 2002. Pusher-watcher: An Approach
to Fault-Tollerant Tightly-Coupled Robot Coordination. Proc. of
the IEEE International Conference on Robotics and Automation
(ICRA2002), Washington DC
Bibliografie
122
88. [Gil, 2010] Gil, A., Reinoso, O., Ballesta, M., Juli, M., Multi-robot visual
SLAM using a Rao-Blackwellized particle filter, Robotics and
Autonomous Systems, Elsevier, Vol. 58, pp. 6880 , doi:
10.1016/j.robot.2009.07.026, 2010
89. [Gilbert, 2001] Gilbert Pradel and Olivier Comfaits , A Framework for a Web
based Supervisory Control of Mobile Robots. IEEE
International Worksop on Robot and Human Interactive
Communication 0-7803-7222-0/ 2001 IEEE,244-259, 2001.
90. [Giuliani, 2010] Giuliani, M., Lenz, C., Mller, T., Rickert, M., Knoll, A., Design
Principles for Safety in Human-Robot Interaction, International
Journal of Social Robotics, Springer, Vol. 2(3), pp. 253-274,
doi:10.1007/s12369-010-0052-0, 2010
91. [Gold, 2007] Gold, K., Fasel, I., Torrey, C., Freier, N.G., Young researchers'
views on the current and future state of HRI, ACM/IEEE
International Conference on Human-Robot Interaction, pp. 357
364, ISBN: 978-1-59593-617-2, 2007
92. [Gorostiza, 2011] Gorostiza, J. F., Salichs, M. a., End-user programming of a social
robot by dialog, Robotics and Autonomous Systems, Elsevier, Vol.
59(12), pp. 1102-1114, doi:10.1016/j.robot.2011.07.009, 2011
93. [Goss ,1992] S. Goss and J. Deneubourg. Harvesting by a group of robots. In
Proc. European Conference on Artificial Life, 1992.
94. [Grossman ,1998] D. Grossman. Traffic control of multiple robot vehicles. IEEE
Journal of Robotics and Automation, 4:491497, 1988.
95. [Hackwood ,1994] S. Ma, S. Hackwood, and G. Beni. Multi-agent supporting systems
(MASS): Control with centralized estimator of disturbance. In
IEEE/RSJ IROS, pages 679686, 1994.
96. [Hashimoto ,1993] M. Hashimoto and F. Oba. Dynamic control approach for motion
coordination of multiple wheeled mobile robots transporting a
single object. In IEEE/RSJ IROS, pages 19441951, 1993.
97. [Hofmeister, 2011] Marius Hofmeister, Marcel Kronfeld and Andreas Zell ,
Cooperative Visual Mapping in a Heterogeneous Team of Mobile
Robots Robotics and Automation (ICRA),page 1491-1496. IEEE,
2011.
98. [Holzapfel, 2007] Holzapfel, H., Schaaf, T., Ekenel, H. K., Waibel, A., A Robot learns
to know people - First Contacts of a Robot, Proceedings of the 29th
annual German conference on Artificial intelligence, 2007.
Bibliografie
123
99. [Howard, 2006] A. Howard, L. E. Parker, and G. S. Sukhatme, Experiments with a
large heterogeneous mobile robot team: Exploration, mapping,
deployment and detection, Int. Journal of Robotics Research, vol.
25, no. 5, pp. 431-447, May 2006.
100. [Hsieh ,2008] M. Ani Hsieh , Vijay Kumar and Luiz Chaimowicz Decentralized
controllers for shape generation with robotic swarms. Robotica,
26(5):691-701, 2008.
101. [Hsieh, 2007] M. A. Hsieh, A. Cowley, J. F. Keller, L. Chaimowicz, B.
Grocholsky, V. Kumar, et al., Adaptive teams of autonomous aerial
and ground robots for situational awareness, Journal of Field
Robotics, vol. 24, pp. 991-1014, 2007.
102. [Iba, 2004] Iba, S., Interactive Multi-Modal Robot Programming, PhD Thesis,
Robotics Institute, Carnegie Mellon University, 2004
103. [Jing Li, 2011] Jing Li , Zhaohan Sheng and KwanChew Ng, Multi-goal Q-
learning of cooperative teams. Expert Systems with Applications
38 , 15651574, 2011.
104. [Jolly, 2010] Jolly, K.G., Kumar, R.S., Vijayakumar, R., Intelligent task planning
and action selection of a mobile robot in a multi-agent system
through a fuzzy neural network approach, Engineering Applications
of Artificial Intelligence, Elsevier, Vol. 23, pp. 923933 , doi:
10.1016/j.engappai.2010.04.001, 2010.
105. [Jung, 2004] Yuchul Jung, Young K.Hwang, Manjai Lee,Case-Based Reasoning
Approach to Task Planning of Home-Service Robots, Icat 2004
106. [Jung, 2010] Jung, B., Sukhatme, G.S., Real-time Motion Tracking from a
Mobile Robot, International Journal of Social Robotics, Springer,
Vol. 2, pp. 6378, doi: 10.1007/s12369-009-0038-y, 2010
107. [Kaelbling, 1993] L. P. Kaelbling. Learning in Embedded Systems. MIT Press, 1993.
108. [Kanda, 2003] Kanda, T., A Constructive Approach for Communication Robots,
PhD Thesis, 2003
109. [Kantor , 2003] G. Kantor , S. Singh , R. Peterson , D. Rus , A. Das , V. Kumar , G.
Pereira and J. Spletzer, Distributed Search and Rescue with Robot
and Sensor Teams. In Proceedings of the 4th International
Conference on Field and Service Robotics. Japan, July, 2003.
110. [Karray, 2008] Karray, F., Alemzadeh, M., Saleh, J.A., Arab, M.N., Human-
computer interaction Overview on state of the art, International
Journal on Smart Sensing and Intelligent Systems, Vol. 1(1), pp.
137-159, 2008.
Bibliografie
124
111. [Kiener, 2010] J. Kiener and O. von Stryk, Towards cooperation of heterogeneous,
autonomous robots: A case study of humanoid and wheeled robots,
Robotics and Autonomous Systems, vol. 58, pp. 921-929, 2010.
112. [Kiener, 2010] J. Kiener, and O. Von Stryk, Towards cooperation of
heterogeneous, autonomous robots: A case study of humanoid and
wheeled robots, in Robotics and Autonomous Systems, vol. 58, no.
7, 2010, pp. 921-929.
113. [Kitts, 2009] C. Kitts, K. Stanhouse, and P. Chindaphorn, Cluster space collision
avoidance for mobile two-robot systems, Intelligent Robots and
Systems, IEEE/RSJ International Conference on, pp. 19411948,
Oct 2009.
114. [Kleiner ,2006] Kleiner, A. & Ziparo, V. Robocuprescue simulation league team
rescuerobots freiburg (Germany). In Robocup 2006: Robot Soccer
World Cup X, Bremen,Germany. (Proceedings CD-ROM), 2006.
115. [Klumpp, 2012] Klumpp, M. ; Sandhaus, G. , Dynamic Scheduling In Logistics with
Agent-Based Simulation, The 2012 European Simulation and
Modelling Conference, Conference Proceedings October 22-24,
2012 at FOM University, Essen, Germany, p. 329-336, 2012.
116. [Kobayashi, 2009] Kobayashi, K., Yamada, S., Making a Mobile Robot to Express its
Mind by Motion Overlap, Advances in Human-Robot Interaction,
pp. 342-356, INTECH, 2009.
117. [Kooijmans, 2007] Kooijmans, T., Kanda, T., Bartneck, C., Ishiguro, H., Hagita, N.,
Accelerating Robot Development through Integral Analysis of
Human-Robot Interaction, IEEE Transactions on Robotics, Vol.
23(5), pp. 1001-1012, 2007.
118. [Kovcs, 2011] T. Kovcs, A. Psztor, and Z. Istenes, A multi-robot exploration
algorithm based on a static Bluetooth communication chain,
Robotics and Autonomous Systems, vol. 59, pp. 530-542, 2011.
119. [Kumar, 2004] V. Kumar , M. Mintz , B. Grocholsky and F. Zhang, Cooperative
Control for Localization of Mobile Sensor Networks. In
Cooperative Control, Lecture Notes in Control and Information
Sciences. Springer Verlag, 2004.
120. [Kuniyoshi,1994a] Y. Kuniyoshi, N. Kita, S. Rougeaux, S. Sakane, M. Ishii, and M.
Kakikura. Cooperation by observation- the framework and basic
task patterns. In IEEE ICRA, pages 767774, 1994.
Bibliografie
125
121. [Kuniyoshi,1994b] Y. Kuniyoshi, J. Riekki, M. Ishii, S. Rougeaux, N. Kita, S. Sakane,
and M. Kakikura. Vision-based behaviors for multi-robot
cooperation. In IEEE/RSJ IROS, pages 925931, 1994.
122. [Kyriacou, 2004] Kyriacou, T., Vision-Based Urban Navigation Procedures for
Verbally Instructed Robots, PhD Thesis, School of Computing,
Communications and Electronics Faculty of Technology,
University of Plymouth, 2004.
123. [Lawton, 2003] Lawton, J.R. , A Decentralized Approach to Formation Maneuvers.
IEEE Transactions on Robotics and Automation, Vol 19, No 6,
933941, 2003.
124. [Lee, 2007] Lee, W., Ryu, H., Yang, G., Kim, H., Park, Y., Bang, S., Design
guidelines for map-based human-robot interfaces: A colocated
workspace perspective, International Journal of Industrial
ergonomics, Elsevier, Vol. 37, pp. 589-604, doi:
10.1016/j.ergon.2007.03.004, 2007.
125. [Lewis,1992] M.A. Lewis and G.A. Bekey. The behavioral selforganization of
nanorobots using local rules. In IEEE/RSJ IROS, pages 1333
1338, 1992.
126. [Littman , 1994] M. Littman. Markov games as a framework for multiagent
reinforcement learning. In Proceedings of the International
Machine Learning Conference, pages 157163, 1994.
127. [Lopes, 2006] Lopes, M., A Developmental Roadmap for Learning by Imitation in
Robots, Universidade Tcnica de Lisboa Instituto Superior Tcnico,
2006.
128. [Lopez, 2011] Lopez, J., Perez, D., Zalam, E., A framework for building mobile
single and multi-robot applications, Robotics and Autonomous
Systems, Elsevier, Vol. 59, pp. 151-162, doi:
10.1016/j.robot.2011.01.004, 2011
129. [Lozano-Perez, 1983] Lozano-Perez, T., Spatial planning: A configuration space
approach, IEEE Transactions on Computers, vol. 32 (2), pag. 108-
120, 1983.
130. [Lueth ,1994] T.C. Lueth and T. Laengle. Task description, decomposition and
allocation in a distributed autonomous multi-agent robot system. In
IEEE/RSJ IROS, pages 15161523, 1994.
131. [Madrigal, 2007] J.-A. Fernndez-Madrigal, C. Galindo, E. Cruz-Martn, A. Cruz-
Martn, and J. Gonzlez . Automatic Regulation of the Information
Flow in the Control Loops of a Web Teleoperated Robot. IEEE
Bibliografie
126
International Conference on Robotics and Automation Roma, Italy,
10-14 April 2007,3496-3501, 2007.
132. [Malisiewicz, 2011] T. Malisiewicz, A. Gupta, and A. A. Efros, Ensemble of exemplar-
svms for object detection and beyond, in Computer Vision (ICCV),
2011 IEEE International Conference on, pp. 8996, IEEE, 2011.
133. [Marn, 2005] Ral Marn, Pedro J. Sanz, P. Nebot, and R.Wirz, A Multimodal
Interface to Control a Robot Arm via the Web: A Case Study on
Remote Programming.IEEE Transaction on Industrial electronics,
vol.52, no.6, December,1506-1520 Robot Path Planning and
Control. IEEE TRANSACTIONS ON EDUCATION, VOL. 49,
NO. 2, MAY 2006, 263-270.
134. [Marin, 2005] R. J. Marn, P. J. Sanz, P. Nebot, and R. Wirz, A Multimodal
Interface to Control a Robot Arm via the Web: A Case Study on
Remote Programming, IEEE Transaction on Industrial Electronics,
vol. 52, no. 6, 2005, pp. 1506-1520.
135. [Mas, 2010] Mas and C. Kitts, Multi-robot object manipulation using cluster
Advanced Intelligent Mechatronics, IEEE/ASME International
Conference on - in press, 2010.
136. [Mas, 2012] Mas I, Kitts C, Object manipulation using cooperative mobile
multi-robot systems. Lecture Notes in Engineering and Computer
Science: Proceedings of the world congress on engineering and
computer science 2012. WCECS 2012:324329, 2012.
137. [Mataric ,1994b] M. Mataric. Reward functions for accelerated learning. In
Proceedings of the International Machine Learning Conference,
pages 181189, 1994.
138. [Mataric, 1994] Mataric, M., Interaction and Intelligent Behavior, Massachusetts
Institute Of Technology, 1994.
139. [Mataric, 1995] Mataric M, Nilsson M, Simsarian K , Cooperative multi-robot box-
pushing. Intelligent robots and systems. IEEE/RSJ international
conference on, In, pp 556561, 1995.
140. [Mataric,1994a] M. Mataric. Interaction and Intelligent Behavior. PhD thesis, MIT,
EECS, May 1994.
141. [Medicherla, 2007] Medicherla, H., Sekmen, A., Humanrobot interaction via voice-
controllable intelligent user interface, Robotica, Cambridge
University Press, Vol. 25(5), pp. 521-527,
doi:10.1017/S0263574707003414, 2007.
Bibliografie
127
142. [Meger, 2008] Meger, D., Forssn, P.-E., Lai, K., Helmer, S., McCann, S.,
Southey, T., Baumann, M., et al., Curious George: An attentive
semantic robot, Robotics and Autonomous Systems, Springer, Vol.
56(6), pp. 503-511, doi:10.1016/j.robot.2008.03.008, 2008.
143. [Melinger ,2010] D. Melinger, M. Shomin, N. Michael and V. Kumar, Cooperative
Grasping and Transport using Multiple Quadrotors. In 10th
International Symposium on Distributed Autonomous Robots.
Lausanne, Switzerland, November. Springer, 2010.
144. [Michael , 2011] N. Michael , J. Fink and V. Kumar Cooperative Manipulation and
Transportation with Aerial Robots. Autonomous Robots, 30(1):73-
86, 2011.
145. [Michael ,2012] N. Michael , S. Shen , K. Mohta , Y. Mulgaonkar , V. Kumar, K.
Nagatani , Y. Okada , S. Kiribayashi , K. Otake , K. Yoshida , K.
Ohno , E. Takeuchi and S. Tadokoro, Collaborative Mapping of an
Earthquake-Damaged Building via Ground and Aerial Robots. J.
Field Robotics, 29(5):832-841, 2012.
146. [Michael, 2009] N. Michael , J. Fink and V. Kumar Cooperative manipulation and
transportation with aerial robots. In Robotics Science and Systems.
Seattle, Washington, June, 2009.
147. [Minamide, 2007] A. Minamide, K. Takemata, N. Naoe, and P. S. Hoon,
Development of a Long-Distance-Controlled Robot System Using
the Web for International Exchange, IEEE International Workshop
on Digital Game and Intelligent Toy Enhanced Learning, 2007, pp.
188-190.
148. [Mocan,2005] Mocan, M. Logistica. Cap. 4. Dimensionarea sistemelor logistice.
p. 90, Buletinul tiintific al UPT, Tomul 50 (64), 2005, Fascicola
1,2 , ISSN 1224-6050.
149. [Mogan, 2009] Mogan, Gh., Aron, C., Robot fine motion during assembly
processes, Proceedings of DAAAM'09 International Conference,
pag. 1491-1492, Viena, 2009.
150. [Monje, 2011] Monje, C.A., Pierro, P., Balaguer, C., A new approach on human
robot collaboration with humanoid robot RH-2, Robotica,
Cambridge University Press, Vol. 29(6), pp. 949-957, doi:
10.1017/S026357471100018X, 2011.
151. [Moreno, 2009] Moreno, F.A., Blanco, J.L., Gonzalez, J., Stereo vision specific
models for particle filter-based SLAM, Robotics and Autonomous
Systems, Elsevier, Vol. 57(9), pp. 955-970,
doi:10.1016/j.robot.2009.03.002, 2009.
Bibliografie
128
152. [N. Lau ,2011] N. Lau, L. S. Lopes, G. Corrente, N. Filipe, and R. Sequeira, Robot
team coordination using dynamic role and positioning assignment
and role based setplays, in Mechatronics, vol. 21, no. 2, 2011, pp.
445454.
153. [Nanjanath, 2010] Nanjanath, M., Gini, M., Repeated auctions for robust task
execution by a robot team, Robotics and Autonomous Systems,
Elsevier, Vol. 58(7), pp. 900-909, doi: 10.1016/j.robot.2010.03.011,
2010.
154. [Navarro, 2011] Navarro, I., Mata, F., A framework for the collective movement of
mobile robots based on distributed decisions, Robotics and
Autonomous Systems, Elsevier, Vol. 59(10), pp. 685-697, doi:
10.1016/j.robot.2011.05.001, 2011.
155. [Niulescu, 2001] Niulescu, M., Consideratii privind planificarea traiectoriei
robotilor mobili, 2001.
156. [Noreils ,1993] F. R. Noreils. Toward a robot architecture integrating cooperation
between mobile robots: Application to indoor environment. The
International Journal of Robotics Research, 12(1), February 1993.
157. [Oka, 2009] Oka, Tetsushi, Abe, T., Sugita, K., Yokota, M., RUNA: a
multimodal command language for home robot users, Artificial
Life and Robotics, Springer, Vol. 13(2), pp. 455-459.
doi:10.1007/s10015-008-0603-8, 2009.
158. [Oka, 2011] Oka, Takahasi, Matsumoto, H., Kibayashi, R., A multimodal
language to communicate with life-supporting robots through a
touch screen and a speech interface, Artificial Life and Robotics,
Springer, Vol. 16, pp. 292-296, doi: 10.1007/s10015-011-0924-x,
2011.
159. [Ontanon, 2007] Ontanon , S., Mishra, K., Sugandtg, K., and Ram, A. , Case-based
planning and execution for real-time strategy games. In
Proceedings of ICCBR-2007, pp. 164178, 2007.
160. [Ozdemircan, 2008] zdermican, M. Z., Robot control with voice command.
Architecture, Department of Computer Engineering,Yildiz
Technical University, 2008.
161. [Panangadan, 2010] Panangadan, A., Matari, M., Sukhatme, G.S., Tracking and
Modeling of Human Activity Using Laser
Rangefinders,International Journal of Social Robotics, Springer,
Vol. 2, pp. 95107 , doi: 10.1007/s12369-009-0043-1, 2010.
Bibliografie
129
162. [Panfir, 2011] Panfir, A.N; Covaci, A.; Mogan, G. Mobile robots communication
system using LabView Package, Adems11 , publicat n revista Acta
Technica Napocensis, Series Applied Mathematics and
MechanicsCluj-Napoca, Romania, 21-23 Septembrie, 2011.
163. [Panfir, 2012a] Panfir, A.N; Covaci, A.; Postelnicu, C.C; Mogan G. Control
Interfaces for a Collaborative System Using LabView Package,
DoCEIS 2012, pp 33-40, 2012.
164. [Panfir, 2012b] Panfir, A.N; Covaci, A.; Postelnicu, C.C; Mogan G. An Intelligent
Tasks Planning System for Industrial Mobile Robots, MTM &
Robotics 2012 Mechanical Transmissions (MTM) and the
International Conference on Robotics (Robotics12), Clermont-
Ferrand, France, 6-8 iunie, pp 308-315, 2012
165. [Panfir, 2012c] Panfir, A. N; Butil E.; Boboc, R.; Mogan, G; Controlling
humanoid NAO robots using a web interface, 3rd World Conference
on Information Sciences (WCIT-2012) , Barcelona, Spain. 14-16
Noiembrie, 2012.
166. [Panfir, 2013a] Panfir, A.N.; Boboc, R. G.; Mogan G. NAO Robots collaboration
for object manipulation, Optirob 2013 Applied Mechanics and
Materials Vol. 332, pp 218-223, 2013.
167. [Panfir, 2013b] Panfir, A.N.; Boboc, R. G.; Mogan G. Intelligent Mobile Robots
Cooperation within a Tasks Oriented Environment, CINTI 2013,
Budapest, Hungary, 2013.
168. [Parker ,1994] L. E. Parker. Heterogeneous Multi-Robot Cooperation. PhD thesis,
MIT EECS Dept., February 1994.
169. [Parker, 1995] Parker, L. E.. L-ALLIANCE: A Mechanism for adaptive action
selection in heterogeneous Multi-Robot teams, ORNL/TM-13000
1995.
170. [Parker, 1998] L.E. Parker. ALLIANCE: architecture for fault tolerant multi-robot
cooperation. In Proceedings of IEEE Transactions on Robotics and
Automation, Vol. 14, No. 2, 220-240, 1998.
171. [Parker, 2004] L. E. Parker, B. Kannan, F. Tang, and M. Bailey, Tightly-coupled
navigation assistance in heterogeneous multi-robot teams, in
Proceedings of IEEE/RSJ Int. Conference on Intelligent Robots and
Systems (IROS), vol. 1, Sendai, Japan, September 2004, pp. 1016-
1022.
172. [Perdereau, 2002] Perdereau, V., Real-time control of redundant robotic manipulators
for mobile obstacle avoidance, Robotics and Autonomous Systems,
vol. 41, pag. 41-59, 2002.
Bibliografie
130
173. [Postelnicu, 2011] Postelnicu, C., Grbacia, F., Dugulean, M., Talab, D., EOG-Based
Teleoperation of a Mobile Robot, Proceedings of ICFCC 2011
Conference, Iai, Romnia, 2011.
174. [Postelnicu, 2012] Postelnicu, C.C; Covaci, A; Panfir, A.N.; Talaba D. Evaluation of
a P300-Based Interface for Smart Home Control , DoCEIS 2012, pp
179-186, 2012.
175. [Quentin, 2011] Quentin Lindsey, Daniel Mellinger and Vijay Kumar Construction
of Cubic Structures with Quadrotor Teams, Robotics: Science and
Systems VII, vol. 7 , pp. 177-185, 2011
176. [Russell, 2003] Russell, S.J., Norvig, P., Artificial Intelligence: A Modern
Approach, 2nd ed., New Jersey: Prentice-Hall, 2003.
177. [Salter, 2006] Salter, T., Dautenhahn, K., Boekhorst, R., Learning about natural
human-robot interaction styles, Robotics and Autonomous Systems,
Elsevier, Vol. 54, pp. 127-134, doi:10.1016/j.robot.2005.09.022,
2006
178. [Sanhoury, 2012] I. M. H. Sanhoury, S. H. M. Amin, and A. R. Husain, Switching
Between Formation in a Moving Shape for Multi-Robots via
Synchronization Approach, Procedia Engineering, vol. 41, pp. 678-
684, 2012.
179. [Schulman, 2013] J. Schulman, J. Ho, A. Lee, I. Awwal, H. Bradlow, and P. Abbeel,
Finding locally optimal, collision-free trajectories with sequential
convex optimization, in Proc. Robotics: Science and Systems, 2013.
180. [Sen ,1994] S. Sen, M. Sekaran, and J. Hale. Learning to coordinate without
sharing information. In Proc. AAAI, pages 426431, 1994.
181. [Senthilkumar, 2012] Senthilkumar, K. S., Bharadwaj, K. ,Multi-robot exploration
and terrain coverage in an unknown environment, Robotics and
Autonomous Systems, Elsevier, Vol. 60(1), pp. 123-132, doi:
10.1016/j.robot.2011.09.005, 2012.
182. [Sequeira, 2005] Joao Sequeira and M. Isabel Ribeiro. Robot team control: A
geometric approach. Robotics and Autonomous Systems 53 , 59
71, 2005.
183. [Shiwa, 2009] Shiwa, T., Kanda, T., Imai, M., Ishiguro, H., Hagita, N., How
Quickly Should a Communication Robot Respond
Delaying Strategies and Habituation Effects, International Journal
of Social Robotics, Springer, Vol. 1(2), pp. 141-155,
doi:10.1007/s12369-009-0012-8, 2009.
Bibliografie
131
184. [Shubina, 2010] Shubina, K., Tsotsos, J.K., Visual search for an object in a 3D
environment using a mobile robot , Computer Vision and Image
Understanding, Elsevier, Vol. 114 , pp. 535547 , doi:
10.1016/j.cviu.2009.06.010, 2010.
185. [Siagian, 2011] C. Siagian, C.-K. Chang, R. Voorhies, and L. Itti, Beobot 2.0:
Cluster architecture for mobile robotics, Journal of Field Robotics,
vol. 28, pp. 278-302, 2011.
186. [Spalzzi, 2001] Spalzzi, L., A Survey on Case-Based Planning. Artificial
Intelligence Review, 16(1), 2001.
187. [Steels ,1990] L. Steels. Cooperation between distributed agents through self-
organization. In European Workshop on Modelling Autonomous
Agents in a Multi-Agent World, pages 175195, 1990.
188. [Steels,1994] L. Steels. A case study in the behavior-oriented design of
autonomous agents. In Proc. Simulation of Adaptive Behavior,
1994.
189. [Steinfeld, 2006] Steinfeld, A., Fong, T., Kaber, D., Lewis, M., Scholtz, J., Schultz
A., Goodrich M., Common metrics for human-robot interaction,
International Conference on Human-Robot Interaction HRI, 2006.
190. [Stiefelhagen, 2004] Stiefelhagen, R., Fogen, C., Gieselmann, P., Holzapfel, H., Nickel,
K., Waibel, A., Natural human-robot interaction using speech,
head pose and gestures, IEEE/RSJ International Conference on
Intelligent Robots and Systems (IROS), Vol. 3, pp. 2422-2427, doi:
10.1109/IROS.2004.1389771, 2004.
191. [Stilwell, 2003] D. J. Stilwell and J. S. Bay. Toward the development of a material
transport system using swarms of ant-like robots. In IEEE ICRA,
volume 6, pages 766771, 1993.
192. [Stone, 1997] Peter Stone, Manuela Veloso, Multiagent systems: A survey
from a machine learning perspective, Computer Science
Department,Carnegie Mellon University, USA, 1997
193. [Sugie,1995] H. Sugie, Y. Inagaki, S. Ono, H. Aisu, and T. Unemi. Placing
objects with multiple mobile robots mutual help using intention
inference. In IEEE ICRA, pages 21812186, 1995.
194. [Svaco, 2011] Svaco, M., Sekoranja, B.,Bojan: Autonomous Planning Fremework
for Distibuted Multiagent Robotic Systems. In: Doctoral Conference
on Computing, Electrical and Industrial Systems, DoCEIS 2011,
Costa de Caparica, Portugal, February 21-23, 2011. Proceedings
Springer 2011, ISBN 978-3-642-19169-5
Bibliografie
132
195. [Tan ,1993] M. Tan., Multi-agent reinforcement learning: independent vs.
cooperative agents. In Proceedings of the International Machine
Learning Conference, 1993.
196. [Tingting, 2012] Tingting Liu ; Sch. of Control Sci. & Eng., Shandong Univ., Jinan,
China ; Meng, M.Q.-H. Study on cooperation between humanoid
robot Nao and Barrett WAM ,Robotics and Biomimetics (ROBIO),
2012 pp 980 983
197. [Topoleanu, 2009] Topoleanu, T.S., Mogan, G., Aspects Concerning Mobile Robot
Control Using Vocal Commands, Proceedings of 2nd International
Conference on Advanced Engineering in Mechanical Systems, Cluj,
Romania, 2009
198. [Trulls, 2011] Trulls, E., Murtra, A. C., Ferrer, G., Vasquez, D., Mirats-tur, J. M.,
& Sanfeliu, A., Autonomous Navigation for Mobile Service Robots
in Urban Pedestrian Environments, Journal of Field Robotics,
Wiley Periodicals Inc , Vol. 26, doi:10.1002/rob20386, 2011
199. [Tung ,1993] B. Tung and L. Kleinrock. Distributed control methods. In
Proceedings of the 2nd International Symposium on High
Performance Distr ibuted Computing, pages 206215, 1993.
200. [Tung ,1994] Y-C. Tung. Distributed Control Using Finite State Automata. PhD
thesis, UCLA Computer Science Department, 1994. 22 Cao, et al.
201. [Turpin ,2013] M. Turpin , N. Michael and V. Kumar, Computationally efficient
trajectory planning and task assignment for large teams of
unlabeled robots. In Submitted. May, 2013.
202. [Turpin, 2012] Turpin, M. , Michael, N. and Kumar, V. , Decentralized formation
control with variable shapes for aerial robots. In Proc. of the IEEE
Int. Conf. on Robotics and Automation. St. Paul, MN, May, 2012.
203. [VanLehn,1991] VanLehn, editor. Architectures for Intelligence: The 22nd
Carnegie Mellon Symposium on Cognition. Lawrence Erlbaum
Associates, 1991.
204. [Varghese, 2010] Varghese, B., Mckee, G., A mathematical model, implementation
and study of a swarm system, Robotics and Autonomous Systems,
Elsevier, Vol. 58(3), pp. 287-294, doi: 10.1016/j.robot.2009.08.006,
2010.
205. [Vogiatzis, 2008] Vogiatzis, D., Spyropoulos, C. D., Konstantopoulos, S., Karkaletsis,
V., Kasap, Z., Matheson, C., & Deroo, O., An Affective Robot
Guide to Museums, Proceedings of the 4th International Workshop
on Human-Computer Conversation, 2008.
Bibliografie
133
206. [Walsh, 2010] Thomas J. Walsh, Sergiu Goschin, Michael L. Littman. Integrating
Sample-Based Planning and Model-Based Reinforcement Learning.
n Proceedings of AAAI'2010, 2010.
207. [Wang, 2007] Wang Z, Takano Y, Hirata Y, Kosuge K , Decentralized
cooperative object transportation by multiple mobile robots with a
pushing leader. Distrib Auton Rob Sys 6:453462. doi:10.1007-
978-4-431-35873-2-44, 2007.
208. [Wang, 2008a] W. Wang, H. Zhang, G. Zong, and J. Zhang, Force cooperation in a
reconfigurable field multirobot system, Journal of Field Robotics,
vol. 25, pp. 922-938, 2008.
209. [Wang, 2008b] Y. Wang and C. W. de Silva, A machine-learning approach to
multi-robot coordination, Engineering Applications of Artificial
Intelligence, vol. 21, pp. 470-484, 2008.
210. [Wang, 2012] Wang, J., Xin, M., Distributed optimal cooperative tracking control
of multiple autonomous robots, Robotics and Autonomous Systems,
Vol. 60(4), pp. 572-583, doi:10.1016/j.robot.2011.12.002, Elsevier,
2012
211. [Wang,1994] J. Wang and S. Premvuti. Resource sharing in distributed robotic
systems based on a wireless medium access protocol (CSMA/CD-
W). In IEEE/RSJ IROS, pages 784791, 1994.
212. [Wei, 2003] Wei, W., Neuro-fuzzy and model-based motion control for mobile
manipulator among dynamic obstacles, Science in China Series F:
Information Sciences, vol. 46, pag. 14-30, 2003.
213. [Whitbrook, 2010] Whitbrook A.,Programming mobile robots with ARIA and Player A
Guide to C++ Object Oriented Control, p. 124, ISBN 978-1-84882-
863-6, Springer, 2010.
214. [Whitehead , 1991] S. Whitehead. A complexity analysis of cooperative mechanisms in
reinforcement learning. In Proc. AAAI, pages 607613, 1991.
215. [Wooldrige, 2002] M. Wooldrige. An Introduction to MultiAgent Systems, John
Wiley&Sons, Ch.11, p.243-266, 2002.
216. [Xu, 2011] Xu, Y., Ohmoto, Y., Ueda, K., Komatsu, T., Okadome, T., Kamei,
K., Okada, S., et al., Active adaptation in human-agent
collaborative interaction, Journal of Intelligent Information
Systems, Vol. 37(1), pp. 23-38, doi: 10.1007/s10844-010-0135-2,
2010.
217. [Xu, 2012] Xu, Y., Ohmoto, Y., Okada, S., Ueda, K., Komatsu, T., Okadome,
T., Kamei, K., et al., Formation conditions of mutual adaptation in
Bibliografie
134
human-agent collaborative interaction, Applied Intelligence,
Springer, Vol. 36(1), pp. 208-228, doi: 10.1007/s10489-010-0255-
y, 2012.
218. [Yamashita, 2001] Yamashita A, Ota J, Arai T, Ichikawa K, Kamata K, Asama H,
Cooperative manipulation and transportation of a large object by
multiple mobile robots. In: Asama H, Inoue H (eds) Intelligent
autonomous vehicles, pp 375380, 2001.
219. [Yanco ,1992] H. Yanco and L. Stein. An adaptive communication protocol for
cooperating mobile robots. In Proc. Simulation of Adaptive
Behavior, pages 478485, 1992.
220. [Yao, 2007] Yao, Z., Gupta, K., Path planning with general end-effector
constraints, Robotics and Autonomous Systems, vol. 55, pag. 316-
327, 2007.
221. [Yasuda, 2012] G. i. Yasuda, Modeling and Distributed Implementation of
Synchronization and Coordination in Multi-Robot Systems,
Procedia Engineering, vol. 41, pp. 1051-1057, 2012.
222. [Yoshida ,1995a] E. Yoshida, M. Yamamota, T. Arai, J. Ota, and D. Kurabayashi. A
design method of local communication area in multiple mobile
robot system. In IEEE ICRA, pages 25672572, 1995.
223. [Yoshida ,1995b] E. Yoshida, M. Yamamoto, T. Arai, J. Ota, and D. Kurabayashi. A
design method of local communication range in multiple mobile
robot system. In IEEE/RSJ IROS, pages 274279, 1995.
224. [Yoshida,1994] E. Yoshida, T. Arai, J. Ota, and T. Miki. Effect of grouping in
local communication system of multiple mobile robots. In IEEE/RSJ
IROS, pages 808815, 1994.
225. [Yulan, 2012a] H. Yulan, Z. Qisong, Q. Lijuan, and X. Pengfei, Research on Multi-
Robot Cooperation Capture Based on Virtual Reality Technology,
Procedia Engineering, vol. 29, pp. 3507-3512, 2012.
226. [Yulan, 2012b] H. Yulan, Z. Qisong, and X. Pengfei, Study on Multi-Robot
Cooperation Stalking Using Finite State Machine, Procedia
Engineering, vol. 29, pp. 3502-3506, 2012.
227. [Zhang, 2007] Zhang, Y., Ma, S., Minimum-Energy Redundancy Resolution of
Robot Manipulators Unified by Quadratic Programming and its
Online Solution, Proceedings of the IEEE International Conference
on Mechatronics and Automation, pag. 3232-3237, 2007.
228. [Zhang, 2009] Zhang, Y., et. al., More Illustrative Investigation on Window-
Shaped Obstacle Avoidance of Robot Manipulators Using a
Bibliografie
135
Simplified LVI-Based Primal-Dual Neural Network, Proceedings of
the IEEE International Conference on Mechatronics and
Automation, pag. 4240-4245, 2009.
229. [Zhang, 2010] Zhang, X., Liu, H., & Li, X., Target tracking for mobile robot
platforms via object matching and background anti-matching,
Robotics and Autonomous Systems, Vol. 58(11), pp. 1197-1206,
Elsevier B.V. doi:10.1016/j.robot.2010.08.002, 2010.
230. [Zhu, 2011] Zhu W, Choi S, A closed-loop bid adjustment approach to dynamic
task allocation of robots. Eng Lett 19(4):279288 space control, in
Proceedings of the 20th ASME Annual Conference on Information
Storage and Processing Systems, June 2011.
231. [Zub, 2010] Javier Garca Zuba and Ivan Trueba Parra. WEB 2.0 Control
architecture for industrial robots.IEEE Emerging Technologies and
Factory Automation (ETFA), 13-16 Sept. 20101.
232. [Zue Doulgeri, 2006] Z. Doulgeri, and T. Matiakis, A Web Telerobotic System to
Teach Industrial Robot Path Planning and Control, IEEE
Transactions on Education, vol.49, 2006, pp. 263-270. Symposium
on Intelligent Control, pages 5762, 1988.
233. [***a] http://www.ni.com/robotics/industrial/
ANEXE
Anexe
137
Anexa 1: NaoCoopDataAccess - Clasa de baza pentru accesarea
inregistrarilor din baza de date
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.Linq;
using System.Linq;
using System.Reflection;
using System.Text;
using NaoCoopDataAccess.Interfaces;
namespace NaoCoopDataAccess.Managers
{
public abstract class RecordsManagerBase<T> : ManagerBase, IRecordManager<T>
where T : NaoCoopObjects.Classes.NaoCoopObject // NaoCoop object
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="connectionString"></param>
public RecordsManagerBase(string connectionString)
: base(connectionString)
{
}
#region Virtual
/// <summary>
/// Gets the db record by id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
protected virtual NaoCoopObjects.Interfaces.INaoCoopObject
GetDbRecordByID(Guid id, bool throwExceptionIfNotFound = true)
{
foreach (NaoCoopObjects.Interfaces.INaoCoopObject record in Records)
{
if (record.ID.Equals(id))
{
return record;
}
}
if (!throwExceptionIfNotFound)
{
return null;
}
else
{
throw new Exception(string.Format("Record with ID '{0}' not found in
table '{1}'.", id, Records.ToString()));
}
}
/// <summary>
/// Gets the nao object from the database by ID
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual T GetRecordByID(Guid id)
{
Anexe
138
var dbObj = GetDbRecordByID(id);
return (T)ConvertDbObjToNaoObj(dbObj, typeof(T));
}
/// <summary>
/// Gets all nao objects from the database
/// </summary>
/// <returns></returns>
public virtual IEnumerable<T> GetRecords()
{
ResetContext();
foreach (var dbRecord in Records)
{
T naoObject = (T)Activator.CreateInstance(typeof(T),
((NaoCoopObjects.Interfaces.INaoCoopObject)dbRecord).ID);
CopyDbObjectToNaoObject(dbRecord, naoObject);
yield return naoObject;
}
}
/// <summary>
/// Deletes the record from the database
/// </summary>
/// <param name="record"></param>
public virtual void DeleteRecord(T record)
{
if (record == null)
{
return;
}
var dbObj = GetDbRecordByID(record.ID, throwExceptionIfNotFound: false);
if (dbObj != null)
{
Records.DeleteOnSubmit(dbObj);
Records.Context.SubmitChanges();
}
}
/// <summary>
/// Saves the record in the database
/// </summary>
/// <param name="record"></param>
public virtual void SaveRecord(T record)
{
SaveRecord(record, null);
}
internal virtual void SaveRecord(T record, params object[] parentRecords)
{
if (record == null)
{
return;
}
// check if objects exist in the database
var dbObj = GetDbRecordByID(record.ID, throwExceptionIfNotFound: false);
if (dbObj == null)
{
dbObj =
(NaoCoopObjects.Interfaces.INaoCoopObject)Activator.CreateInstance(Records.ElementType
);
Anexe
139
Records.InsertOnSubmit(dbObj);
}
// copy nao coop member values to db object
CopyNaoObjectToDbObject(record, dbObj);
if (parentRecords != null)
{
foreach (var parentRecord in parentRecords)
{
// set the parent record id
var destinationProperty =
dbObj.GetType().GetProperty(string.Format("FK_{0}ID", parentRecord.GetType().Name));
if (destinationProperty != null)
{
destinationProperty.SetValue(dbObj,
((NaoCoopObjects.Interfaces.INaoCoopObject)parentRecord).ID, null);
}
}
}
Records.Context.SubmitChanges();
}
#endregion
#region Abstract
/// <summary>
/// Gets the records table
/// </summary>
protected abstract ITable Records
{
get;
}
#endregion
#region DB TO NAO
/// <summary>
/// Creates a Nao Object from a Db Object
/// </summary>
/// <param name="dbObj"></param>
/// <param name="naoObjType"></param>
/// <returns></returns>
protected static object
ConvertDbObjToNaoObj(NaoCoopObjects.Interfaces.INaoCoopObject dbObj, Type naoObjType)
{
if (dbObj == null)
{
return null;
}
var naoObject = Activator.CreateInstance(naoObjType, dbObj.ID);
CopyDbObjectToNaoObject(dbObj, naoObject);
return naoObject;
}
/// <summary>
/// Copies the db object members to nao object members
/// </summary>
/// <param name="source">db object</param>
/// <param name="destination">nao object</param>
protected static void CopyDbObjectToNaoObject(object source, object
destination)
Anexe
140
{
var properties = destination.GetType().GetProperties(BindingFlags.Public |
BindingFlags.Instance);
foreach (var property in properties)
{
if (property.Name != "ID") // id property of nao objects are not
settable
{
var value =
source.GetType().GetProperty(property.Name).GetValue(source, null);
var argType = default(Type);
if
(property.PropertyType.GetInterfaces().Contains(typeof(NaoCoopObjects.Interfaces.INaoC
oopObject)))
{// nao coop element
// get destination type
property.SetValue(destination,
ConvertDbObjToNaoObj((NaoCoopObjects.Interfaces.INaoCoopObject)value,
property.PropertyType), null);
}
else if (property.PropertyType.IsGenericType &&
(argType =
property.PropertyType.GetGenericArguments()[0]).GetInterfaces().Contains(typeof(NaoCoo
pObjects.Interfaces.INaoCoopObject)))
{// list of nao coop elements
// list of nao coop objects are always created but sometimes
empty
// get the actual list and clear it before adding new elements
var destinationList =
destination.GetType().GetProperty(property.Name).GetValue(destination, null) as IList;
if (destinationList != null && argType != null)
{
foreach (var dbObj in (IEnumerable)value)
{
destinationList.Add(ConvertDbObjToNaoObj((NaoCoopObjects.Interfaces.INaoCoopObject)dbO
bj, argType));
}
}
}
else
{
property.SetValue(destination, value, null);
}
}
}
}
#endregion
#region NAO TO DB
protected static void CopyNaoObjectToDbObject(object source, object
destination)
{
// get the properties of the Nao Object, the Db Object has more properties
which we don't want to set
var properties = source.GetType().GetProperties(BindingFlags.Public |
BindingFlags.Instance);
foreach (var property in properties)
{
var value = property.GetValue(source, null);
Anexe
141
var argType = default(Type);
if
(property.PropertyType.GetInterfaces().Contains(typeof(NaoCoopObjects.Interfaces.INaoC
oopObject)))
{// nao coop element
// set the FK
var destinationProperty =
destination.GetType().GetProperty(string.Format("FK_{0}ID", property.Name));
if (destinationProperty != null)
{
Guid? destinationPropertyValue = value != null ?
((NaoCoopObjects.Interfaces.INaoCoopObject)value).ID : default(Guid?);
destinationProperty.SetValue(destination,
destinationPropertyValue, null);
}
}
else if (property.PropertyType.IsGenericType &&
(argType =
property.PropertyType.GetGenericArguments()[0]).GetInterfaces().Contains(typeof(NaoCoo
pObjects.Interfaces.INaoCoopObject)))
{// nothing to do for lists, they will be saved in higher level
}
else
{
destination.GetType().GetProperty(property.Name).SetValue(destination, value, null);
}
}
}
#endregion
}
}
Anexe
142
Anexa 2: NaoCoopLib Clasa executor pentru gasirea unui
NaoMark
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aldebaran.Proxies;
using System.ComponentModel;
using System.Collections;
using NaoCoopLib.Helpers;
using System.Diagnostics;
using System.Threading;
using NaoCoopLib.Enums;
namespace NaoCoopLib.Executers
{
/// <summary>
/// Util class to search for nao mark
/// </summary>
public class FindNaoMark : IDisposable
{
#region Constants
public const float DEFAULT_ROTATION_AMOUNT = (float)Math.PI / 2;
public const float DEFAULT_MAX_ROTATION = (float)(Math.PI * 2);
public const float DEFAULT_HEAD_PITCH_STEP_AMOUNT = 0.17f;
public const float DEFAULT_HEAD_YAW_STEP_AMOUNT = (float)Math.PI / 4;
public const float DEFAULT_MAX_HEAD_YAW = ((float)Math.PI / 4) +
((float)Math.PI / 8);
private const string SUBSCRIBER_NAME = "FindNaoMark_Subscriber";
#endregion
#region Members
BackgroundWorker _findMarkWorker;
NaoConnectionHelper _connection;
#endregion
#region Properties
/// <summary>
/// Gets the mark id
/// </summary>
public int MarkID
{
get;
private set;
}
/// <summary>
/// Gets the rotation amount between two mark scans
/// </summary>
public float RotationAmount
{
get;
set;
}
/// <summary>
/// Gets the maximum robot rotation
/// </summary>
public float MaxRotation
Anexe
143
{
get;
set;
}
/// <summary>
/// Gets the head pitch step angle
/// </summary>
public float HeadPitchStepAmount
{
get;
set;
}
/// <summary>
/// Gets the head yaw step amount
/// </summary>
public float HeadYawStepAmount
{
get;
set;
}
/// <summary>
/// Gets the max head yaw
/// </summary>
public float MaxHeadYaw
{
get;
set;
}
/// <summary>
/// Gets the start look direction
/// </summary>
public LookDirection StartLookDirection
{
get;
set;
}
#endregion
#region Events
public event EventHandler<FindMarkEventArgs> NaoMarkDetected;
#endregion
#region Constructors
/// <summary>
/// Constructor
/// </summary>
/// <param name="markID">The mark id</param>
/// <param name="robotIP">The robot ip</param>
/// <param name="robotPort">The robot port</param>
/// <param name="rotationAmount">Rotation amount</param>
/// <param name="maxRotation">Max rotation</param>
/// <param name="headPitchStepAmount">Head pitch step amount</param>
/// <param name="headYawStepAmount">Head yaw step amount</param>
/// <param name="maxHeadYaw">Max head yaw</param>
/// <param name="startLookDirection">Start look direction</param>
public FindNaoMark(int markID, string robotIP, int robotPort,
float rotationAmount = DEFAULT_ROTATION_AMOUNT,
float maxRotation = DEFAULT_MAX_ROTATION,
Anexe
144
float headPitchStepAmount = DEFAULT_HEAD_PITCH_STEP_AMOUNT,
float headYawStepAmount = DEFAULT_HEAD_YAW_STEP_AMOUNT,
float maxHeadYaw = DEFAULT_MAX_HEAD_YAW,
LookDirection startLookDirection = LookDirection.Left)
: this (markID, new NaoConnectionHelper(robotIP, robotPort),
rotationAmount, maxRotation, headPitchStepAmount, headYawStepAmount, maxHeadYaw,
startLookDirection)
{
}
public FindNaoMark(int markID, NaoConnectionHelper connection,
float rotationAmount = DEFAULT_ROTATION_AMOUNT,
float maxRotation = DEFAULT_MAX_ROTATION,
float headPitchStepAmount = DEFAULT_HEAD_PITCH_STEP_AMOUNT,
float headYawStepAmount = DEFAULT_HEAD_YAW_STEP_AMOUNT,
float maxHeadYaw = DEFAULT_MAX_HEAD_YAW,
LookDirection startLookDirection = LookDirection.Left)
{
if (!connection.TestConnection(string.Empty))
{
throw new ArgumentException("Could not connect to the robot!");
}
this._connection = connection;
this.RotationAmount = rotationAmount;
this.MaxRotation = maxRotation;
this.HeadPitchStepAmount = headPitchStepAmount;
this.MarkID = markID;
this.HeadYawStepAmount = headYawStepAmount;
this.MaxHeadYaw = maxHeadYaw;
this.StartLookDirection = startLookDirection;
// initialize background worker
_findMarkWorker = new BackgroundWorker();
_findMarkWorker.DoWork += new DoWorkEventHandler(_findMarkWorker_DoWork);
_findMarkWorker.WorkerSupportsCancellation = true;
_findMarkWorker.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(_findMarkWorker_RunWorkerCompleted);
}
#endregion
#region Event Handlers
/// <summary>
/// Worked completed event handler.
/// Will fire NaoMarkDetected event in case the robot found one of the mark he
is looking for.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _findMarkWorker_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
if (e.Error == null && this.NaoMarkDetected!=null)
{
var result = e.Result as KeyValuePair<int, ArrayList>?;
if (result != null)
{
this.NaoMarkDetected(this, new FindMarkEventArgs(result.Value.Key,
result.Value.Value));
}
}
}
Anexe
145
/// <summary>
/// Do work event handler.
/// Turns until the robot sees a mark.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _findMarkWorker_DoWork(object sender, DoWorkEventArgs e)
{
// reset the actual rotation
var actualRotation = 0f;
//init robot
InitRobotPosition();
// create a LandMarkDetectionProxy to start looking for marks
using (var landMarkDetectionProxy =
_connection.GetProxy<LandMarkDetectionProxy>())
{
landMarkDetectionProxy.subscribe(SUBSCRIBER_NAME, 100, -1f);
// create a MemoryProxy to read landmark information
using (var memProxy = _connection.GetProxy<MemoryProxy>())
{
// use one motion proxy
using (var motionProxy = _connection.GetProxy<MotionProxy>())
{
do
{// turn the robot 360 degrees
//// check for marks in a new thread while turning the
robot's head
//Thread checkForMarks = new Thread(delegate()
// {
// Thread.Sleep(500);
// });
var methodID = LookForMarks(motionProxy);
while (motionProxy.isRunning(methodID))
{
// get the LandmarkDetected memory
var landMarkMemory =
memProxy.getData("LandmarkDetected") as ArrayList;
if (_findMarkWorker.CancellationPending ||
(!landMarkMemory.IsNullOrEmpty() &&
(int)((ArrayList)((ArrayList)((ArrayList)((ArrayList)landMarkMemory)[1])[0])[1])[0] ==
MarkID))
{
motionProxy.stop(methodID);
if (!_findMarkWorker.CancellationPending)
{
// save the result
e.Result = new KeyValuePair<int,
ArrayList>(MarkID, ((ArrayList)((ArrayList)((ArrayList)landMarkMemory)[1])[0]));
}
}
}
}
Anexe
146
while (e.Result == null
&& !_findMarkWorker.CancellationPending && Rotate(motionProxy, ref actualRotation));
}
}
landMarkDetectionProxy.unsubscribe(SUBSCRIBER_NAME);
}
}
private void InitRobotPosition()
{
// init robot
using (var poseProxy = _connection.GetProxy<RobotPoseProxy>())
{
var curPositionAndTime = poseProxy.getActualPoseAndTime() as
ArrayList;
string curPositionStr = curPositionAndTime[0].ToString();
NAOPositions curPosition;
if (Enum.TryParse<NAOPositions>(curPositionStr, true, out
curPosition))
{
if (curPosition != NAOPositions.Stand)
{
using (var postureProxy =
_connection.GetProxy<RobotPostureProxy>())
{
var ret =
postureProxy.goToPosture(NAOPostures.Stand.ToString(), 0.5f);
if (ret == false)
{
throw new Exception("Could not initialize robot
posture.");
}
}
}
}
}
}
private int LookForMarks(MotionProxy motionProxy)
{
List<string> names = new List<string>();
List<float[]> times = new List<float[]>();
List<float[]> keys = new List<float[]>();
var time = 2f;
MotionHelper.MoveHead(motionProxy, 0f, 0f, true);
// relative
names.Add("HeadPitch");
times.Add(new[] { 2f, 4f, 9f, 19f, 21f, 26f, 28f,
38f, 43f});
keys.Add(new[] { 0.5f, 0f, 0f, 0f, 0.25f, 0.25f, 0.5f,
0.5f, 0f });
names.Add("HeadYaw");
times.Add(new[] { 2f, 4f, 9f, 19f, 21f, 26f, 28f,
38f, 43f});
keys.Add(new[] { 0f, 0f, -1f, 1f, 1f, -1f, -1f,
1f, 0f});
Anexe
147
var methodID = motionProxy.post.angleInterpolation(names, keys, times,
false);
return methodID;
}
/// <summary>
/// Method that reads the LandmarkDetected memory and extracts the landmarks
info into a dictionary
/// </summary>
/// <param name="memProxy"></param>
/// <returns></returns>
private Dictionary<int, ArrayList> TryGetLandMark(MemoryProxy memProxy)
{
Dictionary<int, ArrayList> ret = null;
try
{
// get the LandmarkDetected memory
var landMarkMemory = memProxy.getData("LandmarkDetected") as
ArrayList;
if (landMarkMemory != null)
{
var landMarks =
LandMarkHelper.Instance.GetLandMarksInfo(landMarkMemory) as ArrayList;
if (landMarks!=null)
{
ret = new Dictionary<int, ArrayList>();
foreach (var landMark in landMarks)
{
var landMarkArr = landMark as ArrayList;
if (landMarkArr != null)
{
int? markId =
LandMarkHelper.Instance.GetMarkID(landMarkArr) as int?;
if (markId.HasValue)
{
ret.Add(markId.Value, landMarkArr);
}
}
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine("Coult get marks. " + ex.ToString());
}
return ret;
}
/// <summary>
/// Aligns the robot with the landmark
/// </summary>
/// <param name="motionProxy"></param>
/// <param name="markInfo"></param>
private void AlignWithMark(MotionProxy motionProxy, ArrayList markInfo)
{
// get mark shape infor
var shapeInfo = LandMarkHelper.Instance.GetShapeInfo(markInfo);
Anexe
148
// get current yaw position
var currentYawPosition = motionProxy.getAngles("HeadYaw", true);
if (!currentYawPosition.IsNullOrEmpty() && shapeInfo[1] != null)
{
// move pitch to landmark
MotionHelper.MoveHead(motionProxy, shapeInfo[2] as float?, null,
false);
// calculate robot rotation
var rotation = currentYawPosition[0] + (float)shapeInfo[1];
motionProxy.moveTo(0f, 0f, rotation);
// reset yaw
MotionHelper.MoveHead(motionProxy, null, 0f, true);
}
}
public enum LookDirection
{
Left,
Right
}
/// <summary>
/// Makes the robot look left and right
/// </summary>
/// <param name="motionProxy"></param>
/// <returns></returns>
private bool LookAround(MotionProxy motionProxy,LookDirection
startLookDirection, ref LookDirection currentLookDirection)
{
// get initial head yaw position
var initialHeadYawPositionArray = motionProxy.getAngles("HeadYaw", true);
if (initialHeadYawPositionArray.IsNullOrEmpty())
{
// should not happen
return false;
}
var initialHeadYawPosition = initialHeadYawPositionArray[0];
float maxHeadYaw, step;
float marginOfError = 0.01f;
var maxReached = false;
var directionChanged = currentLookDirection != startLookDirection;
if (currentLookDirection == LookDirection.Left)
{
maxHeadYaw = this.MaxHeadYaw;
step = this.HeadYawStepAmount;
// check if it's the last movement and ajust the step if it is
if (step + initialHeadYawPosition >= maxHeadYaw)
{
step = maxHeadYaw - initialHeadYawPosition;
}
// if it reached the maximum value we need to change the direction and
update the step
if (step - marginOfError <= 0)
{
maxReached = true;
step = -this.HeadYawStepAmount;
}
}
Anexe
149
else
{
// if it's the right direction we need to have negative values for max
and step angles
maxHeadYaw = -this.MaxHeadYaw;
step = -this.HeadYawStepAmount;
// check if it's the last movement and ajust the step if it is
if (step + initialHeadYawPosition <= maxHeadYaw)
{
step = maxHeadYaw - initialHeadYawPosition;
}
// if it reached the maximum value we need to change the direction and
update the step
if (step + marginOfError >= 0)
{
maxReached = true;
step = this.HeadYawStepAmount;
}
}
if (maxReached && directionChanged)
{
// no more movement allowed
// reset head yaw position to 0
MotionHelper.MoveHead(motionProxy, null, 0f, true);
return false;
}
else
{
MotionHelper.MoveHead(motionProxy, null, step, maxReached);
if (maxReached)
{
currentLookDirection = currentLookDirection ==
LookDirection.Left ? LookDirection.Right : LookDirection.Left;
}
return true;
}
}
private bool LookDown(MotionProxy motionProxy)
{
// get initial head pitch position
var initialHeadPitchPosition = motionProxy.getAngles("HeadPitch", true);
MotionHelper.MoveHead(motionProxy, this.HeadPitchStepAmount, null, false);
// get current pitch position
var currentHeadPitchPosition = motionProxy.getAngles("HeadPitch", true);
// return true if the current position changed
if (!initialHeadPitchPosition.IsNullOrEmpty()
&& !currentHeadPitchPosition.IsNullOrEmpty() &&
initialHeadPitchPosition[0] != currentHeadPitchPosition[0])
{
return true;
}
else
{
// reset pitch position
MotionHelper.MoveHead(motionProxy, 0f, null, true);
return false;
Anexe
150
}
}
private bool Rotate(MotionProxy motionProxy, ref float actualRotation)
{
if (actualRotation > this.MaxRotation)
{
return false;
}
motionProxy.moveInit();
motionProxy.moveTo(0f, 0f, this.RotationAmount);
actualRotation += this.RotationAmount;
return true;
}
#endregion
#region Public Methods
/// <summary>
/// Starts robot search operation
/// </summary>
public void StartSearching()
{
_findMarkWorker.RunWorkerAsync();
}
/// <summary>
/// Stops searching
/// </summary>
public void StopSearching()
{
_findMarkWorker.CancelAsync();
}
/// <summary>
/// Disposes the current object
/// </summary>
public void Dispose()
{
if (_findMarkWorker.IsBusy)
{
_findMarkWorker.CancelAsync();
}
_findMarkWorker.Dispose();
try
{
// make sure we unsubribe to the landmark detection
using (var speechRecognitionProxy =
_connection.GetProxy<SpeechRecognitionProxy>())
{
speechRecognitionProxy.unsubscribe(SUBSCRIBER_NAME);
}
}
catch { }
}
#endregion
}
}
Anexe
151
Anexa 3: NaoCoopLib Clasa executor pentru deplasarea robotului
ctre NaoMark
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using NaoCoopLib.Helpers;
using System.Collections;
using System.Threading;
using NaoCoopLib.Types;
using Aldebaran.Proxies;
namespace NaoCoopLib.Executers
{
public class WalkToNaoMark : IDisposable
{
#region Members
BackgroundWorker _walkWorker = new BackgroundWorker();
NaoConnectionHelper _robotConnectionHelper = new NaoConnectionHelper();
ArrayList _detectedMark = null;
object _lockObject = new object();
#endregion
#region Properties
/// <summary>
/// Gets the checkpoint mark information
/// </summary>
public WalkToLandMarkInfo MarkInfo
{
get;
private set;
}
/// <summary>
/// Gets the start looking direction
/// </summary>
public FindNaoMark.LookDirection StartLookDirection
{
get;
private set;
}
/// <summary>
/// Returns true if robot is busy
/// </summary>
public bool IsBusy
{
get
{
return _walkWorker.IsBusy;
}
}
#endregion
#region Events
public event EventHandler<EventArgs> WalkCompleted;
#endregion
Anexe
152
#region Constructor
/// <summary>
/// Constructor
/// </summary>
/// <param name="robotIP">Robot ip</param>
/// <param name="robotPort">Robot port</param>
/// <param name="markInfo">Checkpoint mark information</param>
/// <param name="startLookDirection">Start look direction</param>
public WalkToNaoMark(string robotIP, int robotPort, WalkToLandMarkInfo
markInfo,
FindNaoMark.LookDirection startLookDirection =
FindNaoMark.LookDirection.Left) :
this(new NaoConnectionHelper(robotIP, robotPort), markInfo,
startLookDirection)
{
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="connection">Robot connection</param>
/// <param name="markInfo">Checkpoint mark information</param>
/// <param name="startLookDirection">Start look direction</param>
public WalkToNaoMark(NaoConnectionHelper connection, WalkToLandMarkInfo
markInfo,
FindNaoMark.LookDirection startLookDirection =
FindNaoMark.LookDirection.Left)
{
this.MarkInfo = markInfo;
this.StartLookDirection = startLookDirection;
this._robotConnectionHelper = connection;
if (!_robotConnectionHelper.TestConnection(string.Empty))
{
throw new ArgumentException("Could not connect to the robot!");
}
_walkWorker.DoWork += new DoWorkEventHandler(_walkWorker_DoWork);
_walkWorker.WorkerSupportsCancellation = true;
_walkWorker.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(_walkWorker_RunWorkerCompleted);
}
#endregion
#region Event Handlers
/// <summary>
/// Walk do work event handler
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _walkWorker_DoWork(object sender, DoWorkEventArgs e)
{
// set the initial head yaw step and head pitch step amount to default but
update it as it gets near to the mark
var headYawStepAmount = FindNaoMark.DEFAULT_HEAD_YAW_STEP_AMOUNT;
var headPitchStepAmount = FindNaoMark.DEFAULT_HEAD_PITCH_STEP_AMOUNT;
while (!_walkWorker.CancellationPending)
{
// clear previous detected mark
_detectedMark = null;
Anexe
153
// find mark
FindNaoMark findMark = new FindNaoMark(this.MarkInfo.MarkID,
this._robotConnectionHelper, headPitchStepAmount: headPitchStepAmount,
headYawStepAmount: headYawStepAmount, startLookDirection: this.StartLookDirection);
findMark.NaoMarkDetected += new
EventHandler<FindMarkEventArgs>(findMark_NaoMarkDetected);
findMark.StartSearching();
// wait until mark is detected
while (!_walkWorker.CancellationPending)
{
lock (_lockObject)
{
if (_detectedMark != null)
{
break;
}
}
Thread.Sleep(500);
}
// stop searching for mark
findMark.StopSearching();
findMark.Dispose();
if (!_walkWorker.CancellationPending)
{
// get camera transform
Transform cameraTransform = null;
using (var motionProxy =
_robotConnectionHelper.GetProxy<MotionProxy>())
{
cameraTransform = new
Transform(motionProxy.getTransform("CameraTop", 2, true) as List<float>);
// get mark position
var markPosition =
LandMarkHelper.Instance.GetLandMarkPosition(_detectedMark, this.MarkInfo.MarkSize,
cameraTransform);
// align with mark
AlignWithMark(motionProxy, _detectedMark);
// stop if close to mark
if (markPosition.x - 0.01 <= this.MarkInfo.StopDistance)
{
break;
}
else
{
if (markPosition.x <= 0.4)
{
headPitchStepAmount =
FindNaoMark.DEFAULT_HEAD_PITCH_STEP_AMOUNT / 4;
headYawStepAmount =
FindNaoMark.DEFAULT_HEAD_YAW_STEP_AMOUNT / 4;
}
else if (markPosition.x <= 0.6)
{
headPitchStepAmount =
FindNaoMark.DEFAULT_HEAD_PITCH_STEP_AMOUNT / 2;
headYawStepAmount =
Anexe
154
FindNaoMark.DEFAULT_HEAD_YAW_STEP_AMOUNT / 2;
}
else if (markPosition.x <= 0.8)
{
headPitchStepAmount = 3 *
FindNaoMark.DEFAULT_HEAD_PITCH_STEP_AMOUNT / 4;
headYawStepAmount = 3 *
FindNaoMark.DEFAULT_HEAD_YAW_STEP_AMOUNT / 4;
}
// advance on x
var advance = markPosition.x -
this.MarkInfo.AdvanceDistance <= this.MarkInfo.StopDistance ? markPosition.x -
this.MarkInfo.StopDistance : this.MarkInfo.AdvanceDistance;
motionProxy.moveTo(advance, 0f, 0f);
}
}
}
}
}
/// <summary>
/// Aligns the robot with the landmark
/// </summary>
/// <param name="motionProxy"></param>
/// <param name="markInfo"></param>
private void AlignWithMark(MotionProxy motionProxy, ArrayList markInfo)
{
// get mark shape infor
var shapeInfo = LandMarkHelper.Instance.GetShapeInfo(markInfo);
// get current yaw position
var currentYawPosition = motionProxy.getAngles("HeadYaw", true);
if (!currentYawPosition.IsNullOrEmpty() && shapeInfo[1] != null)
{
// move pitch to landmark
MotionHelper.MoveHead(motionProxy, shapeInfo[2] as float?, null,
false);
// calculate robot rotation
var rotation = currentYawPosition[0] + (float)shapeInfo[1];
motionProxy.moveTo(0f, 0f, rotation);
// reset yaw
MotionHelper.MoveHead(motionProxy, null, 0f, true);
}
}
/// <summary>
/// NaoMark detected event handler
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void findMark_NaoMarkDetected(object sender, FindMarkEventArgs e)
{
lock (_lockObject)
{
_detectedMark = e.MarkData;
}
}
/// <summary>
/// Walk completed event hanlder
/// </summary>
/// <param name="sender"></param>
Anexe
155
/// <param name="e"></param>
void _walkWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs
e)
{
if (this.WalkCompleted != null)
{
this.WalkCompleted(this, null);
}
}
#endregion
#region Public Methods
/// <summary>
/// Starts robots execution
/// </summary>
public void StartWalking()
{
_walkWorker.RunWorkerAsync();
}
/// <summary>
/// Stops the thread until walking is completed
/// </summary>
public void WaitUntilWalkingIsComplete()
{
while (_walkWorker.IsBusy)
{
Thread.Sleep(10);
}
}
/// <summary>
/// Stops robot execution
/// </summary>
public void StopWalking()
{
_walkWorker.CancelAsync();
}
/// <summary>
/// Disposes the current object
/// </summary>
public void Dispose()
{
if (_walkWorker.IsBusy)
{
_walkWorker.CancelAsync();
_walkWorker.Dispose();
}
}
#endregion
}
}
Anexe
156
Anexa 4: NaoCoopLib Clasa pentru sincronizarea roboilor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using Aldebaran.Proxies;
using NaoCoopLib.Helpers;
namespace NaoCoopLib.Executers
{
/// <summary>
/// Enum containing the robot commands in the synchronization process
/// </summary>
public enum SynchronizationCommand
{
Ready,
Start,
Ok
}
/// <summary>
/// Robot synchronization executer class
/// </summary>
public class RobotSynchronization : ExecuterBase
{
#region Members
SpeechRecognition _speechRecognition;
bool _synchronized = false;
#endregion
#region Constructors
/// <summary>
/// Constructor
/// </summary>
/// <param name="ip">The robot ip</param>
/// <param name="port">The robot port</param>
public RobotSynchronization(string ip, int port)
: this(new NaoConnectionHelper(ip, port))
{
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="connection">The robot connection object</param>
public RobotSynchronization(NaoConnectionHelper connection)
: base(connection)
{
// initialize members
_speechRecognition = new SpeechRecognition(connection.IP,
connection.Port);
_speechRecognition.WordRecognized += _speechRecognition_WordRecognized;
}
#endregion
#region Public
Anexe
157
/// <summary>
/// Starts robot synchronization
/// </summary>
/// <returns></returns>
public bool SynchronizeRobot()
{
this._synchronized = false;
this.Say(SynchronizationCommand.Ready.ToString());
this._speechRecognition.StartListening(new List<string>() { "Ready", "Ok",
"Start" });
while (!this._synchronized)
{
Thread.Sleep(10);
}
this._speechRecognition.StopListening();
// confirmation received, sleep to the first x5 seconds
TimeSpan span = new TimeSpan(DateTime.Now.Ticks);
var toSleep = ((60 - span.Seconds) % 5) * 1000 - span.Milliseconds;
if (toSleep <= 0) toSleep = 5000;
var totalSleep = 0;
while (this._synchronized && totalSleep < toSleep)
{
Thread.Sleep(10);
totalSleep += 10;
}
return this._synchronized;
}
/// <summary>
/// Cancells robot synchronization
/// </summary>
public void CancelSynchronization()
{
this._speechRecognition.StopListening();
this._synchronized = false;
}
/// <summary>
/// Disposes the current executer
/// </summary>
public override void Dispose()
{
this._speechRecognition.StopListening();
this._speechRecognition.Dispose();
}
#endregion
#region Private
/// <summary>
/// Word recognized event handler
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _speechRecognition_WordRecognized(object sender,
SpeechRecognitionEventArgs e)
{
SynchronizationCommand command = SynchronizationCommand.Ok;
if (Enum.TryParse<SynchronizationCommand>(e.Word, out command))
{
switch (command)
{
Anexe
158
case SynchronizationCommand.Ready:
// sent by slave robot, means it is in lift position
// send the start command and wait for confirmation
this.Say(SynchronizationCommand.Start.ToString());
break;
case SynchronizationCommand.Start:
// sent by master robot
// send the confirmation and set the synchronized variable to
true
this.Say(SynchronizationCommand.Ok.ToString());
// allow time for the command to be received
Thread.Sleep(1000);
goto case SynchronizationCommand.Ok;
case SynchronizationCommand.Ok:
this._synchronized = true;
break;
}
}
}
/// <summary>
/// Makes robot say the specified word
/// </summary>
/// <param name="word"></param>
void Say(string word)
{
using (var tts = _connection.GetProxy<TextToSpeechProxy>())
{
tts.say(word);
}
}
#endregion
}
}
Anexe
159
Anexa 5: NaoCoopLib Clasa pentru manipularea obiectelor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using log4net.Repository.Hierarchy;
using NaoCoopLib.Enums;
using NaoCoopLib.Types;
using NaoCoopObjects.Classes;
namespace NaoCoopLib
{
#region ExecutionRobotStateChangedEventArgs
public class ExecutionRobotStateChangedEventArgs : EventArgs
{
public Guid ID
{
get;
private set;
}
public string NewState
{
get;
private set;
}
public string ExecutingCommand
{
get;
private set;
}
public string RobotStatus
{
get;
private set;
}
public ExecutionRobotStateChangedEventArgs(Guid id, string newState, string
executingCommand, string robotStatus)
{
this.ID = id;
this.NewState = newState;
this.ExecutingCommand = executingCommand;
this.RobotStatus = robotStatus;
}
}
#endregion
/// <summary>
/// Class used to manipulate robot executions
/// </summary>
public class NaoCoopRobotExecutionEngine
{
#region Properties
/// <summary>
/// Gets the current execution list
/// </summary>
Anexe
160
public Dictionary<Execution, List<NaoCoopRobot>> CurrentExecutionList
{
get;
private set;
}
/// <summary>
/// Gets the logger
/// </summary>
public ILog Logger
{
get;
private set;
}
#endregion
#region Events
/// <summary>
/// Triggered when a robot state changed
/// </summary>
public event EventHandler<ExecutionRobotStateChangedEventArgs>
RobotStateChanged;
/// <summary>
/// Triggered when an execution status changed
/// </summary>
public event EventHandler ExecutionStatusChanged;
#endregion
#region Constructor
/// <summary>
/// Constructor
/// </summary>
/// <param name="logger">the application logger</param>
public NaoCoopRobotExecutionEngine(ILog logger)
{
this.CurrentExecutionList = new Dictionary<Execution,
List<NaoCoopRobot>>();
this.Logger = logger;
}
#endregion
#region Methods
#region Validation
/// <summary>
/// Validates the NaoCoopObject Execution.
/// Throws exception on errors.
/// </summary>
/// <param name="execution">The NaoCoopObject Execution object to be
validated</param>
public void ValidateExecution(Execution execution)
{
this.ValidateExecution(execution, null);
}
private void ValidateExecution(Execution execution, List<NaoCoopRobot>
naoRobots)
{
if (execution == null || execution.Operation == null ||
execution.ExecutionRobots.Count == 0)
{
throw new ArgumentException("Invalid execution: missing execution,
Anexe
161
operation or execution robots!");
}
if (naoRobots == null)
{
naoRobots = new List<NaoCoopRobot>();
}
#region Validate Robots
// validate the number of robots
if (execution.Operation.OperationRobots.Count !=
execution.ExecutionRobots.Count)
{
throw new Exception("The number of operation robots does not match the
number of execution robots!");
}
var validatedRobots = new Dictionary<ExecutionRobot, OperationRobot>();
// validate operation robots with execution robots
foreach (var operationRobot in execution.Operation.OperationRobots)
{
// check if operation robot version matches at lease one
foreach (var executionRobot in
execution.ExecutionRobots.Except(validatedRobots.Keys))
{
if
(operationRobot.RobotVersion.Equals(executionRobot.Robot.RobotVersion))
{
validatedRobots.Add(executionRobot, operationRobot);
break;
}
}
}
if (execution.ExecutionRobots.Except(validatedRobots.Keys).Count() != 0)
{
throw new Exception("The execution robots provided do not match the
operation robots requirements!");
}
#endregion
#region Validate States and Tasks
foreach (var robot in validatedRobots)
{
NaoCoopRobot naoRobot = new NaoCoopRobot(robot.Key.Robot.IP,
robot.Key.Robot.Port, this.Logger, robot.Key.ID);
naoRobots.Add(naoRobot);
foreach (var robotState in
robot.Value.OperationRobotStates.OrderBy(s=>s.Order))
{
NaoState naoState;
if (Enum.TryParse<NaoState>(robotState.State.Type, out naoState))
{
naoRobot.StateCommands.Add(naoState, new
OrderedDictionary<NaoCommand, Dictionary<string, string>>());
foreach (var stateTask in
robotState.State.StateTasks.OrderBy(t => t.Order))
{
NaoCommand naoCommand;
if (Enum.TryParse<NaoCommand>(stateTask.Task.Type, out
naoCommand))
{
Anexe
162
naoRobot.StateCommands[naoState].Add(naoCommand, new
Dictionary<string, string>());
foreach (var setting in stateTask.Task.Settings)
{
if
(naoRobot.StateCommands[naoState][naoCommand].ContainsKey(setting.Name))
{
naoRobot.StateCommands[naoState][naoCommand][setting.Name] = setting.Value;
}
else
{
naoRobot.StateCommands[naoState][naoCommand].Add(setting.Name, setting.Value);
}
}
}
else
{
// invalid task specified
throw new Exception(string.Format("The specified task
'{0}' of type '{1}' is not supported. Supported tasks: {2}", stateTask.Task.Name,
stateTask.Task.Type, string.Join(", ", Enum.GetNames(typeof(NaoCommand)))));
}
}
}
else
{
// invalid state specified
throw new Exception(string.Format("The specified state '{0}'
of type '{1}' is not supported. Supported states: {2}", robotState.State.Name,
robotState.State.Type, string.Join(", ", Enum.GetNames(typeof(NaoState)))));
}
}
}
#endregion
}
#endregion
/// <summary>
/// Starts an execution and all of its robots
/// </summary>
/// <param name="execution"></param>
public void Start(Execution execution)
{
Start(execution, execution.ExecutionRobots.Select(r => r.ID).ToArray());
}
/// <summary>
/// Stars the specified robots of the specified execution
/// </summary>
/// <param name="execution">The execution to start</param>
/// <param name="robotIDs">The robots of the execution to start</param>
public void Start(Execution execution, params Guid[] robotIDs)
{
// check if execution is already started
var currentExecution = this.CurrentExecutionList.Keys.FirstOrDefault(e =>
e.ID.Equals(execution.ID));
if (currentExecution != null && currentExecution.Status !=
ExecutionStatus.Started)
{
// invalid call, the start should be called on the new execution or on
Anexe
163
a started execution for a specified robot
throw new Exception("Invalid call.");
}
if (currentExecution==null)
{
// call the validate method to generate the nao robot object
var naoCoopRobots = new List<NaoCoopRobot>();
// validate execution
this.ValidateExecution(execution, naoCoopRobots);
// subscribe to state changed for each robot
foreach (var robot in naoCoopRobots)
{
//robot.RobotStateChanged += robot_RobotStateChanged;
robot.RobotExecutingCommandChanged += robot_RobotStateChanged;
}
// add it to the list
this.CurrentExecutionList.Add(execution, naoCoopRobots);
// update status and start execution
execution.Status = ExecutionStatus.Started;
if (ExecutionStatusChanged != null)
{
ExecutionStatusChanged(execution, null);
}
execution.DateStarted = DateTime.Now;
}
if (robotIDs != null)
{
foreach (var robotId in robotIDs)
{
var robot = this.CurrentExecutionList[execution].FirstOrDefault(r
=> r.ID.Equals(robotId));
if (robot != null)
{
robot.Start();
}
}
}
}
void robot_RobotStateChanged(object sender, EventArgs ea)
{
var robot = sender as NaoCoopRobot;
// find which execution this robot belongs to
var execution = CurrentExecutionList.FirstOrDefault(e =>
e.Value.FirstOrDefault(r => r == robot) != null);
if (!execution.Equals(default(KeyValuePair<Execution,
List<NaoCoopRobot>>)))
{
// fire robot state changed event
if (RobotStateChanged != null)
{
RobotStateChanged(execution.Key, new
ExecutionRobotStateChangedEventArgs(robot.ID, robot.CurrentState.ToString(),
robot.CurrentExecutingCommand.ToString(), robot.Status.ToString()));
}
// check if all robots finished
if (execution.Value.All(r => r.Status == RobotStatus.Finished))
Anexe
164
{
execution.Key.Status = ExecutionStatus.Completed;
execution.Key.DateEnded = DateTime.Now;
// remove the execution from the list and fire event
CurrentExecutionList.Remove(execution.Key);
if (ExecutionStatusChanged != null)
{
ExecutionStatusChanged(execution.Key, null);
}
}
}
}
/// <summary>
/// Pauses an execution
/// </summary>
/// <param name="execution">The execution to pause</param>
public void Pause(Execution execution)
{
Pause(execution, execution.ExecutionRobots.Select(r => r.ID).ToArray());
}
/// <summary>
/// Pauses the specified robots of the specified execution
/// </summary>
/// <param name="execution">The execution to pause</param>
/// <param name="robotIDs">The robots of the execution to pause</param>
public void Pause(Execution execution, params Guid[] robotIDs)
{
// check if execution is already started
var currentExecution = this.CurrentExecutionList.Keys.FirstOrDefault(e =>
e.ID.Equals(execution.ID));
if (currentExecution == null || currentExecution.Status !=
ExecutionStatus.Started)
{
throw new Exception("Missing or invalid execution status!");
}
if (robotIDs != null)
{
foreach (var robotId in robotIDs)
{
var robot =
this.CurrentExecutionList[currentExecution].FirstOrDefault(r => r.ID.Equals(robotId));
if (robot != null)
{
robot.Pause();
}
}
}
// change the state to paused only if all robots are paused
if (this.CurrentExecutionList[currentExecution].All(r => r.Status ==
RobotStatus.Paused))
{
currentExecution.Status = ExecutionStatus.Paused;
if (ExecutionStatusChanged != null)
{
ExecutionStatusChanged(execution, null);
}
Anexe
165
}
}
/// <summary>
/// Resumes and execution and all of its robots
/// </summary>
/// <param name="execution">The execution to resume</param>
public void Resume(Execution execution)
{
Resume(execution, execution.ExecutionRobots.Select(r => r.ID).ToArray());
}
/// <summary>
/// Resumes the sepcified robots of the specified execution
/// </summary>
/// <param name="execution">The execution to resume</param>
/// <param name="robotIDs">The robots of the execution to resume</param>
public void Resume(Execution execution, params Guid[] robotIDs)
{
// check if execution is already started
var currentExecution = this.CurrentExecutionList.Keys.FirstOrDefault(e =>
e.ID.Equals(execution.ID));
if (currentExecution == null)
{
throw new Exception("Missing or invalid execution!");
}
if (robotIDs != null)
{
foreach (var robotId in robotIDs)
{
var robot =
this.CurrentExecutionList[currentExecution].FirstOrDefault(r => r.ID.Equals(robotId));
if (robot != null && robot.Status == RobotStatus.Paused)
{
robot.Resume();
}
}
}
// change the state to resumed if there is at least one robot running
if (this.CurrentExecutionList[currentExecution].Any(r => r.Status ==
RobotStatus.Running))
{
currentExecution.Status = ExecutionStatus.Started;
if (ExecutionStatusChanged != null)
{
ExecutionStatusChanged(execution, null);
}
}
}
/// <summary>
/// Stops an execution and all of is robots
/// </summary>
/// <param name="execution">The execution to stop</param>
public void Stop(Execution execution)
{
var currentExecution = this.CurrentExecutionList.Keys.FirstOrDefault(e =>
e.ID.Equals(execution.ID));
if (currentExecution == null)
{
Anexe
166
throw new Exception("Execution does not exist!");
}
// refresh the execution from the loaded variable
currentExecution = execution;
// stop and dispose each robot object
foreach (var robot in this.CurrentExecutionList[execution])
{
robot.Stop();
robot.Dispose();
}
// update date and status
execution.Status = ExecutionStatus.Failed; // manually stopped
if (ExecutionStatusChanged != null)
{
ExecutionStatusChanged(execution, null);
}
execution.DateEnded = DateTime.Now;
}
#endregion
}
}
Anexe
167
Anexa 6: NaoCoopLib Clasa pentru executarea comenzilor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aldebaran.Proxies;
using NaoCoopLib.Enums;
using NaoCoopLib.Executers;
using NaoCoopLib.Helpers;
using NaoCoopLib.Types;
namespace NaoCoopLib
{
/// <summary>
/// Internal class for executing commands
/// </summary>
internal class NaoCoopCommandExecutionEngine : IDisposable
{
#region Members
RobotSynchronization _robotSynch;
WalkToNaoMark _walkToNaoMark;
ObjectHandlingExecuter _objectHandlingExecuter;
NaoConnectionHelper _connection;
#endregion
#region Constructor
/// <summary>
/// Constructor
/// </summary>
/// <param name="connection">Connection object</param>
public NaoCoopCommandExecutionEngine(NaoConnectionHelper connection)
{
this._connection = connection;
this._robotSynch = new RobotSynchronization(connection);
this._objectHandlingExecuter = new ObjectHandlingExecuter(connection);
}
#endregion
#region Methods
#region Public
/// <summary>
/// Executes the specified command
/// </summary>
/// <param name="command"></param>
/// <param name="commandParameters"></param>
public void Execute(NaoCommand command, Dictionary<string, string>
commandParameters)
{
switch (command)
{
case NaoCommand.GoToGrabLocation:
GoToGrabLocation();
break;
case NaoCommand.GoToLiftPosition:
break;
case NaoCommand.SynchRobot:
break;
case NaoCommand.WalkToCheckpoint:
Anexe
168
break;
case NaoCommand.WalkWithObject:
break;
}
System.Threading.Thread.Sleep(1000);
}
/// <summary>
/// Pauses the specified command
/// </summary>
/// <param name="command"></param>
public void Pause(NaoCommand command)
{
switch (command)
{
case NaoCommand.GoToGrabLocation:
if (this._walkToNaoMark != null)
{
this._walkToNaoMark.StopWalking();
}
break;
case NaoCommand.WalkWithObject:
_objectHandlingExecuter.StopWalking();
break;
case NaoCommand.SynchRobot:
this._robotSynch.CancelSynchronization();
break;
}
}
/// <summary>
/// Disposes the specified command
/// </summary>
public void Dispose()
{
if (_robotSynch != null)
{
_robotSynch.Dispose();
}
_connection = null;
if (_objectHandlingExecuter != null)
{
_objectHandlingExecuter.Dispose();
}
if (_walkToNaoMark != null)
{
_walkToNaoMark.Dispose();
}
}
#endregion
#region Private
private void GoToGrabLocation()
{
GrabLocationInfo locationInfo = new
GrabLocationInfo(Enums.GrabLocation.A);
this._objectHandlingExecuter.GoToGrabLocation(locationInfo);
}
private void WalkToMark()
{
WalkToLandMarkInfo walkToMark = new WalkToLandMarkInfo(0, 0);
Anexe
169
if (this._walkToNaoMark != null)
{
this._walkToNaoMark.StopWalking();
this._walkToNaoMark.Dispose();
}
this._walkToNaoMark = new WalkToNaoMark(this._connection, walkToMark);
this._walkToNaoMark.StartWalking();
this._walkToNaoMark.WaitUntilWalkingIsComplete();
this.Say("Checkpoint");
}
private void GoToLiftPosition()
{
this._objectHandlingExecuter.GoToLiftPosition();
}
private void SynchronizeRobot()
{
this._robotSynch.SynchronizeRobot();
}
private void WalkWithObject()
{
this._objectHandlingExecuter.WalkWithObject();
}
private void LiftObject()
{
if (this._robotSynch.SynchronizeRobot())
{
this._objectHandlingExecuter.LiftObject();
}
}
private void Say(string word)
{
using (var tts = _connection.GetProxy<TextToSpeechProxy>())
{
tts.say(word);
}
}
#endregion
#endregion
}
}
REZUMAT
Prezenta tez de doctorat are ca scop mbuntirea lucrului n echipele de roboi
pitori ce i execut activitile n mediile industriale, fiind propus n acest sens
implementarea i folosirea atributului uman de cooperare. Este conceput, dezvoltat i
implementat un sistem inteligent de cooperare pentru roboii mobili pitori din medii
industriale specific operaiilor de manipulare, care au la baz tehnici de nvare a secvenelor
componente i algoritmi de planificare a acestora. Tehnica elaborat pentru planificarea
secvenelor elementare nvate folosete reguli de producie stocate n baza de cunotiine
pentru a soluiona problema de alocare a secvenelor n cadrul unei echipe de roboi pitori
ce lucreaz prin cooperare pentru execuia unei operaii complexe. Algoritmul de nvare al
acestui sistem a fost corelat i dezvoltat conform caracteristicilor roboilor pitori astfel c
pentru secvenele de manipulare s-a optat pentru tehnica de nvare prin demonstrare. Sunt
dezvoltate de asemenea dou module de comunicare i de sincronizare a roboilor pitori din
cadrul echipei ce execut operaii n mediul industrial. n lucrare este prezentat o interfa de
control a sistemului dezvoltat care permite operatorului s trimit cereri la echipa de roboi,
care are ca scop transmiterea de informaii la sistemul de comand i control al echipei de
roboi. n scopul validrii, funcionarea sistemului inteligent a fost testat pentru cazuri
specifice de manipulare a obiectelor att n mediul virtual, ct i cel real, utiliznd o echip
format din doi roboi pitori Nao, iar rezultatele au fost analizate i interpretate.
ABSTRACT
This thesis aims to improve walking robots working in teams that perform their activities in
industrial environments , highlighting the implementation and use of the "cooperation"
human attribute. It is designed and implemented an intelligent system of cooperation for
mobile robots from industrial environments, handling operations that are based on learning
techniques of sequence components and their scheduling algorithms. The technique
developed for learned elementary planning sequences is using production rules stored in the
database and solves the problem of sequence allocation in a team of walking robots
cooperating to execute complex operations. The learning algorithm of this system was
developed according to the characteristics of the walking robots thus for the manipulation
sequences the chosen technique to be used was the technique of learning by demonstration.
Also, two modules are developed: communication and synchronization of walking robots on
the team that performs operations in the industrial environment. The thesis also presents a
user interface that controls the developed system and allows the operator to send requests to
the team of robots. In order to validate the intelligent system specific cases of manipulating
objects were tested in both virtual and the real environments, using a team of two Nao robots,
and the results were analyzed and interpreted.
Curriculum Vitae
Nume: ALINA NINETT PANFIR
Data i locul naterii: 17 Mai 1985, Braov, jud. Braov
Naionalitate: Romn
Adres: Calea Bucureti, nr. 46, Braov, Romnia
E-mail: alina.panfir@unitbv.ro; aly_ninett@yahoo.com
Studii:
Octombrie, 2010 Septembrie, 2013, Universitatea Transilvania din Braov, Facultatea
de Design de Produs i Mediu, Centrul de Cercetare: Informatic Virtual Industrial i
Robotic (D10): Program de cercetare tiinific, Titlul tezei de doctorat Sistem
inteligent de cooperare a roboilor mobili pitori n medii industriale.
Octombrie, 2005 Iunie, 2009, Universitatea Transilvania din Braov, Facultatea de
Inginerie Electric i tiina Calculatoarelor, Secia Telecomunicaii.
Septembrie 2000 Iunie, 2004 Colegiul Naional de Informatic Grigore Moisil,
Braov
Experien profesional:
August 2013- prezent, programator, Waters Romnia, Braov.
2006 - 2011 , Administrator de resurse umane, S.C. VALCAB S.R.L., Braov.
Cunotine n domeniul tiintelor inginereti i al calculatoarelor:
Limbaje de programare: .NET (C#), C/C++, Java, PHP, HTML/CSS
Proiectare i simulare: Matlab Simulink, Webots, Labview
Programe editare: Microsoft Office, Photoshop
Activitate tiinific:
11 lucrri n proceedings-uri ISI i IEEE (10 indexate ISI, 1 indexat BDI) ale unor
conferine internaionale (6 ca prim autor)
participare la conferine internaionale n Portugalia, Spania,Frana i Romania
stagiu de cercetare n cadrul institutului Fraunhofer, Stuttgart, Germania
Limbi strine:
Englez avansat
Spaniol mediu
Francez nceptor
Curriculum Vitae
Name: ALINA NINETT PANFIR
Date and birth place: 17 May 1985, Braov
Nationality: Romanian
Adress: Calea Bucureti, nr. 46, Braov, Romnia
E-mail: alina.panfir@unitbv.ro; aly_ninett@yahoo.com
Studies:
October 2010 - September, 2013, Transilvania University of Brasov, Faculty of Product
Design and Environment, Research Center: Virtual Industrial Informatics and Robotics
(D10): Program of scientific research. Thesis title: Intelligent mobile robots cooperation
system in industrial environments.
October 2004 - July, 2009, Transivalia University of Brasov, Electrical Engineering and
Computer Science Faculty, Bachelor Degree: Telecommunication
September 2000 June, 2004 National College of Informatics Grigore Moisil, Braov
Professional experience:
August 2013 - Present, developer ,Waters Romania, Braov.
2006 - 2011 , administrator, S.C. VALCAB S.R.L., Braov.
Engineering and computer science skills:
Programming Languages: .NET (C#), C/C++, Java, PHP, HTML/CSS
Design and Simulation: Matlab Simulink, Webots, Labview
Editing Software: Office, Photoshop
Publications:
11 proceedings papers (10 indexed ISI, 1 indexed in International Databases) at
international conferences (6 first author)
participation at international conferences in Portugal, France, Spain and Romania
research internship within Franhopher Institute, Suttgart, Germany
Languages:
English advanced
Spanish medium
French beginner