• Rezultati Niso Bili Najdeni

x = 26,229U-1,397

Metodologija raziskave

34

3.2.2.1 ADC1 in ADC2

Krmilnik ESP32 S2, ki ga uporabljamo, vsebuje dve vrsti ADC. Priključki IO01-IO10 so tipa ADC1, ostali priključki (ne vsi) pa so tipa ADC2. Platforma Arduino IDE omogoča uporabo funkcije AnalogRead() za priključke z ADC1, medtem ko je za priključke ADC2 potrebno klicati funkcijo:

adc2_get_raw(številka ADC kanala, ADC_WIDTH_BIT_13, &spremenljivka),

kjer s prvim argumentom povemo številko kanala, ki jo dobimo iz podatkovnega lista mikrokrmilnika. Vrednost iz senzorja se zapiše v izbrano spremenljivko (spremenljivka).

3.2.3 Preverjanje delovanja multiplekserjev in modula za zaznavanje talne črte

Modul za prepoznavanje talne črte je sestavljen iz 15-ih IR senzorjev. Sistem branja njihovih vrednosti je analogen sistemu, ki ga uporabljamo pri senzorjih razdalje: uporaba funkcije adc2_get_raw( ). Vsi IR senzorji so povezani na dva, 8- kanalna multiplekserja. Pri branju vrednosti izvajamo preklope na štirih priključkih (EN, A0, A1, A2). Preklop pomeni nastavljanje senzorja na nizko (0 V) ali visoko (3,3 V) napetost. Izvedemo ga s pomočjo funkcije digitalWrite().

Multiplekserja omogočata branje vseh senzorjev, ki se nahajajo na modulu zaznavanje talne črte. Izhodno vrednost iz izbranega senzorja dobimo z ustrezno kombinacijo na kombinatornih priključkih, kot kaže preglednica 3.2. X predstavlja poljubno stanje, ki je lahko visoko (1) ali nizko (0). Črka D pa predstavlja številko priključka, na katerega je vezan posamezni IR senzor.

Preglednica 3.2: Pravilnostna preglednica multiplekserja ADG408

A2 A1 A0 EN D namenjena odpiranju/zapiranju led diod z IR svetlobo. Izbrani modul, omogoča več različnih stanj (poleg zaprtja vseh ledic), ki so prikazana na sliki 3.10:

‐ prižig vseh IR diod (a),

‐ prižig lihih IR diod (b),

‐ prižig sodih IR diod (c).

Metodologija raziskave

35 Slika 3.10: Kombinacije prižiganja IR diod

Iz slike 3.10 je razvidno delovanje preklapljanja diod, ki ga izvedemo z nastavljanjem napetosti (3,3 V ali 0 V) na priključkih za soda in liha števila.

3.2.4 Preverjanje delovanja DC motorjev

Izbrani elektromotorji imajo reduktor. Prestavno razmerje med izhodno in vhodno gredjo je 1:29,86.

DC motorja lahko napajamo preko krmilnika ali preko baterije. Napetostni vir ima lahko vrednost do 6V. V naštem primeru je največja vrednost 3,7 V, t.j. napetost baterije, ki zadošča našim potrebam. Hkrati s preverjanjem delovanja elektromotorjev, preverjamo tudi dvojni H-mostič, preko katerega preklapljamo smeri vrtenja gredi in nastavljamo hitrosti na izhodu.

Čeprav programiramo v platformi Arduino IDE, je za zapisovanje analognih vrednosti na krmilniku ESP32 S2 postopek nekoliko drugačen. Analognega zapisa na priključkih elektromotorjev ne izvajamo s funkcijo AnalogWrite( ), temveč z uporabo sledečih funkcij:

‐ ledcSetup (spremenljivka, frekvenca, ločljivost),

‐ ledcAttachPin(priključek, spremenljivka),

‐ ledcWrite(spremenljivka, vrednost).

