Transcript 2 paskaita

Intelektikos pagrindai
2012 m.
Robertas Damaševičius
[email protected]
Robotų programavimo
architektūros ir metodai
2 paskaita.
Turinys



Robotų programavimo principai
Robotų sistemų tipai
Robotų architektūros
Programavimas
Programavimo esmė: sukurti programą, kuri sprendžia
tam tikrą problemą ir leidžia pasiekti tikslą
Problema
Planas /
Programa
Tikslas
Roboto programavimas
Problema
Žmogus
Robotas
Kuria planą
Vykdo planą
Tikslas
Kad robotas suprastų žmogaus planus, reikia naudoti roboto
valdymo instrukcijas aprašančią programavimo kalbą
Žmogus
Problema
Kuria planą
Robotas
Kuria
programą
Vykdo
programą
Tikslas
Tipinis robotas
PASAULIS
žmogus
Vykdytuvai
Sąsaja
Jutikliai
Robotas
Valdymas
Programos
vykdymas
Duomenys
Intelektualus robotas
Žinios
Jutimas
Jutikliai
Dirbtinis
intelektas
Priežiūra
Planavimas ir
valdymas
Žemo lygmens
valdymas
Vykdytuvai
PASAULIS
Roboto elgsena
Elgsena – patogi sąvoka kalbant apie roboto atliekamus veiksmus
Sudėtinga elgsena
Pvz.,“rasti kelią labirinte”
Paprasta elgsena
Pvz., “važiuoti į priekį 3 sekundes”
Sudėtingą elgseną galima išskaidyti į
paprastą elgseną
Elgsenos planavimas
1. Analizuoti problemą.
Pavyzdyje: robotas turi patekti iš pradžios
taško (1) į tikslą (2)
2. Rasti bendrą sprendimą.
Pavyzdyje: robotas turi važiuoti nurodytu keliu
3. Suskaidyti sprendimą į smulkesnius
žingsnius (seką)
Pavyzdyje:
1.
2.
3.
4.
5.
6.
7.
Važiuoti į priekį 3 sekundes
Sukti į kairę 90º laipsnių
Važiuoti į priekį 5 sekundes
Sukti į dešinę 90º laipsnių
Važiuoti į priekį 2 sekundes
Sukti į dešinę 90º laipsnių
Važiuoti į priekį 2 sekundes
4. Detalizuoti kiekvieną žingsnį
Pavyzdyje:
1. Važiuoti į priekį 3 sekundes
1.1. Įjungti kairįjį variklį
1.2. Įjungti dešinįjį variklį
1.3. Laukti 3 sekundes
1.4. Išjungti kairįjį variklį
1.5. Išjungti dešinįjį variklį
Elgsenos detalizavimas
1.
1.
2.
3.
4.
5.
6.
7.
Važiuoti į priekį 3 sekundes
Sukti į kairę 90º laipsnių
Važiuoti į priekį 5 sekundes
Sukti į dešinę 90º laipsnių
Važiuoti į priekį 2 sekundes
Sukti į dešinę 90º laipsnių
Važiuoti į priekį 2 sekundes
Važiuoti į priekį 3 sekundes
1.1. Įjungti kairįjį variklį
1.2. Įjungti dešinįjį variklį
1.3. Laukti 3 sekundes
1.4. Išjungti kairįjį variklį
1.5. Išjungti dešinįjį variklį
Detalizavimo algoritmas:
1. Pradėti nuo sudėtingos elgsenos, kuri leidžia išspręsti problemą.
2. Suskaidyti sudėtingą elgseną į paprastesnes elgsenas
3. Kartoti 2 žingsnį tol, kol jie bus pakankamai paprasti,
kad juos būtų galima aprašyti robotų programavimo kalba.
Elgsena ir architektūra

Kaip elgsena turi būti realizuota aprašo
architektūra

Architektūra: sistemos struktūros aprašas,
kuris nurodo iš kokių komponentų sudaryta
sistema ir kaip jie sąveikauja tarpusavyje

Skiriasi nuo detalaus projekto (low-level
design) tuo, kad nenurodo visų realizacijos
detalių
Robotų architektūros raida
Klasikinės architektūros (apie 1975 m.)
• Sense-Plan-Act (SPA)
Statinis pasaulio vaizdas
Reaktyviosios architektūros (apie 1985 m.)
• Jokių modelių: pasaulis yra modelis
• Paprastos jutimo-reakcijos funkcijos
• Atsirandantis (“emergent”) elgesys
Hibridinės architektūros (apie 1990)
• Daugiasluoksiškumas
• Žemiausiame lygyje – reaktyvumas, elem. veiksmai
• Aukščiausiame lygmenyje – pasaulio ir elgsenios modeliai
Tikimybiniai metodai (apie 2000 m.)
• Neapibrėžtoji logika
• Modelių integracija
Reakcija į pokyčius aplinkoje
Sudėtingos aplinkos,
lokalizacija
Sudėtingos realios
aplinkos
Skraidantys ir
plaukiojantys robotai
Roboto elgsena ir valdymas





Roboto elgsena yra išorinio stebėtojo matomi roboto veiksmai (veiksmų
seka)
Roboto programavimo tikslas yra pasielgti, kad robotas turėtų
pageidaujamą elgseną.
Roboto elgsena gali būti:

Judėjimas

Manipuliavimas su objektais (griebimas, nešimas, stumdymas)
Pagal roboto elgseną robotai gali būti skirstomi į

Vežimėlius (judėjimas)

Rankas (patys nejuda, tačiau perkelia kitus objektus)

Hibridiniai (pvz., vežimėlis turi sumontuotą ranką, humanoidiniai ir t.t.)
Elgsena priklauso nuo aplinkos ir roboto būsenos
Roboto būsena


Vidinė būsena gali būti:

