diff --git a/.vscode/tasks.json b/.vscode/tasks.json index bb8321d..118b909 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,14 +6,14 @@ { "label": "Compile thesis", "type": "shell", - "command": "latexmk -pdf -quite thesis.tex article.tex && latexmk -pdf -quite -c thesis.tex article.tex", + "command": "latexmk -pdf thesis.tex && latexmk -pdf -silent -c thesis.tex", "problemMatcher": [] }, { - "label": "Compile articel", + "label": "Compile Presentasi", "type": "shell", - "command": "latexmk -pdf article.tex && latexmk -pdf -c article.tex", + "command": "latexmk -pdf presentasi.tex && latexmk -pdf -silent -c presentasi.tex", "problemMatcher": [] - } + }, ] } \ No newline at end of file diff --git a/4985-12075-3-CE.docx b/4985-12075-3-CE.docx new file mode 100644 index 0000000..16fb145 Binary files /dev/null and b/4985-12075-3-CE.docx differ diff --git a/4985-12075-3-CE.pdf b/4985-12075-3-CE.pdf new file mode 100644 index 0000000..bc6ef03 Binary files /dev/null and b/4985-12075-3-CE.pdf differ diff --git a/BAB1/bab1.tex b/BAB1/bab1.tex index df68fd7..b14f340 100644 --- a/BAB1/bab1.tex +++ b/BAB1/bab1.tex @@ -7,47 +7,67 @@ %-----------------------------------------------------------------------------% \section{Latar Belakang} %-----------------------------------------------------------------------------% -Kendali formasi adalah topik penelitian kendali multi-robot untuk memecahkan permasalahan koordinasi pergerakan (\kutipLs{Parker2003}). -Kendali formasi bertujuan untuk mengendalikan sekelompok robot dalam mencapai formasi tertentu -dan dapat mempertahankan formasi tersebut ketika bermanuver menuju arah yang diinginkan. -Pengembangan kendali formasi dilakukan dari sisi algoritma strategi (\kutipLs{Guanghua2013}). -Seperti pengembangan yang dilakukan oleh \kutip{6889491} menggunakan strategi \textit{leader-follower}. -Strateginya adalah ditentukan salah satu dari sekolompok robot untuk dijadikan pemimpin. -Lalu menggunakan informasi pemimpin, robot lainnya bergerak mencapai formasi yang dinginkan. -Pengembangan strategi "berdasarkan tingkah laku" (\textit{Behavior Based}) dilakukan oleh \kutip{ELFERIK2016117}, -dimana robot dimodelkan dengan kriteria formasi tertentu menjadi kesatuan model formasi yang dinamakan \textit{cluster space}. -Dalam model formasi tersebut robot memiliki dua tingkah laku yaitu tingkah laku untuk mengikuti robot tetangga dan tingkah laku mencapai formasi yang diinginkan. -Lalu tingkah laku robot tersebut dikendalikan menggunakan metode \textit{Fuzzy-Logic}. -Pengembangan setrategi juga dilakukan oleh \kutip{YOSHIOKA20085149} menggunakan strategi struktur virtual, -dimana sekelompok robot diformasikan dan dimodelkan menjadi satu kesatuan robot lalu robot bekerja untuk mencapai formasi tersebut. -Secara garis besar kendali formasi dikategorikan menjadi 3 bagian (\kutipLs{OH2015424}), -yaitu berdasarkan posisi, perpindahan, dan jarak. -Ketiga bagian tersebut tertuju pada jawaban dari pertanyaan, "variable apa yang digunakan -sebagai sensor" dan "variable apa yang aktif dikendalikan oleh sistem multi-robot untuk -mencapai formasi yang diinginkan". -Menetapkan variable sebagai sensor dapat dilakukan berdasarkan kemampuan robot. -Dari ketiga metode tersebut, formasi berdasarkan jarak merupakan metode yang dimungkinkan untuk diterapkan sensor yang lebih sedikit dari metode lainnya. -Pada formasi berdasarkan jarak, dimana setiap individu agent memiliki koordinatnya masing-masing dan tidak perlu disearahkan dengan koordinat global. -Variable yang dikendalikan pada meteode ini adalah variabel jarak antar agent yang terhubung, -sehingga dibutuhkan kemampuan untuk agent saling berkomunikasi antar agent lain. -Permasalah pada metode ini ditujukan pada analisa stabilitas secara general; -Pentingnya dilakukan investigasi pada penerapan model yang lebih nyata. -Pemeliharaan komunikasi juga menyumbang dalam permasalahan secara praktik, dan -kemampuan untuk menghindari rintangan juga dibutuhkan. +Kendali formasi adalah topik penelitian kendali multi-robot untuk memecahkan permasalahan +koordinasi pergerakan. Kendali formasi bertujuan untuk mengendalikan sekelompok robot +dalam mencapai formasi tertentu dan dapat mempertahankan formasi tersebut ketika +bermanuver menuju arah yang diinginkan. Penjabaran oleh Guanghua (Guanghua et al., +2013), pengembangan kendali formasi dilakukan dari beberapa algoritma strategi. Seperti +yang dikembangkan oleh Wang (\kutip{wang2014}) menggunakan strategi leader-follower, +menggunakan Fuzzy-Logic sebagai tingkah laku robot oleh Ferik (\kutip{ELFERIK2016117}) dan +menggunakan struktur virtual dimana sekelompok robot memiliki titik referensi sebagai satu +robot oleh Xuen-ren (Li et al., 2015). -Penerapan kendali formasi berdasarkan jarak yang dikembangkan oleh \kutip{Rozenheck2015}, -menunjukkan bahwa dengan memberikan kecepatan refrensi pada salh satu robot dapat mempertahankan formasi sekelompok robot menggunakan teori \textit{graph} dan kendali \textit{Proportional-Integral}. -Faktanya, analisis yang dilakukan oleh peneliti menggunakan model sederhana dan -pengukuran jarak antar tetangga diperoleh dari selisih koordinat global robot dan tetangganya. -Sedangkan dalam praktiknya robot hanya bisa mengukur jarak dan tidak mengetahui koordinat dari robot tetangga. - -Dari penerapan penelitian tersebut terdapat kesenjangan terhadap analisis kendali dengan praktiknya. -Maka akan dikembangkan algoritma untuk mengestimasi koordinat menggunakan variable jarak saja. -Agar lebih fokus dalam pengembangan algoritma, model yang digunakan disesuaikan dengan model oleh peneliti. -Model yang digunakan oleh peneliti menggunakan model sederhana dengan sifat robot dapat bergerak kesegala arah. -Maka model yang akan digunakan adalah \textit{omnidirectional} mobile robot. +Penjabaran oleh Kwang-Kyo (\kutip{OH2015424}), bahwa dari berbagai pengembangan kendali +formasi dapat ambil garis besar menjadi tiga bagian, yaitu berdasarkan posisi, perpindahan, +dan jarak. Ketiga bagian tersebut tertuju pada jawaban dari pertanyaan, "variabel apa yang +digunakan sebagai sensor" dan "variabel apa yang aktif dikendalikan oleh sistem multi-robot +untuk mencapai formasi yang diinginkan". Kendali formasi berdasarkan posisi adalah metode +kendali formasi dimana robot diharuskan memiliki kemampuan untuk mengetahui kordinatnya +sendiri berdasarkan koordinat global. Kerena itu kendali berdasarkan posisi membutuhkan +sensor posisi seperti GPS. Kendali formasi berdasarkan perpindahan adalah kendali formasi +dimana setiap robot tidak mengetahui koordinatnya berdasarkan koordinat global dikarenakan +variabel yang digunakan sebagai sensor adalah kecepatan terhadap tetangganya. Metode +berdasarkan posisi, robot membutuhkan kemampuan penyesuaian orientasi koordinat global +sehingga setiap robot dibutuhkan sensor kompas untuk menyearahkannya. Formasi +berdasarkan jarak adalah kendali formasi dimana variabel yang dikendalikan adalah variabel +jarak antar robot yang terhubung sehingga koordinat yang digunakan tidak mengacu pada +koordinat global. Penerapan formasi berdasarkan jarak menggunakan sensor yang lebih sedikit +dibanding dengan posisi dan perpindahan. Namun pembahasan model yang lebih nyata untuk +diterapakan kendali formasi berdasarkan jarak masih sedikit. Pengembangan formasi +berdasarkan jarak telah dikembangkan menggunakan teori graph dengan model single dan +double integrator sederhana oleh Kwang-Kyo (\kutip{Oh2014}), menggunakan informasi +jarak untuk mengendalikan model sederhana double integrator oleh Xiaoyu (\kutip{Cai2014}), + menggunakan konsensus antara robot untuk mencapai bentuk formasi +dengan model single integrator sederhana oleh Deghat (\kutip{deghat2016}), +mengendalikan bentuk formasi menggunakan adaptive control untuk mengestimasi kecepatan +tetangga dari model robot yang sederhana oleh Sung-Mo (\kutip{kang2014}), +menggabungkan kendali formasi berdasarkan jarak dan perpindahan untuk mengendalikan +model robot yang sederhana oleh Myoung-Chul (\kutip{park2015}), dan menggunakan +kendali Proportional-Integral (PI) untuk mengendalikan jarak setiap model robot yang +sederhana oleh Rozenheck (\kutip{Rozenheck2015}). +Kendali PI pada penelitian oleh Rozenheck (\kutip{Rozenheck2015}) tidak dapat langsung +diterapkan menggunakan sensor jarak karena kendali tersebut mengambil informasi jarak +menggunakan selisih dari koordinat kartesian global setiap robot. Sedangkan dalam praktiknya +robot hanya bisa mengukur jarak dan tidak mengetahui koordinat dari robot tetangganya. +Sudah umum penelitian dibidang lokalisasi menggunakan sensor jara seperti yang dibahas +oleh Kexing (\kutip{guo2020}) yang menggantikan sensor berbasis vision untuk +mendapatkan koordinat dari beberapa robot, penelitian oleh Qiang (\kutip{qiang2017}) +membutuhkan beberapa sensor jarak yang terpasang statis digunakan untuk mengetahui +koordinat sekelompok robot dan mengendalikannya secara terpusat, dan pengembangan oleh +Qiang (\kutip{qiang2018}) dengan memasang dua sensor jarak di salah satu dari +sekelompok robot, lalu mendistribusikan koordinat ke robot tetangganya. Lokalisasi +menggunakan dua sensor jarak tersebut memanfaatkan rumus segitiga untuk mendapatkan +koordinat robot tetangganya. Penelitian ini akan mengadopsi rumus segitiga dan +menggantikan salah satu dari dua sensor dengan algoritma cosinus sehingga tidak +mengharuskan salah satu robot memiliki dua sensor. Penelitian oleh Rozenheck (\kutip{Rozenheck2015}) + mengembangkan kendali formasi menggunakan model holonomic sederhana +dimana robot bergerak ke suatu arah tidak bergantung dari kondisi awal arah robot dan juga +model sederhana tidak mempertimbangkan parameter fisik pada modelnya. Percobaan akan +menggunakan tiga model robot holonomic dengan harapan menjadi langkah awal untuk +mengembangkan kendali formasi berdasarkan jarak menggunakan model robot yang lebih +nyata. %-----------------------------------------------------------------------------% \section{Identifikasi dan Perumusan Masalah} @@ -55,21 +75,21 @@ Maka model yang akan digunakan adalah \textit{omnidirectional} mobile robot. Berikut adalah potensi permasalahan sebagai identifikasi masalah : \begin{enumerate} - \item Kendali formasi berdasarkan jarak membutuhkan studi lebih lanjut terhadap model yang lebih nyata. - \item Penerapan kendali formasi berdasarkan jarak masih memiliki kesenjangan antara analisis dan praktiknya. + \item Kendali formasi berdasarkan jarak tidak dapat langsung diterapkan menggunakan sensor jarak + karena kendali formasi mengambil informasi jarak menggunakan selisih dari koordinat kartesian global setiap robot. + \item Kendali formasi berdasarkan jarak diperlukan pengembangan penarapan pada model yang lebih nyata. \end{enumerate} Dalam penelitian ini akan digunakan batasan-batasan permasalahan sebagai berikut : \begin{enumerate} -\item Variable sensor yang digunakan adalah jarak antar individu robot. -\item Komunikasi antar robot diasumsikan ideal, dalam artian percobaan tidak dilakukan diluar jarak jangkauan prangkat komunikasi. -% \item Rintangan yang digunakan adalah rintangan statis. +\item Kendali formasi berdsarkan jarak akan menggunakan tiga robot yang dijalankan secara simulasi. +\item Sensor jarak bekerja secara ideal. \end{enumerate} Berikut adalah beberapa point permasalahan yang ditujukan pada penelitian ini, yaitu: \begin{enumerate} -\item Bagaimanakan strategi untuk kendali formasi apabila variable yang dikendalikan adalah jarak antar robot?. -\item Bagaimanakah pergerakan kendali formasi berdasarkan jarak apabila model yang digunakan adalah \textit{omnidirectional} mobile robot ?. +\item Bagaimanakan strategi untuk kendali formasi apabila variabel yang dikendalikan adalah jarak antar robot?. +\item Bagaimanakah pergerakan kendali formasi berdasarkan jarak apabila model yang digunakan adalah \textit{holonomic} mobile robot ?. \end{enumerate} %-----------------------------------------------------------------------------% @@ -78,7 +98,7 @@ Berikut adalah beberapa point permasalahan yang ditujukan pada penelitian ini, y %% \todo{tulis tujuan sebagai jawaban pertanyaan permasalahan} Tujuan dari penelitian ini adalah \begin{enumerate} -\item Mengetahui strategi untuk kendali formasi apabila variable yang dikendalikan adalah jarak antar robot. +\item Mengetahui strategi untuk kendali formasi apabila variabel yang dikendalikan adalah jarak antar robot. \item Mengetahui pergerakan kendali formasi berdasarkan jarak apabila model yang digunakan adalah holonomic mobile robot. \end{enumerate} diff --git a/BAB2/bab2.tex b/BAB2/bab2.tex index 4a66bcc..fa7ec4b 100644 --- a/BAB2/bab2.tex +++ b/BAB2/bab2.tex @@ -188,27 +188,27 @@ Matriks \textit{laplacian} didefinisikan dengan $L(\simpul)=EE^T$ \subsubsection{Teori Kekakuan Graf} Koordinat multi dimensi adalah konfigurasi matrik vector yang terdisi dari beberapa koordinat node, -$x = \begin{bmatrix} x_1^T & \dots & x_n^T \end{bmatrix}^T \mathbb{R}^{2n}$, dimana +$p = \begin{bmatrix} x_1^T & \dots & x_n^T \end{bmatrix}^T \mathbb{R}^{2n}$, dimana $x_i \in \mathbb{R}^2$ dan $x_i \neq x_j$ untuk semua $i \neq j$. -Difinisi sebuah kerangka (\textit{framework}), dinotasikan dengan $\graf(x)$, +Difinisi sebuah kerangka (\textit{framework}), dinotasikan dengan $\graf(p)$, adalah graf tak berarah $\graf$ dengan konfigurasi $x$, dimana simpul $i$ pada graf dipetakan kedalam koordinat $x_i$. Misalkan $(i,j)\in \sisi$ sama dengan sisi ke $k$ dari graf langsung dan mendefinisikan vektor sisi dari kerangka, atau dapat disebut sebagai vektor posisi relatif, dengan $ e_k \triangleq x_j - x_i$. Untuk semua vektor sisi dapat dinotasikan dengan $e=\begin{bmatrix}e_1^t & \dots & e_m^T\end{bmatrix} \in \mathbb{R}^{2m}$. -Apabila kerangka $\simpul(x)$ dengan vektor sisi $\{e_k\}_{k=1}^m$, maka didefinisisi fungsi sisi (\textit{edge function}), $F:\mathbb{R}^{2n} \times \simpul \rightarrow \mathbb{R}^m$ +Apabila kerangka $\simpul(p)$ dengan vektor sisi $\{e_k\}_{k=1}^m$, maka didefinisisi fungsi sisi (\textit{edge function}), $F:\mathbb{R}^{2n} \times \simpul \rightarrow \mathbb{R}^m$ dengan \begin{align} - F(x,\sisi) & \triangleq + F(p,\sisi) & \triangleq \begin{bmatrix} ||e_1||^2 & \dots & ||e_m||^2 \end{bmatrix}^T \end{align} -Matrik kekakuan $R(x)$ yang berhubungan erat dengan kerangka $\graf(x)$ dapat didefinisikan +Matrik kekakuan $R(p)$ yang berhubungan erat dengan kerangka $\graf(p)$ dapat didefinisikan dengan \textit{Jacobian} dari fungsi sisi (\kutip{Rozenheck2015}), \begin{align} - R(x) & \triangleq \frac{\partial F(x,\graf)}{\partial x} \in \mathbb{R}^{m\times 2n} \nonumber \\ + R(p) & \triangleq \frac{\partial F(p,\graf)}{\partial x} \in \mathbb{R}^{m\times 2n} \nonumber \\ & \triangleq diag(e_i^T)(E^T \otimes I_2) \end{align} @@ -243,58 +243,45 @@ Pengamatan dilakukan agar $\Phi(e) =0$ jika dan hanya jika $||e_k||^2 = d_k^2,$ Kendali dari setiap robot menggunakan gradien negatif dari fungsi potensial \begin{align} \begin{cases} - \dot{x} & = \frac{\partial \Phi(e)}{\partial v} + Bv_{ref} \\ - & = v(t) + Bv_{ref} \\ - \dot{v} & = -C \Big( \frac{\partial \Phi(e)}{\partial v} + \frac{\partial \Phi(e)}{\partial x} \Big) \\ - & = -C(v(t) + R(x)^T(R(x)x(t) - d )) \\ - & = u(t) + \dot{p} & = \frac{\partial \Phi(e)}{\partial v} + Bv_{ref} \\ + & = v(t) + Bv_{ref} \\ + \dot{v} & = -C \Big( \frac{\partial \Phi(e)}{\partial v} + \frac{\partial \Phi(e)}{\partial p} \Big) \\ + & = -C(v(t) + R(p)^T(R(p)x(t) - d )) \\ + & = u(t) \end{cases} -\label{eq:dynmState} + \label{eq:dynmState} \end{align} Dimana $v \in \mathbb{R}^{2n}$ adalah vector kecepatan dari seluruh node. Penambahan refrensi kecepatan pada salah satu robot dapat menjadikan formasi bermanuver. Dimana $B \in \mathbb{R}^{2n \times 2}$ digunakan untuk indikasi robot ke $i$ sebagai leader atau penerima kecepatan referensinya, $v_{ref} \in \mathbb{R}^2$ sebagai kecepatan referensi, dan $C$ adalah konstanta pengendali yang akan digantikan dengan algoritma kendali. -Dengan menerapkan kendali Proportional-Integral, konstanta $C$ pada persamaan~\eqref{eq:kontrolinput} +Dengan menerapkan kendali \textit{Proportional}, konstanta $C$ pada persamaan~\eqref{eq:kontrolinput} dapat diubah dengan \begin{align} \begin{cases} - u_i(t) & = u_{k_{p1}}(t) + u_{k_{i1}}(t) + u_{k_{p1}}(t) + u_{k_{i1}}(t) \\ - u_{k_{p1}}(t) & = -k_{p1}v_i(t) \\ - u_{k_{p2}}(t) & = -R(x_1)^T k_{p2}(R(x_1)x_1(t) - d )) \\ - u_{k_{i1}}(t) & = -k_{i1} \int_0^\tau x_2(\tau) d\tau \\ - u_{k_{i2}}(t) & = -R(x_1)^T k_{i2} \int_0^{\tau} (R(x_1)x_1(\tau) - d )) d\tau - \end{cases} -\label{eq:kontrolinput} -\end{align} -Lalu pada bagian integrator( $k_i$ ), menghasilkan \textit{state} baru -\begin{align} - \begin{cases} - \dot{\xi}_1 =& -k_{i1} v(t)\\ - \dot{\xi}_2 =& -k_{i2} (R(x_1)x(t) - d + u_i(t) & = u_{k_{p1}}(t) + u_{k_{p2}}(t) \\ + u_{k_{p1}}(t) & = -k_{p1}v_i(t) \\ + u_{k_{p2}}(t) & = -R(p(t))^T k_{p2}(R(p(t))x_1(t) - d )) \\ \end{cases} + \label{eq:kontrolinput} \end{align} Dengan itu dapat digabungkan menjadi persamaan \textit{state-space} menggunakan persamaan~\eqref{eq:dynmState} -\begin{align*} +\begin{align} \begin{bmatrix} - \dot{x} \\ \dot{v} \\ \dot{\xi}_1 \\ \dot{\xi}_2 - \end{bmatrix} &= + \dot{x} \\ \dot{v} + \end{bmatrix} & = \begin{bmatrix} - 0 & 1 & 0 & 0\\ - -k_{p2}R(x)^T R(x) & -k_{p1} & -1 & -R(x)^T \\ - 0 & k_{i1} & 0 & 0 \\ - k_{i2}R(x) & 0 & 0 & 0 \\ + 0 & 1 \\ + -k_{p2}R(x)^T R(x) & -k_{p1}\\ \end{bmatrix} \begin{bmatrix} - x \\ v \\ \xi_1 \\ \xi_2 + x \\ v \end{bmatrix} + \begin{bmatrix} - 0 \\ k_{p2}R(x)^T \\ 0 \\ -k_{i2} - \end{bmatrix} d+Bv_{ref} \nonumber \\ -\end{align*} -\begin{align} - \dot{x}_f(t) &= A_f(x)x_f(t)+B_f(x)d+Bv_{ref} + 0 \\ k_{p2}R(x)^T + \end{bmatrix} d+Bv_{ref} \nonumber \\ + \dot{x}_f(t) & = A_f(x)x_f(t)+B_f(x)d+Bv_{ref} \label{eq:ss-formasi} \end{align} @@ -306,66 +293,66 @@ Dengan itu dapat digabungkan menjadi persamaan \textit{state-space} menggunakan %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Solusi Persamaan Differensial Secara Numerik} -\label{bab:dua:solusi_ODE} +% \section{Solusi Persamaan Differensial Secara Numerik} +% \label{bab:dua:solusi_ODE} -Persamaan \eqref{eq:ss1} dan \eqref{eq:ss2} adalah persamaan differensial kontinu orde satu. -Dalam memecahkan persamaan differensial dapat dilakukan dalam bentuk kontinyu atau numerik. -Dalam kasus kendali, persamaan differensial dikalkulasi menggunakan komputer, sehingga persamaan tersebut -dapat dicari solusi pendekatannya menggunakan cara numerik. Persamaan orde satu dapat direpresentasikan -dengan persamaan -\begin{align} - \dot{x}(t) & = f(x,t), t_0 \leq t \leq t_f \label{eq:ode1.a} \\ - y(t_0) & = x(t_0)\label{eq:ode1.b} -\end{align} -Dimana $x(t) \in \mathbb{R}^n$, adalah vector yang setiap iterasi waktu berubah, $f(x,t)\in \mathbb{R}^n$ -adalah fungsi sistem, $t_0$ dan $t_f$ adalah waktu inisial dan waktu akhir. -Pada persamaan~\eqref{eq:ode1.a} dan~\eqref{eq:ode1.b} adalah persamaan dengan permasalahan nilai inisial~\kutip{Fabien2009}. +% Persamaan \eqref{eq:ss1} dan \eqref{eq:ss2} adalah persamaan differensial kontinu orde satu. +% Dalam memecahkan persamaan differensial dapat dilakukan dalam bentuk kontinyu atau numerik. +% Dalam kasus kendali, persamaan differensial dikalkulasi menggunakan komputer, sehingga persamaan tersebut +% dapat dicari solusi pendekatannya menggunakan cara numerik. Persamaan orde satu dapat direpresentasikan +% dengan persamaan +% \begin{align} +% \dot{x}(t) & = f(x,t), t_0 \leq t \leq t_f \label{eq:ode1.a} \\ +% y(t_0) & = x(t_0)\label{eq:ode1.b} +% \end{align} +% Dimana $x(t) \in \mathbb{R}^n$, adalah vector yang setiap iterasi waktu berubah, $f(x,t)\in \mathbb{R}^n$ +% adalah fungsi sistem, $t_0$ dan $t_f$ adalah waktu inisial dan waktu akhir. +% Pada persamaan~\eqref{eq:ode1.a} dan~\eqref{eq:ode1.b} adalah persamaan dengan permasalahan nilai inisial~\kutip{Fabien2009}. -Apablia $t(0) = t(t_i)$ maka $t(1) = t(0)+ h$, dimana $h$ adalah perubahan kecil yang memiliki hubungan terhadap waktu. -Didalam metode algoritma yang akan dibahas, $h$ juga dapat disebut sebagai \textit{step size}, dan juga -$t[k] = t[k-1] + h$ adalah bentuk diskretnya untuk $k = 0,1,2,3\dots$. +% Apablia $t(0) = t(t_i)$ maka $t(1) = t(0)+ h$, dimana $h$ adalah perubahan kecil yang memiliki hubungan terhadap waktu. +% Didalam metode algoritma yang akan dibahas, $h$ juga dapat disebut sebagai \textit{step size}, dan juga +% $t[k] = t[k-1] + h$ adalah bentuk diskretnya untuk $k = 0,1,2,3\dots$. -Apabila $y(t[k])$ adalah nilai inisial ketika waktu $t[k]$, maka menggunakan deret \textit{taylor} akan didapat -pendekatan solusi untuk $y(t[k+1])$. Menggunakan orde pertama deret \textit{taylor} saja maka didapat -persamaan diskret solusi pendekatan $y(t[k])~\approx y[k]$ -\begin{align} - y[k+1] = y[k]+f(y[k])h \label{eq:desode1} -\end{align} +% Apabila $y(t[k])$ adalah nilai inisial ketika waktu $t[k]$, maka menggunakan deret \textit{taylor} akan didapat +% pendekatan solusi untuk $y(t[k+1])$. Menggunakan orde pertama deret \textit{taylor} saja maka didapat +% persamaan diskret solusi pendekatan $y(t[k])~\approx y[k]$ +% \begin{align} +% y[k+1] = y[k]+f(y[k])h \label{eq:desode1} +% \end{align} -Pendekatan lain dari persamaan~\eqref{eq:desode1} dengan mendefinisikan turunan $y(t[k])$ sebagai -\begin{align} - \dot{y}(t[k]) & = \frac{y[k+1] - y[k]}{h} \label{eq:desdotode1} -\end{align} -Persamaan~\eqref{eq:desode1} dan~\eqref{eq:desdotode1} dinamakan dengan persamaan \textit{explicite Euler method} dan \textit{forward Euler formula} (\kutip{Fabien2009}). -Apabila persamaan~\eqref{eq:desdotode1} disubtitusikan pada~\eqref{eq:ode1.a} -dan~\eqref{eq:ode1.b} maka didapat persamaan~\eqref{eq:desode1}. -Untuk diterapkan dalam komputer, dapat mengikuti algoritme~\ref{algo:eEuler}. +% Pendekatan lain dari persamaan~\eqref{eq:desode1} dengan mendefinisikan turunan $y(t[k])$ sebagai +% \begin{align} +% \dot{y}(t[k]) & = \frac{y[k+1] - y[k]}{h} \label{eq:desdotode1} +% \end{align} +% Persamaan~\eqref{eq:desode1} dan~\eqref{eq:desdotode1} dinamakan dengan persamaan \textit{explicite Euler method} dan \textit{forward Euler formula} (\kutip{Fabien2009}). +% Apabila persamaan~\eqref{eq:desdotode1} disubtitusikan pada~\eqref{eq:ode1.a} +% dan~\eqref{eq:ode1.b} maka didapat persamaan~\eqref{eq:desode1}. +% Untuk diterapkan dalam komputer, dapat mengikuti algoritme~\ref{algo:eEuler}. -\begin{algorithm} - \DontPrintSemicolon - \KwInput{Integer $N > 0$, $h=(t_f-t_i)/N$, $t[0]=t_i$, $y[0]=y[t_i]=y_i$).} - \KwOutput{$y[k]$, $k=1,2,\dots,N$.} - \For{$k=0,1,\dots,N-1$} - {$y[k+1] = y[k]+hf(y[k])$\; - $t[k+1] = t[k] + h$ - } - \caption{\textit{Explicite Euler Method}} - \label{algo:eEuler} -\end{algorithm} +% \begin{algorithm} +% \DontPrintSemicolon +% \KwInput{Integer $N > 0$, $h=(t_f-t_i)/N$, $t[0]=t_i$, $y[0]=y[t_i]=y_i$).} +% \KwOutput{$y[k]$, $k=1,2,\dots,N$.} +% \For{$k=0,1,\dots,N-1$} +% {$y[k+1] = y[k]+hf(y[k])$\; +% $t[k+1] = t[k] + h$ +% } +% \caption{\textit{Explicite Euler Method}} +% \label{algo:eEuler} +% \end{algorithm} -\subsection{Stabilitas Metode Euler} -\begin{figure} - \centering - \includegraphics[scale=.5]{BAB2/img/equler_explicit.png} - \caption[]{Area stabilitas metode explicit euler(\kutipLs{Fabien2009}).} - \label{fig:explicit_euler} -\end{figure} -Properti dari stabilitas metode Euler dapat diperoleh dengan mendefinisikan persamaan differensial secara general $\dot{x}=\alpha x$,dimana $\alpha$ adalah bilangan complex -dari parameter sistem. -Dengan menggunakan pendekatan sebelumnya maka persamaan masalah dapat didefinisikan -\begin{align} - y[k+1] = (1+h\lambda)y[k] = (1 + z)y[k]= R(z)y[k] \label{eq:disstab} -\end{align} -Dari persamaan~\eqref{eq:disstab}, sistem akan stabil apabila $|R(z)|\leq 1$. -Jika digambarkan dalam grafik complex stabilitas maka dapat dilihat pada gambar~\ref{fig:explicit_euler} +% \subsection{Stabilitas Metode Euler} +% \begin{figure} +% \centering +% \includegraphics[scale=.5]{BAB2/img/equler_explicit.png} +% \caption[]{Area stabilitas metode explicit euler(\kutipLs{Fabien2009}).} +% \label{fig:explicit_euler} +% \end{figure} +% Properti dari stabilitas metode Euler dapat diperoleh dengan mendefinisikan persamaan differensial secara general $\dot{x}=\alpha x$,dimana $\alpha$ adalah bilangan complex +% dari parameter sistem. +% Dengan menggunakan pendekatan sebelumnya maka persamaan masalah dapat didefinisikan +% \begin{align} +% y[k+1] = (1+h\lambda)y[k] = (1 + z)y[k]= R(z)y[k] \label{eq:disstab} +% \end{align} +% Dari persamaan~\eqref{eq:disstab}, sistem akan stabil apabila $|R(z)|\leq 1$. +% Jika digambarkan dalam grafik complex stabilitas maka dapat dilihat pada gambar~\ref{fig:explicit_euler} diff --git a/BAB3/bab3.tex b/BAB3/bab3.tex index e062d1a..9d766b9 100644 --- a/BAB3/bab3.tex +++ b/BAB3/bab3.tex @@ -2,7 +2,11 @@ Kerangka konsep penelitian akan dibahas mengenai potensi permasalahan yang timbul dalam topik kendali formasi. Kerangka penelitian ini berdasarkan literatur oleh \kutip{OH2015424}, -dimana didalam literatur tersebut, peneliti menguraikan berbagai metode yang digunakan dalam bidang kendali multi-robot, khususnya dalam kendali formasi. +dimana didalam literatur tersebut, peneliti menguraikan berbagai metode yang digunakan dalam bidang kendali multi-robot, +khususnya dalam kendali formasi. +Kerangka penelitian akan digabungkan dengan permasalahan penerapan kendali formasi berdasarkan jarak oleh Rozenheck \kutip{Rozenheck2015}, +dimana kendali formasi tidak dapat langsung diterapkan menggunakan sensor jarak secara langsung. + \begin{figure} \centering @@ -43,6 +47,10 @@ Pentingnya dilakukan investigasi pada penerapan model yang lebih nyata. Pemeliharaan komunikasi juga menyumbang dalam permasalahan secara praktik, dan kemampuan untuk menghindari rintangan juga dibutuhkan. +Penelitian oleh Rozenheck \kutip{Rozenheck2015} mengembangkan kendali formasi berdasarkan jarak dengan bagus. +Kendali formasi yang dikembangkan menggunakan kendali PI untuk mengendalikan beberapa robot menggunakan variabel jarak. +Akan tetapi pada kendali formasinya mengubah informasi koordinat menjadi jarak dimana pada penerapannya robot tidak dapat mengetahui koordinat tetangganya. + \section{Definisi Permasalahan Kendali Formasi} Kendali formasi adalah kendali multi-agent untuk mencapai suatu formasi yang diinginkan. @@ -61,14 +69,13 @@ Dalam kenyataannya model yang digunakan memiliki kekurangan, seperti batas kerja \kutip{OH2015424} menyatakan bahwa mayoritas dari hasil penelitian yang menggunakan pendekatan ini (\textit{distance-based}) berfokus pada model agent dengan integrator-tunggal di suatu bidang datar. Gagasan model yang nyata memiliki manfaat ketika menginvestigasi karakteristik kendali secara mendasar, model agent yang lebih realistik (model yang nyata) perlu untuk dipelajari lebih lanjut untuk menambah kepraktisan metode kendali multi-robot, kususnya pada kendali formasi berdasarkan jarak. Dengan bertambahnya kepraktisan diharapkan dapat diterapkan dalam model yang real. -Pada penelitian oleh \kutip{Rozenheck2015}, kendali formasi berdasarkan jarak dikendalikan +Pada penelitian oleh Rozenheck \kutip{Rozenheck2015}, kendali formasi berdasarkan jarak dikendalikan menggunakan kendali PI dan menghasilkan pergerakan yang baik. Dapat diperhatikan pada persamaan~\eqref{eq:modelorde2} bahwa peneliti menggunakan model yang simpel untuk mengembangkan kendali multi-robotnya. -Maka, penelitian ini akan difokuskan pada kendali formasi berbasis jarak -kendali PI yang telah dilakukan sebelumnya dengan menggunakan model yang nyata. +Penelitian oleh Rozenheck \kutip{Rozenheck2015} memperoleh variabel jaraknya menggunakan koordinat tetangganya +dimana pada penerapannya robot tidak mengetahui koordinat akan tetapi berbentuk jarak yang diperoleh dari sensor jarak. \section{Permasalah dan Solusi} - Dapat diperhatikan pada persamaan~\eqref{eq:ss-formasi}, state yang digunakan membutuhkan koordinat relatif dari tetangganya. Akan tetapi pada batasan penelitian ini, sensor yang digunakan hanya memberikan jarak terhadap tetangganya. Sedangkan koordinat relatif yang digunakan adalah kartesian. diff --git a/BAB3/img/Structur_pen.dia b/BAB3/img/Structur_pen.dia index 986e9b5..70fffa0 100644 Binary files a/BAB3/img/Structur_pen.dia and b/BAB3/img/Structur_pen.dia differ diff --git a/BAB3/img/Structur_pen.dia~ b/BAB3/img/Structur_pen.dia~ index 3a0b983..70fffa0 100644 Binary files a/BAB3/img/Structur_pen.dia~ and b/BAB3/img/Structur_pen.dia~ differ diff --git a/BAB3/img/structur.tex b/BAB3/img/structur.tex index da0dff7..7e5f27a 100644 --- a/BAB3/img/structur.tex +++ b/BAB3/img/structur.tex @@ -1,8 +1,8 @@ % Graphic for TeX using PGF -% Title: /home/adnr/Disk/Opo/PASCASARJANA/RESEARCH/[T01][FormationControl]/[DOC]/-p-formation-control/BAB3/img/Structur_pen.dia +% Title: /home/a2nr/Documents/-p-formation-control/BAB3/img/Structur_pen.dia % Creator: Dia v0.97.3 -% CreationDate: Wed Dec 11 11:19:05 2019 -% For: adnr +% CreationDate: Mon Jul 5 18:36:34 2021 +% For: a2nr % \usepackage{tikz} % The following commands are not supported in PSTricks at present % We define them conditionally, so when they are implemented, @@ -20,18 +20,18 @@ \pgfsetfillcolor{dialinecolor} \definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} -\fill (17.212785\du,8.023945\du)--(17.212785\du,19.351108\du)--(24.318276\du,19.351108\du)--(24.318276\du,8.023945\du)--cycle; +\fill (17.212800\du,8.023940\du)--(17.212800\du,23.340327\du)--(24.318291\du,23.340327\du)--(24.318291\du,8.023940\du)--cycle; \pgfsetlinewidth{0.100000\du} \pgfsetdash{{1.000000\du}{0.200000\du}{0.200000\du}{0.200000\du}{0.200000\du}{0.200000\du}}{0cm} \pgfsetdash{{1.000000\du}{0.200000\du}{0.200000\du}{0.200000\du}{0.200000\du}{0.200000\du}}{0cm} \pgfsetmiterjoin \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\draw (17.212785\du,8.023945\du)--(17.212785\du,19.351108\du)--(24.318276\du,19.351108\du)--(24.318276\du,8.023945\du)--cycle; +\draw (17.212800\du,8.023940\du)--(17.212800\du,23.340327\du)--(24.318291\du,23.340327\du)--(24.318291\du,8.023940\du)--cycle; % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (20.765530\du,13.882526\du){}; +\node at (20.765545\du,15.876196\du){}; \definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} \fill (18.000000\du,12.500000\du)--(18.000000\du,14.400000\du)--(23.650000\du,14.400000\du)--(23.650000\du,12.500000\du)--cycle; @@ -45,7 +45,7 @@ % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (20.825000\du,13.567500\du){Jarak}; +\node at (20.825000\du,13.565840\du){Distance}; \definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} \fill (17.500000\du,8.500000\du)--(17.500000\du,10.400000\du)--(23.940000\du,10.400000\du)--(23.940000\du,8.500000\du)--cycle; @@ -59,7 +59,7 @@ % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (20.720000\du,9.567500\du){Formatio Control}; +\node at (20.720000\du,9.565840\du){Formatio Control}; \definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} \fill (11.000000\du,12.500000\du)--(11.000000\du,14.400000\du)--(16.650000\du,14.400000\du)--(16.650000\du,12.500000\du)--cycle; @@ -73,7 +73,7 @@ % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (13.825000\du,13.567500\du){Posisi}; +\node at (13.825000\du,13.565840\du){Position}; \definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} \fill (25.000000\du,12.500000\du)--(25.000000\du,14.400000\du)--(30.650000\du,14.400000\du)--(30.650000\du,12.500000\du)--cycle; @@ -87,7 +87,7 @@ % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (27.825000\du,13.567500\du){Perpindahan}; +\node at (27.825000\du,13.565840\du){Displacement}; \pgfsetlinewidth{0.100000\du} \pgfsetdash{}{0pt} \pgfsetdash{}{0pt} @@ -142,21 +142,21 @@ % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (13.825000\du,18.067500\du){Model yang simpel}; -\definecolor{dialinecolor}{rgb}{1.000000, 0.976471, 0.494118} +\node at (13.825000\du,18.065840\du){Simple Model}; +\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} \fill (18.000000\du,17.000000\du)--(18.000000\du,18.900000\du)--(23.650000\du,18.900000\du)--(23.650000\du,17.000000\du)--cycle; \pgfsetlinewidth{0.100000\du} \pgfsetdash{}{0pt} \pgfsetdash{}{0pt} \pgfsetmiterjoin -\definecolor{dialinecolor}{rgb}{1.000000, 0.000000, 0.000000} +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} \draw (18.000000\du,17.000000\du)--(18.000000\du,18.900000\du)--(23.650000\du,18.900000\du)--(23.650000\du,17.000000\du)--cycle; % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (20.825000\du,18.067500\du){Model yang nyata}; +\node at (20.825000\du,18.065840\du){Model Real}; \definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} \pgfsetfillcolor{dialinecolor} \fill (25.000000\du,17.000000\du)--(25.000000\du,18.900000\du)--(30.650000\du,18.900000\du)--(30.650000\du,17.000000\du)--cycle; @@ -170,7 +170,7 @@ % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node at (27.825000\du,18.067500\du){Secara Praktik}; +\node at (27.825000\du,18.065840\du){Real}; \pgfsetlinewidth{0.100000\du} \pgfsetdash{}{0pt} \pgfsetdash{}{0pt} @@ -222,14 +222,76 @@ % was here!!! \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\draw (25.388559\du,20.807882\du)--(27.083174\du,20.807882\du); +\draw (25.279549\du,24.488357\du)--(26.974149\du,24.488357\du); } % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node[anchor=west] at (27.380475\du,20.926802\du){: Fokus Penelitian}; +\node[anchor=west] at (27.271449\du,24.607257\du){: Fokus Penelitian}; % setfont left to latex \definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} \pgfsetstrokecolor{dialinecolor} -\node[anchor=west] at (29.342661\du,20.807882\du){}; +\node[anchor=west] at (29.233649\du,24.488357\du){}; +\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000} +\pgfsetfillcolor{dialinecolor} +\fill (11.101096\du,20.310409\du)--(11.101096\du,23.010409\du)--(16.548596\du,23.010409\du)--(16.548596\du,20.310409\du)--cycle; +\pgfsetlinewidth{0.100000\du} +\pgfsetdash{}{0pt} +\pgfsetdash{}{0pt} +\pgfsetmiterjoin +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\draw (11.101096\du,20.310409\du)--(11.101096\du,23.010409\du)--(16.548596\du,23.010409\du)--(16.548596\du,20.310409\du)--cycle; +% setfont left to latex +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\node at (13.824846\du,21.376249\du){Variabel Jarak }; +% setfont left to latex +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\node at (13.824846\du,22.176249\du){Dari Koordinat}; +\definecolor{dialinecolor}{rgb}{1.000000, 0.976471, 0.494118} +\pgfsetfillcolor{dialinecolor} +\fill (17.781680\du,20.192418\du)--(17.781680\du,22.892418\du)--(23.919180\du,22.892418\du)--(23.919180\du,20.192418\du)--cycle; +\pgfsetlinewidth{0.100000\du} +\pgfsetdash{}{0pt} +\pgfsetdash{}{0pt} +\pgfsetmiterjoin +\definecolor{dialinecolor}{rgb}{1.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\draw (17.781680\du,20.192418\du)--(17.781680\du,22.892418\du)--(23.919180\du,22.892418\du)--(23.919180\du,20.192418\du)--cycle; +% setfont left to latex +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\node at (20.850430\du,21.258258\du){Variabel Jarak }; +% setfont left to latex +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\node at (20.850430\du,22.058258\du){Dari Sensor Jarak}; +\pgfsetlinewidth{0.100000\du} +\pgfsetdash{}{0pt} +\pgfsetdash{}{0pt} +\pgfsetbuttcap +{ +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetfillcolor{dialinecolor} +% was here!!! +\pgfsetarrowsend{latex} +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\draw (20.825000\du,18.900000\du)--(20.836955\du,20.142182\du); +} +\pgfsetlinewidth{0.100000\du} +\pgfsetdash{}{0pt} +\pgfsetdash{}{0pt} +\pgfsetbuttcap +{ +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetfillcolor{dialinecolor} +% was here!!! +\pgfsetarrowsend{latex} +\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000} +\pgfsetstrokecolor{dialinecolor} +\draw (13.824935\du,18.948103\du)--(13.824846\du,20.310409\du); +} \end{tikzpicture} diff --git a/BAB4/bab4.tex b/BAB4/bab4.tex index c9bc56d..a53d832 100644 --- a/BAB4/bab4.tex +++ b/BAB4/bab4.tex @@ -1,44 +1,46 @@ \chapter{\babEmpat} -\section{Perangkat Percobaan} -Sub bab ini akan dibahas mengenai prangkat penunjang sebagai pembatu dalam menyelesaikan penelitian. -Sebagai langkah awal pengembangan, metode yang digunakan adalah \textit{Hardware-In Loop}. -\begin{figure} - \centering - \includegraphics[scale=.5]{BAB3/img/hil_graph.png} - \caption{Hardware-in-the-loop (\kutip{Jim1999}). } - \label{fig:hil_graph} -\end{figure} +% \section{Perangkat Percobaan} +% Percobaan akan dilakukan secara simulasi yang dijalankan menggunakan aplikasi MATLAB / GNU Octave. -\textit{Hardware-in-the-loop} (HIL) adalah metode untuk pengembangan prangkat kendali dengan memanfaatkan model sebagai objek kendalinya. Seperti pada gambar~\ref{fig:hil_graph}, -bahwa HIL terdiri dari dua prangkat, yaitu prangkat untuk menjalankan objek kendali atau dapat -disebut sebagai model/plant dan prangkat sistem kontrolnya, dalam kasus ini sistem kontrol menggunakan sistem tertanam (\textit{embedded system}). -Metode HIL, banyak digunakan oleh peneliti dalam proses pengembangan dengan pertimbangan efisiensi terhadap berbagai hal. -Seperti yang digunakan oleh~\kutip{Irwanto2018}, mengembangkan kendali UAV menggunakan HIL; -dan \kutip{QUESADA2019275}, mengembangkan prangkat pankreas buatan yang digunakan untuk mengendalikan kadar gula pada pengidap diabetes. +% Sub bab ini akan dibahas mengenai prangkat penunjang sebagai pembatu dalam menyelesaikan penelitian. +% Sebagai langkah awal pengembangan, metode yang digunakan adalah \textit{Hardware-In Loop}. +% \begin{figure} +% \centering +% \includegraphics[scale=.5]{BAB3/img/hil_graph.png} +% \caption{Hardware-in-the-loop (\kutip{Jim1999}). } +% \label{fig:hil_graph} +% \end{figure} + +% \textit{Hardware-in-the-loop} (HIL) adalah metode untuk pengembangan prangkat kendali dengan memanfaatkan model sebagai objek kendalinya. Seperti pada gambar~\ref{fig:hil_graph}, +% bahwa HIL terdiri dari dua prangkat, yaitu prangkat untuk menjalankan objek kendali atau dapat +% disebut sebagai model/plant dan prangkat sistem kontrolnya, dalam kasus ini sistem kontrol menggunakan sistem tertanam (\textit{embedded system}). +% Metode HIL, banyak digunakan oleh peneliti dalam proses pengembangan dengan pertimbangan efisiensi terhadap berbagai hal. +% Seperti yang digunakan oleh~\kutip{Irwanto2018}, mengembangkan kendali UAV menggunakan HIL; +% dan \kutip{QUESADA2019275}, mengembangkan prangkat pankreas buatan yang digunakan untuk mengendalikan kadar gula pada pengidap diabetes. -Pada penelitian ini akan digunakan \textit{microcontroller}(MCU) STM32F466 sebagai prangkat kendalinya. -MCU tersebut ber-arsitektur ARM Cortex-M4 dengan clock 180MHz, menampung ukuran program sampai 256K didalam memori Flash, serta fitur komunikasi standart MCU dengan lengkap. -\textit{Platform Library} yang digunakan dalam pembuatan aplikasi didalamnya adalah \textit{Mbed}, -yang menyediakan berbagai banyak fungsi yang lengkap dan mudah untuk berinteraksi dengan fitur-fitur MCU. \textit{Mbed} juga menyediakan fungsi untuk mengaplikasikan RTOS (Real-time Operating System) dengan mudah dan terdokumentasi secara jelas didalam lamannya. -Pada prangkat PC akan dikembangkan program berbasis \textit{Python} yang akan -menjalankan simulasi model dan berkomunikasi dengan MCU secara \textit{real-time}. -Program \textit{Python} akan menjalankan model pada persamaan~\eqref{eq:ss1}-\eqref{eq:ss2} -dengan metode yang dijabarkan pada sub bab~\ref{bab:dua:solusi_ODE}. -Dalam penerapan multi-robot, digunakan 3 perangkat sistem tertanam untuk mempresentasikan kendali 3 robot (Gambar.~\ref{fig:hil_graph_1}). -Setiap prangkat pengendali akan saling terhubung satu sama lain dan semua prangkat pengendali terhubung dengan prangkat PC. -Komunikasi antar prangkat pengendali akan digunakan untuk pertukaran informasi. -Sedangkan komunikasi dengan PC akan mempresentasikan aktuator dan sensor untuk setiap prangkat -kendali. PC akan merekam setiap keluaran dari model dan masukan dari setiap prangkat kendali -sebagai tampilan pergerakan robotnya. +% Pada penelitian ini akan digunakan \textit{microcontroller}(MCU) STM32F466 sebagai prangkat kendalinya. +% MCU tersebut ber-arsitektur ARM Cortex-M4 dengan clock 180MHz, menampung ukuran program sampai 256K didalam memori Flash, serta fitur komunikasi standart MCU dengan lengkap. +% \textit{Platform Library} yang digunakan dalam pembuatan aplikasi didalamnya adalah \textit{Mbed}, +% yang menyediakan berbagai banyak fungsi yang lengkap dan mudah untuk berinteraksi dengan fitur-fitur MCU. \textit{Mbed} juga menyediakan fungsi untuk mengaplikasikan RTOS (Real-time Operating System) dengan mudah dan terdokumentasi secara jelas didalam lamannya. +% Pada prangkat PC akan dikembangkan program berbasis \textit{Python} yang akan +% menjalankan simulasi model dan berkomunikasi dengan MCU secara \textit{real-time}. +% Program \textit{Python} akan menjalankan model pada persamaan~\eqref{eq:ss1}-\eqref{eq:ss2} +% dengan metode yang dijabarkan pada sub bab~\ref{bab:dua:solusi_ODE}. +% Dalam penerapan multi-robot, digunakan 3 perangkat sistem tertanam untuk mempresentasikan kendali 3 robot (Gambar.~\ref{fig:hil_graph_1}). +% Setiap prangkat pengendali akan saling terhubung satu sama lain dan semua prangkat pengendali terhubung dengan prangkat PC. +% Komunikasi antar prangkat pengendali akan digunakan untuk pertukaran informasi. +% Sedangkan komunikasi dengan PC akan mempresentasikan aktuator dan sensor untuk setiap prangkat +% kendali. PC akan merekam setiap keluaran dari model dan masukan dari setiap prangkat kendali +% sebagai tampilan pergerakan robotnya. -\begin{figure} - \centering - \input{BAB4/img/Diagram_hil_controller.tex} - \caption{HIL Kendali Multi-Robot.} - \label{fig:hil_graph_1} -\end{figure} +% \begin{figure} +% \centering +% \input{BAB4/img/Diagram_hil_controller.tex} +% \caption{HIL Kendali Multi-Robot.} +% \label{fig:hil_graph_1} +% \end{figure} % \todo{ % Tambahkan subsection mengenai @@ -50,23 +52,23 @@ sebagai tampilan pergerakan robotnya. % \end{itemize} % } -\section{Strategi Kendali Multi Robot} +% \section{Strategi Kendali Multi Robot} -Pembahasan strategi akan dibagi menjadi dua bagian, yaitu kendali tingkat bawah dan kendali tingkat atas. -Kendali tingkat bawah akan membahas mengenai kendali robot secara individu, sedangkan kendali tingkat atas akan dibahas mengenai penggabungan antara kendali tingkat bawah dan atas. +% Pembahasan metode akan menerangkan mengenai strategi kendali multi robot. +% Strategi akan dibagi menjadi dua bagian, yaitu kendali tingkat bawah dan kendali tingkat atas. +% Kendali tingkat bawah akan membahas mengenai kendali robot secara individu, +% sedangkan kendali tingkat atas akan dibahas mengenai penggabungan antara kendali tingkat bawah dan atas. -\subsection{Kendali Robot} -Pada kendali robot akan dibahas mengenai analisis kendali robot menggunakan -state-space feedback. Kendali robot ini adalah kendali tingkat bawah dari kendali ke- -seluruhan. Dapat diperhatikan pada persamaan~\eqref{eq:ss-formasi}, sebagai kendali tahap awal, -bahwa state yang digunakan adalah koordinat. Maka koordinat tersebut akan men- -jadi set point bagi robot. Variable yang dikendalikan pada kendali robot adalah -koordinat robot dari kondisi inisial. Koordinat disini adalah koordinat state pada -persamaan~\eqref{eq:ss1}. Pada sub bab ini akan didefinisi mengenai kriteria pencapaian -set point dan membahas parameter kendali state-space feedback agar mencapai kri- -teria yang diinginkan. +% \section{Kendali Robot} -\subsubsection{State Feedback} +Metode penelitian akan menerangkan tentang bagaimana strategi untuk menemukan koordinat tetangga menggunakan variabel jarak saja. +Dapat diperhatikan pada persamaan~\eqref{eq:ss-formasi} bahwa \textit{state} yang dibutuhkan adalah kecepatan. +Maka kendali robot diharuskan dapat mencapai kecepatan tertentu. +Strategi pencarian koordinat mengharuskan juga robot untuk mencapai koordinat relatif tertentu. +Pada bab ini akan menjelaskan bagaimana robot menemukan koordinat, mencapai kecepatan dan koordinat tertentu, +dan membentuk formasi menggunakan model robot \textit{holonomic}. + +\section{State Feedback} \begin{figure} \centering \input{BAB4/img/statefeedback.tex} @@ -145,7 +147,7 @@ maka \textit{observer} tidak dibutuhkan dalam desain kendali robot. \end{center} \label{tab:param_model} \end{table} -\subsubsection{Desain Kendali} +\section{Desain Kendali} Berdasarkan \kutip{Richard2010}, bahwa kendali optimal berdasarkan indeks kinerja sistem. Indeks tersebut adalah hasil dari meminimalisasi pada integral kuadrat error atau \textit{integration square error} (ISE). Kendali optimal dilakukan oleh komputer untuk mengkalkulasi minimal indeks tersebut. @@ -279,9 +281,72 @@ Apabila diintegrasi terhadap persamaan~\eqref{eq:ss1} terhadap diagram~\ref{fig: \end{center} \end{figure} -\subsection{Kendali Formasi Multi Robot} +\section{Kendali Robot \textit{Holonomic}} +Kendali robot \textit{holonomic} akan dibagi menjadi dua mode. +Perbedaan kedua mode tersebut adalah \textit{setpoint} kendalinya, +dimana mode satu akan memiliki setpoint kecepatan robot sedangkan +mode dua memiliki \textit{setpoint} koordinat kerangka robot. +Penjelasan lebih lengkap kegunaan dari kedua mode tersebut akan dijelaskan +di pembahasan metode strategi penentuan koordinat. + + +\textbf{Mode Satu}. Kendali robot mode satu bertujuan untuk robot mencapai kecepatan yang +diinginkan. Untuk mencapai tujuan tersebut akan menggunakan metode \textit{state-feedback} +seperti yang telah dijabarkan sebelumnya. +Mengadopsi persamaan \textit{state-space} dari robot. +\begin{align} + \dot{x_c}(t) & = A_c x_c(t) + B_c u_c(t) + k_c sgn(x_c(t)), \label{eq:ss_kecepatan} \\ + y_c(t) & = C_cx_c(t), +\end{align} +Dimana $A_c,B_c,k_c,C_c \in \mathbb{R}^{3\times 3}$ adalah matriks parameter robot yang telah dijelaskan sebelumnya. +\begin{align*} + A_c & = \begin{bmatrix} + -\frac{3.l^2.K_t^2}{2.M.R_a.r^2}-\frac{B_{\dot{x}_r}}{M} & 0 & 0 \\ + 0 & -\frac{3.l^2.K_t^2}{2.M.R_a.r^2}-\frac{B_{\dot{y}_r}}{M} & 0 \\ + 0 & 0 & -\frac{3.l^2.K_t^2}{2.I.R_a.r^2}-\frac{B_{\dot{\theta}_r}}{I} \\ + \end{bmatrix}, \\ + B_c & = \begin{bmatrix} + 0 & \frac{l.K_t}{R_a.r}. \frac{\cos(30^\circ)}{M} & -\frac{l.K_t}{R_a.r}.\frac{\cos(30^\circ)}{M} \\ + \frac{l.K_t}{R_a.r}.\frac{-1}{M} & \frac{l.K_t}{R_a.r}.\frac{\cos(60^\circ)}{M} & \frac{l.K_t}{R_a.r}.\frac{\cos(60^\circ)}{M} \\ + \frac{l.K_t}{R_a.r}.\frac{b}{I} & \frac{l.K_t}{R_a.r}.\frac{b}{I} & \frac{l.K_t}{R_a.r}.\frac{b}{I} \\ + \end{bmatrix}, + k_c = \begin{bmatrix} + -\frac{C_{\dot{x}_r}}{M} & 0 & 0 \\ + 0 & -\frac{C_{\dot{x}_r}}{M} & 0 \\ + 0 & 0 & -\frac{C_{\dot{x}_r}}{M} \\ + \end{bmatrix}, \\ + C_c & = \begin{bmatrix} + 1 & 0 & 0 & \\ + 0 & 1 & 0 & \\ + 0 & 0 & 1 & \\ + \end{bmatrix} +\end{align*} +Dimana $y_c(t) = x_c(t) = \begin{bmatrix} v & v_n & w \end{bmatrix}^T$ adalah vektor kecepatan. +Lalu ditentukan fungsi kendali $u_c(t)$ menggunakan \textit{state-feedback}. +\begin{align} + u_c(t) & = -K_c x_c(t) + N_c r_c \label{eq:kendali_mode_satu} \\ + N_c & = -[C(A_c - B_c K_c)^{-1} B_c ]^{-1} +\end{align} +Dimana vektor $r_c = \begin{bmatrix} v* & v_n* & w* \end{bmatrix}$ adalah \textit{set-point} kendali mode satu dan +matriks $K_c$ diperoleh dari solusi persamaan \textit{Riccati}. + + +\textbf{Mode dua}. Kendali robot mode bertujuan untuk robot mencapai koordinat relatif yang +diinginkan. Untuk mencapai tujuan tersebut akan menggunakan metode \textit{state-feedback} +seperti yang telah dijabarkan sebelumnya. +Mengadopsi persamaan \textit{state-space} dari robot Persamaan\eqref{eq:ss1}-\eqref{eq:ss2}. +Lalu ditentukan fungsi kendali $u(t)$ menggunakan \textit{state-feedback}. +\begin{align} + u(t) & = -K_r x_c(t) + N_r r_r \label{eq:kendali_mode_dua} \\ + N_r & = -[C(A_r - B_r K_r)^{-1} B_r ]^{-1} +\end{align} +Dimana vektor $r_c = \begin{bmatrix} \dot{x*}_r & \dot{y*}_r & \dot{\theta *}_r & v* & v_n* & w* \end{bmatrix}$ +adalah \textit{set-point} kendali mode dua dan +matriks $K_r$ diperoleh dari solusi persamaan \textit{Riccati}. + +\section{Kendali Formasi Multi Robot} Pada sub bab~\ref{subbab:KendaliFormasi} dijabarkan bagaimana kendali formasi menggunakan -kendali-PI dan menghasilkan persamaan~\eqref{eq:ss-formasi}. +kendali-P dan menghasilkan persamaan~\eqref{eq:ss-formasi}. Persamaan tersebut adalah persamaan \textit{state-space} kendali formasi. Apabila diperhatikan \textit{state} yang digunakan adalah koordinat relatif dari robot. Akan tetapi dalam batasanya, robot hanya bisa mengetahui nilai jarak dari robot lain. @@ -290,13 +355,40 @@ $x \in \mathbb{R}^2$. Sedangkan dalam kenyataanya yang diketahui adalah jarak, $ Apabila hanya variable jarak tersebut sebagai acuan kendali, maka robot tidak mengerti kearah mana harusnya robot itu bergerak untuk meminimalisasi error jaraknya. -\subsubsection{Strategi Penentuan Koordinat Tetangga} +Di Persamaan~\eqref{eq:ss-formasi} adalah persamaan \textit{state-space} yang menggunakan model sederhana +di Persamaan~\eqref{eq:modelorde2}. +Apabila diperhatikan pada model tersebut masukan pada perseamaan tersebut berbentuk kecepatan. +Menggunakan Persamaan~\eqref{eq:ss_kecepatan} dan~\eqref{eq:kendali_mode_dua} akan diperoleh persamaan \textit{state-space} baru +\begin{align} + \dot{x_c}(t) & = \Big(\big(A_c-B_cK_c + \big)\Big) x_c(t) K_{cf} sgn(x_c(t))+ (B_c N_c) r_c , +\end{align} +Lalu diterapkan di Persamaan~\eqref{eq:ss-formasi} sebgai berikut. +\begin{align} + \dot{p} & = A_{cf} p(t) + B_{cf} v(t) + K_{cf} sgn(p(t)) \\ + \dot{v} & = -k_{p1}v_i(t) -R(p(t))^T k_{p2}(R(p(t))x_1(t) - d )) \\ + A_{cf} & = \begin{bmatrix} + A_c-B_cK_c & 0 & 0 \\ + 0 & A_c-B_cK_c & 0 \\ + 0 & 0 & A_c-B_cK_c \\ + \end{bmatrix}; + B_{cf} = \begin{bmatrix} + (B_c N_c) \\ (B_c N_c) \\ (B_c N_c) \\ + \end{bmatrix}; \notag \\ + K_{cf} & = \begin{bmatrix} + k_c & 0 & 0 \\ + 0 & k_c & 0 \\ + 0 & 0 & k_c \\ + \end{bmatrix} +\end{align} + +\section{Strategi Penentuan Koordinat Tetangga} \label{bab:empat:Strategi_koordinat_tetangga} -Telah dibahas bahwa model robot memiliki sifat \textit{observable}, dimana state dapat diperoleh dari sensor. -Informasi state tersebut dapat dikirim melalu komunikasi sehingga dapat dipantau koordinat tetangga dari individu robot. -Informasi state yang dibutuhkan pada individu robot adalah percepatan, sedangkan koordinat bersifat relatif. -Oleh karena itu untuk mengetahui koordinat yang relatif, individu robot membutuhkan nilai koordinat sebagai nilai inisialisasi. +Tujuan dari strategi penentuan koordinat tetangga ini adalah menemukan koodinat menggunakan variabel jarak saja. +Mengadopsi dari pengembangan oleh Qiang (\kutip{qiang2018}) meletakkan dua sensor jarak pada salah satu robot, +menggunakan kaidah rumus segitiga untuk mendapatkan sudut diantara robot tetangganya dan mengubahnya menjadi koordinat polar. +Di penelitian ini menggunakan kaidah rumus segitiga tersebut akan tetapi robot hanya terpasang satu sensor jarak saja +dan mengharuskan melakukan langkah tertentu untuk mendapatkan sudut diantara robot tetangganya. Penentuan koordinat tentangga dapat ditemukan dengang mengubah koordinat polar menjadi koordinat kartesian. Koordinat polar membutuhkan panjang $d_a$, dan sudut $\alpha$. @@ -306,209 +398,262 @@ Algoritama yang ditawarkan memanfaatkan hukum \textit{cosinus} pada segitiga unt \begin{figure} \centering - \includegraphics[scale=.5]{BAB3/img/estimate_coordinate.png} - \caption{Strategi Penentuan Koordinat} - \label{fig:strategiPenentuanKoordinat} + \includegraphics[scale=.2]{BAB3/img/estimate_coordinate.png} + \caption{Strategi Penentuan Koordinat Langkah Pertama} + \label{fig:strategiPenentuanKoordinat_satu} \end{figure} -Dapat diperhatikan pada gambar~\ref{fig:strategiPenentuanKoordinat} untuk gambaran strateginya. -Robot $B \in \tetangga_A$, adalah tetangga dari robot $A$. -Pertama-tama, sebelum robot $A$ bergerak, disimpan terlebih dahulu nilai $d_a$, -atau dinotasikan dengan $d_a[k]$ sebagai jarak sebelum bergerak. -Lalu robot $A$ berjalan secara random kesegala arah dengan jarak $l_a$. -Disimpan kembali nilai jara $d_a$, atau dinotasikan dengan $d_a[k+1]$. -Setalah itu dapat ditentukan sudut $\alpha[k+1]$ +\textbf{Langkah pertama}. Gambar~\ref{fig:strategiPenentuanKoordinat_satu} adalah Ilustrasi langkah pertama algoritma cosinus dimana +robot $A$ diharuskan berpindah sepanjang la atau ke koordinat $A' = (0, la )$ menggunakan +kendali mode dua di Persamaan~\eqref{eq:kendali_mode_dua} akan tetapi robot harus menyimpan jarak di $[k]$ terlebih +dahulu. Setelah berpindah robot $A$ mendapatkan jarak di $[k + 1]$ digunakan untuk menentukan +sudut $\alpha_i^\circ$ menggunakan rumus segitiga cosinus. Berikut adalah Persamaan $\alpha_i^\circ$. \begin{align} - d_a[k]^2 & = d_a[k+1]^2 + l_a^2 + 2 d_a[k+1] l_a \cos{(\alpha[k+1])} \\ - \alpha[k+1] & = cos^{-1}\Bigg( \frac{l_a^2 + d_a[k+1]^2 -d_a[k]^2}{2d_a[k+1]l_a} \Bigg) + \zeta_i^a & = cos^{-1}\Bigg( \frac{l_a^2 + d_a[k+1]^2 -d_a[k]^2}{2d_a[k+1]l_a} \Bigg) + \alpha_i^\circ & = 180^\circ \\pm \zeta_i^a \\ \label{eq:algo_getAngle} \end{align} -Sebelum $\alpha[k+1]$ digunakan, jarak $d_a[k+1]$ dan $d_a[k]$ berpengaruh dalam penentuan koordinat. -Sehingga diperlukan sedikit algoritma +Variabel $\alpha_i^\circ$ dan $d_i[k+1]$ adalah nilai dari koordinat polar dari setiap robot tetangga A. Diubah +menjadi koordinat kartesian untuk dapat dimasukkan dalam state kendali formasi. \begin{align} - \alpha_i= - \begin{cases} - \alpha[k+1] & ,d_a[k+1] > d_a[k] \\ - 180-\alpha[k+1] & ,d_a[k+1] < d_a[k] - \end{cases}.\label{eq:init_relatif_koordinat} + x_{B_i}^A = \begin{bmatrix} + x_{B_i}= d_i[k]\cos \alpha_i^\circ \\ + y_{B_i}= d_i[k]\sin \alpha_i^\circ + \end{bmatrix} \label{eq:algo_koordinat} \end{align} -Strategi pada gambar~\ref{fig:strategiPenentuanKoordinat} hanya berlaku apabila target ukur berhenti. Apabila dinotasikan koordinat $(x_B^A, y_B^A)$ adalah koordinat relatif robot $B$ terhadap $A$, -maka $(\dot{x}_B^A, \dot{y}_B^A)$ adalah notasi kecepatan koordinat dari robot B. -Dengan menggunakan persamaan~\eqref{eq:kinematika_robot} untuk menyelesaikan koordinat dalam -keadaan robot $B$ bergerak, yaitu mengirimkan informasi kecepatan koordinatnya -ke robot $A$. Lalu robot $A$ dapat mengkalkulasi koordinat relatif dengan persamaan berikut -\begin{align} - \alpha[k+1] & = \alpha[k]+tan^{-1} \Big[ \frac{\dot{x}_B^A}{\dot{y}_B^A} \Big] -\end{align} -dimana kondisi inisial adalah $\alpha[k] = \alpha_i$ diperoleh dari hasil strategi pada persamaan~\eqref{eq:init_relatif_koordinat}. -Dengan memanfaatkan kedua strategi tersebut dapat digunakan untuk -mengkalkulasi koordinat robot $B$ relatif terhadap robot $A$ -\begin{align} - x_B^A = \begin{bmatrix} - x_B = d_a[k]\cos \alpha[k] \\ - y_B = d_a[k]\sin \alpha[k] - \end{bmatrix} -\end{align} -Dalam strategi ini akan terjadi ketidak akuratan dalam pengukuran apabila target ukur -berada pada sudut $90^\circ$. -Akan tetapi, \kutip{Cao2007} sudah menjelaskan mengenai kriteria posisi agent ketika dalam kondisi inisial. -Yaitu semua agent tidak berada pada kondisi sejajar secara koordinat global. - -\begin{algorithm} - \DontPrintSemicolon - \KwInput{ - Integer $l_a>0$, - $\tetangga_i=getConnectionRobot()$, } - \KwOutput{$x_i^j$} - - \If{isInisilised() == false}{ - \tcc{inisialisasi} - \tcc{getRandomDirection() akan mengembalikan sudur random antara 0 - 360} - $dir = getRandomDirection()$\; - $d_{before} = getDistanceFromSensor(\tetangga_i)$\; - $r = \begin{bmatrix} - l_a \cos(dir) \\ - l_a \sin(dir) - \end{bmatrix}$\; - - \tcc{Menjalankan robot hingga mencapai setpoint} - \While{isSetpointReached()}{ - $runRobotToSetpoint(r)$\; - } - - \tcc{Mengambil jarak setelah robot mencapai setpoint} - $d_{after} = getDistanceFromSensor(\tetangga_i)$\; - - \tcc{Mengkalkulasi sudut} - $ang = cos^{-1}\Bigg[ \frac{l_a^2 + d_{after}^2 -d_{before}^2}{2d_{before}l_a} \Bigg]$\; - } - \Else{ - \tcc{mendapatkan infromasi state dari tetangga} - $\begin{bmatrix} - \dot{x}_B^A \\ \dot{y}_B^A - \end{bmatrix} = getState()$ \; - $ang = \alpha[k]+tan^{-1} \Big[ \frac{\dot{x}_B^A}{\dot{y}_B^A} \Big]$ \; - } - - \If{$d_{before} d_a[k] \\ +% 180-\alpha[k+1] & ,d_a[k+1] < d_a[k] +% \end{cases}.\label{eq:init_relatif_koordinat} +% \end{align} + +% Strategi pada gambar~\ref{fig:strategiPenentuanKoordinat} hanya berlaku apabila target ukur berhenti. Apabila dinotasikan koordinat $(x_B^A, y_B^A)$ adalah koordinat relatif robot $B$ terhadap $A$, +% maka $(\dot{x}_B^A, \dot{y}_B^A)$ adalah notasi kecepatan koordinat dari robot B. +% Dengan menggunakan persamaan~\eqref{eq:kinematika_robot} untuk menyelesaikan koordinat dalam +% keadaan robot $B$ bergerak, yaitu mengirimkan informasi kecepatan koordinatnya +% ke robot $A$. Lalu robot $A$ dapat mengkalkulasi koordinat relatif dengan persamaan berikut +% \begin{align} +% \alpha[k+1] & = \alpha[k]+tan^{-1} \Big[ \frac{\dot{x}_B^A}{\dot{y}_B^A} \Big] +% \end{align} +% dimana kondisi inisial adalah $\alpha[k] = \alpha_i$ diperoleh dari hasil strategi pada persamaan~\eqref{eq:init_relatif_koordinat}. +% Dengan memanfaatkan kedua strategi tersebut dapat digunakan untuk +% mengkalkulasi koordinat robot $B$ relatif terhadap robot $A$ +% \begin{align} +% x_B^A = \begin{bmatrix} +% x_B = d_a[k]\cos \alpha[k] \\ +% y_B = d_a[k]\sin \alpha[k] +% \end{bmatrix} +% \end{align} +% Dalam strategi ini akan terjadi ketidak akuratan dalam pengukuran apabila target ukur +% berada pada sudut $90^\circ$. +% Akan tetapi, \kutip{Cao2007} sudah menjelaskan mengenai kriteria posisi agent ketika dalam kondisi inisial. +% Yaitu semua agent tidak berada pada kondisi sejajar secara koordinat global. + +% \begin{algorithm} +% \DontPrintSemicolon +% \KwInput{ +% Integer $l_a>0$, +% $\tetangga_i=getConnectionRobot()$, } +% \KwOutput{$x_i^j$} + +% \If{isInisilised() == false}{ +% \tcc{inisialisasi} +% \tcc{getRandomDirection() akan mengembalikan sudur random antara 0 - 360} +% $dir = getRandomDirection()$\; +% $d_{before} = getDistanceFromSensor(\tetangga_i)$\; +% $r = \begin{bmatrix} +% l_a \cos(dir) \\ +% l_a \sin(dir) +% \end{bmatrix}$\; + +% \tcc{Menjalankan robot hingga mencapai setpoint} +% \While{isSetpointReached()}{ +% $runRobotToSetpoint(r)$\; +% } + +% \tcc{Mengambil jarak setelah robot mencapai setpoint} +% $d_{after} = getDistanceFromSensor(\tetangga_i)$\; + +% \tcc{Mengkalkulasi sudut} +% $ang = cos^{-1}\Bigg[ \frac{l_a^2 + d_{after}^2 -d_{before}^2}{2d_{before}l_a} \Bigg]$\; +% } +% \Else{ +% \tcc{mendapatkan infromasi state dari tetangga} +% $\begin{bmatrix} +% \dot{x}_B^A \\ \dot{y}_B^A +% \end{bmatrix} = getState()$ \; +% $ang = \alpha[k]+tan^{-1} \Big[ \frac{\dot{x}_B^A}{\dot{y}_B^A} \Big]$ \; +% } + +% \If{$d_{before}