Pri tem je spremenljivka lahko poljubno celo število, priključek pa mora biti ustrezno izbran glede na električno shemo. Frekvenca vpliva na zveznost delovanja motorja. Za naš primer je ustrezno število 30 kHz. Ločljivost predstavlja bitno število, ki ga zapišemo na motor in lahko izbiramo od 8 do 12-bitega števila. V našem primeru je pri 8-bitnem številu najnižja napetost 0 (0 V), najvišja pa 255 (3,7 V, oziroma maksimalna napetost iz baterije). Ukaz zapisa napetosti na motorju prožimo s funkcijo ledcWrite( ), kjer prvi argument določa spremenljivko, na katero je vezan priključek motorja, drugi argument pa predstavlja 8-bitno vrednost napetosti.

Metodologija raziskave

36

3.2.4.1 Merjenje maksimalne kotne hitrosti koles

Na podlagi lastnosti kodirnikov in prestavnega razmerja DC motorjev, lahko štejemo obrate koles in posledično računamo kotne hitrosti izhodnih gredi motorjev. Z uporabo funkcije digitalRead(priključek_motorja, HIGH) lahko enostavno nastavimo največjo napetost na elektromotor. Preko izhodnih podatkov iz kodirnikov pa preračunamo kotno hitrost.

Dobimo, da znaša največja kotna hitrost koles približno 25 rad/s. Ta podatek upoštevamo pri programiranju uporabniškega vmesnika.

3.3 Razvoj robota v simulatorju Webots

Na podlagi razvitega mobilnega robota smo v simulatorju sestavili podobno napravo z enakimi lastnostmi.

3.3.1 Sestavljanje okolja in mobilnega robota v simulatorju

V simulaciji izberemo eno izmed obstoječih tem okolja. Dimenzije prostora lahko spreminjamo glede na potrebe. Robove okolja obdajajo zidovi. Na ta način se bo lahko robot premikal le znotraj našega prostora. Tla imajo obliko šahovnice, kar nam omogoča lažje zaznavanje gibanja robota.

Po nastavljanju parametrov okolja, smo se lotili sestavljanja mobilnega robota. Sestavili smo ga iz preprostih geometrijskih teles. V simulatorju je struktura mobilnega robota hierarhična in se deli na 4 glavne sklope:

‐ trup, ki je sestavljen iz vseh mirujočih elementov (IR senzorjev, baterije, krmilnika, modula za zaznavanje talne črte, DC motorjev, multiplekserjev in H-mostiča),

‐ kolesi (levo in desno),

‐ ležajna kroglica.

Glavni del trupa predstavlja PCB plošča, ki ima obliko kvadra. Na to smo dodali 2 kolesi.

Ti imata obliko cilindra, ki ju definiramo kot rotirajoča telesa (angl. HingeJoint). Za tretjo oporno točko smo dodali kroglo, ki se kotali v vse smeri. V realnem primeru bi krogla predstavljala ležajno kroglico.

Posplošen prikaz drevesne strukture naprave je prikazan na sliki 3.11. Vsaki komponenti določimo geometrijsko obliko in estetske lastnosti. V primeru, da nastopa več enakih komponent, nam program Webots omogoča definiranje oblike prve komponente. Pri ostalih pa lahko uporabimo isto obliko, ki je shranjena v programu.

Metodologija raziskave

37 Slika 3.11: Drevesna struktura komponent mobilnega robota

Vsaki komponenti smo določili položaj v našem okolju. Ta je določen glede na kartezični koordinatni sistem našega simulatorja. Izhodišče se nahaja točno v sredini prostora. Vsak lik ima v svojem središču tudi lasten koordinatni sistem. To nam pomaga pri diagnosticiranju napak. Med izvajanjem simulacije lahko označimo kolo in opazimo vrtenje njegovega koordinatnega sistema (kolesa). Preko tega ugotovimo smer vrtenja kolesa.

Slika 3.12 prikazuje model zasnovanega robota in njegov položaj glede na globalni koordinatni sistem. Gibanje robota poteka po ravni površini, zato bo njegova y- koordinata (višina) vedno enaka. Spreminjali pa se mu bosta koordinati z in x. Z- koordinata je predstavljena z modro puščico, x- koordinata pa z rdečo.

