• Rezultati Niso Bili Najdeni

NAPRAVA ZA ZAZNAVANJE IN MERJENJE RAZDALJE NA OSNOVI SVETLOBE

N/A
N/A
Protected

Academic year: 2022

Share "NAPRAVA ZA ZAZNAVANJE IN MERJENJE RAZDALJE NA OSNOVI SVETLOBE"

Copied!
58
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za elektrotehniko

ŽIGA SELAN MELAVC

NAPRAVA ZA ZAZNAVANJE IN MERJENJE RAZDALJE NA

OSNOVI SVETLOBE

Diplomsko delo

Visokošolski strokovni študijski program prve stopnje Aplikativna elektrotehnika

Mentor: izr. prof. dr. Boštjan Batagelj

Ljubljana, 2021

(2)
(3)
(4)
(5)
(6)
(7)

vii

Zahvala

Zahvaljujem se svojemu mentorju, izr. prof. dr. Boštjanu Batagelju, ki je s svojim strokovnim znanjem in izkušnjami pripomogel k nastanku diplomskega dela. Zahvaljujem se tudi sošolcema Franciju in Kristjanu, ki sta mi bila med študijem v podporo.

Posebna zahvala pa gre mojima staršema, Jožetu in Barbari, sestri Anji ter dekletu Pii, ki so me pri študiju neprestano motivirali in podpirali.

(8)

viii

(9)

ix

Povzetek

Ljudje smo tudi zaradi naše zmožnosti čutenja, vida in sluha najbolj dominantna bitja na Zemlji. Poleg izumljanja orodij, ki nam pomagajo videti svet okoli nas, stremimo tudi k visoki točnosti podatkov, ki nam jih ta orodja ponujajo. Z uporabo zvočnih valov smo ustvarili SONAR (angl. Sound Navigation And Ranging), z uporabo radijskih valov RADAR (angl.

Radio Detection And Ranging), naslednji logični korak pa je uporaba svetlobe za zaznavanje in merjenje razdalje – LiDAR (angl. Light Detection And Ranging).

V začetnih poglavjih je opisana metoda zaznavanja in merjenja razdalje, ki deluje na principu merjenja časa preleta. Predstavljeni so tudi tipi optičnih merilnih sistemov LiDAR, ki so danes pogosteje v uporabi. Nekaj pozornosti je usmerjene tudi v različna področja uporabe sistemov LiDAR.

Glavni del je osredotočen na izdelavo izdelka, ki deluje na principu LiDAR optičnega merilnika razdalj v prostoru, predstavljen je proces izrisa tridimenzionalnega (3D) modela izdelka ter komponente, ki jih potrebuje za delovanje. Opisane so tudi določene ključne funkcije programskega dela izdelka, ki omogoča zajem oblike celotnega prostora, v katerem naprava deluje.

Delo se zaključi s predstavitvijo ter vizualizacijo rezultatov izdelanega optičnega merilnika LiDAR, izbiro programskih knjižnic za vizualizacijo in odpravljanjem težav z lažnimi meritvami. Poleg zaključnih ugotovitev so navedene tudi možne izboljšave ter optimizacije delovanja.

Ključne besede: LiDAR, čas preleta, tridimenzionalno tiskanje, računalniško podprto načrtovanje, točkovni oblak, zbiranje podatkov;

(10)

x Povzetek

(11)

xi

Abstract

People are the most dominant creatures on Earth, partly due to our ability to feel, see and hear. Besides inventing new tools that help us navigate the world around us, we also strive to achieve a high precision of collected data. By using sound waves, we created SONAR (Sound Navigation And Ranging), with the use of radio waves RADAR (Radio Detection And Ranging), the next logical step is using light for detection and distance measurement – LiDAR (Light Detection And Ranging).

Initial chapters describe a method for detection and ranging based on the principle of measuring time of flight. The types of optical measurement systems, that are commonly in use today are also presented. Some attention is also given to fields of use for LiDAR technology.

The main part focuses on the development of a product, that works on the principle of a LiDAR optical measuring device, the process of creating a three-dimensional model of the product, and on the additional components that are needed for operation. Certain key functions, that enable the device to capture the surrounding space are also described.

This work is concluded with a presentation and visualization of achieved results from the constructed LiDAR system. It is further explained what software libraries are used to execute the visualization, and how elimination of false measurements was done. In addition to final findings, possible improvements, and optimization of performance are also listed.

Key words: LiDAR, time of flight, three-dimensional printing, computer-aided design, point cloud, data acquisition;

(12)

xii Abstract

(13)

xiii

Kazalo vsebine

1 Uvod v tehnike LiDAR 1

1.1 Metoda LiDAR ... 1

1.2 Tipi LiDAR sistemov... 1

1.3 Prednosti in slabosti LiDAR ... 3

2 Opis koncepta 5 3 Razvoj 7 3.1 3D modeliranje naprave ... 7

3.2 Postopek tiskanja ohišja ... 8

3.3 Izbira komponent ... 9

3.3.1 Krmilnik ... 9

3.3.2 Tipalo razdalje ... 9

3.3.3 Drsni obroč ... 12

3.3.4 LCD zaslon ... 12

3.3.5 Bralec microSD kartic ... 13

3.3.6 LCD I2C vmesnik ... 13

3.3.7 Krmilna ročica ... 14

3.3.8 Koračni motor... 14

3.3.9 Gonilnik koračnih motorjev ... 16

(14)

xiv Kazalo vsebine

3.3.10 Direktni enosmerni presmernik – pretvornik navzdol ... 16

3.4 Sestavljanje... 17

3.5 Izvedba krmilniškega dela ... 20

3.5.1 Uporabljene knjižnice ... 20

3.5.2 Potek programa ... 21

4 Vizualizacija 27 4.1 Ipyvolume... 27

4.2 Open3D ... 29

4.3 Lažne meritve ... 30

5 Analiza rezultatov 33

6 Zaključek 35

Literatura 37

(15)

xv

Seznam slik

Slika 1: Pri vpadu elektromagnetnega valovanja na hrapav teren pride do razpršenega in

zrcalnega odboja [2] ... 3

Slika 2: Postavitev programa Autodesk Fusion 360... 7

Slika 3: 3D tiskalnik Anycubic i3 Mega S [6]... 8

Slika 4: Krmilnik Arduino Mega Rev3 [8]... 9

Slika 5: Optični merilnik razdalje Garmin LiDAR-Lite v3 [9] ... 10

Slika 6: 12-žilni drsni obroč [10]... 12

Slika 7: Tekočekristalni zaslon 16 × 2 [11] ... 12

Slika 8: Bralnik microSD kartic, proizvajalca Adafruit [12]... 13

Slika 9: Pretvornik vzporednega vmesnika v I2C [13]... 14

Slika 10: Krmilna ročica za upravljanje z menijem [14] ... 14

Slika 11: Dvofazni unipolarni koračni motor [15] ... 15

Slika 12: Dvofazni bipolarni koračni motor [15] ... 15

Slika 13: Adafruit Motorshield v2.3 z gonilnikom TB6612FNG [18] ... 16

Slika 14: DC-DC pretvornik navzdol LM2596 [19] ... 17

Slika 15: Vrstni red sestavljanja ... 17

Slika 16: Presek ležajnega sistema ... 17

Slika 17: Pritrditev osi vrtenja na gnani (levo) in pogonski (desno) zobnik ... 19

Slika 18: Izvedba stabilizacije osi vrtenja po elevaciji ... 19

(16)

xvi Seznam slik

Slika 19: Premik izbirne puščice ... 22

Slika 20: Format shranjevanja sferičnih koordinat ... 24

Slika 21: Točkovni oblak s funkcijo knjižnice Ipyvolume ... 28

Slika 22: Objekti na sliki točkovnega oblaka ... 29

Slika 23: Vizualizacija z uporabo Open3D ... 30

Slika 24: Slika z lažnimi meritvami (zgoraj) in brez (spodaj) ... 31

Slika 25: Zajem velikega prostora (cerkev Sv. Križa − Plečnikove Žale, 1.920.000 točk)... 33

Slika 26: Zajem majhnega prostora (soba, 76.800 točk) ... 34

(17)

xvii

Seznam tabel

Tabela 1: Povezave med komponentami ... 18

(18)

xviii

Seznam uporabljenih simbolov in kratic

s sekunda (enota za čas) m meter (enota za dolžino) V volt (enota za napetost)

A amper (enota za električni tok) 𝐕𝐃𝐂 enosmerna napetost

B bajt (enota za količino podatkov) Hz herz (enota za frekvenco)

ohm (enota za upornost)

b bit (enota za količino podatkov)

° stopinja (enota za kot)

SONAR navigacija in določanje oddaljenosti s pomočjo zvočnih valov (angl. Sound Navigation And Ranging)

RADAR navigacija in določanje oddaljenosti s pomočjo radijskih valov (angl. Radio Detection And Ranging)

LIDAR navigacija in določanje oddaljenosti s pomočjo svetlobe (angl. Light Detection And Ranging)

ToF čas preleta (angl. Time of Flight)

APD plazovna fotodioda (angl. Avalanche Photodiode) FoV vidno polje (angl. Field of View)

MEMS mikro elektromehanski sistemi (angl. Micro Electromechanical Systems) GPS globalni sistem pozicioniranja (angl. Global Positioning System)

IMU inercialne merilne enote (angl. Inertial Measurment Unit)

(19)

Seznam uporabljenih simbolov in kratic xix

