\documentclass[times, utf8, diplomski]{fer}
\usepackage{booktabs}
\usepackage{gensymb}
\usepackage{float}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{amsmath}
\usepackage{graphicx}

\begin{document}

% TODO: Navedite broj rada.
\thesisnumber{530}

% TODO: Navedite naslov rada.
\title{Upravljački program za daljinski upravljan brod}

% TODO: Navedite vaše ime i prezime.
\author{Viktor Vladić}

\maketitle

% Ispis stranice s napomenom o umetanju izvornika rada. Uklonite naredbu \izvornik ako želite izbaciti tu stranicu.
\izvornik

% Dodavanje zahvale ili prazne stranice. Ako ne želite dodati zahvalu, naredbu ostavite radi prazne stranice.
\zahvala{}

\tableofcontents

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 UVOD		 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Uvod}
Nešto više od dvije trećine površine planeta Zemlje prekriveno je morem. Ono predstavlja gotovo neiscrpan izvor hrane i prirodnih bogatstava. Unatoč današnjoj razvijenoj tehnologiji, gotovo $90\%$ podmorja još uvijek je neistraženo. Kroz povijest, more je igralo važnu ulogu u trgovini i prijevozu raznih proizvoda i prirodnih resursa. Brodovi su se kretali trgovačkim rutama diljem cijelog svijeta. Zbog kontrole nad morskim prolazima vodili su se i ratovi. Napretkom tehnologije, brodovi su postajali brži, veći i efikasniji. Razvojem elektrotehnike, naglo je ubrzan i razvoj brodova u kojima su svoju primjenu počeli nalaziti sustavi automatskog upravljanja. Danas je tehnologija toliko napredovala da je moguće upravljati brodom na daljinu, bez neposrednog prisustva čovjeka. S ciljem proučavanja i primjene metoda vođenja i upravljanja plovilima, izrađen je model jednog takvog broda upravljivog na daljinu, nazvanog Cybership. Osim izrade ovog autonomnog modela broda, u domenu rada spadaju i izrada upravljačkog programa, matematičko modeliranje plovila, identifikacija parametara matematičkog modela, projektiranje estimatora stanja i neke metode vođenja i upravljanja brodom. Od metoda vođenja i upravljanja najistaknutije su dinamičko pozicioniranje, slijeđenje putanje i praćenje trajektorije. Za svaku od korištenih metoda upravljanja proveden je niz eksperimenata i u radu su prikazani neki od njihovih rezultata.

Rad je strukturiran na sljedeći način. Prvo poglavlje je kratak uvod u rad. U drugom poglavlju dan je opis modela broda i njegovih komponenti, a u trećem je definiran njegov matematički model. U četvrtom poglavlju identificiran je matematički model i opisane su korištene metode. Peto poglavlje opisuje projektiranje estimatora stanja za plovila u horizontalnoj ravnini i dobivene rezultate. U šestom poglavlju opisano je nekoliko metoda vođenja i upravljanja koje su uspješno primijenjene na modelu broda i prikazani su rezultati eksperimenata.




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 OPIS MODELA BRODA		 %%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Opis modela broda}
Motivacija za izradu realnog modela broda dolazi iz više razloga. Glavni razlog je potvrda simulacijskih rezultata korištenih algoritama vođenja i upravljanja u realnim uvjetima. Također, ne manje bitan razlog je stjecanje praktičnih znanja i iskustva iz područja upravljačke i učinske elektronike, električnih strojeva, senzorske tehnologije, obrade signala, mehanike itd. Izrada ovakvog modela predstavlja veliki izazov. Da se radi o veoma opsežnom poslu govori činjenica da je za projektiranje i izradu modela broda i upravljačkog softvera utrošeno nekoliko tisuća radnih sati. Model teretnog broda odabran je jer posjeduje sporu dinamiku i stabilan je po stupnjevima slobode kojima se ne upravlja. Model je izrađen po uzoru na tanker klase \emph{Panamax} čija je skica prikazana na slici \ref{fig:skicaModela}. U nastavku je ukratko opisan postupak izrade i sastavne komponente modela broda.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/skicaModela.png} 
\caption{\emph{Skica modela tankera klase Panamax}} 
\label{fig:skicaModela}  
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%		TRUP BRODA		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Trup broda}

Model broda izrađen je po uzoru na tanker klase \emph{Panamax}. Skaliranje dimenzija broda po trima geometrijskim osima nije jednako. Dimenzije pravog tankera, modela i njihov omjer dani su u tablici \ref{tab:modelDimensions}. Visina broda skalirana je tako da njen omjer u odnosu na stvarne dimenzije bude dvostruko manji od omjera duljine, a širina tako da omjer širine iznosi približno $80\%$ omjera duljine. To znači da je trup modela broda dvostruko viši i $1.25$ puta širi nego što bi bio sa jednako skaliranim osima.

\begin{table}[H]
\caption{Dimenzije pravog broda i modela}
\centering
\begin{tabular}{r|c|c|c}
 & Prave dimenzije & Dimenzije modela & Faktor skaliranja \\ \hline
Duljina & $223.74 \, m$ & $1.207 \, m$ & $185.36$ \\
Širina & $31.9 \, m$ & $ 0.209 \, m$ & $152.63$ \\
Visina & $15.47 \, m$ & $0.168 \, m$ & $92.08$ \\
\end{tabular} 
\label{tab:modelDimensions} 
\end{table}

\noindent
Željeni izgled broda dobiven je oblikovanjem komada poliuretanske pjene, na koji je naneseno nekoliko slojeva poliesterske smole impregnirane platnom od staklenih vlakana, koji čine stijenku modela broda. S prednje i stražnje bočne strane ugrađeni su tunelski potisnici. Oblik pramca broda naziva se \emph{bulb bow} odnosno gomoljasti pramac. Gomoljasti pramac poboljšava hidrodinamička svojstva broda čime se smanjuje otpor vode, povećavaju brzina i stabilnost i na taj način štedi gorivo. Takav pramac prikazan je na slici \ref{fig:bulbBow}. Sa stražnje strane nalaze se glavni propulzor i kormilo. \\

\begin{figure}[H]  
\centering 
\includegraphics[width=10cm]{fig/bulbBow.png} 
\caption{\emph{Bulb bow pramac}} 
\label{fig:bulbBow}  
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%		AKTUATORI		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Aktuatori}

Brod pokreću četiri električna aktuatora koje čine glavni propulzor, dva tunelska propulzora i kormilo. Glavni propulzor čini propeler na osovini koju pokreće istosmjerni elektromotor. Motor i osovina povezani su preko zupčanika prijenosnog omjera $n$. Osovinu brtve dva teflonska prstena u cilindričnom kučištu od \emph{inoxa} u kojem su također kuglični ležajevi koji nose osovinu. Pritisak teflonskih prstena na osovinu moguće je podesiti po potrebi. Manji pritisak na osovinu znači manje trenje ali i lošije brtvljenje i obratno. Princip rada glavnog propulzora prikazan je na slici \ref{fig:mainThruster}.

\begin{figure}[H]  
\centering 
\includegraphics[width=11cm]{fig/mainThruster.png} 
\caption{\emph{Glavni propulzor}} 
\label{fig:mainThruster}  
\end{figure}

\begin{figure}[H]  
\centering 
\includegraphics[width=11cm]{fig/tunnelThruster2.png} 
\caption{\emph{Tunelski propulzor}} 
\label{fig:tunnelThruster2}  
\end{figure}

\noindent
Tunelski propulzori postavljeni su kako bi se moglo ostvariti bočno gibanje odnosno zakretanje broda. Način na koji je postavljen prednji tunelski propulzor prikazan je na slici \ref{fig:tunnelThruster2}. Stražnji propulzor postavljen je na isti način. Osovine tunelskih propulzora brtve se semerinzima.

\begin{figure}[H]  
\centering 
\includegraphics[width=11cm]{fig/rudder.png} 
\caption{\emph{Kormilo}} 
\label{fig:rudder}  
\end{figure}
\noindent
Kormilo je prikazano na slici \ref{fig:rudder}. Zakreće se pomoću koračnog motora preko sustava zupčanika. Kut kormila mjeri se pomoću potenciometra koje je također preko zupčanika povezano s osovinom kormila. 

Nazivni napon elektromotora glavnog propulzora iznosi $24$ V, a nazivna struja je $750$ mA. Pri naponu od $12$ V koji je ujedno napon baterije, brzina vrtnje osovine iznosi približno $1000$ okretaja u minuti. Nazivni napon i struja elektromotora koji pokreću tunelske propulzore iznose $24$ V i $500$ mA. Nazivna struja je ona struja koja se javlja kod maksimalne učinkovitosti motora. Kod vrtnje ovih elektromotora napon na njihovim stezaljkama nikada ne prelazi $12$ V zbog čega je maksimalna struja manja od nazivne. Nazivni napon koračnog eng. \emph{stepper} motora iznosi $1.8$ V, no zbog induciranog napona kod vrtnje (\emph{back-EMF}), njegov napon napajanja je povećan $5$ V kako bi se povećao zakretni moment.

%%%%%%%%%%%%%%%%%%%%%%		ELEKTRONIKA		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Elektronika}

Elektronika broda je sustav složen od elektroničkih komponenti koje obavljaju razne zadatke. Taj sustav može se podijeliti na nekoliko dijelova ovisno o namjeni. Dio upravljačke elektronike čine glavni modul, modul za upravljanje aktuatorima i modul za parsiranje GPS podataka. Upravljački dio elektronike na strukturnoj shemi označen je plavom bojom. Učinsku elektroniku čine tri pojačala snage u punom mosnom spoju koji pokreću istosmjerne motore i pojačalo za upravljanje koračnim motorom i ona je označena narančastom bojom. Napajanje se sastoji od baterije i modula reguliranog napajanja sa relejom koji su označeni crvenom bojom. Senzore čine elektronički kompas, GPS prijemnik i potenciometar za mjerenje zakreta osovine kormila. Bežična komunikacija sa upravljačkim računalom odvija se preko \emph{Xbee Pro} komunikacijskih modula, označenih ljubičastom bojom.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/elektronika.pdf} 
\caption{\emph{Struktura elektronike i komunikacije}} 
\label{fig:elektronika}  
\end{figure}

\noindent
Bitno svojstvo elektroničkih modula je da svaki modul radi neovisno o ostalim modulima i komunicira samo sa modulom koji se hijerarhijski nalazi iznad njega.

\newpage
\noindent \textbf{Glavni modul} \\
Glavni modul sastoji se od mikrokontrolera \emph{ATMega16}, LED diode kao indikatora napona napajanja, nekoliko pasivnih komponenti i konektora. Izgled glavnog modula prikazan je na slici \ref{fig:mainMCUboard}. Zadaće koje ovaj modul obavlja su: A/D pretvorba napona napajanja, kontrola releja napajanja, komunikacija s upravljačkim računalom, upravljanje podatkovnom sabirnicom, svjetlosna indikacija stanja, prikupljanje podataka iz senzora i prosljeđivanje upravljačkih podataka ostalim modulima.

Za izvršavanje spomenutih zadaća zadužen je spomenuti \emph{ATMega16} mikrokontroler takta $8$ MHz sa 16 kB \emph{flash} memorije. Program za mikrokontroler napisan je u programskom jeziku C i zajedno sa potprogramima ima približno $600$ linija koda. Modul je moguće programirati preko standardnog \emph{ISP (In System Programming)} sučelja (lijevi konektor na slici). Komunikacija modula s upravljačkim računalom je serijska i odvija se bežično putem \emph{Xbee Pro} komunikacijskog modula. \emph{Xbee Pro} uređaj prikazan je na slici \ref{fig:xbeeCompass} lijevo. Svaka primljena poruka od upravljačkog računala generira prekid izvršavanja programa u mikrokontroleru i odmah se obrađuje i izvršava zadana akcija. Ovaj modul nalazi se na vrhu komunikacijske hijerarhije. Svi podaci koji dolaze ili odlaze s broda prolaze kroz ovaj modul. 

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/mainMCUboard.png} 
\caption{\emph{Glavni modul}} 
\label{fig:mainMCUboard}  
\end{figure}

\noindent Primanje i slanje podataka ostalim modulima, te A/D konverzija napona napajanja obavljaju se u prekidnoj rutini mikrokontrolera, vremenom uzorkovanja $T_s$ od $250$ ms. Indikacija stanja vidljiva je iz pet LED dioda postavljenih na vrhu kabine broda. Diode su spojene na mikrokontroler preko 10-pinskog konektora (dolje lijevo na slici \ref{fig:mainMCUboard}). Plave diode zasvjetle za vrijeme obavljanja zadataka tijekom svakog vremena uzorkovanja. Crvena dioda prikazuje stanje relejne sklopke napajanja, dok žute diode signaliziraju da napon baterije iznosi manje od 12V odnosno da je baterija pri kraju.

Komunikacija među modulima odvija se po \emph{$I^2C$ (Inter-Integrated Curcuit)} protokolu. Brzina prijenosa podataka ovim putem iznosi $100\, kb$ u sekundi. Sabirnicom upravlja isključivo glavni modul, koji u svakom vremenu uzorkovanja šalje zahtjev za podacima, odnosno nove referentne vrijednosti ostalim modulima, nakon čega sljedi njihov odgovor. Konektori \emph{$I^2C$} sabirnice nalaze se na na desnoj strani na slici \ref{fig:mainMCUboard}.

\begin{figure}[H]
\begin{center}$
\begin{array}{cc}
  \includegraphics[width=6cm]{fig/xbeePro.png}&
  \includegraphics[width=6cm]{fig/HMC6352.png}
  \end{array}$
  \caption{XBee Pro modul, Elektronički kompas HMC6352}
  \label{fig:xbeeCompass}
\end{center}
\end{figure}

\noindent Na slici \ref{fig:xbeeCompass} desno prikazan je elektronički kompas \emph{HMC6352}. Kompas je spojen direktno na \emph{$I^2C$} sabirnicu i napon napajanja od $5$ V. Kalibracija kompasa započinje se tako što se glavnom modulu pošalje komanda $"ca"$, nakon čega on $I^2C$ protokolom postavi kompas u mod kalibracije. Za vrijeme kalibracije upaljene su žute indikacijske LED diode, a kompas ne šalje podatke o trenutnoj orijentaciji. Nakon pokrenute kalibracije, potrebno je nekoliko puta rotirati brod oko vertikalne osi u trajanju od pola minute. Slanjem komande $"en"$ prekida se kalibracija kompasa pri čemu se kompas automatski dovodi u novo kalibrirano stanje i omogućuje se ponovo slanje orijentacije. Više o komunikaciji među modulima biti će opisano u sljedećem poglavlju.

\newpage
\noindent \textbf{Modul napajanja} \\
Mikrokontroleri, senzori i ostale elektroničke komponenata za svoj rad zahtjevaju konstantni regulirani napon od $5$ odnosno $12$ V. Također potrebno je osigurati strujni krug od kratkog spoja ili prevelikog napona. To su glavne zadaće modula napajanja. Modul napajanja sastoji se od jednog analognog integriranog regulatora izlaznog napona $12$ V, dvaju napona $5$ V, osigurača, releja s tranzistorom, elektrolitnih kondenzatora, LED indikatora i konektora. Osiguračem od $5$ A štiti se strujni krug od kratkog spoja. 

Napajanje glavnog modula odvojeno je od napajanja svih ostalih modula. Razlog tome je što je na taj način ostavljena mogučnost prekida napajanja aktuatorima u slučaju nužde bez prekida komunikacije upravljačkog računala i glavnog modula. Glavni modul dakle upravlja radom releja. Još jedan razlog za uvođenje releja je zaštita pojačala od prevelikog napona baterije. Pri uključenju, glavni modul mjeri napon baterije, i tek ako se on nalazi u dopuštenim granicama uključuje relej. Na regulatore napona postavljen je hladnjak koji spriječava njihovo eventualno grijanje. Elektrolitski kondenzatori služe za uklanjanje visokofrekventnih smetnji i naglog pada napona reguliranih izlaza.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/powerBoard.png} 
\caption{\emph{Modul napajanja}} 
\label{fig:powerBoard}  
\end{figure}

\noindent Modul je prikazan na slici \ref{fig:powerBoard}. Gornji skup konektora su stabilizirani izlazi. Baterija se spaja na donji lijevi konektor, dok na ostale napon baterije dolazi preko releja. 


\newpage
\noindent \textbf{Modul aktuatora} \\
Za upravljanje aktuatorima odgovoran je modul na slici \ref{fig:actuatorControlBoard}. On prima referentne vrijednosti za aktuatore u numeričkom obliku od glavnog modula. Te numeričke vrijednosti se ograničavaju, skaliraju i pretvaraju u \emph{PWM (Pulse Width Modulation)} signal koji se prenosi na pojačala snage. \emph{PWM} signal ograničen je na $95 \%$ maksimalne vrijednosti, a donja granica iznosi $15 \%$. Isto vrijedi i za negativne iznose brzine. Pretvorba referentne vrijednosti brzine u PWM signal može se izraziti formulom:

\begin{align}
z_{pwm} &= \begin{cases}
z_{mid} & \mbox{za $n_{ref} = 0$} \\
z_{mid} + \frac{z_{max}}{2}\left( 0.15 \cdot sgn \left( n_{ref} \right) + \frac{0.95 - 0.15}{100} n_{ref} \right) & \mbox{za $n_{ref} \not= 0$} 
\end{cases}
\end{align}

\noindent Gdje je $n_{ref}$ referentna brzina vrtnje u rasponu od $-100$ do $100$ $\%$ dobivena od glavnog modula. Opisani način skaliranja prikazan je lijevim grafom na slici \ref{fig:actuatorScaling}.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/actuatorControlBoard.png} 
\caption{\emph{Modul za upravljanje aktuatorima}} 
\label{fig:actuatorControlBoard}  
\end{figure}

\noindent Referentna vrijednost kuta kormila prima se numerički u stupnjevima, dok se ona mjeri A/D pretvorbom napona potenciometra koji je povezan s osovinom kormila. A/D pretvorba je 10-bitna, što znači da se kao mjerenje dobije cijeli broj od $0$ do $1023$. Maksimalni kut kormila u obje strane mehanički je ograničen potenciometrom na $\pm 60 \degree$. Kut kormila računa se sljedećim izrazom:

\begin{align}
\delta &= -60 + \frac{120}{2^{10}}n_{ADC}
\end{align}

\noindent gdje je $n_{ADC}$ cijeli broj dobiven A/D pretvorbom kako je i prikazano na desnom grafu na slici \ref{fig:actuatorScaling}.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/actuatorScaling.pdf} 
\caption{\emph{Skaliranje referentnih vrijednosti}} 
\label{fig:actuatorScaling}  
\end{figure}

\noindent Osim A/D pretvorbe i generiranja \emph{PWM} signala, ovaj modul također šalje upravljačke signale za pojačalo koračnog motora. Pojačalom koračnog motora upravlja se pomoću četiri digitalna izlaza, koja označavaju protok struje kroz svaki od četiri namota koračnog motora. Istovremenim propuštanjem struje kroz dva namota koračnog motora postiže se \emph{half-stepping} način rada, koji povećava moment i smanjuje vibracije pri radu. Ovaj modul se također može programirati putem \emph{ISP} konektora. Program koji se izvršava na mikrokontroleru ovog modula napisan je u programskom jeziku C i ima približno $550$ linija koda.

\newpage
\noindent \textbf{Učinska elektronika} \\
Mikrokontroleri općenito nemaju potrebnu snagu za direktno pokretanje aktuatora. Zbog toga se koristi učinska elektronika koja koristi upravljački signal mikrokontrolera na temelju kojeg dovodi napon određenog oblika na stezaljke aktuatora. Za upravljanje istosmjernim motorima na brodu koriste se četiri \emph{MOSFET} sklopke u punom mosnom spoju. Takav mosni spoj još se naziva i \emph{H-most} i karakterizira ga četverokvadrantni način rada. To znači da je njime moguće zakretati i kočiti istosmjerni motor u oba smjera vrtnje. Mosni spoj projektiran je i izrađen u \emph{SMT (Surface Mount Technology)} izvedbi i prikazan je na slici \ref{fig:bridgeBoard}.

Glavne komponente ovog usmjerivača su četiri \emph{MOSFET} sklopke i integrirani krug \emph{HIP-4082} koji služi za upravljanje sklopkama. Komponente koje se još nalaze na elektroničkoj pločici su: regulatori napona na $5$ odnosno $12$ V, logički inverter signala, LED dioda koja signalizira da je prisutan napon napajanja, \emph{shunt} i ostali otpornici i kondenzatori. \emph{Shunt} je veoma precizni otpornik jako malog otpora koji služi za mjerenje struje u strujnom krugu. Maksimalni napon napajanja ovog mosta iznosi $48$ V, a maksimalna konstantna struja iznosi $15$ A. Svi ostali podaci korištenih elektroničkih komponeni dostupni su u specifikacijama proizvođača \emph{(datasheet)}.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/bridgeBoard.png} 
\caption{\emph{H-most u SMD izvedbi}} 
\label{fig:bridgeBoard}  
\end{figure}

\newpage
\noindent Koračnim motorom upravlja se tako što se određenim redosljedom propušta struja kroz njegove namote. Pravilna promjena pobuđenog namota naziva se korak eng. \emph{step}. Motor je građen tako da se osovina motora zakrene za $1.8 \degree$ za svaki novi korak. Ako se odjednom pobude dva susjedna namota osovina motora zakreće se za $0.9 \degree$ i takav način upravljanja naziva se \emph{half-stepping}. Mikrokontroler koji brine o redosljedu pobuđenih namota motora i generira upravljačke signale ne može dati dovoljno veliku struju i zbog toga koristi pojačalo.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/stepperBoard.png} 
\caption{\emph{Pojačalo za upravljanje koračnim motorom}} 
\label{fig:stepperBoard}  
\end{figure}