S primerjavo oblik med fizičnim in virtualnim modelom robota opazimo mnogo podobnosti.

Razdalja med kolesoma je v obeh primerih enaka. Ta je ključna za programiranje in primerjanje značilnosti robotov. Ostale komponente v simulatorju so poenostavljene s preprostimi geometrijskimi oblikami.

Slika 3.12: Mobilni robot v simulatorju

Metodologija raziskave

38

3.4 Programiranje uporabniškega vmesnika

Iz programskega okolja Arduino smo si izbrali nabor najbolj uporabljenih funkcij za krmiljenje mobilnega robota. Vsako izmed teh smo v Webots programu (angl. Controller) definirali in ji priredili ukaze iz simulatorja. S tem omogočimo uporabniku, da se za programiranje poslužuje zgolj Arduinovih funkcij. S kompleksnejšimi funkcijami iz okolja Webots ne bo imel stika, saj smo te pretvorili v enostavnejše.

3.4.1 Razvoj Arduinovih funkcij

Vse funkcije smo definirali v programskem okolju Webots. Programirali smo v programskem jeziku C++, ker iz tega izhajajo tudi Arduinove funkcije.

V Webots simulatorju ne vidimo električnih povezav med elementi, npr. povezave med krmilnikom in DC motorjem. Zaradi tega smo že vnaprej definirali priključke (angl. Pins) na katerih naj bi bili povezani motorji/senzorji.

Funkcije za izpisovanje podatkov na konzoli:

Serial.begin (baudRate): funkcija omogoča komunikacijo s konzolo iz simulatorja Webots. Argument funkcije je celo število, ki v našem primeru nima vpliva na hitrost komunikacije.

‐ Serial.print/ln (argument): funkciji sta namenjeni izpisu podatkov. Argument je lahko besedilo (navajamo ga med navednicami) ali pa katerakoli vrsta števila. Po ukazu println se bo naslednji argument izpisal v novo vrstico.

Časovne funkcije:

delay (milisekunde): funkcija predstavlja zakasnitev. V navedenem času, ki je v milisekundah bo program Webots miroval, oziroma ne bo izvajal ukazov.

millis/micros( ): funkciji vračata čas, ki je pretekel od zagona simulacije v Webots-u.

Funkcija millis vrača čas v milisekundah, medtem ko micros vrača mikrosekunde.

Funkcije za zapisovanje vrednosti:

analogWrite (številka_pina, vrednost): ena izmed najpomembnejših funkcij, saj preko te nastavljamo napetosti na motorjih. V prvem argumentu povemo funkciji na kateri priključek želimo dati napetost. V drugem argumentu pa povemo vrednost napetosti, ki se giblje med številoma 0 in 255. Ti dve števili predstavljata minimalno in maksimalno napetost, ki lahko prenesemo na motor. Razpon predstavlja 256 možnih vrednosti, po zgledu Arduinove 8 bitne kartice. V našem primeru vrednost 0 predstavlja mirovanje kolesa, vrednost 255 pa največjo kotno hitrost kolesa, ki znaša 25 rad/s.

digitalWrite (številka_pina, HIGH/LOW): fuknkcija, ki je skoraj enaka predhodno opisani analogWrite, samo da namesto 8-bitne vrednosti lahko pišemo le stanji HIGH (maksimalna napetost) ali LOW (ni napetosti). S to funkcijo določamo smer vrtenja posameznega kolesa.

Prekinitvene funkcije:

digitalPinToInterrupt (številka_pina): funkcija zajema le en argument: priključek, ki omogoča branje prekinitev.

attachInterrupt(digitalPinToInterrupt(številka_pina), funkcija_štetja, način_štetja): s to funkcijo lahko zajemamo število obratov posameznega kolesa. Funkcija sprejema 3 argumente. Prvi je klicanje priključka. Drugi kliče funkcijo štetja, ki se bo vklopila vsakič,

Metodologija raziskave

39 ko bo nastopila prekinitev. Zadnji argument nam v Arduinovih programih pove kdaj se bo prekinitvena funkcija sprožila. V našem primeru bo funkcija delovala le če zapišemo RISING, FALLING ali CHANGE.

