199 lines
11 KiB
TeX
199 lines
11 KiB
TeX
\chapter{\babTiga}
|
|
|
|
\section{Strategi Kendali Multi Robot}
|
|
|
|
Analisa akan dilakukan dalam beberapa bagian agar mudah dipahami dan diterapkan.
|
|
Analisa tersebut adalah mengenai kendali dari model dinamika robot dan kendali formasi,
|
|
dan mengenai metode percobaan akan dibahas secara matematis, simulasi, dan HIL.\
|
|
|
|
\subsection{Kendali Robot}
|
|
\todo{akan dijelaskan tentang metode yang digunakan untuk mengendalikan robot pada bagian robot saja}
|
|
|
|
\subsection{Kendali Formasi Multi Robot}
|
|
Pada sub bab~\ref{subbab:KendaliFormasi} dijabarkan bagaimana kendali formasi menggunakan
|
|
kendali-PI 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.
|
|
Dengan kata lain, yang dibutuhkan dalam metode kendali formasi adalah jarak dalam bentuk koordinat,
|
|
$x \in \mathbb{R}^2$. Sedangkan dalam kenyataanya yang diketahui adalah jarak, $r \in \mathbb{R}$.
|
|
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}
|
|
Penentuan koordinat tentangga dapat ditemukan dengang mengubah koordinat polar menjadi koordinat kartesian.
|
|
Koordinat polar membutuhkan panjang, $d_a$, dan sudut, $\alpha$.
|
|
Variable $d_a$ dapat diperoleh dari sensor, akan tetapi sudu $\alpha$ tidak bisa dideteksi secara langsung oleh sensor.
|
|
Dengan menggunakan \textit{cosinus} pada segitiga dimungkinkan untuk mendapatkan sudut tersebut.
|
|
|
|
\begin{figure}
|
|
\centering
|
|
\includegraphics[scale=.5]{BAB3/img/estimate_coordinate.png}
|
|
\caption{Strategi Penentuan Koordinat}
|
|
\label{fig:strategiPenentuanKoordinat}
|
|
\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]$
|
|
\begin{align}
|
|
\alpha[k+1] = cos^{-1}\Bigg[ \frac{l_a^2 + d[k+1]^2 -d_a[k]^2}{2d_a[k+1]l_a} \Bigg].
|
|
\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$ adalah koordinat relatif robot $B$ terhadap $A$,
|
|
maka $\dot{x}_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 pada kondisi inisial.
|
|
|
|
\section{Kestabilan 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
|
|
\begin{subfigure}[t]{.4\textwidth}
|
|
\includegraphics[scale=.5]{BAB3/img/hil_graph.png}
|
|
\caption{}
|
|
\label{fig:hil_graph}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.4\textwidth}
|
|
\includegraphics[scale=.5]{BAB3/img/hil_graph_1.png}
|
|
\caption{}
|
|
\label{fig:hil_graph_1}
|
|
\end{subfigure}
|
|
\caption{(a)Grafik Hardware-in-the-loop (\kutip{Jim1999}). (b) HIL Kendali Multi-Robot. }
|
|
\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:solusi_ODE}.
|
|
Dapat diperhatikan pada gambar~\ref{fig:hil_graph_1}, pada HIL untuk kendali multi robot akan
|
|
menggunakan tiga kendali untuk mempresentasikan tiga robot.
|
|
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.
|
|
|
|
\subsection{Kestabilan Model}
|
|
Pada persamaan~\eqref{eq:disstab} apabila model dikalkulasi akan bergantung dengan besarnya \textit{step size}, $h$.
|
|
Oleh karena itu, setelah persamaan~\eqref{eq:ss1}-\eqref{eq:ss2} dilakukan parameterisasi harus dilakukan penentuan \textit{step size} agar model tersebut stabil dalam mensimulasikan modelnya.
|
|
Penentuan \textit{step size} harus berdasarkan kriteria kestabilan pada gamabar~\ref{fig:explicit_euler}.
|
|
|
|
Apabila didefinisi ulang \textit{state} pada persamaan~\eqref{eq:ss1}-\eqref{eq:ss2} dengan
|
|
$x(t) = \begin{bmatrix}\dot{x}_r & \dot{y}_r & \dot{\theta}_r \end{bmatrix}^T$,
|
|
maka akan lebih mudah untuk menghitung kestabilan dari matriks $A \in \mathbb{R}^{3 \times 3}$.
|
|
Dengan menggunakan parameter dari penelitian oleh \kutip{CORREIA20127}, maka akan diperoleh matriks $A, B, K,$ dan $C$.
|
|
\begin{align*}
|
|
A & = \begin{bmatrix}
|
|
-6.69666 & 0.00000 & 0.00000 \\
|
|
0.00000 & -6.71000 & 0.00000 \\
|
|
0.00000 & 0.00000 & -4.04200 \\
|
|
\end{bmatrix} ; \quad
|
|
B = \begin{bmatrix}
|
|
0.00000 & 0.57735 & -0.57735 \\
|
|
-0.66667 & 0.33333 & 0.33333 \\
|
|
4.00000 & 4.00000 & 4.00000 \\
|
|
\end{bmatrix} ; \\
|
|
K & = \begin{bmatrix}
|
|
-1.46667 & 0.00000 & 0.00000 \\
|
|
0.00000 & -1.00000 & 0.00000 \\
|
|
0.00000 & 0.00000 & -0.06600 \\
|
|
\end{bmatrix}; \quad
|
|
C = \begin{bmatrix}
|
|
1 & 0 & 0 \\
|
|
0 & 1 & 0 \\
|
|
0 & 0 & 1
|
|
\end{bmatrix}.
|
|
\end{align*}
|
|
|
|
Dengan menggunakan pendekatan pada persamaan~\eqref{eq:desdotode1} untuk persamaan~\eqref{eq:ss1} maka diperoleh bentuk diskretnya
|
|
\begin{align}
|
|
x[k+1] & = (I + A.h).x[k] + B.h.u[k] + K.h.sgn(x[k]). \\
|
|
\end{align}
|
|
Pengali $sgn(.)$ bersifat penambah dari sistem, maka dalam penentuan kestabilan ini akan dianggap penambah dari matriks sistem.
|
|
\begin{align}
|
|
x[k+1] & = (I + (A+K).h).x[k] + B.h.u[k]. \\
|
|
\end{align}
|
|
Kriteria kestabilan akan bergantung dari hasil penentuan $h$ pada $I+(A+K)h~=~\Lambda$.
|
|
Untuk semua nilai $\lambda$ pada matriks $\Lambda$ harus memenuhi kriteris $\lambda \leq 1$.
|
|
Dimungkinkan akan mengalami kebingungan ketika menentukan besar $h$,
|
|
akan tetapi nantinya persamaan ini akan diterapkan dan diselesaikan oleh komputer.
|
|
Alangkah baiknya apabila diidentifikasi terlebih dahulu konsumsi waktu yang dibutuhkan untuk menyelesaikan
|
|
satu iterasi dari persamaan tersebut.
|
|
Setelah dilakukan identifikasi, waktu yang dibutuhkan untuk satu kali iterasi berkisar $0.001$ ms (Pembulatan).
|
|
Sehingga penentuan \textit{step size} sebesar $0.1$ ms sangat dimungkinkan, dengan pertimbangan
|
|
sisa dari waktu yang digunakan kalkulasi dapat digunakan untuk waktu \textit{idle} dan menjalankan program yang lain. Berikut adalah matriks $\Lambda$ setelah dikalkulasi menggunakan $h=0.1$
|
|
\begin{align*}
|
|
\Lambda = \begin{bmatrix}
|
|
0.18367 & 0.00000 & 0.00000 \\
|
|
0.00000 & 0.22900 & 0.00000 \\
|
|
0.00000 & 0.00000 & 0.58920 \\
|
|
\end{bmatrix}.
|
|
\end{align*}
|
|
Terbukti bahwa semua nilai item didalam matriks kurang dari sama dengan satu.
|
|
Sehingga menggunakan algoritma \textit{Expilicit Euler} sudah cukup untuk menjalankan model robot \textit{omni 3-wheel} sebagai model \textit{holonomic} yang akan digunakan untuk percobaan kendali multi robot.
|
|
Hasil plot dari simulasi model dapat dilihat pada gambar~\ref{fig:sim_model}.
|
|
\begin{figure}
|
|
\centering
|
|
\begin{subfigure}[t]{.6\textwidth}
|
|
\includegraphics[scale=.4]{BAB3/img/speedRobot_-6_3_3.png}
|
|
\caption{}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.6\textwidth}
|
|
\includegraphics[scale=.4]{BAB3/img/speedRobot_0_6_-6.png}
|
|
\caption{}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.6\textwidth}
|
|
\includegraphics[scale=.4]{BAB3/img/speedRobot_6_6_6.png}
|
|
\caption{}
|
|
\end{subfigure}
|
|
\caption{(a)$w_1=-6; w_2=3; w_3=3$. (b) $w_1=0; w_2=6; w_3=-6$ (c) $w_1=6; w_2=6; w_3=6$}
|
|
\label{fig:sim_model}
|
|
\end{figure}
|
|
\subsection{Rencana Hardware-in-Loop}
|
|
\todo{kutip hasil HIL yang sudah ada lalu gabungkan model dan kendali jadi satu secara sederhana}
|
|
|
|
\subsection{Rencana Uji Lapangan}
|
|
\todo{Membahas mengenai cara pengambilan data penerapan pada robot aslinya}
|