\noindent Pojačalo se sastoji od četiri bipolarna tranzistora, po jedan za svaki od namota motora. Na taj način signal mikrokontrolera dovodi se na baze $(B)$ tranzistora. Emiter $(E)$ tranzistora spojen je na $(-)$ stezaljku, a kolektor $(C)$ tranzistora na kraj namota motora. Počeci svih namota motora spojeni su na napon napajanja pojačala $(+)$. LED dioda je indikator napona napajanja, a elektrolitni kondenzator služi za uklanjanje induktivnih smetnji motora i spriječavanje naglog pada napona napajanja.

\newpage
\noindent \textbf{GPS modul} \\
Ovaj modul sastoji se od mikrokontrolera, GPS prijemnika i regulatora napona od $3.3$ V koji je potreban prijemniku za rad. Uloga mikrokontrolera je parsiranje i slanje obrađenih podataka od prijemnika glavnom modulu. Mikrokontroler je moguće programirati preko reduciranog \emph{ISP} konektora. Program mikrokontrolera napisan je u $C$-u i sadrži približno $400$ linija koda. Sastavni dio programa je i \emph{Watchdog} timer, koji resetira mikrokontroler ukoliko se pojavi nekakva pogreška. Pločice mikrokontrolera i prijemnika istih su dimenzija i smještene su zajedno u plastičnu kutiju. Elektroničke pločice mikrokontrolera i GPS prijemnika prikazane su na slici \ref{fig:gpsModule}. Na pločici mikrokontrolera nalaze se dvije LED diode kao indikatori stanja. Ukoliko je upaljena crvena LED, komunikacija između prijemnika i mikrokontrolera je uspostavljena ali podaci nisu valjani odnosno nije locirano dovoljno satelita. Ako je upaljena zelena LED, podaci su valjani. Ako naizmjenično svjetle crvena odnosno zelena LED, postoji greška u komunikaciji između prijemnika i mikrokontrolera. 

\begin{figure}[H]
\begin{center}$
\begin{array}{cc}
  \includegraphics[width=7cm]{fig/gpsBoard.png} &
  \includegraphics[width=7cm]{fig/GPS.png}
  \end{array}$
  \caption[labelInTOC]{\emph{Upravljački GPS modul, GPS prijemnik LS20031}}
  \label{fig:gpsModule}
\end{center}
\end{figure}

\noindent GPS prijemnik u stanju je locirati 66 satelita, od čega optimalnih 12 služe za računanje koordinata. Podaci se osvježavaju 5 puta u sekundi serijskom komunikacijom. Podaci koji se šalju sa prijemnika su standardni \emph{NMEA} podaci tipa \emph{String}, a mikrokontroler ih parsira u numerički oblik. Po \emph{NMEA} standardu šalje se šest paketa podataka: \emph{GGA}, \emph{GLL}, \emph{GSA}, \emph{GSV}, \emph{RMC} i \emph{VTG}. Mikrokontroler za parsiranje koristi \emph{RMC} paket što je skraćenica od \emph{Recomended Minimum Specific GNSS Data} i sadrži: geografsku širinu, dužinu, orijentaciju, valjanost podataka, brzinu kretanja, vrijeme, datum itd.



%%%%%%%%%%%%%%%%%%%%%%		KOMUNIKACIJA		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Komunikacija}

Postoji nekoliko razina komunikacije na brodu. Najviša razina komunikacije odvija se između računala i glavnog modula, prema slici \ref{fig:mainCom}. Komunikacija se odvija na principu \emph{zahtjev-odgovor}. Upravljačko računalo šalje zahtjev odnosno komandu, a glavni modul izvršava traženi zadatak i šalje natrag zahtjevane podatke odnosno potrvrdu da je zadatak izvršen.

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/mainCom.png} 
\caption{\emph{Komunikacija računala i glavnog modula}} 
\label{fig:mainCom}  
\end{figure}

\noindent Komande koje upravljačko računalo šalje glavnom modulu dane su u tablici \ref{tab:mainCom}

\begin{table}[H]
\caption{Upravljačke riječi broda}
\centering
\begin{tabular}{c|c|c}
Računalo $\rightarrow$ Modul & Modul $\leftarrow$ Računalo & Opis zahtjeva ili komande \\
\hline \hline
$'rst'$ & $'OK'$ & Resetiranje sustava \\ \hline
$'of'$ & $'OK'$ & Isključivanje releja \\ \hline
$'ca'$ & $'OK'$ & Pokretanje kalibracije kompasa \\ \hline
$'en'$ & $'OK'$ & Završetak kalibracije kompasa \\ \hline
$'st'$ & $'\$, relay, voltage_2, voltage_1,$ & Zahtjev stanja sustava \\
& $heading_2, heading_1, I_{stern},$ & \\
& $I_{bow},I_{main}, rudder\_angle, I_p, $ & \\
& $lat_4, lat_3, lat_2, lat_1, NS,$ & \\
& $long_4, long_3, long_2, long_1, EW,$ & \\
& $vtg_{gps}, heading_{gps,2}, heading_{gps,1},$ & \\
& $hour, minute, second, day, $ & \\
& $month, year, gps\_valid'$ & \\ \hline
$'B, \left< value \right>' $ & $'OK'$ & Referenca \emph{bow thruster}-a \\ \hline
$'S, \left< value \right>' $ & $'OK'$ & Referenca \emph{stern thruster}-a \\ \hline
$'M, \left< value \right>' $ & $'OK'$ & Referenca glavnog potisnika \\ \hline
$'R, \left< value \right>' $ & $'OK'$ & Referenca kuta kormila
\end{tabular} 
\label{tab:mainCom} 
\end{table} 
 
\newpage
\noindent Osim komunikacije na prvoj razini između računala i broda, postoji također interna komunikacija modula. Komunikacijska hijerarhija je prikazana na slici \ref{fig:comHier}. Komunikacija na drugoj razini odvija se preko $I^2C$ protokola, koji radi na principu sabirnice. Sabirnicom upravlja glavni modul, koji inicira svaku razmjenu podataka, odlaznih i dolaznih. $I^2C$ dolazi od eng. \emph{Inter Integrated Circuit}. %Ovaj protokol još se naziva i \emph{TWI} što dolazi od eng. \emph{Two Wire Interface}. 
Izumila ga je tvrtka \emph{Phillips} prvenstveno za komunikaciju unutar ugradbenih uređaja, između elektroničkih uređaja i njihovih perifernih jedinica, mjernih uređaja, integriranih krugova, mobitela itd. Protokol omogućuje brzine komunikacije od reda $kb$ do $Mb$ u sekundi. Na modelu broda koristi se brzina od $100$ $kbps$. 

\begin{figure}[H]  
\centering 
\includegraphics[width=14cm]{fig/comHier.png} 
\caption{\emph{Komunikacijska hijerarhija}} 
\label{fig:comHier}  
\end{figure}

\noindent Sabirnica podržava maksimalno 127 uređaja, od kojih svaki ima unaprijed određenu adresu sačinjenu od 7 bitova. Adresa glavnog modula broda u heksadekadskom zapisu glasi \emph{0xC0}, modula za upravljanje aktuatorima \emph{0x80}, GPS modula \emph{0x90} i adresa kompasa je \emph{0x42}. Ukoliko se adresa određenog modula koristi za čitanje podataka, njenoj vrijednosti se dodaje \emph{0x01} (npr. adresa za čitanje podataka s kompasa onda glasi \emph{0x43}), a ukoliko se koristi za pisanje onda ostaje nepromijenjena.

\newpage
\noindent Treću i najnižu razinu čini komunikacija modula s njihovim senzorima. Modul za upravljanje aktuatorima upravlja usmjerivačima pomoću signala \emph{PWM} i \emph{DIS}. \emph{PWM} dolazi od eng. \emph{Pulse Width Modulation} i označava pulsno-širinski modulirani signal. \emph{DIS} dolazi od eng. \emph{Disable} i označava signal koji u stanju logičke jedinice prekida rad usmjerivača. Dok je \emph{DIS} u stanju logičke nule, usmjerivačem se upravlja pomoću \emph{PWM} signala. Pojačalo koračnog motora upravljano je pomoću signala $S_1$, $S_2$, $S_3$ i $S_4$. Logička jedinica svakog od ovih signala predstavlja otvaranje tranzistorske sklopke i time propuštanje struje kroz pripadajući namot koračnog motora i obratno.

GPS modul komunicira sa prijemnikom standardnim \emph{NMEA} porukama. Komunikacija se odvija na način da modul detektira zaglavlje određenog paketa podataka. Po \emph{NMEA} standardu šalje se šest paketa podataka: \emph{GGA}, \emph{GLL}, \emph{GSA}, \emph{GSV}, \emph{RMC} i \emph{VTG}. Za parsiranje koristi se \emph{RMC} \emph{(Recomended Minimum Specific GNSS Data)}. Svaki paket započine simbolom \emph{'\$'} i završava sa \emph{'$\ast$<$c_1$><$c_2$>'} gdje $c_{1,2}$ predstavljaju \emph{checksum} odnosno zaštitne bitove. Podaci unutar paketa odvojeni su zarezom. U nastavku je dan primjer \emph{RMC} paketa, a njegov opis dan u tablici \ref{tab:nmeaRmc}.

\begin{align*}
\$ GPRMC,053740.000,A,2503.6319,N,12136.0099,E,2.69,79.65,100106,,,A*53
\end{align*}

\begin{table}[H]
\caption{Opis RMC paketa podataka}
\centering
\begin{tabular}{c|l}
Primjer podatka & Opis \\
\hline \hline
\$ GPRMC & RMC header za identifikaciju paketa \\ \hline
053740.000 & Univerzalno koordinirano vrijeme \\ \hline
A & Ispravnost GPS podataka: A - ispravno, V - neispravno \\ \hline
2503.6319 & Geografska širina \\ \hline
N & N - Sjeverna širina, S - južna širina \\ \hline
12136.0099 & Geografska dužina \\ \hline
E & E - Istočna dužina, W - zapadna dužina \\ \hline
2.69 & Brzina kretanja (kn) \\ \hline
79.65 & Kurs ($\degree$) \\ \hline
100106 & Datum - ddmmyy \\ \hline
& Magnetska varijanca (nije dostupno) \\ \hline
& Pol varijance (nije dostupni) \\ \hline
A & Mod rada: A - autonomni, D - DGPS \\ \hline
$\ast$ 53 & Zaštitni bitovi

\end{tabular} 
\label{tab:nmeaRmc} 
\end{table} 

\newpage
\section{Upravljački program}
Upravljački program izrađen je u programskom paketu \emph{LabView} tvrtke \emph{National Instruments} i služi za upravljanje brodom. U njemu su implementirane sve funkcije koje se koriste za komunikaciju i upravljanje. Program je zamišljen tako da bude intuitivan i jednostavan za korištenje. Sastoji se od glavnog početnog zaslona i blok dijagrama koji se nalaze u pozadini. Glavni zaslon svojim izgledom podsjeća na upravljačko sučelje PLC računala i prikazan je na slici \ref{fig:controlProgram}. Način programiranja je grafički, odnosno programira se tako što se povezuju blokovi koji obavljaju razne funkcije. Moguće je stvoriti vlastite blokove odnosno \emph{virtualne instrumente} koji se zatim mogu ponovo koristiti na različitim mjestima. 

Glavni zaslon sadrži sve informacije o trenutnom stanju broda, senzora, algoritma upravljanja itd. Na lijevoj strani nalaze se mjerena i estimirana stanja broda koja se mogu pratiti kamerom, a na desnoj nalazi se upravljački dio. Crvenom točkom na zaslonu kamere prikazana je mjerena točka, zelenom estimirana, plavom referentna točka kod upravljanja, a žutom točka trajektorije. Referentne vrijednosti aktuatora nalaze se lijevo od zaslona kamere. Algoritam upravljanja bira se pomoću \emph{kartica}. Svaki algoritam ima vlastito upravljačko sučelje u kojem se mogu mijenjati parametri i pratiti tijek eksperimenta. Promjenom kartice automatski se prelazi u odabrani način rada i napušta prethodni. Upravljanje brodom moguće je uključiti i isključiti velikom tipkom iznad kartica i ono vrijedi za sve algoritme upravljanja. 

\begin{figure}[H]  
\centering 
\includegraphics[width=14.5cm]{fig/controlProgram.png} 
\caption{\emph{Glavni zaslon upravljačkog programa}} 
\label{fig:controlProgram}  
\end{figure}

\newpage
\noindent
Glavne zadaće i princip rada upravljačkog programa prikazani su na slici \ref{fig:CPS}. Kod početka izvođenja deklariraju se varijable, njihove početne vrijednosti, postavke komunikacije, kamere itd. Program zatim ulazi u beskonačnu petlju unutar koje se odvija niz zadataka točno određenim redosljedom. Najprije se šalju posebne upravljačke komande brodu (pokretanje kalibracije kompasa i resetiranje sustava) i zatim se od broda zahtjevaju trenutni podaci senzora. Nakon što su primljeni podaci, ovisno o tome mjeri li se pozicija kamerom ili GPS uređajem, vrši se obrada slike iz kamere i prepoznavanje uzorka na slici odnosno pretvorba GPS koordinata u metrički lokalni koordinatni sustav. Nakon obrade primljenih podataka vrši se estimacija stanja broda. Nakon estimacije stanja izvršava se odabrani algoritam upravljanja i nove referentne vrijednosti šalju se brodu. Na kraju, ukoliko je uključena ta opcija, svi podaci se logiraju na način pogodan za buduće iscrtavanje u programu \emph{Matlab}.

\begin{figure}[H]  
\centering 
\includegraphics[width=14.5cm]{fig/CPS.pdf} 
\caption{\emph{Zadaci i princip rada upravljačkog programa}} 
\label{fig:CPS}  
\end{figure}

Detaljan opis koda, obrada slike, implementacija algoritama upravljanja, estimatora stanja i drugih blokova prelaze okvire ovog rada i ovdje se neće spominjati. Sva dokumentacija dostupna je u dodatnim materijalima koji se nalaze na popratnom mediju.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		MATEMATIČKI MODEL BRODA		  %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Matematički model broda}

Matematičkim modeliranjem želi se opisati gibanje broda u prostoru, ovisno o postavnim vrijednostima njegovih aktuatora. Matematičko modeliranje zasniva se na fizikalnim zakonima i provodi se u nekoliko faza opisanima u nastavku. %Prvo je potrebno matematički opisati sile koje stvaraju aktuatori u ovisnosti o njihovim postavnim veličinama. Te sile se pomoću alokacije transformiraju u sile i momente koji djeluju na brod kao kruto tijelo. Prema Newtonovim zakonima dinamike, dijelovanje sila na kruto tijelo stvara gibanje. Brzinu i poziciju broda u prostoru prikazuje se u odnosu na neku referentnu točku u prostoru. Dakle, dinamički model pretvara sile u brzine, dok kinematički model te brzine prikazuje u prostoru u odnosu na neku referentnu točku.

%%%%%%%%%%%%%%%%%%%%%%		AKTUATORI		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Modeliranje aktuatora}

\subsection{Modeli propulzora}

Propulzori se općenito koriste za stvaranje sila i momenata plovila. Na osovinu je postavljen propeler koji zakretanjem svojim krilcima zahvaća vodu i na taj način generira silu potiska. Kretanje plovila ostvaruje se pomoću sile potiska. Sila stvorena na ovaj način ovisi o mnoštvu faktora, npr. obliku i kutu nagiba krilca propelera, kutnoj brzini osovine, gustoći fluida itd. Dakle, općenito je sila potiska opisana nelinearnom funkcijom više varijabli. Kod konvencionalnih propelera nagib krilca propelera je nepromjenjiv, a može se pretpostaviti da je i gustoća fluida konstantna. Tim pojednostavljenjem, sila potiska se svodi na nelinearnu funkciju brzine vrtnje propelera. Prema \cite{ref_10}, sila potiska može se izraziti jednadžbom

\begin{equation}\label{eq:silaPotiska}
{\tau}^i = a_1 \left| {n}^i \right| {n}^i - a_2 \left| {n}^i \right| u_a
\end{equation}

\noindent gdje su $a_1$ i $a_2$ pozitivne konstante, $n^i$ je brzina vrtnje osovine, a $u_a$ je brzina okolne vode izražena s

\begin{equation}\label{eq:okolnaBrzinaVode}
u_a = \left( 1 - u_{wake} \right) U
\end{equation}

\noindent gdje je $u_{wake}$ tzv. \emph{wake speed} odnosno brzina kod koje je još moguće manevrirati plovilom, a $U$ je apsolutna brzina plovila. Ovakav model potisnika naziva se \emph{bilinearnim}. Ako se pretpostavi da se plovilo kreće relativno malim brzinama, može se zanemariti zadnji član u \ref{eq:silaPotiska}, te se dobije konačna pojednostavljena jednadžba sile potiska u obliku kvadratne funkcije.

\begin{equation}\label{eq:silaPotiskaKvadratna}
{\tau}^f = a \left| {n}^f \right| {n}^f 
\end{equation}

\noindent Ovim modelom podrazumijeva se da je generirana sila potiska za oba smjera brzine vrtnje osovine propelera jednaka, što u stvarnosti nije tako. Propeler je dizajniran tako da pri pozitivnom smjeru brzine vrtnje stvara veću silu nego kod iste brzine u drugom smjeru. Model propulzora u negativnom smjeru vrtnje opisan je također kvadratnom karakteristikom \ref{eq:silaPotiskaKvadratnab} samo sa drugim koeficijentom. Ovakav model potvrđen je interpolacijom točaka mape propulzora.

\begin{equation}\label{eq:silaPotiskaKvadratnab}
{\tau}^b = b \left| {n}^b \right| n^b
\end{equation}

\noindent Konačni pretpostavljeni model glavnog propulzora dan je s

\begin{equation}\label{eq:modelGlavnogPropulzora}
\tau_1 \left( {n_1} \right)  = \left\{ {\begin{array}{*{20}c}
   \hfill {a \, {n_1}^2} \\
   \hfill {-b \, {n_1}^2} \\
\end{array}} \right.\begin{array}{*{20}l}
   {{\textrm{$ n_1 > 0$}}} \hfill  \\
   {{\textrm{$n_1 < 0$}}} \hfill  \\
\end{array}
\end{equation}

\noindent gdje $a$ i $b$ predstavljaju parametre propulzora pri pozitivnom odnosno negativnom smjeru vrtnje. Potrebno je još modelirati tunelski propulzor. Kod tunelskog propulzora sila potiska stvara se rotacijom lopatica oko osi okomite na površinu fluida kako je prikazano na slici \ref{fig:skicaTunelProp}. Ljubičastom bojom prikazan je smjer rotacije lopatica, dok je plavom bojom prikazan smjer toka fluida. Smjer generirane sile potiska suprotan je smjeru toka fluida.

\begin{figure}[H]  
\centering 
\includegraphics[width=10cm]{fig/tunelThrusterSketch.png} 
\caption{\emph{Princip rada tunelskog propulzora}} 
\label{fig:skicaTunelProp}  
\end{figure}

\noindent Mapiranjem propulzora je utvrđeno da je ovisnost sile potiska o brzini vrtnje kvadratna i stoga je pretpostavljeni model tunelskog propulzora dan jednadžbom

\begin{equation}\label{eq:silaPotiskaLinearna}
\tau_{3,4} = c \left| {n_{3,4}} \right| n_{3,4} \, .
\end{equation}

%%%%%%%%%%%%%%%%%%%%%%		MODEL KORMILA			  %%%%%%%%%%%%%%%%%%%%%

\subsection{Model kormila}

Kormilo se koristi za zaošijanje plovila oko njegove z-osi. Sila koju stvara kormilo broda ortogonalna je na površinu kormila. Ta sila može se opisati
jednadžbom \ref{eq:jednadzbaKormila}, gdje $\delta_a$ predstavlja relativni kut između kormila i protoka vode, odnosno kut napada, eng. \emph{angle of attack}, $\delta_s$ predstavlja kut kormila pri kojem se postiže maksimalni moment zaošijanja, eng. \emph{stall angle}, a $c_F$ predstavlja koeficijent kormila. U slučaju da je bočna brzina $v$ zanemariva, a brzina zaošijanja $r$ mala, kut napada $\delta_a$ može se aproksimirati kutem kormila $\delta$.

\begin{equation}\label{eq:jednadzbaKormila}
\tau_2 = c_F v_{av}^2 sin(\frac{\pi}{2}\frac{\delta_a}{\delta_s})
\end{equation}

\noindent Prema \cite{Fossen_Cybership:03} parametar $v_{av}$ predstavlja prosječni protok vode u području koje zahvaća kormilo i može se opisati izrazom

\begin{equation}\label{eq:jednadzbaKormila2}
v_{av}^2 = u_a^2  + C_T\tau_1
\end{equation}

\noindent u kojem $u_a$ predstavlja brzinu okolne vode dok je $C_T$ konstanta. Ako se zanemari utjecaj strujanja okolne vode, tada je $u_a \approx U$, a poznato je da je $U = \sqrt{u^2 + v^2}$. Ako je brzina zanošenja plovila relativno mala u odnosu na brzinu napredovanja $(u)$, tada je $U \approx u$, a brzina napredovanja može se izraziti preko sile glavnog potisnika $u^2 = f(\tau_1)$. U slučaju da nije moguće zanemariti utjecaj strujanja vode, tada se parametar $u_a$ može promatrati kao nesigurnost u modeliranju. Na opisani način dobije se pojednostavljeni izraz za silu kormila \ref{eq:jednadzbaKormilaPojedn}. Pomoću slike \ref{fig:rudderCloseup} moguće je lakše vizualizirati dani model.

\begin{equation}\label{eq:jednadzbaKormilaPojedn}
\tau_2 = c_F v_{av}^2 sin(\frac{\pi}{2\delta_s}\delta) \approx c_Fv_{av}^2 \frac{\pi}{2\delta_s} \approx k_F\tau_1\delta
\end{equation}

\begin{figure}[H]  
\centering 
\includegraphics[width=9cm]{fig/rudderCloseup.png} 
\caption{\emph{Matematički model kormila}} 
\label{fig:rudderCloseup}  
\end{figure}


%%%%%%%%%%%%%%%%%%%%%%		ALOKACIJA			  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Alokacija aktuatora}

