• Rezultati Niso Bili Najdeni

Samodejno programiranje robotske celice v virtualnem okolju z uporabo genetskega algoritma

N/A
N/A
Protected

Academic year: 2022

Share "Samodejno programiranje robotske celice v virtualnem okolju z uporabo genetskega algoritma"

Copied!
39
0
0

Celotno besedilo

(1)

UNIVERZA V LJUBLJANI Fakulteta za strojništvo

Samodejno programiranje robotske celice v virtualnem okolju z uporabo genetskega algoritma

David Višnjar

Ljubljana, september 2021

Zaključna naloga Univerzitetnega študijskega programa I. stopnje

Strojništvo - Razvojno raziskovalni program

(2)
(3)

UNIVERZA V LJUBLJANI Fakulteta za strojništvo

Samodejno programiranje robotske celice v virtualnem okolju z uporabo genetskega algoritma

Zaključna naloga Univerzitetnega študijskega programa I. stopnje Strojništvo - Razvojno raziskovalni program

David Višnjar

Mentor: doc. dr. Marko Šimic, univ. dipl. inž.

Somentor: prof. dr. Niko Herakovič, univ. dipl. inž.

Ljubljana, september 2021

(4)
(5)

Zahvala

Zahvaljujem se mentorju doc. dr. Marku Šimicu za svetovanje in pomoč pri izdelavi diplomske naloge. Zahvalil pa bi se tudi Roku Živcu, za pomoč pri praktičnem delu naloge in pri uporabi programa Visual Components.

Zahvaljujem pa se tudi svojim prijateljem in družini, ki so me vseskozi spodbujali in podpirali.

(6)
(7)

Izvleček

UDK 004.415.3:007.52(043.2) Tek. štev.: UN I/1502

Samodejno programiranje robotske celice v virtualnem okolju z uporabo genetskega algoritma

David Višnjar

Ključne besede: samodejno programiranje robotska celica

optimizacija poti virtualno okolje genetski algoritem

V tem diplomskem delu se osredotočamo na napredno programiranje robotske celice v virtualnem okolju s programskim orodjem Visual Components. Eno od metod naprednega programiranja predstavlja uporaba genetskega algoritma, ki omogoča samodejno programiranje robotske celice in optimiziranje poti robotske roke na podlagi ustreznih vhodnih podatkov in postavljene kriterije. V nalogi so v teoretičnem delu predstavljene osnove programiranja robotov in osnove genetskih algoritmov, katere so nam služile pri praktičnem delu naloge. V poglavju metodologija je predstavljen praktičen del naloge, ki zajema uporabo programskega okolja Visual Components in izdelavo robotske celice, katera je potrebna za izvajanje simulacij in pridobitev rezultatov. V tem delu pa je podrobno predstavljen tudi uporabljen genetski algoritem in pa potek simulacij. Na koncu so predstavljeni rezultati simulacij pri različnih pogojih, diskusija in zaključki.

(8)

Abstract

UDC 004.415.3:007.52(043.2) No.: UN I/1502

Self-programming of robot cell in virtual environment by using a genetic algorithm

David Višnjar

Key words: self-programming robot cell

path optimization virtual environment genetic algorithm

In this thesis, we focus on advanced robot cell programming in a virtual environment with the Visual Components software tool. One of the methods of advanced programming is the use of a genetic algorithm that allows automatic programming of the robotic cell and optimization of the path of the robotic arm based on the appropriate input data and set criteria. The theoretical part presents the basics of robot programming and the basics of genetic algorithms, which served us in the making of practical part of the task. The methodology section presents a practical part of the task, which includes the use of the Visual Components software and the creation of a robotic cell, which is needed to perform simulations and obtain results. In this part, the used genetic algorithm and the course of simulations are presented in detail. Finally, the results of simulations under different conditions are presented, as well as the discussion and conclusion.

(9)

Kazalo

Kazalo slik ... xi

Kazalo preglednic ... xii

Seznam uporabljenih okrajšav ... xiii

1 Uvod ... 1

1.1 Ozadje problema ... 1

1.2 Cilji ... 1

2 Teoretične osnove in pregled literature ... 2

2.1 Načini programiranja robotov ... 2

2.1.1 Klasično programiranje ... 2

2.1.2 Napredno programiranje ... 3

2.2 Genetski algoritmi ... 4

2.2.1 Začetna populacija ... 5

2.2.2 Funkcija uspešnosti in selekcija ... 5

2.2.3 Križanje ... 5

2.2.4 Mutacije ... 6

3 Metodologija raziskave ... 7

3.1 Modeliranje robotske celice v programskem okolju Visual Components... 7

3.1.1 Predstavitev programa Visual Components ... 7

3.1.2 Modeliranje robotske celice ... 8

3.2 Genetski algoritem vključen v VC ... 9

3.2.1 Delovanje genetskega algoritma v Visual Components ... 11

3.2.2 Spremembe na originalnem GA ... 13

3.3 Eksperimentalni del (potek simulacij) ... 14

4 Rezultati in diskusija ... 16

4.1 Vpliv parametra mutacij... 16

4.2 Možnost nastavljanja višine ... 17

4.2.1 Možnost različno nastavljenih višin ... 17

4.2.2 Enako nastavljena višina ... 18

(10)

4.3 Rezultati pri različnih postavitvah ovir ... 19

4.3.1 Prva postavitev ... 19

4.3.2 Druga postavitev ... 21

4.3.3 Tretja postavitev ... 22

5 Zaključki ... 24

Literatura ... 25

(11)

Kazalo slik

Slika 2.1: Shema delovanja genetskih algoritmov. [11] ... 4

Slika 2.2: Prikaz eno- in dvo-točkovnega križanja kromosomov. [9] ... 6

Slika 2.3: Prikaz mutacije posameznih genov. [9] ... 6

Slika 3.1: Uporaba programa VC. ... 7

Slika 3.2: Tloris poti paketa v robotski celici. ... 9

Slika 3.3: Upravljanje z genetskim algoritmom. ... 10

Slika 3.4: Parametri poti. ... 11

Slika 3.5: Predstavitev kromosoma posameznika. ... 11

Slika 3.6: Parametri optimizacije. ... 12

Slika 3.7: Parametri števca trkov. ... 12

Slika 3.8: Parameter višine odlaganja (PlaceHeight). ... 14

Slika 3.9: (a) prvi primer postavitve ovire. (b) drugi primer postavitve ovire. (c) tretji primer postavitve ovire. ... 15

Slika 4.1: Vpliv verjetnosti mutacij na število trkov na posameznika v populaciji. ... 16

Slika 4.2: (a) Pot paketa pri različnih možnih višinah. (b) Trk paketa z oviro. ... 17

Slika 4.3: (a) Pot paketa v primeru enakih višin. (b) Prikaz poti brez trka. ... 18

Slika 4.4: Uporabljeni parametri optimizacije. ... 19

Slika 4.5: Število trkov na posameznika v posamezni generaciji. ... 19

Slika 4.6: Čas v odvisnosti od generacije. ... 20

Slika 4.7: Pot okoli prve ovire. ... 21

Slika 4.8: Graf povprečnega časa posameznikov in najboljšega časa posameznikov. ... 21

Slika 4.9: Prikaz najboljše rešitve. ... 22

Slika 4.10: (a) Rešitev tretje postavitve ovire. (b) Izogibanje oviri v fazi pobiranja. ... 23

Slika 4.11: Graf povprečnega časa posameznikov in najboljših posameznikov. ... 23

(12)

Kazalo preglednic