Ostale funkcije:

pinMode (številka_pina, vhod/izhod): vsebuje dva argumenta. Najprej določimo število priključka, nato pa še tip priključka. Lahko je vhod (INPUT) ali izhod (OUTPUT).

constrain (število, spodnja_meja, zgornja_meja): zajema 3 parametre. Funkcijo uporabljamo v primerih, ko moramo omejiti izhodno vrednost z določenimi mejami, npr.

od 0 do 255. Funkcija vrača vneseno število, če to ne presega vrednosti nastavljenih mej, drugače vrne spodnjo ali zgornjo mejno vrednost.

3.4.2 Branje uporabniškega vmesnika v Webots programu

Uporabniški vmesnik deluje kot knjižnica, ki jo dodamo k programskemu okolju Webots.

Slika 3.13 prikazuje okolje v katerem lahko uporabnik programira mobilnega robota iz Webots simulatorja. Uporabniški vmesnik smo poimenovali Arduino.ino.

Slika 3.13: Uporabniški vmesnik

Vmesnik dodamo v Webots program na popolnoma enak način, kot se dodajajo knjižnice.

Program 3.1 prikazuje le glavni del programa, kjer kličemo funkciji setup in loop iz uporabniškega vmesnika. Ko poženemo simulacijo v simulatorju, se bo setup zanka izvedla le enkrat. Loop zanka pa se bo izvajala dokler ne bomo ustavili simulacije. V programu 3.1 imamo tudi dodatne nastavitve, ki se v tem primeru nanašajo na vrtenje koles in na delovanje senzorjev za pomik (kodirnikov) ter IR senzorjev. Uporabnik teh nastavitev ne spreminja, saj programira zgolj v uporabniškem vmesniku.

Metodologija raziskave

40

#include <Arduino.ino> //dodajanje vmesnika v program int main(int argc, char **argv) {

//notranje nastavitve senzorjev in aktuatorjev

right_wheel->setPosition(INFINITY);

left_wheel->setPosition(INFINITY);

right_wheel->setVelocity(0.0);

left_wheel->setVelocity(0.0);

right_encoder->enable(TIME_STEP);

left_encoder->enable(TIME_STEP);