Potisnici modela broda raspoređeni su po uzoru na klasični razmještaj brodskih aktuatora kako je prikazano na slici \ref{fig:allocation}. Pretpostavljeno je da su udaljenosti od oba bočna potisnika do centra mase broda jednake i definirane su sa $L_1$, a udaljenost od osovine kormila do centra mase broda definirana je sa $L_2$. Smjer djelovanja sila definiran je također kako je prikazano na slici. Alokacija aktuatora broda povezuje vektore sila proizvedene potisnicima i kormilom sa vektorima sila koje uistinu djeluju na trup plovila u koordinatnom sustavu plovila koji je smješten u centar mase plovila.

\begin{figure}[H] 
\centering
\includegraphics[width=14cm]{fig/allocation.png} 
\caption{\emph{Cybership i njegova konfiguracija propulzije}}  
\label{fig:allocation}   
\end{figure}

\noindent
Iz slike \ref{fig:allocation} mogu se raspisati jednadžbe alokacije potisnika:

\begin{align}
X &= \tau_1 - \tau_2 sin\delta \label{eq:allocationX} \\	
Y &= -\tau_2 cos\delta + \tau_3 + \tau_4 \label{eq:allocationY} \\ 
N &= L_2\tau_2cos\delta + L_1\tau_3 - L_1\tau_4 \label{eq:allocationN}
\end{align}

\noindent 
Kao što je spomenuto, alokacijom se sile potisnika i kormila vektorski zbrajaju u sile koje djeluju na trup broda. Kod upravljanja brodom, izlazi iz regulatora pojedinog stupnja slobode $\left( x, y, \psi \right)$ su zapravo sile kojima treba djelovati na trup broda $\left( X, Y, N \right)$. Te sile potrebno je ponovo razložiti na sile potisnika i kormila, odnosno potrebno je izvršiti inverznu alokaciju. Inverz funkcije točne alokacije u pravilu nije jednoznačno određen, što je moguće vidjeti iz \ref{eq:allocationX} $-$ \ref{eq:allocationN}, i zbog toga je alokaciju potrebno pojednostaviti do te mjere da njen inverz bude jednoznačno određen. Za male iznose otklona kormila jednadžbe \ref{eq:allocationX} $-$ \ref{eq:allocationN} mogu se pojednostaviti uvođenjem $sin\delta \approx \delta$, $cos\delta \approx 1$ i $\delta^2 = 0$, iz čega slijede pojednostavljeni izrazi alokacije:

\begin{align}
X &= \tau_1 \label{eq:allocationSimpX} \\ 
Y &= -k_F \delta \tau_1 + \tau_3 + \tau_4 \label{eq:allocationSimpY} \\
N &= L_2 k_F \delta \tau_1 + L_1\tau_3 - L_1\tau_4 \label{eq:allocationSimpN}
\end{align}
 
\noindent
Jednadžbama \ref{eq:allocationSimpX} $-$ \ref{eq:allocationSimpN} dana je pojednostavljena ali potpuna alokacija broda. Kod upravljanja brodom, osim u kritičnim situacijama, kormilo i tunelski propulzori se nikad ne koriste istovremeno. Razlog tomu je što se brodom općenito upravlja na dva načina. Prvi način je krstarenje, eng. \emph{cruising} i kod njega se upravlja samo glavnim potisnikom $\tau_1$ i kormilom $N_r$. Pri većim brzinama napredovanja tunelski propulzori su vrlo neefikasni, troše mnogo energije uz vrlo mali učinak. Također problem ih je neprastano pokretati i gasiti, pri svakoj promjeni kursa. U tom slučaju bolje je koristiti kormilo jer zakretni moment proizveden kormilom $N_r$ ovisi o sili $\tau_1$ proizvedenoj glavnim potisnikom
$N_r = L_1 k_F \delta \tau_1$ koja je pri većim brzinama veća. Za stvaranje momenta, na kormilo nije potrebno neprestano trošiti energiju, kao što je to slučaj s bočnim potisnicima. Zbog velike brzine napredovanja, zanemaruje se bočna komponenta sile $Y$. Dakle, alokacija broda pri krstarenju može se svesti na reducirani oblik prema:

\begin{align}
X &= \tau_1   \label{eq:allocationCruisingX} \\ 
Y &= -k_F \delta \tau_1 \approx 0    \label{eq:allocationCruisingY} \\
N &= L_2 k_F \delta \tau_1    \label{eq:allocationCruisingN}
\end{align}

\noindent
Pri krstarenju, pretpostavlja se da je sila napredovanja različita od nule i približno konstantna. S tom pretpostavkom, inverz alokacije dobije se izravno prema: 

\begin{align}
\tau_1 &= X \approx const.   \label{eq:invAllocCruisingX} \\ 
\delta &= \frac{N}{L_2 k_F \tau_1}    \label{eq:invAllocCruisingN}
\end{align}

\noindent 
Drugi način upravljanja je kretanje pomoću tzv. sporih manevara, eng. \emph{low-speed maneuvering} pri čemu se koriste glavni potisnik sa silom $\tau_1$ te tunelski potisnici sa silama $\tau_2$ i $\tau_3$. Pri sporom kretanju glavni potisnik je puno manje aktivan nego pri krstarenju i kormilo nema gotovo nikakav utjecaj na moment $N$. Zbog toga se koriste tunelski propulzori. Kod sporih manevara, otklon kormila je jednak nuli odnosno utjecaj kormila se zanemaruje i razlaganje sila može se prikazati matričnom jednadžbom, odnosno alokacijskom matricom:
\begin{align} \label{eq:allocDP}
\begin{bmatrix}
X \\ Y \\ N
\end{bmatrix}
&= 
\begin{bmatrix}
1 & 0 & 0\\
0 & 1 & 1 \\
0 & L_1 & -L_1
\end{bmatrix}
\begin{bmatrix}
\tau_1 \\ \tau_3 \\ \tau_4
\end{bmatrix}
\end{align}

\noindent
Inverzna alokacija može izraziti traženjem inverza ili pseudo-inverza alokacijske matrice odnosno $\mathbf{A^{-1}}$. Inverzna alokacija kod sporog kretanja može se matrično prikazati jednadžbom:
\begin{align} \label{eq:invAllocDP}
\begin{bmatrix}
\tau_1 \\ \tau_2 \\ \tau_3
\end{bmatrix}
&= 
\begin{bmatrix}
1 & 0 & 0\\
0 & \frac{1}{2} & \frac{L_1}{2} \\
0 & \frac{1}{2} & -\frac{L_1}{2}
\end{bmatrix}
\begin{bmatrix}
X \\ Y \\ N
\end{bmatrix}
\end{align} \\


%%%%%%%%%%%%%%%%%%%%%%		KINEMATIKA		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Kinematički model broda} \label{chap:kinematicModel}

Kinematika je grana fizike koja se bavi proučavanjem gibanja, ne razmatrajući pritom uzrok gibanja. Prije svega je potrebno definirati koordinatne sustave u kojima će se proučavati gibanje. Poznato je da je pozicija nekog tijela u prostoru jednoznačno određena \emph{Eulerovim} koordinatama u odnosu na ishodište nekog koordinatnog sustava. Eulerove koordinate plovila čine dio vektora stanja plovila i definirane su vektorom \ref{eq:eulerCoord}. Os \emph{apscisa} okrenuta je prema sjeveru, os \emph{ordinata} pokazuje prema istoku, a os \emph{aplicata} je okrenuta tako da zajedno čine desno orijentirani koordinatni sustav, odnosno tako da ulazi u vodu. Takav sustav se naziva \emph{inercijski} koordinatni sustav, označava se sa $\{\mathbf{I}\}$. U \cite{ref_14} se također može pronaći da se takav koordinatni sustav naziva i \emph{NED frame} skraćeno od \emph{North-East-Down frame} i označava se sa $\{ \mathbf{N} \}$. Jedan takav sustav prikazan je na slici \ref{fig:earthFrame}.

\begin{figure}[H] 
\centering
\includegraphics[width=8cm]{fig/earthFrame.png} 
\caption{\emph{Inercijski koordinatni sustav}}  
\label{fig:earthFrame}   
\end{figure}

\noindent 
U večini primjena inercijski koordinatni sustav definiran je lokalno, odnosno za svaki lokalitet postavljeno je vlastito ishodište. Polumjer Zemlje u pravilu je mnogo veći od područja od interesa pa se utjecaj zakrivljenosti Zemlje zanemaruje, te se lokalni sustav promatra kao ravna ploha. Cilj upravljanja brodom je općenito zadan kao točka, putanja ili trajektorija u $\{ \mathbf{I} \}$ koordinatnom sustavu.
\begin{align} \label{eq:eulerCoord}
\eta &= {\begin{bmatrix} x & y & z & \theta & \phi & \psi \end{bmatrix}}^T
\end{align}

\noindent 
Gibanje površinskih plovila ograničeno je na horizontalnu ravninu. Također, pretpostavlja se da je brod inherentno stabilan na stupnjeve slobode valjanja $\phi$ i poniranja $\theta$, odnosno da se o tim stupnjevima slobode brinu balastni sustav i sustav trima broda. Uvođenjem takvih pojednostavljenja dobiva se reducirani oblik vektora pozicije i orijentacije broda prema \ref{eq:eulerSimple}.
\begin{align} \label{eq:eulerSimple}
\eta &= {\begin{bmatrix} x & y & \psi \end{bmatrix}}^T
\end{align}

\noindent 
Drugi dio vektora stanja broda određen je brzinama kretanja i kutnim brzinama zakretanja. Brzina kretanja plovila definirana je u koordinatnom sustavu plovila, koji se naziva \emph{Body frame} i označava se sa $\{ \mathbf{B} \}$. Vektor brzina plovila definiran je sa \ref{eq:velocitiesFull}. Unaprijedna brzina označava se sa $u$, brzina zanošenja sa $v$, a zaranjanja sa $w$, kutna brzina valjanja označava se sa $p$, poniranja sa $q$ i zaošijanja sa $r$, kako je prikazano na slici \ref{fig:kinematicModel}.
\begin{align} \label{eq:velocitiesFull}
\nu &= {\begin{bmatrix} u & v & w & p & q & r \end{bmatrix}}^T
\end{align}

\noindent 
Spomenutim pretpostavkama, vektor brzina plovila može se pojednostaviti na svoj reducirani oblik:
\begin{align} \label{eq:velocitiesSimple}
\nu &= {\begin{bmatrix} u & v & r \end{bmatrix}}^T
\end{align}

\begin{figure}[H] 
\centering
\includegraphics[width=12cm]{fig/kinematicModel.png} 
\caption{\emph{Kinematički model plovila}}  
\label{fig:kinematicModel}   
\end{figure}

\noindent 
Zadatak kinematičkog modeliranja je transformiranje vektora koordinata i brzina broda iz koordinatnog sustava broda u inercijski. Ishodište koordinatnog sustava broda nalazi se u centru mase broda, odnosno pomiče i zakreće se istom brzinom kao sam brod, zbog čega u tom koordinatnom sustavu brod uvijek ima koordinate $ {\begin{bmatrix} 0 & 0 & 0\end{bmatrix}}^T $. Jedino smisleno je transformirati vektor brzina. Vektor brzina u inercijskom koordinatnom sustavu predstavljaju vremenske derivacije pozicije  $ {\begin{bmatrix} \dot{x} & \dot{y} & \dot{\psi}\end{bmatrix}}^T $. Iz slike \ref{fig:kinematicModel} mogu se izvesti jednadžbe kinematičkog modela koje su dane matričnom jednadžbom  \ref{eq:kinematicModel}. Matrica koja množi vektor brzine broda u \emph{Body frame}-u naziva se još i rotacijska matrica i označava se sa $\mathbf{R_\psi}$.

\begin{align} \label{eq:kinematicModel}
\begin{bmatrix}\dot{x} \\\dot{y}\\\dot{\psi} \end{bmatrix} &=
\begin{bmatrix}cos(\psi) & -sin(\psi) & 0 \\ sin(\psi) & cos(\psi) & 0\\0
& 0 & 1 \end{bmatrix} \begin{bmatrix}u\\v\\r \end{bmatrix} 
\end{align}



%%%%%%%%%%%%%%%%%%%%%%		DINAMIKA			  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Dinamički model broda} \label{chap:modelDinamika}

Temeljni zakoni fizike govore da svako tijelo koje posjeduje masu, posjeduje i dinamiku. Brod zbog svoje velike mase, hidrodinamičkog trenja i niza drugih čimbenika posjeduje određene dinamičke karakteristike. Djelujući ograničenim silama potisnika, vektor brzina broda relativno sporo se mijenja prema zakonima dinamike. Dinamički model opisuje kako se mijenja vektor brzina odnosno pozicija broda kada na brod djeluju određene sile i momenti. Cjeloviti dinamički model plovila veoma je složen, nelinearan i varijable stanja međusobno su spregnute. Parametre takvog modela bilo bi vrlo teško ili pak nemoguće identificirati. U \cite{Fossen:94} predložen je matematički model kojim se opisuje gibanje po svih šest stupnjeva slobode:

\begin{align} \label{eq:dynamicModelFull}
\boldsymbol{M\dot{\nu}+C(\nu)\nu + D(\nu)\nu + g(\eta)} &= \boldsymbol{g_0 + w + \tau}
\end{align}

\noindent 
Vektor $\nu$ definiran je prema \ref{eq:velocitiesFull}, dok je vektor $\tau$ definiran prema \ref{eq:forcesFull} i predstavlja vektor upravljačkih sila kojima se djeluje na trup broda.

\begin{align} \label{eq:forcesFull}
\tau &= {\begin{bmatrix} X & Y & Z & K & M & N \end{bmatrix}}^T
\end{align}

\noindent 
X, Y i Z označavaju sile napredovanja, zanošenja i zaranjanja, dok su K, M i N momenti valjanja, poniranja i zaošijanja, respektivno. Matrica $\mathbf{M}$ naziva se inercijskom matricom i opisuje sile i momente uzrokovane masom odnosno momentom inercije pojedinog stupnja slobode. Matrica $\mathbf{C}$ naziva se \emph{Coriolis-Centripetalna} matrica i modelira centripetalne i Coriolisove sile. Matrica $\mathbf{D}$ naziva se matrica prigušenja \emph{Damping matrix} i opisuje sile nastale djelovanjem hidrodinamičkog trenja i ostalih sila koje se suprotstavljaju gibanju. Vektor $g$ opisuje silu gravitacije, vektor $g_0$ sustav balasta, a $w$ je vektor pogreške modela.

Opisani dinamički model može se znatno pojednostaviti uvođenjem nekoliko pretpostavki. Najprije se može pretpostaviti da se brod giba po horizontalnoj ravnini $\left(z = 0\right)$, te da nije potrebno upravljati stupnjevima slobode valjanja $\phi$ i poniranja $\theta$ tj. \emph{roll} i \emph{pitch}. Ovakvim pojednostavljenjem, sustav šest diferencijalnih jednadžbi drugog reda svodi se na sustav samo tri jednadžbe. Vektor $\tau$ time se svodi na:

\begin{align} \label{eq:forces}
\tau &= {\begin{bmatrix} X & Y & N \end{bmatrix}}^T
\end{align}

\noindent 
Vektor gravitacije djeluje u smjeru z-osi, i može se eliminirati iz početne jednadžbe. Utjecaj balasta ne postoji jer model broda ne posjeduje balastni sustav. Druga pretpostavka glasi da je utjecaj Coriolisovih i centripetalnih sila zanemariv zbog malih brzina kretanja i time nestaje matrica $\mathbf{C}$. Početna jednadžba \ref{eq:dynamicModelFull} time poprima oblik:

\begin{align} \label{eq:dynamicModelReduced}
\boldsymbol{M\dot{\nu} + D\nu} &= \boldsymbol{w + \tau}
\end{align}

\noindent
Matrice $\mathbf{M}$ i $\mathbf{D}$ definirane su kao:

\begin{equation} \label{eq:dynamicModelMatrices}
\boldsymbol{M} = \begin{bmatrix} 
\alpha_u & \alpha_{u,v} & \alpha_{u,r} \\
\alpha_{v,u} & \alpha_v & \alpha_{v,r} \\
\alpha_{r,u} & \alpha_{r,v} & \alpha_r
\end{bmatrix}
\boldsymbol{D} = \begin{bmatrix} 
\beta_u & \beta_{u,v} & \beta_{u,r} \\
\beta_{v,u} & \beta_v & \beta_{v,r} \\
\beta_{r,u} & \beta_{r,v} & \beta_r
\end{bmatrix}
\end{equation}

\noindent 
Ako se raspiše jednadžba \ref{eq:dynamicModelReduced}, može se uočiti da je sustav opisan ovim matricama spregnut. Spregnut model teško je identificirati i zato je potrebno još dodatno pojednostaviti model na nespregnuti. Pretpostavlja se da je model broda izgrađen potpuno simetrično u odnosu na geometrijsko središte broda i da je centar mase broda smješten u njegovo geometrijsko središte. Time se zanemaruje međusobna sprega pojedinih stupnjeva slobode, i u matricama $\mathbf{M}$ i $\mathbf{D}$ preostaju samo elementi na njihovim dijagonalama.

\begin{equation} \label{eq:dynamicModelMatricesReduced}
\boldsymbol{M} = \begin{bmatrix} 
\alpha_u &0 & 0 \\
0 & \alpha_v & 0 \\
0 & 0 & \alpha_r
\end{bmatrix}
\boldsymbol{D} = \begin{bmatrix} 
\beta_u & 0 & 0 \\
0 & \beta_v & 0 \\
0 & 0 & \beta_r
\end{bmatrix}
\end{equation}

\noindent 
Ako se matrice \ref{eq:dynamicModelMatricesReduced} uvrste u \ref{eq:dynamicModelReduced}, dobiju se jednadžbe koje predstavljaju konačan, pojednostavljeni oblik dinamičkog modela, spreman za identifikaciju.

\begin{align} 
\label{eq:dynamicModel1}
\alpha_u\dot{u} + \beta_uu & = w_u + X \\  
\label{eq:dynamicModel2}
\alpha_u\dot{v} + \beta_vv &= w_v + Y  \\ 
\label{eq:dynamicModel3}
\alpha_r\dot{r} + \beta_rr &= w_r + N   
\end{align}

\noindent 
Kod identifikacije parametara modela, pretpostavlja se da ne postoji greška modela. Postoji šest parametara koje je potrebno identificirati. Svaki stupanj slobode sadrži po dva parametra, inercijski parametar $\alpha_\nu$ i parametar prigušenja $\beta_\nu$. Parametar $\alpha_\nu$ je konstantan kod svih stupnjeva slobode, jer se pretpostavlja da se masa, odnosno moment inercije tokom vremena ne mijenjaju. Parametar prigušenja $\beta_\nu$ u ovisnosti o brzini može se modelirati linearno, kvadratno ili kao zbroj linearnog i kvadratnog prigušenja prema \ref{eq:damping}.

\begin{align} \label{eq:damping}
\beta(\nu) &= \begin{cases} 
\beta_v & \mbox{za linearno prigušenje} \\
\beta_{\nu\nu}|\nu| &\mbox{za kvadratno prigušenje} \\
\beta_\nu + \beta_{\nu\nu}|\nu| &\mbox{za (linearno + kvadratno) prigušenje}
\end{cases} 
\end{align}

\noindent 
Prigušenje je najtočnije opisano zbrojem linearne i kvadratne karakteristike. Zbog relativno male brzine kretanja, kvadratni dio karakteristike prigušenja ima vrlo mali utjecaj na dinamiku sustava. Zbog toga je opravdano koristiti samo linearni dio karakteristike prigušenja.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%		 IDENTIFIKACIJA MODELA BRODA	 	     %%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Identifikacija matematičkog modela}

Matematički model sustava određen je modeliranjem i alokacijom aktuatora te njegovim kinematičkim i dinamičkim modelom. Da bi model sustava bio upotrebljiv potrebno je što je preciznije moduće identificirati njegove parametre. U ovom poglavlju opisan je postupak mapiranja potisnika odnosno mjerenje sile ovisno o zadanim referentnim vrijednostima. Također opisana je identifikacija parametara dinamičkog modela sustava pomoću metode vlastitih oscilacija eng. \emph{Identification by use of Self-Oscilations} skraćeno (\emph{IS-O}). Teorijska pozadina primjena vlastitih oscilacija sustava u svrhe identifikacije dostupna je u \cite{ref_10}.

%%%%%%%%%%%%%%%%%%%%%%		MAPIRANJE POTISNIKA  		 %%%%%%%%%%%%%%%%%%%%%%%%%
\section{Mapiranje potisnika}

Da bi bilo moguće upravljati brodom, potrebno je znati kojih su iznosa sile koje stvaraju potisnici u ovisnosti o njihovoj referentnoj veličini. To je moguće postići izradom mape potisnika. Za $n$ ekvidistantnih točaka na cijelom području upravljačkog signala mjeri se sila generiranog potiska. Nakon toga se nekom od metoda interpolacije generira krivulja čija funkcija matematički eksplicitno opisuje ovisnost potiska o upravljačkom signalu. Također bitno je da ta matematička funkcija ima definiran svoj inverz. Inverzom te funkcije nastoji se kompenzirati njene nelinearnosti.