Preglednica 3.1: Uporabljene komponente v robotski celici. ... 8 Preglednica 3.2: Parametri poti genetskega algoritma. ... 10

(13)

Seznam uporabljenih okrajšav

Okrajšava Pomen

GA Genetski algoritem

OLP Indirektno programiranje robotov

VC Visual Components

WTC Works Task Control

WP Works Process

WP #2 Works Process #2

WRC Works Robot Controller

(14)

1 Uvod

1.1 Ozadje problema

Zaradi porasta uporabe robotov v industriji in zaradi težavnega ter časovno potratnega programiranja narašča povpraševanje po naprednejših metodah, ki so hitrejše in enostavnejše. Eno izmed teh metod predstavlja tudi uporaba samodejnega programiranja robota, ki za svojo uporabo ne potrebuje posebnega predhodnega znanja robotske kinematike, hkrati pa porabi malo časa. Prav tako pa se pri programiranju robotov v industriji stremi k temu, da so poti robotov od točke A do točke B izvedeni kar se da optimalno. Seveda pa to ne pomeni nujno, da je izbrana pot najkrajša in da je čas poti najmanjši. Obstaja namreč veliko kriterijev, katere lahko upoštevamo pri določanju optimalne poti robota v robotski celici. Med njimi je zagotovo najpomembnejši kriterij ta, da med obratovanjem robotske celice ne pride do trkov robota z drugimi objekti v celici. Zaradi tesnih robotskih celic ali uporabe več sodelujočih robotov obstaja večja verjetnost trkov robotov, ki pa lahko privedejo do poškodb robotov in s tem finančno škodujejo podjetju. Optimiziranje trajektorije pa ni tako lahka naloga, kot se morda zdi. Vseeno pa za optimizacijo procesov obstaja kar nekaj različnih načinov. V okviru te naloge je podrobneje predstavljeno samodejno programiranje z uporabo genetskega algoritma.

1.2 Cilji

Cilj te diplomske naloge je predstaviti nekaj načinov programiranja robotov ter podrobneje predstaviti teoretične osnove genetskih algoritmov. Nato sledi modeliranje robotske celice v programskem okolju Visual Components, pri čemer želimo, da robotska celica opravlja nalogo prenašanja paketa iz točke A v točko B znotraj robotske celice. Znotraj celice bomo nastavili ovire, ki bodo onemogočale, da bi robot lahko prenesel paket po najhitrejši poti.

Potem pa je potrebno delovanje robotske roke optimizirati tako, da v sami robotski celici ne prihaja do trkov, hkrati pa želimo da se naloga opravi v čim krajšem času. Končni cilj pa je dobiti dober rezultat poti robota ter pokazati delovanje genetskega algoritma.

(15)

2 Teoretične osnove in pregled literature

2.1 Načini programiranja robotov

Roboti so stroji, ki jih lahko programiramo, da opravljajo določeno delo. Njihov glavni namen je avtomatizacija proizvodnih procesov v industriji. Vsako leto se število robotov v industriji poveča, roboti pa postajajo vse bolj pametni in dovršeni. Zaradi zahtevnosti in dolgotrajnosti programiranja robotov pa se pojavlja vedno večja potreba po enostavnejših metodah programiranja robotov, ki za uporabo ne potrebujejo obsežnega strokovnega znanja. To bi omogočilo, da se roboti, ki se sedaj uporabljajo večinoma v industriji, lahko uporabljajo tudi za bolj vsakdanje stvari [1]. V tem poglavju bomo predstavili nekaj načinov programiranja robotov. V poglavju klasično programiranje robotov se bomo osredotočili na nekaj najbolj uporabljenih metod programiranja robotov, ki so v rabi v industriji. V poglavju napredno programiranje pa bomo obravnavali nekaj bolj naprednih načinov programiranja robotov, prav tako pa tudi samodejno programiranje.

Najpogosteje programiranje robotov delimo glede na odnos, ki ga ima programer z robotom.

S tega vidika se načini programiranj delijo na direktne (ang. online) in indirektne (ang.

offline) načine. Pri direktnih načinih je za programiranje robota potrebna direktna interakcija programerja in robota, medtem ko gre pri indirektnih metodah za programiranje brez stika z robotom oziroma indirektno programiranje. Glede na to delitev pa obstajajo tudi hibridne metode, ki vključujejo tako direktne kot indirektne metode [2]. Pri tej nalogi se bomo osredotočili na indirektne metode programiranja robotov.

2.1.1 Klasično programiranje

Vse več se pojavlja indirektnih metod zaradi vedno boljše programske opreme, ki omogočajo operaterju, da z uporabo 3D CAD modelov poustvari in simulira realen proces znotraj virtualnega okolja. Prav tako pa lahko programsko opremo uporabi za namen snovanja novih robotskih celic in še pred izdelavo preveri delovanje procesa. Uporabnik lahko v virtualnem okolju napiše program za robota in s simulacijami preveri njegovo delovanje (testira doseg, preveri če pride do trkov…)[3]. Programiranje robotov po indirektni metodi (OLP) ponuja veliko prednosti pred direktnimi metodami, saj med reprogramiranjem ni potrebno ustaviti

(16)

Teoretične osnove in pregled literature

proizvodne linije, temveč se lahko program napiše v virtualnem okolju, nato pa se ga prenese na robota. Slabost teh metod pa je ta, da je potrebno obvladovanje programske opreme, realna celica pa tudi nekoliko odstopa od virtualne, zato je potrebna še vmesna kalibracija in pa tudi preverjanje programa na koncu.

OLP poteka tako, da je najprej v programskem okolju potrebno zmodelirati robotsko celico, ki opravlja določen proizvodni proces. Pri modeliranju je ključna natančnost uporabljenih CAD modelov, ta zagotavlja uporabne simulacije procesa in programe brez napak. Operater nato pomakne robota na željeno točko in shrani njegov položaj, z dodajanjem točk, se med točkami ustvari pot. Pri tem pa lahko operater ročno določi kakšna bo ta pot (nadzoruje hitrosti, pospeške, tip gibanja). Po končani optimizaciji in preverjanju delovanja, sledi še pretvorba programa v jezik delujočega robota. Na koncu pa sledi še kalibracija zaradi razlik med realno in virtualno robotsko celico. [3]

2.1.2 Napredno programiranje

Napredno programiranje robotov predstavljajo sistemi, ki delujejo na višjem nivoju. Ti omogočajo enostavnejše in hitrejše programiranje robotov, pri tem pa se z razvojem umetne inteligence razvija vedno več različnih metod za interakcijo robotov in ljudi. Za uporabo in programiranje pa ni potrebno veliko predhodnega znanja, saj je uporaba zelo intuitivna. Pod to poglavje spadajo napredni načini programiranja direktnih metod, kot tudi indirektnih, na katere se bomo zaradi narave naloge bolj osredotočili.

Med napredne načine zagotovo spada programiranje robotov, ki deluje na višjem nivoju.

Pod to spada programiranje robotov na nivoju nalog. Pri tem ni potrebno programirati poti robota ter načrtovati, kako bo robot izvedel proces, ampak gre za vnaprej narejene naloge, ki so v proizvodnih procesih najpogosteje uporabljene, s klasičnim pristopom pa bi za njih porabili ogromno časa [4]. Pod napredne načine spada tudi izdelava poti robota po krivulji CAD modela. S tem robot samodejno sledi izbrani krivulji na robovih CAD modelov, kar pa je še posebej primerno za varilne robote. Pri tem je potrebno poudariti pomembnost tega, da je CAD model izdelan dovolj natančno, saj se s tem izognemo morebitnim napakam v nadaljnjih korakih programiranja. [5]