HSRL LiDAR z visoko spektralno resolucijo (angl. High Spectral Resolution LiDAR) DIAL diferencialni absorpcijski LiDAR (angl. Differential Absorption LiDAR)

IPDA diferencialni absorpcijski LiDAR s seštevkom poti (angl. Integrated Path Differential Absorption)

LaWS laserski orožni sistem (angl. Laser Weapon System)

CAD računalniško podprto načrtovanje (angl. Computer Aided Design) FFF tiskanje s taljenim filamentom (angl. Fused Filament Fabrication)

FDM tiskanje s postopkom odlaganja taljenega filamenta (angl. Fused Deposition Modeling)

PLA polilaktična kislina (angl. Polylactic Acid)

GPIO splošno namenski vhodno-izhodni priključki (angl. General Purpose Input Output) IDE integrirano razvojno okolje (angl. Integrated Developement Enviroment)

SCL povezava ure na serijskem vodilu (angl. Serial Clock Line)

SDA podatkovna povezava na serijskem vodilu (angl. Serial Data Line) LCD tekočekristalni zaslon (angl. Liquid Crystal Display)

RS izbira registra (angl. Register Select)

EEPROM električno izbrisljiv programirljiv bralni pomnilnik (angl. Electically Eraseable Programmable Read Only Memory)

SPI sinhrona serijska podatkovna povezava (angl. Serial Peripheral Interface) MISO nadrejeni sprejema, podrejeni pošilja (angl. Master Input Slave Output) MOSI nadrejeni pošilja, podrejeni sprejema (angl. Master Output Slave Input) SCK ura serijske povezave (angl. Serial Clock)

SS izbira podrejene naprave (angl. Slave Select) MSB bit z največjo težo (angl. Most Significant Bit) LSB bit z najmanjšo težo (angl. Least Significant Bit) IC integrirano vezje (angl. Integrated Circuit)

PWM pulzno širinska modulacija (angl. Pulse Width Modulation) SMPS impulzni napajalnik (angl. Switch-Mode Power Supply)

(20)
(21)

1

1 Uvod v tehnike LiDAR

1.1 Metoda LiDAR

LiDAR je optična metoda za zaznavanje in merjenje razdalje, ki deluje na podlagi odboja svetlobe od tarče. Glede na čas, ki ga svetloba rabi za prelet (angl. Time of Flight – ToF) od oddajnika do sprejemnika, se izračuna razdalja od oddajnika do tarče. Na enak način deluje tudi impulzni radar, ki namesto svetlobe uporablja radijske signale. Optične sisteme LiDAR se v splošnem uporablja za izdelavo visoko resolucijskih zemljevidov, 3D reprezentacij prostorov in površin, avtonomno vožnjo v vozilih, lasersko vodenje pa tudi na področjih geologije, geodezije, geografije, arheologije ter seizmologije. Ker želimo dobiti najbolj natančno sliko okolja, je najbolj optimalno uporabiti detektor s čim večjo površino, da zazna tudi manjše gostote moči odbitega žarka. To omogočajo plazovne fotodiode (angl. Avalanche Photodiode – APD). Pomembna je tudi razdalja med temi diodami, ki določa ločljivost senzorja ter njihovo občutljivost. Na ločljivost tipala pa vpliva tudi dolžina impulza svetlobe, ki ga merilnik odda – krajši kot je impulz, več impulzov v sekundi lahko odda. Trenutne dolžine impulzov se gibljejo od 5 do največ 10 ns. Optimalen žarek svetlobe ima tudi določeno velikost. Ta se zaradi majhnega fokusiranega svetlobnega žarka (želimo zavzeti širše vidno polje, ne samo določene točke), ki izhaja iz laserske diode, popravlja z naknadnimi rešitvami povečanja vidnega polja (ang. Field of View – FoV), na primer z uporabo bliskovnega tipala, ki uporablja sipanje laserskega žarka, da poveča FoV, z uporabo polprevodniških tipal, ki so manjša in trpežnejša ter namesto mehanskih delov uporabljajo polprevodnike ali katera druga tipala.

1.2 Tipi LiDAR sistemov

LiDAR sisteme glede na funkcionalnost delimo na zračne in zemeljske. Različne izvedenke različno zajemajo okolje: LiDAR je lahko fiksiran na os premikanja in s tehniko merjenja ToF meri oddaljenost; polprevodniški LiDAR ima statično vidno polje, je brez premičnih delov in uporablja mikro elektromehanične sisteme (angl. Micro Electromechanical Systems – MEMS) ali optične fazne nize, ki usmerjajo žarke; ter Flash LiDAR, ki razprši svetlobni signal po večjem vidnem polju, nato pa sprejme odboje teh žarkov.

(22)

2 1 Uvod v tehnike LiDAR

Zračni sistemi so fiksirani na leteča vozila, torej helikopterje, letala in brezpilotna letala, ter usmerjajo laserski žarek proti tlom. Delovanje teh sistemov je omogočeno ob souporabi globalnega sistema pozicioniranja (angl. Global Positioning System – GPS) in inercialne merilne enote (angl. Inertial Measurement Unit – IMU), ki zagotavljata natančnost podatkov.

Poznamo tudi podzvrsti zračnih sistemov: topografske, ki se uporabljajo za izris topografije regij in so v uporabi v ekologiji, urbanem planiranju in drugih geoloških vedah; batimetrične, ki so namenjeni ugotavljanju globine vodnih teles (predvsem v okolici pristanišč, zalivov in obal).

Zemeljski LiDAR sistemi so namenjeni zbiranju podatkov, ki pomagajo pri natančnem odločanju in pri identifikaciji objektov v okolici, predvsem v avtomobilski industriji. Po navadi so postavljeni na trinožcu ali pa vgrajeni v vozilo. Lahko so statični ali mobilni. Prvi se najbolj pogosto uporabljajo pri analizi infrastrukture in cest, drugi pa so prenosni in zato primerni za uporabo v arheologiji.

Delimo jih tudi glede na princip delovanja, in sicer po principu optičnega prožnega sipanja. Foton prodira v snov, katere velikost delcev, ki jo sestavljajo, je veliko manjša kot njegova valovna dolžina. V procesu se spremeni le smer sipanja fotona, energija in valovna dolžina pa se ohranjata. Uporablja se za meritev velikosti, sestave, razporeditve, premikanja ter za razpoznavanje tipa aerosolov v ozračju in določanju razdalje. Tak LiDAR imenujemo tudi LiDAR z visoko spektralno resolucijo (angl. High Spectral Resolution Lidar – HSRL), saj izkorišča spektralno porazdelitev odbitega signala za razlikovanje aerosolih in molekularnih signalov.

LiDAR, ki je zasnovan po principu neprožnega optičnega sipanja, je namenjen ugotavljanju kemičnega sestava objekta glede na spremembo valovne dolžine oddajanega in sprejetega signala.

Diferencialni absorpcijski LiDAR (angl. Differential Absorption LiDAR – DIAL) je namenjen merjenju koncentracij plinov, ki sestavljajo ozračje. Princip delovanja DIAL temelji na dveh oddanih signalih različnih valovnih dolžin, ki sta izbrani tako, da prvi signal z določeno valovno dolžino molekule plina, ki nas zanima, absorbirajo, drugega signala pa ne. Glede na razmerje energije med prejetima signaloma je nato mogoče določiti koncentracijo molekul plina, ki ga analiziramo. Druga različica − diferencialni absorpcijski LiDAR s seštevkom poti (angl. Integrated Path Differential Absorption – IPDA) − pa je namenjena predvsem merjenju toplogrednih plinov, torej CO2 in CH4 – ogljikovega dioksida in metana.

Dopplerjev LiDAR se uporablja za merjenje hitrosti aerosolov, ki se nahajajo v vetru (prah, voda, nesnaga). Pojav, ki ga imenujemo Dopplerjev pomik, kjer nastane sprememba v frekvenci oddane svetlobe in nazaj razpršene svetlobe zaradi prisotnosti premikajočih aerosolov v zraku, pa je temelj delovanja tega sistema. Med razliko v frekvenci in hitrostjo obstaja neposredna korelacija, preko katere se lahko izračuna hitrost vetra.

(23)

1.3 Prednosti in slabosti LiDAR 3

1.3 Prednosti in slabosti LiDAR

Ob stiku svetlobe z neprozorno odbojno površino se zgodita hkrati zrcalni in difuzni (razpršen) odboj svetlobe, kot prikazuje slika 1. Pri prvem se svetloba odbije pod enakim kotom, kot je vpadala, zanima pa nas predvsem drugi, pri katerem se zaradi nepravilnosti na odbojni površini svetloba odbija v različne smeri. Torej bolj kot je površina groba, več je difuzijskega odboja. Vsi odbiti žarki se še zmeraj obnašajo po pravilu odboja, s to razliko, da njihove vpadne pravokotnice med seboj niso več vzporedne.

Slika 1: Pri vpadu elektromagnetnega valovanja na hrapav teren pride do razpršenega in zrcalnega odboja [2]

V najslabšem možnem scenariju se odbita svetloba odbije proti svetlobi, ki izhaja iz oddajnika in s tem povzroča šum. Drugi izvori šuma so tudi temni tok fotodiode (to je tok, ki teče skozi diodo, čeprav vanjo ne vstopajo fotoni), in plazovna multiplikacija, ki je pojav v plazovni fotodiodi, ko so elektroni porinjeni skozi fotodiodo s primerno energijo, da ionizirajo dodatne vezi in s tem ustvarijo dodatne pare elektronov in vrzeli; imamo torej komponento šuma, ki jo prispeva prej omenjena povratna osvetlitev, ter komponento, ki jo prispeva inducirani tok. Vsi ti dejavniki slabo vplivajo na končno meritev razdalje.

