diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 118b909..52719d7 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -8,12 +8,6 @@ "type": "shell", "command": "latexmk -pdf thesis.tex && latexmk -pdf -silent -c thesis.tex", "problemMatcher": [] - }, - { - "label": "Compile Presentasi", - "type": "shell", - "command": "latexmk -pdf presentasi.tex && latexmk -pdf -silent -c presentasi.tex", - "problemMatcher": [] - }, + } ] } \ No newline at end of file diff --git a/BAB1/bab1.tex b/BAB1/bab1.tex index b14f340..d0c98b8 100644 --- a/BAB1/bab1.tex +++ b/BAB1/bab1.tex @@ -11,14 +11,14 @@ 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 +bermanuver menuju arah yang diinginkan. Penjabaran oleh \kutip{Guanghua2013}, +pengembangan kendali formasi dilakukan dari beberapa algoritma strategi. Seperti +yang dikembangkan oleh \kutip{wang2014} menggunakan strategi leader-follower, +menggunakan Fuzzy-Logic sebagai tingkah laku robot oleh \kutip{ELFERIK2016117} dan menggunakan struktur virtual dimana sekelompok robot memiliki titik referensi sebagai satu -robot oleh Xuen-ren (Li et al., 2015). +robot oleh \kutip{li2015}. -Penjabaran oleh Kwang-Kyo (\kutip{OH2015424}), bahwa dari berbagai pengembangan kendali +Penjabaran oleh \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 @@ -36,33 +36,33 @@ koordinat global. Penerapan formasi berdasarkan jarak menggunakan sensor yang le 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}), +double integrator sederhana oleh \kutip{Oh2014}, menggunakan informasi +jarak untuk mengendalikan model sederhana double integrator oleh \kutip{Cai2014}, +menggunakan konsensus antara robot untuk mencapai bentuk formasi +dengan model single integrator sederhana oleh \kutip{deghat2016}, mengendalikan bentuk formasi menggunakan adaptive control untuk mengestimasi kecepatan -tetangga dari model robot yang sederhana oleh Sung-Mo (\kutip{kang2014}), +tetangga dari model robot yang sederhana oleh \kutip{kang2014}, menggabungkan kendali formasi berdasarkan jarak dan perpindahan untuk mengendalikan -model robot yang sederhana oleh Myoung-Chul (\kutip{park2015}), dan menggunakan +model robot yang sederhana oleh \kutip{park2015}, dan menggunakan kendali Proportional-Integral (PI) untuk mengendalikan jarak setiap model robot yang -sederhana oleh Rozenheck (\kutip{Rozenheck2015}). +sederhana oleh \kutip{Rozenheck2015}. -Kendali PI pada penelitian oleh Rozenheck (\kutip{Rozenheck2015}) tidak dapat langsung +Kendali PI pada penelitian oleh \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}) +oleh \kutip{guo2020} yang menggantikan sensor berbasis vision untuk +mendapatkan koordinat dari beberapa robot, penelitian oleh \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 +koordinat sekelompok robot dan mengendalikannya secara terpusat, dan pengembangan \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 +koordinat robot tetangganya. Penelitian ini akan mengembangkan algoritma memanfaatkan rumus segitiga +yang dikembangkan oleh \kutip{qiang2018} dan +menggantikan salah satu robot yang memiliki dua sensor dengan algoritma tersebut sehingga tidak +mengharuskan salah satu robot memiliki dua sensor. Penelitian oleh \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 @@ -73,37 +73,24 @@ nyata. \section{Identifikasi dan Perumusan Masalah} %-----------------------------------------------------------------------------% -Berikut adalah potensi permasalahan sebagai identifikasi masalah : -\begin{enumerate} - \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} - +Pembahasan dari latar belakang dapat ditentukan pontensi permasalahan sebagai identifikasi masalah, yaitu +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. Dalam penelitian ini akan digunakan batasan-batasan permasalahan sebagai berikut : \begin{enumerate} -\item Kendali formasi berdsarkan jarak akan menggunakan tiga robot yang dijalankan secara simulasi. -\item Sensor jarak bekerja secara ideal. + \item Kendali formasi berdsarkan jarak akan menggunakan tiga robot yang dijalankan secara simulasi. + \item Sensor jarak bekerja secara ideal. + \item Strategi yang akan dikembangkan hanya untuk mengetahui koordinat kondisi awal saja. \end{enumerate} -Berikut adalah beberapa point permasalahan yang ditujukan pada penelitian ini, yaitu: -\begin{enumerate} -\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} +Dapat ditentukan permasalaah untuk penelitian ini, yaitu "bagaimanakah strategi untuk mendapatkan koordinat +kondisi awal kendali formasi apabila variabel yang dikendalikan adalah jarak antar robot?. %-----------------------------------------------------------------------------% \section{Tujuan dan Manfaat} %-----------------------------------------------------------------------------% -%% \todo{tulis tujuan sebagai jawaban pertanyaan permasalahan} -Tujuan dari penelitian ini adalah -\begin{enumerate} -\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} +Tujuan dari penelitian ini adalah mengetahui strategi untuk mendapatkan koordinat kondisi awal kendali formasi apabila variabel yang dikendalikan adalah jarak antar robot. Manfaat dari penelitian ini adalah -\begin{enumerate} -\item Memberikan referensi untuk permasalahan kendali multi-robot, kususnya pada permasalhaan kendali formasi, terhadap model yang lebih nyata. -\item Membuka peluang penelitian dibidang kendali mengenai kendali formasi pada kendali multi-robot dilingkungan Fakultas Teknik Elektro, Universitas Brawijaya. -\end{enumerate} +memberikan referensi untuk permasalahan kendali multi-robot, kususnya pada permasalhaan kendali formasi, terhadap model yang lebih nyata. +dan membuka peluang penelitian dibidang kendali mengenai kendali formasi pada kendali multi-robot dilingkungan Fakultas Teknik Elektro, Universitas Brawijaya. diff --git a/BAB2/bab2.tex b/BAB2/bab2.tex index fa7ec4b..f454600 100644 --- a/BAB2/bab2.tex +++ b/BAB2/bab2.tex @@ -2,6 +2,137 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Kendali Formasi Berdasarkan Jarak} +Pembahasan kendali formasi mutli-robot dikutip dari paper oleh \kutip{Rozenheck2015}. +Dimana peneliti membahas mengenai kendali formasi robot berdasarkan jaraknya lalu dikendalikan dengan kendali PI\@. +Dari subbab ini akan dirangkum dari paper tersebut, yaitu mulai dari pendahuluan sampai kendalinya. + + +\subsection{Pendahuluan Formasi Multi Robot} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsubsection{Teori Graf} +Suatu graf $\graf$, dinotasikan sebagai $\graf=(\simpul, \sisi)$, merupakan pasangan $\simpul$ dan $\sisi$, +di mana $\simpul$ merupakan himpunan tak kosong berisikan simpul pada graf tersebut dan $\sisi$ +merupakan himpunan sisi pada graf tersebut. Secara formal, +himpunan $\sisi$ dapat dinyatakan sebagai suatu koleksi subhimpunan berkardinalitas dua dari himpunan $\simpul$, +atau dalam notasi matematika $\sisi \subseteq \simpul \times \simpul $. +Sebuah $\graf$ diakatakan tak berarah (\textit{undirected graph}), +dimana himpunan sisi terdiri dari pasangan node $(i,j)$, +maka sisi tersebut tidak memiliki urutan arah antara node $i$ dengan $j$. Dinotasikan +$n \triangleq | \simpul |$ sebagai jumlah dari node dan $m \triangleq | \sisi |$ sebagai jumlah dari sisinya. +Apabila $(i,j) \in \sisi$ maka dapat disebut node $i$ dan $j$ berdekatan(\textit{adjecent}). +Himpunan dari node yang terhubung dari setiap simpul $i$ dinotasikan dengan $\tetangga_i \triangleq \{ j \in \simpul: (i,j) \in \sisi \}$, dan juga $i \sim j$. +Matiks insidensi (\textit{incidence}), $E \in \mathbb{R}^{n\times m}$, adalah matrik $\{0,\pm 1\}$ dimana +baris matrik mengindikasikan simpulnya dan kolomnya sebagai sisinya. +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, +$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(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(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(p,\sisi) & \triangleq + \begin{bmatrix} + ||e_1||^2 & \dots & ||e_m||^2 + \end{bmatrix}^T +\end{align} +Matrik kekakuan $R(p)$ yang berhubungan erat dengan kerangka $\graf(p)$ dapat didefinisikan +dengan \textit{Jacobian} dari fungsi sisi (\kutip{Rozenheck2015}), +\begin{align} + 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} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Kendali Formasi Multi-Robot} +\label{subbab:KendaliFormasi} + +Dikarenakan pada penelitian sebelumnya menggunakan model sederhana, +maka akan menggabungkan literatur oleh \kutip{Oh2014} dengan penyesuaian metode sebelumnya. + +Pembahasan kendali dari formasi multi robot menggunakan gradient control. +Apabila $n(n\geq 2)$ dimodelkan sebagai titik yang memiliki masa jenis bergerak diatas +dimensi 2(\textit{Euclidean Space}), maka pergerakan dimodelkan dengan +\begin{align} + \begin{cases} + \dot{x}_i(t) = & v_i(t) \quad i = 1, \dots, n. \\ + \dot{v}_i(t) = & u_i(t) + \end{cases} + \label{eq:modelorde2} +\end{align} +dimana $v_i(t) \in \mathbb{R}^2$ dan $u_i(t)\in \mathbb{R}^2$adalah kecepatan dan input dari robot-$i$. Dinotasikan $d \in \mathbb{R}^m$ adalah vector jarak dimana isi +dari matrik tersebut adalah $d_k^2$ yang mempresentasikan jarak yang dinginkan antara +setiap robot $i$ dan $j$ untuk sisi $(i,j)\in \sisi$. +Lalu didefinisi persamaan potensial yang memiliki hubungan antara jarak robot yang diinginkan +dengan jarak yang sekarang +\begin{align} + \Phi(e) & = \frac{1}{2} \sum_{i \in \simpul }||v_i||^2 + \frac{1}{2} \sum_{k=1}^{m} \big( ||e_k||^2 - d_k^2 \big)^2 +\end{align} +Pengamatan dilakukan agar $\Phi(e) =0$ jika dan hanya jika $||e_k||^2 = d_k^2,$ $\forall k = 1, \dots, m$. +Kendali dari setiap robot menggunakan gradien negatif dari fungsi potensial +\begin{align} + \begin{cases} + \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} +\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 \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_{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{bmatrix} + \dot{x} \\ \dot{v} + \end{bmatrix} & = + \begin{bmatrix} + 0 & 1 \\ + -k_{p2}R(x)^T R(x) & -k_{p1}\\ + \end{bmatrix} + \begin{bmatrix} + x \\ v + \end{bmatrix} + + \begin{bmatrix} + 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} + +\begin{figure} + \centering + \includegraphics[scale=.35]{BAB2/img/plotMotion3Robot.png} + \caption{Plot motion 3 robot dengan nilai kp=80 dan ki=1} +\end{figure} + \section{Pemodelan Robot} Pembahasan pemodelan robot akan dirangkum dari jurnal oleh \kutip{CORREIA20127}. @@ -159,200 +290,3 @@ sistem robot 0 & 0 & 0 & 0 & 0 & 1 & \\ \end{bmatrix} \end{align*} - -\section{Formasi Multi Robot} -Pembahasan kendali formasi mutli-robot dikutip dari paper oleh \kutip{Rozenheck2015}. -Dimana peneliti membahas mengenai kendali formasi robot berdasarkan jaraknya lalu dikendalikan dengan kendali PI\@. -Dari subbab ini akan dirangkum dari paper tersebut, yaitu mulai dari pendahuluan sampai kendalinya. - - -\subsection{Pendahuluan Formasi Multi Robot} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\subsubsection{Teori Graf} -Suatu graf $\graf$, dinotasikan sebagai $\graf=(\simpul, \sisi)$, merupakan pasangan $\simpul$ dan $\sisi$, -di mana $\simpul$ merupakan himpunan tak kosong berisikan simpul pada graf tersebut dan $\sisi$ -merupakan himpunan sisi pada graf tersebut. Secara formal, -himpunan $\sisi$ dapat dinyatakan sebagai suatu koleksi subhimpunan berkardinalitas dua dari himpunan $\simpul$, -atau dalam notasi matematika $\sisi \subseteq \simpul \times \simpul $. -Sebuah $\graf$ diakatakan tak berarah (\textit{undirected graph}), -dimana himpunan sisi terdiri dari pasangan node $(i,j)$, -maka sisi tersebut tidak memiliki urutan arah antara node $i$ dengan $j$. Dinotasikan -$n \triangleq | \simpul |$ sebagai jumlah dari node dan $m \triangleq | \sisi |$ sebagai jumlah dari sisinya. -Apabila $(i,j) \in \sisi$ maka dapat disebut node $i$ dan $j$ berdekatan(\textit{adjecent}). -Himpunan dari node yang terhubung dari setiap simpul $i$ dinotasikan dengan $\tetangga_i \triangleq \{ j \in \simpul: (i,j) \in \sisi \}$, dan juga $i \sim j$. -Matiks insidensi (\textit{incidence}), $E \in \mathbb{R}^{n\times m}$, adalah matrik $\{0,\pm 1\}$ dimana -baris matrik mengindikasikan simpulnya dan kolomnya sebagai sisinya. -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, -$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(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(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(p,\sisi) & \triangleq - \begin{bmatrix} - ||e_1||^2 & \dots & ||e_m||^2 - \end{bmatrix}^T -\end{align} -Matrik kekakuan $R(p)$ yang berhubungan erat dengan kerangka $\graf(p)$ dapat didefinisikan -dengan \textit{Jacobian} dari fungsi sisi (\kutip{Rozenheck2015}), -\begin{align} - 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} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\subsection{Kendali Formasi Multi-Robot} -\label{subbab:KendaliFormasi} - -Dikarenakan pada penelitian sebelumnya menggunakan model sederhana, -maka akan menggabungkan literatur oleh \kutip{Oh2014} dengan penyesuaian metode sebelumnya. - -Pembahasan kendali dari formasi multi robot menggunakan gradient control. -Apabila $n(n\geq 2)$ dimodelkan sebagai titik yang memiliki masa jenis bergerak diatas -dimensi 2(\textit{Euclidean Space}), maka pergerakan dimodelkan dengan -\begin{align} - \begin{cases} - \dot{x}_i(t) = & v_i(t) \quad i = 1, \dots, n. \\ - \dot{v}_i(t) = & u_i(t) - \end{cases} - \label{eq:modelorde2} -\end{align} -dimana $v_i(t) \in \mathbb{R}^2$ dan $u_i(t)\in \mathbb{R}^2$adalah kecepatan dan input dari robot-$i$. Dinotasikan $d \in \mathbb{R}^m$ adalah vector jarak dimana isi -dari matrik tersebut adalah $d_k^2$ yang mempresentasikan jarak yang dinginkan antara -setiap robot $i$ dan $j$ untuk sisi $(i,j)\in \sisi$. -Lalu didefinisi persamaan potensial yang memiliki hubungan antara jarak robot yang diinginkan -dengan jarak yang sekarang -\begin{align} - \Phi(e) & = \frac{1}{2} \sum_{i \in \simpul }||v_i||^2 + \frac{1}{2} \sum_{k=1}^{m} \big( ||e_k||^2 - d_k^2 \big)^2 -\end{align} -Pengamatan dilakukan agar $\Phi(e) =0$ jika dan hanya jika $||e_k||^2 = d_k^2,$ $\forall k = 1, \dots, m$. -Kendali dari setiap robot menggunakan gradien negatif dari fungsi potensial -\begin{align} - \begin{cases} - \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} -\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 \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_{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{bmatrix} - \dot{x} \\ \dot{v} - \end{bmatrix} & = - \begin{bmatrix} - 0 & 1 \\ - -k_{p2}R(x)^T R(x) & -k_{p1}\\ - \end{bmatrix} - \begin{bmatrix} - x \\ v - \end{bmatrix} + - \begin{bmatrix} - 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} - -\begin{figure} - \centering - \includegraphics[scale=.35]{BAB2/img/plotMotion3Robot.png} - \caption{Plot motion 3 robot dengan nilai kp=80 dan ki=1} -\end{figure} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% \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}. - -% 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} - -% 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} - -% \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/BAB4/bab4.tex b/BAB4/bab4.tex index a53d832..12d9deb 100644 --- a/BAB4/bab4.tex +++ b/BAB4/bab4.tex @@ -1,66 +1,5 @@ \chapter{\babEmpat} -% \section{Perangkat Percobaan} -% Percobaan akan dilakukan secara simulasi yang dijalankan menggunakan aplikasi MATLAB / GNU Octave. - -% 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. - -% \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 -% \begin{itemize} -% %% \item pengembangan data/akuisisi data ? -% % \item skenario pengujian/simulasi? (lebih ke teknis seperti lapangan environtment dll) -% % \item skenario Analisa hasil -% \item jadwal penelitian -% \end{itemize} -% } - -% \section{Strategi Kendali Multi Robot} - -% 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. - -% \section{Kendali Robot} - 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. @@ -68,6 +7,147 @@ Strategi pencarian koordinat mengharuskan juga robot untuk mencapai koordinat re Pada bab ini akan menjelaskan bagaimana robot menemukan koordinat, mencapai kecepatan dan koordinat tertentu, dan membentuk formasi menggunakan model robot \textit{holonomic}. +\section{Strategi Penentuan Koordinat Tetangga} +\label{bab:empat:Strategi_koordinat_tetangga} + +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$. +Panjang $d_a$ adalah variable yang didapat dari sensor yang memberikan nilai jarak dari robot $A$ ke robot $B$, +akan tetapi untuk mendapatkan koordinat polar, pengukuran sudu $\alpha$ tidak tersedia. +Algoritama yang ditawarkan memanfaatkan hukum \textit{cosinus} pada segitiga untuk mendapatkan sudut tersebut. + +\begin{figure} + \centering + \includegraphics[scale=.2]{BAB3/img/estimate_coordinate.png} + \caption{Strategi Penentuan Koordinat Langkah Pertama} + \label{fig:strategiPenentuanKoordinat_satu} +\end{figure} + +\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} + \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} +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} + 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} + +\begin{figure} + \centering + \includegraphics[scale=.2]{BAB3/img/estimate_coordinate.png} + \caption{Strategi Penentuan Koordinat Langakah Kedua} + \label{fig:strategiPenentuanKoordinat_dua} +\end{figure} + +\textbf{Langkah kedua}. Koordinat di Persamaan~\eqref{eq:algo_koordinat} akan menghasilkan bias dikarenakan +Persamaan~\eqref{eq:algo_getAngle} tidak mengetahui letak kuadran sudutnya. Menggunakan ilustrasi di Gambar~\ref{fig:strategiPenentuanKoordinat_satu}, +langkah pertama menghasilkan dua kemungkinan koordinat robot $B_1$ dan $B_1'$ . +Apabila di Gambar~\ref{fig:strategiPenentuanKoordinat_satu}, Sudut $\zeta_i^a$ adalah sudut segitiga $\angle AA'B_1$ atau $\angle AA'B_2$ sehingga +dimungkinkan koordinat yang dihasilkan Persamaan~\eqref{eq:algo_getAngle} bisa berada pada kuadran 1 atau kuadran 4. +Oleh karena itu di Persamaan~\ref{fig:algo_getAngle} terdapat operasi $\pm$ dimana operasi tersebut +akan dilakukan berdasarkan letak kuadran $B_i$. + +\begin{align} + \alpha_i^\circ & = \begin{cases} + 180^\circ - \zeta_i^a & , Robot berada pada kuadran 1 dan 2 \\ + 180^\circ + \zeta_i^a & , Robot berada pada kuadran 3 dan 4 + \end{cases} + \label{eq:kejadian_langkah_dua} +\end{align} + +Langkah kedua ini bertujuan untuk menentukan kejadian di Persamaan~\eqref{eq:kejadian_langkah_dua} dimana robot +harus berpindah ke koordinat $A'' = (x*_a , y*_a )$ (Gambar~\ref{fig:strategiPenentuanKoordinat_dua}). +Sebelum robot berpindah, kondisi robot telah mendapatkan koordinat dari langkah pertama. Koordinat tersebut akan diubah +menjadi jarak dan akan dibandingkan jarak tersebut dengan informasi jarak dari sensor setelah +berpindah ke $A''$ . Apabila terdapat perbedaan maka kejadian di Persamaan~\eqref{eq:algo_getAngle} diubah kejadian selanjutnya +dan mengkoreksi koordinat sebelumnya. + +\section{Analisa Algoritama Dengan Tetangga Statis} + +Telah dijelaskan pada Bab \ref{bab:empat:Strategi_koordinat_tetangga} bahwa robot bergerak kearah yang random dengan jarak tertentu untuk mengetahui koordinat tetangga. +Analisa akan dilakukan dengan membandingkan berbagai jarak dari tinggat rendah, sedang, dan tinggi untuk mengetahui respon algoritma yang sesuai dan optimal untuk mendapatkan koordinat tetangga. + +Dari hasil analisa ini akan menghasilkan jarak terbaik untuk algoritma menentukan koordinat tetangga. Pembuktian akan dilakukan secara menampilkan grafik respon. + +\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{State Feedback} \begin{figure} \centering @@ -281,69 +361,6 @@ Apabila diintegrasi terhadap persamaan~\eqref{eq:ss1} terhadap diagram~\ref{fig: \end{center} \end{figure} -\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-P dan menghasilkan persamaan~\eqref{eq:ss-formasi}. @@ -379,281 +396,4 @@ Lalu diterapkan di Persamaan~\eqref{eq:ss-formasi} sebgai berikut. 0 & k_c & 0 \\ 0 & 0 & k_c \\ \end{bmatrix} -\end{align} - -\section{Strategi Penentuan Koordinat Tetangga} -\label{bab:empat:Strategi_koordinat_tetangga} - -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$. -Panjang $d_a$ adalah variable yang didapat dari sensor yang memberikan nilai jarak dari robot $A$ ke robot $B$, -akan tetapi untuk mendapatkan koordinat polar, pengukuran sudu $\alpha$ tidak tersedia. -Algoritama yang ditawarkan memanfaatkan hukum \textit{cosinus} pada segitiga untuk mendapatkan sudut tersebut. - -\begin{figure} - \centering - \includegraphics[scale=.2]{BAB3/img/estimate_coordinate.png} - \caption{Strategi Penentuan Koordinat Langkah Pertama} - \label{fig:strategiPenentuanKoordinat_satu} -\end{figure} - -\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} - \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} -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} - 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} - -\begin{figure} - \centering - \includegraphics[scale=.2]{BAB3/img/estimate_coordinate.png} - \caption{Strategi Penentuan Koordinat Langakah Kedua} - \label{fig:strategiPenentuanKoordinat_dua} -\end{figure} - -\textbf{Langkah kedua}. Koordinat di Persamaan~\eqref{eq:algo_koordinat} akan menghasilkan bias dikarenakan -Persamaan~\eqref{eq:algo_getAngle} tidak mengetahui letak kuadran sudutnya. Menggunakan ilustrasi di Gambar~\ref{fig:strategiPenentuanKoordinat_satu}, -langkah pertama menghasilkan dua kemungkinan koordinat robot $B_1$ dan $B_1'$ . -Apabila di Gambar~\ref{fig:strategiPenentuanKoordinat_satu}, Sudut $\zeta_i^a$ adalah sudut segitiga $\angle AA'B_1$ atau $\angle AA'B_2$ sehingga -dimungkinkan koordinat yang dihasilkan Persamaan~\eqref{eq:algo_getAngle} bisa berada pada kuadran 1 atau kuadran 4. -Oleh karena itu di Persamaan~\ref{fig:algo_getAngle} terdapat operasi $\pm$ dimana operasi tersebut -akan dilakukan berdasarkan letak kuadran $B_i$. - -\begin{align} - \alpha_i^\circ & = \begin{cases} - 180^\circ - \zeta_i^a & , Robot berada pada kuadran 1 dan 2 \\ - 180^\circ + \zeta_i^a & , Robot berada pada kuadran 3 dan 4 - \end{cases} - \label{eq:kejadian_langkah_dua} -\end{align} - -Langkah kedua ini bertujuan untuk menentukan kejadian di Persamaan~\eqref{eq:kejadian_langkah_dua} dimana robot -harus berpindah ke koordinat $A'' = (x*_a , y*_a )$ (Gambar~\ref{fig:strategiPenentuanKoordinat_dua}). -Sebelum robot berpindah, kondisi robot telah mendapatkan koordinat dari langkah pertama. Koordinat tersebut akan diubah -menjadi jarak dan akan dibandingkan jarak tersebut dengan informasi jarak dari sensor setelah -berpindah ke $A''$ . Apabila terdapat perbedaan maka kejadian di Persamaan~\eqref{eq:algo_getAngle} diubah kejadian selanjutnya -dan mengkoreksi koordinat sebelumnya. - - -% 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]$ -% \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) -% \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 -% \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} -% \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}