Prvo se mapiran glavni potisnik. U tom slučaju je upravljački signal brzina vrtnje elektromotora glavnog potisnika izražena u postocima, dok je sila potiska mjerena digitalnom vagom i izražena u $[N]$. Na slici \ref{fig:thrusterMap} prikazani su rezultati mjerenja sila glavnog potisnika u oba smjera vrtnje i interpolirane kvadratne krivulje koje opisuju dobivenu karakteristiku. Može se primjetiti da se funkcija sila ovisno o brzini vrtnje razlikuje za jedan smjer u odnosu na drugi, ali funkcija je u oba smjera kvadratna. Dobivene nelinearnosti eliminiraju se inverznim mapiranjem potisnika, odnosno korjenovanjem. Potisak u smjeru prema naprijed može se izraziti kao $\tau_1 = 6.335\cdot10^{-5}{n_1}^2$, dok se potisak u smjeru prema natrag može izraziti kao $\tau_1 = -1.429\cdot10^{-5}{n_1}^2$.
 
\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/thrusterMap.pdf}
\caption{\emph{Mapa glavnog potisnika}}
\label{fig:thrusterMap}
\end{figure}

\noindent 
Bočni propulzori mapiraju se tako što se istovremeno mjeri sila oba bočna potisnika. Mjerenja bočnih potisnika provedena su pomoću digitalne vage i prikazana su na slici \ref{fig:tunnelThrusterMap}. Postupkom interpolacije iz mjerenih točaka je dobiveno da je funkcija koja opisuje silu kvadratna i dana je izrazom  $\tau_{3,4} = 5.7125 \cdot 10^{-6}\left| {n_{3,4}}\right| n_{3,4} $.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/tunnelThrusterMap.pdf}
\caption{\emph{Mapa tunelskih potisnika}}
\label{fig:tunnelThrusterMap}
\end{figure}

\noindent 
Silu $\tau_2$ kormila može se mjeriti ako se model broda fiksira oko osi koja prolazi približno kroz njegov centar mase npr. pomoću osovine i kugličnog ležaja. Trenje kugličnog ležaja u ovom slučaju se zanemaruje. Mjeri se sila $\tau_2 \, cos\delta$ koja djeluje u smjeru $y$ koordinatnog sustava broda. Mjerenja su također izvršena digitalnom vagom i prikazana su na slici \ref{fig:rudderMap} crveno-žutim točkama. Plavo-žutim točkama prikazana je sila $\tau_2$ koja djeluje okomito na površinu kormila. Kod alokacije odnosno \ref{eq:allocationCruisingN} pretpostavljeno je da pri malim kutevima otklona kormula vrijedi $cos\delta \approx 1$. Iz grafa se može uočiti kako porastom kuta kormila raste i greška $\varepsilon = \tau_2 - \tau_2 \, cos\delta$. Zbog te greške, za model kormila interpolira se izvorno mjerena, ortogonalna komponenta sile $\tau_2$.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/rudderMap.pdf}
\caption{\emph{Mapa kormila}}
\label{fig:rudderMap}
\end{figure}

\noindent 
Mjerenja su vršena pri maksimalnoj sili glavnog potisnika $\tau_1$ koja iznosi $0.6335 \, N$. Interpolacijom je dobiveno da je karakteristika sile opisana sa $\tau_2 = 5.578 \cdot 10^{-3} \delta$. Model kormila dan je izrazom  $\tau_2 = k_F \delta \tau_1$ iz čega trivijalno slijedi iznos konstante kormila $k_F = 8.8051 \cdot 10^{-3}$. U tablici \ref{tab:actuatorModels} dani su izrazi za modele aktuatora.

\begin{table}[H]
\caption{Matematički modeli aktuatora}
\centering
\begin{tabular}{c|c}
Aktuator & Matematički model aktuatora \\ \hline \hline
Glavni propulzor & $ \tau_1 \left( {n_1} \right)  = \left\{ {\begin{array}{*{20}c} \hfill {6.335\cdot10^{-5} \, {n_1}^2} \\ \hfill {-1.429\cdot10^{-5} \, {n_1}^2} \end{array}} \right. \begin{array}{*{20}l} {{\textrm{za $ n_1 > 0$}}} \hfill \\ {{\textrm{za $n_1 < 0$}}} \hfill \end{array} $
\\ \hline
Kormilo & $ \tau_2 = 8.8051 \cdot 10^{-3} \delta \tau_1 $ \\ \hline
Tunelski propulzori & $\tau_{3,4} = 5.7125 \cdot 10^{-6} \left| n_{3,4} \right|  n_{3,4}$
\end{tabular} 
\label{tab:actuatorModels} 
\end{table} 

%%%%%%%%%%%%%%%%%%%%%%		VLASTITE OSCILACIJE  		 %%%%%%%%%%%%%%%%%%%%%%%%%
\section{Metoda vlastitih oscilacija}

Vlastite oscilacije svojstvene su nelinearnim sustavima upravljanja, predstavljaju stanje sustava u kojem sustav oscilira oko neke izlazne vrijednosti bez promjene referentne veličine. Općenito je takvo vladanje sustava nepoželjno i nastoji ga se izbjeći. Vlastite oscilacije mogu se koristiti i za identifikaciju parametara sustava. Više o vlastitim oscilacijama i njihovim primjenama u sustavima automatskog upravljanja moguće je pronaći u \cite{ref_10}. U ovom radu neće biti iznesena teorijska pozadina \emph{IS-O} metode, već su samo dani konačni izrazi korišteni za identifikaciju i dobiveni rezultati.

Pretpostavljeni dinamički model sustava dan je u poglavlju \ref{chap:modelDinamika} jednadžbama \ref{eq:dynamicModel1} $-$ \ref{eq:dynamicModel3}. Iz tih jednadžbi mogu se izvesti prijenosne funkcije za svaki od triju stupnjeva slobode, dane u tablici \ref{tab:transferFunctions}.

\begin{table}[H]
\caption{Prijenosne funkcije dinamičkog modela}
\centering
\begin{tabular}{c|c}
Stupanj slobode & Prijenosna funkcija dinamičkog modela \\ \hline \hline
Napredovanje & $ G_x(s) = \frac{x(s)}{X(s)} = \frac{\frac{1}{\beta_u}}{s \left( \frac{\alpha_u}{\beta_u}s + 1 \right)} = \frac{K_u}{s \left( T_u\,s + 1 \right)}$ \\ \hline
Zanošenje & $ G_y(s) = \frac{y(s)}{Y(s)} = \frac{\frac{1}{\beta_v}}{s \left( \frac{\alpha_v}{\beta_v}s + 1 \right)} = \frac{K_v}{s \left( T_v\,s + 1 \right)}$ \\ \hline
Zakretanje & $ G_\psi(s) = \frac{\psi(s)}{N(s)} = \frac{\frac{1}{\beta_r}}{s \left( \frac{\alpha_r}{\beta_r}s + 1 \right)} = \frac{K_r}{s \left( T_r\,s + 1 \right)}$
\end{tabular} 
\label{tab:transferFunctions} 
\end{table} 

\noindent 
Vlastite oscilacije provode se za svaki od navedenih stupnjeva slobode i snimaju se odzivi. Iz karakteristika dobivenih odziva računaju se parametri modela sustava prema izrazima:

\begin{equation} 
\label{eq:ISOalpha}
\alpha_\nu  = \frac{2C}{\pi}\frac{1}{\omega^2 X_m}\left[ \sqrt{1 - {\left( \frac{x_a - x_0}{X_m} \right)}^2}  + \sqrt {1 - {\left( \frac{x_a + x_0} {X_m} \right)}^2}  \right]
\end{equation}
\begin{equation}
\label{eq:ISObeta}
\beta_\nu = \frac{4Cx_a}{\pi}\frac{1}{ \omega X_m^2}
\end{equation}
%\begin{equation}
%\label{eq:ISObbeta}
%\beta _{\nu\nu} = \frac{3Cx_a}{2} \frac{1}{\omega^2 X_m^3}
%\end{equation}
\begin{equation}
\label{eq:ISOdelta}
\Delta= C\frac{T_H  - T_L}{T_H  + T_L }
\end{equation}

\noindent 
gdje su $C$ izlaz iz releja, $x_a$ širina histereze, $\omega$ frekvencija vlastitih oscilacija, $X_m$ amplituda vlastitih oscilacija, $T_H$ vrijeme periode provedeno u pozitivnom, $T_L$ vrijeme periode provedeno u negativnom.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\subsection{IS-O - zaošijanje}

Identifikacija stupnja slobode zaošijanja vrši se odvojeno za slučajeve kada se upravlja tunelskim propulzorima i kormilom. Matematički model stupnja slobode zaošijanja dan je sa:

\begin{equation}
\alpha_r \dot{r}(t) + \beta_r r(t) = \Delta + N
\end{equation}

\noindent 
gdje parametar $\alpha_r$ opisuje moment inercije sustava a $\beta_r$ prigušenje. Pretpostavljena sila prigušenja je linearna funkcija brzine s konstantnim koeficijentom prigušenja. $\Delta$ u ovoj jednadžbi predstavlja \emph{Offset} momenta, koji uključuje greške modeliranja propulzora i poremećaje iz okoline, i izraz je dan sa \ref{eq:ISOdelta} Eksperiment se provodi prema blok dijagramu na slici \ref{fig:ISOyaw}. Blok dijagram je realiziran u programu \emph{LabView}.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/ISOyaw.pdf}
\caption{\emph{Blok shema identifikacije zaošijanja}}
\label{fig:ISOyaw}
\end{figure}

\noindent 
Primjer pobude i odziva kod identificiranja stupnja slobode zaošijanja korištenjem tunelskih propulzora dan na slici \ref{fig:ISOyawOdziv2}.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/ISOyawOdziv2.pdf}
\caption{\emph{Pobuda i odziv broda pri identifikaciji parametara zaošijanja}}
\label{fig:ISOyawOdziv2}
\end{figure}

\noindent 
 Za upravljanje kormilom je proveden set od 21 IS-O eksperimenta koristeći kao razne vrijednosti momenta $N = \tau_1 \delta$ odnosno $\tau_1$ i $\delta$. Eksperimenti su provedeni u Jarunskom jezeru u Zagrebu i potvrđeni u bazenu Brodarskog instituta u Zagrebu. Rezultati su prikazani u tablici \ref{tab:ISOrudder}. Može se primjetiti da su rezultati konzistentni bez obzira na kut otklona kormila $\delta$ i silu glavnog potisnika $\tau_1$ odnosno brzinu vrtnje propelera $n_1$. To potvrđuje da su aktuatori dobro modelirani.

\begin{table}[H] 
\centering 
\caption{Rezultati IS-O stupnja slobode zaošijanja koristeći kormilo.}\label{tab:ISOrudder}
\begin{tabular}{cccccccc}
\toprule
$n$ & $\delta_c$ & $N$ & $\frac{\alpha_r}{k_F}$ & $\frac{\beta_{r}}{k_F}$ & $\frac{\beta_{rr}}{k_F}$\\
$\left [\% \right]$ &[\rm{deg}] &$\left [\rm{mNm} \right ]$ & $\left[\frac{\rm{Nms}^2}{\rm{deg}}\right]$ & $\left[\frac{\rm{Nms}\cdot 10^{-1}}{\rm{deg}}\right]$ & $\left[\frac{\rm{Nms}^2\cdot 10^{-2}}{\rm{deg}^2}\right]$\\
\midrule

 
\multirow{7}{*}{60} & 10 & 3.114 & 4.237 & 2.472 & 5.922\\
 & 20 & 6.228 & 4.356 & 3.304 & 7.205\\
 & 25 & 7.785 & 4.834 & 3.529 & 6.889\\
 & 30 & 9.342 & 5.078 & 3.851 & 7.213\\
 & 35 & 10.899 & 4.851 & 3.991 & 6.447\\
 & 40 & 12.456 & 4.538 & 3.391 & 4.710\\
 & 45 & 14.013 & 5.253 & 3.715 & 5.194\\

\midrule 
     
\multirow{7}{*}{75} & 15 & 7.298 & 4.476 & 2.973 & 5.698\\
 & 20 & 9.730 & 4.529 & 4.243 & 7.484\\
 & 25 & 12.163 & 4.625 & 4.052 & 5.965\\
 & 30 & 14.595 & 4.425 & 3.724 & 4.742\\
 & 35 & 17.028 & 4.681 & 3.845 & 4.473\\
 &  40 & 19.460 & 4.805 & 3.925 & 4.268\\
 & 45 & 21.893 & 5.835 & 3.610 & 3.714\\

\midrule   
     
\multirow{7}{*}{90} & 15 & 10.509 & 4.521 & 3.204 & 4.917\\
 & 20 & 14.012 & 4.658 & 3.407 & 4.333\\
 & 25 & 17.515 & 4.442 & 3.638 & 4.021\\
 & 30 & 21.018 & 4.461 & 3.835 & 3.753\\
 & 35 & 24.521 & 4.841 & 3.846 & 3.512\\
 & 40 & 28.024 & 5.908 & 4.357 & 3.992\\
 & 45 & 31.527 & 5.696 & 4.429 & 3.715\\


\midrule
%\multicolumn{3}{c}{$\overline{x}$}& 4.812 & 3.683 & 5.151  \\
\multicolumn{3}{c}{$\frac{\sigma_x}{\overline{x}}\cdot 100\%$}
& 10.050 & 12.527 & 25.272 \\
\bottomrule
\end{tabular} 
\end{table}

\newpage
\subsection{IS-O - napredovanje i zanošenje}

Identifikacija stupnjeva slobode napredovanja i zanošenja provodi se pomoću glavnog odnosno tunelskih potisnika. Matematički modeli koje je potrebno identificirati dani su sa:

\begin{align}
\alpha_u \dot{u}(t) + \beta_u u(t) &= \Delta + X \\
\alpha_v \dot{v}(t) + \beta_v v(t) &= \Delta + Y
\end{align}

\noindent Kod identifikacije parametara modela za stupnjeve slobode napredovanja i zanošenja ne postoje neposredna mjerenja pomaka. Međutim, moguće je mjeriti brzinu napredovanja ili zanošenja broda i integrirati je, kako je prikazano na slici \ref{fig:ISOsurgeSway}. 

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/ISOsurgeSway.pdf}
\caption{\emph{Blok shema identifikacije napredovanja i zanošenja}}
\label{fig:ISOsurgeSway}
\end{figure} 

\noindent 
Na taj način postižu se uvijeti za identifikaciju pomoću vlastitih oscilacija. Snimanjem odziva vlastitih oscilacija i računanjem njihovih svojstva, na isti način kao i kod zaošijanja, formulama \ref{eq:ISOalpha} $-$ \ref{eq:ISOdelta}, izračunaju se parametri $\alpha_u$, $\beta_u$ odnosno $\alpha_v$ i $\beta_v$. Odziv za stupanj slobode napredovanja prikazan je na slici \ref{fig:ISOsurgeOdziv}. Može se primjetiti da odziv za stupanj slobode napredovanja nije simetričan. To znači da je parametar prigušenja $\beta_u$ u suprotnim smjerovima različit. Također može značiti da glavni potisnik nije ispravno mapiran. Na slici \ref{fig:ISOswayOdziv} prikazan je odziv za stupanj slobode zanošenja i on je simetričan.
 
\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/ISOsurgeOdziv.pdf}
\caption{\emph{Pobuda i odziv broda pri identifikaciji parametara napredovanja}}
\label{fig:ISOsurgeOdziv}
\end{figure}

Odziv za stupanj slobode zanošenja prikazan je na slici \ref{fig:ISOswayOdziv}.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/ISOswayOdziv.pdf}
\caption{\emph{Pobuda i odziv broda pri identifikaciji parametara zanošenja}}
\label{fig:ISOswayOdziv}
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 ESTIMATOR STANJA BRODA	 	  %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Estimator stanja broda}
Prije dizajniranja bilo kakvih sustava upravljanja potrebno je definirati vektor stanja broda, odnosno veličine kojima se želi upravljati. Prirodno je odabrati poziciju i orijentaciju u prostoru kao tri stanja kojim se želi upravljati. Također je prirodno odabrati brzine kretanja i zaošijanja kao stanja od interesa. Na taj način može se definirati vektor stanja $x$ broda kao:

\begin{align} \label{eq:stateVector}
x &= {\begin{bmatrix} \eta & \nu \end{bmatrix}}^T = {\begin{bmatrix} x & y & \psi & u & v & r \end{bmatrix}}^T
\end{align}

\noindent 
Gotovo svi algoritami za navođenje i upravljanje koriste informacije svih šest stanja broda. Spomenuto je da se pozicija i orijentacija broda mogu mjeriti obradom slike iz kamere u laboratorijskom bazenu ili pomoću GPS-a i kompasa na otvorenom. Dakle, pozicija i orijentacija su mjerljive veličine, dok za dio vektora stanja koji opisuje brzine ne postoje mjerenja. Stanja za koja ne postoje mjerenja potrebno je estimirati iz postojećih mjerenja. Postoji nekoliko načina za estimiranje stanja. Najlakši način za estimiranje brzina je diferenciranje mjerene pozicije odnosno orijentacije. Postupak estimacije diferenciranjem prikazan je na slici \ref{fig:differentiation}.

\begin{figure}[H]
\centering
\includegraphics[width = 10cm]{fig/differentiation.pdf}
\caption{\emph{Diferenciranje pozicije i orijentacije}}
\label{fig:differentiation}
\end{figure} 

\noindent 
Glavni problem kod diferenciranja je veliki mjerni šum. Na slici \ref{fig:rNoise} zelenom bojom prikazan je tipičan odziv brzine zaošijanja $r$ dobiven diferenciranjem, dok je plavom bojom prikazan odziv dobiven korištenjem estimatora na temelju modela sustava. Može se zaključiti da $r$ dobiven diferenciranjem potpuno neupotrebljiv za upravljanje. Jedno od rješenja je uvođenje \emph{low-pass} filtra, no na taj način uvodi se kašnjenje u fazi koje može uzrokovati nestabilnost ili pojavu vlastitih oscilacija.

\begin{figure}[H]
\centering
\includegraphics[width = 13cm]{fig/rNoise.pdf}
\caption{\emph{Zašumljenost signala dobivenog diferenciranjem}}
\label{fig:rNoise}
\end{figure} 

\begin{figure}[H]
\centering
\includegraphics[width = 13cm]{fig/waveNoise.pdf}
\caption{\emph{Smetnje kod mjerenja uzrokovane valovima}}
\label{fig:waveNoise}
\end{figure}

\newpage
\noindent 
Veliki problem kod estimiranja stanja broda predstavlja djelovanje vjetra, morske struje i valova. Djelovanje valova općenito je puno veći problem od djelovanja vjetra i morskih struja. Vjetar predstavlja veoma sporo promjenjivu smetnju, zbog čega se može jednostavno kompenzirati regulatorom sa integralnim djelovanjem ili unaprijednom eng. \emph{feed-forward} komponentom upravljanja ako je dostupno mjerenje vektora brzine vjetra. Međutim valovi unose smetnju dinamike slične odnosno brže od dinamike samog broda. Primjer smetnje uzrokovane valovima prikazan je na slici \ref{fig:waveNoise}. Zbog toga je \emph{low-pass} filtrom gotovo nemoguće ukloniti smetnju valova a da se znatno ne naruši dinamika samog broda. \emph{Low-pass} filtri n-tog reda opisani su prijenosnim funkcijama prema:

\begin{align} \label{eq:lowPassFilters}
&(n = 1)& G_f(s) &= \frac{\omega_c}{s + \omega_c} \\
&(n = 2)& G_f(s) &= \frac{\omega_c ^2}{s^2 + 2 \zeta \omega_c s + \omega_c^2} \\
&(n = 3)& G_f(s) &= \frac{\omega_c ^2}{s^2 + 2 \zeta \omega_c s + \omega_c^2} \cdot \frac{\omega_c}{s + \omega_c} \label{eq:binome3}  \\
&(n = 4)& G_f(s) &= \left( \frac{\omega_c ^2}{s^2 + 2 \zeta \omega_c s + \omega_c^2} \right)^2
\end{align}

\noindent 
Povećanjem reda filtra može se povećati prigušenje smetnji, ali se na taj način unosi sve veće fazno kašnjenje koje dodatno usporava dinamiku sustava upravljanja, odnosno uzrokuje nestabilnost zatvorenog kruga. Iz spomenutih razloga, pribjegava se estimiranju stanja na temelju modela sustava, odnosno metodi aktivnog filtriranja. Na taj način filtrira se mjerni šum i uklanja se utjecaj valova jer oni nisu uključeni u model sustava. Općenito estimatori na temelju modela koriste korake predikcije i korekcije, a najrašireniji takav estimator stanja je \emph{Kalmanov filter}.


%%%%%%%%%%%%%%%%%%%%%%		DISKRETNI EKF		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Prošireni Kalmanov filter (EKF)} \label{chap:EKF}

Kalmanov filter izumio je 1960. godine mađarski znanstvenik Rudolf Emil Kalman. Poznat je još pod nazivom \emph{Linear Quadratic Estimator}. Kalmanov filter predstavlja optimalan estimator stanja u smislu minimuma varijance zašumljenog mjerenog signala. Kalmanov filter ima puno primjena u svim granama industrije i sustavima automatskog upravljanja gdje je potrebna estimacija stanja sustava kako zbog nemogućnosti mjerenja određenih stanja tako i zbog potrebe za filtriranim \emph{glatkim} signalom. Postoji mnogo inačica i podjela Kalmanovog filtra. Dvije moguće podjele su prema vremenu i linearnosti.

\noindent 
Neka je vektor stanja broda $\mathbf{x}$ definiran prema \ref{eq:stateVector}. Kombinirajući kinematički i dinamički model sustava dan sa \ref{eq:kinematicModel} odnosno \ref{eq:dynamicModel1} $-$ \ref{eq:dynamicModel3}, kontinuirani model sustava u prostoru stanja moguće je opisati sa:

