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