Nevarnost laserjev se pojavi tudi pri manjših valovnih dolžinah in velikih impulznih močeh, ki lahko ogrožajo očesno mrežnico. Glede na nevarnost laserje kategoriziramo v 4 kategorije po standardu IEC 60825-1: »Safety of laser products«. V 4. kategorijo spadajo laserji, ki so nevarni za nastanek požara ali poškodbe kože, nevaren je tudi njihov odboj od katere koli površine. Primer takega laserja je orožje ameriške mornarice LaWS (angl. Laser Weapon System – LaWS). 3. kategorijo zavzemajo laserji, ki so za ljudi nevarni v primeru direktnega pogleda v žarek s prostim očesom za daljši čas. Ti nimajo omejene valovne dolžine, na kateri lahko delujejo, ne smejo pa ustvariti difuznega odboja od neodbojnih površin. Refleks očesa je zadostni varnosti mehanizem, da prepreči poškodbo očesa v primeru uporabe laserja te kategorije. 2. kategorija določa, da mora biti laserska svetloba vidna s prostim očesom. Primer takega laserja je optični bralnik kod v trgovini, lahko pa so nevarni samo ob dolgem namernem

(24)

4 1 Uvod v tehnike LiDAR

izpostavljanju očesa direktni svetlobi. Laserji 1. kategorije so popolnoma varni in ne predstavljajo nobene možnosti poškodbe očesa.

Slabost tehnologije LiDAR predstavlja tudi zajemanje velike količine podatkov, saj določene podatkovne točke morda zaradi možnosti programske ali strojniške napake ter same količine podatkov, ki predstavlja težavnost procesiranja in manipuliranja s samimi podatki, niso veljavne.

Po drugi strani so se sistemi LiDAR v zadnjih nekaj letih močno razvili, zato sodobna oprema omogoča natančno zajemanje ogromne količine podatkov že z okoli 2500 m dosega in natančnostjo 5 mm. Zajemanje podatkov oddaljenosti je najhitrejše z merjenjem časa preleta (način, ki ga uporabljajo merilniki LiDAR) in omogoča zajem tudi do več milijon točk na sekundo. Meritve lokacij, ki so drugače nedostopne ali težko dostopne (npr.: visokogorje), so z uporabo tehnologije LiDAR preprosto preslikane na digitalne zemljevide, LiDAR je hkrati poceni rešitev za zajemanje velike količine natančnih podatkov ter ima možnost delovanja tudi v nočnih razmerah.

(25)

5

2 Opis koncepta

Pred začetkom izdelave smo morali sprejeti več odločitev: kakšen tip mehanizma za premik laserja in sprejemnika bomo izbrali; na kakšen način bo izveden konstrukcijski del projekta; katere materiale bomo uporabili za izdelavo; kako bomo minimizirali različne pogreške mehanskega dela; kako bomo procesirali zbrane podatke in jih vizualizirali.

Zaradi dokaj preproste zasnove smo si izbrali t. i. vretenasti tip mehanizma (angl. spindle type mechanism) premikanja LiDAR. Za skeniranje prostora potrebujemo dva motorja, ki laser premikata po azimutu in elevaciji, merilnik pa zajema razdalje po določenih koordinatah sferičnega koordinatnega sistema. Ohišje, ki zagotavlja stabilnost in prostor za krmiljenje, smo izrisali z uporabo računalniško podprtega načrtovanja (angl. Computer Aided Design – CAD).

Krmiljenje bo opravljal mikrokontroler Arduino Mega, za vizualizacijo pa smo si izbrali knjižnici Open3D in Ipyvolume programskega jezika Python.

Cilj izdelave naprave je bil narediti kompakten, prenosen in dokaj natančen sistem, ki ima sposobnost izrisati notranje prostore kvadratne oblike velikosti do 3000 kvadratnih metrov ter je preprost in intuitiven za uporabo.

(26)

6 2 Opis koncepta

(27)

7

3 Razvoj

3.1 3D modeliranje naprave

Za izris tridimenzionalnega modela smo uporabili program Autodesk Fusion 360. Izbira je bila preprosta: s programom smo imeli že predhodne izkušnje, je enostaven za uporabo, razporeditev in uporaba orodij sta intuitivna.

Slika 2: Postavitev programa Autodesk Fusion 360

Pod skrajno levim menijem se nahajajo vsi modeli, ki smo jih uvozili, torej model motorja, LiDAR tipala, sklopke in določeni sestavni deli, za katere smo naredili svojo datoteko s končnico .stl. V kvadratu na sliki 2, ki se imenuje posamezni sestavni deli, se nahajajo vse komponente, ki sestavljajo izdelek, od stranic ohišja do sedišč za ležaje, zobnikov in podlag.

Na sliki vidimo tudi orodno vrstico, kjer se nahajajo orodja za izris najprej dvodimenzionalnega izdelka, nato pa mu dodamo še tretjo dimenzijo. Funkcije vključujejo razne možnosti deformiranja osnovnih likov, robljenja robov, ustvarjanja odprtin, zobnikov itd. Na desni strani se nahaja glavno delovno območje, kjer so vsi sestavni deli, s katerimi je mogoče manipulirati.

Spreminjamo jim lahko koordinate, jih spajamo, rotiramo, rotiramo kot kamere za boljšo vidljivost in sestavljamo končni izdelek.

(28)

8 3 Razvoj

3.2 Postopek tiskanja ohišja

Za izdelavo ohišja smo se odločili za metodo 3D tiskanja, ki ji pravimo FFF (angl. Fused Filament Fabrication) ali FDM (angl. Fused Deposition Modeling) in uporablja koluta termoplastičnega filamenta. Koračni motor poganja filament skozi glavo tiskalnika, ki se premika (sama glava samo po abscisni osi) in polaga topljeni filament na segreto delovno površino. Filament na kolutu ima premer 1,75 mm, na izhodu šobe pa glede na premer pritrjene šobe od 0,1 mm do 1 mm. Za premik po z osi je odgovoren par navojnih palic in pripadajoča koračna motorja, premikanje po ordinatni osi pa zagotavlja ločeni koračni motor, ki premika delovno ploščo.

Filamenti na FFF ali FDM tiskalnik se lahko močno razlikujejo. Poznamo ABS, PETG, PLA termoplastične filamente, najlon, polikarbonat, ogljikove filamente ter druge filamente z dodanimi primesmi. PLA (angl. Polylactic Acid) ali filament iz polilaktične kisline je najbolj pogost filament za 3D tiskanje in je narejen iz koruznega škroba. Ne zahteva posebno visokih temperatur, je relativno vzdržljiv proti udarcem in ni občutljiv na deformacije med tiskanjem, zato je to izbrani filament.

3D tiskalnik Mega i3 S, proizvajalca Anycubic, deluje na prilagojeni verziji odprtokodne strojno-programske opreme Marlin, ki omogoča najbolj optimalno koordinacijo grelcev, koračnih motorjev, senzorjev pozicije, luči, zaslonov in vseh drugih komponent 3D tiskalnika.

Slika 3: 3D tiskalnik Anycubic i3 Mega S [6]

(29)

3.3 Izbira komponent 9

3.3 Izbira komponent 3.3.1 Krmilnik

Za krmiljenje smo izbrali mikrokontroler Arduino Mega Rev3, ki uporablja mikroprocesor ATmega2560. Njegova vhodna napetost je med 6 in 20 VDC, ima 54 digitalnih vhodno-izhodnih priključkov, od katerih jih ima 15 še možnost impulzno širinske modulacije (angl. Pulse Width Modulation – PWM) na izhodih. Mega verzija vključuje tudi 16-kanalni analogno-digitalni pretvornik z 10 bitno resolucijo, kar pomeni, da imajo analogni vhodi lahko vrednosti od 0 do 1023. Primarna naloga analognih priključkov je branje signalov iz analognih senzorjev, lahko pa se uporabljajo tudi kot splošno namenski vhodno-izhodni priključki (angl.

General Purpose Input Output – GPIO). Prav zaradi velikega števila digitalnih in analognih vhodov oz. izhodov je krmilnik Arduino Mega ustrezen. Vsebuje 256 kB flash pomnilnika, 8 kB od tega zaseda program, ki nalaga v delovni spomin po zagonu naprave (angl. bootloader), 8 kB je SRAM spomina. Kot vse verzije Arduina ima tudi Mega značilni 16 MHz takt procesorja. Krmilnik vsebuje še 4 kB EEPROM pomnilnika, katerega vrednosti ostanejo shranjene tudi, ko je izklopljen iz napajanja. Izbrani programski jezik Arduino IDE (angl.

Integrated Development Enviroment – IDE) je C++, seveda pa vsebuje tudi veliko za Arduino ekskluzivnih razširitev, ki omogočajo delo s pripadajočo strojno opremo. Glavni del programa se tukaj izvaja v funkciji void loop() ter void setup() in ne v int main(), tako kot pri klasičnem C++ programiranju.

Slika 4: Krmilnik Arduino Mega Rev3 [8]

3.3.2 Tipalo razdalje