\begin{equation} \label{eq:stateEqtnCont}
\mathbf{\dot{x}} = \mathbf{A}(\mathbf{x})\mathbf{x} + \mathbf{B}\mathbf{u} + \mathbf{E}\mathbf{w}
\end{equation} 

\noindent 
gdje je $\mathbf{A}$ matrica sustava, $\mathbf{B}$ ulazna matrica a $\mathbf{E}$ matrica pojačanja procesnog šuma. Vektor $\mathbf{u} = \begin{bmatrix} X & Y & N \end{bmatrix}^T$ je ulazni vektor sila, a vektor $\mathbf{w} = \begin{bmatrix} w_x & w_y & w_\psi & w_u & w_v & w_r \end{bmatrix}^T$ predstavlja procesni šum, odnosno pogrešku modela. Pretpostavlja se da se procesni šum $\mathbf{w}$ modelira Gaussovim bijelim šumom nulte srednje vrijednosti sa standardnim devijacijama danim dijagonalnom matricom $\mathbf{Q}$ = $\mathbf{Q}^T > 0$, matrica $\mathbf{E} = \mathbf{I}_{6x6}$. Shodno tome, matrice $\mathbf{A}$, $\mathbf{B}$ i $\mathbf{Q}$ zadane su izrazima:

\begin{align}\label {eq:stateSpaceCont}
\mathbf{A}(\mathbf{x}) &= \begin{bmatrix}
0 & 0 & 0 & cos \psi & -sin \psi & -u \cdot sin\psi - v \cdot cos\psi \\
0 & 0 & 0 & sin \psi & cos \psi & u \cdot cos\psi - v \cdot sin\psi \\
0 & 0 & 0 & 0 & 0 & 1 \\
0 & 0 & 0 & \frac{\beta_u}{\alpha_u} & 0 & 0 \\
0 & 0 & 0 & 0 &\frac{\beta_v}{\alpha_v} & 0 \\
0 & 0 & 0 & 0 & 0 & \frac{\beta_r}{\alpha_r}
\end{bmatrix}
\end{align}
\begin{align}
\mathbf{B} &= \begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 0 \\
0 & 0 & 0 \\
\frac{1}{\alpha_u} & 0 & 0 \\
0 & \frac{1}{\alpha_v} & 0 \\
0 & 0 & \frac{1}{\alpha_r}
\end{bmatrix}
\end{align}
\begin{align}
\mathbf{Q} &= \begin{bmatrix}
\sigma_x^2 & 0 & 0 & 0 & 0 & 0 \\
0 & \sigma_y^2 & 0 & 0 & 0 & 0 \\
0 & 0 & \sigma_\psi^2 & 0 & 0 & 0 \\
0 & 0 & 0 &\sigma_u^2 & 0 & 0 \\
0 & 0 & 0 & 0 &\sigma_v^2 & 0 \\
0 & 0 & 0 & 0 & 0 & \sigma_r^2
\end{bmatrix}
\end{align}

\newpage
\noindent 
Jednadžba mjerenja glasi:
\begin{align}
\mathbf{y} &= \mathbf{H}\mathbf{x} + \mathbf{v}
\end{align}

\noindent 
gdje je $\mathbf{H}$ matrica dostupnih mjerenja, a $\mathbf{v}$ vektor vrijednosti mjernog šuma. Pretpostavljeno je da se mjerni šum $\mathbf{v}$ također modelira Gaussovim bijelim šumom nulte srednje vrijednosti sa standardnim devijacijama danim dijagonalnom matricom $\mathbf{R}$ = $\mathbf{R}^T > 0$. Ako su dostupna mjerenja pozicije i orijentacije broda, tada su matrice $\mathbf{H}$ i $\mathbf{R}$ definirane sa:
\begin{align}\label {eq:measEqtn}
\mathbf{H} &= \begin{bmatrix}
1 & 0 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0
\end{bmatrix}
\end{align}
\begin{align}
\mathbf{R} &= \begin{bmatrix}
\sigma_x^2 & 0 & 0 \\
0 & \sigma_y^2 & 0 \\
0 & 0 & \sigma_\psi^2 \\
\end{bmatrix}
\end{align}

\noindent 
Mikrokontroler koji upravlja brodom ne radi u kontinuiranom vremenu, već ima vrijeme uzorkovanja $T_s = 0.25$ s. Proces je potrebno diskretizirati zadanim vremenom uzorkovanja. Na sličan način kao kod kontinuiranog procesa, diskretan sustav u prostoru stanja i jednadžba mjerenja definirani su sa:
\begin{align} \label{eq:stateSpaceDiscrete}
\mathbf{x}(k+1) &= \mathbf{\Phi}(\mathbf{x}(k))\mathbf{x}(k) + \mathbf{\Delta}\mathbf{u}(k) + \mathbf{\Gamma}\mathbf{w}(k) \\
\mathbf{y}(k) &= \mathbf{H}\mathbf{x}(k) + \mathbf{v}(k) \label{eq:measKalmanDiscrete}
\end{align} 

\noindent 
gdje su $\mathbf{\Phi}$, $\mathbf{\Delta}$, i $\mathbf{\Gamma}$ matrice sustava, ulaza i pojačanja procesnog šuma respektivno.
\begin{equation} \label{eq:systemMatrixDiscretization}
\mathbf{\Phi} = exp \left( \mathbf{A}T_s \right) \approx \mathbf{I} + \mathbf{A}T_s + \frac{1}{2} \left( \mathbf{A} T_s \right)^2 + ... + \frac{1}{N} \left( \mathbf{A} T_s \right)^N \\ \approx \mathbf{I} + \mathbf{A}T_s
\end{equation}
\begin{equation} 
\mathbf{\Delta} = \mathbf{A}^{-1} \left( \mathbf{\Phi} - \mathbf{I} \right) \mathbf{B} \\
\end{equation}
\begin{equation} 
\mathbf{\Gamma} = \mathbf{A}^{-1} \left( \mathbf{\Phi} - \mathbf{I} \right) \mathbf{E} \\
\end{equation} 

\noindent 
Uvrštavanjem se dobije da je $\mathbf{\Gamma} = T_s \mathbf{I}_{6x6}$ i da su matrice $\mathbf{\Phi}$ i $\mathbf{\Delta}$ dane sa:

\begin{equation}\label {eq:systemMatrixDiscrete}
\mathbf{\Phi}(\mathbf{x}) = \begin{bmatrix}
1 & 0 & 0 & cos \psi \, T_s & -sin \psi \, T_s & - \left(u \, sin\psi + v \, cos\psi \right) T_s \\
0 & 1 & 0 & sin \psi \, T_s & cos \psi \, T_s & \left(u \, cos\psi - v \, sin\psi \right) T_s \\
0 & 0 & 1 & 0 & 0 & T_s \\
0 & 0 & 0 & 1 + \frac{\beta_u}{\alpha_u} T_s & 0 & 0 \\
0 & 0 & 0 & 0 & 1 + \frac{\beta_v}{\alpha_v} T_s & 0 \\
0 & 0 & 0 & 0 & 0 & 1 + \frac{\beta_r}{\alpha_r} T_s
\end{bmatrix}
\end{equation}
\begin{equation}
\mathbf{\Delta} = \begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 0 \\
0 & 0 & 0 \\
\frac{1}{\alpha_u} T_s & 0 & 0 \\
0 & \frac{1}{\alpha_v} T_s & 0 \\
0 & 0 & \frac{1}{\alpha_r} T_s
\end{bmatrix}
\end{equation} \\
 
\noindent 
Jednadžbama \ref{eq:stateSpaceDiscrete} i \ref{eq:measKalmanDiscrete}, opisan je diskretizirani nelinearni model broda u prostoru stanja i jednadžba mjerenja. Tek nakon što je sustav opisan u prostoru stanja, može se pristupiti projektiranju Kalmanovog filtra. U ovom slučaju koristi se diskretni prošireni Kalmanov filter (D-EKF).

Princip rada D-EKF-a slikovito je prikazan na slici \ref{fig:KalmanPrinciple}. Najprije je potrebno postaviti matrice $\mathbf{Q}$ i $\mathbf{R}$. Matricom $\mathbf{Q}$ određuje se pogreška modela, a matricom $\mathbf{R}$ pogreška mjerenja. Pogreška mjerenja obično je određena pogreškom senzora i dana je u njihovim specifikacijama. Pogreška modela se postavlja ovisno o točnosti i preciznosti identificiranih parametara modela. Također, potrebno je postaviti početne vrijednosti predikcije estimata stanja i matrice kovarijanci. Korak uzorkovanja Kalmanovog filtra u pravilu sadrži računanje optimalnog Kalmanovog pojačanja, korak korekcije i korak predikcije. Korak predikcije na temelju identificiranog modela sustava i trenutnih estimiranih stanja, predviđa stanja sustava za sljedeći korak i označen je na slici \ref{fig:KalmanPrinciple} crvenom bojom. Nakon toga, u sljedećem koraku, računa se Kalmanovo pojačanje $\mathbf{Q}(k)$. Kalmanovo pojačanje koristi se za korekciju predviđenog stanja sustava i matrice kovarijanci pomoću mjerenja. Jednadžbe korištene za računanje matrica Kalmanovog filtra dane su u tablici \ref{tab:KalmanEquations}.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/KalmanPrinciple.png}
\caption{\emph{Princip rada Kalmanovog Filtra}}
\label{fig:KalmanPrinciple}
\end{figure}

\begin{table}[H]
\caption{Jednadžbe Kalmanovog filtra}
\centering
\begin{tabular}{c|l}
\hline \hline \\
Postavke filtra & $\mathbf{Q}(k) =  \mathbf{Q}^T(k) > 0$ (const.), $\mathbf{R}(k) =  \mathbf{R}^T(k) > 0$ \\[5mm]
\hline \\
Početni uvijeti & $\bar{\mathbf{x}}(0) = \mathbf{x}_0$ , $\bar{\mathbf{P}}(0) = \mathbf{P}_0$ \\[5mm]
\hline \\
Kalmanovo pojačanje & $\mathbf{K}(k) = \Bar{\mathbf{P}}(k)\mathbf{H}^T(k) \left[ \mathbf{H}(k)\Bar{\mathbf{P}}(k)\mathbf{H}^T(k) + \mathbf{R}(k) \right]^{-1}$ \\
Korekcija stanja & $\hat{\mathbf{x}}(k) = \bar{\mathbf{x}}(k) + \mathbf{K}(k) \left[ \mathbf{y}(k) - \mathbf{H}(k)  \bar{\mathbf{x}}(k) \right]$ \\
Korekcija kovarijanci & $\hat{\mathbf{P}}(k) = \left[ \mathbf{I} - \mathbf{K}(k)\mathbf{H}(k) \right] \bar{\mathbf{P}}(k) \left[ \mathbf{I} - \mathbf{K}(k)\mathbf{H}(k) \right]^T$ \\
 & \hspace{1.25cm} $ + \mathbf{K}(k) \mathbf{R}(k) \mathbf{K}^T(k)$ \\[5mm]
\hline \\
Propagacija stanja & $ \bar{\mathbf{x}}(k+1) = \mathbf{\Phi}(k)\hat{\mathbf{x}}(k) + \mathbf{\Delta} \mathbf{u}(k)$ \\
Propagacija kovarijanci & $\bar{\mathbf{P}}(k+1) = \mathbf{\Phi}(\mathbf{x}(k)) \hat{\mathbf{P}}(k)\mathbf{\Phi}^T(k) + \mathbf{\Gamma}(k)\mathbf{Q}(k)\mathbf{\Gamma}^T(k)$ \\[5mm]
\hline \hline
\end{tabular} 
\label{tab:KalmanEquations} 
\end{table} 

\begin{figure}[H]
\centering
\includegraphics[width = 14.5cm]{fig/KalmanDesign.pdf}
\caption{\emph{Implementacija Kalmanovog Filtra u LabView}}
\label{fig:KalmanDesign}
\end{figure}

\noindent 
Za izradu Kalmanovog filtra korišten je programski paket NI LabView. Estimator je izrađen kao zasebni blok s vlastitom perzistentnom memorijom. Kao ulazi u blok koriste se parametri modela sustava, upravljački vektor sila, vektor mjerenja, vrijeme uzorkovanja, dostupnost mjerenja i vrsta korištenog senzora. U ovom radu koriste se mjerenja iz dvije vrste senzora, od kamere ili GPS-a. Zbog toga se koriste različite vrijednosti matrice $\mathbf{R}$ ovisno o tome koji je senzor korišten. Također, ako mjereni podaci iz nekog razloga nisu dostupni, matrica mjerenja $\mathbf{H}$ postaje nul-matrica, čime se vektor stanja estimira isključivo na temelju modela, bez mjerenja. Blok diagram Kalmanovog filtra realiziranog u LabView-u prikazan je na slici. \ref{fig:KalmanDesign}


%%%%%%%%%%%%%%%%%%%%%%		REZULTATI EKF		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Rezultati korištenja Kalmanovog filtra}

Estimator stanja ispitan je pomoću dinamičkog pozicioniranja, najprije za stupanj slobode kuta $\psi$ i $r$, zatim za stupnjeve slobode $x$ i $y$ odnosno $u$ i $v$, i na kraju za sve stupnjeve slobode istovremeno. Na gornjem grafu slike \ref{fig:EKFyaw}, mogu se vidjeti odzivi za mjereni $\psi_m$ i estimirani $\psi_{est}$ kut orijentacije plovila i može se zaključiti da među njima nema bitne razlike. Na donjem grafu može se primjetiti velika razlika u zašumljenosti između kutne brzine $r_m$ dobivene diferenciranjem i kutne brzine $r_{est}$ estimirane Kalmanovim filtrom. %Za kvalitetno upravljanje, izuzetno je bitno da estimat brzine bude što je moguće glađi.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/EKFyaw.pdf}
\caption{\emph{Mjereni i estimirani odziv za $\psi$ i $r$}}
\label{fig:EKFyaw}
\end{figure}

\noindent 
Kod testiranja estimacije pozicije brod tijekom cijelog eksperimenta ima orijentaciju od 90 stupnjeva, a gledaju se estimacije pozicije i brzina kretanja broda. Unaprijedna brzina kretanja $u$ povezana je sa pozicijom $y$, dok je bočna brzina povezana sa pozicijom $x$. Na slici \ref{fig:EKFsurge} moguće je vidjeti mjerenu i estimiranu poziciju $y$, te unaprijednu brzinu $u_m$ dobivenu diferenciranjem i brzinu $u_{est}$ estimiranu pomoću Kalmanovog filtra. Bitno je uočiti razliku kod estimacije brzine na drugom grafu.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/EKFsurge.pdf}
\caption{\emph{Mjereni i estimirani odziv za $y$ i $u$}}
\label{fig:EKFsurge}
\end{figure}

\noindent 
Na slici \ref{fig:EKFsway} prikazane su mjerena i estimirana pozicija $x_m$ i $x_{est}$ te bočna brzina dobivena diferenciranjem $v_m$ i estimirana $v_{est}$.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/EKFsway.pdf}
\caption{\emph{Mjereni i estimirani odziv za $x$ i $v$}}
\label{fig:EKFsway}
\end{figure}

\noindent 
U sljedećem eksperimentu brod je upravljan po svim stupnjevima slobode istovremeno. Upravljačke sile $X$, $Y$ i moment $N$ korišteni u eksperimentu, prikazani su na slici \ref{fig:EKFallForces}. Estimirane brzine $u_{est}$, $v_{est}$ i kutna brzina $r_{est}$ prikazani su na slici \ref{fig:EKFall}.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/EKFallForces.pdf}
\caption{\emph{Sile $X$ i $Y$ i moment $N$ tijekom eksperimenta}}
\label{fig:EKFallForces}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/EKFall.pdf}
\caption{\emph{Estimirane brzine $u$ i $v$ i kutna brzina $r$}}
\label{fig:EKFall}
\end{figure}

\noindent 
Pri istovremenom zakretanju i gibanju broda po horizontalnoj ravnini dolazi do transformacije unaprijedne brzine u bočnu i obratno, odnosno inercijskog poremećaja u dinamici modela. Npr. ako se brod giba nekom unaprijednom brzinom $u$ i na njegaw počne djelovati moment $N$, dio količine gibanja prenjet će se u bočnu brzinu $v_d$, koja se naziva \emph{brzina drifta}. Cilj ovog eksperimenta bio je ispitati performanse Kalmanovog filtra uz prisutne komponente brzina drifta. Kao što je i očekivano može se primjetiti da kod većih kutnih brzina dolazi do manjih odstupanja estimiranih $\nu_{est}$ od stvarnih mjerenih vrijednosti $\nu_m$. Na slici \ref{fig:EKFpath} prikazane su mjerena i estimirana putanja broda.

\begin{figure}[H]
\centering
\includegraphics[width = 14cm]{fig/EKFpath.pdf}
\caption{\emph{Mjerena i estimirana putanja broda}}
\label{fig:EKFpath}
\end{figure}

\noindent 
Može se zaključiti da Kalmanov filtar daje vrlo dobre rezultate, što potvrđuje da je matematički model broda opravdano pojednostavljen i da su njegovi parametri identificirani s visokom točnošću. %Potrebu za Kalmanovim filtrom možda najbolje prikazuje usporedba odziva brzine dobivene diferencijom i EKF-om kod upravljanja brodom u realnim uvijetima na jezeru Bundek u Zagrebu, na slici \ref{fig:EKFbundek}. Brzine dobivene diferencijom podataka iz GPS-a i kompasa potpuno su neupotrebljive, i u ovakvim situacijama estimator stanja na temelju modela, u ovom slučaju D-EKF, predstavlja kvalitetan izbor.

%\begin{figure}[H]
%\centering
%\includegraphics[width = 14cm]{fig/EKFbundek.pdf}
%\caption{\emph{Estimirane brzine $u$ i $v$ i kutna brzina $r$}}
%\label{fig:EKFbundek}
%\end{figure}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 METODE VOĐENJA I UPRAVLJANJA	 	   %%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Metode vođenja i upravljanja}

%%%%%%%%%%%%%%%%%%%%%%		RUČNO UPRAVLJANJE		  %%%%%%%%%%%%%%%%%%%%%%
\section{Ručno upravljanje}
Za ručno upravljanje koristi se upravljačka palica eng. \emph{joystick}. Upravlja se na način da se ručno zadaju referentne vrijednosti aktuatora odnosno sile potiska aktuatora i kut kormila. Joystick se spaja na upravljačko računalo putem \emph{USB} sučelja. Zatim se u upravljačkom programu vrši akvizicija podataka s joysticka koji se zatim šalju modelu broda. Način upravljanja joystickom prikazan je na slici \ref{fig:manualControl}. Zaprimljeni podaci s joysticka su obliku polja cijelih brojeva u rasponu od $0$ do $2^{15}$. Svaki član polja sadrži informaciju o rotaciji jedne od osi. Podaci se skaliraju iz cjelobrojnog zapisa $[0, 32768]$ u zapis s pomičnim zarezom u rasponu $[-100, 100]\%$ koji predstavljaju referentne vrijednosti aktuatora.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/manualControl.png}
\caption{\emph{Ručno upravljanje modelom broda}}
\label{fig:manualControl}
\end{figure}

\noindent 
Iako već postoje veoma napredne metode vođenja i upravljanja plovilima, plovilima s opasnim teretom ili u rizičnim situacijama iz sigurnosnih razloga još uvijek nije dozvoljeno kretanje i pristajanje uz potpunu automatizaciju bez prisustva čovjeka. U takvim situacijama osoba koja upravlja brodom mora ručno ili poluautomatskom metodom uz obvezan nadzor upravljati plovilom. Brod u svakom slučaju mora posjedivati ručni mod rada u slučaju nužde. Ovaj mod rada pokazao se iznimno korisnim kod eksperimenata na jezeru odnosno izvan laboratorija.

%%%%%%%%%%%%%%%%%%%%%%		AUTOPILOT		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Autopilot}
Pod pojmom \emph{autopilot} podrazumijeva se zapravo regulacija kursa broda. Regulaciju kursa moguće je ostvariti na više načina. Kod dinamičkog pozicioniranja ona se ostvaruje tunelskim propulzorima. U ovom slučaju kurs se regulira pomoću sile kormila koja je definirana s \ref{eq:jednadzbaKormilaPojedn}. Kormilo se najčešće koristi u slučajevima kada glavni propulzor stvara relativno veliki potisak nepromjenjivog iznosa, odnosno kada je brzina vrtnje propelera konstantna. Tada se prema \cite{ref_14} dinamički model zaošijanja kormilom može dovoljno dobro opisati tzv. \emph{Nomotovim} modelom, odnosno prijenosnom funkcijom prvog reda:
\begin{align} \label{eq:nomoto}
G_n(s) &= \frac{r(s)}{\delta(s)} = \frac{\frac{1}{\beta_\delta}}{ \frac{\alpha_\delta}{\beta_\delta}s + 1 } = \frac{K_\delta}{ T_\delta\,s + 1 } \\
G_n(s) &= \frac{\psi(s)}{\delta(s)} = \frac{\frac{1}{\beta_\delta}}{s \left( \frac{\alpha_\delta}{\beta_\delta}s + 1 \right)} = \frac{K_\delta}{s \left( T_\delta\,s + 1 \right)}
\end{align}
Parametri modela mogu se dobiti metodom vlastitih oscilacija (IS-O). Za upravljanje koristi se I-PD regulator koji je definiran jednadžbom \ref{eq:IPDequation} u sljedećem poglavlju. Parametri regulatora podešavaju se prema željenoj dinamici binomne modelske funkcije \ref{eq:binomeFilter} za određeni $\omega_n$. Gotovi izrazi za računanje parametara dani su sa \ref{eq:IPDparams}. Na slici \ref{fig:AP} prikazan je odziv autopilota. Može se vidjeti da brod aperiodski prati zadani kurs, ali aktivnost kormila je prevelika. Estimirana kutna brzina $r$ posjeduje preveliki šum.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/AP.pdf}
\caption{\emph{Odzivi kod korištenja autopilota}}
\label{fig:AP}
\end{figure}