Samodejno programiranje robota se uporablja v primerih optimizacije trajektorije. Z razvojem umetne inteligence ter naprednih algoritmov so se pojavile tudi hitre in enostavne metode za doseganje zelo dobrih rezultatov popisa trajektorij. Najbolj popularen algoritem za optimiziranje kompleksnih problemov je zagotovo Genetski algoritem (GA), ki temelji na Darwinovi teoriji evolucije, podrobneje pa je predstavljen v naslednjem poglavju. GA je zaradi svoje enostavnosti in dobrih rezultatov pogosto uporabljen za naloge optimizacije trajektorij pri industrijskih robotih [6]. Pogosta je souporaba z algoritmi mehke logike. [7]

Drugi pogost način načrtovanja in optimizacije poti predstavlja kolonija mravelj, ki pri svojem delovanju posnema obnašanje mravelj v naravi. Mravlje so namreč sposobne v naravi poiskati najkrajšo pot od vira hrane do mravljišča, saj med potjo izločajo feromone,

(17)

Teoretične osnove in pregled literature

2.2 Genetski algoritmi

Genetski algoritmi (GA) so hevristična metoda iskanja najboljših rešitev, katerega delovanje temelji na principu naravne selekcije [9]. V naravi se živi organizmi skozi generacije poskušajo kar se da dobro prilagoditi okolici. Posamezniki, ki so najbolje prilagojeni na okolico imajo največje možnosti za preživetje in parjenje, s tem pa tudi za prenos svojih lastnosti (genov) v naslednjo generacijo. Pri tem se dobre lastnosti ohranjajo skozi generacije, lastnosti slabših posameznikov pa se izgubijo. Poleg tega pa pri novi generaciji prihaja tudi do mutacij, zaradi česar se posamezna lastnost lahko spremeni na boljše, slabše ali pa sprememba nima vpliva na posameznika. Na podoben način pa delujejo tudi genetski algoritmi. Tekom tega procesa se pri GA na podlagi uspešnosti rešitve izbere posameznike, ki so najboljši, njihove lastnosti pa se bodo preko mehanizmov selekcije, križanja in mutacij prenesle v naslednjo generacijo. Ta proces se ponavlja, dokler ne dosežemo željenega cilja (prag uspeha, čas računanja, število generacij,… ) Po koncu se izbere najboljšo rešitev in algoritem je s tem zaključen. Proces delovanja GA je prikazan na sliki 2.1. [10]

Slika 2.1: Shema delovanja genetskih algoritmov. [11]

(18)

Teoretične osnove in pregled literature

2.2.1 Začetna populacija

Pri uporabi GA je potrebno rešitve predstaviti z obliko nizov, ki se v terminologiji GA imenujejo posamezniki ali kromosomi. Pri tem vsak delček kromosoma predstavlja gen, katerega podatki vplivajo na kvaliteto rešitev. GA se začne z začetno populacijo, ki je ustvarjena popolnoma naključno. Populacija vsebuje kromosome naključno generiranih posameznikov. Namen tega koraka je, da se generira čim več različnih rešitev, ki so enakomerno razporejene po iskalnem prostoru. Večja kot je raznovrstnost rešitev, več možnosti je, da se v tej populaciji nahajajo obetavne rešitve, katere se bodo morda v naslednjih generacijah nadgrajevale in vedno bolj približevale k idealni rešitvi. [9]

2.2.2 Funkcija uspešnosti in selekcija

Funkcija uspešnosti je ključen del delovanja GA. Njen namen je ovrednotiti, kako uspešna je posamezna rešitev oziroma kako dobro kromosom posameznika izpolnjuje kriterije uspešnosti. Funkcija uspešnosti se razlikuje za vsak GA, saj je potrebno najprej za posamezen praktičen primer postaviti kriterije, po katerih se določi uspešnost rešitve. Ko funkcija uspešnosti ovrednoti uspešnost posameznikov, se na podlagi teh dobljenih vrednosti napravi selekcija. Pri tem obstaja več zanimivih načinov selekcije, izmed katerih pa bomo podrobneje predstavili naslednje:

Turnirska selekcija je zaradi svoje učinkovitosti in enostavnosti najbolj popularna metoda selekcije. Pri tej metodi so posamezniki iz populacije izbrani naključno, potem pa tekmujejo med seboj (pogosto je to tekmovanje med dvema posameznikoma), pri tem zmaga tisti z večjo uspešnostjo. [11]

Kolo sreče je način selekcije, ki vsakemu kromosomu glede na njegovo uspešnost priredi verjetnost, da bo ta izbran. Pri tem imajo kromosomi z boljšo uspešnostjo proporcionalno večjo možnost za izbiro. [11]

Selekcija po položaju je podobna načinu kolesa sreče, le da pri tem kromosome v populaciji najprej razvrstimo po uspešnosti, nato pa se mu priredi verjetnost izbire glede na njegov položaj. [11]

Selekcija deleža najboljših (ang. top percent) naključno izbere kromosom iz nekega deleža najboljših rešitev.

2.2.3 Križanje

Po izbiri posameznikov z uporabo mehanizmov izbiranja so ti uporabljeni za izdelavo nove generacije. Tako kot se v naravi kromosomi v genih samca in samice združijo, da nastane kromosom potomca, tako se tudi v GA s pomočjo ustreznega mehanizma izbire staršev

(19)

Teoretične osnove in pregled literature

metod križanja, med njimi pa sta najpogosteje uporabljena eno- ali dvo-točkovno križanje [9], predstavljeno pa je tudi uniformno križanje, katero je uporabljeno tudi pri tej nalogi.

Na sliki 2.2 je predstavljen primer eno- in dvo-točkovnega križanja kromosomov staršev. Pri enotočkovnem križanju se med naključnima genoma razcepita oba kromosoma staršev. V primeru na sliki je to med tretjim in četrtim genom. Pri tem nastanejo 4 delni kromosomi, ki se med seboj križajo in združijo tako, da pri tem nastaneta 2 kromosoma otrok, vsak pa vsebuje del genov vsakega od staršev. Podoben princip je uporabljen tudi pri dvotočkovnem križanju, le da se v tem primeru razcep kromosomov staršev zgodi na dveh različnih mestih.

Slika 2.2: Prikaz eno- in dvo-točkovnega križanja kromosomov. [9]

Pri metodi uniformnega križanja gre za to, da se za vsak gen v kromosomu potomca naključno izbere od katerega izmed staršev bo potomec podedoval gen.

2.2.4 Mutacije

Mutacije predstavljajo zadnji mehanizem GA. Pri tem se na kromosomih potomcev lahko naključno spremenijo vrednosti posameznih genov, kar je predstavljeno na sliki 2.3. Ta mehanizem ohranja raznolikost populacije in s tem omogoča iskanje boljših rešitev, hkrati pa preprečuje, da bi rešitve obstale v lokalnem minimumu. Pri tem mehanizmu je mogoče nastavljati verjetnost mutacij. Ta je je pogosto nastavljena nizko, saj bi se ob preveliki vrednosti algoritem obnašal kot naključni iskalnik rešitev. [9]

Slika 2.3: Prikaz mutacije posameznih genov. [9]

(20)

3 Metodologija raziskave

3.1 Modeliranje robotske celice v programskem okolju Visual Components

3.1.1 Predstavitev programa Visual Components