Ključna komponenta LiDAR sistema je seveda optični merilnik razdalje. Izbrali smo Garminov produkt LiDAR Lite v3, ki deluje na valovni dolžini 905 nm (področje infrardeče svetlobe). Tipalo potrebuje 5 V ± 0,5 V vhodne napetosti, poraba toka pa se giblje med 105 mA in 135 mA, odvisno od stanja naprave. Maksimalni doseg (če je tarča vsaj 70 % odbojna) je 40 metrov ter ima ločljivost 1 cm ter natančnost ± 2,5 cm pri razdaljah, večjih od 5 metrov (pri manjših razdaljah je prisotna nelinearnost). Merilnik ima različne načine delovanja: privzeti, ki omogoča uravnoteženo delovanje (razmerje med hitrostjo in natančnostjo je uravnoteženo);

kratek doseg, velika hitrost zajema (uporabi se integrirana funkcija, ki omeji število poizkusov

(30)

10 3 Razvoj

za iskanje izmerjene razdalje v odbitem signalu); privzeti doseg, višja hitrost (vključi se način hitrega nadaljevanja, ki zavrže meritev, če odbojnega signala po določenem času ni);

maksimalni doseg, ki nasprotno od načina kratkega dosega nastavi največje možno število poizkusov za iskanje izmerjene razdalje v odbitem signalu; visoka občutljivost, ki namesto algoritma za računanje veljavne meritve uporablja izbrani meji za vsebnost šuma v signalu in občutljivost; nizka občutljivost, ki deluje enako kot način visoke občutljivostmi z razliko v mejnih vrednostih. Tipične frekvence zajema se gibljejo okoli 270 Hz, v hitrem načinu zajemanja do 650 Hz in v načinu kratkih razdalj 1000 Hz. V našem primeru se zajem opravlja s približno 46 Hz. Frekvenca je iz optimalne zmanjšana zaradi procesorske omejitve ter drugih operacij, ki jih krmilnik opravlja poleg zajemanja (računanje drugih parametrov, shranjevanje meritev na pomnilnik itd.).

Delovanje naprave se začne z izvedbo popravka pristranskosti sprejemnika, in sicer tako, da se spremeni novi zaznani nivo ambientalne svetilnosti in določi maksimalna občutljivost. Naprava nato pošlje referenčni signal iz oddajnika k sprejemniku, nastavi zakasnitev na nično vrednost in na novo izračuna to zakasnitev periodično po nekaj meritvah.

Naprava po več akvizicijah (ena akvizicija je izstrelitev in sprejem signala) preveri ujemanje signala in shrani meritev v notranji spomin, kjer hrani zapis korelacij. Po vsaki akviziciji se ta doda prejšnjemu rezultatu. Ko pa se signal po več akvizicijah večkrat odbije od objekta nazaj v sprejemnik, se v zapisu korelacij izpostavi vrh pri ustrezni razdalji. Akvizicije se ponavljajo, dokler ni dosežena neka maksimalna vrednost, ki zagotavlja natančnost razdalje. Če je signal prešibek, da bi se to zgodilo, se akvizicije po določenem številu ustavijo. Na podlagi moči signala, ki jo dobimo iz vršne vrednosti zapisa korelacij ter šumnih vrednosti, pa izračunamo še mejno vrednost, ki končno meritev določi kot veljavno ali pa jo zavrne. Ko se začne nova meritev, se zapis korelacij in shranjene vrednosti pobrišejo in sekvenca se ponovno začne.

Slika 5: Optični merilnik razdalje Garmin LiDAR-Lite v3 [9]

(31)

3.3 Izbira komponent 11

Komunikacija tipala z Arduinom lahko poteka z uporabo impulzno širinske modulacije – dvosmerne prenosne signalne metode, ki sproži meritev in vrne izmerjeno razdaljo z uporabo priključka "mode-control". V mirovanju je stanje priključka visoko impedančno, ob meritvi pa jo sklenemo z ozemljenim potencialom in ta sprememba sproži izhod laserja. Naprava se odzove s visokim stanjem (3,3 V ali 5 V) na vodilu, katerega impulzna širina je proporcionalna izmerjeni dolžini pri 10 µs/cm. Dodan je tudi 1 kΩ upor, da omeji izhodni tok naprave in s tem prepreči zasičenje vodila (angl. bus contention) – neželeno stanje vodila, pri katerem več naprav ali modulov poskusi dostopati do vodila hkrati. Če držimo priključek "mode control" v nizkem stanju, se proces akvizicije ponavlja in s tem producira spreminjajočo frekvenco podajanja meritev proporcionalno razdalji – večja kot je razdalja, daljši je impulzno širinski signal, manjša je frekvenca zajemov in nasprotno.

Serijska komunikacija I2C deluje na principu nadrejeni/podrejeni in za delovanje potrebuje samo dve komunikacijski povezavi – SCL (angl. Serial Clock Line) in SDA (angl.

Serial Data Line) ter omogoča priklop več naprav (7 bitov za naslove, torej 128 naprav).

Naprava je v tem primeru podrejena, krmilnik pa nadrejen. Nadrejen krmilnik začne prenos podatkov z odprtjem povezave, ki ga predstavlja sprememba stanja linije SDA iz visoke v nizko (nasprotna sprememba pa predstavlja zaustavitev povezave), medtem ko je SCL linija v visokem stanju. Naslednji je preneseni bajt nadrejenega krmilnika na naslov naprave (7 bitov) ter bit, ki specificira branje (visoko stanje) ali pisanje (nizko stanje). Temu skupku podatkov pravimo okvir. Vsakemu okvirju sledi potrditveni bit – če je bil naslovni ali podatkovni okvir pravilno prejet, se potrditveni bit nastavi na visoko stanje (potrditveni bit nastavlja naprava, ki podatke prejema). Nato nadrejeni prejme ali pošlje podatkovni okvir, ki ga kot rečeno prejemnik potrdi. Podatki se prenašajo preko vodila SDA v sekvencah po devet impulzov ure (osem bitov in potrditveni bit). Če je zahtevana operacija branja, nadrejeni ustavi prenos, zamenja začetni pogoj (s tem da spremeni bit, ki predstavlja zahtevo za branje ali pisanje) in ponovno preveri naslov podrejene naprave. Ko je postavljen potrditveni bit, se ob kontinuiranem upravljanju ure sprosti linija SDA in ponovno steče prenos. Da se izvede operacija pisanja, se ponovno izvedejo prejšnji koraki, spremeni pa se bit, ki predstavlja zahtevo za branje ali pisanje. Komunikacija se konča ob koncu cikla prenosa, ko nadrejena naprava zaključi povezavo. I2C povezava omogoča poljubno konfiguracijo parametrov za algoritem merjenja razdalje, zaradi česa smo jo izbrali. Spreminjamo lahko želeni doseg, hitrost zajema, občutljivost sprejemnika ter druge parametre in s tem dosežemo optimalno delovanje za želen namen.

(32)

12 3 Razvoj

3.3.3 Drsni obroč

Za prenos komunikacijskih in napajalnih kablov smo uporabili manjši, 12-žilni drsni obroč (angl. slip ring). Ta omogoča rotacijo kablov in merilnika hkrati, brez da bi se kabli zapletli. Pri drsnem obroču so v notranjosti ščetke s pomočjo vzmeti staknjene na obroče, kabli iz obročev so speljani ven iz vrteče se strani, kabli iz ščetk pa iz druge. Drsni obroč je pričvrščen s tremi vijaki.

Slika 6: 12-žilni drsni obroč [10]

3.3.4 LCD zaslon

Za prikaz informacij o delovanju izdelka smo uporabili tekočekristalni zaslon (angl.

Liquid Crystal Display – LCD), formata 16 × 2, kar pomeni, da ima dve vrsti, v vsaki od njih pa lahko prikaže 16 znakov. Zaslon ima vzporedni vmesnik (angl. parallel interface) oz. več linijski kanal, kjer je vsaka linija zmožna oddajati po nekaj bitov hkrati. Pred uporabo USB povezav je imela večina osebnih računalnikov vsaj en vzporedni vmesnik (na primer za tiskalnik). Vmesnik sestavljajo naslednji priključki: izbira registrov (angl. register select – RS), ki upravlja s spominom LCD; branje/pisanje (angl. read/write – R/W), ki izbere način branja ali pisanja; enable, ki omogoči pisanje v registre; 8 podatkovnih priključkov, katerih stanja predstavljajo znake, ki jih zapisujemo v register ali vrednosti, ki jih beremo; priključki za nastavitev kontrasta, za napajanje ter priključek za osvetlitev zaslona. Glede na to, da je število priključkov veliko ter povezovanje nerodno, je bil za povezavo zaslona LCD in Arduina raje uporabljen protokol I2C, ta pa za komunikacijo potrebuje samo napajanje in dve komunikacijski povezavi – SDA in SCL. Pozorni smo bili tudi pri izbiri I2C naslova naprave, ki ne sme biti enak kateremu koli naslovu od drugih povezanih naprav.

Slika 7: Tekočekristalni zaslon 16 × 2 [11]

(33)

3.3 Izbira komponent 13

3.3.5 Bralnik microSD kartic

Večina mikrokrmilnikov ima omejene kapacitete vgrajenega spomina (čip Atmega2560 ima 4 kB EEPROM spomina), zato se poslužujemo prenosnih spominskih kartic in bralnikov oz. zapisovalnikov le-teh. Uporabljeni bralnik kartic je izključno 3,3 V naprava, ki ima vgrajen t. i. pretvornik nivoja (angl. level shifter) CD74HC4050, ki omogoča pretvarjanja visokonapetostne logike v nizkonapetostno. Dotično napravo lahko zato napajamo tudi s 5 V.

Komunikacija z Arduinom poteka prek preprostega protokola SPI (angl. Serial Peripheral Interface).

Slika 8: Bralnik microSD kartic, proizvajalca Adafruit [12]