%%%%%%%%%%%%%%%%%%%%%%		DINAMIČKO POZICIONIRANJE		  %%%%%%%%%%%%%%%%%%%%%%
\newpage
\section{Dinamičko pozicioniranje} \label{chap:DP}
Dinamičko pozicioniranje (DP) eng. \emph{dynamic positioning} je jedan od najvrijednijih i najšire rasprostranjenih načina upravljanja plovila. Nalazi mnogo primjena, npr. održavanje fiksne pozicije i orijentacije platforme za bušenje nafte na vrlo velikim morskim dubinama, broda uz naftnu paltformu, broda jaružala pri podvodnim radovima, nosača aviona, itd. Konvencionalni regulatori za dinamičko pozicioniranje baziraju se na spregnutom modelu plovila. Parametre spregnutog modela plovila uobičajeno je vrlo teško identificirati. Pretpostavljeni model plovila je raspregnut i njegovi parametri mogu se veoma brzo identificirati IS-O metodom. Korištena metoda DP preuzeta je iz \cite{ref_0} i temeljena je na raspregnutom modelu plovila. Neka su rotirane koordinate nekog koordinatnog sustava definirana množenjem vektora pozicije rotacijskom matricom prema \ref{eq:rotiraneKoordinate}. U nastavku članovi sa zvjezdicom predstavljaju koordinate u rotiranom koordinatnom sustavu.
\begin{align} \label{eq:rotiraneKoordinate}
\begin{bmatrix}
x^* \\ y^* \\ \psi
\end{bmatrix}
&= 
{\begin{bmatrix}
cos\psi & -sin\psi & 0\\
sin\psi & cos\psi & 0 \\
0 & 0 & 1
\end{bmatrix}}^{-1}
\begin{bmatrix}
x \\ y \\ \psi
\end{bmatrix}
\end{align}

\noindent 
Svaki stupanj slobode broda nezavisno je upravljan posebnim I-PD regulatorom čiji je upravljački zakon definiran jednadžbom \ref{eq:IPDequation}, u kojoj $\boldsymbol{\eta_{ref}}  = \left[ {\begin{array}{*{20}{c}} x_{ref} & y_{ref} & \psi_{ref}   \\ \end{array}} \right]^T$ , a $\boldsymbol{K_I}$, $\boldsymbol{K_P}$ and $\boldsymbol{K_D}$ predstavljaju vektore pojačanja integralong, proporcionalnog, i derivacijskog člana za svaki stupanj slobode, respektivno. I-PD kontroler posebno je prilagođen plovilima i mehaničkim sustavima jer se nagla promjena referentne veličine na ulazu ne prenosi direktno na izlaz, što znači da nema uobičajenog \emph{trzaja} kao kod konvencionalnog PID regulatora, već se izlaz iz regulatora \emph{glatko} mijenja. Vektori označeni tildom ($\tilde{x}$), označavaju stanja sustava estimirana diskretnim proširenim Kalmanovim filtrom (D-EKF) koji je opisan u poglavlju \ref{chap:EKF}. Kalmanov filter koristi se za uklanjanje šuma iz mjerenja i za estimiranje brzine plovila iz mjerene pozicije.
\begin{align} \label{eq:IPDequation}
\boldsymbol{\tau} &= \boldsymbol{K_I} \int\limits_0^t {\left[ {\boldsymbol{\eta^\ast_{ref}}  - \boldsymbol{\tilde{\eta}^\ast}} \right]dt}  - \boldsymbol{K_P} \boldsymbol{\tilde{\eta}^\ast} - \boldsymbol{K_D} \boldsymbol{\tilde{\nu}}
\end{align}

\noindent 
Koristeći navedeni I-PD regulator, i prijenosne funkcije procesa dane u tablici \ref{tab:transferFunctions}, prijenosna funkcija zatvorenog kruga upravljanja za svaki od stupnjeva slobode glasi:

\begin{align} \label{eq:processCL}
\frac{\eta}{{\eta_{ref} }} &= \frac{1}{{{\textstyle{\alpha_\nu  \over {K_{I\nu} }}}s^3  + {\textstyle{{\beta_\nu  + K_{D\nu} } \over {K_{I\nu} }}}s^2  + {\textstyle{{K_{P\nu} } \over {K_{I\nu} }}}s + 1}}.
\end{align}

\noindent 
Parametri regulatora se postavljaju tako da se prijenosna funkcija zatvorenog kruga sustava \ref{eq:processCL}  izjednači s prijenosnom modelskom funkcijom \ref{eq:binomeFilter}, koja je stabilna, ima aperiodski odziv i proizvoljne dinamike u ovisnosti o parametru $\omega_n$. Izrazi za računanje parametara I-PD regulatora dani su sa \ref{eq:IPDparams}. Zbog integralnog djelovanja, u regulatoru je izveden sklop protiv efekta namatanja integratora eng. \emph{anti-windup} \cite{ref_18}. Kompletna struktura DP upravljanja prikazana je blok dijagramom na slici \ref{fig:DPscheme}.

\begin{equation} \label{eq:IPDparams}
{K_{I\nu}  = \frac{\alpha_\nu }{{a_3 }}, K_P  = \frac{{a_1 }}{{a_3 }}\alpha_\nu , K_{D\nu}  = \frac{{a_2 }}{{a_3 }}\alpha_\nu  - \beta_\nu}.
\end{equation}

%\begin{align} \label{eq:modelFunction3}
%G_m \left( s \right) &= \frac{1}{{a_3 s^3  + a_2 s^2  + a_1 s + 1}}
%\end{align}

\begin{align} \label{eq:binomeFilter}
G_m(s) = \frac{1}{\frac{1}{\omega_n^3}s^3 + \frac{3}{\omega_n^2}s^2 + \frac{3}{\omega_n}s + 1} 
\end{align}  


\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/DPscheme.pdf}
\caption{\emph{Shema upravljanja DP}}
\label{fig:DPscheme}
\end{figure}

\noindent 
DP regulator podešen je tako da je krug upravljanja orijentacijom podešen prema binomnom filtru \ref{eq:binomeFilter}  sa karakterističnom frekvencijom $\omega_n = 0.2 \frac{rad}{s}$, dok su oba kruga upravljanja pozicijom podešena sa $\omega_n = 0.1 \frac{rad}{s}$. Ovakve vrijednosti parametara dinamike sustava izabrane su tako da aktivnost potisnika bude u normalnim granicama. S porastom brzine dinamike raste i aktivnost potisnika. Binomni filter korišten je da bi se dobio glatki aperiodski odziv. Kod dinamičkog pozicioniranja plovila izuzetno bitno da nema nadvišenja, jer bi u protivnom moglo doći do kolizije među plovnim objektima.
\noindent 
Kako bi se testirala kvaliteta sustava za dinamičko pozicioniranje, proveden je niz eksperimenata u bazenu LAPOST-a. Kao rezultati su navedeni samo neki od provedenih eksperimenata. Najprije se razmatra kvaliteta zatvorenog kruga upravljanja orijentacijom. Referentna veličina je promijenjena za $45\degree$ tako da potisnici ne uđu u zasićenje. Odzivi su prikazani na slici \ref{fig:DPyaw45} gdje se mogu usporediti sa željenim odzivima, odnosno odzivima modelske funkcije koji su prikazani iscrtkanom crnom linijom. Može se primjetiti da razlika između tih \emph{idealnih} i stvarnih odziva nikada ne prelazi $3\degree$. Drugi graf na slici \ref{fig:DPyaw45} prikazuje glatku promjenu izlaza iz regulatora odnosno upravljačkog signala potisnika, i vidljivo je da nema nagle promjene brzine potisnika. Također zelenom linijom iscrtana je izračunata kutna brzina diferenciranjem kuta, a crvenom bojom prikazan je estimat kutne brzine Kalmanovim filtrom. Potreba za filtriranjem brzine je očita, kao i kvaliteta rada Kalmanovog filtra s parametrima dobivenim IS-O metodom.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/slika_heading45.pdf}
\caption{\emph{Odzivi na promjenu referentnog kuta za 45\degree}}
\label{fig:DPyaw45}
\end{figure}
\noindent 
Nakon toga referentna veličina primijenjena je za $90\degree$ tako da potisnici uđu u zasićenje, kako bi se moglo demonstrirati kako sustav protiv namatanja integratora uspješno obavlja svoj posao. Odzivi su prikazani na slici \ref{fig:DPyaw90}. S obzirom da željena modelska funkcija nema nikakvo zasićenje kao što potisnici realno imaju, prirodno je zaključiti da će stvarni odziv nešto kasniti za \emph{idealnim} odzivom, što se može i uočiti iz odziva na slici. Ipak, stvarni odziv izrazito dobro prati modelirani odziv. Na drugom grafu plavom linijom vidi se odziv momenta koji je ušao u zasićenje. Također može se primjetiti da je pri većim brzinama veći i mjerni šum, što potvrđuje potrebu za Kalmanovim filtrom. Problem namatanja integratora također je uspješno riješen.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/slika_heading90.pdf}
\caption{\emph{Odzivi na promjenu referentnog kuta za 90\degree}}
\label{fig:DPyaw90}
\end{figure}
\noindent 
Upravljanje pozicijom testirano je tako da je brodu zadano da se sa pozicije (0 pix, 0pix) premjesti na poziciju (100 pix, 100 pix) u mjerilima kamere. Kako je prikazano na slici \ref{fig:DPsurgeSway}, obje upravljane veličine (koordinate broda x i y) vrlo dobro prate modelsku funkciju, i razlika između \emph{idealnog} odziva i stvarnog izmjerenog odziva nije nikad veća od 6 piksela. Na slici \ref{fig:DPyawSS} može se vidjeti da je orijentacija broda za vrijeme tranzijentnog stanja dinamičkog pozicioniranja približno konstantna bez obzira što promjena pozicija djeluje kao velik poremećaj na zatvorenu petlju upravljanja orijentacijom. Greška regulacije orijentacije nikad ne prelazi $1.5\degree$. Prikazani rezultati demonstriraju kvalitetu i opravdanost predloženog pristupa problemu dinamičkog pozicioniranja plovila.

%\begin{figure}[H]
%\centering
%\includegraphics[width=14cm]{fig/slikaDP_path.pdf}
%\caption{\emph{Putanja broda tijekom dinamičkog pozicioniranja prema točki (100,100)}}
%\label{fig:tg}
%\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/slikaDP_response.pdf}
\caption{\emph{Odzivi na promjenu referentne pozicije za (100,100) pix}}
\label{fig:DPsurgeSway}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/slikaDP_heading.pdf}
\caption{\emph{Promjena kuta tijekom dinamičkog pozicioniranja}}
\label{fig:DPyawSS}
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%		PRAĆENJE PUTANJE		%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Slijeđenje putanje}
Uz spomenuto dinamičko pozicioniranje, kod upravljanja plovilima, jedna od najatraktivnijih osobina plovila je slijeđenje puta eng. \emph{path following}. Put je općenito unaprijed kreiran na način da se želi postići neki određeni cilj npr. maksimalna ušteda energije, minimalna pređena udaljenost, praćenje ostalih plovnih objekata, izbjegavanje kolizije s ostalim plovnim objektima itd. Postoji mnogo načina za određivanje putanje u horizontalnoj ravnini. Putanja se može odrediti spajanjem točaka pomoću pravaca i kružnica, polinomom n-tog reda, \emph{spline} metodama itd. U ovom radu neće se ulaziti u problematiku izrade optimalne putanje. Ovo poglavlje fokusira se na primjenu i implementaciju algoritama za slijeđenje putanje. Zanimljivo je da se kod većine algoritama slijeđenja putanje na najnižem nivou zapravu upravlja brzinama. Upravljanje brzinom kretanja zapravo se prirodno nameće kao najbolji izbor. Obrađeni su algoritam \emph{virtualne mete} eng. \emph{virtual target} (\cite{ref_7}) i \emph{upravljanje kretanjem} eng. \emph{motion control} (\cite{ref_4}). Spomenuti algoritmi testiraju se na slijeđenju najčešće korištenih putanja, u koje spadaju pravac kružnica i \emph{spline}.

%%%%%%%%%%%%%%%%%%%%%%		VIRTUAL TARGET	  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Algoritam virtualne mete} \label{chap:VT}

Algoritam virtualne mete koristi se prvenstveno za slijeđenje proizvoljne putanje u horizontalnoj ravnini. Međutim može se proširiti i za veći broj stupnjeva slobode. Algoritam je posebno prilagođen sustavima sa holonomskim ograničenjima eng. \emph{underactuated systems}, što je tipično za brod upravljan samo kormilom i glavnim potisnikom. Ra razliku od dosadašnjih algoritama za vođenje i upravljanje plovilima, ovaj algoritam je nelinearan. Prije opisa rada algoritma, potrebno je definirati nekoliko stvari. U poglavlju \ref{chap:kinematicModel} definiran je kinematički model broda. U kinematičkom modelu definirani su koordinatni sustavi \emph{earth-fixed} $\{ I \}$ koji je fiksiran za neku točku u prostoru i \emph{body-fixed} $\{ B \}$ fiksiran za centar mase broda. Općenito se orijentacija brzine kretanja broda razlikuje od orijentacije trupa jer je $v \not= 0$. Neka su ukupna brzina kretanja $U$ i njena orijentacija $\psi_e$ definirane sa:

\begin{align} \label{eq:absoluteSpeed}
U &= \sqrt{u^2 + v^2} = \sqrt{\dot{x}^2 + \dot{y}^2} \\
\psi_e &= arctg(\frac{\dot{y}}{\dot{x}}) = \psi + arctg(\frac{u}{v})
\end{align}  

\noindent 
Uz spomenute koordinatne sustave uvodi se treći koordinatni sustav čije je ishodište vezano za neku točku putanje $P$, a orijentacija $\psi_f$ jednaka tangenti na putanju u toj točki. Takav koordinatni sustav naziva se \emph{Serret-Frenet frame} i označen je sa $\{ F \}$. Na slici \ref{fig:VTframes} jasno su prikazani koordinatni sustavi. Točka $B$ označava poziciju broda i njene koordinate i orijentacija u $\{ I \}$ glase $\eta_B = [x_B \,\, y_B \,\, \psi_e]^T$, a koordinate točke $P$ su $\eta_P = [x_P \,\, y_P \,\, \psi_f]^T$.

\begin{figure}[H]
\centering
\includegraphics[height=12cm]{fig/VTframes.pdf}
\caption{\emph{Koordinatni sustavi i veličine vezane za VT}}
\label{fig:VTframes}
\end{figure}

\noindent Rotacijska matrica koja pretvara koordinate iz $\{ I \}$ u $\{ F \}$ definirana je sa: 

\begin{equation}
R_f = \begin{bmatrix}cos(\psi_f) & sin(\psi_f) & 0 \\ -sin(\psi_f) & cos(\psi_f) & 0\\ 0 & 0 & 1 \end{bmatrix} 
\end{equation}

\noindent Kod slijeđenja neke referentne vrijednosti (putanje) obično se želi grešku slijeđenja svesti na nulu. Greška slijeđenja definirana je kao razlika između pozicija i orijentacija točke $B$ i točke $P$ u $\{ F \}$, i može se vektorski zapisati kao:

\begin{equation}
\varepsilon = R_f (\eta_B - \eta_P)
\label{eq:VTerrors}
\end{equation}

\noindent gdje je $\varepsilon = [s \,\, e \,\, \beta]^T$. Grešku sliješenja $s$ naziva se uzdužna greška eng. \emph{allong-path error}, $e$ se naziva poprečna greška eng. \emph{cross-track error}, a $\beta$ predstavlja razliku orijentacije između broda i virtualne mete. Kada je $\varepsilon$ sveden na nul-vektor vektor $\nu_B$ jednak je vektoru $\nu_P$, i zbog toga je prirodno vektor $\nu_P$ prozvati ciljem odnosno \emph{virtualnom metom}. Algoritam virtualne mete je globalno stabilan po kriteriju \emph{Lyapunovljevom}. Dokaz i izvode upravljačkih jednadžbi moguće je pronaći u \cite{ref_6}. Upravljanje se zasniva na kaskadnoj upravljačkoj shemi, gdje gornju razinu čini set jednadžbi za zadavanje referenci brzina kretanja broda, a donju razinu čine regulatori brzine kretanja broda. Temeljna pretpostavka algoritma je da unutarnji upravljački krug u kaskadnoj strukturi može dovoljno brzo slijediti reference koje vanjski krug. Iz tog razloga najprije je potrebno kvalitetno dizajnirati regulatore brzina. Prijenosne funkcije brzina definirane su sa:

\begin{equation}
G_\nu(s) = \frac{\nu(s)}{X(s)} = \frac{\frac{1}{\beta_\nu}}{ \left( \frac{\alpha_\nu}{\beta_\nu}s + 1 \right)} = \frac{K_\nu}{ \left( T_\nu \,s + 1 \right)} 
\end{equation}

\noindent U kombinaciji s navedenom prijenosnom funkcijom, I-P regulatorom postiže se aperiodski odziv u zatvorenom krugu. Jednadžba I-P regulatora glasi:

\begin{equation} \label{eq:IPequation}
\boldsymbol{\tau} = \boldsymbol{K_I} \int\limits_0^t {\left[ \boldsymbol{\nu_{ref}}  - \boldsymbol{\nu} \right]dt}  - \boldsymbol{K_P} \boldsymbol{\nu}
\end{equation}

\noindent gdje su $\tau$ vektor sila aktuatora, $\nu_{ref}$ vektor referentnih brzina vanjskog kruga upravljanja, $\nu$ vektor estimiranih brzina, a $K_I$ i $K_P$ parametri regulatora. Prijenosna funkcija zatvorenog kruga glasi:

\begin{equation}
G_\nu(s) = \frac{\nu(s)}{\nu_{ref}(s)} = \frac{1}{\frac{\alpha_\nu}{K_I}s^2 + \frac{K_P + \beta_\nu}{K_I}s + 1} 
\end{equation}

\noindent Parametri regulatora podešavaju se tako što se prijenosna funkcija zatvorenog kruga izjednačava s binomnom modelskom funkcijom drugog reda:

\begin{equation} \label{eq:binomna2}
G_m(s) = \frac{1}{\frac{1}{{\omega_n}^2}s^2 + \frac{2}{\omega_n}s + 1} 
\end{equation}

\noindent Parametri regulatora računaju se izrazima:

\begin{align}
K_i &= \alpha_\nu \omega_n^2 \label{eq:IPi} \\
K_p &= \frac{K_i \cdot 2}{\omega_n} - \beta_\nu \label{eq:IPp}
\end{align}

\noindent Nakon što su podešeni parametri regulatora unutrašnjeg kruga, može se pristupiti projektiranju vanjskog kruga. Upravljački zakon dan je jednadžbama:

\begin{align}
u_{ref} &= const. \\
v_{ref} &= 0 \\
\varphi &= -\psi_a \, tanh(K_{\varphi} \, e) \label{eq:VTphi} \\
r_{ref} &= \dot{s}_{vt}\kappa - K_r(\beta - \varphi) + \dot{\varphi}; \\
\dot{s}_{vt,ref} &= U\, cos\beta + K_c \, s
\end{align}

\noindent gdje je $\dot{s}_{vt}$ brzina kretanja virtualne mete, $\psi_a$, $K_\varphi$, $K_r$ i $K_c$ predstavljaju parametre algoritma, a $\kappa$ zakrivljenost putanje koja je po definiciji:

\begin{equation} \label{eq:curvature}
\kappa = \frac{\dot{x}\ddot{y} - \dot{y}\ddot{x}}{(\dot{x}^2 + \dot{y}^2)^{3/2}} 
\end{equation}

\noindent 
Postoji nekoliko parametara kod dizajniranja ovog načina upravljanja. Parametar $\psi_a$ je kut prilaza putanji eng. \emph{angle of approach}. Kut prilaza može se odabrati u rasponu $\left< 0, 90 \right]\degree$. Ukoliko se odabere $\psi_a = 90\degree$ brod će se kretati okomito prema putanji. Okomiti prilaz putanji je poželjan samo ukoliko se brod nalazi još daleko od putanje. Kako se brod približava putanji kut prilaza potrebno je smanjivati da bi se, kad dođe do putanje, nastavio gibati u smjeru putanje. Pomoću hiperbolne funkcije \ref{eq:VTphi} računa se modificirani kut prilaza $\varphi$, koji osigurava glatku promjenu smjera kretanja broda od od one okomite na putanju prema onoj u smjeru tangente pitanje. Parametar $K_\varphi$ zapravo određuje kako će se smanjivati modificirani kut prilaza u ovisnosti o poprečnoj udaljenosti $e$. Drugim riječima, izborom velikog iznosa $K_\varphi$ brod će pokušati naglo promjeniti smjer kada se dovoljno približi putanji, a izborom malog $K_\varphi$ ta promjena smjera će biti sporije i početi će pri većoj udaljenosti. Parametrom $K_r$ direktno se skalira referentni iznos kutne brzine čime se definira dinamika vanjskog kruga. Parametar $K_r$ potrebno je podesiti tako da unutarnji krug može relativno uspješno slijediti te promjene reference $r_{ref}$. Osim zadavanja reference unutarnjem krugu upravljanja broda, također se zadaje referentna brzina kretanja virtualne mete. Ona ovisi o brzini kretanja broda, njegovoj orijentaciji u odnosu na virtualnu metu i uzdužnoj greški $s$. Parametrom $K_c$ definira se brzina kojom će se virtualna meta približavati brodu. Dakle ne približava se samo brod virtualnoj meti, nego i ona njemu.