stebima: robotas visada žino savo būseną

nestebima/neprieinama: robotas nežino savo būsenos

dalinai stebima: robotas žino dalį informacijos apie savo būseną
Išorinė būsena: pasaulio būsena

Nustatoma naudojant roboto jutiklius

Roboto būsena yra vidinės ir išorinės būsenos
kompozicija

Roboto saugomas būsenos vaizdas yra vadinamas
vidiniu (arba pasaulio) modeliu
Valdymo problemos

Galvojimas (= sprendimų priėmimas) yra lėtas.

Roboto reakcija turi būti greita.

Galvojimas leidžia planuoti veiksmus iš anksto ir taip išvengti
blogų sprendimų

Tačiau per ilgas galvojimas taip pat gali būti pavojingas (pvz.,
robotas gali nukristi nuo laiptų, susidurti su kliūtimi)

Tam kad būtų galima galvoti (samprotauti), robotas turi turėti
daug tikslios informacijos apie savo aplinką, t.y. pasaulio
modelį
Valdymas

Roboto jutiklių ir vykdytuvų koordinavimas

Valdymo metodai:

Reaktyvusis valdymas: Negalvok, bet veik (reaguok)

Elgsena grįstas valdymas: Galvok, kaip veikti

Patariamasis (deliberative) valdymas: Daug galvok, o po to veik

Hibridinis valdymas: Galvok ir veik lygiagrečiai
Reaktyviosios sistemos

Veikia principu poveikis -> atsakas

Tikslas: laiku reaguoti į poveikį dinaminėje ir
nestruktūrizuotoje aplinkoje

Apribojimai:

Mažas būsenų skaičius

Neturi atminties

Nereikia apmokymo / sunkiai apsimoko

Neturi vidinio / pasaulio modelio

Negali numatyti savo būsimų veiksmų

Realizuojama kaip paprastas taisyklių rinkinys
Patariamosios sistemos


Pagrįstos Sense→Plan→Act (SPA) modeliu

Nuoseklios

Planavimas

Atsako paieška

Reikalingas pasaulio modelis
Trūkumai

Pasaulio modelis pasensta

Planavimas ir paieška trunka ilgai
Patariamosios  Reaktyvinės
Šaltinis: Arkin, R. 1998. Behavior Based Robotics.
Hibridinės sistemos

Apjungia reaktyviasias ir patariamasias sistemas



Žemutiniame lygmenyje – reaktyvioji (gali veikti be
sudėtingų skaičiavimų)
Viduriniame lygmenyje – ryšio lygmuo
Viršutiniame lygmenyje – patariamoji (turi pasaulio modelį,
veiksmų planą ir t.t.)

Lygmenys veikia lygiagrečiai

Pagr. problema: kaip valdyti ryšius tarp lygių
Hibridinės sistemos
Komplikuotas valdymas: reikalingas
mediatorius, kuris sprendžia, kurio
sluoksnio veiksmai vykdomi
Neatspari gedimams dėl
vieno sluoksnio gedimo
5-23
Valdymo sistemų palyginimas
Elgsena grįstos sistemos

Alternatyva hibridinėms sistemoms

Gali veikt reaktyviai ir planuoti

Neturi tarpinio sluoksnio

Lygiagretus veikimas
Robotas ir jo aplinka
Grįžtamasis ryšys



Grįžtamasis ryšys: nuolatinis jutiklių stebėjimas ir reagavimas į jų
pokyčius
Autoreguliacinė sistema
Grįžtamasis ryšis:



Neigiamas grįžtamasis ryšys




Teigiamas
Neigiamas
Stabilizuoja sistemos būseną, išeities reikšmę
Jei per daug, sumažina
Jei per mažai, padidina
Teigiamas grįžtamasis ryšys


Padidina sistemos būsenos / išeities signalo reikšmę
Kuo daugiau, tuo labiau padidina
Autonomiškumas

Sugebėjimas pačiam priimti sprendimus ir juos įgyvendinti

Robotikoje: galimybė justi aplinką ir atitinkamai į ją
reaguoti

Autonomiškumas gali būti:

Visiškas

Dalinis (pvz., nuotoliniu būdu valdomi robotai)
Roboto programinės įrangos rolė
Robotų programavimo metodai (1)

Robotų programavimo metodai gali būti
suskirstyti į 2 pagrindines kategorijas:



Rankinis programavimas
Automatinis programavimas
Programų architektūra svarbi abejais atvejais
Šaltinis: G. Biggs and B. MacDonald. A Survey of Robot Programming Systems
Robotų programavimo metodai (2)

Rankinio robotų programavimo metodai
gali būti suskirstyti į 2 pagrindines
kategorijas:


Tekstinis programavimas,
Grafinis (vizualus) programavimas
Šaltinis: G. Biggs and B. MacDonald. A Survey of Robot Programming Systems
Robotų programavimo metodai (3)

Automatinio robotų programavimo
metodai gali būti suskirstyti į 3
pagrindines kategorijas:



apsimokančios sistemos,
programuojamos demonstruojant ir
instrukcinės sistemos.
Šaltinis: G. Biggs and B. MacDonald. A Survey of Robot Programming Systems
Apsimokančios sistemos



Apsimokančios sistemos sukuria programą
indukcijos pagalba iš vartotojo pateiktų pavyzdžių ir
roboto atliekamo aplinkos žvalgymo.
Dažniausiai naudojama neuroninių tinklų
technologija
Etapai:

1. Robotas stebi, kaip turi būti atliekama užduotis

2. Robotas bando atlikti užduotį pats
Instrukcinės sistemos



Instrukcinėms sistemoms duodama instrukcijų seka
(paprastai realiu laiku).
Šis metodas geriausiai tinka nurodant robotams
atlikti užduotis, kurias jie jau buvo apmokyti arba
suprogramuoti atlikti.
Instrukcijoms perduoti gali būti naudojamas balso
atpažinimas arba gestų atpažinimas.
Programavimas demonstruojant (1)