Visual Components (VC) je programska oprema, ki omogoča 3D modeliranje in simulacije različnih proizvodnih procesov. Prednost uporabe tega programa je, da lahko preverimo delovanje različnih proizvodnih linij in robotskih celic in tako določimo najbolj primerno rešitev za željen proces. S simulacijami lahko določimo ozka grla proizvodnih procesov, v primeru robotske celice pa lahko preverimo, če pride med delovanjem do trkov z drugimi objekti v celici. S tem lahko natančno načrtujemo delovanje procesa in se izognemo morebitnim napakam, preden imamo proizvodni proces zgrajen v realnosti. Poleg tega program omogoča indirektno programiranje robotskih celic. Modeliranje v VC je zaradi velike knjižnice 3D CAD modelov komponent enostavno. V delovni prostor se iz kataloga prenese željen CAD model, ki se ga postavi na željeno mesto v prostoru (slika 3.1).

Omogočeno je tudi uvažanje CAD modelov, programiranje obnašanja lastnih komponent in reprogramiranje obstoječih v programskem jeziku Python API [3].

(21)

Metodologija raziskave

3.1.2 Modeliranje robotske celice

Cilj delovanja naše robotske celice je bil, da robot s prijemalom iz točke A prenese predmet v točko B. Po opravljenem prenosu pa se robot vrne v točko A po nov predmet, cikel pa je s tem zaključen. Ta cikel bomo kasneje optimizirali z uporabo GA.

Pri izdelavi naše robotske celice smo uporabili nekaj komponent iz knjižnice Works, ki omogoča enostavno avtomatizacijo zapletenih in enostavnih proizvodnih procesov in sistemov kot je naša robotska celica. Delovanje knjižnice temelji na višjem nivoju programiranja robotov, ki ga predstavlja programiranje na nivoju nalog, s tem pa dosti olajša delo programiranja robotov. Za delovanje komponent iz knjižnice Works je potrebno v delovni prostor najprej postaviti komponento Works Task Control (WTC), ki med seboj povezuje vse Works komponente v postavitvi in omogoča, da med seboj komunicirajo.

Naslednja pomembna komponenta, ki je ključna za izvajanje nalog v VC, je Works Process (WP). Njen namen je, da ustvarja in izvršuje naloge. Za zadnjo komponento iz knjižnice Works smo uporabili Works Robot Controller (WRC), ki predstavlja sredstvo, s katerim komponenta WP izvršuje svoje naloge [4]. Željene cilje smo dosegli tako, da smo v postavitev na komponento WRC priklopili robotsko roko, katera bo opravljala prenašanje paketa. Za prijemanje in odlaganje paketa je uporabljeno vakuumsko prijemalo. Potrebno pa je dodati še eno komponento WP za sprejemanje paketa. S tem imamo v simulaciji vse potrebne komponente. Naslednji korak je ustvarjanje nalog v komponentah WP in povezovanje s komponento WRC. V preglednici 3.1 so prikazane vse uporabljene komponente skupaj z njihovim namenom.

Preglednica 3.1: Uporabljene komponente v robotski celici.

Komponenta Opis komponente

Works Task Control (WTC) Omogoča komuniciranje Works komponent med seboj Works Process (WP)

Works Process #2 (WP #2) Namen je kreiranje osnovnih nalog, katere se zgodijo v tej komponenti Works Robot Controller (WRC) Preko signalov dobljenih iz ostalih Works komponent upravlja z

robotsko roko

Generic Articulated Robot Robotska roka, ki omogoča prenos paketa znotraj njegovega delovnega prostora

Parametric Suction Gripper Vakuumsko prijemalo, za prijemanje in odlaganje predmeta Visual Components Box Paket, kateri se bo generiral in prenašal

Conveyor Tekoči trak, namen transporta predmeta iz Works process komponente

Block Geo Ovira, kateri se bo robot moral izogniti

Robotska celica deluje tako, da se najprej v komponenti WP generira paket (Visual Components Box). V tej komponenti sledi naloga Feed, katere namen je dovajanje ustvarjenega predmeta robotski roki. Nasprotna naloga Need poteka v komponenti WP #2,

(22)

Metodologija raziskave

pri tem pa se v tej komponenti ustvari potreba po predmetu. Na podlagi teh signalov se preko komponente WRC krmili nanj pripeto robotsko roko. Zaradi teh signalov robotska roka zazna, kdaj je predmet ustvarjen in pripravljen za transport v drugo komponento. Ker generiranje predmeta poteka ciklično, se zaradi tega ciklično izvaja tudi transport predmeta iz začetne točke v končno točko. Po prenesenem predmetu je v enoti WP #2 ustvarjena naloga TransportOut, ki predmet prenese na tekoči trak (Conveyor). [4]

Na sliki 3.2 je predstavljen tloris postavitve robotske celice. Na sliki je z modro barvo označena točka, kjer robot paket prime, dvigne in ga nato prenese v točko odlaganja označeno z črno barvo, kjer robot paket odloži, prijemalo pa popusti. Paket nato potuje po tekočem traku, dokler ne pride do konca. Pot paketa je na sliki označena z rdečo barvo, smer potovanja pa je nakazana s puščico.

Slika 3.2: Tloris poti paketa v robotski celici.

3.2 Genetski algoritem vključen v VC

Genetski algoritem vključen v VC se upravlja na komponenti Works Robot Controller. S parametri GA se upravlja na zavihku MotionPath, kjer je mogoče nastavljati parametre poti, optimizacije in zaznavanje trkov. Na sliki 3.3 je prikazan zavihek MotionPath, na keterem se upravlja z GA. Z izbiro okvirčkov MojGA in pa OptimizeCycle je mogoče izbrati med originalnem GA (OptimizeCycle) in pa prirejenim GA (MojGA). Za določanje parametrov je potrebno razširiti meni posameznih delov algoritma s klikom, potem pa je mogoče nastavljanje parametrov.

(23)

Metodologija raziskave

Slika 3.3: Upravljanje z genetskim algoritmom.

Cikel delovanja je razdeljen na tri dele. Ti deli so pobiranje (Pick), odlaganje (Place) in pa vrnitev v začetno lego (Home), vsak del pa vsebuje tudi svoje zavihke predstavljene na sliki 3.4. Za vsakega od teh delov je mogoče nastavljati parametre poti, ki vplivajo na to, kakšno pot bo robot izvedel za posamezen del cikla. Parametri poti so: strategija, faktor skrčenosti, zaokroževanje in ohranitev višine. S temi parametri lahko spreminjamo trajektorijo poti, katero bo v ciklu izvajal robot. Parametri so podrobneje predstavljeni v preglednici 3.2.

Preglednica 3.2: Parametri poti genetskega algoritma.

Parameter poti Tip

spremenljivke Enota Funkcija Možnosti

Strategija

(Strategy) Seznam različnih načinov poti /

Parameter strategije vpliva na to, kako bo

izgledala pot med gibanjem. Vsebuje 7 različnih strategij gibanja

None Mid-Point Two-Step RFF Two-Step FrFF Two-Step FRF Two-Step FFrF Two-Step FFR

Faktor skrčenosti (ScrunchFactor)

Realno število %

Faktor skrčenosti definira razdaljo med robotom in predmetom, ki ga prenaša

med gibanjem. Pri tem faktor predstavlja skupek

vseh osi.

Katerokoli število od 0 do 100 %

Zaokroževanje

(FlyByRounding) Realno število mm Vpliva na radije

uporabljene pri gibanju. Število od 0-1000 mm Ohranitev višine

(MaintainHeight) Bool / Vpliva na to ali se med premikanjem robota ohranja višina nošenja

predmeta

Vrednost 0 ali 1

(24)

Metodologija raziskave

