Univerza v Ljubljani Fakulteta za strojništvo
Razvoj sistema za določanje lege objektov na osnovi globinske kamere
Diplomsko delo Visokošolskega študijskega programa I. stopnje Strojništvo – Projektno aplikativni program
Aljoša Burger
Ljubljana, september 2021
Univerza v Ljubljani Fakulteta za strojništvo
Razvoj sistema za določanje lege objektov na osnovi globinske kamere
Diplomsko delo Visokošolskega študijskega programa I. stopnje Strojništvo – Projektno aplikativni program
Aljoša Burger
Mentor: doc. dr. Rok Vrabič Somentor: doc. dr. Drago Bračun
Ljubljana, september 2021
vi
viii
ix
Zahvala
Najprej bi se rad zahvalil mentorju doc. dr. Roku Vrabiču, za mentorstvo, strokovno pomoč ter motivacijo v času pandemije. Brez vsega vloženega truda to delo nebi bilo mogoče. Zahvalil pa bi se še družini, za omogočanje študija vsa ta leta.
x
xi
xii
xiii
Izvleček
UDK 007.52:004.93(043.2) Tek. štev.: VS I/882
Razvoj sistema za določanje lege objektov na osnovi globinske kamere Aljoša Burger
Ključne besede: robotika
slikovni sistemi OpenCV
zaznavanje oblike objektov Robotski operacijski sistem C++
Sodobni industrijski roboti so pogosto uporabljeni za manipulacijo različnih objektov. Za uspešno delovanje pa potrebujejo informacije iz okolice. En od pristopov za zbiranje podatkov in njihovo procesiranje v takem sistem je računalniški vid. V diplomskem delu je zasnovan sistem za prepoznavanje oblike, velikosti in pozicije objekta, ki se premika po tekočem traku, s pomočjo globinske kamere. Predstavljena je teorija zapisa 2D slike, globinske slike, pridobljene s pomočjo stereo vida, ter osnovna predstavitev programskega ogrodja ROS. Razvito je programje, ki je povezano v delovnem okolju ROS. Programska oprema deluje v simulatorju Gazebo ter v realnem okolju s pomočjo Intel D435 globinske kamere. Narejena je primerjava med rezultati v simuliranem in realnem okolju, kjer se vidi pomanjkljivost globinskih podatkov če kamera ni pravilno postavljena glede na delovno območje, in če vplivi okolice niso pravilno upoštevani. Največja težava za procesiranje dvodimenzionalnih podatkov pa je razmerje med ločljivostjo kamere ter območjem interesa.
Na koncu so podani še napotki za nadaljnje delo.
xiv
xv
Abstract
UDC 007.52:004.93(043.2) No.: VS I/882
Development of a system for object pose estimation using a depth camera
Aljoša Burger
Key words: robotics
computer vision OpenCV
object shape recognition Robot operating system C++
Modern industrial robots are often used for manipulation of various objects. For a system to work, however, the robot needs information from its environment. An often used approach for collecting and processing of data in such systems is computer vision. In the thesis, a system was designed for recognition of the general shape, height, and position of an object, moving on a conveyor belt, with the use of an RGBD camera. The presented theory explains how 2D and depth images collected with stereo vision are formed as well as the fundamentals of the Robot Operating System (ROS). The software is developed within a ROS workspace.
The software is tested in a simulated enviroment based on Gazebo and in real life using an Intel D435 RGBD camera. A comparison is made between the results from the simulated and recorded data. It is evident that the depth information is susceptible to errors from incorrect camera placement and other negative impacts from the environment. Meanwhile, the largest issue when processing 2D data is the ratio between the camera resolution and the size of the region of interest. In the end further work and system optimisation is proposed.
xvi
xvii
Kazalo
Kazalo slik ... xix
Kazalo preglednic... xxi
Kazalo izsekov kode ... xxii
Seznam uporabljenih simbolov ... xxiii
Seznam uporabljenih okrajšav ... xxiv
1 Uvod ... 1
1.1 Ozadje problema ... 1
1.2 Cilji ... 2
2 Teoretične osnove ... 3
2.1 Prepoznavanje objektov v industrijskih aplikacijah ... 3
2.1.1 Pregled stanja tehnike ... 3
2.1.2 SCARA roboti ... 5
2.1.3 Osvetlitev interesnega območja ... 7
2.2 Slikovni sistemi ... 8
2.2.1 Kamere ... 8
2.2.2 Zapis 2D slike in barvni prostori ... 9
2.2.3 Tri-dimenzionalno slikanje površin ... 11
2.2.4 Shranjevanje 3D slike ... 13
2.3 Programska oprema ... 14
2.3.1 ROS ... 14
2.3.2 Gazebo ... 15
2.3.3 URDF ... 16
2.3.4 Rqt.. ... 17
2.4 Knjižnica OpenCV ... 18
2.4.1 Cannyjev filter ... 18
xviii
2.4.2 Hierarhija kontur ... 20
2.4.3 Gaussovo meglenje ... 20
2.4.4 Razširjenje ... 21
3 Metodologija raziskave ... 23
3.1 Realni sistem ... 23
3.1.1 Obravnavani objekti ... 24
3.1.2 Kamera Intel D435 ... 25
3.2 Simulacijski sistem ... 27
3.2.1 Simulacija sodelovanja dveh SCARA robotov ... 27
3.2.2 Simulacijsko okolje ... 28
3.3 Programski sistem ... 30
3.3.1 Potek procesiranja slike ... 30
3.3.2 Uporabniški vmesnik ... 32
3.3.3 Procesiranje 2D slike ... 33
3.3.4 Procesiranje 3D slike ... 35
3.3.5 Določanje mer in lokacije objektov ... 35
4 Rezultati in diskusija ... 38
4.1 Prepoznavanje oblik ... 38
4.2 Gabaritne mere in pozicija objektov ... 38
4.3 Težave pri zaznavanju ... 41
5 Zaključek ... 43
Literatura ... 45
xix
Kazalo slik
Slika 2.1: Prikaz zaznanega objekta na desni glede na zastavljene ključne značilnosti [2] ... 3
Slika 2.2: Postavitev TOF kamere glede na območje interesa (A) in izhodni oblak točk v koordinatnem sistemu kamere (B) [3]. ... 4
Slika 2.3: Oblak točk z najmanjšim očrtanim pravokotnikom (rdeča) in obrisom najmanjše oblike v katero so vštete vse točke (A) ter izpeljano omrežje zasedenosti (B) [3] ... 4
Slika 2.4: Prikaz objektov na traku v dveh pogledih. Zelene točke pripadajo traku, rdeče pa objektom [3] ... 4
Slika 2.5: Višinski zemljevid (A), višinski zemljevid po določanju pragov (B), urejena binarna slika (C), prepoznavanje različnih objektov (D), razbiranje ploščine (E) [3] ... 5
Slika 2.6: SCARA robot podjetja FANUC [4] ... 6
Slika 2.7: Prikaz delovnega območja SCARA robota [4] ... 6
Slika 2.8: Metode osvetljevanja ... 7
Slika 2.9: Osvetlitev kovanca: Direktna (A), v svetlem polju (B), v temnem polju (C), od zadaj (D) in direktna difuzna (E) [5] ... 8
Slika 2.10: Primer 3D tiskane rešitve za združevanje 2D RGB ter globinske kamere [6] ... 9
Slika 2.11: Prikaz barvnega modela RGB [8] ... 10
Slika 2.12: HSV barvni model[9] ... 10
Slika 2.13: Nazorni prikaz delovanja kontatknega slikanja [10] ... 11
Slika 2.14: Prikaz deformacije vzorca pri principu strukturirane svetlobe [11] ... 12
Slika 2.15: Nazoren prikaz delovanja stereoskopske kamere [7] ... 12
Slika 2.16: Oblika vzorca, ki ga projicira kamera Intel D435 [12] ... 13
Slika 2.17: Dva pogleda na oblak točk modela torusa [13] ... 14
Slika 2.18: Prikaz globinske slike (A) glede na zajeto sliko (B) [14] ... 14
Slika 2.19: Povezava vozlišč (elipse) prek tem (pravokotniki), za primer simulacije v tej nalogi, prikazano v rqt_graph ... 15
Slika 2.20: Gazebo okolje ... 16
Slika 2.21: XML koda za URDF model modrega valja in prikaz opisanega objekta ... 16
Slika 2.22: GUV programa “Image view” za ogled slikovnih tem ... 17
Slika 2.23: GUV programa “bag” ... 17
Slika 2.24: Prikaz preverjanja lokalnega maksimuma [16] ... 18
Slika 2.25: Nazoren prikaz prepoznavanja robov s Cannyjevim filtrom[16] ... 19
Slika 2.26: Slike s prepoznanimi robovi ulitka in valja s slabimi parametri za iskanje mejnih robov (A) in (B) ter boljšo izbiro za ista objekta (C) in (D) ... 19
Slika 2.27: Primer hierarhije kontur [16] ... 20
Slika 2.28: Sivinska slika pred in po razširjanju [16] ... 21
Slika 3.1: Realni sistem v laboratoriju ... 23
Slika 3.2: Pločevinka barve (A) in valjasti surovec (B) ... 24
Slika 3.3: Ulitek z rebri (A) in ploščat ulitek (B) ... 25
Slika 3.4: Kartonasta škatla ... 25
Slika 3.5: Kamera Intel D435 ... 26
xx
Slika 3.6: Simulacija sodelovanja dveh SCARA robotov ... 28
Slika 3.7: Urejena simulacija ... 29
Slika 3.8: Povezava vozlišč za posnetek ... 30
Slika 3.9: Povezava vozlišč za simulirani del naloge ... 30
Slika 3.10: Prvi del diagrama poteka procesiranja slike ... 31
Slika 3.11: Drugi del diagrama poteka procesiranja slike ... 31
Slika 3.12: GUV nastavljivih parametrov ... 32
Slika 3.13: Nepravilne nastavitve in prikaz artefaktov ... 33
Slika 3.14: Zajeta regija interesa (A) in celotna posneta slika (B) ... 33
Slika 3.15: Koraki urejanja slike za prepoznavanje kontur: Pretvorba v sivinski barvni prostor (A), meglenje (B), iskanje robov (C), odebeljevanje robov (D) ... 34
Slika 3.16: Izrisana najdena kontura ... 34
Slika 3.17: Na konturo škatle (A) in pločevinke barve (B) narisana popisana oblika ... 35
Slika 3.18: Slikovni prikaz računanja mer orisanega štirikotnika ... 36
Slika 3.19: Slikovni prikaz računanja mer orisanega kroga ... 36
Slika 3.20: Slikovni prikaz reševanja problema višine objekta v eni osi ... 37
Slika 4.1: Globinski posnetek kartonaste škatle ... 38
Slika 4.2: Pločevinka barve (A) in kartonasta škatla (B) na dveh lokacijah ... 39
Slika 4.3: Prebrana napačna višina rebrastega (A) in ploščatega ulitka (B), ter valjastega surovca (C) ... 40
Slika 4.4: Testni objekti v simulaciji: Večkotni zeleni objekt (A), rdeči kvader (B)in moder valj (C) ... 40
Slika 4.5: Rdeč kvader s prebrano pozicijo iz uporabniškega vmesnika (A) in preračunano pozicijo (B) iz simulacije ... 41
Slika 4.6: Prekrivanje objektov ... 41
Slika 4.7: Dotikanje podobnih objektov ... 42
Slika 4.8: Dotikanje različnih objektov ... 42
xxi
Kazalo preglednic
Preglednica 3.1: Karakteristike kamere Intel D435 [18] ... 26 Preglednica 4.1: Primerjava izmerjenih vrednosti gabaritnih mer z izračunanimi ... 39
xxii
Kazalo izsekov kode
Program 3.1: Launch datoteka simulacijskega dela ... 27 Program 3.2: URDF datoteka rdečega kvadra ... 29 Program 3.3: GUV za izbiro vira posnetka ... 32 Program 3.4: Branje oddaljenosti objekta v simulaciji ... 35 Program 3.5: Branje oddaljenosti objekta realne kamere ... 35
xxiii
Seznam uporabljenih simbolov
Oznaka Enota Pomen
B / Gaussova porazdelitev
d mm Seštevek zamikov d1 in d2
d1 mm Zamik prve kamere pri stereoskopskem vidu
d2
f Fs
fs
G Gx
Gy
h hobj
l0
l1
l2
ldif
lobj
M r x xd
y z Δs θ σ
mm mm / / / / / m m m m m m m / m / mm / mm mm
° /
Zamik druge kamere pri stereoskopskem vidu Goriščna razdalja
Matrika slike Intenziteta barve Robni gradient
Horizontalni robni gradient Vertikalni robni gradient
Višina kamere glede na tekoči trak Višina objekta na tekočem traku
Opazovana oddaljenost objekta od središča ROI Prva razbrana gabaritna mera objekta
Druga razbrana gabaritna mera objekta
Razlika med opazovano in realno oddaljenostjo objekta Realna oddaljenost objekta od središča ROI
Maksimalna intenziteta posamezne slikovne točke Razbran radij opazovanega objekta
Ločljivost slike v x smeri
Zamik opazovane točke od središča slikovnega senzorja Ločljivost slike v y smeri
Razdalja med kamero in objektom Zamik med kamerama
Kot robnega gradienta Standardna deviacija Indeksi
dif i j obj T0
T1
T2
s x y
Razlika
Koordinata x slikovne točke na sliki Koordinata y slikovne točke na sliki Objekt
Točka, opazovana na objektu Točka, opazovana na objektu Točka, opazovana na objektu Slika
Smer x kartezičnega koordinatnega sistema Smer y kartezičnega koordinatnega sistema
xxiv
Seznam uporabljenih okrajšav
Okrajšava Pomen
2D Dvodimenzionalno
3D Trodimenzionalno
FOV FPS GBR GUV
Vidno polje (ang. Field of View)
Slike na sekundo (ang. Frames per Second)
Barvni prostor, zelena, modra, rdeča (ang. Green, Blue, Red) Grafični Uporabniški Vmesnik
HSV OBJ OS RGB ROI ROS SCARA
Barvni prostor, odtenek, nasičenost, vrednost (ang. Hue, Saturation, Value)
Format za shranjevanje informacij o objeku v treh dimenzijah Operacijski Sistem
Barvni prostor, rdeča, zelena, modra (ang. Red, Green, Blue) Regija interesa (ang. Region Of Interest)
Robotski operacijski sistem (ang. Robot operating system) (ang. Selective Compliance Assembly Robot Arm)
SDF STL TOF URDF XML
Datoteka s prostorskimi podatki (ang. Spacial Data File) (ang. Standard Triangle Language)
(ang. Time-of-Fligt)
(ang. Unified Robot Description Format) eXtensible Markup Language
Uvod
1
1 Uvod
1.1 Ozadje problema
Avtomatizacija sistemov že dolga leta ne kaže znakov zaustavljanja, še posebno v industrijskem okolju. Ena glavnih ovir s katerimi se soočamo na tem področju, je zajemanje senzorskih informacij, katere lahko robot uporabi za izvrševanje svoje naloge. Za reševanje tega problema se pogosto uporablja prepoznavanje objektov s pomočjo strojnega vida, eden od teh temelji na bazi objektov, ki se lahko pokažejo na tekočem traku. S tem robotska roka dobi za vsak znan objekt vse relevantne informacije, ki so že prednaložene in ne razbrane iz slike. Tak sistem je bolj robusten in boljši za delo v večini industrijskih primerov, saj so objekti, ki se lahko pokažejo na tekočem traku znani. Druga možnost pa je uporaba stereo vida, kjer je robustnost zaznavanja zamenjana za splošnost. To pomeni, da bo ta način do neke mere deloval v vsakem okolju.
V tej nalogi se spopadamo s problemom prepoznavanja oblike, mer in pozicije objektov, ki se premikajo po tekočem traku. V preteklosti je za tako nalogo moral biti prisoten človek, saj je naš vidni sistem zelo dober za preprosto analitiko pri prepoznavanju objetkov, vendar pa se to ne sklada s ciljem večanja avtonomije delovnih sistemov. Uporaba optičnega zaznavanja lastnosti objektov v robotiki nam omogoča, da ne potrebujemo dodatne fizične interakcije z objektom za določanje njegovih lastnosti.
Naloga je bila realizirana v vedno bolj popularnem odprtokodnem okolju ROS (ang. Robot Operating System), kjer se je najprej postavilo simulirano okolje v programu Gazebo in v njem program za zaznavanje testiralo, nato pa se je to ponovilo na posnetkih iz resničnega življenja. V naši iteraciji smo uporabili globinsko kamero za čim bolj natančen popis objekta, programska oprema pa mora je morala prepoznati njegove približne mere v treh dimenzijah ter položaj relativno na podano območje interesa ali ROI (ang. Region Of Interest). Na zaslonu mora obrisati prepoznan objekt ter njegove mere in pozicijo izpisati.
2
1.2 Cilji
Cilji naloge so izdelava programske opreme za prepoznavanje oblike objektov, določanje njihove lege glede na center ROI in gabaritnih mer v metrih ter splošna integracija kode v ROS sistem. Program dovoli izbiro med simuliranim in realnim okoljem za primerjavo ter spreminjanje parametrov za nastavljivost glede na to kakšen objekt je zaznan. Glede na obliko so objekti obrisani s pravokotnikom ali krožnico in so nato prikazani na GUV (Grafični Uporabniški Vmesnik) skupaj z razbranimi informacijami.
Problem zaznavanja je rešen v programskem jeziku C++ s pomočjo OpenCV knjižnice, saj je to močno orodje za razpolaganje s slikovnimi informacijami, specifično s zaznavanjem robov objektov. Podatki bodo pridobljeni iz globinske kamere D435 in simulirane globinske kamere v programu Gazebo. Ti so objavljeni na temah v sistemu ROS na katere se naroči izdelana programska oprema. Po obdelavi je urejena slika objavljena za preverjanje pravilnosti in dodatne nastavljivosti.
V drugem poglavju so predstavljene teoretične osnove pomembne za razumevanje delovanja končnega sistema prepoznavanja oblike objekta na traku, ter programska oprema, ki je bila uporabljena pri izdelavi.
V tretjem poglavju je prikazana strojna oprema, ki je bila postavljena za nabiranje podatkov, objekti, ki so bili uporabljeni za testiranje sistema ter programska oprema, ki je bila napisana za izvajanje procesiranja slike ter določanja velikosti in lega objektov.
Na koncu se rezultate programa primerja z izmerjenimi meritvami. Prikazani so še primeri v katerih program svoje funkcije ne more izvajati, podani pa so še napotki za izboljšanje delovanja in zmanjšanje možnosti, da pride do takih leg objektov v katerih oprema ne more delati pravilno.
Teoretične osnove
3
2 Teoretične osnove
2.1 Prepoznavanje objektov v industrijskih aplikacijah
V industrijskih aplikacijah se za prepoznavanje objektov ter njihovo manipulacijo uporablja različne rešitve, glede na zahteve sistema.
2.1.1 Pregled stanja tehnike
Direktna slikovna primerjava ima bazo slik objektov, ki jih išče, in jih kot masko postavi čez zaznan objekt, da preveri če je le ta kateri od shranjenih objektov. Težava s to metodo je, da mora biti maska postavljena direktno na objekt ter zasukana v pravo smer in rešitev za to je veliko primerjav na vsakem zaznanem objektu [1]. Korak naprej je olajšanje dela za računalnik, in s tem pospešenje procesa zaznavanja. To pomeni, da je najprej za objekt definiran samo skupek ključnih značilnosti, po katerih je konsistentno prepoznan. To je lahko doseženo skozi risanje številnih povezanih točk na lokacije kjer so opaženi robovi, saj so le ti tesno povezani s ključnimi značilnostmi objekta, ko pride do prepoznavanja s strojnim vidom. Prikaz zaznavanja objekta glede na zastavljene ključne značilnosti je viden na sliki 2.1 [2].
Slika 2.1: Prikaz zaznanega objekta na desni glede na zastavljene ključne značilnosti [2]
4
Ta način sicer zahteva ročno vnašanje značilnosti, je pa že bilo narejeno določanje z robotskim vidom, ki temelji na Cannyjevem ali pa katerim močnejšim filtrom.
Prepoznavanje obrisa objekta je princip, kjer s pogledom na sivinsko sliko naprava poskusi razbrati samo robove. Na sliki se izbere eno slikovno točko in shrani njeno vrednost (nivo sivine). Potem pogleda vrednost vseh sosedov in, če je vrednost v pragu, ki je lahko tudi nastavljiv, smatra tudi to slikovno točko kot del zaznanega objekta. Po razbranem robu lahko iz njega razberemo kar nekaj lastnosti objekta, kot je njegova ploščina, obseg, generalna oblika ter zaznavanje lukenj in seveda koordinate v regiji interesa [1].
Drug pristop reševanja tega problema je s pomočjo oblaka točk. Ta procesira prejete dodatke na nekoliko drugačen način. Najprej se interesno območje zaznava prazno ter postavi v želeni koordinatni sistem, razvidno na sliki 2.2.
Slika 2.2: Postavitev TOF kamere glede na območje interesa (A) in izhodni oblak točk v koordinatnem sistemu kamere (B) [3].
Na sliki 2.3 je prikazano kako se ze oblak tekočega traku določi mrežo zasedenosti (ang.
occupancy grid) v koordinatnem sistemu območja interesa [3].
Slika 2.3: Oblak točk z najmanjšim očrtanim pravokotnikom (rdeča) in obrisom najmanjše oblike v katero so vštete vse točke (A) ter izpeljano omrežje zasedenosti (B) [3]
Na sliki 2.4 pa je prikaz zaznavanja objekta, ki ne pripada mreži zasedenosti, ki je bila postavljena za tekoči trak. To deluje ker ima omrežje zasedenosti tri dimenzije in, če so točke zaznane v njemu, ali pa niso dovolj goste potem niso štete kot objekt. Tako se zazna objekte, ki se premikajo po traku.
Slika 2.4: Prikaz objektov na traku v dveh pogledih. Zelene točke pripadajo traku, rdeče pa objektom [3]
Teoretične osnove
5 Na sliki 2.5 je prikazano procesiranje oblaka točk po korakih: Najprej se naredi višinski zemljevid (ang. heightmap). To je slika kjer je globina prikazana v sivinski sliki s tem da črna barva predstavlja največjo oddaljenost. Na za sliko se nastavi specifične prage, da je pridobljen boljši višinski zemljevid, sledijo še morfološke operacije za očiščevanje slike, kot je odstranitev samostojnih točk ter zapolnjevanje lukenj v objektu. Uporabljena je funkcija za prepoznavanje posameznih objektov, in vsakemu določi svojo barvo. Na koncu je narejena še poizvedba o dimenzijah specifičnih objektov, specifično ploščina opažene ploskve [3].
Slika 2.5: Višinski zemljevid (A), višinski zemljevid po določanju pragov (B), urejena binarna slika (C), prepoznavanje različnih objektov (D), razbiranje ploščine (E) [3]
2.1.2 SCARA roboti
Za interakcijo z objekti, po tem ko so zaznani, je poznanih veliko rešitev, najbolj elegantna od katerih je za pobiranje iz traku SCARA robot prikazan na sliki 2.6. Artikulirana robotska roka s selektivno skladnostjo (ang. Selective Compliance Articulated Robot Arm) ali SCARA je roka, ki ima omogočeno prosto premikanje po oseh X in Y in je toga na osi Z. Je roka, sestavljena iz dveh segmentov, ki se lahko vrtita okoli Z osi neodvisno drug od drugega. Ima štiri prostostne stopnje, kar pomeni, da ima omejene določene gibe, v tem primeru nima možnosti naklona ali odklona [4].
6
Slika 2.6: SCARA robot podjetja FANUC [4]
Delovno območje je v obliki valja okoli nosilne podlage s premerom odvisnim od dolžine segmentov roke razvidno na sliki 2.7. SCARA je odlična za “poberi in odloži” naloge (ang.
pick and place) katere opravlja z veliko hitrostjo.
Slika 2.7: Prikaz delovnega območja SCARA robota [4]
Pomembno je, da se ne preseže obremenitvenih maksimumov, še posebej ko je roka popolnoma iztegnjena, saj ima tako dokaj veliko navorno ročico.
Teoretične osnove
7
2.1.3 Osvetlitev interesnega območja
Glede na funkcijo sistema za katerega je potrebno pripraviti način osvetljevanja se izbira različne metode, postavitev katerih je prikazana na sliki 2.8.
Slika 2.8: Metode osvetljevanja
Direktna osvetlitev je način osvetljevanja ponavadi dosežena s virom svetlobe v obliki obroča, ki je postavljen tako da je kamera v sredini. Sicer je tako osvetlitev vzporedna z optično osjo, vendar zaradi direktne poti svetlobe do interesnega območja pride do lis kjer se svetloba odbija od podlage in objekta [5].
Osvetlitev v svetlem polju ima vir svetlobe pod majhnim kotom glede na optično os zaradi česar zmanjša bleščanje, vendar je le to še vedno prisotno. Boljši je kontrast kotov zaradi senčenja, vendar pa lahko le te tudi pripomorejo k napačnemu zaznavanju [5].
Osvetlitev temnega polja poveča kot vira svetlobe glede na optično os, in se s tem znebi možnosti zrcalnega odboja proti kameri, težava je z višino objektov ali višino njihovih delov (npr. hladilna rebra) [5].
Osvetlitev od zadaj je optimalen način osvetljevanja, če je cilj prepoznavanje robov objekta ali njihova kontrola. Izgubijo pa se vse podrobnosti na samem objektu [5].
Difuzna osvetlitev je boljša različica direktne osvetlitve, ki uporablja polprepustno zrcalo da zmanjša intenziteto svetlobnih žarkov in se s tem znebi bleščanja. Ker je intenziteta svetlobe, ki pride do kamere manjša je slika lahko pretemna, to pa se popravi z močnejšim virom svetlobe [5].
8
Rezultat opisanih načinov osvetljevanja je prikazan na sliki 2.9.
Slika 2.9: Osvetlitev kovanca: Direktna (A), v svetlem polju (B), v temnem polju (C), od zadaj (D) in direktna difuzna (E) [5]
2.2 Slikovni sistemi
2.2.1 Kamere
Za izbiro kamere je potrebno dobro razumevanja problema, ki ga rešujemo in na podlagi tega izberemo ustrezno napravo. Prva pomembna lastnost je, če ima kamera zmožnost izdelave globinske (3D) slike. To je uporabno če želimo natančno pozicijo ter tretjo dimenzijo opazovanega objekta čim bolj popisati v naši aplikaciji. V primeru da je cilj povezan s prepoznavanjem barve objekta (npr. zrelost paradižnikov) in natančnost pozicije ni tako pomembna, pa je izbira navadne 2D kamere dobra. Druge specifikacije, ki so pomembne pri kameri so njena ločljivost, velikost slikovnega senzorja, maksimalno število slik na sekundo (FPS), hitrost prenosa podatkov ter cena.
Teoretične osnove
9 V industrijskih aplikacijah je velikokrat globinski modul ločen od barvnega, vendar je možen nakup ali 3D tiskanje okvirja, v katerega sta modula vstavljena, da sta kameri na specifični razdalji in je tako možno uporabiti integrirano funkcijo za usklajevanje barvne ter globinske slike. Primer tiskane rešitve je prikazan na sliki 2.10.
Slika 2.10: Primer 3D tiskane rešitve za združevanje 2D RGB ter globinske kamere [6]
2.2.2 Zapis 2D slike in barvni prostori
Za predstavitev digitalnega zapisa sivinske slike je potrebnih nekaj predpostavk. Imamo dve spremenljivki i in j za katere velja 1 ≤ i ≤ 𝑥 in 1 ≤ j ≤ 𝑦 in funkcijo 𝑓s(i,j), ki označuje celoštevilsko funkcijo za katero velja 0 ≤ 𝑓s(i,j) ≤ M. Matrika 𝐹s (2.1) je sestavljena iz funkcije 𝑓s(i,j) kjer i in j določata pozicijo posamezne slikovne točke, njena vrednost pa določa intenziteto barve.
𝐹s = [
𝑓s(1,1) ⋯ 𝑓s(1, 𝑥)
⋮ ⋯ ⋮
𝑓s(𝑦, 1) ⋯ 𝑓s(𝑦, 𝑥)
] 2.1
Maksimalne vrednosti 𝑥, 𝑦 ter M so lastnsti kamere, 𝑥 in 𝑦 predstavljata ločljivost, M pa maksimalno intenziteto določeno s številom dodeljenih bitov [7].
Zgoraj je opisan sivinski barvni prostor, obstajajo pa še taki, ki za intenziteto barve nimajo dodeljene samo ene spremenljivke. S tem omogočajo barvni zapis slike.
RGB/BGR ([R]Rdeča, [G]Zelena, [B]Modra)
RGB barvni sistem katere model je prikazan na sliki 2.11, je sestavljen iz treh spremenljivk.
Vsaka predstavlja eno barvo (rdeča, zelena in modra), kombinacije le teh pa sestavijo vse ostale. Za vsako sliko so narejeni trije zapisi, en za vsako od teh spremenljivk, nakar so te postavljene ena čez drugo tako, da se prekrivajo in se barve združijo. Velikost slike tako postane trikrat večja kot navadna sivinska.
10
Slika 2.11: Prikaz barvnega modela RGB [8]
HSV ([H]Odtenek [S]Nasičenost [V]Vrednost)
HSV je barvni prostor katerega model je prikazan na sliki 2.12, opisuje barvno sliko kot odtenek, nasičenost in vrednost. Odtenek pove kakšna je bazična barva, nasičenost pove če kako bleda je ta barva in vrednost kako temna je. V robotskem vidu ima prednost pred RGB barvnim prostorom, kadar je en od parametrov za prepoznavanje objekta njegova barva, saj so vsi odtenki enkapsulirani v spremenljivki H. Ena od težav pa je da so robne vrednosti odtenka pripisane rdeči barvi (prehod v oranžno, ter prehod v vijolično) to je pogosto rešeno tako, da barvo slike obrnemo in nato iščemo odtenke modre, ki pa nima te težave.
Slika 2.12: HSV barvni model[9]
Teoretične osnove
11
2.2.3 Tri-dimenzionalno slikanje površin
Poznamo tri metode za tri-dimenzionalno slikanje (ang. 3D imaging); kontaktna, prenosna (transmisivna) ter odsevna.
Kontaktna metoda zbira podatke o obliki preko fizičnega kontakta z objektom. Je počasna in lahko poškoduje izdelek poda pa zelo natančne in točne podatke. Primer je Koordinatni Merilni Stroj (KMS), ki se pogosto uporablja v industrijskem okolju za preverjanje pravilnosti kosov. Na sliki 2.13 je nazorno prikazano zaznavanje oblike površine s kontaktno metodo.
Slika 2.13: Nazorni prikaz delovanja kontatknega slikanja [10]
Prenosna metoda uporablja senzorje, ki zaznavajo sproščanje energije v objektu za določanje oblike. Večinoma se tehnika uporablja v medicini v obliki Magnetne Resonance (MRI), Računalniške Tomografije (CT) ali Pozitronske Emisijke Tomografije (PET). Kjer ločujejo različne dele telesa glede na to koliko energije oddajo, ko jih stimulirajo na različne načine.
Odsevna ali reflektivna metoda je lahko optična ali ne optična. Primer ne optične metode je sonar, ki zazna objekte tako, da pošlje ultrazvočne valove in nato zaznava odboje na objektu. Informacije niso natančne so pa uporabne za ugotavljanje generalne pozicije in oblike. Uporaba sonarja je pogosta v ribolovu.
Optična odsevna metoda deluje v dražjih iteracijah na principu časa preleta (ang. Time of Flight), v bolj komercialno dostopnih primerih pa se uporablja princip strukturirane svetlobe, primer delovanja je prikazan na sliki 2.14, kjer sveti vzorec v infrardečem spektru, in z eno ali več kamerami z IR filtrom preverja kako je ta vzorec deformiran [8]. Druga možnost pa je zaznavanje globine s stereoskopskim vidom.
12
Slika 2.14: Prikaz deformacije vzorca pri principu strukturirane svetlobe [11]
Stereoskopski vid
Podobno kot človeški vid stereoskopske kamere posnamejo dve sliki ter jih primerjajo med seboj. Ker je razdalja med zaznavali znana, je možen preračun oddaljenosti objekta od kamere.
Slika 2.15: Nazoren prikaz delovanja stereoskopske kamere [7]
Na sliki 2.15 je prikazan je prizor na katerem je zaznana točka P na razdalji 𝑧. Zaznali sta ga dve kameri, ki sta zamaknjeni za 𝛥𝑠 in imata enako goriščno razdaljo 𝑓. Točka je projicirana na oba senzorja z zamikom 𝑑1 oziroma 𝑑2. Tako veljata relaciji (2.2):
𝑑1 𝑥d = 𝑓
𝑧 za levo kamero in 𝑑2
𝛥𝑠 − 𝑥d= 𝑓
𝑧 za desno kamero (2.2)
Teoretične osnove
13 Razdalja je lahko tako preračunana po formuli (2.3).
𝑑 = 𝑑1 + 𝑑2 =𝑓 ∙𝑥d
𝑧 +𝑓 ∙(𝛥𝑠 − 𝑥d)
𝑧 =𝑓 ∙𝛥𝑠
𝑧 → 𝑧 =𝑓 ∙𝛥𝑠
𝑑 (2.3) Zamik d je pridobljen skozi primerjanje slik in mu je nato določena najbližja diskretna vrednost ponavadi 0-255.
Na sliki se vidi tudi, da ima stereoskopski vid maksimalno dolžino na kateri je še efektiven saj postaneta sliki obeh kamer že preveč podobni za primerjavo. Ima pa tudi minimalno dolžino efektivnosti, ki pa je pogojena s širino senzorjev [7].
Za dodatno pomoč pri zaznavanju, uporabljajo nekatere kamere še IR vzorec, kot dodaten šum, ki ga kameri lahko zaznata, slika 2.16 prikazuje vzorec kamere uporabljene v tej nalogi.
Te vzorci so ponavadi specifične oblike, ki jih zaznavala poznajo in si tako povišajo možnosti, da bo globina razbrana pravilno [12].
Slika 2.16: Oblika vzorca, ki ga projicira kamera Intel D435 [12]
2.2.4 Shranjevanje 3D slike
Od naštetih načinov za 3D slikanje je kontaktna tako natančna, da lahko modele narejene s podatki pridobljenimi na ta način direktno pretvorimo v standardne formate za 3D objekte (STL ali OBJ), za ostale pa so podatki, večino časa pomanjkljivi in potrebujejo za tako pretvorbo še vmesne procese, ki na podlagi prejetih podatkov ekstrapolirajo, kako izgledajo tisti deli, ki so slabše popisani. Za uporabo v industrijskem zaznavanju potrebujemo popisane samo določene točke zato ti procesi niso potrebni. V tem primeru se globinski podatki shranijo v oblak točk ali globinsko sliko. Oblak točk je skupek točk, ki imajo definirane koordinate X, Y in Z in tako sestavijo ter vizualizirajo 3D objekt. Slika 2.17 prikazuje primer oblaka točk za model torusa.
14
Slika 2.17: Dva pogleda na oblak točk modela torusa [13]
Slika 2.18 pa prikazuje globinski zemljevid, ki deluje bolj kot 2D slika, le da ima še za vsako ima za vsako točko posnetka shranjeno samo razdaljo od kamere do opazovane točke.
Slika 2.18: Prikaz globinske slike (A) glede na zajeto sliko (B) [14]
2.3 Programska oprema
Za izdelavo in delovanje naloge je bila potrebna povezava med različnimi programi. Za simulacijsko okolje je bil uporabljen Gazebo, za predvajanje posnetkov rqt_bag, za GUV
“rqt_image_view”, za procesiranje slike in prepoznavanje objektov pa je bila ustvarjena programska oprema, ki je uporabljala knjižnico OpenCV. Vsi ti programi so bili povezani v ogrodju ROS.
2.3.1 ROS
Robotski operacijski sistem je ogrodje (ang. framework) za pisanje programske opreme za uporabo v robotiki. Vsebuje orodja in knjižnice za olajševanje dela pri izdelavi kompleksnih ter robustnih robotskih sistemov. Ker je baziran na odprtokodnem principu spodbuja sodelovalni razvoj. Rezultat tega je hitrejši napredek novih tehnologij v svetu avtomatizacije in robotike, saj se lahko vsak sodelavec osredotoča na specifike v svoji stroki, ter za svoj projekt uporabisegmente kode, ki so jih naredili drugi.
Teoretične osnove
15 Roscore je skupek vozlišč in programov, ki je zadolžen za komunikacijo med vsemi vozlišči.
To je že vgrajena funkcija ROSa, klicana z ukazom “roscore” in mora biti vklopljena za delo vseh ostalih vozlišč. Ob klicu ukaza “roslaunch” se začne izvajati tudi roscore [15].
Delovno okolje(ang. workspace) je mapa (ang. directory) znotraj katerega je z uporabo različnih orodij sestavljen celoten projekt. V tem diplomskem delu je bil uporabljen catkin.
To je en od sistemov za grajenje (ang. build system) v okolju ROS baziran na programski opremi Cmake, in je uporabljen za grajenje in prevajanje (ang. build and compile) projektov, kar je potrebno za pretvorbo izvorne kode v izvršljiv program.
Vozlišče (ang. node) v ogrodju ROS je lahko izdajatelj (ang. publisher), naročnik (ang.
subscriber) ali izdajatelj in naročnik hkrati, vendar ne more brati iz iste teme na katero pošilja podatke. Programi, ki sodelujejo med seboj so postavljeni v isti delovni prostor (ang.
workspace), tako je omogočeno istočasno delo na večih projektih brez mesebojnega motenja [14].
Ker so vozlišča samostojni programi, ki komunicirajo preko jasno definiranih vhodov in izhodov, je integracija že narejenega programja z lastnim zelo preprosta. Povezave med vozlišči in temami je možno pogledati s programjem “rqt_graph”, ki vrne prikaz kot se vidi na sliki 2.19.
Slika 2.19: Povezava vozlišč (elipse) prek tem (pravokotniki), za primer simulacije v tej nalogi, prikazano v rqt_graph
Izdajatelj (ang. publisher), Naročnik (ang. subscriber) in Tema (ang. topic)
Izdajatelj objavi podatke določenega tipa, naročnik jih bere in nato z njimi razpolaga kakor želi. Povezava med vsakin izdajateljem in naročnikom je tema, to je vmesna točka, ki olajša integracijo različnih vozlišč.
2.3.2 Gazebo
Gazebo je programska oprema v kateri je v diplomskem delu simulirano testno okolje za zaznavanje oblike objektov. Okolje opišemo v datoteki “.world” v XML temelječemu SDF formatu, vanj so lahko vstavljene tudi urdf datoteke, ki predstavljajo 3D objekte narejene po meri [13].
16
Slika 2.20: Gazebo okolje
Čeprav je okolje opisano pred zagonom, je možno naknadno dodajanje objektov v sceno.
Nekaj opcij je na voljo že v GUV (slika 2.20), kot je preprosta oblika ali pa različni viri svetlobe, omogočeno je tudi naknadno dodajane zunanjih objektov datotečnega tipa URDF
ali pa STL (ang. Standard Triangle Language).
2.3.3 URDF
URDF (ang. Unified Robot Description Format) je vrsta XML datoteke, uporabljena v okolju ROS. V datoteki definiramo obliko 3D objekta ter njegove lastnosti, ki jih bo Gazebo simulacija upoštevala [14]. Slika 2.21 prikazuje izgled kode URDF formata ter njen rezultat v Gazebo okolju.
Slika 2.21: XML koda za URDF model modrega valja in prikaz opisanega objekta
Teoretične osnove
17
2.3.4 Rqt
En od mnogih paketov, ki so na voljo v ROSu je Rqt. Vključuje veliko GUV orodij, ki temeljijo na ogrodju Qt.
“Image view” (slika 2.22) je programska oprema za prikaz slike ali videa objavljenega na temi. Uporabljena je bila za izdelavo GUV v tem delu.
Slika 2.22: GUV programa “Image view” za ogled slikovnih tem
Vreča (ang. bag) (slika 2.23) je način shranjevanja informacij, ki so objavljene na teme.
Primeri iz različnega življenja so bili predčasno posneti za testiranje, vendar na ta način so objavljeni podatki ravno tako kot, če bi le ti bili predvajani v živo iz kamere. Aplikacija
“rqt_bag” pa daje možnost snemanja ter predvajanja tega tipa datoteke.
Slika 2.23: GUV programa “bag”
18
Vmesnik dovoljuje izbiro vreče, katere teme naj bodo objavljene, igranje/pavziranje posnetka ter premikanje naprej in nazaj po slikah.
2.4 Knjižnica OpenCV
OpenCV je odprtokodna knjižnica za računalniški vid, ki vsebuje mnogo algoritmov za procesiranje 2D slike ali videa, ima pa tudi nekaj možnosti za globinske podatke. V tej nalogi so najpomembnejši Cannyjev filter za iskanje robov, funkcija za iskanje kontur ter funkcije za njuno boljše delovanje.
2.4.1 Cannyjev filter
Canny detektor najprej zmanjša prisotnost šuma z meglenjem in nato sliko filtrira s Sobelovim filtrom v horizontalni (𝐺𝑥) ter vertikalni (𝐺𝑥) smeri.
Sobelov filter primerja sosednje slikovne točke in išče ekstremne spremembe, ki predstavljajo rob. Robni gradient (2.4) ter kot smeri (2.5) je preračunan, iz rezultatov filtra [16].
𝐺 = √𝐺x2+ 𝐺y2 (2.4) 𝜃 = tan−1(𝐺y
𝐺x) (2.5) Ko sta robni kot in kot smeri izračunana je slika skenirana, da se odstrani slikovne točke, ki niso lokalni maksimum in s tem naredijo rob bolj oster.
Slika 2.24: Prikaz preverjanja lokalnega maksimuma [16]
Slika 2.24 podaja nazoren prikaz preverjanja lokalnega maksimuma. Točka A je na vertikalnem robu, smer robnega gradienta je vedno pravokotna na dejanski rob. Ker sta točki B in C v smeri gradienta zato mora detektor preveriti katera točka je največja in ostale spremeni v 0, da ne motijo nadaljnih procesov. Ta proces ustvari tanjše in močnejše robove, ki so boljši za slikovno procesiranje.
Zadnji korak je odstranjevanje robov, ki niso pomembni ali pa sploh niso res robovi (slika 2.25). Cannyjeva funkcija knjižnice OpenCV sprejme še dva parametra ki sta zgornja in
Teoretične osnove
19 spodnja meja. Deluje tako, da preverja če je intenziteta gradienta nad zgornjo mejo, in to določi kot definitiven rob. Če intenziteta pade pod zgornjo mejo bo še vedno štet kot rob čeprav je njegova vrednost tehnično prenizka. Če pa pade intenziteta robu pod spodnjo mejo ali pa nikoli ni bila nad zgornjo mejo, potem pa detektor tega ne bo prepoznal kot rob [16].
Slika 2.25: Nazoren prikaz prepoznavanja robov s Cannyjevim filtrom[16]
Točka na robu A ima močno intenziteto in je prepoznana kot rob, vendar ta pade pod zgornjo mejo do točke C kar pa ne pomeni, da ta ni več šteta kot rob. Točka B pa ni povezana z nobeno točko, ki bi imela dovolj močno intenziteto in ni šteta kot rob čeprav nikoli ne pade pod spodnjo mejo [16].
S spreminjanjem parametrov zgornje in spodnje meje se išče robove, ki so uporabni za posamezno aplikacijo. Slika 2.26 prikazuje realno izhodno sliko zaznanih robov s pomočjo Cannyjevega filtra
Slika 2.26: Slike s prepoznanimi robovi ulitka in valja s slabimi parametri za iskanje mejnih robov (A) in (B) ter boljšo izbiro za ista objekta (C) in (D)
20
2.4.2 Hierarhija kontur
Ko so najdene konture, se shrani tudi informacija o njihovem nivoju in njihovi relaciji z bližnjimi konturami. Sicer so različni načini shranjevanja glede na to kaj se potrebuje vendar je “RETR_TREE” tista, ki je bila uporabljena v tej nalogi. Za vsako konturo pove katera je naslednja kontura na istem nivoju, katera je bila prejšnja, če je otroška konturo in če je starševska kontura [14]. To je specifično uporabno če ima objekt veliko izbočenih delov (npr. Hladilna rebra), ki imajo močan rob in jih Canny zazna vendar niso uporabni za orisane konture. Slika 2.27 je primer zaznanih kontur, in označeni so določeni robovi, ter njihovo pozicijo v hierarhiji.
Slika 2.27: Primer hierarhije kontur [16]
Zeleno so napisani nivoji konture, oranžno pa zapovrstno število konture. Kontura 0 je na nivoju 0, naslednja kontura na istem nivoju je 7, prejšnje nima, ni otroška, kar pomeni da bi bila vrednost -1 in je starševska konturi 1. Vrednost hierarhije za konturo 0 bi torej bila:
(7, -1, 1, -1) [16].
2.4.3 Gaussovo meglenje
Meglenje slike je konvolucijska operacija, kar pomeni da združi ožja območja točk z namenom , da se doseže željene rezultate, v tem primeru zamegli sliko. To doseže tako da se po sliki premika matrika ki spreminja, vrednost slikovnih točk [17].
𝐵(𝑥, 𝑦) = 1
√2𝜋𝜎2𝑒−
𝑥2+𝑦2
2𝜎2 (2.2) Enačba (2.2) je standardna enačba za Gaussovo porazdelitev v dveh dimenzijah, kjer sta 𝑥 in 𝑦 koordinati slikovne točke in je 𝜎 standardna deviacija. Narejena je 2D matrika, ki je liha
Teoretične osnove
21 v obeh dimenzijah. Določene so ji vrednosti glede na gaussovo porazdelitev, ki predstavljajo utež posamezne celice v filtru. Filter se nato premika po sliki in nastavi vrednost sredinske slikovne točke na preračunano vrednost filtra. Večja matrika poveča nivo meglenja saj se poveča doseg matrike in s tem na opazujočo slikovno točko vpliva še več okolišnjih točk. V sivinskem barvnem prostoru se postopek izvede samo enkrat medtem ko se v RGB barvnem prostoru to izvede za vsako barvo.
2.4.4 Razširjenje
Razširjenje (slika 2.28) je proces kjer se matrika premika po sliki, in preverja vrednost slikovnih točk. Če najde točko, ki ima dovolj visoko vrednost (ponavadi je to svetla barva) potem v dosegu matrike nastavi vse slikovne točke na visoko vrednost. Večja ko je matrika bolj odebeljena je črta[16]. Za delovanje navadnega razširjanja je potrebna sivinska slika, da je lahko prepoznavna visoka vrednost, ki mora biti ojačana.
Slika 2.28: Sivinska slika pred in po razširjanju [16]
22
Metodologija raziskave
23
3 Metodologija raziskave
Za implementacijo kode prepoznavanja oblike objektov na tekočem traku, je bilo potrebno najprej postaviti dva sistema za generacijo podatkov.
3.1 Realni sistem
Sistem je bil postavljen v laboratoriju LAKOS (slika 3.1), kjer se je nad tekoči trak v nosilec pritrdilo Intel D435 kamero, in se na njo povezalo z USB C konektorjem. Povezan računalnik je imel na Ubuntu OSu nameščen ROS ter IntelRealsense paket.
Slika 3.1: Realni sistem v laboratoriju
24
3.1.1 Obravnavani objekti
Za testne objekte se je izbralo nekaj različnih oblik, za izvajanje testov:
Pločevinka barve (slika 3.2 A) Mere: r=0.04m, h=0.07m
Razlog za izbiro: Preprosta valjasta oblika z nekaj podrobnosti, ki lahko motijo zaznavanje oblike.
Valjasti surovec (slika 3.2 B) Mere: r=0.03m, h=0.08
Razlog za izbiro: Preprosta valjasta oblika, vendar z nekoliko reflektivno površino, ki lahko povzroča težave pri zaznavanju višine.
Slika 3.2: Pločevinka barve (A) in valjasti surovec (B) Ulitek z rebri (slika 3.3 A)
Mere: l1,2=0.15m*0.2m, h=0.02m
Razlog za izbiro: Bolj kompleksna oblika s nekaj podrobnosti, ki lahko motijo zaznavanje oblike.
Ploščat ulitek (slika 3.3 B)
Mere: l1,2=0.15m*0.19m, h=0.01m
Razlog za izbiro: Malce bolj kompleksna oblika, ki je zelo nizka in zato lahko povzroča težave pri zaznavanju višine.
Metodologija raziskave
25 Slika 3.3: Ulitek z rebri (A) in ploščat ulitek (B)
Kartonasta škatla (slika 3.4) Mere: l1,2=0.08m*0.1m, h=0.08m
Razlog za izbiro: Preprosta štirikotna oblika, odličen testni objekt za prva preverjanja delovanja.
Slika 3.4: Kartonasta škatla
3.1.2 Kamera Intel D435
Za generacijo podatkov je bila uporabljena globinska kamera D435, ki je prikazana na sliki 3.5. Sestavljena je iz štirih glavnih komponent: 2 kameri, IR projektor ter RGB modul. S kamerami in IR modulom je kamera zmožna stereo vida, RGB modul pa omogoča zajem barve objekta in okolice. Za povezavo med ROSom in D435 kamero so uporabljene Intel Realsense2 knjižnice, ki so bile prirejene za ROS tako, da posnetke objavljajo na teme.
26
Slika 3.5: Kamera Intel D435 Preglednica 3.1: Karakteristike kamere Intel D435 [18]
Karakteristika
Uporaba: Notranja/Zunanja Maksimalni doseg:
pribljižno 10m. Natančnost odvisna od kalibracije,
ozadja in osvetlitve Slikovni senzor:
Globalni zaklop, 3µm*3 µm velikost slikovne točke
Globina
Globinska tehnologija: Active IR Stereo
Globinsko zorno polje (FOV):
86° x 57° (±3°)
Minimalna globinska razdalja:
0.105m
Globinska izhodna ločljivost:
Do 1280 x720 Globinska hitrost sličic:
Do 90 fps
RGB
Ločljivost RGB senzorja:
1920 x 1080 Zorno polje RGB
senzorja:
69.4° x 42.5° x 77° (±3°) Hitrost sličic RGB modula:
30 fps Glavne komponente
Kamera:
Intel RealSense Module D430 + RGB kamera
Programska plošča:
Intel RealSense Vision Processor D4
Fizične lastnosti
Standardna oblika: “Camera Peripheral”
Konektor: USB-C 3.1 Gen 1
Dolžina x Debelina x Višina:
90mm x 25mm x 25mm
Pritrditveni mehanizem:
-1 ¼-20 UNC navojna točka
- 2 M3 navojni točki
Metodologija raziskave
27
3.2 Simulacijski sistem
Za zagon programa za procesiranje in vseh povezanih tem in vozlišč je potrebno zagnati
“launch” datoteko z ukazom “roslaunch”. Ta datoteka kliče vse komponente projekta, ki morajo biti zagnani za delovanje.
Program 3.1: Launch datoteka simulacijskega dela
Ko se ta datoteko zažene, bo odprla “rqt_image_view” za prikaz tega kaj vidi kamera, Gazebo z definirano “world” datoteko, v ta svet bo postavljen tekoči trak, definirane bodo lokacije URDF datotek za program, ki jih bo postavljal in zagnani bodo programi za postavljanje objetkov in procesiranje slike. Pri datoteki za realni sistem je namesto Gazebo zagnan samo program “rqt_bag”, ki je uporabljen za predvajanje podatkov, ki so bili predčasno posneti.
3.2.1 Simulacija sodelovanja dveh SCARA robotov
Za osnovo je bil uporabljen paket “Two SCARA Collaboration” [19], ki je bil sestavljen za simulacijo premikanja valjev različnih barv po tekočem traku, kjer jih glede na to kakšne barve so pobere ena od dveh SCARA robotskih rok, prikazan pa je na sliki 3.6.
28
Slika 3.6: Simulacija sodelovanja dveh SCARA robotov
V Gazebo svet so postavljeni URDF objekti, ki predstavljajo tekoči trak, dva scara robota ter objekte valje, ki pa niso del sveta ob zagonu temveč jih eksterna koda postavi na začetek traku na nakljčno pozicijo širine z določeno hitrostjo. Tekoči trak ni nič drugega kot kvader, ki ima lastnost, da je njegov koeficient trenja 0, kar pomeni, da ker zračni upor ni simuliran se objekt premika po “traku” s konstantno hitrostjo.
3.2.2 Simulacijsko okolje
Na sliki 3.7 pa je prikazano simulacijsko okolje, ki je bilo urejeno kot testno okolje razvitega programja. Najprej so bili odstranjeni scara roboti, ter vsa koda povezana z njimi. Nato sta bili v datoteko “world” dodani simulirana usmerjena luč (usmerjena v tem primeru pomeni, da oddaja svetlobo samo v eno smer, in se snop svetlobe širi pod relativno ozkim kotom), ki je bila usmerjena direktno na tekoči trak in globinska kamera, ki je oddajala barvno in globinsko sliko na isto temo, kot realna kamera. Za pravilno delovanje je v tej datoteki potrebno dobro definirati objekt, ki naj bi bil vstavljen. Za luč je bila dovolj osnovna pozicija, lastnosti oddane svetlobe. Za kamero pa je poleg tega bilo potrebno opisati še resolucijo slike, teme na katere bo kamera oddajala, slike na sekundo in če je fiksna v svetu (če nebi bila potem bi ob zagonu padla na tekoči trak oziroma bi bilo nujno, da se doda še nosilec zanjo).
Metodologija raziskave
29 Slika 3.7: Urejena simulacija
Uredilo se je še kodo za generiranje objektov, tako da je lahko na trak postavila več kot dva različna objekta ter naredilo objekte različnih oblik za testiranje.
Program 3.2: URDF datoteka rdečega kvadra
Zgoraj je prikazana URDF datoteka za preprost kvader. Opisane so kolizijske, vizualne ter vztrajnostne lastnosti. Mere so podane v metrih.
30
3.3 Programski sistem
3.3.1 Potek procesiranja slike
Povezava v ROS sistemu
Slika 3.8: Povezava vozlišč za posnetek
Iz slike 3.8 je razvidno, da je program za procesiranje slike vozlišče, ki se naroči na dve temi; globinsko ter barvno sliko. Po obdelavi objavi posnetek, na temo “GUI”.
Slika 3.9: Povezava vozlišč za simulirani del naloge
Slika 3.9 prikazuje bolj kompleksen diagram, ker vsebuje še povezave za delovanje simulacije. Vozlišče “cylinder_blocks_spawner” oziroma ustvarjalec pošlje pot do mape v kateri so modeli objektov, jim da določene lastnosti za pravilno delovanje in jih postavi v vrsto na temo “current_cylinder_blocks” ali trenutni objekt. Nanj pa je naročen
“cylinder_blocks_poses_publisher” ali taki imenovani izdajalec pozicije ki objektom določi osnovno hitrost in jih ustvari v gazebo okolju. Gazebo po potrebi pošlje informacije o možnih napakah. Naprej je delovanje enako kot pri realnem sistemu.
Metodologija raziskave
31 Delovanje procesorja slike
Slika 3.10: Prvi del diagrama poteka procesiranja slike
Sliki 3.10 in 3.11 predstavljata diagram poteka programja za procesiranje slike. Ta deluje tako, da je slika pretvorjena v format s katerim lahko razpolagajo funkcije knjižnice OpenCV ko je ta prejeta. Podana je izbira med simulacijskim ter realnim sistemom, saj imata drugačne parametre (kamera je na različni višini, območje interesa ni enake velikosti, tekoči trak ni enako širok itd.). Odpre se GUV za spreminjanje določenih parametrov ob istem času pa je slika pretvorjena v sivinsko ter zamegljena z Gaussovim filtrom. Potem je uporabljen Cannyjev filter za iskanje robov, nato pa so ti ojačani z funkcijo za razširjevanje.
Slika 3.11: Drugi del diagrama poteka procesiranja slike
Klicana je metoda za iskanje kontur in izločene so vse odprte ali premajhne. Preostali kandidati so razdeljeni v dve kategoriji in očrtani s krogom ali kvadratom. Te liki predstavljajo gabaritne mere v dveh dimenzijah. Iz globinske slike je razbrana na sredini lika razdalja do kamere in tako preračunana njegova višina, ker je znana razdalja od tekočega traku do kamere. Lokacija objekta je izračunana iz njegove višine in videno lokacijo središčne točke na kameri. Vse gabarite ki niso višina, in lokacijo objekta še pretvori iz slikovnih točk v metre s pomočjo razmerja med širino tekočega traku in ločljivostjo kamere.
Na koncu je obdelan sivinski posnetek, na katerem se vidijo samo robovi in barvna slika z dorisanimi obrisi in napisanimi gabaritnimi merami.
32
3.3.2 Uporabniški vmesnik
Ko je program zagnan je podana izbira med simulacijo in resničnimi podatki, saj so določene konfiguracije drugačne, ko pride do urejanja slike.
ros::init(argc, argv, “image_converter”);
ROS_INFO(“Choose setting”);
cv::namedWindow(“Simulation or real”, CV_WINDOW_AUTOSIZE);
//GUV za izbiro videa while(setting==0){
createTrackbar(“1 – Sim | 2 – Real”, “Simulation or --- -. Real”, &setting, setting_max);
waitKey(0);
}
destroyWindow(“Simulation or Real”);
Program 3.3: GUV za izbiro vira posnetka
Prikaže se okno s parametri, ki vplivajo na zaznavanje objektov ter izbira barve obrisov in teksta za uvidevnost do uporabnika (slika 3.12).
Slika 3.12: GUV nastavljivih parametrov
-/P/S/U/V je parameter, ki spremeni vse ostale z vplivom na zaznavanje objektov tako, da zaznajo testne objekte iz vreče. Izbira nastavitve “-“ naredi ostale parametre nastavljive.
Threshold1, Threshold2, velikosti operatorjev (ang. kernel size) ter meje hierarhije in njihov vpliv so razloženi v poglavju 2.5 OpenCV.
Ploščina kontur (ang. contour area) je uporabljena za izločanje kontur, ki so premajhne da bi lahko bile iskan objekt. Tako je zmanjšana če ne celo izničena možnost prikaza artefaktov, ki nastanejo kot posledica različnih vplivov iz okolice.
Metodologija raziskave
33 Barve so parametri usmerjeni na izgled v uporabniškem vmesniku, za boljšo razvidnost na različnih objektih in površinah.
Če parametri niso nastavljeni pravilno, pride do napak kot so prikazane na sliki 3.13.
Slika 3.13: Nepravilne nastavitve in prikaz artefaktov
3.3.3 Procesiranje 2D slike
3.3.3.1 Zaznavanje kontur
Najprej je potrebno določiti območje interesa (ROI) in prilagoditi sliko tako, da zajema samo to polje. Razlika med zajeto celotno sliko ter območjem interesa je prikazana na sliki 3.14.
V simulaciji je bila kamera postavljena tako, da je ROI bila njena celotna slika, v realnem sistemu pa, je bilo potrebno sliko omejiti na tekoči trak.
Slika 3.14: Zajeta regija interesa (A) in celotna posneta slika (B)
34
Sliko je nato potrebno urediti na tak način, da bo zaznavanje robov kar se da konsistentno našlo tiste, ki so uporabni za zaznavanje objekta in nanšanje kontur na . To se naredi po korakih prikazanih na sliki 3.15:
Slika 3.15: Koraki urejanja slike za prepoznavanje kontur: Pretvorba v sivinski barvni prostor (A), meglenje (B), iskanje robov (C), odebeljevanje robov (D)
Najprej je barvna slika pretvorjena v sivinsko, nato je uporabljena funkcija “GaussianBlur”, ki sliko zamegli in se tako znebi šuma. Sledi zaznavanje robov z detektorjem, ki naredi nepopolno črto okoli objekta, zato pa je končni korak urejanja slike širjenje najdenih točk in s tem doseg polne konture, ki bo zaznana ko bo klicana funkcija “findContours” oziroma najdi konture, rezultat katere je prikazan na sliki 3.16.
Slika 3.16: Izrisana najdena kontura
3.3.3.2 Procesiranje najdenih kontur
Za vsako konturo je najden najmanjši orisan štirikotnik v obliki točk njegovih vogalov (slika 3.17). Te so nato uporabljene za izris štirikotnika, če originalna kontura objekta ni preveč ovalna, drugače pa so uporabljene za iskanje centra objekta, da se lahko nariše nanj krožnico.
Metodologija raziskave
35 Slika 3.17: Na konturo škatle (A) in pločevinke barve (B) narisana popisana oblika
3.3.4 Procesiranje 3D slike
3.3.4.1 Simulirana globinska kamera
Podatki za globino simulirane kamere so shranjeni v linearnem vektorju [20], zato deluje iskanje želene točke po naslednji formuli:
centerId = int(mc[i].x) + msg->width * int(mc[i].y);
h_object = depths[centerId];
Program 3.4: Branje oddaljenosti objekta v simulaciji
Kjer je “h_object” spremenljivka v katero se shrani razdalja, “CenterId” željena točka,
“msg->width” širinska ločljivost območja interesa, ter koordinati objekta “mc[i].x” in
“mc[i].y”. Meritev vrne oddaljenost od kamere do objekta v metrih.
3.3.4.2 Realna globinska kamera
Za interpretacijo podatkov iz realne kamere je potrebna pretvorba točk objekta v 16 bitno nepodpisano celo število (ang. unsigned 16 bit integer):
h_object=(0.001*cv_depth->image.at<u_int16_t>
(int(mc[i].x+roiX0, int(mc[i].y)+roiY0);
Program 3.5: Branje oddaljenosti objekta realne kamere
Točkam objekta je potrebno dodati še vrednost mej območja interesa, saj so podatki shranjeni za celotno sliko in ne samo samo območje. Vrne oddaljenost od kamere do objekta v milimetrih kar je še potrebno pretvoriti v metre.
3.3.5 Določanje mer in lokacije objektov
Mere in lokacija objekta so bile interpretirana iz razmerja med slikovnimi točkami ter širino tekočega traku. Pretvorba je preračunana glede na širino tekočega traku ter širinsko ločljivostjo kamere. Ker je tekoči trak v simulaciji širok 1m in je kamera nastavljena tako, da njena celotna ločljivost pokrije ravno to širino je ena točka 1m/720px ali približno 1.4mm
36
in 0.3m/340px ali 0.9mm za pravo kamero. Mere so tako za pravokotnik preračunane z dvema enačbama (3.1) in (3.2). Na sliki 3.18 je grafično prikazano, kako so izbrane mere za preračun gaberitnih mer štirikotnega obrisa.
𝑙1 = √(𝑥0− 𝑥1)2+ (𝑦0− 𝑦1)2∙ 𝑝𝑟𝑒𝑡𝑣𝑜𝑟𝑏𝑎 (3.1) 𝑙2 = √(𝑥1− 𝑥2)2+ (𝑦1− 𝑦2)2 ∙ 𝑝𝑟𝑒𝑡𝑣𝑜𝑟𝑏𝑎 (3.2)
Slika 3.18: Slikovni prikaz računanja mer orisanega štirikotnika
Za radij krožnice pa so preračunane po enačbi (3.3). Grafični prikaz branja mer pa se vidi na sliki 3.19.
𝑟 =√(𝑥0− 𝑥1)2+ (𝑦0− 𝑦1)2
2 ∙ 𝑝𝑟𝑒𝑡𝑣𝑜𝑟𝑏𝑎 (3.3)
Slika 3.19: Slikovni prikaz računanja mer orisanega kroga
Lokacija objekta ima dodaten korak, ki je pomemben za pravilnost rezultatov. Ker imajo objekti višino in jih kamera gleda od zgoraj, bo to zamaknilo vidno stranico glede na pravo lokacijo na traku. To težavo se je odpravilo po principu na sliki 3.20:
Metodologija raziskave
37 Slika 3.20: Slikovni prikaz reševanja problema višine objekta v eni osi
Višina kamere ℎ glede na ravnino oziroma tekoči trak je konstantna, višina ℎ𝑜𝑏𝑗 in razvidna razdalja objekta od je koordinatnega središča 𝑙0 pa sta razbrani iz globinske ter 2D slike.
Pravo oddaljenost objekta je tako izračunana s pomočjo izreka o podobnosti trikotnikov (3.4).
𝑙obj= 𝑙0− 𝑙dif= 𝑙0−𝑙0
ℎ ∙ ℎobj (3.4) Za ta potek, je bilo potrebno koordinatno središče prestaviti iz zgornjega levega kota slike naravnost pod kamero, torej na sredino območja interesa.
38
4 Rezultati in diskusija
Program je bil narejen za simulacijsko okolje, in nato urejen tako, da je lahko uporabljal še posnetek iz resničnega življenja. Rezultati so bili dokaj natančni, do težav pa pride z globinskim posnetkom, saj ima včasih zelo pomankljive informacije (slika 4.1).
Slika 4.1: Globinski posnetek kartonaste škatle
Na sliki se vidi da čeprav je ploskev relativno ravna so še vedno luknje v objektu, kar pomeni, da za industrijski sistem ni dovolj konsistentna.
4.1 Prepoznavanje oblik
Programska oprema prepozna oblike jih očrta glede na število kotov. To pomeni, da prepozna, ko je objekt zelo okrogel in ga očrta s krožnico in če ni potem uporabi kvadrasto mejo. Ta funkcionalnost dela zelo dobro v simulaciji in iz posnetka.
4.2 Gabaritne mere in pozicija objektov
2D oblike so izračunane z relativno natančnostjo problem pa se pojavi pri interpretaciji globine. Prva težava je bila že to da je vidna oddaljenost od kamere do tekočega traku 0.77m medtem ko je izmerjena razdalja 0.82m.
Rezultati in diskusija
39 Preglednica 4.1: Primerjava izmerjenih vrednosti gabaritnih mer z izračunanimi
Objekti Izmerjeni gabariti [m]
Izmerjena višina [m]
Izračunani gabariti [m]
Izračunana višina [m]
Pločevinka barve r = 0.04 hobj = 0.07 r=0.04m hobj = 0.08 Kartonasta škatla l1,2=0.1×0.08 hobj = 0.08 l1,2=0.11×0.08 hobj = 0.09 Ulitek z rebri l1,2=0.2×0.15 hobj = 0.02 l1,2=0.2×0.16 hobj = 0.72 Ploščat Ulitek l1,2=0.2×0.15 hobj = 0.01 l1,2=0.2×0.15 hobj = 0.72 Valjasti surovec r=0.03 hobj = 0.08 r=0.03 hobj = 0.72
Simulacija /
Rdeč kvader l1,2=0.15×0.15 hobj = 0.3 l1,2=0.18×0.18 hobj = 0.3 Modri valj r=0.05 hobj = 0.1 r=0.05 hobj = 0.1 Zeleni objekt l1,2=0.25×0.3 hobj = 0.05 l1,2=0.26×0.31 hobj = 0.05 Pri realnih objektih je prikaz višine zelo nekonsistenten vendar so na določenih objektih včasih bile vidne prave višinske vrednosti (slika 4.2). Objekta, ki sta občasno pravilno prebrala globino sta bila pločevinka barve ter kartonasta škatla
Slika 4.2: Pločevinka barve (A) in kartonasta škatla (B) na dveh lokacijah Vidi se, da je so globinske informacije včasih pravilne in včasih zelo napačne.
Drugi objekti pa niso nikoli imeli prepoznali pravilne višine (slika 4.3). Pri ulitkih je lahko težava že v tem da sta zelo nizka, vendar je v tem primeru težava nekje drugod saj je prebrana višina objekta nasprotno ekstremna, in je skoraj tako velika, kot je zaznana razdalja do tekočega traku.