Ta omogoča dvosmerno komunikacijo tipa nadrejeni/podrejeni (angl. master/slave) in uporablja štiri signalne linije: MISO – nadrejeni prejema, podrejeni pošilja (angl. Master Input – Slave Output); MOSI − nadrejeni pošilja, podrejeni prejema (angl. Master Output – Slave Input); SCK – takt ure nadrejenega (angl. Serial Clock); SS – nadrejeni sporoča, s katero napravo bo komuniciral (angl. Slave Select). Ob začetku komunikacije nadrejeni določi frekvenco ure glede na zahteve podrejenega. Preko SS linije nato izbere podrejenega. Preko MISO in MOSI kanalov steče komunikacija tipa polni dupleks, torej nadrejeni pošlje nekaj podrejenemu in nasprotno. Komunikacija vključuje dva registra (nekaj besedna), ki na svojih registrih izvajata bitni premik (angl. bit shift). Na pozitivni (ali negativni) fronti si izmenjata bit z največjo težo (angl. Most Significant Bit – MSB), na naslednji fronti pa vsak svoj prejeti bit nastavita za bit z najmanjšo težo (angl. least significant bit – LSB) registra. Na koncu postopka sta si nadrejeni in podrejeni izmenjala vrednosti registra. Če morata komunikacijo nadaljevati, se ponovno naložijo novi registri in proces se ponovi. Ko je komunikacija končana, nadrejeni prekine povezavo s podrejenim in ustavi uro.

3.3.6 LCD I2C vmesnik

Da smo prihranili prostor, se izognili nerodnemu povezovanju vzporednega vmesnika, poenostavili povezavo med Arduinom in LCD zaslonom ter prihranili priključke na Arduinu za druge namene, smo uporabili pretvornik povezave iz vzporednega vmesnika v I2C komunikacijski protokol. Glavni čip uporabljenega vmesnika je MCP23008 – 8 bitni I2C vhodno-izhodni modul s serijskim vmesnikom.

(34)

14 3 Razvoj

Slika 9: Pretvornik vzporednega vmesnika v I2C [13]

3.3.7 Krmilna ročica

Za upravljanje z menijem naprave in potrjevanje odločitev smo uporabili krmilno ročico (angl. joystick) s stikalom. Prepričala nas je predvsem preprostost uporabe v primerjavi z nerodnostjo več gumbov in stikal. Analogna krmilna ročica za delovanje potrebuje dva analogna priključka na mikrokrmilniku, ki bereta x in y položaj ročice – vrednosti so omejene z analogno-digitalnim pretvornikom, katerega resolucija je 10 bitov (vrednosti se torej gibljejo med 0 in 1023). Dodatni digitalni priključek pa zazna pritisk stikala.

Slika 10: Krmilna ročica za upravljanje z menijem [14]

3.3.8 Koračni motor

Premik tipala razdalje po azimutu in elevaciji zagotavljata dva hibridna koračna motorja, tipa NEMA 17, z 1,8° kotnim korakom (200 korakov/polni obrat). Brezkrtačni hibridni koračni motorji so kombinacija motorjev z variabilno reluktanco in motorjev s permanentnimi magneti ter se lahko premaknejo na določen kot kroga in tam ostanejo brez uporabe senzorja pozicije.

Pri tem tipu koračnega motorja je rotor namagneten aksialno z uporabo permanentnega magneta, tako kot pri motorju s permanentnim magnetom. Na vsakem polu imamo pokrove z enakim številom zob. Stator ima 8 polov oz. 4 polove pare, vsak pol ima svoje navitje, ta pa napajamo z zunanjim virom. Statorskih zob je 40 (5 na vsakem polu), rotorskih na vsakem polu permanentnega magneta 50, iz česar se lahko izračuna korak.

(35)

3.3 Izbira komponent 15

𝐾𝑜𝑟𝑎𝑘 = (50−40) ∙ 360°

50 ∙ 40 = 1.8° (3.1)

Z različnimi kombinacijami pozitivnega in negativnega vzbujanja statorskih navitij tako dobimo želeno pozicioniranje in premikanje rotorja. Če vzbujanje statorja odstranimo, rotor zaradi navora permanentnega magneta ostane v zadnji poziciji pred izklopom. Poznamo dve osnovni ureditvi navitij dvofaznega koračnega motorja: bipolarno in unipolarno. Unipolarni motor ima dve navitji na fazo, eno navitje za vsako smer magnetnega polja. Posledično lahko pri tej vezavi spreminjamo smer polja brez spreminjanja smeri toka in zato se uporabi samo en tranzistor za preklapljanje vsakega navitja. Tipično se na fazo izbere tudi ena ali druga stran vsakega navitja in se jo določi za skupno točko. Tako dobimo 3 kable na fazo ali 6 kablov za tipičen dvofazni unipolarni motor. Pogosto sta dve skupni točki med seboj tudi povezani, zato poznamo tudi motorje s 5 kabli.

Slika 11: Dvofazni unipolarni koračni motor [15]

Uporabljeni bipolarni motor ima eno samo navitje za vsako fazo, zato mora tok v navitju, da se spremeni polariteta magnetnega polja, spreminjati smer. To pomeni, da je gonilno vezje, ki to omogoča, bolj komplicirano – uporabi se H mostič (ali drug gonilnik, ki vključuje funkcijo spremembe smeri toka), ki preklaplja polariteto priključne napetosti. Ker so navitja bolje izkoriščena, lahko iz bipolarnega motorja pričakujemo tudi večjo moč kot iz ekvivalentno velikega unipolarnega motorja (okoli 70 % navora bipolarnega motorja in 50 % manjši izkoristek). Bipolarni motor ima dva kabla na fazo, torej skupno 4 kable.

Slika 12: Dvofazni bipolarni koračni motor [15]

(36)

16 3 Razvoj

3.3.9 Gonilnik koračnih motorjev

Pri izbiri gonilnika smo se osredotočili predvsem na kompatibilnost z Arduinom. Med veliko izbiro gonilnikov kot so A4988, DRV serija, TMC serija, smo se odločili za Toshibin TB6612FNG. Dva omenjena čipa sta že integrirana (angl. integrated circuit – IC) na izbrano nadgradno ploščo in vsebujeta vsak po 2 H mostiča, ki omogočata 1,2 A na vsakem mostiču (s 3 A vršno vrednostjo). Čipa imata vgrajeno temperaturno zaščito in vezje za zaznavo premajhne napetosti. Komplet omogoča povezavo dveh koračnih motorjev, torej tudi temu pogoju ustreza.

Namesto uporabe zapaha in Arduinovih priključkov PWM komplet že vsebuje namenski PWM gonilni čip, ki regulira motorje preko I2C. Gonilniki dovoljujejo tudi funkcijo mikrokorakanja (angl. microstepping), ki smo jo med izdelavo uporabili. Koračni motorji se premikajo diskretno, po korakih, to pomeni, da vrtenje motorja ni gladko, ampak skokovito – počasnejša kot je rotacija, bolj skokovit je premik rotorja. To lahko kompenziramo z mikrokorakanjem, ki razdeli vsak korak v več manjših korakov (recimo 1 korak v 8, 16 ali več) in s tem gladi rotacijo z uporabo impulzno širinsko modulirane napetosti, ki kontrolira vhodni tok v navitja motorja.

Gonilnik navitjema pošlje dva napetostna sinusna signala, zamaknjena za 90 faznih stopinj. Ko se tok v enem navitju poveča, se v drugem zmanjša, ta postopek pa rezultira v bolj gladkem gibanju in konsistentni proizvodnji navora. Ker pa gonilniki, ki omogočajo mikrokorakanje, lahko samo aproksimirajo sinusni signal, so še zmeraj prisotni valovanje navora, resonanca in šum; odsotnost teh bi pomenila obstoj idealnih karakteristik.

Slika 13: Adafruit Motorshield v2.3 z gonilnikom TB6612FNG [18]

3.3.10 Direktni enosmerni presmernik – pretvornik navzdol

Za preprosto uporabo, možnosti napajanja z baterijo in zaradi razširjenosti ter pogostosti 12 V napajalnikov smo določili, da bo vhodna napetost izdelka 12 V. Ta se nato pretvori z uporabo pretvornika navzdol (angl. buck converter, step-down converter) na nižjo napetost 5 V. Za ta proces je odgovoren čip LM2596, ki je osnovni gradnik pretvornika navzdol. Ker je LM2596 stikalni napajalnik (angl Switch-Mode Power Supply – SMPS), je njegova učinkovitost večja od linearnih napajalnikov, še zlasti pri večjih vhodnih napetostih. Pretvornik deluje pri preklopni frekvenci 150 kHz, kar omogoča uporabo še manjših filtrirnih komponent.

(37)

3.3 Izbira komponent 17

Njegova toleranca izhodne napetosti je ± 4 % pri vhodnih napetostih od 4,5 V do 40 V.

Maksimalni izhodni tok je 3,0 A, izhodna napetost pa je nastavljiva od 1,23 V do 37 V.

Vključena je tudi funkcija termičnega izklopa ter omejevalnik toka.

Slika 14: DC-DC pretvornik navzdol LM2596 [19]

3.4 Sestavljanje

Sestavljanje komponent je potekalo po naslednjem vrstnem redu.

Slika 15: Vrstni red sestavljanja

Podloga natisnjena na 3D tiskalniku ima točno določena sedišča komponent glede na njihovo končno lokacijo. Večino delov smo pritrdili z uporabo vijakov, nekaj pa z uporabo lepila. Komponente so postavljene tako, da so med njimi čim krajše povezave.