Na sliki 3.4 so predstavljeni parametri poti. Za uporabo GA vključenega v VC je potrebno najprej obkljukati okvirček OptimizeCycle, ki zažene GA. V primeru ko to ni napravljeno, se lahko ročno nastavlja parametre poti.

Slika 3.4: Parametri poti.

3.2.1 Delovanje genetskega algoritma v Visual Components

Genetski algoritem med delovanjem najprej iz optimizacijskih parametrov razbere število velikosti populacije in faktor začetne populacije. Za vsak del poti (Pick, Place, Home) se potem ustvarja naključne kromosome, dokler ni število posameznikov v začetni populaciji enako zmnožku parametra populacije in faktorja začetne vrednosti. Zgradba kromosoma posameznika je predstavljena sliki 3.5. Na prvo mesto v kromosomu se po simulaciji zapiše število trkov, na drugo mesto se zapiše čas. Ostala mesta v kromosomu pa pripadajo parametrom poti, pri čemer vrednosti vsakega parametra predstavljajo svoje mesto.

(25)

Metodologija raziskave

S pomočjo parametrov optimizacije (slika 3.6) določimo, kaj se bo zgodilo s kromosomi in v kakšnem deležu. Najprej nastavimo parameter Population, ki določa, koliko bo posameznikov v posamezni generaciji. V začetni populaciji je lahko število posameznikov nekoliko večje kot bo v naslednjih generacijah. Na to vpliva parameter StartPopulationFactor, katerega vrednost se pomnoži s številom posameznikov. V primeru na sliki 3.6 to pomeni, da bo v začetni populaciji 60 posameznikov, v naslednjih generacijah pa bo število padlo na 20 posameznikov.

Slika 3.6: Parametri optimizacije.

Po ustvarjeni začetni populaciji se izvedejo simulacije ustvarjenih rešitev, s tem pa se preveri njihova uspešnost. Kako uspešen je kromosom, se določi iz števila trkov in časa, ki je potreben za dokončanje vsakega dela cikla. V ta namen je ustvarjen števec trkov, ki uporablja dva detektorja trkov. Pri tem je en detektor trkov nastavljen tako, da zaznava trke med robotsko roko (vključno s prijemalom in paketom) in preostalo okolico. Drug detektor pa zaznava trke med robotsko roko in prijemalom (vključno z paketom). Števec trkov deluje tako, da na določen časovni interval (določen s parametrom TestInterval) preveri ali je prišlo do trka med komponentami. Število trkov posamezne rešitve je seštevek obeh detektorjev trkov. Za uporabo detektorjev trkov je mogoče nastavljati še 2 parametra (slika 3.7). Prvi omogoča, da detektor ne beleži trkov z Works komponentami (ExcludeWorks), drugi pa omogoča nastavljanje tolerance trkov (CollisionTolerance - razdalja do katere se lahko robot približa predmetu, preden je zaznan trk). Za vsak del cikla se ob koncu preveri še potreben čas.

Slika 3.7: Parametri števca trkov.

V vsak kromosom se na prvo mesto zapiše število trkov, na drugo pa porabljen čas. Na podlagi tako ustvarjenega kromosoma, se opravi selekcija, ki pa je v tem primeru ustvarjena

(26)

Metodologija raziskave

tako, da se kromosome posameznih delov cikla razvrsti od najboljšega do najslabšega, pri tem so najboljši tisti kromosomi, ki imajo najmanjše število trkov in porabijo najmanj časa.

Za to je uporabljena funkcija sort().

Po razvrstitvi kromosomov se delež najboljših rešitev samodejno prenese v naslednjo generacijo, ostale pa gredo skozi mehanizme selekcije, križanja in mutacij. S parametrom Elites najprej nastavimo kakšen odstotek najboljših rešitev se prenese v naslednjo generacijo. Parameter Mates je pomemben pri mehanizmu selekcije. Njegova vrednost nam poda območje, na katerem se išče kromosome staršev (primer: če je vrednost nastavljena na 20 %, to pomeni, da bo selekcija kromosomov staršev potekala med najboljšimi 20 % posameznikov), ta način selekcije se imenuje tudi selekcija deleža najboljših (ang. top percent). Pri izbiri kromosomov staršev je postavljen pogoj, da se v primeru, ko sta kromosoma staršev enaka, izbere nov kromosom drugega starša. Po uspešni izbiri kromosomov staršev pride do uniformnega križanja, pri čemer gre za to, da se za vsak gen v otrokovem kromosomu naključno izbere od katerega starša bo podedoval kromosom.

Po opravljenem križanju pa na kromosomu otrok poteka mehanizem mutacij, katerega lahko nadzorujemo s parametrom MutationsRate. Ta nadzoruje verjetnost mutacij na posameznem kromosomu. Deluje tako, da se za vsak gen generira naključno racionalno število od 0 do 1. Če je vrednost tega števila manjša, kot je vrednost MutationsRate, se na tistem genu vrednost gena zamenja z naključno ustvarjeno. Z zadnjim parametrom Generations pa nadzorujemo, koliko generacij bo poteklo oziroma kako dolgo bo algoritem iskal najboljše rešitve.

3.2.2 Spremembe na originalnem GA

Težava originalnega GA je bila v tem, da je po končanem algoritmu robot še vedno izbral pot skozi oviro namesto okoli, čeprav so bili določeni kromosomi v začetni populaciji vidno brez trka in bi zato morali biti izbrani v naslednjo generacijo. Pri kromosomih, ki so bili vidno brez trka, je števec še vedno zaznaval veliko število trkov. Za preverjanje delovanja in odpravo napak smo v komponenti WRC dodali novo obnašanje (Python API datoteka, v kateri se nahaja spremenjen algoritem).

Težave z nedelovanjem algoritma (zaradi česar se robot ni izognil oviri) smo odpravili z ustrezno nastavitvijo tolerance trka v kodi detektorja trkov med robotom in prijemalom.

Robot je prej ob simulaciji zaradi prevelike nastavljene tolerance trka zaznaval veliko več trkov med robotom in prijemalom kot med robotom in oviro, zato je bila optimizacija izvedena v smeri zmanjšanja števila trkov med robotom in prijemalom, zaradi česar pa se robot ni izmaknil oviri. Poleg tega pa smo pregledali delovanje izključevanja Works komponent iz detektorja in odpravili težavo z zaznavanjem trkov. Tako smo dosegli, da je v primerih, ko je bila rešitev vidno brez trkov, tudi števec trkov pokazal, da med potjo ni bilo nobenega trka.

Poleg teh sprememb smo algoritmu dodali možnost dviganja paketa na različne višine. S tem

(27)

Metodologija raziskave

lahko nadzorujemo s parametrom PlaceHeight (slika 3.8), ki se nahaja pri parametrih poti za del odlaganje (Place). Pri delovanju GA se za posamezen kromosom naključno izbere višino odlaganja s korakom 15 mm v območju od 30 do 600 mm. Pri tem je potrebno omeniti, da je bil algoritem sprva mišljen tako, da bi bila mogoča različno nastavljena višina na komponentah WP, kasneje pa smo napravili tako, da je višina na obeh straneh enaka.

Slika 3.8: Parameter višine odlaganja (PlaceHeight).

Pri originalnem algoritmu smo spremenili tudi način selekcije kromosomov staršev. Uvedli smo metodo tekmovanja, ki je predstavljena v teoretičnih osnovah GA. To smo storili tako, da smo za izbiro prvega starša iz populacije naključno izbrali dva kromosoma. Tisti izmed njiju, ki je bil boljši, je bil nato izbran za prvega starša. Podobno pa smo napravili tudi pri drugem staršu, le da je dodan pogoj, ki onemogoča da bi bila kromosoma staršev enaka.

