View
223
Download
0
Category
Preview:
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
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
Recommended