Sistem vrtenja po azimutu je na ležajih, ki omogočajo gladko vrtenje. Stojalo je sestavljeno iz spodnjega dela, ki je pritrjen na podlogo in ima narejeno sedišče za prvi ležaj. Ta je od drugega ločen z obročem, ki preprečuje trenje med ležajema. Obroč pa predstavlja sedišče še za drugi ležaj, na katerega je nameščen še zgornji del vrtečega sistema, ki spoji gnani zobnik z ležajema.

Slika 16: Presek ležajnega sistema

(38)

18 3 Razvoj

Krmilnik napajamo z 12 V na VIN priključku, napajanje 5 V za ostale naprave pa zagotavlja pretvornik navzdol. Elektronske komponente smo povezali preko sledečih povezav:

Naprava Priključek na napravi Priključek na krmilniku

bralec SD kartic 5 V 5 V (na pretvorniku navzdol)

GND GND (na pretvorniku navzdol)

CLK D13

DO D12

DI D11

CS D10

tipalo razdalje 5 V 5 V (na pretvorniku navzdol)

GND GND (na pretvorniku navzdol) in – pol 680 µF kondenzator

SDA 20 – SDA

SCL 21 – SCL

LCD I2C vmesnik 5 V 5 V (na pretvorniku navzdol)

GND GND (na pretvorniku navzdol)

CLK 20 – SDA

DAT 21 – SCL

Krmilna ročica 5 V 5 V (na pretvorniku navzdol)

GND GND (na pretvorniku navzdol)

Xout A6

Yout A7

SEL D8

Tabela 1: Povezave med komponentami

Pritrditev gnanega zobnika na os smo zagotovili s tremi vijaki, ki so privijačeni na vrtljivi spoj med zobnikom in ležajnim sistemom, pogonski zobnik pa je pritrjen na pogonsko os koračnega motorja z vijakom ter dvokomponentnim lepilom. Enako so pričvrščeni zaključni pokrovi.

Zobniško razmerje je 2 : 1, kjer ima gnani zobnik 44 zob, gonilni pa 22. Za ti vrednosti smo se odločili zaradi želene resolucije naprave. S kombinacijo funkcije mikrokorakanja koračnih motorjev (izbrali smo faktor 8) ter izbranega zobniškega razmerja, smo podvojili

(39)

3.4 Sestavljanje 19

število korakov, potrebnih za polni krog, na 3600 z uporabo nespremenjenega faktorja mikrokorakanja in s tem razpolovili razdaljo med dvema meritvama.

𝐾𝑜𝑟𝑎č𝑛𝑖 𝑚𝑜𝑡𝑜𝑟 𝑏𝑟𝑒𝑧 𝑚𝑖𝑘𝑟𝑜𝑘𝑜𝑟𝑎𝑘𝑎𝑛𝑗𝑎: 1,8° 𝑘𝑜𝑟𝑎𝑘⁄ , 𝑡𝑜𝑟𝑒𝑗 200 𝑘𝑜𝑟𝑎𝑘𝑜𝑣 = 360°

ali

𝐾𝑜𝑟𝑎č𝑛𝑖 𝑚𝑜𝑡𝑜𝑟 𝑧 𝑚𝑖𝑘𝑟𝑜𝑘𝑜𝑟𝑎𝑘𝑎𝑛𝑗𝑒𝑚 (𝑓𝑎𝑘𝑡𝑜𝑟 8): 200 ∙ 8 = 1600 𝑘𝑜𝑟𝑎𝑘𝑜𝑣 = 360°

ali

𝐾𝑜𝑟𝑎č𝑛𝑖 𝑚𝑜𝑡𝑜𝑟 𝑧 𝑚𝑖𝑘𝑟𝑜𝑘𝑜𝑟𝑎𝑘𝑎𝑛𝑗𝑒𝑚 (𝑓𝑎𝑘𝑡𝑜𝑟 16): 200 ∙ 8 = 3200 𝑘𝑜𝑟𝑎𝑘𝑜𝑣 = 360°

(3.2)

Slika 17: Pritrditev osi vrtenja na gnani (levo) in pogonski (desno) zobnik

Os vrtenja senzorja razdalje oziroma premika po elevaciji smo stabilizirali z uporabo kovinske sklopke med to osjo in motorjem ter ležajem v stojalu na nasprotni strani. Zobnikov tukaj ne uporabljamo, določili pa smo kot 𝛼, ki ga naprava doseže na koncu meritev:

𝛼 = 135°; 360°

1600 𝑘𝑜𝑟𝑎𝑘𝑜𝑣 = 135°

𝑥 → 𝑥 = 600 (3.3)

600 je torej število korakov, ki jih mora motor opraviti tekom meritev, ker uporabljamo mikrokorakanje s faktorjem 8. Resolucija je zato po elevaciji slabša, a na razdaljah, za katere je namenjen naš sistem, povsem zadostna.

Slika 18: Izvedba stabilizacije osi vrtenja po elevaciji

(40)

20 3 Razvoj

Vzemimo za primer faktor mikrokorakanja 8 ter resolucijo 5 na obstoječem sistemu. To pomeni pri premiku po azimutu

3200

5 = 640 𝑣𝑧𝑜𝑟𝑐𝑒𝑣 360°⁄ (3.4)

po elevaciji pa

600

5 = 120 𝑣𝑧𝑜𝑟𝑐𝑒𝑣 135°⁄ (3.5)

skupaj torej 76800 kombinacij elevacij, azimutov in razdalj, ki sestavljajo koordinate v sferičnem koordinatnem sistemu. Naprava v tem primeru izvede meritev na vsakih 0,5625° po azimutu in na 1,125° po elevaciji.

Večje število mikrokorakov na polni krog ne bi bilo smiselno zaradi konstrukcijskih omejitev sistema, ki je sestavljeno iz materiala PLA. Uporabljeni tiskalnik motorje po x in y osi pozicionira do 0,0125 mm natančno, po z pa do 0,002 mm. Dejanska natančnost tiska je slabša in odvisna od kompleksnosti tiskanega modela. Te številke so odvisne tudi od drugih parametrov tiskalnika, kot je hitrost tiskanja.

3.5 Izvedba krmilnega dela

Program, ki se izvaja na krmilniku, je bil napisan v okolju Arduino IDE, z uporabo programskega jezika, prirejenega za Arduino naprave. Program je sestavljen iz dveh glavnih funkcij, to sta void setup() ter void loop(). Ti dve funkciji skupaj sta del funkcije int main(), ki je posebna funkcija v vseh C++ programih – poklicana je takrat, ko želimo, da se program izvede in se, ne glede na mesto v programu, izvede prva. Če znotraj funkcije int main() dodamo zanko brez končnega pogoja (na primer while(1)) in v njo vstavimo klic funkcije void loop(), dobimo točno to, kar funkcija void loop() predstavlja – ciklično izvajano funkcijo. V tej funkciji imamo ponavljajoče se procese ter funkcije, preverjanja stanj senzorjev, delovanje uporabniškega vmesnika itd. Funkcija void setup() pa vsebuje ukaze oziroma del programa pred neskončno zanko, torej se izvede le enkrat (takrat ko zaženemo program). Ta del kode je namenjen inicializaciji komunikacije, spremenljivk ter drugih procesov in funkcij, ki jih želimo izvesti samo na začetku.

3.5.1 Uporabljene knjižnice

Za klic funkcij za delovanje različnih naprav smo uporabili nekaj knjižnic. Knjižnica Wire.h omogoča komunikacijo preko I2C protokola. V našem primeru smo ta tip komunikacije uporabili med krmilnikom, zaslonom, senzorjem razdalje ter gonilnikom koračnih motorjev.

AccelStepper.h knjižnico smo uporabili za dostop do funkcij, ki omogočajo upravljanje s koračnimi motorji, torej z določanjem maksimalne hitrosti, pospeška, premikanjem na določeno pozicijo, branjem trenutne pozicije itd.

(41)

3.5 Izvedba krmilnega dela 21

Knjižnica Adafruit_MotorShield.h je kompatibilna z uporabljeno verzijo gonilnika koračnih motorjev, zato je bila uporabljena za vzpostavitev komunikacije.

Prikazovalnik LCD smo upravljali z ukazi iz knjižnice LiquidCrystal_I2C.h, na primer lcd.clear, lcd.print, lcd.setCursor, lcd.backlight ter lcd.begin().

LIDARLite.h je knjižnica, namenjena delu z LiDAR senzorjem. Z uporabo funkcij te knjižnice smo spreminjali vrednosti določenih registrov ter s tem modificirali način delovanja.

Knjižnici SPI.h ter SD.h pa smo uporabili za komunikacijo in upravljanje z bralnikom SD kartic.

3.5.2 Potek programa

Poleg vključevanja knjižnic se program začne z nastavitvami koračnih motorjev (parametra sta privzeto število korakov ter številka priključka na gonilniku), njunega gonilnika (naslov I2C) ter LCD zaslona (število segmentov na vrstico, število vrstic, I2C naslov).

Ustvarimo tudi funkcije, ki vsebujejo posamični korak obeh koračnih motorjev. Sledi inicializacija globalnih spremenljivk ter izbira njihovih vrednosti.