while (my_robot->step(TIME_STEP) != -1) {

Program 3.1: Branje uporabniškega vmesnika v Webots programu

3.5 Mobilni robot in virtualna različica

Namen razvitega mobilnega robota je sposobnost gibanja po prostoru. Glede na ovire, ki se v tem nahajajo, pa naprava prilagaja hitrost in se tem izogiba. Robota lahko postavimo na poljuben položaj v prostoru. V simulatorju se bo robot začel premikati takoj ob zagonu simulacije. Realen primer pa je potrebno najprej prižgati s stikalom. Elektromotorje zaženemo s pritiskom na gumb BOOT, ki se nahaja na mikrokrmilniku. Obe napravi imata že določeno začetno translatorno hitrost: 10 cm/s. Kotna hitrost je nastavljena na ničto vrednost. Ob zaznavanju ovire v bližini, se naprava ustavi, nato izvede zasuk za 60° okoli osi motorjev. V primeru, da senzorji razdalje ne zaznajo več ovir v bližini, se bo naprava spet začela pomikati naravnost z začetno nastavljeno hitrostjo.

Primerjavo gibanja med realnim razvitim robotom in njegovo virtualno različico težko opravimo na primeru avtonomne vožnje po prostoru z ovirami. Zanesljive rezultate dobimo z analizo translatornega in rotacijskega gibanja obeh naprav.

Analiza virtualne različice mobilnega robota je enostavnejša, saj si pri merjenju časov in razdalj pomagamo z že obstoječimi orodji iz simulatorja Webots (beleženje položaja, natančne časovne meritve). Značilnosti realnega primera mobilnega robota preverimo z več preizkusi in meritvami.

Metodologija raziskave

41

3.5.1 Translatorno gibanje

Za preverjanje translatorne hitrosti smo si zamislili poligon z označenimi razdaljami.

Mobilnega robota smo sprogramirali tako, da vozi naravnost s tremi različnimi hitrostmi:

‐ 10 cm/s,

‐ 20 cm/s,

‐ 30 cm/s.

Merili smo čase, pri opravljenih razdaljah: 50 cm, 100 cm in 150 cm. Eksperiment je prikazan na sliki 3.14.

Slika 3.14: Preverjanje translatorne hitrosti robota

Na vsakem označenem mestu smo pri vsaki različni hitrosti izvedli 3 meritve kot prikazuje preglednica 3.3. Iz teh smo izračunali še povprečne čase (tpov).

Metodologija raziskave

42

Preglednica 3.3: Izmerjeni časi fizičnega robota pri vožnji naravnost hitrost

Preglednica 3.4: Izmerjeni časi virtualnega robota vožnji naravnost hitrost

Izmerjene vrednosti podane v preglednicah 3.3 in 3.4 so smiselne. Ob zagonu obeh naprav je njihova hitrost enaka ničti vrednosti. Robota (fizični in virtualni) začneta pospeševati dokler ne dosežeta referenčne hitrosti. Ko je ta cilj dosežen, pa se pomikata skoraj

enakomerno s konstantno hitrostjo naprej. Zaradi začetnega pospeševanja so časi nekoliko večji od pričakovanih.

Metodologija raziskave

43

3.5.2 Rotacijsko gibanje

Poleg translatorne hitrosti smo preverili tudi rotacijsko hitrost. Eksperimentalni postopek smo izvedli tako, da smo na napravah nastavili translatorno hitrost na ničto vrednost ter nastavljali kotno hitrost. Izbrali smo 3 različne hitrosti:

‐ π/2 rad/s (1/4 obrata/s),

‐ 2/3 π rad/s (1/3 obrata/s),

‐ π rad/s (1/2 obrata/s).

Merili smo čase, pri katerih je robot izvedel 10 obratov okoli osi motorjev, kot kaže slika 3.15.

Slika 3.15: Vrtenje robota okoli lastne osi

Meritve pri različnih hitrostih so podane v preglednici 3.5. Za vsako hitrost smo izvedli po tri meritve časa in nato izračunali srednjo vrednost (tpov) med njimi.

Preglednica 3.5: Izmerjeni časi fizičnega robota pri desetih obratih okoli osi motorjev ω [rad/s] t1 [s] t2 [s] t3 [s] tpov [s]

π/2 40,53 40,53 40,69 40,58

2/3 π 30,49 30,65 30,49 30,54

π 20,61 20,56 20,54 20,57

Podobno kot za primer translatorne hitrosti, smo v simulatorju Webots izmerili čase pri rotacijskem gibanju. Za vsako različno hitrost smo izmerili le po eno časovno vrednost, saj v simulatorju ne nastopajo razlike v ponovljivosti. Rezultati so prikazani v preglednici 3.6:

Preglednica 3.6: Izmerjeni časi virtualnega robota pri desetih obratih okoli osi motorjev ω

Metodologija raziskave

44

Pri opravljanju rotacijskega gibanja se kolesi na obeh robotih vrtita z enako hitrostjo v nasprotni smeri. Ob zagonu simulacije, ali motorjev na fizičnem robotu, začneta kolesi pospeševati dokler robot (virtualni/fizični) ne doseže željene hitrosti. Ko se to zgodi, začne naprava krožiti okoli osi motorjev s konstantno kotno hitrostjo. Idealne teoretične vrednosti, ki pa so v praksi nedosegljive, so v našem primeru:

‐ 40 s pri hitrosti π/2 rad/s,

30 s pri hitrosti 2/3 π rad/s,

20 s pri hitrosti π rad/s.

Čas, ki je potreben za doseganje željene hitrosti robota, je večji od teoreične vrednosti za približno 0,6 sekunde.

45

4 Rezultati in diskusija

Rezultat raziskovalnega dela je predstavljen na sliki 4.1, kjer sta zajeta trenutka gibanja robotov. Mobilna robota se razlikujeta po obliki. Simulator Webots omogoča uporabo enostavnih geometrijskij teles. Virtualna različica predstavlja zato poenostavljen fizični model. Glavne mere, ki služijo za računanje hitrosti robotov (radij koles in medosna razdalja med kolesoma) so v obeh primerih enake. Oba sestavljena robota sta široka približno 11 cm in segata v dolžino 13 cm.

Slika 4.1: (a) Realni primer mobilnega robota. (b) Virtualni primer mobilnega robota.

Rezultati in diskusija

46

Obe različici robota se gibljeta po prostoru po istem principu:

‐ vožnja naravnost do bližnje ovire,

‐ znižanje hitrosti na ničto vrednost,

‐ zasuk za 60° okoli lastne osi,

‐ preverjanje razdalje,

‐ vožnja naravnost do naslednje ovire.

Postopek se ponavlja v nedogled in omogoča avtonomno vožnjo obeh naprav. Zasuk pri mobilnemu robotu je določen na podlagi stalnega računanja odometrije. Obem napravam lahko prilagajamo krmilni algoritem glede na potrebe.

4.1 Primerjava programske kode

Vsak izmed mobilnih robotov (fizični in virtualni) vsebuje svojo datoteko s programsko kodo. To lahko spreminjamo v uporabniškem vmesniku ali v okolju Arduino IDE. Obe kodi temeljita na programskem jeziku C++. Izdelani uporabniški vmesnik povezuje funkcije iz simulatorja s funkcijami platforme Arduino. S tem lahko uporabnik posamezne odseke kode virtualnega robota enostavno prekopira in doda h programski kodi za realni primer robota.

Kljub uporabniškemu vmesniku, ki vsebuje večino funkcij iz Arduinove platforme, pa se programiranje fizičnega mobilnega robota razlikuje od programiranja virtualne različice:

‐ prekinitvene funkcije je v simulatorju potrebno klicati znotraj neskončne zanke loop() in ne v zanki setup().

‐ Zapisovanje napetosti na DC motorjih se v simulatorju izvede s funkcijo analogWrite(), v primeru realne naprave pa s funkcijo ledcWrite().

‐ V simulatorju lahko prožimo le eno prekinitveno funkcijo za vsak kodirnik.

‐ V simulatorju moramo zunanje funkcije (npr. funkcije za štetje pulzov iz kodirnikov) definirati pred zanko loop().

‐ Branje vrednosti senzorjev na krmilniku ESP, ki so povezani na priključke adc2, opravimo s funkcijo adc2_get_raw().

4.2 Primerjava translatornega in rotacijskega gibanja

Za primerjanje gibanj med mobilnim robotom in virtualno različico smo opravili 2 preizkusa.

Sprva smo merili translatorno hitrost robotov. Primerjali smo čase pri vožnji naravnost naprej ob dosegu razdalje 100 cm. Primerjava je prikazana na sliki 4.2. Iz grafa je razvidno, da se rezultati ujemajo pri vseh hitrostih (10 cm/s, 20 cm/s in 30 cm/s). Odstopanja realnega primera so zelo majhna in težko razvidna na grafu. Časovne vrednosti odstopajo za nekaj stotink sekunde.

Rezultati in diskusija

47 Slika 4.2: Primerjava translatornega gibanja mobilnega robota z virtualno različico

Na koncu smo izvedli primerjavo med rotacijskimi gibanji mobilnih robotov. Pri izbranih kotnih hitrostih (π/2, 2/3 π in π) se vrednosti skoraj popolnoma ujemajo kot kaže slika 4.3.

Slika 4.3: Primerjava rotacijskega gibanja mobilnega robota z virtualno različico

0

Čas pri desetih obratih okoli osi motorjev [s]

Kotna hitrost [rad/s]

fizični robot virtualni robot

Rezultati in diskusija

48

Iz grafov, ki jih prikazujeta sliki 4.2 in 4.3, je razvidno ujemanje med gibanji obeh naprav.

Med razlogi je vpliven krmilni algoritem PI, preko katerega računamo napetosti na motorjih.

Glede na to, da maksimalni hitrosti obeh sovpadata, sta tudi izhodni števili iz PI člena enaki.

49

5 Zaključki

V diplomski nalogi smo dokazali koristi simulacijskih orodij, ki jih lahko uporabimo za izobraževalne in raziskovalne namene.

1) Na podlagi izbranih komponent smo z uporabo programa KiCad EDA zasnovali tiskano vezje. Na to smo spajkali komponente in sestavili mobilni robot z diferencialnim pogonom. Napravi smo v okolju Arduino IDE napisali program za avtonomno vožnjo po prostoru.

