43
1 Ovim putem se iskreno zahvaljujem svojem mentoru, prof.dr.sc. Zoranu Vukiću, na iskazanom razumijevanju, potpori i poticanju na daljnji rad tokom cjelokupnog studija. Također se zahvaljujem višem asistentu doc.dr.sc. Nikoli Miškoviću na svakoj pomoći u zadnjih 4 godine te posebice na pomoći oko izrade diplomskog rada.

iskazanom razumijevanju, potpori i poticanju na daljnji ... · matematički model ronilice (njena kinematika, dinamika, i ostale karakteristike su objašnjene u trećem poglavlju

Embed Size (px)

Citation preview

1

Ovim putem se iskreno zahvaljujem svojem mentoru, prof.dr.sc. Zoranu Vukiću, na

iskazanom razumijevanju, potpori i poticanju na daljnji rad tokom cjelokupnog studija.

Također se zahvaljujem višem asistentu doc.dr.sc. Nikoli Miškoviću na svakoj pomoći u

zadnjih 4 godine te posebice na pomoći oko izrade diplomskog rada.

2

Sadržaj

1. Uvod .................................................................................................................................. 4

2. Bespilotna ronilica ............................................................................................................. 6

2.1. Seamor 300F ............................................................................................................... 6

2.2. Akustični daljinomjer (echosounder) .......................................................................... 7

3. Navođenje, upravljanje i navigacija plovila ...................................................................... 9

3.1. Struktura upravljanja ronilice ................................................................................... 10

3.1.1. Koordinatni sustav.............................................................................................. 10

3.2.2. Nelinearni model potisnika ................................................................................ 13

Aktuatori....................................................................................................................... 13

Alokacija aktuatora ...................................................................................................... 14

3.2.3. Dinamički model ronilice ................................................................................... 14

3.2.4. Kinematički model ronilice ................................................................................ 17

4. Regulator za praćanje morskog dna................................................................................. 18

4.1. Eksperimenti i simulacije u Matlab-u ....................................................................... 19

5. ROS ................................................................................................................................. 27

5.1. Istorazinska komunikacija ........................................................................................ 27

5.2. Višejezičnost ............................................................................................................. 28

5.3. Utemeljenost na alatima ............................................................................................ 28

5.4. Politika otvorenog koda ............................................................................................ 29

5.5. „Tanka“ tehnologija .................................................................................................. 29

3

5.6. Sustav datoteka ......................................................................................................... 29

5.7. Čvorovi ..................................................................................................................... 30

5.7.1. Čvor pošiljatelj ................................................................................................... 31

5.7.2. Čvor pretplatitelj ................................................................................................ 32

5.7.3. Regulator Node .................................................................................................. 34

Zaključak ............................................................................................................................. 35

Literatura ............................................................................................................................. 36

Sažetak ................................................................................................................................. 37

Summary .............................................................................................................................. 38

Popis oznaka i kratica .......................................................................................................... 39

Popis tablica ......................................................................................................................... 40

Popis slika ............................................................................................................................ 41

Privitak ................................................................................................................................ 43

4

1. Uvod

Duboko ispod morske površine leži svijet pun misterija koji zauzima 95% Zemljinog

živućeg prostora. Većina dubokog mora ostaje neistražena. Teško je zamisliti opasnije

mjesto od ledeno hladnog, potpuno mračnog i tlakom okruženog okoliša od dubokog mora.

Zahvaljujući novoj generaciji podvodnih vozila u mogućnosti smo sve više i dublje

istraživati morsku površinu.

Istraživanja nas sve češće vode u opasne dijelove morske površine, na teže dostupna

mjesta, u veće dubine te se time sve više istraživanja morske površine odvija bez

prisutnosti ljudske posade. Ronilice su općenito manjih dimenzija i sposobne su za gibanje

pod vodom. Ronilice se mogu podjeliti na bespilotne – UUV (eng. Unmanned Underwater

Vehicle), daljinski upravljane (s kablom) – ROV (eng. Remotely Operated Vehicle),

autonomne – AUV (eng. Autonomous Underwater Vehicle), te pridnene – URV (eng.

Underwater Robotics Vehicle) ronilice.

Slika Error! No text of specified style in document.1.1. Istraživanje morskog dna

5

U diplomskom radu bilo je potrebno realizirati algoritam praćenja morskog dna za

daljinski upravljanju bespilotnu ronilicu Seamor. Mjerenja udaljenosti od morskog dna su

nam bila dostupna iz akustičkog daljinomjera (engl. echosounder) koji je dostupan na

ronilici. Korištenjem postojeće komunikacijske strukture temeljene na ROS-u,

implementirali smo algoritme praćenja morskog dna. Korišteni algoritmi i struktura

realizacije upravljačkog programa su detaljno dokumentirani u sklopu ovog rada.

U drugom poglavlju su opisane karakteristike i svojstva bespilotnih ronilica, te konkretno,

ronilice Seamor 300 F sa njenom pripadajućom opremom. Struktura upravljanja ronilicom,

matematički model ronilice (njena kinematika, dinamika, i ostale karakteristike su

objašnjene u trećem poglavlju ovog rada. U četvrtom poglavlju je objašnjen regulator za

praćenje morskog dna, prikazane su simulacije rada regulatora te razlike između korištenja

P i PI regulatora. Postojeća komunikacijska struktura temeljena na ROS-u te

implementacija algoritma za praćenje morskog dna je pojašnjena u petom poglavlju. U

petom poglavlju je također detaljno objašnjen princip rada sustava ROS.

6

2. Bespilotna ronilica

Daljinski upravljana ronilica (ROV) je podvodno vozilo kojim operater sa površine

upravlja putem kabela. Koriste se u svrhu obavljanja raznovrsnih podvodnih zadataka koje

je lakše ili sigurnije izvesti bez prisutnosti čovjeka tj. ronioca. Prema svojoj veličini

dijelimo ih na mikro i mini ROV-ove.

Da bi podvodni roboti mogli ispunjavati svoje zadatke konstruirani su od pogonskih

motora sa elisama koji pokreću vozilo pod vodom u svim pravcima. Robot ronilica

opremljena je kamerama, rasvjetom te prema potrebama raznim senzorima i alatima (GPS,

sonar, mehanička ruka, uređaji za testiranje metala ili anoda).

Čitav sustav se kontrolira kompjuterski i pomoću elektronskih sklopova, koji skupljaju,

organiziraju te šalju preko kabela podatke na površinske kontrolne jedinice.

S razvojem tehnologije, pogotovo u zadnjih 10 godina, napredak i primjena ronilica u

svijetu se jako proširila. Podvodna vozila na daljinsko upravljanje danas se upotrebljavaju

iz ekonomskih i praktičnih razloga.

U sklopu rada koristili smo ronilicu Seamor 300F.

2.1. Seamor 300F

Seamor 300F (Slika 2.1.) pripada skupini mini ROV-a te služi za mnogobrojna podvodna

istraživanja i ispitivanja. Kao sastavni dio ronilice, nalazi se i upravljačka kutija, pomoću

koje se upravlja ronilicom. U kontrolnoj kutiji nalazi se LCD monitor te DVR (eng. Digital

video recorder), koji omogućuje snimanje video zapisa s visokokvalitetne digitalne

kamere. Zahvaljujući sonaru i 3D sustavu za pozicioniranje i praćenje, pozicija ronilice je

uvijek poznata bez obzira na uvjete u vodi (npr. mutna voda koja prouzrokuje slabiju

vidljivost). Ovo svojstvo je izuzetno dobro za inspekcijske operacije.

7

Slika Error! No text of specified style in document.2.1. Seamor 300 F

2.2. Akustični daljinomjer (echosounder)

NavQuest DVL (eng. Doppler Velocity Logs) je idealan za preciznu navigaciju i

pozicioniranje podvodnih plovila. Zbog svojeg brzog i preciznog davanja pozicije plovila,

lagane težine, znatno dužeg raspona i manje minimalne udaljenosti, NavQuest DVL je

idealan izbor za određivanje pozicije plovila.

DVL sa svojim ugrađenim internim kompasom, te senzorima za nagibanje i valjanje

posjeduje mogućnost nadgledanje trenutne brzine i dubine. Zbog jednostavne integracije

pogodan je za korištenje na raznim podvodnim platformama.

DVL se može koristiti kod navigacije AUV na većim dubinama, navigacije AUV u plitkim

vodama, održavanje pozicije ROV, nadziranje trenutne brzine ROV, navigacije

podmornice i ronioca.

Kod ronilice Seamore koristimo model DVL-NavQuest 600 P Micro (LinkQuest).

LinkQuest je podvodni bežični (akustički) modem koji omogućuje komunikaciju nekog

8

uređaja pod vodom s drugim, udaljenim uređajem, koji se nalazi na površini vode (na

plovilu, platformi i sl.). Na slici 2.2. se nalazi DVL-NavQuest 600 P Micro.

Slika 2.2. DVL-NavQuest 600 P Micro

Udaljenost od morskog dna mjerimo pomoću akustičnog daljinomjera (eng. echosounder)

koji se nalazi na DVL-u.

Na slici 2.3. se nalazi DVL-NavQuest 600 P Micro.

Slika 2.3. Echosounder

9

3. Navođenje, upravljanje i navigacija plovila

Pomorska navigacija je proces određivanja položaja na moru (u geografskim

koordinatama), te korištenja tog znanja kako bi se sigurno plovilo prema zadanom cilju.

Bitne informacije za navigaciju su pozicija broda, podaci o brzini, kursu i prevaljenoj

udaljenosti, poznavanje vremenskih uvjeta na ruti, koordinate željenog cilja.

Vođenje plovila podrazumijeva akciju ili sustav koji kontinuirano proračunava referentnu

(željenu) poziciju, brzinu i akceleraciju plovila koje koristi sustav upravljanja. Ovi podaci

su obično dati operateru i navigacijskom sustavu.

Upravljanje plovilom predstavlja određivanje potrebnih sila i momenata koje plovilu

omogućavaju postizanje određenog cilja kao na primjer minimum energije, regulacija

prema postavljenoj veličini, praćenje trajektorije, slijeđenje putanje itd.

Slika 3.1. Struktura navođenja, upravljanja i navigacije ronilice

10

3.1. Struktura upravljanja ronilice

Na slici 3.2. vidimo da se model ronilice može rastaviti na tri međusobno povezana dijela:

nelinearna karakteristika upravljačkog uređaja (to je uobičajeno kormilo ili potisnici),

kinematika i dinamika ronilice (ovi dijelovi opisuju karakteristike samog tijela).

Slika 3.2. Načelna shema upravljanja bespilotnim ronilicama (ROV-om)

3.1.1. Koordinatni sustav

Za definiranje matematičkog modela Seamor ronilice potrebno je definirati dva

koordinatna sustava: koordinatni sustav vezan za Zemlju {E} koji je nepokretan, miran i

često se zove inercijski koordinatni sustav (slika 3.2.); i drugi vezan za ronilicu {B}, a

ishodište mu se obično nalazi u centru mase – CG (eng. Center of gravity) ronilice, često

zvani i mobilni koordinatni sustav. Inercijski koordinatni sustav je opisan s tri osi: N (u

smjeru sjevera), E (u smjeru istoka) i D (u smjeru prema dolje) tako da je NED pozitivno

orijentiran koordinatni sustav. Mobilni koordinatni sustav je opisan s tri osi x, y i z koje su

usmjerene kao i osi NED sustava kada su x i N poravnati. Koordinatne osi {E} i {B} se

međusobno poklapaju, te su odabrane prema pravilu desne ruke.

11

Slika 3.3. Inercijski koordinatni sustav

Na slici 3.4. su prikazani koordinatni sustav Zemlje i koordinatni sustav ronilice Seamor.

Slika 3.4. Definirani koordinatni sustavi

12

Varijable uključene u matematički model su linearne i kutne brzine, pozicija, orijentacija te

sile i momenti koje pokreću plovilo. Sve ove varijable su također prikazane na slici 3.4. U

tablici 1. dan je popis svih varijabli s njihovim nazivom karakterističnim za podvodna

plovila.

Tablica 3.1. Varijable matematičkog modela ronilice

surge sway heave roll pitch yaw definiran u

brzine u v w p Q r {B}

pozicije i kutevi x y z φ Θ ψ {E}

sile i momenti X Y Z K M N {B}

Vektor η definira položaj ronilice koristeći varijable pozicije i orijentacije definirane u

Zemaljskom koordinatnom sustavu {E}.

[ ]T (3.1)

Vektor ʋ definira linearne i rotacijske brzine u koordinatnom sustavu ronilice.

[ ]T (3.2)

Gibanje sustava se ostvaruje pod utjecajem tri vanjske sile (u smjeru svake koordinatne

osi) te tri momenta (oko svake koordinatne osi) koji zajedno tvore vektor ԏ koji ima

sljedeći oblik :

[ ]T (3.3)

Osnovni matematički model platforme može se prikazati rastavljen na nekoliko dijelova

koji su prikazani slikom 3.5. To su blokovi koji opisuju aktuatore te njihovu alokaciju

(nelinearni model potisnika), a zatim slijede blokovi za dinamiku i kinematiku platforme.

13

Slika 3.5. Blok dijagram matematičkog modela

3.2.2. Nelinearni model potisnika

Aktuatori

Aktuatori, odnosno izvršni organi pretvaraju upravljačke signale u fizikalne veličine kao

što su npr. za plovila potisak propulzora ili otklon kormila. Naziva ih se još pokretačkim

uređajima. Pokretački uređaji Seamor ronilice su propulzori (propeleri) i to njih četri.

Na slici 3.5., sa ԏi je označen zapovjeđeni potisak za svaki pokretač (i=1,…,m) gdje m

označava broj pokretača (u konkretnom slučaju m=4). Kako se potisnik i rotira, proizvodi

potisak τi i moment q

i koji se opisuju sljedećim jednadžbama:

(3.4)

(3.5)

gdje je ni (upravljački signal) zadana brzina okretaja propelera, a , , ,

, su pozitivni koeficijenti zadani karakteristikama propelera. Parametar ua se zove

okolna brzina vode. Jednostavniji model je zadan jednadžbom:

| |

(3.6)

gdje donji indeksi f i b označavaju 'naprijed' (‘forward’) i nazad (‘backward’) a gornji

indeksi i={portstbd}. Jednostavniji model može biti izveden ukoliko se zanemari okolna

brzina vode. Ovaj model je više primjenjiv u praksi, posebno pri niskim brzinama. Ukoliko

zanemarimo linearni dio modela (bf ni = 0) dolazimo do afinog modela.

14

Alokacija aktuatora

Alokacija aktuatora je postupak pretvaranja signala regulatora u potrebne sile i momente

kako bi se dobila potrebna ukupna sila i moment na plovilo. Ova veza između dviju vrsta

sila najčešće se opisuje alokacijskom matricom čije dimenzije ovise o broju aktuatora i

broju stupnjeva slobode gibanja. Pomoću matrice alokacije i vektora zapovijedanih

potisaka, mogu se izračunati tri sile (X, Y, Z tj. sile u smjeru osi apscisa, ordinata i

aplikata) te tri momenta (K, M, N tj. momenti u pozitivnom smjeru rotacije oko osi

apscise, ordinate i aplikate). Sve sile i momenti su po pravilu desne ruke. Nazivi pojedinih

sila i momenata su:

X – sila napredovanja (eng. Surge force)

Y – sila zanošenja (eng. Sway force)

Z – sila poniranja (eng. Heave force)

K – moment valjanja (eng. Roll moment)

M – moment poniranja (eng. Pitch moment)

N – moment zaošijanja (eng. Yaw moment)

Ronilica SeaMor 300F sadrži dva vertikalna i dva horizontalna aktuatora. Zapovjedni

potisci su τ1, τ

2, τ

3, τ

4, a kutevi pod kojim su potisnici postavljeni su označeni sa δ.

Pozitivan smjer vrtnje je postavljen u smjeru kazaljke na satu.

Iz [8] zaključujemo da alokacijska matrica poprima sljedeći oblik:

[

] [

] [

] (3.7)

3.2.3. Dinamički model ronilice

Matematički model podvodnih vozila je izrazito spregnut i nelinearan. Opća dinamička

jednadžba za podvodna vozila dana je sa (3.8).

( ) ( ) ( ) (3.8)

15

Matrica M = MRB + MA predstavlja zbroj matrice masa čvrstog tijela i matrice dodanih

masa. Matrica D(ν) je matrica otpornosti, koja je dijagonalna i uobičajeno ima linearne i

kvadratne elemente. Matrica C(v) = CRB(v) + CA(v) predstavlja sumu matrica Coriolisovih

sila čvrstog tijela i dodane mase, vektor g predstavlja gravitacijske i sile uzgona, vektor τ

sastoji se od vanjskih sila i momenata koje djeluju na podvodno vozilo i τd je vektor

poremećaja.

MRB, matrica inercije krutog tijela, ima sljedeći oblik:

[ ( )

( ) ] (3.9)

, gdje m označava masu plovila, rG centar gravitacije definiran u {B}. Centar gravitacije

iznosi:

[

] (3.10)

I0 je tenzor inercije i iznosi:

, gdje Ix , Iy i Iz označavaju momente inercije oko odgovarajuće koordinatne osi, dok Ixy, Iyz

i Ixz označavaju produkt inercije.

Coriolisova i centripetalna matrica krutog tijela, CRB, poprima sljedeći oblik :

16

ԏRB je poopćeni vektor sila i momenata te uključuje sljedeće sile i momente:

MAv' - sile i momenti dodane mase krutog tijela

CA(v)v - sile i momenti dodane masa zbog Coriolisove sile

D(v)v - sile i momenti hidrodinamičkog prigušenja i uzgona

g(η) - obnavljajuće sile i momenti

τ - vanjski utjecaji

τd - izlaz iz alokacije aktuatora

Ovi elementi tvore jednadžbu sila i momenata krutog tijela koja ima oblik :

( ) ( ) ( ) (3.13)

Sile i momenti dodane mase nastaju zbog gibanja vozila kroz fluid, tj. efekt dodane mase

se javlja prilikom harmonijskog gibanja tijela pod vodom i proporcionalan je akceleraciji

vozila. Prigušena matrica D(v) je veoma kompleksna i ima nelinearnu zavisnost. Međutim,

ova matrica može biti aproksimirana sa dijagonalnom strukturom koristeći samo linearne i

kvadratne prigušujuće termine. Obnavljajuće sile i momenti se javljaju zbog razlike u

iznosu, smjeru i hvatištu sile teže i sile uzgona. Neka je težina oznaĉena sa W i djeluje u

centru mase ( ), a sila uzgona sa B te djeluje u ( ), s obzirom na {B}.

Izraz za g(η) je:

17

je svaki oblik vanjske smetnje koje utjeću na plovilo. Razlog smetnji kod podvodnih

vozila su najĉešće valovi, morske struje i sl. Sile su nelinearne i teško se modeliraju, zato

se pri modeliranju najĉešće zadaju kao konstante. Sile su podrobnije objašnjene u

prijašnjem poglavlju 3.2.2. Nelinearni model potisnika.

3.2.4. Kinematički model ronilice

Kinematički model daje vezu između brzina u koordinatnom sustavu vezanom za plovilo

{B} i prve derivacije pozicije i kuteva μ u Zemljinom koordinatnom sustavu {E}.

Jednadžbe koje opisuju tu vezu za svih šest stupnjeva slobode su:

O3x3 označava nul-matricu veličine 3x3, J1 i J2 su također matrice veličine 3x3. Matrica J1

opisuje ovisnost derivacije položaja o unaprednim brzinama, dok J2 opisuje ovisnost

derivacije kutova o rotacijskim brzinama. Izrazi za J1 i J2 su dani u nastavku:

18

4. Regulator za praćanje morskog dna

Regulator za praćenje morskog dna ima zadaću da održava fiksnu udaljenost iznad

željenog područja čije karakteristike mogu ili ne moraju biti poznate. U tom slučaju,

operacijska varijabla je udaljenost koju ronilica mora održavati iznad morskog dna i

predstavlja interakciju između ronilice i okruženja u kojem ronilica djeluje.

Udaljenost do morskog dna mjerimo pomoću akustičnog daljinomjera. Na Slici 4.1. su

prikazane operacijske varijable kod praćenja morskog dna.

Slika 4.1. Operacijske varijable kod praćenja morskog dna

U generalnom slučaju prikazanom na Slici 4.1. pretpostavljamo da se ronilica kreće

linearno u smjeru napredovanja tj. linearna brzina napredovanja je različita od nula (ua ≠

0), a linearna brzina zanošenja je jednaka nula (va = 0). Ako lokalni nagib morskog dna u

smjeru gibanja ronilice označimo s α, a udaljenost od morskog dna s h, tada je njena prva

derivacija jednaka (4.1):

(4.1)

gdje je: α iz skupa (

).

19

4.1. Eksperimenti i simulacije u Matlab-u

Na slici 4.1. je prikazan model sustava za regulaciju udaljenosti od morskog dna. u

programskom paketu Matlab. U modelu na priloženoj slici koristimo PI regulator i tri

različite estimacije morskog dna (funkcije sinus, rampa i step). Tokom eksperimenta,

ronilici je zadano da održava razmak od 1.5 m iznad morskog dna krečući se brzinom

napredovanja od 0.5 m/s dolje – gore prateći površinu morskog dna.

Slika 4.2. Model sustava za regulaciju udaljenosti od morskog dna

Parametre regulatora smo izračunali tako da smo u skripti u Matlab-u izvrtili for petlju u

kojoj smo simulirali model sa razlilčitim vrijednostima parametra regulatora, nacrtali

odzive i usporedili sa referentnim odzivom. Na slikama 4.3. i 4.4. vidimo rezultate

simulacija.

20

Slika 4.3. P regulator sa različitim vrijednostima parametara

Slika 4.4. PI regulator sa različitim vrijednostima parametara

Iz izvršenih eksperimenata i simulacija u Matlab-u, vidimo da bolji odziv dobivamo kada

koristimo PI regulator.

21

Slika 4.5. Usporedba odziva P i PI regulatora

Slika 4.6. Povećana usporedba odziva P i PI regulatora

Korištenjem PI regulatora suzbijamo poremećaje nastale u stacionarnom stanju zbog

interakcije između ronilice i okoliša u kojem se eksperiment vrši. U slučaju korištenja P

regulatora stacionarno stanje praćenja pogreške se pojavljuje kada ronilica prelazi preko

kosog morskog dna.

22

Na sljedećim simulacijama na kojima je nacrtana referentna putanja (koja predstavlja

morsko dno) i putanja održavanja zadanog razmaka između ronilice i morskog dna

(putanja ronilice) možemo vidjeti odzive kod korištenja PI regulatora sa različitim

pobudama.

Izbor pojačanja regulatora Kp

Iz sljedećih odziva odabiremo koeficijent pojačanja Kp = 100 budući da za njega imamo

zadovoljavajući odziv. Većim koeficijentom imamo minimalno pojačanje odziva, no velik

porast izlaznog signala regulatora.

Slika 4.7. Odziv sustava s PI regulatorom sa različitim koeficijentima pojačanja Kp

23

Slika 4.8. Odziv sustava s PI regulatorom za različite koeficijente pojačanja Kp

Morsko dno je u obliku: step funkcije

Na slici 4.9. možemo usporediti krivulje dubine ronilice po kojoj se kreće sa krivuljom

morskog dna. Vidimo da ronilica održava dobru udaljenost od morskog dna tj. ronilica se

kreće zadanih 1.5 m iznad morskog dna.

Slika 4.9. Usporedba odziva ronilice sa krivuljom morskog dna

Na slici 4.10. je prikazana razlika između referentne krivulje (krivulja morskog dna manje

udaljenost od 1.5 m) i dubine ronilice.

24

Slika 4.10. Razlika između referentne krivulje i dubine ronilice

Morsko dno je u obliku: rampa funkcije

Na slici 4.11. možemo usporediti krivulje dubine ronilice po kojoj se kreće sa krivuljom

morskog dna. Vidimo da ronilica održava dobru udaljenost od morskog dna tj. ronilica se

kreće zadanih 1.5 m iznad morskog dna.

Slika 4.11. Usporedba odziva ronilice sa krivuljom morskog dna

25

Na slici 4.12. je prikazana razlika između referentne krivulje (krivulja morskog dna manje

udaljenost od 1.5 m) i dubine ronilice.

Slika 4.12. Razlika između referentne krivulje i dubine ronilice

Izbor pojačanja Ki

Na temelju sljedećih odziva smo izabrali Ki = 0.01.

Slika 4.13. Odziv sustava s PI regulatorom sa različitim koeficijentima pojačanja Ki

26

Slika 4.14. Odziv sustava s PI regulatorom sa različitim koeficijentima pojačanja Ki

27

5. ROS

Algoritime praćenja morskog dna potrebno je implementirati korištenjem postojeće

komunikacijske strukture temeljene na ROS-u (eng. Robot Operating System). ROS

koristimo da omogućimo komunikaciju između računala i ronilice kako bi slali/primali

podatake na računalo/ronilicu.

ROS pruža i omogućava korištenje raznih programskih alata za stvaranje robotskih

aplikacija. Također omogućava sklopovsku apstrakciju, vizualizaciju, slanje poruka,

upravljanje paketima, nisku razinu upravljanja uređajima, paralelno izvođenje programa

itd. On nije operacijski sustav u tradicionalnom smislu upravljanja i planiranja, već pruža

strukturirani komunikacijski sloj.

Najvažnije osobine ROS-a smatraju se višejezičnost, jednostavnost, istorazinska

(ravnomjerna) komunikacija, slobodan i otvorenog koda projekt, temeljen na alatima.

Valja napomenuti da do sada niti jedan razvijeni programski okvir ne posjeduje sve ove

osobine u jednom.

5.1. Istorazinska komunikacija

Sustav izgrađen korištenjem ROS-a sastoji se od niza procesa smještenih na različitim

računalima (eng. hosts). Iako se okviri temelje na komunikaciji sa centralnim poslužiteljem

(eng. server) i mogu ostvariti prednosti posluživanja sa više procesa, kod centralnog

podatkovnog poslužitelja mogu nastati problemi, ako su kompjuteri spojeni u istorazinsku

strukturu. Također pomoću tog načina komunikacije se izbjegava tzv. usko grlo (eng.

bottleneck). Ukoliko su računala povezana u mrežu više mrežnih protokola (eng.

heterogeneus network) tada središnji podatkovni poslužitelj može imati problema s

objavljivanjem/primanjem podataka. Slika 5.1. prikazuje topologiju istorazinske

komunikacije. Istorazinska komunikacija zahtjeva neki od mehanizma pretraživanja (eng.

master) kako bi se tokom vremena izvođenja razni procesi mogli međusobno naći.

28

Slika 5.1. Istorazinska komunikacija

5.2. Višejezičnost

ROS je jezično neutralan kako bi olakšao korištenje sustava što većem broju korisnika.

Podržava rad sa C++, Phyton, Octave te LISP. Rad sa ostalim programskim jezicima je još

uvijek u razvoju. Za podršku višejezičnog razvoja, ROS koristi jezične neutralnosti jezika

za definiranje sučelja – IDL (eng. Interface Definition Language) te na taj način opisuje

poruke poslane između modula. IDL koristi kratke tekstualne datoteke kako bi se opisalo

područje određene poruke i omogućilo slaganje poruke. Generatori koda za svaki određeni

jezik generiraju izvorne implementacije te ih ROS automatski serijalizira (eng. serialize) i

deserijalizira (eng. deserialize) prilikom slanja i primanja poruka. Krajnji rezultat ovih

osobina je da je ROS sustav jezično neutralan gdje različiti programski jezici mogu biti

mješani i kombinirani po želji.

5.3. Utemeljenost na alatima

U želji da se upravlja kompleksnošću ROS-a, odabran je mikrokernel dizajn, gdje je velik

broj malih alata korišten za izgradnju i pokretanje različitih komponenti ROS-a. Ti alati

29

služe za stvaranje i pokretanje ROS dijelova, navigaciju kroz sustav, grafički prikaz slanja

poruka, vizualizaciju topografije istorazinske povezanosti, postavljanje i dohvaćanje

vrijednosti konfiguracijskih parametara, mjerenje propusnosti (eng. bandwidth), te

automatsko generiranje dokumentacije.

5.4. Politika otvorenog koda

ROS kod je u potpunosti dostupan javnosti. Ima BSD dozvolu koja omogućuje razvoj

komercijalnih, ali i nekomercijalnih projekata. ROS šalje podatke između modula koristeći

međuprocesorku komunikaciju, te ne zahtjeva povezanost modula unutar istog programa u

izvedbenom obliku (eng. executables). Jasna odvojenost modula izbjegava

„kontaminiranje“ dozvole.

5.5. „Tanka“ tehnologija

Mnoge programske podrške za robote sadrže programe koji se mogu koristiti i izvan

projekta za koji su rađeni, ali to je često dosta komplicirano. U ROS-u se koriste

standardne biblioteke za sve algoritme i uređaje. Građa ROS sustava se provodi modularno

unutar stabla izvornog koda. Korištenje CMake-a omogućuje usporedno lagano praćenje

„tanke“ tehnologije. Sva složenost i kompleksnost se nalazi unutar biblioteka, dok se

funkcionalnosti iznose u ROS preko malih programa u izvedbenom obliku. ROS olakšava

testiranje jedinica, izvlačenje koda te ponovno korištenje postojećih biblioteka (OpenCV,

PCL, OpenRAVE, itd.) bez obzira na njihovu prvotnu primjenu. ROS se koristi samo za

izlaganje različitih konfiguracijskih opcija i za usmjerenje podataka unutar i izvan

programa, sa što manje moguće pakiranja i zakrpa. ROS može automatski osvježiti izvorni

kod iz vanjskih datoteka, prihvatiti izmjene itd.

5.6. Sustav datoteka

Osnovni sastavni dijelovi ROS-a su: paketi, manifesti, stogovi i manifest stogova.

30

Paketi pripadaju najnižoj razini u sustavu ROS-a. Takozvani otvoreni (eng. open-ended)

direktorij koji može sadržavati alate, biblioteke, programe u izvedbenom obliku te može

sadrža vati proizvoljno složenu strukturu poddirektorija. Unutar direktorija paketa postoji

manifest.xml datoteka po kojoj se zna da se nalazimo upravo unutar paketa. Ta XML

datoteka sadrži opis paketa i navodi njegove zavisnosti. Otvorenost ROS paketa

omogućuje brojne mogućnosti u njihovoj strukturi i namjeni. ROS paket može sadržavati

proizvoljno složenu strukturu poddirektorija. Ovaj paketni sustav znači podjelu programa

temeljenih na ROS-u, na manje praktične dijelove, gdje svaki može biti održavan i razvijan

po posebnoj proceduri i od određenog tima ljudi.

Manifest opisuje paket. Njegova najvažnija uloga jest definiranje ovisnosti između

različitih paketa.

Stog je skup paketa koji tvori biblioteku više razine. Unutar direktorija stoga postoji

stack.xml datoteka po kojoj se zna da se nalazimo upravo unutar stoga.

Manifest stogova je isto što i običan manifest, ali za stog.

5.7. Čvorovi

Čvorovi su individualni programi sa izvedbenim kodom koji predstavlja funkcionalnu

jedinicu. Čvorovi koriste ROS kako bi mogli komunicirati sa ostalim čvorovima koji su

povezani preko središnjeg dijela ROS-a koji se naziva „Master“.

Korištenje čvorova u ROS-u nudi nekoliko prednosti u ukupnom sustavu. Postoji dodatna

tolerancija na kvarove s obzirom da je rušenje rada sustava izoliran na individualni čvor.

Složenost koda je smanjena u odnosu na monolitične sustave.

Čvorovi mogu slati, tj. objaviti poruku predmetu, ali i pretplatiti se na predmet kako bi

mogli primati poruke od njega. Svaki čvor posebno može biti pokretan, prevođen i

zaustavljan. Komunikacija između čvorova ostvarena je slanjem poruka između čvorova.

Kako bi komunikacija bila valjana, pretplatitelj i pošiljatelj moraju primiti tj. slati istu vrstu

poruke. Svaki čvor je pretplaćen na neki predmet i/ili šalje određene podatke predmetu.

31

Naredbom rosnode izlistavamo sve informacije vezane uz čvor te sve čvorove koji su

trenutno aktivni. Prije bilo kakvog rada i komunikacije potrebno je pokrenuti ROS. Za to

služi naredba roscore koja mora biti zapisana u zasebnom CMD terminalu. Ovom

naredbom se pokreće glavni čvor. Ostali čvorovi pokreću se naredbom rosrun. Ovisno o

broju čvorova koji se nalaze u sustavu, svaki od njih se mora otvoriti u zasebnom CMD

terminalu. Kako bi saznali koliko čvorova je pretplaćeno na predmet te koliko ih objavljuje

podatke predmetu koristi se naredba rostopic list. Ovom naredbom nam se prikazuju

predmeti koje su čvorovi objavili ili na koje su pretplaćeni. Pored svakog predmeta je

ispisan broj čvorova koji objavljuju tu poruku predmetu ili broj čvorova koji su pretplaćeni

na taj predmet. Vrsta predmeta je definirana vrstom poruke koje je objavljena od

pošiljatelja. Čvor šalje poruku predmetu pomoću naredbe rostopic pub.

5.7.1. Čvor pošiljatelj

Prvo je potrebno inicijalizirati čvor pomoću naredbe:

ros::init(argc, argv, "talker");

Treći argument u ovoj naredbi je ime čvora. Kako bi čvor u potpunosti bio inicijaliziran,

koristi se NodeHandle funkcija.

ros::NodeHandle n;

Prvi stvoren NodeHandle će u potpunosti inicijalizirati čvor, a posljednji poništen

NodeHandle će zatvoriti sve izvore koje je čvor ikad koristio. Funkcijom advertise()

se signalizira ROS-u da čvor želi objaviti poruku određenom predmetu. Istovremeno se

objavljuje poziv i glavnom čvoru („Master-u“), koji onda bilježi i čuva tko objavljuje

poruku, a tko je pretplaćen na tu poruku. Nakon što je poziv uspostavljen, glavni čvor će

obavijestit sve one čvorove koji su pretplaćeni na tu određenu poruku predmeta. Potom će

ti čvorovi uspostaviti istorazinsku (eng. Peer-to-peer) komunikaciju s čvorom koji

objavljuje poruku. Funkcija advertise() vraća objekt pošiljatelja koji omogućuje

objavljivanje poruke na predmet preko poziva publish(). Jednom kad sve kopije

vraćenih objekata pošiljatelja ponište, predmet će se automatski prestati oglašavati. Prvi

parametar funkcije advertise() je ime predmeta, a drugi parametar je broj poruka

32

koje stanu u spremnik prije nego li se starije poruku počnu brisati. Ovaj spremnik je bitan

ukoliko se poruke objavljuju puno brže nego što ih je moguće poslati.

ros::Publisher chatter_pub =

n.advertise<std_msgs::String>("chatter", 1000);

<std_msgs::String> -> Definira tip poruke koja se šalje.

Kod publish() funkcije bitno je da vrsta poruke koja se šalje bude jednaka kao i kod

funkcije advertise(). Sljedećom naredbom šalje se poruka ROS-u, tj. svim čvorovima

koji su pretplaćeni na tu poruku.

chatter_pub.publish(msg);

Moguće je uspostaviti povratni poziv i to pomoću naredbe:

ros::spinOnce();

Ova naredba označava i ulazak u petlju unutar koje se objavljuju poruke frekvencijom koju

zadajemo naredbom:

ros::Rate loop_rate(10);

Funkcija pošiljatelja se u kratko može zapisati kroz sljedeća tri koraka:

Inicijalizacija čvora

Objava slanja poruke određenog tipa na određeni predmet

Vrti se u petlji i objavljuj poruke u predmet određenom frekvencijom

5.7.2. Čvor pretplatitelj

Kao i kod pošiljatelja prvo je potrebno inicijalizirati čvor te omogučiti potpunu

inicijalizaciju te poništenje čvora. Funkcijom subscribe() se signalizira ROS-u da

čvor želi primati poruku određenog predmeta. Ovim se šalje i poziv glavnom čvoru

(„Master-u“), koji onda bilježi i čuva tko objavljuje poruku, a tko je pretplaćen na tu

poruku. Poruke se prosljeđuju funkciji povratnog poziva. To je void funkcija koja se uvijek

33

poziva kada nova poruka pristigne na pretplaćeni predmet. Funkcija subscribe() vraća

objekt pretplatitelja koji se mora čuvati sve dok čvor više ne želi biti pretplaćen na

određeni predmet. Kada su svi primjerci objekta pretplatitelja izvan dohvata, povratnom

pozivu će automatski biti poništena pretplata na predmet. Ova funkcija sadrži tri parametra.

Prvi parametar je ime predmeta na koji se pretplaćuje, drugi je broj poruka koje se

spremaju u spremnik te je treći, poziv funkcije povratnog poziva. U slučaju da predmet nije

u mogućnosti prihvatiti/procesuirati poruke dovoljno brzo, drugi argument definira koliko

poruka je moguće pohraniti u spremnik. Ukoliko je spremnik pun, starije poruke se počinju

brisati.

ros::Subscriber sub =

n.subscribe("chatter",1000,chatterCallback);

Kao što je gore navedeno, funkcija povratnog poziva se poziva kada poruka stigne na

pretplaćeni predmet. Zatim se ta poruka sprema u dinamički alociranu memoriju. Prednost

ovog načina spremanja poruke je ta što je mogućnost brisanja starih poruka zbog

nadolaženja novih jako mala.

Na samom kraju naredbom ros::spin(); započinje se petlja koja se vrti dok se ne

prekine komunikacija ručno ili naredbom od glavnog („Master“) čvora. Ta petlja ujedno

poziva i funkciju povratnog poziva što je brže moguće. U nastavku je dan primjer funkcije

povratnog poziva.

void chatterCallback(const std_msgs::String::ConstPtr& msg)

{

ROS_INFO("I heard: [%s]", msg->data.c_str());

}

Funkcija pretplatitelja se u kratko može zapisati kroz sljedeća četiri koraka:

Inicijalizacija čvora

Pretplata na željeni predmet

Uđi u petlju i čekaj na poruku

34

Kad dođe poruka šalje se poziv funkciji povratnog poziva.

5.7.3. Regulator Node

Na početku programa potrebno je uključiti sve biblioteke koje će nam biti potrebne tokom

izvođenja programa. Potom se stvara struktura s deklaracijom parametara regulatora.

<<OPIS KODA>>

Cijeli glavni program koda se sastoji od bloka pokušaja (eng. try) koji je popraćen blokom

hvatanja (eng. catch). Blok pokušaja sadrži problematične instrukcije, dok blok hvatanja

služi za dohvat iznimaka koje se ispisuju na zaslon ukoliko je do njih došlo.

35

Zaključak

U sklopu rada realiziran je regulator za praćenje morskog dna namjenjen za bespilotnu

kabelsku ronilicu Seamor 300 F. Nizom eksperimenata zaključili smo da je bolje koristiti

PI regulator u usporedbi s P regulatorom. Korištenjem PI regulatora suzbijamo poremećaje

nastale u stacionarnom stanju zbog interakcije između ronilice i okoliša u kojem se

eksperiment vrši. U slučaju korištenja P regulatora stacionarno stanje praćenja pogreške se

pojavljuje kada ronilica prelazi preko kosog morskog dna.

Korištenjem postojeće komunikacijske strukture temeljene na ROS-u, implementirali smo

algoritme praćenja morskog dna. Pokazalo se da je ROS kao način komunikacije

jednostavan i lagan za korištenje.

36

Literatura

1. Seamor 300 F mini ROV: http://www.seamor.com/. Pristupljeno 18.03.

2. Seamor 300 F characteristics: http://cure.fer.hr/index.php/labust-

resources/cureresources-rov/seamor-resources. Pristupljeno 19.03.

3. DVL NavQuest 600P Micro: http://www.link-quest.com/html/intro_nq.htm.

Pristupljeno 19.03.

4. Echosounder: http://en.wikipedia.org/wiki/Echo_sounding. Pristupljeno 25.03.

5. Mišković N., Kvalifikacijski doktorski ispit Nikole Miškovića:

http://www.fer.unizg.hr/_download/repository/kvalifikacijski_doktorski_ispit_Niko

la_Miskovic.pdf. Pristupljeno 01.04.

6. Guidance and Control Systems for Marine Vehicles by Z. Vukić & B. Borović:

https://www.fer.unizg.hr/_download/repository/Vukic_Borovic_OEHandbook_pap

er.pdf. Pristupljeno 20.04.

7. Industrial Systems for Guidance and Control of Marine Surface Vessels by B. K.

Golding: https://www.fer.unizg.hr/_download/repository/Golding_2004.pdf

8. Šoić I., Identifikacija daljinski upravljanje bespilotne ronilice Seamor, Diplomski

rad, FER, Zagreb 2012

9. Marine Cybernetics Lecture Notes by A. J. Sorensen:

https://www.fer.unizg.hr/_download/repository/MarineCyberneticsbySorensen_Lec

tureNotes.pdf. Pristupljeno 25.04.

10. Robot Operating System: http://www.ros.org/wiki/. Pristupljeno 03.04.

11. Intordoctions to ROS:

https://courses.csail.mit.edu/6.142/wiki/images/a/aa/Introduction_to_ROS.pdf.

Pristupljeno 10.04.

12. ROS: an open-source Robot Opearting System:

http://ai.stanford.edu/~mquigley/papers/icra2009-ros.pdf. Pristupljeno 05.04.

37

Sažetak

Regulator za praćenje morskog dna

Zadatak ovog diplomskog rada je realizacija algoritama za praćenje morskog dna za

bespilotnu, kablom upravljanu, ronilicu Seamor 300 F. Za komunikaciju između ronilice i

računala koristimo program ROS. U radu je objašnjen matematički model ronilice i sustav

upravljanja. Detaljno je pojašnjena struktura komunikacije putem ROS-a. Prikazani su

rezultati mnogobrojnih eksperimenata, provedeni sa različitim vrstama regulatora (P i PI

regulator), različitim parametrima regulatora te sa više različitih ulaznih signala (funkcije

step, rampa i sinusoida). Korištenjem PI regulatora suzbijamo poremećaje nastale u

stacionarnom stanju zbog interakcije između ronilice i okoliša u kojem se eksperiment vrši.

U slučaju korištenja P regulatora stacionarno stanje praćenja pogreške se pojavljuje kada

ronilica prelazi preko kosog morskog dna.

Ključne riječi: ronilica, matematički model ronilice, dinamički model, kinematički model,

regulator za praćenje morskog dna, ROS, čvor pošiljatelj i čvor primatelj

38

Summary

Seabed following controller

The task of this thesis is the implementation of algorithms to follow the seabed for

unmanned cable managed vehicle Seamor 300 F. For communication between ROV and

computer program we used program ROS. The thesis explains the mathematical model of

the ROV and management system. The structure of communication through ROS is

thoroughly explained. We showed the results of numerous experiments that are carried out

with different types of controllers (P and PI controller), different controller parameters and

with different input signals (step functions, ramps and sinusoids). Using PI controllers we

can suppress disturbances resulting in steady state due to the interaction between the ROV

and the environment in which the experiment is performed. In case of using P controller

steady state tracking error occurs when the underwater vehicle passes over the sloping

seabed.

Key words: Seamore, mathematical model, kinematic model, dynamic model, guidance

and control, algotitham, ROS

39

Popis oznaka i kratica

eng. – engleski

UUV – Unmanned Vehicle

ROV – Remotly Operated Vehicle

AUV – Autonomous Underwater Vehicle

DVL – Doppler Velocity Log

ROS – Robotic Operating System

40

Popis tablica

Tablica 3.1. Varijable matematičkog modela ronilice........................................................12

41

Popis slika

Slika 1.1. Istraživanje morskog dna.......................................................................................4

Slika 2.1. Seamor 300 F.........................................................................................................7

Slika 2.2. DVL-NavQuest 600 P Micro.................................................................................8

Slika 2.3. Echosounder..........................................................................................................8

Slika 3.1. Struktura navođenja, upravljanja i navigacije ronilice.........................................9

Slika 3.2. Načelna shema upravljanja bespilotnim ronilicama (ROV-om).........................10

Slika 3.3. Inercijski koordinatni sustav................................................................................11

Slika 3.4. Definirani koordinatni sustavi.............................................................................11

Slika 3.5. Blok dijagram matematičkog modela..................................................................13

Slika 4.1. Operacijske varijable kod praćenja morskog dna...............................................18

Slika 4.2. Model sustava za regulaciju udaljenosti od morskog dna...................................19

Slika 4.3. P regulator sa različitim vrijednostima parametara...........................................20

Slika 4.4. PI regulator sa različitim vrijednostima parametara..........................................20

Slika 4.5. Usporedba odziva P i PI regulatora....................................................................21

Slika 4.6. Povećana usporedba odziva P i PI regulatora....................................................21

Slika 4.7. Odziv sustava s PI regulatorom sa različitim koeficijentima pojačanja Kp.......22

Slika 4.8. Odziv sustava s PI regulatorom za različite koeficijente pojačanja Kp..............23

Slika 4.9. Usporedba odziva ronilice sa krivuljom morskog dna........................................23

Slika 4.10. Razlika između referentne krivulje i dubine ronilice.........................................24

Slika 4.11. Usporedba odziva ronilice sa krivuljom morskog dna......................................24

42

Slika 4.12. Razlika između referentne krivulje i dubine ronilice........................................25

Slika 4.13. Odziv sustava s PI regulatorom sa različitim koeficijentima pojačanja Ki......25

Slika 4.14. Odziv sustava s PI regulatorom sa različitim koeficijentima pojačanja Ki......26

Slika 5.1. Istorazinska komunikacija...................................................................................28

43

Privitak