Ključne vrednosti predstavljajo predvsem spremenljivke drive_steps, lidar_steps ter n_microsteps. Prvi, ki predstavlja število korakov za polni krog po azimutu, določimo vrednost 3600, druga je 600 in predstavlja število korakov motorja za premik po elevaciji, tretja pa predstavlja število mikrokorakov, ki jih naredita motorja (za premik po elevaciji in azimutu) med dvema meritvama razdalje. To resolucijo lahko kasneje tudi spreminjamo preko menija (da motor naredi več korakov med meritvami), paziti pa moramo, da je ostanek po deljenju med 3200 (številom korakov polnega kroga po azimutu) ali 600 (številom korakov za premik 135°

po elevaciji) in izbranim številom korakov med meritvami n_microsteps enak nič. Z večanjem tega resolucijskega števila se zmanjša število vzorcev ter s tem čas, v katerem naprava pomeri celotni točkovni oblak.

Program se nadaljuje s funkcijo void setup(). Ta vključuje začetek serijske povezave, inicializacijo gonilnika motorjev, LCD zaslona ter senzorja razdalje, določitev maksimalne hitrosti in pospeška koračnih motorjev terše klic funkcije updateMenu(), ki skrbi za pravilno postavitev menija na LCD zaslonu.

Funkcija void loop() vsebuje funkcionalnost preklapljanja med opcijami v menijih. Prva dva pogoja pogojnih stavkov v funkciji spremljata vrednost analognega signala na priključku A7 (izhod premika po y osi iz krmilne ročice). Če je ročica premaknjena gor ali dol, se posodobi, izbirna puščica na zaslonu se premakne na ustrezno mesto. Glede na mesto izbirne puščice se spremenljivki menu priredi tudi pripadajoča vrednost, ki posredno predstavlja izbrano akcijo, ki se bo izvedla. Za vizualno posodobitev spremembe je odgovorna funkcija updateMenu().

(42)

22 3 Razvoj

1 void loop() {

2 if (analogRead(A7)<50){

3 menu++;

4 updateMenu();

5 delay(100);

6 while (analogRead(A7)<50);

7 }

8 if (analogRead(A7)>800){

9 menu--;

10 updateMenu();

11 delay(100);

12 while(analogRead(A7)>800);

13 }

14 if (!digitalRead(23)){

15 executeAction();

16 updateMenu();

17 delay(100);

18 while (!digitalRead(23));

19 }

20 }

Slika 19: Premik izbirne puščice

Pogoj zadnjega pogojnega stavka v funkciji void loop() preverja vrednost digitalnega signala gumba na priključku 23. Glede na njegovo stanje, če je pritisnjen ali ne, se izvede izbrana akcija preko klica funkcije void executeAction().

Funkcija void executeAction() je sestavljena iz stavka switch, ki glede na vrednost spremenljivke menu izvede pripadajočo izbrano akcijo. Meni našega programa je sestavljen iz štirih možnosti izbire: START, CALIBRATE, CHECK in RESOLUTION.

(43)

3.5 Izvedba krmilnega dela 23

Ukaz RESOLUTION je namenjen izbiri vrednosti spremenljivke n_microsteps, ki določa število korakov motorja med vsako meritvijo. Glede na to spremenljivko se poveča ali zmanjša končno število točk, ki jih naprava pomeri. Manjše kot je število točk, hitreje je konec meritve, vendar so razdalje med njimi večje.

Izvedba ukaza CHECK je obvezna pred začetkom merjenja. V funkciji void check() najprej preverimo delovanje SD kartice, s preverjanjem vrednosti priključka 53, ki na krmilniku Arduino Mega predstavlja CS (angl. chip select) priključek oz. priključek izbire čipa. Ta omogoča izbiro med več integriranimi vezji na SPI vodilu in je ukazni priključek, ki povezuje vhodno-izhodne priključke z notranjim vezjem naprave. Če je priključek v aktivnem stanju, nastavimo boolean spremenljivko chk1 na pozitivno stanje, kar pomeni, da je prvi pogoj izpolnjen in komunikacija s SD kartico je vzpostavljena. Drugi pogoj pa je pravilna nastavitev resolucije. Pogojni stavek tu preveri, da je ostanek spremenljivke lidar_steps in drive_steps po deljenju z n_microsteps enak nič. S tem zagotovimo, da motorja izbrano resolucijo sploh lahko izvedeta, brez da bi na koncu ostal decimalni delež koraka neizveden. Če bi za n_microsteps izbrali število 7, bi ugotovili, da je

600 % 7 = 5 𝑜𝑧𝑖𝑟𝑜𝑚𝑎 600

7 ≅ 85,71 (3.6)

3200 % 7 = 1 𝑜𝑧𝑖𝑟𝑜𝑚𝑎 3200

7 ≅ 457,14 (3.7)

kar pomeni, da bi motorja za premik po azimutu in elevaciji morala izvesti necelo število korakov, kar pa ni mogoče. Na koncu novi pogojni stavek preveri, če sta oba pogoja izpolnjena in nastavi novo boolean spremenljivo chk na visoko stanje. Funkcija se s tem zaključi.

Napravo pred začetkom ročno nastavimo na navpični položaj, nato pa z izbiro ukaza CALIBRATE kličemo funkcijo void calibrate(), v kateri izvedemo ukaz stepper2.moveTo(lidar_steps), ki premakne senzor po elevaciji za 135° ali 600 mikrokorakov nižje v začetno lego (kot −45°). Za 200 mikrokorakov se zamakne tudi motor po azimutu, ki s tem izloči začetni tresljaj ali sunek (angl. jerk) iz meritve. Ko se motorja ustavita, je kalibracija končana in ob izpolnjenih pogojih v funkciji void check() lahko izvedemo ukaz START.

Funkcija void start() je glavna funkcija programa, ki narekuje postopek merjenja in premikanja motorjev. Pred začetkom se s pogojnim stavkom preveri, če sta bila izvedena postopka CALIBRATE in CHECK. V nasprotnem primeru nas program preko sporočila na LCD zaslonu opozori na predhodno izvedbo teh dveh ukazov. Funkcija se nadaljuje z nastavitvijo začetne lege koračnih motorjev preko ukaza stepper1.setCurrentPosition(0) in stepper2.setCurrentPotision(0), poda se navodilo bralniku SD kartic za pripravo dokumenta LIDAR.txt za pisanje ter se ponovno preveri ustreznost resolucije. Nato se izvaja zunanja zanka while, dokler je število že izvedenih korakov motorja po elevaciji manjše od vrednosti spremenljivke lidar_steps, ki jih predstavlja. Notranja zanka while pa ima ugnezdenih več postopkov. Prvi je ugotavljanje približnega časa izvajanja. Ta se računa glede na pretečen čas, potreben za potek 100 mikrokorakov. Ta čas torej vključuje čas meritve, čas shranjevanja

(44)

24 3 Razvoj

meritve v datoteko LIDAR.txt, čas preračunavanja koordinat ter čas premika motorja. Približni čas izvajanja se posodobi vsak nov krog premika po azimutu. Za merjenje časa je uporabljena funkcija millis(), katere vrednost dodelimo neki spremenljivki v začetku programa in drugi na koncu programa. Razlika v času, ki je izražen v milisekundah, predstavlja pretečen čas. Tega nato pretvorimo v ure in minute, ki se izpisujejo na zaslonu. Naslednji proces, ki se izvede v funkciji void start(), je merjenje razdalje. Ta postopek izvedemo z funkcijama myLidarLite.distance(false) in myLidarLite.distance(), ki sta celoštevilskega tipa. Drugi ukaz, ki vključuje pri klicu funkcije myLidarLite.distance argument false, je namenjen merjenju razdalje brez popravka pristranskosti sprejemnika. Po nasvetu proizvajalca senzorja pa je vsaka stota meritev izvedena s popravkom pristranskosti sprejemnika. Funkcija myFile.print() zagotavlja, da se celoštevilski rezultat meritve zapiše na spominsko kartico. Sama meritev je podana kot argument v tej funkciji.

1 if(stepper1.currentPosition()%100 == 0){

2 myFile.print(myLidarLite.distance());

3 }

4 else{

5 myFile.print(myLidarLite.distance(false));

6 }

Sledi izračun sferičnih koordinat θ in φ glede na število že izvedenih mikrokorakov in poznane začetne lege. Format, v katerem se zapišejo zbrani podatki oziroma zbrane koordinate, torej razdalja, kot azimuta in elevacije, je prikazan na naslednji sliki.

Slika 20: Format shranjevanja sferičnih koordinat

(45)

3.5 Izvedba krmilnega dela 25

Kot azimuta se določi kot zmnožek trenutnega mikrokoraka motorja in kot enega mikrokoraka, ki je 0,1125° pri motorju azimuta. Kot elevacije pa kot zmnožek trenutnega mikrokoraka motorja, ki se premika po elevaciji in kot enega mikrokoraka tega motorja, ki pa je 0,225°. Od tega števila odštejemo zmnožek spremenljivke lidar_steps in števila 0,225, to predstavlja kot premika po elevaciji, ter prištejemo kot 90°, da dobimo končni kot elevacije v stopinjah. Izhodiščni kot ob začetku merjenja je torej −45°. Po izračunu in zapisu kotov in razdalje na spominsko kartico se motor premakne.

Motor, ki skrbi za rotacijo po azimutu, se torej premakne za en mikrokorak. Ta premik izvedemo s spodnjimi ukazi.

1 stepper1.move(n_microsteps);

2 while(stepper1.distanceToGo() != 0)

3 stepper1.run();

Z ukazom stepper1.move(n_microsteps) določimo število korakov, ki naj jih motor opravi (ta parameter je vezan z nastavljanjem resolucije pred začetkom merjenja). Nato s pogojno zanko izvajamo ukaz stepper1.run(), ki motor prestavlja po en mikrokorak, dokler ni število še neizvedenih korakov enako nič.

