diff --git a/BAB4/Gref.csv b/BAB4/Gref.csv new file mode 100644 index 0000000..2986465 --- /dev/null +++ b/BAB4/Gref.csv @@ -0,0 +1,52 @@ +column 1,column 2 +0,0 +0.007519014058975133,0.014 +0.02787288907893497,0.028 +0.05813661124868522,0.04200000000000001 +0.09584103764508942,0.05600000000000001 +0.1389152410439689,0.07000000000000001 +0.1856349017744423,0.08400000000000002 +0.2345762549446597,0.09800000000000002 +0.2845751216558404,0.112 +0.334690575780543,0.126 +0.3841728226304695,0.14 +0.4324348916534503,0.154 +0.4790277715864288,0.168 +0.5236186427736041,0.182 +0.5659718872567027,0.196 +0.6059325824613133,0.21 +0.6434122086135965,0.224 +0.6783763232591336,0.238 +0.7108339783034885,0.2520000000000001 +0.7408286757766605,0.266 +0.7684306779992418,0.28 +0.7937305059825104,0.294 +0.8168334767356632,0.3080000000000001 +0.8378551457061627,0.3220000000000001 +0.8569175348824327,0.3360000000000001 +0.8741460401907847,0.35 +0.8896669237767264,0.364 +0.9036053076360092,0.3780000000000001 +0.9160835949173277,0.3920000000000001 +0.9272202541224777,0.4060000000000001 +0.937128909447261,0.42 +0.9459176877030213,0.4340000000000001 +0.9536887786983711,0.4480000000000001 +0.9605381717052835,0.4620000000000001 +0.966555535742483,0.4760000000000001 +0.9718242159382878,0.49 +0.9764213222379007,0.5040000000000001 +0.980417890246481,0.5180000000000001 +0.9838790970957602,0.532 +0.9868645179317038,0.546 +0.9894284109837901,0.5600000000000001 +0.9916200212296733,0.5740000000000001 +0.9934838944460908,0.5880000000000001 +0.9950601949686966,0.6020000000000001 +0.9963850217981394,0.6160000000000001 +0.9974907188126078,0.6300000000000001 +0.9984061758012728,0.6440000000000001 +0.9991571178393106,0.6580000000000001 +0.9997663812021337,0.6720000000000002 +1.000254174580784,0.6860000000000001 +1.000638324827062,0.7000000000000001 \ No newline at end of file diff --git a/BAB4/Kst.matrix b/BAB4/Kst.matrix new file mode 100644 index 0000000..54368d1 --- /dev/null +++ b/BAB4/Kst.matrix @@ -0,0 +1,4 @@ +k1,k2,k3,k4,k5,k6 +-0,-82.81000000000003,6.900833333333332,-0,-9.670003622750881,1.028166847804211 +71.71556368738935,41.40500000000003,6.900833333333331,8.386015797373604,4.835001811375442,1.02816684780421 +-71.71556368738936,41.40500000000002,6.900833333333334,-8.386015797373604,4.835001811375441,1.028166847804211 diff --git a/BAB4/Nst.matrix b/BAB4/Nst.matrix new file mode 100644 index 0000000..b8aec05 --- /dev/null +++ b/BAB4/Nst.matrix @@ -0,0 +1,3 @@ +-0,-82.81000000000003,6.900833333333335,-0,-0,-0 +71.71556368738936,41.40500000000002,6.900833333333334,-0,-0,-0 +-71.71556368738936,41.40500000000002,6.900833333333334,-0,-0,-0 diff --git a/BAB4/bab4.tex b/BAB4/bab4.tex index 2e9995f..773498a 100644 --- a/BAB4/bab4.tex +++ b/BAB4/bab4.tex @@ -25,21 +25,21 @@ dari sistem adalah orde 2. Dengan membaginya kedalam 3 persamaan state-space akan lebih mudah dalam analisis parameter kendalinya. Berikut adalah persamaan \begin{align} - \begin{bmatrix}\dot{x}_p \\ \ddot{x}_r \end{bmatrix} &= - \begin{bmatrix}0 & A_{14} \\ 0 & A_{44} \end{bmatrix} - \begin{bmatrix}{x}_p \\ \dot{x}_r\end{bmatrix} + - \begin{bmatrix}0 & 0& 0 \\ B_{11} & B_{12} & B_{13} \end{bmatrix} - \begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + K_{44}sgn(\dot{x}_r) \\ - \begin{bmatrix}\dot{y}_p \\ \ddot{y}_r \end{bmatrix} &= - \begin{bmatrix}0 & A_{25} \\ 0 & A_{55} \end{bmatrix} - \begin{bmatrix}{y}_p \\ \dot{y}_r\end{bmatrix} + - \begin{bmatrix}0 & 0& 0 \\ B_{21} & B_{22} & B_{23} \end{bmatrix} - \begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + K_{55}sgn(\dot{y}_r) \\ - \begin{bmatrix}\dot{\theta}_p \\ \ddot{\theta}_r\end{bmatrix} &= - \begin{bmatrix}0 & A_{34} \\ 0 & A_{66} \end{bmatrix} - \begin{bmatrix}{\theta}_p \\ \dot{\theta}_r\end{bmatrix} + - \begin{bmatrix}0 & 0& 0 \\ B_{31} & B_{32} & B_{33} \end{bmatrix} - \begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + K_{66}sgn(\dot{\theta}_r) + \begin{bmatrix}\dot{x}_p \\ \ddot{x}_r \end{bmatrix} & = + \begin{bmatrix}0 & A_{14} \\ 0 & A_{44} \end{bmatrix} + \begin{bmatrix}{x}_p \\ \dot{x}_r\end{bmatrix} + + \begin{bmatrix}0 & 0& 0 \\ B_{11} & B_{12} & B_{13} \end{bmatrix} + \begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + K_{44}sgn(\dot{x}_r) \label{eq:ssx} \\ + \begin{bmatrix}\dot{y}_p \\ \ddot{y}_r \end{bmatrix} & = + \begin{bmatrix}0 & A_{25} \\ 0 & A_{55} \end{bmatrix} + \begin{bmatrix}{y}_p \\ \dot{y}_r\end{bmatrix} + + \begin{bmatrix}0 & 0& 0 \\ B_{21} & B_{22} & B_{23} \end{bmatrix} + \begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + K_{55}sgn(\dot{y}_r)\label{eq:ssy} \\ + \begin{bmatrix}\dot{\theta}_p \\ \ddot{\theta}_r\end{bmatrix} & = + \begin{bmatrix}0 & A_{34} \\ 0 & A_{66} \end{bmatrix} + \begin{bmatrix}{\theta}_p \\ \dot{\theta}_r\end{bmatrix} + + \begin{bmatrix}0 & 0& 0 \\ B_{31} & B_{32} & B_{33} \end{bmatrix} + \begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + K_{66}sgn(\dot{\theta}_r) \label{eq:ssthe} \end{align} State feedback membutuhkan kembalian nilai state dari sistem dan mengka- @@ -58,7 +58,7 @@ untuk menguji apakah sistem bersifat controlable atau tidak (Dorf, dkk (2010)). Apabila hasil dari $rank(P_c ) \neq n$ maka sistem tidak controlable. Sedangkan untuk menguji observable dapat menggunakan rumus berikut. -\begin{align*} P_o = \begin{bmatrix} C \\ CA & CA^2 & \vdots & CA^{n-1} \end{bmatrix}\end{align*} +\begin{align*} P_o = \begin{bmatrix} C \\ CA \\ CA^2 \\ \vdots \\ CA^{n-1} \end{bmatrix}\end{align*} \begin{align} rank[P_o] = n \end{align} Apabila sistem observable determinan dari matriks Observablity $P_o$ tidak nol. @@ -70,22 +70,170 @@ sistem robot juga observable. Karena sistem robot observable, maka dalam desain kendali tidak diperlukan observer. \subsubsection{Desain Kendali} -Kriteria didefinisi menggunakan analisis sistem orde dua pada domain waktu. +Kriteria didefinisi menggunakan analisis sistem orde dua pada domain waktu. Berikut adalah transfer fungsi tertutup dari sistem orde dua (\kutip{Richard2010}). \begin{align} - Y(s) = \frac{\omega_n^2}{s^2+2\zeta\omega_n+\omega_n^2} R(s) + Y(s) = \frac{\omega_n^2}{s^2+2\zeta\omega_n+\omega_n^2} R(s) + \label{eq:Gref} \end{align} -Dengan input $R(s) = 1/s$ sebagai unit impulse, maka didapat persamaan keluaran sistem dalam domain waktu. +Dengan input $R(s) = 1/s$ sebagai unit step, maka didapat persamaan keluaran sistem dalam domain waktu. \begin{align} - y(t) = 1 - \frac{1}{\beta}e^{-\zeta\omega_n t}sin(\omega_n\beta t + \theta) + y(t) = 1 - \frac{1}{\beta}e^{-\zeta\omega_n t}sin(\omega_n\beta t + \theta) \end{align} dimana $\beta = \sqrt{1-\zeta^2}$, $\theta = \cos^{-1}\zeta$, dan $0<\zeta<1$. Dari persamaan domain waktu tersebut didapat 4 kriteria dalam sistem, -yaitu \textit{satling time} ($T_s$), Prosentase \textit{overshoot} ($P.O$), +yaitu \textit{satling time} ($T_s$), Prosentase \textit{overshoot} ($P.O$), \textit{peek time} ($T_p$), dan \textit{Transient Time} ($T_{r1}$). +Dari keempat kriteria tersebut, merupakan fungsi dari $\zeta$ dan $\omega_n$. +Berikut adalah rumus dari keempat kriteria tersebut. +\begin{itemize} + \item $T_s$ adalah rumus pendekatan untuk mengetahui waktu respon sistem + mulai dari kondisi inisial sampai sistem mencapai 2\% dari set poin yang terakhir. + \begin{align} + T_s = \frac{4}{\zeta \omega_n} + \end{align} + \item $P.O$ adalah prosentase \textit{overshoot} dari sistem. + Arti dari \textit{overshoot} pada sistem adalah respon sistem yang melebihi dari nilai set poin. + \begin{align} + P.O. = 100e^{-\zeta \pi/\sqrt{1-\zeta^2}} + \end{align} + \item $T_p$ adalah waktu dimana respon sistem mengalami \textit{overshoot} dimulai dari kondisi inisial. + \begin{align} + T_p = \frac{\pi}{\omega_n \sqrt{1-\zeta^2}} + \end{align} + \item $T_{r1}$ adalah pendekatan nilai waktu respon sistem dimulai dari respon 10\% menuju ke 90\% set poin. + Akurasi dari rumus ini adalah $0.3 \leq \zeta \leq 0.8$. + \begin{align} + T_{r1} = \frac{2.16\zeta + 0.6}{\omega_n} + \end{align} +\end{itemize} +Apabila menggunakan $\zeta = 0.9$ dan $\omega_n = 9.1$, akan diperoleh kriteria $T_s= 0.48$, $T_p=14.75$, $P.O.=0.15$, dan $T_{r1}=0.27$. Grafik step response dapat diperhatiakn pada gamabar~\ref{fig:stepResGref}. +\begin{figure} + \begin{center} + \begin{subfigure}[t]{.4\textwidth} + \begin{tikzpicture} + %%https://www.latex-tutorial.com/tutorials/pgfplots/ + \begin{axis}[ + width=\linewidth, % Scale the plot to \linewidth + grid=major, % Display a grid + grid style={dashed,gray!30}, % Set the style + xlabel=$s$, % Set the labels + ylabel=Response, + no marks + ] + \addplot + table[x=column 2,y=column 1,col sep=comma] {BAB4/Gref.csv}; + \end{axis} + \end{tikzpicture} + \caption{} + \label{fig:stepResGref} + \end{subfigure} + \begin{subfigure}[t]{.4\textwidth} + \begin{tikzpicture} + \begin{axis}[ + width=\linewidth, % Scale the plot to \linewidth + grid=major, % Display a grid + grid style={dashed,gray!30}, % Set the style + xlabel=Re, % Set the labels + ylabel=Im, + legend pos=south east, + only marks + ] + \addplot + table[x=real,y=imag,col sep=comma] {BAB4/poleGref.csv}; + \end{axis} + \end{tikzpicture} + \caption{} + \label{fig:poleSystem} + \end{subfigure} + \caption{(a) Step Respon dari persamaan~\eqref{eq:Gref} dengan parameter $\zeta = 0.9$ dan $\omega_n = 9.1$ \\ + (b) Pole sistem adalah -8.19+3.96j dan -8.19+3.96j } + \end{center} +\end{figure} -\todo{Parameter K} -\todo{Parameter N} + +Untuk mendesain parameter K pada \textit{state feedback}, +diasumsikan bahwa \textit{state} pada sistem dapat diperoleh dari sensor, $x(t)$ untuk semua $t$. +Persamaan rumus masukan ke sistem menjadi +\begin{align} + u(t) = -K_sx(t) +\end{align} +sehingga persamaan \textit{state space} menjadi berikut. +\begin{align} + \dot{x}(t) = (A-BK_s)x(t) +\end{align} +Dapat diperhatikan bahwa $(A-BK_s)$ merupakan matriks karakteristik dari sistem. +Sehingga dengan mengatur besaran $K_s$ dapat menjadikan sistem sesuai dengan kriterianya. +\begin{align} + \det[\lambda I-(A-BK_s)]=0 +\end{align} +Untuk mendapatkan konstanta $K_s$, digunakan aplikasi Matlab/Octave dengan fungsi yang bernama +$place()$. +Fungsi tersebut akan mengatur nilai $K_s$ dengan kriteria pole(perhatikan pada gambar \ref{fig:poleSystem}) yang diinginkan. +Berikut adalah hasil kalkulasi dari fungsi $place()$ menggunakan matriks pada persamaan~\eqref{eq:ssx},\eqref{eq:ssy}, dan \eqref{eq:ssthe}. +\begin{align} + K_s^{x} &= + \begin{bmatrix} + -0.00000& -0.00000 \\ + 71.71556& 8.38602 \\ + -71.71556& -8.38602 + \end{bmatrix}; + K_s^{y}= + \begin{bmatrix} + -82.81000& -9.67000& \\ + 41.40500& 4.83500& \\ + 41.40500& 4.83500& + \end{bmatrix}; \nonumber\\ + K_s^{\theta} &= + \begin{bmatrix} + 6.90083& 1.02817\\ + 6.90083& 1.02817\\ + 6.90083& 1.02817 + \end{bmatrix} +\end{align} + + +Setelah mendapatkan konstanta $K_s$, sistem sudah dalam keadaan stabil. +Akan tetapi sistem tidak mencapai set poin yang diinginkan. +Maka permasalahan tersebut dapat diselesaikan dengan \textit{input refrence}. +Dimana refrence tersebut akan dikalikan dengan konstanta $N$. +Berikut adalah persamaan \textit{input refrence} sebagai penambah dari \textit{state feedback}. +\begin{align} + u(t) = -Kx(t)+Nr +\end{align} +Sehingga persamaan \textit{state space} menjadi berikut. +\begin{align} + \dot{x} &= (A-BK_s)x + BNr\\ + y &= Cx +\end{align} +Untuk mendapatkan nilai $N$ maka dapat diasumsikan bahwa sistem dalam keadaan \textit{steady state}, yaitu $\dot{x} = 0$, sehingga persamaan state space menjadi berikut. +\begin{align} + x &= -(A-BK_s)^{-1}BNr +\end{align} +Dalam keadaan \textit{steady state}, harapannya adalah nilai refrence sama dengan nilai keluaran, $y=r$. +Sehingga dapat diperoleh persamaan $N$. +\begin{align} + N &= -[C(A-BK_s)^{-1}B]^{-1} +\end{align} +Berikut adalah hasil kalkulasi dari rumus $N$ menggunakan matriks pada persamaan~\eqref{eq:ssx},\eqref{eq:ssy}, dan \eqref{eq:ssthe}. + +\begin{align} + N^x &= \begin{bmatrix} + -0.00000 & -0.00000 \\ + 71.71556 & -0.00000 \\ + -71.71556 & -0.00000 + \end{bmatrix}; + N^y = \begin{bmatrix} + -82.81000 & -0.00000 \\ + 41.40500 & -0.00000 \\ + 41.40500 & -0.00000 + \end{bmatrix} \nonumber \\ + N^\theta &= \begin{bmatrix} + 6.90083& -0.00000 \\ + 6.90083& -0.00000 \\ + 6.90083& -0.00000 + \end{bmatrix} +\end{align} \subsection{Kendali Formasi Multi Robot} @@ -208,12 +356,12 @@ Dengan menggunakan parameter dari penelitian oleh \kutip{CORREIA20127}, maka aka -6.69666 & 0.00000 & 0.00000 \\ 0.00000 & -6.71000 & 0.00000 \\ 0.00000 & 0.00000 & -4.04200 \\ - \end{bmatrix} ; \quad + \end{bmatrix} ; \quad B = \begin{bmatrix} 0.00000 & 0.57735 & -0.57735 \\ -0.66667 & 0.33333 & 0.33333 \\ 4.00000 & 4.00000 & 4.00000 \\ - \end{bmatrix} ; \\ + \end{bmatrix} ; \\ K & = \begin{bmatrix} -1.46667 & 0.00000 & 0.00000 \\ 0.00000 & -1.00000 & 0.00000 \\ diff --git a/BAB4/poleGref.csv b/BAB4/poleGref.csv new file mode 100644 index 0000000..f1f31d2 --- /dev/null +++ b/BAB4/poleGref.csv @@ -0,0 +1,3 @@ +real,imag +-8.190000000000001,3.966598038622012 +-8.190000000000001,-3.966598038622012 diff --git a/uithesis.sty b/uithesis.sty index c012139..2140489 100644 --- a/uithesis.sty +++ b/uithesis.sty @@ -163,9 +163,19 @@ % % Digunakan untuk membuat mind map % -\usepackage{tikz} +\usepackage{siunitx} +\usepackage{tikz} % To generate the plot from csv \usetikzlibrary{mindmap} - +% +% Digunakan untuk plot data +% +\usepackage{pgfplots} +\pgfplotsset{compat=newest} % Allows to place the legend below plot +\usepgfplotslibrary{units} % Allows to enter the units nicely +\sisetup{ + round-mode = places, + round-precision = 2, +} %-----------------------------------------------------------------------------% % Konfigurasi