3.3 Eksperimentalni del (potek simulacij)

Za preverjanje delovanja in njegov popis smo v GA dodali možnosti beleženja različnih statistik, katere so predstavljene v poglavju rezultati. To nam je omogočilo, da smo z uporabo statistike v programu VC dobili željene podatke. S temi podatki pa smo izdelali graf, ki prikazuje uspeh posamezne populacije glede na čas in število trkov v odvisnosti od generacije. Napravili pa smo tudi graf, ki prikazuje najboljše posameznike v posamezni generaciji. Nato smo pričeli z simulacijami, pri čemer smo simulacije napravili za vplive raznih parametrov in različne primere postavitve ovir med točko prijemanja in točko odlaganja. Ovire so postavljene tako, da robotska roka oviro lahko zaobide, vendar pa bo za to potrebno kar nekaj poskusov. Pri prvi oviri (slika 3.9a) je mogoča optimizacija tako, da robot pokrči svojo roko in paket prenese okoli ovire. Druga ovira (slika 3.9b) je postavljena tako, da se mora spremeniti višina pobiranja in odlaganja paketa. Tretja ovira (slika 3.9c) pa omogoča pot okoli ovire po notranji strani ali zunanji strani in pa nad oviro. Z zadnjo oviro nas zanima samo, katera pot bo najhitrejša. Postavitve ovir so podrobneje predstavljene na naslednjih slikah.

(28)

Metodologija raziskave

(a) (b)

(c)

Slika 3.9: (a) prvi primer postavitve ovire. (b) drugi primer postavitve ovire. (c) tretji primer postavitve ovire.

(29)

4 Rezultati in diskusija

4.1 Vpliv parametra mutacij

Na sliki 4.1 je prikazan vpliv parametra mutacij (MutationsRate) na število trkov na posameznika v populaciji. Prikazani so rezultati štirih simulacij pod enakimi pogoji, razlika je le v parametru verjetnosti mutacij. S slike je razvidno, da po nekaj generacijah število trkov hitreje pade pri manjši verjetnosti mutacij, medtem ko pri veliki pada počasneje, v zadnjem primeru (100 %) pa je lahko povsem naključno. Prav tako je razvidno, da algoritem deluje bolje v primeru majhne verjetnosti mutacij, pri veliki pa se spremeni v naključni iskalnik rešitev. Kljub dobremu rezultatu pri vrednosti 0 %, pa je potrebno omeniti, da je ta parameter pomemben za iskanje novih potencialno boljših rešitev, katere morda sedaj v populaciji niso zajete in je zato v manjšem deležu zaželen.

Slika 4.1: Vpliv verjetnosti mutacij na število trkov na posameznika v populaciji.

0 1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

ŠTEVILO TRKOV NA POSAMEZNIKA

GENERACIJE

0 % 10% 50 % 100%

(30)

Rezultati in diskusija

4.2 Možnost nastavljanja višine

V tem poglavju bomo preizkusili dve možnosti nastavljanja višine. V prvem primeru bo omogočeno to, da je lahko višina pobiranja različna od višine odlaganja, kar nam omogoča diagonalno pot. Pri tem z višino pobiranja upravljajo kromosomi zadolženi za operacije pobiranja, za višino odlaganja pa kromosomi operacij odlaganja. V drugem primeru pa je nastavljeno tako, da je višina pobiranja enaka višini odlaganja.

4.2.1 Možnost različno nastavljenih višin

Spodaj je prikazan zapis najboljših kromosomov operacij pobiranja in odlaganja (Pick, Place) v primeru različno nastavljenih višin. Pri tem lahko iz kromosomov razberemo število trkov, čas in parametre poti. Nas pa bo poleg trkov najbolj zanimala višina , ki se v tem nizu nahaja čisto na desni strani. Vidimo, da je višina pobiranja (del, ki ne vsebuje škatle) zelo majhna (30 mm), višina operacije odlaganja (nošenje paketa) pa je zelo velika (585 mm), kar je prikazano na sliki 4.2a. Pomemben pa je tudi podatek, da je število trkov v obeh kromosomih enako nič.

Pobiranje: [(0, 2.3315058739572123, 'None', 0.1, 50.0, True, 30.0)]

Odlaganje: [(0, 3.152720675097953, 'None', 0.6000000000000001, 25.0, False, 585.0)]

Na sliki 4.2a predstavlja potek poti v primeru različnih višin, pri tem je z točko 1 označena točka pobiranja paketa, točka 2 predstavlja pot paketa, v točki 3 pa robot paket odloži. Na sliki 4.2b pa je prikazan trk paketa z oviro, pri izbranem načinu izbiranja višin.

(a) (b)

(31)

Rezultati in diskusija

Slabost uporabe različnih višin pobiranja se pokaže v tem, da po pregledu končne rešitve ugotovimo, da vseeno prihaja do trkov. Algoritem namreč za vsak del cikla (pobiranje, odlaganje, vračanje) razvrsti rešitve od najboljše do najslabše, na koncu pa se izbere najboljši del posameznega cikla. Čeprav med simulacijami ni prišlo do trkov pri najboljših kromosomih, pa do tega pride na koncu, ko se cikel združi iz najboljših kromosomov posameznega dela cikla. Pri tem se zgodi, da zaradi zelo dobre rešitve v delu cikla pobiranja (Pick) pride do slabše oziroma skoraj nerešljive situacije za del cikla odlaganja. Zaradi kratkoročne dobre rešitve se torej zanemari dolgoročna.

4.2.2 Enako nastavljena višina

Zaradi težav s trki v prejšnjem primeru, smo se odločili, da naj bo višina operacije pobiranja enaka operaciji odlaganja. Pri tem pride do optimizacije na ta način, da je zagotovljen prenos paketa brez trkov, vendar pa zaradi tega ni najbolje optimiziran del pobiranja paketa. V naslednjih nekaj vrsticah sta izpisana najboljša kromosoma iz dela pobiranja (Pick) in odlaganja (Place). Na sliki 4.3a pa je prikazana pot paketa in pa dokaz (4.3b), da med nošenjem paketa ne pride do trkov. Tako kot na sliki 4.2a pa so tudi na sliki 4.3a z številkami označeni posamezni deli poti.

Pobiranje: [(0, 2.967136257648235, 'None', 0.55, 100.0, True, 495.0)]

Odlaganje: [(0, 3.0505416090454673, 'None', 0.6000000000000001, 25.0, False, 495.0)]

(a) (b)

Slika 4.3: (a) Pot paketa v primeru enakih višin. (b) Prikaz poti brez trka.

Če primerjamo čase, vidimo, da je bilo za razliko od prejšnjega primera za operacijo pobiranja potrebno 0,6 sekunde več, čas operacije odlaganja pa se je zmanjšal za 0,1 sekunde. Ključno pa je, da ne prihaja več do trkov. Prikaz poti paketa je podan na prejšnji sliki. Slabost tega je, da se višina optimizira glede na del odlaganja, kar pomeni, da pot nazaj poteka po isti višini, kar pa ni optimalno, saj bi se morala tudi prazna robotska roka s prijemalom čim bolj približati oviri.

(32)

Rezultati in diskusija

4.3 Rezultati pri različnih postavitvah ovir