Po končanem polnem krogu premika po azimutu se z enakimi ukazi (razlika je samo, da tokrat upravljamo z motorjem številka 2, torej se ukazi začnejo s »stepper2.«) izvede še premik po elevaciji. Ta cikel se ponavlja, dokler motor ne pride v navpično lego oziroma opravi 600 mikrokorakov. Povezava med spominsko kartico in krmilnikom se ukine, shrani se tekstovna datoteka z meritvami, na zaslonu se izpiše besedilo, ki označuje konec meritve, ob pritisku gumba pa se naprava vrne v glavni meni, kjer lahko ponovno nastavimo parametre, izvedemo kalibracijo in preverjanje povezave terzačnemo novo meritev.

(46)

26 3 Razvoj

(47)

27

4 Vizualizacija

Vizualizacija LiDAR točkovnih podatkovnih oblakov (angl. point cloud) za profesionalno uporabo poteka v orodjih kot sta ArcGIS ali LidarView. Ta orodja omogočajo vizualizacijo in procesiranje v realnem času, manipulacijo z nabori podatkov, delo s standardiziranimi formati za LiDAR podatke in druge funkcionalnosti, ki so ključne za obravnavo ogromnih količin podatkov.

Mi smo za delo z našimi podatki ubrali preprostejšo pot. Glede na to, da imamo svoj format shranjevanja meritev, ki ni standardiziran, smo uporabili programski jezik Python in dodatne knjižnice za obdelavo LiDAR podatkov za izvedbo vizualizacije. V razvojnem okolju Spyder, v kombinaciji s platformo Anaconda IE, ki omogoča kreiranje, distribucijo, inštalacijo in upravljanje različne programske opreme, smo napisali program, ki pretvori sferične koordinate v kartezične po znanih formulah.

𝑘𝑎𝑟𝑡𝑒𝑧𝑖č𝑛𝑖 𝑘. 𝑠. ↔ 𝑠𝑓𝑒𝑟𝑖č𝑛𝑖 𝑘. 𝑠. {

𝑥 = 𝜌 cos 𝜃 sin 𝜑 𝑦 = 𝜌 sin𝜃 cos 𝜑

𝑧 = 𝜌 cos 𝜑

(4.1)

Vsaka vrstica tekstovne datoteke oziroma ena meritev je z ukazom arr = list(map(float, line.split(' '))) v zanki razdeljena v tridimenzionalno tabelo arr, kjer prva komponenta predstavlja razdaljo, druga azimut in zadnja elevacijo. Te koordinate se nato preko formul preslikajo v koordinate kartezičnega koordinatnega sistema in shranijo vsaka v svojo tabelo z ukazom append. Tako dobimo tri tabele za tri koordinate.

4.1 Ipyvolume

Eden od načinov za izvedbo vizualizacije je uporaba Python knjižnice Ipyvolume [23].

Ta knjižnica omogoča prikaz glifov, grafov raztrosa in volumenskih objektov v Jupyter Notebook okolju in je osnovana na kopiji t. i. matplotlib knjižnice za upodabljanje in risanje statičnih, animiranih ali interaktivnih vizualizacij v Python-u. Inštalacija tega okolja je preprosta. V Anaconda Prompt vpišemo komande:

(48)

28 4 Vizualizacija

$ conda install -c conda-forge ipyvolume

$ conda install -c conda-forge nodejs

$ jupyter labextension install @jupyter-widgets/jupyterlab-manager

$ jupyter labextension install ipyvolume

$ jupyter labextension install jupyter-threejs

Po inštalaciji paketa orodij, Jupyter Notebook zaženemo z ukazom $ jupyter notebook in odpre se nam spletni vmesnik, ki gostuje na lokalnem omrežju (angl. local host). Odpremo datoteko z našim Python programom in ga zaženemo. Jupyter Notebook ponudi tudi izbiro resolucije, ponastavitev kamere na izhodiščni položaj, povečanje slike, premik okoli točkovnega oblaka itd. Vizualizacija se izvede preko sledečih funkcij:

1 fig = ipv.figure()

2 scatter = ipv.quickscatter(np_x, np_y, np_z, size=1, marker = "sphere")

3 ipv.show()

Funkcija ipv.quickscatter kot argumente zahteva tabele kartezičnih koordinat, velikost elementa, ki jih bo predstavljal in njegovo obliko. Iz slike 22 lahko razberemo različne objekte v prostoru.

Slika 21: Točkovni oblak s funkcijo knjižnice Ipyvolume

(49)

4.2 Open3D 29

Slika 22: Objekti na sliki točkovnega oblaka

4.2 Open3D

Drugi način vizualizacije, ki smo ga uporabili, je uporaba knjižnice Open3D [24]. Tudi ta omogoča preprosto inštalacijo preko Anaconda Prompt-a. Ni osnovana na nobeni prej obstoječi knjižnici in je sestavljena z majhnim in skrbno premišljenim naborom odvisnosti.

Postopek uporabe je po večini enak, torej vključuje preslikavo vrstic v tridimenzionalno tabelo koordinat, preračun v koordinate kartezičnega koordinatnega sistema ter nato klic funkcij za vizualizacijo:

1 xyz = zip(np_x, np_y, np_z)

2 result = set(xyz)

3 pcd = o3d.geometry.PointCloud()

4 pcd.points = o3d.utility.Vector3dVector(result)

5 o3d.io.write_point_cloud("./data.ply", pcd)

6 pcd.paint_uniform_color([0, 0, 1])

7 o3d.visualization.draw_geometries([pcd])

S prvo vrstico združimo tabele koordinat v podatkovni tip tuple, ki je matematično gledano končni seznam elementov. S tem združimo elemente iz vseh treh tabel z enakim indeksom v en element. Ukaz set() uporabimo za konverzijo tuple-ov v sekvenco iterativnih elementov, nato pa s funkcijo o3d.geometry.PointCloud() spremenljivki pcd določimo, da bo predstavljala točkovni oblak. V naslednji vrstici točke dodelimo tej spremenljivki, potem pa točkovni oblak pretvorimo v .ply format. Točkam, ki jih vizualno predstavljamo, lahko določimo še želeno barvo in zaženemo vizualizacijo z ukazom o3d.visualization.draw_geometries([pcd]).

(50)

30 4 Vizualizacija

Slika 23: Vizualizacija z uporabo Open3D

4.3 Lažne meritve

Zaradi različnih odbojev svetlobe od stekel, ogledal in drugih odbojnih površin se zgodi, da je zajeta razdalja lažna. Zato smo program izpopolnili tako, da se točke, ki so od svojih sosednjih točk oddaljene več kot 150 %, pobrišejo. Tak način se je izkazal za primernega za naš nabor podatkov.

(51)

4.3 Lažne meritve 31

Slika 24: Slika z lažnimi meritvami (zgoraj) in brez (spodaj)

(52)

32 4 Vizualizacija

(53)

33

5 Analiza rezultatov

Podatkovni oblaki, ki jih generira zgrajeni sistem LiDAR, so glede na cenovni razred uporabljene strojne opreme relativno natančni. Dobimo želen rezultat, torej 3D pregled prostora, ki ga je naprava zajela za namen prikaza delovanja LiDAR tehnologije. Naprava je primerna za prostore z maksimalnim radijem 40 m in je občutljiva na slabo odbojne površine in površine z veliko svetlobno disperzijo.

Slika 25: Zajem velikega prostora (cerkev Sv. Križa − Plečnikove Žale, 1.920.000 točk)

(54)

34 5 Analiza rezultatov

Slika 26: Zajem majhnega prostora (soba, 76.800 točk)

Glede na različne rezultate obeh knjižnic z vizualizacijskimi funkcijami lahko vidimo, da je za našo uporabo primernejša knjižnica Open3D. Okolje za ogled prikazanih točk se bolje odziva, program se prej izvede in ne potrebuje dodatnih orodji, kot je Jupyter Notebook pri knjižnici Ipyvolume. Upravljanje kamere za ogled je preprostejše, Open3D je namensko narejena za vizualizacijo podatkov, Ipyvolume pa je izpeljana iz že obstoječe knjižnice matplotlib.

Reference

POVEZANI DOKUMENTI

V IR-spektroskopiji uporabljamo {tiri vrste odboja svetlobe: zrcalni odboj (angl. specular reflectance), difuzni odboj (angl. diffuse reflection), notranji odboj.. internal

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

Zasnovali smo varen sistem, ki bo z uporabo ˇsifrirnih algorit- mov omogoˇ cal zaˇsˇ cito proti kopiranju podatkov na znaˇ ckah radiofrekvenˇ cne identifikacije (RFID –

 utežitev (angl. weighted) – utežena hibridna tehnika združi rezultate različnih priporočilnih sistemov in izdela listo priporočil ali napovedi z uporabo linearne

V drugem praktičnem delu delavnice učenci in učenke s podatkoma o časih prihodov primarnih in sekundarnih valov do posamezne potresne opazovalnice, ter z uporabo nekaterih

Hitrost pulznih valov (angl. pulse wave velocity, PWV), augmentacijski indeks (angl. augmentation index, AIx) ter centralni sistolni arterijski tlak (angl. central systolic

Pomen usposabljanja iz temeljnih postopkov oživljanja z uporabo AED in organiziranje v Republiki Sloveniji... Žrtev je neodzivna in ne

 Povezavo med klinično sliko bolnikov in podtipi, ki smo jih določili z metodo MluI-LRFP, smo nakazali, ker so naši izolati, določeni kot podtip Mla2 in