Vienas labiausiai paplitusių robotų programavimo
metodų.
Prasideda nuo žmogaus atliekamos veiksmo
demonstracijos.
Žmogaus rankos ir pirštų judesiai registruojami
naudojant specialią pirštinę su jutikliais
Aplinkoje esantys objektai stebimi kompiuterine sistema,
o balso atpažinimo sistema seka balsines komandas.
Sistemos išeiga yra vykdomoji programa leidžianti atlikti
pademonstruotą veiksmą (užduotį).
Programavimas demonstruojant (2)

Komandų žodyno pavyzdys
Programavimas demonstruojant: pavyzdys
Šaltinis: Handbook of Robotics, 59 skyrius, Springer.
Vartotojo rolė
Daviklių duomenys
Rank.
valdymas

Pranašumai:

Daviklių duomenys

Apibendri
nimas

Autonomiškai vykdoma programa
Vartotojui nereikia rašyti
sudėtingos valdymo
programos
Programavimas keliamas į
aukštesnį lygmenį
Trūkumai:


Rezultatas priklauso nuo
vartotojo “geros valios”
Nėra pilnai automatizuotas
(apibendrinimo etapas)
Šaltinis: S. MÜNCH, J. KREUZIGER, M. KAISER, R. DILLMANN. Robot Programming by Demonstration (RPD) Using Machine Learning and User Interaction Methods for the Development of Easy and Comfortable Robot
Programming Systems. Proc. of the 24th Int. Symp. on Industrial Robots (ISIR '94)
Programavimas demonstruojant (3)

Pranašumai:




mažesni kaštai
operatoriui nereikia turėti programavimo žinių
reikia mažiau laiko robotui sukonfigūruoti
Pagrindinė problema:

apibendrinimas, t.y. kaip pritaikyti programas kitiems
robotams, arba kitiems daiktams, su kuriais dirba
robotai
Programavimo demonstruojant sistemos
funkcinė architektūra
Šaltinis: S. MÜNCH, J. KREUZIGER, M. KAISER, R. DILLMANN. Robot Programming by Demonstration (RPD) Using Machine Learning and User Interaction Methods for the Development of Easy and Comfortable Robot
Programming Systems. Proc. of the 24th Int. Symp. on Industrial Robots (ISIR '94)
Bendrinė demonstravimo schema
Šaltinis: S. MÜNCH, J. KREUZIGER, M. KAISER, R. DILLMANN. Robot Programming by Demonstration (RPD) Using Machine Learning and User Interaction Methods for the Development of Easy and Comfortable Robot
Programming Systems. Proc. of the 24th Int. Symp. on Industrial Robots (ISIR '94)
Architektūros paaiškinimas







Programavimas prasideda nuo demonstravimo, pvz., stumiant
robotą jo judėjimo keliu arba naudojant įvesties įtaisą
Įrašomos reikšmingų parametrų (padėtis, greitis, būsena)
reikšmės
Atliekamas reikšmių normalizavimas panaikinant kiekvieno
demonstravimo nereikšmingas detales
Analizatorius, remdamasis pasaulio modeliu, nuskaito gautas
reikšmes ir generuoja roboto elementarių operacijų seką
Indukcijos komponentas generuoja apibendrintą
demonstravimo pavyzdžių aprašą
Šis aprašas išsaugomas žinių bazėje ir gali būti panaudotas
vėliau
Vartotojo pagalba reikalinga nurodant veiksmų svarbą ir
kontroliuojant apibendrinimo procesą
Vykdymo schema




Vartotojas nurodo pageidaujamą
užduotį ir gauna programos
šabloną
Tuščios vietos šablone
užpildomos informacija iš
pasaulio modelio ir žinių bazės
Programa interpretatoriaus
transformuojama į vykdomą
roboto valdymo sistemos
komandų seką
Robotas valdomas
Šaltinis: S. MÜNCH, J. KREUZIGER, M. KAISER, R. DILLMANN. Robot Programming by Demonstration (RPD) Using Machine Learning and User Interaction Methods for the Development of Easy and Comfortable Robot
Programming Systems. Proc. of the 24th Int. Symp. on Industrial Robots (ISIR '94)
Kognityvinė sistema

Pagr. požymiai:



Žinių atvaizdavimas: kaip
daviklių duomenys
konvertuojami į formatą,
kuriuo duomenis galima
efektyviai saugoti ir analizuoti
Mašininis mokymasis:
nustatyti dėsningumus ir
priimti sprendimus įvairiuose
abstrakcijos lygmenyse
Žmogaus-roboto sąveika:
multimodalinė sąsaja
Šaltinis: S. Vukanovic. Cognitive Robot Programming by Demonstration, 2007.
Apmokymas imituojant



Dėl nuolat besikeičiančios aplinkos robotas turi
nuolat mokytis, įgauti naujus įgūdžius ir žinias ir
pritaikyti jas naujame kontekste.
Tuo jo elgsena tampa panaši į gyvūno arba
žmogaus elgseną.
Atsižvelgiant į idėjas perimtas iš neuroinformatikos ir
socialinių mokslų, buvo pasiūlyta apmokymo
imituojant idėja
Demonstravimas ir imitavimas

Demonstravimas

Nuotolinis valdymas


Šešėliavimas (shadowing):


Mokytojas tiesiogiai valdo robotą, o jo davikliai tik įrašinėja
informaciją
Sistema bando atkartoti mokytojo judesius stebėdama savo
davikliais
Imitavimas


Davikliai ant mokytojo kūno įrašinėja mokytojo
judesius
Išoriniai davikliai įrašinėja mokytojo judesius
Pagr. Progr. dem. problema

Roboto valdymas esant kitam nei buvo
apmokymo metu kontekstui

Pvz.: pasikeitė perkeliamos dėžės matmenys
Paprasčiausio roboto valdymas
jutiklis
jutiklis
Trigeris
Valdymo
sistema
Valdymo
signalas
Robotų architektūros











Sense-Act (SA)
Sense-Decide-Act (SDA)
Sense-Plan-Act (SPA)
Sense-Model-Plan-Act (SMPA)
Lygiagreti Sense-Plan-Act (SPA)
Veiksmų pasirinkimo
Plano modifikavimo
Valdymo (Guidance)
Trijų lygmenų architektūra
Hibridinė trijų lygmenų architektūra
Daugiasluoksnė architektūra
Sense-Act (SA)

Jutiklių duomenys tiesiogiai
perduodami vykdytuvams



„Sense“ veiksmas nuskaito
jutiklių parodymus,
„Act“ veiksmas valdo roboto
įtaisus.
Pirmą kartą panaudota
Braitenberg (1986)
robotuose
Sense-Decide-Act (SDA)

SDA nuosekliai cikle
atliekami trys veiksmai:



„Sense“ veiksmas nuskaito
jutiklių reikšmes,
„Decide“ veiksmas priima
sprendimus priklausomai
nuo jutiklių reikšmių ir
„Act“ veiksmas valdo
roboto įtaisus.
Sense-Plan-Act (SPA)



SPA architektūroje
remiantis iš jutiklių gauta
informacija
suformuojamas roboto
veiksmų planas.
Planas yra sudarytas iš
komandų roboto
vykdytuvams sekos.
„Act“ veiksmas taip pat
gali gauti informaciją
tiesiogiai iš vykdytuvų
SPA pavyzdys: Shakey



Shakey: Stanfordo univ. 1969 m.
Turėjo vaizdo kamerą, ieškiklį,
susidūrimo jutiklius ir buvo sujungtas
su DEC PDP-10 ir PDP-15
kompiuteriais per radijo ir vaizdo
jungtis.
Architektūra sudaryta iš 3 funkcinių
elementų:



Jutimo posistemė transliavo kameros
vaizdą į roboto vidinį pasaulio modelį.
Planavimo posistemės įėjimai buvo
vidinis pasaulio modelis ir tikslas, o
išėjimas – tikslo pasiekimo planas, t.y.
tam tikra veiksmų seka.
Vykdymo posistemė pagal planą
generavo ir siuntė veiksmų vykdymo
signalus robotui.
SPA trūkumai


ilgas planavimas naudojant realaus pasaulio modelį:
iki planavimo proceso pabaigos robotas buvo
blokuojamas.
plano vykdymas be jutiklių buvo pavojingas greitai
besikeičiančiame dinaminiame pasaulyje.
Sense-Model-Plan-Act
(SMPA)



Dalinis SPA architektūros
atvejis
Aiškiai atskirtas modelio
sukūrimo iš jutiklių
duomenų veiksmas
Sukurtas modelis
naudojamas tolesniems
roboto veiksmas planuoti
Lygiagreti Sense, Plan, Act (SPA)


Jutimo, planavimo ir veikimo
veiksmų komponentai
vykdomi lygiagrečiai
naudojant daugelį gijų arba
procesorių sujungtų į tinklą.
Pranašumas:
 „Act“ veiksmas gali atlikti
kelis veiksmus tol, kol
„Plan“ veiksmas planuoja
sekančius veiksmus.
Veiksmo pasirinkimo architektūra



Sudaryta iš elgsenų (cikle
atliekamų SA, SDA ar
SPA veiksmų) ir veiksmo
pasirinkimo mechanizmo.
Yra du veiksmo
pasirinkimo variantai:
trigeriu grįstas ir veiksmu
grįstas.
Trigeriu grįstoje veiksmo
pasirinkimo architektūroje
jutiklių siunčiami signalai
aktyvuoja veiksmų
pasirinkimą.
Veiksmu grįsta VP architektūra

Veiksmu grįstoje
architektūroje veiksmų
pasirinkimo blokui
perduodamas pats
veiksmas
Plano modifikavimo (Repair-based
planning) architektūra




Pradinis planas modifikuojamas
atsižvelgiant į kitus apribojimus
arba gautą naujesnę jutiklių
informaciją apie aplinką:
1) Pradžioje remiantis jutiklių
perduodama informacija
sukuriamas pradinis planas
(kairysis „Plan“).
2) Planas yra modifikuojamas
remiantis atnaujinta jutiklių
informacija (dešinysis „Plan“).
3) Modifikuotas planas
perduodamas vykdymo blokui.
Valdymo (Guidance) architektūra



Veiksmų pasirinkimo
architektūros variantas
papildytas valdymo
(„Guidance“) veiksmu
Leidžia pasirinkti šiuo
metu turimą vykdyti
veiksmą iš veiksmų sekos
Leidžia palyginti dabartinę
roboto būseną su
suplanuotomis būsenomis
Brooks architektūra: pagr. principai (1)
1.
2.
3.
Intelektualus elgesys nereikalauja aiškiai
atvaizduoti žinias
Intelektualus elgesys gali atsirasti nebūtinai
logiškai samprotaujant
Intelektualus elgesys yra tam tikra savaime
atsirandanti sudėtingų sistemų savybė
Brooks architektūra: pagr. principai (2)





Brooks architektūrą sudaro užduotį įvykdančių
elgsenų hierarchija
Kiekviena elgsena yra aprašoma paprasta taisykle
Kiekviena elgsena konkuruoja su kitomis
elgsenomis dėl to, kad robotas ją vykdytų
Žemesnio lygmens elgsenos yra paprastesnes ir turi
prioritetą prieš aukštesnio lygmens elgsenas
Elgseną galima aprašyti pirmos eilės logika
Brooks architektūra (1)


Brooks (elgsena grįsta) architektūra: sudaro keli sąveikaujančių
baigtinių automatų lygmenys.
Kiekvienas baigtinis automatas tiesiogiai jungia jutiklius su
vykdytuvais
Brooks architektūra (2)




Šie baigtiniai automatai yra vadinami elgsenomis.
Vienu metu gali būti aktyvuotos kelios elgsenos
Numatytas arbitravimo mechanizmas, kuris leidžia
aukštesnio prioriteto lygmeniui panaikinti žemesniojo
lygmens signalus
Pavyzdys:



Robote aktyvuotos dvi programos: atsitiktinio žvalgymo
programa ir kliūčių vengimo programa
Aplinkoje be kliūčių robotą valdo atsitiktinio žvalgymo
programa, o kliūčių vengimo programa nesiunčia jokių signalų
Atsiradus kliūčiai, aukštesnio lygmens kliūčių vengimo
programa panaikina atsitiktinio žvalgymo programos
generuojamus signalus ir nukreipia robotą nuo kliūties
Pavyzdys: mobilus robotas
5 lygmuo: Nustatyti objektus
4 lygmuo: Stebėti pasikeitimus
3 lygmuo: Kurti žemėlapį
2 lygmuo: Tirti aplinką
1 lygmuo: Klajoti be tikslo
0 lygmuo: Vengti kliūčių
Brooks architektūra (3)

Brooks architektūros pranašumai:






greitis ir reaktyvumas
patikimumas
tinkamumas dinaminiam pasauliui
robotas veikia jau žemiausiame lygmenyje
sluoksniai nepriklausomi, todėl robotas gali siekti kelių
tikslų vienu metu
Elgsena grįstos architektūros trūkumai:



sudėtinga apjungti elgsena siekiant ilgalaikių tikslų;
beveik neįmanoma optimizuoti roboto elgseną,
sluoksniai didina sistemos sudėtingumą
Sluoksninės architektūros (1)


Sluoksninės architektūros integruoja reaktyvumą
su veiksmų analize
Sudaro trys sluoksniai:



Planavimo
Vykdymo: veikia kaip tiltas (persiunčia planavimo
sluoksnio signalus elgesio kontrolės sluoksniui)
Elgesio kontrolės
Sluoksninės architektūros (2)
Trijų lygmenų architektūra


Lygiagrečios SPA
architektūros
išplėtimas.
Planavimo veiksmą
valdo vartotojo tikslai
su laiko arba kt.
apribojimais.
Trijų lygmenų architektūra su
menedžeriu


Turi menedžerį, skirtą
žemesnio lygmens
kontrolerių įjungimui arba
išjungimui, kuris yra
atliekamas gavus roboto
būsenų seką iš planavimo
komponentą.
Palyginus šią būsenų seką
su dabartine roboto seka
atliekamas atitinkamas
veiksmų pasirinkimas.
Hibridinė trijų
lygmenų
architektūra (1)
Hibridinė trijų lygmenų architektūra (2)






Hibridinė 3 lygmenų architektūra organizuota panašiai
kaip klasikinė 3 lygmenų architektūra, tačiau žemiausias
lygmuo yra pakeistas elgsena grįsta sistema
Jutiklis gali aktyvuoti veiksmą elgsena grįstame
lygmenyje be viduriniojo arba viršutiniojo lygmenų įtakos
Viduriniame lygmenyje gali būti reikalingas elgsenos
menedžeris, kuris yra atsakingas už roboto elgsenos
komponentų įjungimą / išjungimą misijos metu
Jutiklio informacija yra naudojama modeliui sukurti, kuris
savo ruožtu yra naudojamas veiksmų planui sukurti
Elgsenos lygmenyje, jutimo veiksmas yra naudojamas
jau sukurtam planui aktyvuoti
Pastarasis gali panaikinti valdymo veiksmo išėjimus,
pvz., dėl roboto saugumo
Daugiasluoksnė architektūra



Trisluoksnės architektūros
robotus galima apjungti
sukuriant daugelio robotų
valdymo architektūrą
Pavyzdys: Syndicate
architektūra
Kiekvieno sluoksnio
sąsajos bendrauja ne tik
su aukštesnio ir žemesnio
lygmens sluoksniais, bet ir
su atitinkamais kitų robotų
to paties lygmens
sluoksniais
Arbitražas
Elgsena A
Elgsena E
Elgsena B
Elgsena C
Elgsena F
Elgsena H
Elgsena D
Elgsena G
Elgsena I
Arbitras-1
Arbitras-2
Arbitras-3
Vykdytuvas-1
Vykdytuvas-2
Vykdytuvas-3
Robot Programming, Joseph L. Jones, McGraw-Hill, 2004
FRIEND: Hibridinė daugiasluoksnė
architektūra



Sprendėjo (deliberative)
sluoksnis: generuoja tikslui
pasiekti reikalingų operacijų
seką.
Reaktyvusis sluoksnis:
prieiga prie informacija iš
jutiklių ir vykdytuvų
Planavimo sluoksnis
(sequencer): pagal sprendėjo
nurodymus
Hierarchinė valdymo sistema



Mazgai sujungti į medžio
tipo struktūrą
Aukštesni mazgai siunčia
komandas, užduotis ir
tikslus žemesniems
tikslams
Mazgai-broliai gali keistis
pranešimais
Valdymo mazgo struktūra (Reference
Model Architecture, RMA) (1)
Valdymo mazgo struktūra (Reference
Model Architecture, RMA) (2)




Elgsenos generavimo modulis yra atsakingas už iš
viršesnio mazgo gautų užduočių vykdymą. Jis taip pat
kuria užduotis žemesniems mazgams
Jutiklių modulis atsakingas už jutimo informacijos gavimą
iš žemesnių mazgų, grupavimą, filtravimą ir apdorojimą.
Apibendrinta informacija perduodama viršesniam
mazgui.
Sprendimo priėmimo modulis atsakingas už dabartinės
situacijos ir alternatyvinių planų įvertinimą.
Pasaulio modelis yra valdomos sistemos, proceso arba
aplinkos modelis
Horizontali architektūra (GOFAIR)
Šaltinis: Mackworth, A. (2009). Agents, Bodies, Constraints, Dynamics, and Evolution. AI
Magazine, 30(1). http://www.aaai.org/Library/President/Mackworth.pdf
Horizontali architektūra

Jutimo modulis



Samprotavimo modulis



interpretuoja jutiklių duomenis
sukuria pasaulio modelį, kurį perduoda samprotavimo
moduliui
turi tikslus
apjungus modelį ir tikslus gaunamas planas (veiksmų
seka)
Veiksmai

vykdant keičia pasaulį pagal roboto tikslus
Vertikali architektūra
Šaltinis: Mackworth, A. (2009). Agents, Bodies, Constraints, Dynamics, and Evolution. AI
Magazine, 30(1). http://www.aaai.org/Library/President/Mackworth.pdf
Vertikali architektūra

Kiekvienas valdiklis,




Mato tik tai, kas yra žemiau jo
Žino tik tai, ko jam reikia
R. Brooks (1986)
Panašus į biologines sistemas
Müller –InteRRaP

Vertikali architektūra su dvejomis dalimis
cooperation layer
social knowledge
plan layer
planning knowledge
behavior layer
world model
world interface
perceptual input
action output
5-83
Apribojimais grįsta vertikali architektūra
Apribojimais grįsta vertikali architektūra


Apribojimų sprendimą atlieka arbitrai
Arbitrai perduoda signalą toliau atsižvelgdami į jo
prioritetą
Robotų valdymo sistemų įvairovė
ANALIZUOJANČIOS
REAGUOJANČIOS
ATSAKO GREITIS
NUMATYMO GALIMYBĖS
PRIKLAUSOMYBĖ NUO PASAULIO MODELIO
Lėtesnis atsakas
Realaus laiko atsakas
Didesnis intelektualumas
Žemesnis intelektualumas
Kintamas vėlinimas
Paprasti skaičiavimai
Robotų programavimo
aplinkos ir kalbos
Turinys

Microsoft Robotics Developer Studio



Architektūra
DSS
Visual Programming Language (VPL)
Microsoft Robotics Developer Studio



Robotų projektavimo ir modeliavimo platforma
3D imitavimas
Pagrindinė programavimo kalba: C#
Microsoft Robotics Developer Studio
Realaus laiko architektūra
 Lygiagretumas
 Servisų infrastruktūra
Projektavimo įrankiai
 Modeliavimo įrankis
 Visual Programming
Language (VPL)
Servisai ir pavyzdžiai
 Mokomoji medžiaga
 Pavyzdžiai
 Robotų servisai
 Robotų modeliai
Robotics Developer Studio



Windows platformai sukurta aplinka, skirta robotų
kūrimui.
Ji yra integruota su Visual Studio .NET, todėl
programuoti galima bet kuria .NET palaikoma
programavimo kalba.
Pranašumai:



Palaikomi paskirstyti skaičiavimai.
Nepriklauso nuo robotų techninės įrangos, lustų architektūros.
Galima valdyti sudėtingus robotus turinčius daugiau nei vieną
procesorių.
Microsoft Robotics Studio

Robotics Studio sudaro trys dalys:




Runtime — sistemos šerdis, kuri leidžia valdyti robotus.
Concurrency Library (CCR) — biblioteka, skirta lygiagrečių
procesų valdymui.
Decentralized System Services (DSS) — paslaugomis grįsta
architektūra leidžianti kurti ir koordinuoti paskirstytas
programas.
Robotą valdanti programa veikia interneto serveryje,
naudoja tinklo paslaugas. Robotas bendrauja su jį
valdančia programa per bevielę arba laidinę sąsają.
Projektavimo įrankiai

Modeliavimo vizualizavimo įrankiai

Aukštos raiškos 3D atvaizdavimas


Fizikos varikliukas


Grafinis ir fizikinis vaizdai
PhysX™ variklis
Greitas programų kūrimas ir
derinimas
Kas yra roboto programa (pagal MRDS)?
Bumper
(Jutiklis)
Variklis
Message Box
(Vykdytuvas)
Orchestrator
Variklis

Infrared Detector
(Jutiklis)
Bumper
(Jutiklis)
Laisvai susijusių, lygiagrečiai vykdomų komponentų kompozicija



Jutiklių / vykdytuvų valdymas
Vartotojo sąsaja (pvz., pranešimų langas)
Elgsena
Programos realizacijos modeliai

Palaikomi tiek atskiro, tiek paskirstyto vykdymo scenarijai
Prijungta
(operacijos vykdomos kompiuteryje)
Atjungta (robotas veikia
autonomiškai)
Paskirstytas vykdymas
(vykdymas paskirstytas tarp
skirtingų modulių)
Servisai




Pagrindiniai Robotics Developer Studio objektai yra
servisai.
Kiekvienas servisas leidžia atlikti bendravimą tarp
procesų, o kiekvienas procesas atlieka konkrečią
funkciją, pvz., judina roboto galvą arba nuskaito
duomenis iš jutiklio.
Programą sudaro bendradarbiaujančių servisų rinkinys.
Servisai siunčia vienas kitam pranešimus per įvesties ir
išvesties jungtis.
Servisai


Pagrindinis programos kompozicinis blokelis
Servisas




Turi struktūrizuotą būseną
Bendrauja pranešimais siunčiamais per portus
Turi valdiklius (aprašo elgseną)
Pagrindinės operacijos



Būsenos gavimas ir manipuliavimas
Sukūrimas ir sunaikinimas
Pranešimų siuntimas
Portas
FIFO
Servisas
Valdikliai
Būsena
Paskirstytos programos

Servisai gali veikti:



viename robote
bendradarbiaujančių
robotų spiečiuje
tinklo kompiuteryje
Servisai

Servisai gali reikšti bet kokius skaičiavimus




Aparatūriškai: jutikliai, vykdytuvai
Programiškai: vartotojo sąsajos, duomenų
saugojimas,…
Agregacija: jutikliių apjungimas,…
Atkartojimas per kompoziciją

Atskiriama būsena nuo elgsenos
Serviso pavyzdys

Struktūrizuota būsena

Vienodos operacijos

GET, QUERY, UPDATE, DELETE, DROP, SUBSCRIBE
Servisų sąveika


Per tinklo protokolus
Vartotojo sąsajai užtikrinti ir sąveikai su naršykle
naudojamas HTTP


Gili integracija su esama tinklo infrastruktūra
DSSP: SOAP pagrįstas protokolas komunikavimui
tarp servisų

Papildo HTTP modelį struktūrinio duomenų modifikavimo
galimybėmis ir įvykių pranešimais
Robotics Studio sąveika su naršykle
Vartotojo sąsajos
servisas
Valdymo įtaiso
servisas
Robotas
Variklio
servisai
Jutiklių
servisai
Robotics Studio
Runtime variklis


Servisų būseną galima stebėti
visuose programos lygmenyse
Servisai grąžina duomenis įvairiais
formatais
Roboto valdymas su naršykle
Naršyklė
Prisijungimas
Scenarijus
Robotas
Valdymo langas
Variklio
servisai
Jutiklių
servisai
JS servisas
JS servisas
Robotics Studio
Runtime variklis
JS servisas
Decentralized Software Services (DSS)







DSS biblioteka leidžia vykdyti servisus skirtinguose
procesuose arba netgi skirtingose mašinose.
Programa, sukurta naudojant DSS, yra sudaryta iš daugelio
nepriklausomų lygiagrečiai vykdomų servisų.
Kiekvienas servisas turi su juo susietą būseną ir tam tikro tipo
gaunamus pranešimus, vadinamus operacijomis.
Kai servisas gauna pranešimą, jis gali keisti savo būseną ir
siųsti pranešimus kitiems servisams.
Norėdami gauti pranešimus apie kitų servisų būsenos
pasikeitimą, servisai gali juos užsiprenumeruoti.
Servisai taip pat gali būti apjungiami su kitais servisai ir
sudaryti partnerystę.
Šis procesas vadinamas orkestravimu (angl. orchestration).
DSS komponentai
Serviso komponentai




Kontraktas: apibrėžia servisui leidžiamų siųsti pranešimų
tipą. Kiekvieną kontraktą unikaliai identifikuoja kontrakto
identifikatorius, aprašytas URI (Universal Resource Identifier)
formatu.
Vidinė būsena: serviso saugoma informacija leidžianti jam
kontroliuoti savo veiksmus. Aprašyta kaip klasė, turinti
atributus, kurie yra svarbūs serviso darbui.
Elgsenos: operacijų, kurias gali atlikti servisas, aibė.
Vykdymo kontekstas: serviso partnerystės su kitais
servisais ir jo pradinė būsena. Servisas gali turėti neribotą
skaičių partnerių. Partnerystė gali būti dinaminė. Partneriai
nebūtinai turi būti vykdomi tame pačiame kompiuteryje.
Partnerystės pavyzdys
Bumper 2
(Sensor)
Motor
Message
Box
(Actuator)
Orchestrator
Motor
Infrared
detector
(Sensor)
Bumper 1
(Sensor)
Servisas gali užregistruoti partnerystę su bet kuriuo
skaičiumi kitų partnerių
Orkestratoriaus servisas užregistruoja partnerystę su
Bamperio servisu
Kontraktai



Servisai žino, kokiu formatu reikia siųsti vienas
kitam pranešimus, nes jie yra sudarę kontraktą
Kontrakte pateikiama visa informacija, kaip
pranešimai turi būti formatuojami ir kokias
funkcijas gali atlikti servisas
Kontraktas yra saugomas kaip XML schemos
apibrėžimo failas (.xsd)
DSS procesų operacijų sąrašas










Create – sukuriamas naujas servisas
Delete – sunaikinama serviso būsena
Drop – servisas sunaikinamas
Get – gauti serviso būsenos kopiją
Insert – papildyti serviso būseną nauja informacija
Lookup – gauti informaciją apie servisą ir jo kontekstą
Query – panašiai kaip Get, tačiau leidžiamos struktūrizuotos
užklausos.
Replace – pakeičiama serviso būsena
Subscribe – reikalauti pranešimo apie serviso būsenos
pasikeitimus
Update – gauti informaciją apie servisą ir jo kontekstą
Concurrency and Coordination
Runtime (CCR )






CCR biblioteką sudaro klasės ir metodai skirti lygiagretumo,
koordinavimo ir trikių apdorojimo užduotims atlikti.
CCR naudoja asinchroninį programavimo modelį.
Naudojant CCR galima rašyti nepriklausomai vienas nuo kito
vykdomus programų fragmentus, kurie bendrauja vienas su
kitu pranešimais.
Pranešimas yra bet kokio CCR palaikomo tipo duomenys.
Prieš siunčiant jie yra serializuojami ir konvertuojami į XML
formatą, o gavėjas vėliau atlieka atvirkštinį konvertavimą.
Gavus pranešimą, jis yra patalpinamas eilėje, vadinamoje
jungtimi (port) ir būna joje tol, kol gavėjas galės jį apdoroti.
CCR






Gavėjo veiksmų aktyvavimui gali būti nustatomos sąlygos, pvz.,
operacija „Join“ tarp dviejų jungčių reiškia, kad pranešimas turi
ateiti į abi šias jungtis (loginis IR).
Operacija „Choice“ reiškia, kad pranešimas gali ateitį į vieną iš
nurodytų jungčių (loginis ARBA). Loginių išraiškų įvertinimą
atlieka Arbitras.
Patenkinus nurodytą sąlygą, pranešimas yra perduodamas į
dispečerio eilę.
Užduočių vykdymo valdymą atlieka dispečeris, kurie seka šiuo
metu vykdomą kodo fragmentą.
Kiekvienas kodo fragmentas gali būti vykdomas lygiagrečiai ir
asinchroniškai.
Gijų skaičius paprastai yra parenkamas lygus procesorių
skaičiui sistemoje.
CCR architektūra
Robotų modeliavimas naudojant
Microsoft Visual
Programming Language
Grafinio modeliavimo aplinka





Sukurtą programą galima išbandyti modeliavimo
aplinkoje Visual Simulation Environment
Tai yra 3D simuliatorius, kuriame galioja visi fizikos
dėsniai
Kuriamų robotų prototipus ir jų algoritmus galima
išbandyti tiek patalpoje, tiek natūralioje lauko aplinkoje
Robotų servisų realizavimui galima naudoti Visual
Programming Language (VPL)
VPL – tai grafinio programavimo aplinka
Kam reikalingas modeliavimas?



Techninė robotų dalis
yra brangi
Aparatūrą sunku
testuoti
Įvairūs apribojimai gali
neleisti dirbti
lygiagrečiai
Kam reikalingas modeliavimas?

Pranašumai



Lengva išmokti
Lengvas prototipų
kūrimas
Geras mokymosi ir tyrimų
įrankis
Kam reikalingas modeliavimas?

Trūkumai



Nėra “triukšmo”
Nepilni arba netikslūs
duomenys
Priderinimas reikalauja
daug laiko
Visual Programming Language





Tai speciali programų kūrimo aplinka skirta darbui
su DSS servisais.
Programos aprašomos grafiškai naudojant grafinę
notaciją panašią į duomenų srautų diagramas.
Todėl VPL programos yra vadinamos diagramomis.
Kiekvienas blokas atitinka servisą, skaičiavimo
operaciją, sąlygą arba lizdinę diagramą ir yra
vadinamas veiksmu (angl. activity).
Linijos tarp blokų vaizduoja pranešimus,
keliaujančius tarp servisų.
Veiksmo pavyzdys VPL kalboje

Veiksmas turi:




vieną ar kelis įėjimus, vaizduojamus kvadračiukais piktogramos
kairėje ir
vieną ar kelis išėjimus, vaizduojamus kvadračiukais piktogramos
dešinėje
Kai kurie veiksmai turi atskirą išėjimą pranešimams siųsti
Pranešimai siunčiami gavus įėjimo signalą arba pasikeitus
serviso vidinei būsenai
Pranešimai, portai, arbitrai

Pranešimai siunčiami į portus
Port<int> myPort = new Port<int>() ;
myPort.Post (42) ;

Portuose yra:



FIFO struktūra duomenų saugojimui
Skaičiavimo proceso vienetai (continuations)
Arbitrai:

Realizuoja įprastines lygiagretumo abstrakcijas
Pagrindiniai VPL veiksmai (1)





Variable – veiksmas, skirtas gauti arba nustatyti
būsenos kintamojo reikšmę.
Calculate – veiksmas, skirtas skaičiavimams atlikti.
Data – veiksmas, skirtas statiniams duomenims
aprašyti.
Join – veiksmas, kuris išsiunčia pranešimą tik gavęs
pranešimą į savo visus įėjimus.
Merge – veiksmas, kuris persiunčia į išėjimą visus
pranešimus ateinančius į jo įėjimus.
Pagrindiniai VPL veiksmai (2)





If – veiksmas, kuris persiunčia pranešimą į savo pirmąjį
išėjimą, jeigu sąlygos reikšmę yra lygi TRUE.
Switch – pranešimas persiunčiamas į įėjime nurodytą
išėjimą.
List – veiksmas, kuris saugo duomenų sąrašą.
Comment – komentaras
Activity – vartotojo apibrėžimas veiksmas, kuris gali būti
sudarytas ir iš kitų veiksmų.
Architektūra
The Simulator Engine Service







Realizuota kaip servisas
Saugo “pasaulio” būseną
Valdo įvesties įtaisus
3D atvaizdavimas naudojant XNA
Ageia fizikos dėsnių simuliatorius
Grafinė vartotojo sąsaja
Modeliavimo ir derinimo
redaktorius
User Interface / Editor
Simulation
Engine
Service
Ageia
Physics
Engine
XNA
Graphics
Library
Display
Hardware
Paprasčiausias modelis: Hello, World!
Kaip jis veikia?


Veiksmai keičiasi pranešimais
Veiksmai



Gavus įvesties pranešimą atliekamas veiksmas
Veiksmo rezultatas siunčiamas kaip išvesties pranešimas
Jungtys

Jungia išvestis su įvestimis
Input message
Output message
Duomenys



Išvesties pranešimas yra nauja duomenų
reikšmė
Turinys ignoruojamas
Skirtingi duomenų tipai

int, string, double, bool, …
Serviso veiksmai

Servisai gali turėti daug veiksmų


AlertDialog, PromptDialog, ConfirmDialog
Dauguma veiksmų turi du išvesties pranešimus


Sekmė – gali būti siunčiamos rezultatų reikšmės
Nesekmė – veiksmas nebaigtas
Microsoft Robotics Studio
Daugiau informacijos:
http://www.msdn.microsoft.com/robotics