Napravili smo simulacije v treh različnih postavitvah. Postavitve so predstavljene na sliki 3.9 v poglavju metodologija. Uporabljeni parametri optimizacije so predstavljeni na sliki 4.4. Pri tem je potrebno poudariti, da zaradi spremembe selekcije GA v poglavju metodologija, parameter Mates nima več vloge pri delovanju GA. Pomembno je tudi poudariti, da smo StartPopulationFactor nastavil na 10, saj je potem začetna populacija 10-krat večja, kar pa pomeni, da bo algoritem bolje raziskal prostor rešitev in s tem bolje vedel, v katero smer optimizirati cikel.

Slika 4.4: Uporabljeni parametri optimizacije.

4.3.1 Prva postavitev

Pri prvi postavitvi je ovira postavljena tako, da omogoča pot, ko se robot dovolj pokrči in paket nosi bližje sebi. Prav to pa se zgodi tudi tekom algoritma. Posamezniki, ki so imeli večji faktor skrčenosti (Schrunch factor) in ustrezne ostale parametre, so se prenesli v naslednjo generacijo, po nekaj generacijah pa se je število trkov na posameznika v populaciji hitro zmanjšalo. To je prikazano na sliki 4.5.

0 2 4 6 8 10

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 število trkov na posameznika

(33)

Rezultati in diskusija

Optimizacija časa se je hitro pričela , kar se dobro pokaže na sliki 4.6. Pri tem je vidno, kako se zmanjšuje povprečen čas posameznika v vsaki generaciji napram času najboljših posameznikov. Čeprav GA deluje tako, da se delež najboljših časov direktno prenese v naslednjo generacijo, pa je na grafu najboljših posameznikov opazno nihanje na grafu, ki ga načeloma ne bi smelo biti. Razlogi za to so različni, saj GA išče rešitve, ki potekajo zelo blizu ovire, ker so te rešitve najhitrejše. Problem se pojavi, ker detektor trkov trke beleži na časovni interval. Zato se med najboljšimi rešitvami lahko pojavijo tudi rešitve, ki so časovno najbolj ugodne in sprva ne vsebujejo trkov, ob ponovni simulaciji v naslednji generaciji pa pride do trka in rešitev se ne prenese več direktno v naslednjo generacijo, lahko pa se prenesejo njeni geni z mehanizmom selekcije in križanja. Pogosto pa pride tudi do tega, da kljub istim kromosomom pride med generacijama do odstopanja v časih. Simulacija namreč poteka tako, da se simulira en cikel za drugim, zaradi česar pride do menjave višine med prejšnjim ciklom in sedanjim, kar pa lahko vpliva na čas simulacije, vendar pa skozi generacije to nima kakšnega dolgoročnega vpliva. Na sliki je opazno tudi, da nekje po 27.

generaciji ne pride več do izboljševanja rešitve, zato bi za rešitev tega primera zadostovalo že okoli 30 generacij.

Slika 4.6: Čas v odvisnosti od generacije.

Spodaj sta izpisana še najboljša posameznika operaciji pobiranja in odlaganja za podan cikel.

Kot vidimo, je faktor skrčenosti zelo velik (0.9), višina pri vsakem posamezniku pa znaša 30 mm, kar je tudi najmanjša mogoča nastavitev. GA je prepoznal, da manjša kot je višina, krajši je tudi čas.

Pobiranje: [(0, 2.3244045530518633, 'Mid-Point', 0.9, 100.0, True, 30.0)]

Odlaganje: [(0, 2.321828977772384, 'Mid-Point', 0.9, 100.0, True, 30.0)]

Za boljšo predstavo pa je na naslednji sliki (4.8) predstavljena tudi pot, ki jo robotska roka opravi pri prenosu paketa. Ker sta operaciji pobiranja in odlaganja kromosoma enaka, je pot robota enaka v obeh operacijah. Na sliki je pot označena z črno barvo. Začetek poti (točko pobiranja) predstavlja točka 1, pot okoli ovire je predstavljena z točko 2, točka odlaganja pa je predstavljena z točko 3.

2 2,5 3 3,5 4

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Čas [s]

Generacije

Čas najboljših posameznikov Povprečen čas posameznika

(34)

Rezultati in diskusija

Slika 4.7: Pot okoli prve ovire.

4.3.2 Druga postavitev

Druga postavitev preverja zmožnost, da robot samodejno poišče ustrezno višino in se s tem izogne tej oviri. Pri tem pričakujemo, da bo izbral takšno višino, da se pri nošenju paketa komaj izogne oviri. Na naslednji sliki je tako kot prej prikazan povprečen čas posameznika napram najboljšim časom. Kot vidimo, je potek povprečnega časa podoben prejšnjemu, medtem ko je najboljši čas od vsega začetka pa do konca približno enak. To je posledica velikega števila začetnih kromosomov, ki pa v tem primeru najbrž ne bi bili potrebni. Kljub temu pa pride okoli 20. generacije do nekaj odstopanj, saj se čas nekoliko poveča.

2,7 2,8 2,9 3 3,1 3,2 3,3 3,4 3,5 3,6 3,7

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Čas

Generacija

Povprečen čas posameznika Najboljši čas posameznika ( Place)

(35)

Rezultati in diskusija

Prav tako kot prej pa je zanimiv zapis najboljših kromosomov. Pri tem bomo med seboj primerjali najboljša kromosoma operacije odlaganja generacije iz 10. in iz zadnje generacije.

10. [(0, 2.983721923272242, 'None', 0.35000000000000003, 25.0, False, 435.0)]

40. [(0, 3.0002871930737456, 'None', 0.35000000000000003, 50.0, False, 450.0)]

Kot opazimo, sta kromosoma skoraj identična, očitna pa je sprememba višine dviganja paketa s 435 na 450 mm. Po preverjanju kromosomov v VC, smo prišli do sklepa, da v prejšnjih generacijah ni zaznalo trka med oviro, v generaciji 18 pa se je to zgodilo, zato so do izraza prišli drugi kromosomi. Posledično pa smo dobili naš končni kromosom. Na sliki 4.9 pa je prikazano premagovanje druge ovire, pri tem točka 1 predstavlja začetek, točka 2 pa konec poti.

Slika 4.9: Prikaz najboljše rešitve.

4.3.3 Tretja postavitev

Tretja postavitev omogoča več različnih poti, preprečuje pa časovno najbolj optimalno pot.

Pri tem nas je zanimalo, katera pot bo izbrana. Omogočena je tako pot nad oviro in pa pot ob velikem in majhnem faktorju skrčenosti, robot lahko torej zaobide oviro po katerikoli strani.

Rezultat te postavitve je prikazan z izpisom najboljše operacije pobiranja in odlaganja po končanem delovanju GA. Vidno je, da je tudi v tem primeru višina nastavljena na najmanjšo možno, zaradi majhnega faktorja skrčenosti pa poteka pot v primeru Place operacije okoli ovire po zunanji strani, Pick operacija pa se zgodi nad oviro, saj se pri strategiji gibanja 'None' faktor skrčenosti ne upošteva.

Pobiranje: [(0, 2.3312769811873295, 'None', 0.350000000000003, 50.0, False, 30.0)]

Odlaganje: [(0, 2.3548145266086067, 'Mid-Point', 0.3000000000004, 100.0, True, 30.0)]

(36)

Rezultati in diskusija

Na sliki 4.10a je prikazana pot operacij pobiranja in odlaganja, pri tem oranžna barva označuje del pobiranja, modra pa označuje del odlaganja paketa. Na sliki je z številko 1 označen začetek cikla, kjer se robot pomakne proti predmetu. V točki 2 robot predmet pobere in ga nato po poti odlaganja (3) odnese v točko odlaganja (4). Dodana pa je tudi slika s strani (slika 4.10b), ki prikazuje izogibanje robotske roke nad oviro v fazi pobiranja.