2) Na podlagi razvitega mobilnega robota smo v simulatorju Webots zasnovali virtualni model naprave z enakimi lastnostmi. Za zagotavljanje skladnosti programskih kod, smo zasnovali uporabniški vmesnik, ki povezuje glavne funkcije simulatorja s funkcijami platforme Arduino.

3) Ugotovili smo, da z ustreznim uporabniškim vmesnikom omogočimo uporabniku lažje programiranje, učenje v simulatorju in aplikacijo osvojenega znanja na realnem primeru.

4) Ugotovili smo, da so odstopanja pri translatornem in rotacijskem gibanju med realnim razvitim robotom in njegovo različico zanemarljivo majhna. Odstopanja translatorne hitrosti segajo do največ ± 2,3%. Odstopanja kotne hitrosti med napravama pa segajo do največ ± 0,6%. Reaktivnost in delovanje obeh naprav sta enaka.

V celotni diplomski nalogi smo osvojili znanje iz področja mobilne robotike, razvoja vezja, postopka spajkanja in povezovanja elektronskih komponent. Spoznali smo simulacijsko okolje Webots in ga uporabili za simuliranje obnašanja robota v prostoru. Z razvitim uporabniškim vmesnikom smo okrepili znanje na področju programiranja v jeziku C++ in globlje spoznali funkcije iz platforme Arduino.