U nastavku su prikazani rezultati niza eksperimenata u kojima se koristilo algoritam virtualne mete za slijeđenje linije, kružnice i splajna. Također, prikazan je utjecaj različitih vrijednosti parametara na karakteristike slijeđenja.


%%%%%%%%%%%%%%%%%%%%%%		MOTION CONTROL	  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\subsection{Algoritam navođenog upravljanja} \label{chap:MC}
Navođeno upravljanje eng. \emph{motion control} temelji se na istim pretpostavkama kao i upravljanje uz pomoć virtualne mete. U ovom slučaju također postoji virtualni cilj koji se nalazi na putanji i naziva se čestica puta eng. \emph{path particle}. Glavna razlika ovih dvaju načina upravljanja je ta što je navođeno upravljanje prilagođeno za upravljanje uz dostupnost neovisne regulacije svih stupnjeva slobode, što je slučaj kada se brod kreće sporo i koristi tunelske propulzore. Ovaj algoritam je eksponencijalno globalno asimptotski stabilan (AEGS) po \emph{Lyapunovom} kriteriju. Izvod i dokaze stabilnosti moguće je pronaći u \cite{ref_4}.

Kao referentna vrijednost zadaje se apsolutna vrijednost vektora brzine $U_{ref}$ definiranog sa \ref{eq:absoluteSpeed}. Upravljačke jednadžbe \emph{motion control} algoritma dane su sa:

\begin{align}
\varphi &= -\psi_a \, tanh(K_{\varphi} \, e) \\
u_{ref} &= U_{ref} \, cos( \psi - \psi_f - \varphi) \\
v_{ref} &= - U_{ref} \, sin( \psi - \psi_f - \varphi) \\
r_{ref} &= \dot{s}_{vt}\kappa - K_r(\psi - \psi_f) \\
\dot{s}_{vt,ref} &= U\, cos(\psi - \psi_f) + K_c \, s
\end{align}

\noindent 
Ovim jednadžbama zadaju se referentne vrijednosti za sva tri stupnja slobode i zato je ovaj način upravljanja više namijenjen slučajevima kad je moguće upravljati svim stupnjevima slobode nezavisno. Još jedna bitna razlika ovog algoritma u odnosu na prethodni je da kod ovog orijentacija broda i čestice puta odnosno virtualne mete ne mora nužno predstavljati kut tangente na krivulju. Zbog toga je ovaj algoritam općenitiji od algoritma virtualne mete, te se kao takav može na neki način smatrati proširenim algoritmom virtualne mete. Blok shema upravljanja dana je na slici \ref{fig:shemaVTMC}.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/shemaVTMC.pdf}
\caption{\emph{Blok dijagram sustava upravljanja VT i MC algoritma}}
\label{fig:shemaVTMC}
\end{figure}


\newpage
\subsection {Slijeđenje linije}
\indent Slijeđenje linije vrlo je važan zadatak kod upravljanja plovilima prvenstveno jer se većinom putanje sastoje od linija i kružnica. Drugi razlog je taj što je linijom opisana najmanja udaljenost između dvije točke, a gibanjem po najkraćoj udaljenosti štedi se vrijeme i novac. Linija je s dvije točke jednoznačno određena u prostoru odnosno horizontalnoj ravnini. U nastavku su prikazani rezultati slijeđenja pomoću algoritama virtualne mete i navođenog upravljanja za različite vrijednosti kuta prilaza $\psi_a$ i parametra $K_\varphi$ koji određuje udaljenost početka zakretanja. Linija koju se slijedi leži na pravcu $x = -0.5$. Brod se na početku nalazi u stanju mirovanja s početnom pozicijom $\eta_{B,0}$ = [0.5, -0,5] i orijentacijom $\psi_e = 180\degree$. Kod VT, referentna brzina kretanja iznosi $u_{ref} = 0.01 \, \, m/s$ dok je $v_{ref} = 0$, a kod MC referentna totalna brzina iznosi $U_{ref} = 0.01 \, \, m/s$. Parametri regulatora brzine izračunati su po formulama \ref{eq:IPi} i \ref{eq:IPp}. Kod VT, za stupnjeve slobode napredovanja i zanošenja odabran je $\omega_n = 0.1$, dok je za stupanj slobode zaošijanja odabran $\omega_n = 0.3$, a kod MC je za sve stupnjeve slobode odabrano $\omega_n = 0.3$. Zakrivljenost linije po definiciji iznosi $\kappa = 0$. \\[1mm]

\noindent \textbf{Slijeđenje linije algoritmom virtualne mete} \\
Izvršen je niz eksperimenata slijeđenja linije pomoću virtualne mete sa različitim parametrima i prikazane su putanje broda. Na slici \ref{fig:VTline1path} prikazana je putanja broda za korištene parametre $\psi_a = 90\degree$, $K_\varphi = 1$, $K_r = 0.1$ i $K_c =0.2$. 

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/VTline1path.pdf}
\caption{\emph{Putanje broda kod slijeđenja linije za $K_\varphi = 1$}}
\label{fig:VTline1path}
\end{figure}

\noindent 
Može se uočiti da se brod relativno sporo približava putanji. Kod odziva na slikama \ref{fig:VTline3path} i \ref{fig:VTline5path} povećan je iznos parametra  $K_\varphi = 3$ odnosno $K_\varphi = 5$ dok ostali parametri nisu promjenjeni. Iz odziva se može zaključiti da se pomoću parametra $K_\varphi$ određuje udaljenost okomitog prilaza k putanji.

%\begin{figure}[H]
%\centering
%\includegraphics[width=14cm]{fig/VTline2path.pdf}
%\caption{\emph{Putanje broda kod slijeđenja linije za $K_\varphi = 2$}}
%\label{fig:VTline2path}
%\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/VTline3path.pdf}
\caption{\emph{Putanje broda kod slijeđenja linije za $K_\varphi = 3$}}
\label{fig:VTline3path}
\end{figure}

%\begin{figure}[H]
%\centering
%\includegraphics[width=14cm]{fig/VTline4path.pdf}
%\caption{\emph{Putanje broda kod slijeđenja linije za $K_\varphi = 4$}}
%\label{fig:VTline4path}
%\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/VTline5path.pdf}
\caption{\emph{Putanje broda kod slijeđenja linije za $K_\varphi = 5$}}
\label{fig:VTline5path}
\end{figure}

\noindent 
Odzivi za $r_{ref}$ i $r$ dani su na slici \ref{fig:VTlineVelocities}. Nakon toga kut prilaza $\psi_a$ promijenjen je sa $90\degree$ na $60\degree$. Drugi parametri ostali su nepromijenjeni ($K_\varphi = 5$, $K_r = 0.1$ i $K_c =0.2$). Dobiveni odziv prikazan je na slici \ref{fig:VTline60path}

\begin{figure}[H]
\centering
\includegraphics[width=12cm]{fig/VTlineVelocities.pdf}
\caption{\emph{Referentni i estimirani $r$ broda za $K_\varphi = 1$, $K_\varphi = 3$ i $K_\varphi = 5$}}
\label{fig:VTlineVelocities}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=12cm]{fig/VTline60path.pdf}
\caption{\emph{Putanja broda kod slijeđenja linije za $K_\varphi = 5$ i $\psi_a = 60\degree$}}
\label{fig:VTline60path}
\end{figure}

\noindent 
Na slici se može uočiti da se brod ukoliko je dovoljno udaljen od linije giba po pravcu koji siječe zadani pravac točno pod kutem prilaza $\psi_a = 60\degree$. Kada se dovoljno približi zakrene se u smjeru referentne linije i nastavi se gibati po njoj.

\noindent 
Na slici \ref{fig:VTlinepaths} mogu se detaljnije na istom grafu promotriti i usporediti putanje broda kod provedenih eksperimenata za različite vrijednosti $K_\varphi$.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/VTlinepaths.pdf}
\caption{\emph{Putanje broda kod slijeđenja linije za različite vrijednosti $K_\varphi$}}
\label{fig:VTlinepaths}
\end{figure}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newpage
\noindent \textbf{Slijeđenje linije algoritmom navođenog upravljanja} \\
U ovom dijelu, \emph{motion control} algoritam obavljat će zadatak praćenja linije. Svi parametri isti su kao i kod \emph{virtual target} algoritma ($\psi_a = 90\degree$, $K_\varphi = 5$, $K_r = 0.1$ i $K_c =0.2$). Ono što čini razliku od prijašnjeg slučaja je to što se ovdje zadaju reference po svim stupnjevima slobode i kinematički zadaci praćenja linije i orijentacije su odvojeni. Početni uvijeti su identični početnim uvijetima prethodnih eksperimenata. Referentna totalna brzina jednaka je $U_{ref} = 0.01 \, m/s$. Na slici \ref{fig:MCline5} može se vidjeti putanja broda kod opisanog eksperimenta. 
w
\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/MCline5.pdf}
\caption{\emph{Putanja broda kod slijeđenja linije Motion Control algoritmom}}
\label{fig:MCline5}
\end{figure}

\noindent 
Vidljivo je da nema prebačaja linije u tranzijentnom stanju kao što je to slučaj kod \emph{virtual targeta} za ovako mali luk zakreta. Prebačaja nema jer se brod uopće ne zakreće kod prilaza putanji već se giba bočno prema njoj. Kako se približava, bočna brzina se pretvara u unaprijednu. Kad se brod nalazi na liniji i zakrenut je u smjeru linije, totalna referentna brzina jednaka je unaprijednoj. To je moguće vidjeti ako se promotri sliku \ref{fig:MClineVel} koja prikazuje referentne i estimirane brzine broda. Vidljivo je kako I-P regulator niže razine uspješno i brzo prati referentne vrijednosti. Na slici \ref{fig:MClineErr} prikazane su poprečna $e$ i uzdužna pogreška slijeđenja $s$, i može se primjetiti je da one konvergiraju u nulu.

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/MClineVel.pdf}
\caption{\emph{Referentne i estimirane brzine kod slijeđenja MC algoritmom}}
\label{fig:MClineVel}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/MClineErr.pdf}
\caption{\emph{Poprečna $e$ i uzdužna $s$ greška slijeđenja}}
\label{fig:MClineErr}
\end{figure}

%%%%%%%%%%%%%%%%%%%		SLIJEĐENJE KRUŽNICE 		%%%%%%%%%%%%%%%%%%%%%%%

\newpage
\subsection {Slijeđenje kružnice}
Ranije je spomenuto kako je većina putanja sastavljena od međusobno povezanih linija i kružnica i zato je slijeđenje kružnice gotovo jednako bitno kao i slijeđenje linije. Kružnica može biti određena u ravnini sa tri točke. U ovom slučaju ona je određena svojim središtem $C = [x_C, y_C]$ i polumjerom R. U nastavku su prikazani rezultati slijeđenja kružnice algoritmom virtualne mete i navođenog upravljanja za različite vrijednosti parametra $K_\varphi$. Zadana kružnica ima središte u ishodištu koordinatnog sustava $C = [0, 0]$ i polumjer $R = 0.5 \,\, m$. Brod se na početku eksperimenata nalazi u stanju mirovanja s početnom pozicijom $\eta_{B,0}$ = [0, 0, 90] tj. u središtu kružnice sa orijentacijom $\psi_e = 90\degree$. \\

\noindent \textbf{Slijeđenje kružnice algoritmom virtualne mete} \\
Referentna brzina kretanja iznosi $u_{ref} = 0.01 \, m/s$ dok je $v_{ref} = 0$. Korištene su iste vrijednosti parametara regulatora brzine kao i kod slijeđenja linije koji se računaju formulama \ref{eq:IPi} i \ref{eq:IPp} uz $\omega_n$ = 0.3. Parametri algoritma virtualne mete su $\psi_a = 90\degree$, $K_\varphi = 5$, $K_r = 0.1$ i $K_c =0.2$. Zakrivljenost kružnice obrnuto je proporcionalna polumjeru odnosno dana je izrazom $\kappa = 1/R$.

Na slici \ref{fig:VTvelocitiesCircle5} prikazani su odzivi referentnih brzina crvenom bojom i estimiranih brzina broda plavom bojom. Na gornjem grafu može se vidjeti kako se brod giba unaprijednom brzinom $u = 0.01 \,\, m/s$. Srednji graf prikazuje brzinu zanošenja koja bi trebala biti regulirana na iznos $v = 0 \,\, m/s$. Očekivano je da se povećanjem brzine zakretanja broda unosi poremećaj na reguliranu vrijednost, što se može uočiti i na grafu. Na donjem grafu slike \ref{fig:VTvelocitiesCircle5} crvenom bojom prikazana je referentna kutna brzina zaošijanja koju generira algoritam virtualne mete i plavom bojom estimirana kutna brzina broda. Očito je da estimirana vrijednost veoma dobro slijedi referentnu što ukazuje na kvalitetan izbor strukture i odabir parametara regulatora brzine tj. unutarnjeg kruga upravljanja u kaskadnoj strukturi. Brzo slijeđenje referentne brzine zaošijanja izrazito je važno za rad ovog zakona upravljanja, a iz grafa je vidljivo da je ono i postignuto. Na slici \ref{fig:VTerrorsCircle5} prikazane su poprečna i uzdužna greška slijeđenja i vidljivo je da one konvergiraju u nulu, odnosno da je cilj slijeđenja ostvaren. Na slikama \ref{fig:VTpathCircle25} i \ref{fig:VTpathCircle5} prikazane su putanje broda i virtualne mete za vrijednosti parametra $\psi_a = 2.5$ i $\psi_a = 5$. Kao što je i predviđeno, kod većeg iznosa parametra $\psi_a$ brod \emph{oštrije} prilazi kružnici.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/VTvelocitiesCircle5.pdf}
\caption{\emph{Brzine broda prilikom slijeđenja kružnice $\psi_a = 5$}}
\label{fig:VTvelocitiesCircle5}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/VTerrorsCircle5.pdf}
\caption{\emph{Cross-track error $e$ i along-track error $s$ kod slijeđenja kružnice, $\psi_a = 5$}}
\label{fig:VTerrorsCircle5}
\end{figure}

\newpage
\begin{figure}[H]
\centering
\includegraphics[width=11cm]{fig/VTpathCircle25.pdf}
\caption{\emph{Putanja broda prilikom slijeđenja kružnice za $\psi_a = 2.5$}}
\label{fig:VTpathCircle25}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=11cm]{fig/VTpathCircle5.pdf}
\caption{\emph{Putanja broda prilikom slijeđenja kružnice za $\psi_a = 5$}}
\label{fig:VTpathCircle5}
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\noindent \textbf{Slijeđenje kružnice algoritmom navođenog upravljanja} \\
U ovom dijelu, \emph{motion control} algoritmom obavljat će se zadatak slijeđenja kružne putanje. Svi parametri isti su kao i kod \emph{virtual target} algoritma u prethodnom slučaju ($\psi_a = 90\degree$, $K_\varphi = 5$, $K_r = 0.1$ i $K_c =0.2$). Početni uvijeti su istovjetni onima ranije.

Brod se na nakon pokretanja eksperimenta, brod se najprije zakreće u smjeru tangente na kružnicu, koja predstavlja referentnu orijentaciju. Kod \emph{motion control} algoritma orijentacija nije vezana za smjer vektora brzine kao kad se koristi \emph{virtual target}, već je upravljanje orijentacijom  odvojeno od upravljanja pozicijom. Nakon zakretanja, brod se bočno približava kružnici i kad dođe do nje nastavlja se gibati po kružnoj putanji. Na slici \ref{fig:MCcircleErr} prikazane su poprečna i uzdužna greška slijeđenja u vremenu. Očito je da one nakon prijelaznih pojava konvergiraju u nulu.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/MCcircleErr.pdf}
\caption{\emph{Poprečna $e$ i uzdužna $s$ greška slijeđenja}}
\label{fig:MCcircleErr}
\end{figure}

\noindent 
Na slici \ref{fig:MCcirclePath} prikazane su putanja virtualne mete odnosno \emph{path particle} i estimirana putanja broda. Može se zaključiti da model broda relativno dobro prati kružnu putanju. Točnije, poprečna greška slijeđenja odnosno udaljenost od putanje ne prelazi $1 cm$. Na slici \ref{fig:MCcircleVel} prikazane su referentne i estimirane brzine kretanja i zaošijanja broda. Kod algoritma virtualne mete prijelazna pojava kod približavanja putanji bila je očita za stupanj slobode kutne brzine $r$, dok su se $u$ i $v$ regulirali na konstantne vrijednosti. Ovdje je upravo suprotno. Prijelazne pojave vezane za približavanje putanji očituju se kod stupnjeva slobode napredovanja $u$ i zanošenja $v$, dok se $r$ regulira na konstnatnu vrijednost zbog zakrivljenosti kružnice.

\newpage

\begin{figure}[H]
\centering
\includegraphics[height=11cm]{fig/MCcirclePath.pdf}
\caption{\emph{Putanja broda kod slijeđenja kružnice Motion Control algoritmom}}
\label{fig:MCcirclePath}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[height=10cm]{fig/MCcircleVel.pdf}
\caption{\emph{Referentne i estimirane brzine kod slijeđenja kružnice}}
\label{fig:MCcircleVel}
\end{figure}


%%%%%%%%%%%%%%%%%%%%%%%%%		SPLINE		%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newpage
\subsection {Slijeđenje spline krivulje}
Putanja sastavljena od linija i kružnica nije \emph{regularna}. Regularnu putanju karakteriziraju neprekinute prva i druga derivacija, što znači da regularna putanja u svakoj svojoj točki, osim pozicije, ima definirane također brzine i akceleracije za svaki smjer gibanja. Primjer regularne putanje je kubični spline. Kubični spline definiran je kao krivulja po dijelovima sastavljena od polinoma trećeg stupnja. Dva susjedna dijela krivulje odnosno polinoma spajaju se u zajedničkoj točki i u toj točki su im prva i druga derivacija jednake. Svaki dio putanje $p(s_{p})$ parametriziran je putem $s_p$ i može se rastaviti na $x$ i $y$ komponente prema $p(s_p) = (x(s_p), y(s_p))$. Zakrivljenost spline funkcije nije u svim točkama ista, već se računa prema \ref{eq:curvature}, gdje je $\dot{x} = \frac{dx}{ds}$ a $\dot{y} = \frac{dy}{ds}$. U svakoj točki spajanja dvaju dijelova spline krivulje mora vrijediti:

\begin{align}
x_1(s_p) &= x_2(s_p)  & y_2(s_p) &= x_2(s_p) \\
\frac{dx_1}{ds_p} &= \frac{dx_2}{ds_p} & \frac{dy_1}{ds_p} &= \frac{dy_2}{ds_p} \\
\frac{d^2 x_1}{{ds_p}^2} &= \frac{d^2 x_2}{{ds_p}^2} & \frac{d^2 y_1}{{ds_p}^2} &= \frac{d^2 y_2}{{ds_p}^2}
\end{align}

\noindent \textbf{Slijeđenje spline-a pomoću algoritma virtualne mete} \\
Slijeđenje spline-a provedeno je sa istim parametrima kao i kod kružnice. Na slici \ref{fig:VTsplineErrors} prikazane su poprečna i uzdužna greška slijeđenja. Vidljivo je da one ne prelaze $10 \, cm$ i da nastoje konvergirati u nulu. Referentna i estimirana putanja prikazane su na slici \ref{fig:VTpathSpline}, a brzine na slici \ref{fig:VTsplineVelocities}. Kod oštrijih zavoja, I-P regulatori brzine ne mogu dovoljno brzo pratiti referencu, zbog čega se u tim trenutcima javlja greška slijeđenja.

\begin{figure}[H]
\centering
\includegraphics[width=11cm]{fig/VTsplineErrors.pdf}
\caption{\emph{Cross-track error $e$ i along-track error $s$ kod slijeđenja spline krivulje}}
\label{fig:VTsplineErrors}
\end{figure}


\begin{figure}[H]
\centering
\includegraphics[height=11cm]{fig/VTpathSpline.pdf}
\caption{\emph{Putanja broda prilikom slijeđenja spline krivulje}}
\label{fig:VTpathSpline}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[height=10cm]{fig/VTsplineVelocities.pdf}
\caption{\emph{Referentne i estimirane brzine kod slijeđenja spline krivulje}}
\label{fig:VTsplineVelocities}
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\noindent \textbf{Slijeđenje spline-a pomoću algoritma navođenog upravljanja} \\
U ovom eksperimentu \emph{motion control} algoritmu dodijeljen je zadatak slijeđenja \emph{spline} putanje. Svi parametri isti su kao kod prethodnog eksperimenta gdje je korišten \emph{virtual target} algoritam ($\psi_a = 90\degree$, $K_\varphi = 5$, $K_r = 0.1$ i $K_c =0.2$). Parametri I-P regulatora brzine podešeni su tako da je za smjer napredovanja $\omega_n = 0.2$, za smjer zanošenja $\omega_n = 0.4$, a za zaošijanje je ostavljena vrijednost $\omega_n = 0.3$.

Slika \ref{fig:MCsplineErr} prikazuje greške slijeđenja $e$ i $s$. Može se vidjeti da su greške slijeđenja u zavojitim predjelima putanje u ovom slučaju dvostruko manje nego kod algoritma virtualne mete. To je očito ako se pogleda putanja broda na slici \ref{fig:MCsplinePath}. Na slici \ref{fig:MCsplineVel} prikazani su odzivi referentnih i estimiranih brzina broda. Usporedbom tih odziva sa onima u prethodnom eksperimentu može se vidjeti kako se pri ulasku u oštar zavoj u ovom slučaju zadaju reference $r$ i $v$, dok se u prethodnom upravlja samo sa $r$. Zbog toga brod uspije bolje reagirati na promjenu referentne putanje, čime se smanjuje greška slijeđenja. 

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/MCsplineErr.pdf}
\caption{\emph{Cross-track error $e$ i along-track error $s$ kod slijeđenja spline krivulje}}
\label{fig:MCsplineErr}
\end{figure}