(a) (b)

Slika 4.10: (a) Rešitev tretje postavitve ovire. (b) Izogibanje oviri v fazi pobiranja.

Na naslednjem grafu je prikazan še graf časovne optimizacije rešitev tekom generacij, tako kot pri ostalih dveh ovirah:

Slika 4.11: Graf povprečnega časa posameznikov in najboljših posameznikov.

2 2,2 2,4 2,6 2,8 3 3,2 3,4 3,6

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Čas [s]

Generacije

Povprečen čas posameznika Najboljši čas

(37)

5 Zaključki

V zaključni nalogi smo obravnavali samodejno programiranje robotske celice z uporabo genetskega algoritma (GA), pri tem smo spoznali proces indirektnega programiranja v okolju Visual Components (VC) in več naprednih načinov programiranja robotov. Med njimi smo podrobneje obravnavali teoretične osnove GA in njihovo uporabo. Predstavili smo GA, ki je vključen v program VC in na njem napravili tudi nekaj sprememb, nato pa smo napravili simulacije. Tekom te naloge smo:

1) V programskem okolju VC izdelali delujočo robotsko celico, ki je sestavljena iz komponent knjižnice Works in robotske roke. To nam omogoči programiranje na višjem nivoju – nivoju nalog. Robotsko roko smo tako sprogramirali za opravljanje strege paketa iz točke A v točko B.

2) Prilagodili GA vključen v VC. Prilagoditev se nanaša tako na spremembe v detektorjih trkov, kot tudi na dodano možnost iskanja optimalne višine pobiranja in odlaganja.

3) Pokazali delovanje GA na primeru robotske celice. Obravnavali smo več primerov, kot so primeri različnih vrednosti deleža mutacij, primer različnih možnosti nastavljanja višine in več različnih primerov postavitev ovir. Prednost uporabe naprednega programiranja z GA v primerjavi z indirektnim se pokaže v enostavnejšem in krajšem času programiranja, pot pa je optimizirana (glede na parametre poti). Pri optimizaciji z GA obstaja veliko možnih nastavitev, ki različno vplivajo na kvaliteto rešitve. Pri tem je pomembno, da je začetna populacija dovolj velika, da GA najde potencialne rešitve, ki se skozi generacije nadgrajujejo. Če je začetna populacija prevelika, se s tem porabi tudi več časa za simulacije, v primeru premajhne pa kvalitetna rešitev ni zagotovljena.

4) Ugotovili, da se robot uspešno izogne nastavljenim oviram, hkrati pa najde pot, ki je časovno zelo kratka, glede na dane možnosti. V primeru brez ovire robot za prenos paketa potrebuje približno 2,3 sekunde. Kljub postavitvi ovir čas ostaja podoben. Čas se poveča le v primeru, ko mora robot za prenos paketa povečati višino pobiranja in odlaganja. Takrat znaša približno 3,0 sekunde (za primer druge ovire).

Predlogi za nadaljnje delo

Čeprav nam je uspelo uspešno izogibanje oviram, pa zagotovo obstajajo poti, ki bi porabile še manj časa. Za nadaljnje delo bi lahko več časa namenili novim strategijam poti, ki bi bolje popisale gibanje tudi v navpični osi, s tem pa bi omogočili bolj gladko in optimalno pot tudi nad oviro in ne samo v ravnini, kot je to storjeno doslej.

(38)

Literatura

[1] G. Biggs in B. MacDonald, „A Survey of Robot Programming Systems“, str. 10.

[2] O. Heimann in J. Guhl, „Industrial Robot Programming Methods: A Scoping Review“, v 2020 25th IEEE International Conference on Emerging Technologies and Factory Automation (ETFA), Vienna, Austria, sep. 2020, str. 696–703.

[3] Visual Components, Steps of the OLP process. Dostopno na:

https://www.visualcomponents.com/resources/blog/steps-of-the-olp-process/, ogled 10.8.2021.

[4] Visual Components, Getting started with the Works library. Dostopno na:

https://www.visualcomponents.com/resources/blog/getting-started-with-the-works-library/, ogled 10.8.2021.

[5] Visual Components, Teaching robots with Visual Components. Dostopno na:

https://www.visualcomponents.com/resources/blog/teaching-robots-visual-components/, ogled 10.8.2021.

[6] Y. Davidor, „ROBOT PROGRAMMING WITH A GENETIC ALGORITHM“, str. 6.

[7] L. A. Zadeh, „Fuzzy logic“, Computer, let. 21, št. 4, str. 83–93, apr. 1988.

[8] F. Z. Baghli, L. E. bakkali, in Y. Lakhal, „Optimization of Arm Manipulator Trajectory Planning in the Presence of Obstacles by Ant Colony Algorithm“, Procedia Engineering, let. 181, str. 560–567, 2017.

[9] S. Mirjalili, „Genetic Algorithm“, v Evolutionary Algorithms and Neural Networks, let.

780, Cham: Springer International Publishing, 2019, str. 43–55.

[10] D. Whitley, „A genetic algorithm tutorial“, Stat Comput, let. 4, št. 2, jun. 1994.

[11] N. M. Razali in J. Geraghty, „Genetic Algorithm Performance with Different Selection Strategies in Solving TSP“, str. 6, 2011.

[12] A. Castro, J. P. Souza, L. Rocha, in M. F. Silva, „AdaptPack Studio: Automatic Offline Robot Programming Framework for Factory Environments“, v 2019 IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC), Porto, Portugal, apr. 2019, str. 1–6.

(39)

[14] Z. Pan, J. Polden, N. Larkin, S. Van Duin, in J. Norrish, „Recent progress on programming methods for industrial robots“, Robotics and Computer-Integrated Manufacturing, let. 28, št. 2, str. 87–94, apr. 2012.

[15] L. M. Schmitt, „Theory of genetic algorithms“, Theoretical Computer Science, let. 259, št.

1–2, str. 1–61, maj 2001.

[16] Andrej Taranenko, Genetski algoritmi: Diplomsko delo. Maribor 2001

Reference

POVEZANI DOKUMENTI

Boljša izbira amplitude in frekvence optimizirane rešitve genetskega algoritma je č as samega segrevanja, potrebnega za dosego želene temperature v ciljnem obmo č ju

Njegov cilj je prepozna- vanje krajšav in razvezav v slovenskih elektronskih besedilih, predvsem kratic in akronimov, prikazana pa je tudi univerzalnost algoritma pri

S pomočjo metod strojnega učenja je predstavljeno, kako parametri robotske laserske celice vplivajo na trdoto in hrapavost kaljenega material, ter kakšna je povezava

dešifríranje -a s (angl. decryption, decypherment, decrypting, decipherment) postopek, pri katerem se tajnopis z uporabo šifrirnega algoritma in šifrirnega ključa spremeni

robotske revolucije se nanašata na napredne robote in tehnologije umetne inteligence, uporabo robotov tako v proizvodne namene kakor v vsakdanjem življenju ter oblikovanje družbe

RobotExpert ponuja orodje za posredno programiranje in simulacijo, ki omogoča optimi- zacijo robotskih procesov v virtualnem okolju, optimiziranje robotskih programov za

vnos a // program čaka, da uporabnik vnese vrednost vnos b // program čaka, da uporabnik vnese vrednost Dodajmo še spremenljivko ploscina , ki je ne vnašamo, am- pak izračunamo

V tretjem poglavju sem se posvetil splošnemu opisu nadzornih sistemov (SCADA), arhitekturi, principu komunikacije in opisu funkcionalnosti, ki jih taki sistemi