Predlogi za nadaljnje delo

V nadaljnem bi lahko izboljšali tiskano vezje s tem, da bi drugače razporedili položaj komponent na njem. Nekaterim izvrtinam bi spremenili dimenzije, npr. izvrtini namenjeni nosilcu za baterijo bi zmanjšali širino. Spemenili bi tudi električno vezavo komponent, s tem

Zaključki

50

da bi sprostili priključke adc2. S tem bi omogočili uporabo brezžične komunikacije z napravo. Poleg IR senzorjev za določevanje razdalje bi lahko uporabljali tudi senzorje za zaznavanje talne črte. V tem primeru bi bila potrebna uporaba zmogljivejšega mikrokrmilnika ali večjega dovoda električnega toka. Pri branju vrednosti iz vseh senzorjev se krmilnik ugaša in ponovno zaganja program. Dodatno bi lahko izboljšali krmilni algoritem za premikanje robota v prostoru.

51

Literatura

[1] N. Dey in A. Mukherjee, Embedded Systems and Robotics with Open Source Tools, CRC Press, 2018.

[2] T. Bräunl, Embedded robotics: Mobile robot design and applications with embedded systems, 3. izdaja, Springer, 2008.

[3] C. Jung, C. bae Moon, D. Jung, J. S. Choi in W. Chung, ''Design of test track for accurate calibration of two wheel differential mobile robots'', International Journal of Precision Engineering and Manufacturing, vol. 15, št. 1, 2014.

[4] K. Lee, C. Jung in W. Chung, ''Accurate calibration of kinematic parameters for two wheel differential mobile robots,'' Journal of Mechanical Science and Technology, vol. 25, št. 6, 2011.

[5] M. Ben-Ari in F. Mondada, ''Robotic Motion and Odometry'' v Elements of Robotics, Springer International Publishing, 2018, str. 63–93.

[6] P. Podržaj, Linearna teorija krmiljenja sistemov, Ljubljana: Fakulteta za strojništvo,

[6] P. Podržaj, Linearna teorija krmiljenja sistemov, Ljubljana: Fakulteta za strojništvo,