\noindent 
Kod upravljanja brzinama bitno je da postoji kvalitetno estimirana brzina kretanja. Ako se pogleda slika \ref{fig:MCsplineVel} može se uočiti da se unaprijedna brzina estimira lošije od ostale dvije. Takvo lošije estimiranje posljedica je asimetričnosti kod prigušenja i inercije unaprijednog dinamičkog modela, što se vidi iz grafa \ref{fig:ISOsurgeOdziv}, i tu uz pretpostavku linearnog modela nije moguće ništa napraviti. Lošije estimiranje dovodi unutarnji krug regulacije brzine $u$ u neželjeno područje vlastitih oscilacija.

\newpage

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/MCsplinePath.pdf}
\caption{\emph{Putanja broda tijekom slijeđenja spline krivulje}}
\label{fig:MCsplinePath}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/MCsplineVel.pdf}
\caption{\emph{Referentne i estimirane brzine kod slijeđenja spline krivulje}}
\label{fig:MCsplineVel}
\end{figure}

\noindent 
Unatoč tome što se krug upravljanja unutarnjom brzinom nalazi u području vlastitih oscilacija, one su veoma malog iznosa i nemaju gotovo nikakav utjecaj na slijeđenje spline krivulje. Na slici \ref{fig:MCsplinePos} mogu se promotriti pozicija i orijentacija virtualne mete odnosno broda u vremenu. Vidljivo je da nema nikakvog kašnjenja u slijeđenju pozicije virtualne mete koja se giba po \emph{spline} putanji u horizontalnoj ravnini.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/MCsplinePos.pdf}
\caption{\emph{Pozicije virtualne mete i broda kod slijeđenja spline krivulje}}
\label{fig:MCsplinePos}
\end{figure}



%%%%%%%%%%%%%%%%%%%%%%		PRAĆENJE TRAJEKTORIJE	  	 %%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\section{Praćenje trajektorije}

Glavni nedostatak pri slijeđenju putanje je taj što putanja nije definirana vremenski nego samo prostorno. Ako se uzme na primjer da se putanje dvaju plovila sijeku, algoritmom slijeđenja puta ne može se garantirati da neće doći do sudara između ta dva plovila. Kako ne bi došlo do sudara mora se odrediti vrijeme u kojem će se određeno plovilo nalaziti na svom putu. Logično je da uz prostornu dimenziju uvede i vremenska. Dakle, sljedeći korak od slijeđenja putanje je praćenje trajektorije. Glavna razlika između ta dva upravljačka koncepta je to što slijeđenje putanje ne unosi dimenziju vremena kao cilj upravljanja. Kod praćenja trajektorije vrijeme i mjesto su inherentno povezani u isti cilj upravljanja. Drugim riječima, kod praćenja trajektorije cilj je da se objekt upravljanja u točno određeno vrijeme nalazi na točno određenom mjestu u prostoru, a u ovom slučaju to je horizontalna ravnina. Pri planiranju trajektorije, mora se uzeti u obzir dinamiku i maksimalnu brzinu upravljanog objekta, odnosno dinamika i brzina točke trajektorije mora biti sporija od dinamike plovila, jer u suprotnom plovilo ne bi moglo slijediti trajektoriju. U slučaju kvara auktuatora plovila, referentna vrijednost se nastavlja gibati po trajektoriji, ostavljajući plovilo iza sebe. Dakle interakcija sustava generiranja trajektorije i upravljanog objekta može se interpretirati kao unaprijedno upravljanje u otvorenoj petlji, odnosno komunikacija je jednosmjerna i sustav zadavanja trajektorije nema nikakvog saznanja o poziciji plovila. Neka je neka trajektorija definirana prema \ref{eq:traject}, gdje $s$ predstavlja parametar trajektorije, npr. prijeđeni put, i neka je $T = [x(t), y(t), \psi(t)]$ točka trajektorije u trenutku $t$, odnosno za parametar $s(t)$.

\begin{align} \label{eq:traject}
\boldsymbol{\Gamma} &= [x(s_t), y(s_t), \psi(s_t)] = \boldsymbol{t}(s_t) \\
s_t &= f(t) = k \, t
\end{align}

\noindent Za praćenje trajektorije odabrana je kaskadna struktura upravljanja prema slici \ref{fig:TTkask}.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTkask.pdf}
\caption{\emph{Struktura upravljanja za praćenje trajektorije}}
\label{fig:TTkask}
\end{figure}

\noindent Prema \ref{eq:traject} trajektorija je definirana na isti način kao i putanja kod \emph{virtual target} algoritma u poglavlju \ref{chap:VT}. Na slici \ref{fig:TTframes} je prikazana trajektorija $\Gamma$ i točka $T$. Međutim, one se razlikuju o tome što brzina virtualne mete $\dot{s}_{p}(U,s)$ ovisi o brzini kretanja objekta upravljanja i uzdužne greške slijeđenja, dok je kod trajektorije $\dot{s}_t(t)$ promjena puta definirana kao funkcija vremena, neovisno o tome gdje se brod nalazi i kojom brzinom se kreće. Ovdje se najbolje može vidjeti ranija tvrdnja da se trajektorija zadaje u otvorenoj petlji u odnosu na sustav navođenja i upravljanja. 

\begin{figure}[H]
\centering
\includegraphics[width=12cm]{fig/TTframes.pdf}
\caption{\emph{Trajektorija $\Gamma$, točka $T$ i put $s_t$}}
\label{fig:TTframes}
\end{figure}

\noindent U nastavku će zbog jednostavnosti vrijediti:

\begin{equation} \label{eq:TT}
s_t(t) = k \, t \Longrightarrow \dot{s}_t = const.
\end{equation}

\noindent Algoritam nije kompliciran i sastoji se od jedne upravljačke jednadžbe koja generira referentnu totalnu brzinu kretanja $U_{ref}$, a zadaća kretanja po putanji trajektorije tom referentnom brzinom pripada \emph{virtual target}, \emph{motion control} ili nekom drugom sličnom kinematičkom algoritmu navođenja. Upravljačka jednadžba definirana je sa:

\begin{equation} \label{eq:TT}
U_{ref} = \dot{s}_t + v_m \, tanh( K_d \, ( s_t - s_p ) )
\end{equation}

\noindent Gdje je $\dot{s}_t$ brzina gibanja točke trajektorije, $(s_t - s_p)$ je razlika prijeđenog puta točke trajektorije i virtualne mete, a $v_m$ i $K_d$ su parametri upravljačkog zakona. $v_m$ predstavlja maksimalnu brzinu koja se dodaje brzini točke trajektorije. Povećanjem $v_m$, ukoliko je brod udaljen od točke $T$, on će se brže kretati po putanji do točke $T$. Ukoliko je $v_m$ veći od brzine kretanja, a brod se gledajući po prijeđenom putu nalazi ispred točke $T$, on će se početi vraćati po trajektoriji prema toj točki. Ako je $v_m$ jednak $\dot{s}_t$, i brod se nalazi ispred $T$, on će se pozicionirati na putanju trajektorije i stajati dok mu se $T$ trajektorije ne približi. Kako ona dolazi sve bliže, brod će se početi polako kretati u smjeru tangente na trajektoriju i obrzavat će do brzine $\dot{s}_t$ dok ga točka $T$ ne dostigne i tada će se nastaviti gibati s njom. Parametrom $K_d$ podešava se nagib hiperbolne koji definira \emph{agresivnost} slijeđenja točke $T$. \\

\noindent \textbf{Praćenje trajektorije pomoću algoritma virtualne mete} \\
U ovom dijelu su prikazani rezultati praćenja trajektorije \emph{virtual target} metodom. Trajektorija je geometrijski opisana kružnicom. Brzina gibanja točke $T$ je konstantna i iznosi $\dot{s}_t = 0.01 \, m/s$. Za parametre I-P regulatora brzine odnosno stupnjeve slobode zanošenja i zaošijanja odabran je $\omega_n = 0.3 \, s^{-1}$, dok je za stupanj napredovanja korišten $\omega_n = 0.1 \, s^{-1}$. Parametri algoritma virtualne mete su $\psi_a = 90\degree$, $K_\varphi = 3$, $K_r = 0.1$ i $K_c =0.2$. Paramatri slijeđenja trajektorije su $v_m = 0.5 \, m/s$ i $K_d = 5$. Na slici \ref{fig:TTVTerr} prikazane su greške slijeđenja trajektorije. Brod kreće iz stanja mirovanja pod kutem $\psi = 90\degree$ i najprije se približava putanji. Za to vrijeme točka $T$ se udaljava i greške slijeđenja rastu. Brod ubrzava svoje kretanje po putanji kako bi stigao točku $T$ i greške konvergiraju u nulu.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTVTerr.pdf}
\caption{\emph{Greške slijeđenja trajektorije korištenjem virtualne mete}}
\label{fig:TTVTerr}
\end{figure}

\noindent 
Na slici \ref{fig:TTVTpos} može se vidjeti vremenski odziv pozicija točke $T$, virtualne mete odnosno točke $P$ i broda $B$. Može se primjetiti kako brod najprije prilazi putanji, odnosno virtualnoj meti na putanji. Ta virtualna točka ima svojstvo atraktora. Brod na nižem nivou obavlja slijeđenje putanje a zatim zadatak praćenja točke na putanji odnosno trajektorije. Vidljivo je kako se brod kreće brže od točke $T$ i na kraju je sustiže. Na slici \ref{fig:TTVTpath} prikazane su putanje točke $T$ i broda u horizontalnoj ravnini. Odzivi su gotovo isti kao i kod praćenja putanje bez vremenske dimenzije, što je i očekivano. To potvrđuje kvalitetu nižih krugova upravljanja. Slika \ref{fig:TTVTvel} prikazuje referentne i estimirane brzine kretanja broda i iz nje se jasno vidi da kad brod kasni, i njegova referentna brzina je veća.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTVTpos.pdf}
\caption{\emph{Odzivi pozicija i orijentacija točke T, virtualne mete P i broda B}}
\label{fig:TTVTpos}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTVTpath.pdf}
\caption{\emph{Putanja broda i točke T trajektorije}}
\label{fig:TTVTpath}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTVTvel.pdf}
\caption{\emph{Referentne i estimirane brzine broda kod slijeđenja trajektorije}}
\label{fig:TTVTvel}
\end{figure}


\newpage
\noindent \textbf{Praćenje trajektorije pomoću algoritma navođenog upravljanja} \\
U ovom dijelu su prikazani rezultati praćenja trajektorije uz pomoć \emph{motion control} metode slijeđenja putanje. Trajektorija je geometrijski zadana parametarski kružnicom, s parametrom $s_t$. Brzina kretanja točke $T$ po kružnici je dvostruko veća nego u prethodnom slučaju i iznosi $\dot{s}_t = 0.02 \, m/s$. Za parametre I-P regulatora brzine odnosno stupnjeve slobode zanošenja i zaošijanja odabran je $\omega_n = 0.3 \, s^{-1}$, dok je za stupanj napredovanja korišten $\omega_n = 0.15 \, s^{-1}$. Parametri algoritma virtualne mete su $\psi_a = 90\degree$, $K_\varphi = 5$, $K_r = 0.1$ i $K_c =0.5$. Paramatri slijeđenja trajektorije su $v_m = 0.2 \, m/s$ i $K_d = 7$. Brod je u početnim uvijetima u stanju mirovanja, i nalazi se u središtu kružnice pod kutem $\psi = 0\degree$.

Na slici \ref{fig:TTMCerr} prikazane su greške slijeđenja trajektorije. Može se vidjeti kako greške na početku rastu jer se točka $T$ udaljava po kružnici. Kao i ranije algoritam praćenja trajektorije podiže totalnu brzinu broda i brod se približava točki $T$. Naposlijetku je sustiže i nastavlja se gibati zajedno s njom. Time greške slijeđenja konvergiraju u vrijednosti $e = 0$ i $s = 0$ i to je očito iz grafa. Ako se pažljivije promotri graf pogrešaka može se primjetiti da iznos uzdužne pogreške praćenja mijenja predznak. To znači da je brod zbog veće brzine pretekao točku $T$, a zatim je usporio da pričeka točku $T$ i nastavio se usporedos njome.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTMCerr.pdf}
\caption{\emph{Greške slijeđenja trajektorije korištenjem navođenog upravljanja}}
\label{fig:TTMCerr}
\end{figure}

\noindent 
Na slici \ref{fig:TTMCpos} prikazani su odzivi pozicije točke trajektorije $T$, putanje $P$ i broda $B$ u vremenu. I iz ove slike vidljivo je da brod najprije slijedi putanju, a zatim trajektoriju. U ovom eksperimentu namjerno je odabrano \emph{agresivnije} praćenje i veća brzina trajektorije kako bi došlo do prebačaja referentne vrijednosti i tako pokazalo da brod usporava i čeka da ga točka trajektorije sustigne. Unatoč dvostruko većoj brzini kretanja $\dot{s}_t$ točke trajektorije $T$ može se zaključiti da brod veoma dobro obavlja zadatak. Praćenje trajektorije jedan je od najzahtjevnijih zadataka kod upravljanja plovilima.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTMCpos.pdf}
\caption{\emph{Odzivi pozicija i orijentacija točke T, virtualne mete P i broda B}}
\label{fig:TTMCpos}
\end{figure}

\noindent 
Na slici \ref{fig:TTMCpath} prikazane su referentna trajektorija i putanja broda u horizontalnoj ravnini. Obzirom da se radi o dvostruko većoj brzini nego u prethodnim eksperimentima rezultati su i više nego zadovoljavajući. Nakon završenja prijelaznih pojava pogreška ne prelazi $2 \, cm$, što je stvarno jako dobar rezultat s obzirom na korištenu opremu, mjerne instrumente i realan sustav podložan smetnjama i promjenjivim parametrima modela (npr. prazna baterija). Na slici \ref{fig:TTMCvel} može se vidjeti rad najnižeg kruga upravljanja, odnosno referentne i estimirane vrijednosti brzina. Može se uočiti da estimirane vrijednosti kasne za zadanima, no uzrok tome je \emph{agresivniji} pristup praćenju.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/TTMCpath.pdf}
\caption{\emph{Putanja broda i točke T trajektorije}}
\label{fig:TTMCpath}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/TTMCvel.pdf}
\caption{\emph{Referentne i estimirane brzine broda kod slijeđenja trajektorije}}
\label{fig:TTMCvel}
\end{figure}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newpage
\section{Primjene metoda vođenja i upravljanja}

U ovom poglavlju bit će opisana dva eksperimenta. U prvom će se koristiti dinamičko pozicioniranje (DP) za pristajanje broda uz plovnu platformu koja se nalazi u bazenu. U drugom eksperimentu brod treba pristati bočno uz terminal. Na prvi pogled problem je isti, no zbog prepreke na putu (npr. lukobran) nije moguće koristiti dinamičko pozicioniranje. Zbog toga se koristi metoda slijeđenja putanje.

\subsection{Pristajanje broda dinamičkim pozicioniranjem}

Ukoliko u okolini broda ne postoje drugi plovni objekti koji ograničavaju kretanje, dinamičko pozicioniranje broda može se koristiti za automatsko pristajanje broda i održavanje krajnje pozicije. U poglavlju \ref{chap:DP} prikazano je kako kod opisane metode dinamičkog pozicioniranja nema nadvišenja, što je kod sustava DP izuzetno bitno. To znači da neće doći do sudara broda i platforme. Tijek eksperimenta iz perspektive kamere iznad bazena prikazan je na slici \ref{fig:DPdocking}.

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/DPdocking.png}
\caption{\emph{Pristajanje broda uz platformu dinamičkim pozicioniranjem}}
\label{fig:DPdocking}
\end{figure}

\noindent 
Na slici \ref{fig:DPdockPos} prikazani su odzivi pozicije i orijentacije tijekom dinamičkog pozicioniranja. Može se primjetiti da je odziv za sva tri stupnja slobode aperiodski, što potvrđuje da nije došlo do sudara. Na slici \ref{fig:DPdockVel} mogu se vidjeti odzivi estimiranih brzina tijekom eksperimenta.

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/DPdockPos.pdf}
\caption{\emph{Odzivi pozicija broda tijekom pristajanja}}
\label{fig:DPdockPos}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/DPdockVel.pdf}
\caption{\emph{Odzivi estimiranih brzina broda tijekom pristajanja}}
\label{fig:DPdockVel}
\end{figure}

\subsection{Pristajanje broda slijeđenjem putanje}

Postoji mogućnost da u okolini broda postoji mirna prepreka (npr. lukobran, greben, drugi brod). Ovaj eksperiment prikazuje pristajanje broda uz terminal kada se na putu nalazi mirna prepreka. Tijek eksperimenta iz perspektive kamere iznad bazena prikazan je na slici \ref{fig:PFdocking}. Za praćenje putanje korišten je \emph{motion control} algoritam prikazan u poglavlju \ref{chap:MC}, a putanja broda sastavljena je od pravaca i kružnih lukova. Kod slijeđenja pravaca, referentna brzina kretanja je veća nego kod slijeđenja kružnih lukova. \\

\begin{figure}[H]
\centering
\includegraphics[width=14cm]{fig/PFdocking.png}
\caption{\emph{Pristajanje broda s preprekom uz terminal slijeđenjem putanje}}
\label{fig:PFdocking}
\end{figure}

\noindent Prije prelaska na kružni luk brod usporava, a pri prelasku na liniju ponovo ubrzava. Na taj način dolazi do izražaja svojstvo da se pri slijeđenju putanje dinamika slijeđenja može mijenjati bez obzira na samu putanju, što omogućuje adaptaciju slijeđenja.

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/PFdockPos.pdf}
\caption{\emph{Pozicija virtualne mete i broda}}
\label{fig:PFdockPos}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=13cm]{fig/PFdockVel.pdf}
\caption{\emph{Referentne i estimirane brzine broda}}
\label{fig:PFdockVel}
\end{figure}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 ZAKLJUČAK		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Zaključak}
Izrada modela broda nije bila nimalo lak zadatak. U njegovu izradu utrošeno je mnogo truda i vremena. Međutim, sav uloženi trud se isplatio. Dobiveni model broda ima dobra plovna svojstva i na njemu se mogu kvalitetno vršiti eksperimenti. Matematički model koji opisuje ponašanje broda iznimno je složen i nelinearan. Podaci koji dolaze od senzora zašumljeni su i neprikladni za upravljanje. Matematički model je pojednostavljen i projektiran je estimator stanja koji uspješno estimira brzine broda za koje ne postoje mjerenja. Na brodu je ispitano nekoliko algoritama vođenja i upravljanja. Prvo je realiziran algoritam slijeđenja referentnog kursa odnosno \emph{autopilot}. Zatim je osmišljen i uspješno implementiran algoritam dinamičkog pozicioniranja, koji je dao veoma dobre rezultate. Na kraju su iskušane i neke složenije nelinearne metode slijeđenja putanje, a to su \emph{virtual target} i \emph{motion control} metode. Rezultati dobiveni složenijim metodama slijeđenja putanje također su dale veoma dobre rezultate, pa su zato proširene i temelju njih je ostvareno praćenje trajektorije, koje predstavlja jedan je od složenijih problema kod vođenja i upravljanja plovilima. U radu su detaljno prikazani rezultati sviju od navedenih eksperimenata. Tijekom izrade ovog rada stećeno je mnogo znanja i iskustva na temu vođenja i upravljanja brodovima i postignuti su zapaženi rezultati.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 LITERATURA		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliography{literatura}
\bibliographystyle{fer}

\listoffigures

\listoftables

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 SAŽETAK 		    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{sazetak}
\noindent U ovom radu je opisan model broda koji čine njegovi sastavni moduli i upravljački softver. Dan je matematički model propulzora, kormila te dinamički i kinematički modeli broda. Kreirana je mapa potisnika i parametri dinamičkog modela identificirani su pomoću metode vlastitih oscilacija. Projektiran je Kalmanov filter koji služi za uklanjanje šuma iz mjernih signala i estimiranje vektora brzine broda i prikazani su odzivi. Na brodu je ispitano nekoliko metoda vođenja i upravljanja. Ispitane metode vođenja i upravljanja su: regulacija kursa, dinamičko pozicioniranje, slijeđenje putanje i praćenje trajektorije. Prikazani su rezultati za svaku od navedenih metoda. Na kraju su prikazane moguće primjene navedenih metoda upravljanja i rezultati njihove primjene.

\kljucnerijeci{Model broda, dinamički model, kinematički model, mapa propulzora, Kalmanov filter, identifikacija parametara, vlastite oscilacije, upravljanje plovilima, dinamičko pozicioniranje, slijeđenje putanje, praćenje trajektorije, virtualna meta, pristajanje broda}
\end{sazetak}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%		 ABSTRACT	    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\engtitle{Control software for a remotely operated ship}
\begin{abstract}
\noindent This thesis describes process of building and development of a small-scale ship model. It also describes design of it's control software. Simplified dynamic and kinematic models are given. Models' parameters are identified using a set of self-oscillations experiments for each DOF. Thruster map is also presented. Thesis also describes discrete Kalman filter principles and it's implementation in control software. Kalman filter is used as a state estimator to estimate velocity vector. Several laws of guidance and control of marine vehicles are presented. Their implementation and results of their use are shown. These guidance laws are: Autopilot, Dynamic Positioning, Path Following and Trajectory Tracking. In the end, some useful applications of previous guidance and control laws and their results are discussed.

\keywords{Ship model, dynamic model, kinematic model, thruster map, Kalman filter, parameter identification, self-oscillations, IS-O, guidance, control, autopilot, dynamic positioning, path following, trajectory tracing, virtual target, motion control, auto-docking}
\end{abstract}

\end{document}
