324 lines
16 KiB
TeX
324 lines
16 KiB
TeX
\chapter{\babEmpat}
|
|
|
|
\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}
|
|
Pada kendali robot akan dibahas mengenai analisis kendali robot menggunakan
|
|
state-space feedback. Kendali robot ini adalah kendali tahap akhir 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.
|
|
|
|
\subsubsection{State Feedback}
|
|
\begin{figure}
|
|
\centering
|
|
\input{BAB4/img/statefeedback.tex}
|
|
\caption{State-feedback Sistem}
|
|
\label{fig:state-feedback}
|
|
\end{figure}
|
|
Pada persamaan~\eqref{eq:ss1} diketahui bahwa state memiliki dimensi $6 \times 1$. Dimensi
|
|
tersebut tidak menunjukan sistem memiliki orde 6. Apabila diperhatikan orde
|
|
dari sistem adalah orde 2. Dengan membaginya kedalam 3 persamaan state-space
|
|
akan lebih mudah dalam analisis parameter kendalinya. Berikut adalah persamaan
|
|
|
|
\begin{align}
|
|
\begin{bmatrix}\dot{x}_p \\ \ddot{x}_r \end{bmatrix} & =
|
|
\begin{bmatrix}0 & A_{14} \\ 0 & A_{44} \end{bmatrix}
|
|
\begin{bmatrix}{x}_p \\ \dot{x}_r\end{bmatrix} +
|
|
\begin{bmatrix}0 & 0& 0 \\ B_{11} & B_{12} & B_{13} \end{bmatrix}
|
|
\begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + k_{44}sgn(\dot{x}_r) \label{eq:ssx} \\
|
|
\begin{bmatrix}\dot{y}_p \\ \ddot{y}_r \end{bmatrix} & =
|
|
\begin{bmatrix}0 & A_{25} \\ 0 & A_{55} \end{bmatrix}
|
|
\begin{bmatrix}{y}_p \\ \dot{y}_r\end{bmatrix} +
|
|
\begin{bmatrix}0 & 0& 0 \\ B_{21} & B_{22} & B_{23} \end{bmatrix}
|
|
\begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + k_{55}sgn(\dot{y}_r)\label{eq:ssy} \\
|
|
\begin{bmatrix}\dot{\theta}_p \\ \ddot{\theta}_r\end{bmatrix} & =
|
|
\begin{bmatrix}0 & A_{34} \\ 0 & A_{66} \end{bmatrix}
|
|
\begin{bmatrix}{\theta}_p \\ \dot{\theta}_r\end{bmatrix} +
|
|
\begin{bmatrix}0 & 0& 0 \\ B_{31} & B_{32} & B_{33} \end{bmatrix}
|
|
\begin{bmatrix}u_1 \\ u_2 \\ u_3 \end{bmatrix} + k_{66}sgn(\dot{\theta}_r) \label{eq:ssthe}
|
|
\end{align}
|
|
|
|
State feedback membutuhkan kembalian nilai state dari sistem dan mengka-
|
|
likanya dengan besaran tertentu agar nilai karakteristik sistem tetap dalam keadaan
|
|
stabil atau sesuai ketentuan. Secara umum, state tidak dapat diperoleh langsung dari
|
|
sistem. Kemampuan untuk memperoleh state dari sistem langsung disebut dengan
|
|
kemampuan Observablity. Apabila sebuh sistem tidak Observable, maka dalam
|
|
kendalinya dibutuhkan Observer. Dimana tugasnya adalah mengestimasi state pada
|
|
sistem dengan membandingkan keluaran dan masukan. Syarat untuk dapat diterap-
|
|
kan state feedback, sistem harus observable dan controlable. Berikut adalah rumus
|
|
untuk menguji apakah sistem bersifat controlable atau tidak (Dorf, dkk (2010)).
|
|
|
|
\begin{align*} P_c = \begin{bmatrix} B & AB & A^2B & \dots & A^{n-1}B \end{bmatrix}\end{align*}
|
|
\begin{align} rank[P_c] = n \end{align}
|
|
Apabila hasil dari $rank(P_c ) \neq n$ maka sistem tidak \textit{fully controlable}. Sedangkan untuk
|
|
menguji observabilitas dapat menggunakan rumus berikut.
|
|
\begin{align*} P_o = \begin{bmatrix} C \\ CA \\ CA^2 \\ \vdots \\ CA^{n-1} \end{bmatrix}\end{align*}
|
|
\begin{align} rank[P_o] = n \end{align}
|
|
Apabila sistem observable, rank dari matriks Observablity $P_o$ sama dengan besar orde sistem.
|
|
Menggunakan parameter robot oleh~\kutip{CORREIA20127} yang diterapkan pada per-
|
|
samaan~\eqref{eq:ss1}-\eqref{eq:ss2}, hasil pengujian controlable $rank[P_c] = 6$, maka dapat disim-
|
|
pulkan sistem robot controlable. Hasil pengujian observable $rank[P o] = 6$, maka
|
|
sistem robot juga observable. Karena pengukuran pada setiap \textit{state} dapat dilakukan,
|
|
maka \textit{observer} tidak dibutuhkan dalam desain kendali robot.
|
|
|
|
\subsubsection{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.
|
|
Apabila sebuah sistem \textit{state space}
|
|
\begin{align*}
|
|
\dot{x} & = Ax + Bu \\
|
|
u & = -K_sx
|
|
\end{align*}
|
|
maka indeks kinerja
|
|
\begin{align}
|
|
J & = \int_0^{\infty} (x^T Q x + u^TRu ) dt
|
|
\end{align}
|
|
dimana $Q$ adalah matriks diagonal $n \times n$, $R$ adalah matriks diagonal $m \times m$ dan keduanya adalah matriks pembobot terhadap state sistem dan input.
|
|
Ketika indeks terminimalisasi, maka
|
|
\begin{align}
|
|
K_s = R^{-1}B^TP
|
|
\end{align}
|
|
dengan matriks P $n \times n$ ditentukan dari solusi persamaan \textit{Riccati}.
|
|
\begin{align}
|
|
A^TP+PA-PBR^{-1}B^TP+Q=0
|
|
\end{align}
|
|
% here is it KST from octave
|
|
% 0.00000 -21.08185 3.33333 0.00000 -3.74993 0.99738
|
|
% 18.25742 10.54093 3.33333 3.25168 1.87496 0.99738
|
|
% -18.25742 10.54093 3.33333 -3.25168 1.87496 0.99738
|
|
Kalkulasi konstanta $K_s$ akan dikalkulasi menggunakan persamaan-\eqref{eq:ssx}~\eqref{eq:ssthe}.
|
|
Sehingga konstanta $K_s$ akan terbagi dalam sub matriks $K_{sx}, K_{sy},$ dan $K_{s\theta}$.
|
|
Berikut adalah hasil kalkulasi.
|
|
\begin{align*}
|
|
K_{s}^{x} & = \begin{bmatrix}
|
|
0.00000 & 0.00000 \\
|
|
18.25742 & 3.25168 \\
|
|
-18.25742 & -3.25168 \\
|
|
\end{bmatrix} = \begin{bmatrix} K_{s}^{x1} & K_{s}^{x2} \end{bmatrix} \\
|
|
K_{s}^{y} & = \begin{bmatrix}
|
|
-21.08185 & -3.74993 \\
|
|
10.54093 & 1.87496 \\
|
|
10.54093 & 1.87496 \\
|
|
\end{bmatrix} = \begin{bmatrix} K_{s}^{y1} & K_{s}^{y2} \end{bmatrix} \\
|
|
K_{s}^{\theta} & = \begin{bmatrix}
|
|
3.33333 & 0.99738 \\
|
|
3.33333 & 0.99738 \\
|
|
3.33333 & 0.99738 \\
|
|
\end{bmatrix} = \begin{bmatrix} K_{s}^{\theta 1} & K_{s}^{\theta 2} \end{bmatrix}
|
|
\end{align*}
|
|
Apabila diintegrasi terhadap persamaan~\eqref{eq:ss1} terhadap diagram~\ref{fig:state-feedback}
|
|
\begin{align}
|
|
K_s = \begin{bmatrix}
|
|
K_{s}^{x1} & K_{s}^{y1} & K_{s}^{\theta 1} &
|
|
K_{s}^{x2} & K_{s}^{y2} & K_{s}^{\theta 2}
|
|
\end{bmatrix}
|
|
\end{align}
|
|
|
|
Setelah mendapatkan konstanta $K_s$, sistem sudah dalam keadaan stabil.
|
|
Akan tetapi sistem tidak mencapai set poin yang diinginkan.
|
|
Maka permasalahan tersebut dapat diselesaikan dengan \textit{input refrence}.
|
|
Dimana refrence tersebut akan dikalikan dengan konstanta $N$.
|
|
Berikut adalah persamaan \textit{input refrence} sebagai penambah dari \textit{state feedback}.
|
|
\begin{align}
|
|
u(t) = -Kx(t)+Nr
|
|
\end{align}
|
|
Sehingga persamaan \textit{state space} menjadi berikut.
|
|
\begin{align}
|
|
\dot{x} & = (A-BK_s)x + BNr \\
|
|
y & = Cx
|
|
\end{align}
|
|
Untuk mendapatkan nilai $N$ maka dapat diasumsikan bahwa sistem dalam keadaan \textit{steady state}, yaitu $\dot{x} = 0$, sehingga persamaan state space menjadi berikut.
|
|
\begin{align}
|
|
x & = -(A-BK_s)^{-1}BNr
|
|
\end{align}
|
|
Dalam keadaan \textit{steady state}, harapannya adalah nilai refrence sama dengan nilai keluaran, $y=r$.
|
|
Sehingga dapat diperoleh persamaan $N$.
|
|
\begin{align}
|
|
N & = -[C(A-BK_s)^{-1}B]^{-1}
|
|
\end{align}
|
|
Berikut adalah hasil kalkulasi dari rumus $N$ menggunakan matriks pada persamaan~\eqref{eq:ssx},\eqref{eq:ssy}, dan \eqref{eq:ssthe}.
|
|
|
|
% 0.00000 -21.08185 3.33333 0.00000 0.00000 0.00000
|
|
% 18.25742 10.54093 3.33333 0.00000 0.00000 0.00000
|
|
% -18.25742 10.54093 3.33333 0.00000 0.00000 0.00000
|
|
\begin{align*}
|
|
N^x & = \begin{bmatrix}
|
|
0.00000 & 0.00000 \\
|
|
18.25742 & 0.00000 \\
|
|
-18.25742 & 0.00000
|
|
\end{bmatrix} = \begin{bmatrix}N^{x1} & N^{x2}\end{bmatrix}\\
|
|
N^y & = \begin{bmatrix}
|
|
-21.08185& 0.00000 \\
|
|
10.54093 & 0.00000 \\
|
|
10.54093 & 0.00000
|
|
\end{bmatrix} = \begin{bmatrix}N^{y1} & N^{y2}\end{bmatrix}\\
|
|
N^\theta & = \begin{bmatrix}
|
|
3.33333 & 0.00000 \\
|
|
3.33333 & 0.00000 \\
|
|
3.33333 & 0.00000
|
|
\end{bmatrix} = \begin{bmatrix}N^{\theta 1} & N^{\theta 2}\end{bmatrix}\\
|
|
\end{align*}
|
|
Apabila diintegrasi terhadap persamaan~\eqref{eq:ss1} terhadap diagram~\ref{fig:state-feedback}
|
|
\begin{align}
|
|
N = \begin{bmatrix}
|
|
N^{x1} & N^{y1} & N^{\theta 1} &
|
|
N^{x2} & N^{y2} & N^{\theta 2}
|
|
\end{bmatrix}
|
|
\end{align}
|
|
|
|
\begin{figure}
|
|
\begin{center}
|
|
\begin{subfigure}[t]{.3\linewidth}
|
|
\dataGraph{t}{x}{t}{x}{BAB4/data_response.csv}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.3\linewidth}
|
|
\dataGraph{t}{y}{t}{y}{BAB4/data_response.csv}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.3\linewidth}
|
|
\dataGraph{t}{theta}{t}{$\theta$}{BAB4/data_response.csv}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.3\linewidth}
|
|
\dataGraph{t}{dx}{t}{$\dot{x}$}{BAB4/data_response.csv}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.3\linewidth}
|
|
\dataGraph{t}{dy}{t}{$\dot{y}$}{BAB4/data_response.csv}
|
|
\end{subfigure}
|
|
\begin{subfigure}[t]{.3\linewidth}
|
|
\dataGraph{t}{dtheta}{t}{$\dot{\theta}$}{BAB4/data_response.csv}
|
|
\end{subfigure}
|
|
\captionsetup{singlelinecheck=off}
|
|
\caption[.]{\centering Grafik state terhadap t dengan state refrensi $ r = \begin{bmatrix}6 & -3 & -90 &0 &0 &0\end{bmatrix} $ }
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
\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.
|
|
|
|
\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}
|
|
}
|
|
\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}
|