Anda di halaman 1dari 27

UJIAN AKHIR SEMESTER

ARTIFICAL INTELIGENCE

IMPLEMENTASI FUZZY LOGIC DENGAN MELAKUKAN KONTROL


KECEPATAN PADA ROBOT LINE FOLLOWER

Disusun Oleh :

Nada Syadza Azizah (I0718025)

PROGRAM STUDI TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS SEBELAS MARET

2020
Kontrol Kecepatan Pada Line Follower Robot

Nama : Nada Syadza Azizah


ID : I0718025
Email : nadasyadza.na@gmail.com
Paper Referensi : Agusma Wajiansyah., Arief Bramanto W.P., Supriadi.,
Syarifah Nur. (2018). Implementasi Fuzzy Logic Pada
Robot Line Follower, Politeknik Negeri Samarinda.

A. Pendahuluan
1. Latar Belakang
Perkembangan robotika terus mengalami kemajuan yang sangat
pesat. Hal ini seiring dengan berkembangnnya teknologi embedded
system. Selain itu peran serta negara dalam menyediakan wadah untuk
menunjukan kreatifitas juga merupakan factor penentu dari kemajuan
tersebut. Termasuk Indonesia dalam hal ini terlihat dengan
diselenggarakannya Kontes Robot Indonesia. Robot Line Follower
umumnya dijadikan ajang kompetisi lokal bagi institusi pendidikan untuk
menyaring mahasiswa yang akan diikutkan dalam Kontes Robot
Indonesia. Line Follower Robot (LFR) adalah suatu jenis robot yang
memiliki sensor untuk mendeteksi suatu garis dengan pola tertentu
kemudian bergerak mengikuti garis tersebut. LFR kerap dijadikan ajang
kompetisi untuk para pelajar atau mahasiswa yang baru pertama kali
mempelajari bidang robotika. Berbagai metode dapat digunakan untuk
menggendalikan LFR, dari metode yang sederhana yaitu if-then-rule,
lookup-table. Metode PID juga banyak diterapkan pada LFR salah
satunya adalah oleh Amir F (Amir, F.,F, 2014). Selain sebagai ajang
kompetisi LFR juga dapat dimanfaatkan diberbagai macam bidang
seperti yang dilakukan oleh Deepak P (Punetha, D., Kumar, N., Mehta,
V., 2013) Kendali cerdas pada robot memiliki tujuan agar robot dapat
berpikir atau bertindak layaknya seperti manusia atau binatang. Berbagai
metode dapat digunakan untuk menghasilkan kendali cerdas pada robot,
salah satunya adalah Fuzzy Logic (FL). Penggunaan FL sebagai kendali
juga dapat diterapkan pada applikasi selain robot, seperti pada penelitian
(Edwar,2009) (Andry & Bambang,2008).
Sedangkan pada penelitian (Supriadi& Wajiansyah, 2014) FL
diterapkan pada perangkat embedded-sistem. Kendali cerdas berbasis FL
pada sistem kendali dikenal juga dengan sebutan Fuzzy Logic Controller
(FLC), dengan menggunakan metode ini proses pada sistem kendali
dapat dibangun lebih mudah dan fleksibel untuk menangani sistem-
sistem yang rumit tanpa memerlukan model matematis. Pada penelitian
ini akan diimplementasikan konsep fuzzy logic sebagai kecerdasan pada
LFR. Kendali cerdas berbasis fuzzy logic ini akan mengatur pergerakan
robot agar sesuai dengan referensi yang ditetapkan berdasarkan
pengetahuan yang telah ditanamkan pada LFR. Selain itu pada penelitian
ini diasumsikan untuk membaca garis digunakan sensor garis berbasis
LED Bright dan Photo-diode yang disusun secara horizontal dengan
jumlah 6 buah. Sebagai pengerak robot digunakan robot beroda dengan
konfigurasi differential-drive ditambah satu roda bebas berupa ball-
caster. Masing – masing roda digerakan oleh motor DC, yang memiliki
pengatur kecepatan putar berbasis Pulse Width Modulation.
Pada penelitian sebelumnya yang juga menggunakan sistem
kendali logika fuzzy, keduanya masih terbatas pada lebar jalur yang
‘tetap’. Hal tersebut menjadi celah menarik dan potensial untuk
dikembangkan, robot line follower yang dapat menyesuaikan
kecepatannya sesuai dengan kondisi lebar jalurnya. Dengan
menganalogikan bahwa robot line follower sebagai sebuah mobil dan
jalurnya adalah sebuah jalan raya, maka menjadi logis bila pada jalan
raya yang lebar laju mobil akan lebih cepat dibanding pada jalan yang
sempit. Pemikiran seperti itulah yang menjadi dasar penelitian ini.
2. Tujuan
Tujuan dari penelitian ini adalah untuk mengetahui implementasi
logika fuzzy untuk memperkirakan kecepatan laju robot line follower
pada lintasan dan menghitung nilai kecepatan berdasarkan lebar jalur.
B. Metode
Jenis penelitian ini merupakan penelitian eksperimen yang digunakan
untuk mencari pengaruh perlakuan output terhadap variabel input. Model ini
mengambil beberapa proses dasar seperti studi pustaka, proses prakiraan, data
hasil penelitian, dan analisis data penelitian. Berikut adalah tahapan model
penelitian eksperimen.

Mulai

Studi Literature

Membuat variabel input


(posisi robot, lebar jalur)

Mengambil data output


dari Matlab

Analisis data output

Selesai

Gambar 1.1 Metodologi Penelitian


1. Perancnagan Perangkat Keras
Gambar 1.2 Blok Diagram Robot

Blok diagram robot terdiri dari tiga bagian utama yakni sensor
sebagai sistem input, yang berfungsi untuk mendeteksi jalur dan
mengetahui posisi robot line follower terhadap jalur tersebut. Sensor
yang digunakan adalah sensor garis terdiri dari pasangan LED (Light-
Emitting Diode) superbright yang akan memancarkan berkas sinar, dan
photo-diode sebagai penerima pantulan sinar LED superbright diatas
permukaan yang berwarna putih atau hitam. Warna putih cenderung
memantulkan sinar, sedangkan warna hitam menyerap sinar yang datang.
Besarnya intensitas cahaya yang dipantulkan kembali ke photo-diode
akibat permukaan putih maupun hitam, akan menghasilkan tegangan
yang berbeda. Perbedaan tegangan saat berada diatas permukaan putih
dan hitam itulah, yang digunakan untuk membedakan jalur hitam dan
permukaan putih.
Bagian kedua adalah bagian procesessor microcontroller yang
berfungsi sebagai ‘otak’ pengambil keputusan output apa yang harus
dilakukan berdasarkan input dari sensor. Terakhir adalah actuator bagian
output yang melakukan hasil komputasi processor yang berupa dua buah
motor DC di sisi kiri dan kanan robot line follower. Kecepatan motor DC
dikendalikan oleh microcontroller sesuai kondisi jalur yang dideteksi
sensor garis.
2. Logika Fuzzy
Logika fuzzy dikemukakan oleh Dr. Lofti Zadeh pada tahun 1965,
yang merupakan fungsi matematika untuk menangani ketidakpastian.
Dengan logika fuzzy, proses komputasi dilakukan dengan pendekatan
bahasa alami. Teori fuzzy memberikan mekanisme untuk
merepresentasikan bahasa alami semisal ‘banyak’, ‘sedikit’, ‘sering’,
‘jarang’. Secara umum, logika fuzzy memungkinkan kemampuan
penalaran seperti manusia. Sebaliknya, teori tradisional himpunan biner
hanya mendeskripsikan event yang bersifat mutlak, yakni bersifat ‘true’
atau ‘false’ saja. Berikut persamaan 1 yang merepresentasikan notasi
derajat keanggotaan himpunan fuzzy yang dinyatakan dalam µA.
µ A : x [ 0,1 ] (1)

Fungsi keanggotaan µA(x) akan bernilai ‘true’ (1) jika x merupakan


anggota penuh dari himpunan A, dan akan bernilai ‘false’ (0) jika x bukan
anggota himpunan A. Sementara bila derajat keanggotaan dangkan jika
derajat keanggotaan berada dalam selang (0,1), misalnya µA(x) = µ,
menyatakan x sebagian anggota himpunan A dengan derajat keanggotaan
sebesar µ.
Terdapat tiga representasi yang digunakan dalam analisis himpunan
fuzzy, yakni representasi secara linier, segitiga, dan trapesium. Tampak
seperti pada Gambar 2, 3, 4, dan 5. Dalam representasi linier, memetakan
input crisp ke derajat keanggotaannya dapat digambarkan sebagai suatu
garis lurus. Bentuk ini paling sederhana dan merupakan pilihan yang baik
untuk mendekati suatu konsep yang kurang jelas dalam tugas akhir ini.
Terdapat dua keadaan himpunan fuzzy yang linier.

Gambar 1.3 Representasi himpunan fuzzy naik

0, x≤ A

{
µ ( x )= ( x− A)
( B− A)
, A≤ x≤B
(2)
Gambar 1.4 Representasi himpunan fuzzy turun

( B−x )

{
µ ( x )= ( B− A) , A ≤ x< B (3)
0, x≥B

Gambar 1.5 Representasi himpunan fuzzy segitiga

0 , A≤ x∨x ≥B

{
(x− A)
, A <x≤ B
µ ( x )= (B− A) (4)
(C−x )
, C ≤ x< D
( D−C)
1, B ≤ x ≤C

Gambar 1.6 Representasi himpunan fuzzy trapezium


0 , A≤ x∨x ≥B

{
(x− A)
, A <x≤ B
µ ( x )= (B− A)
(5
(C−x )
, C ≤ x< D
( D−C)
1, B ≤ x ≤C

3. Bentuk Lintasan

Gambar 1.7 Jalur Lintasan


Jalur pada gambar diatas dengan variasi lebar mulai dari 14 cm
sepanjang 100 cm ditunjukkan dengan garis warna hitam, lebar 8 cm
sepanjang 180 cm ditunjukkan dengan garis warna merah, lebar 6 cm
sepanjang 120 cm ditunjukkan dengan garis warna biru, dan lebar 2 cm
sepanjang 110 yang ditunjukkan dengan warna hijau.
4. Perancangan Aturan Fuzzy

Tabel 1.1 Aturan Fuzzy


Lebar Jalur
Rule Base
Sempit Sedang Lebar
ML: sangat
ML : cepat
pelan ML : pelan
MR : sangat
Kiri MR : pelan MR : cepat
cepat
OK : sangat OK : rendah
OK : sedang
rendah
ML : sangat
ML : pelan ML : cepat cepat
Letak Tenga
MR : pelan MR : cepat MR : sangat
Robot h
OK : rendah OK : sedang cepat
OK : tinggi
ML : pelan
ML : sangat
MR : sangat ML : cepat
cepat
Kanan pelan MR : pelan
MR : cepat
OK : sangat OK : rendah
OK : sedang
rendah

Keterangan :
ML : Kecepatan motor kiri
MR : Kecepatan motor kanan
OK : Optimalisasi kecepatan
Gambar 1.8 Fuzzy Logic Designer Percobaan Pertama

Gambar 1.9 Fuzzy Logic DesignerPercobaan Kedua


Gambar 2.1 Membership Function Toolbox Fuzzy Logic dari
Input dan Output pada Percobaan Pertama
Gambar 2.2 Membership Function Toolbox Fuzzy Logic dari
Input dan Output pada Percobaan Kedua
Gambar 2.3 Pembuatan Aturan di Toolbox Matlab Percobaan Pertama

Gambar 2.4 Perubahan Rules dengan Bertambahnya Input Sesuai Jalur


pada Percobaan Kedua
C. Hasil dan Pembahasan
Hasil dari pencarian kecepatan menggunakan logika neuro fuzzy
pada matlab yang dilakukan dengan menggunakan data input pada paper.
Proses yang dilakukan adalah input data posisi robot dan lebar jalur dan
target output sesuai dengan aturan yang telah dibuat sehingga didapatkan
grafik kecepatan robot.
Gambar 2.5 Grafik Input dan Output Percobaan Pertama

Gambar 2.6 Grafik Input dan Output dengan Penambahan 17 Input pada
Percobaan Kedua
Gambar 2.2 Tampilan pada Guide Matlab

D. Kesimpulan

Setelah di run, guide akan muncul dan dapat diisi sesuai keinginan kita,
namun juga harus memperhatikan batas tiap parameter yang diukur. Output yang
dihasilkan akan sesuai dengan rule yang telah dibuat diawal, dimana terdapat 9
rules yang menggambarkan output. Salah satu percobaan sudah diuji seperti
gambar diatas, yaitu denga memasukkan, posisi motor kiri = 0.5, posisi motor
kanan = 1, dan lebar jalur = 9. Maka, didapatkan hasil kecepatan pada motor kiri =
cepat, kecepatan pada motor kanan = cepat, optimasi kecepatan = cepat. Hal ini
karena sesuai dengan rule yang ke 5.
Namun, percobaan ini memiliki sedikit kendala pada penyampaian output,
hal ini karena ketidaksediaan library pada MatLab dan diperlukannya beberapa
fungsi tertentu utuk dapat memberikan output secara random yang tidak sama
seperti di rules.
Jadi, dalam percobaan ini saya telah mengembangkan dari percobaan
sebelumya. Dimana pada program ini sudah dapat di run dan muncul GUI hanya
saja output yang dihasilkan masih belum dapat keluar secara random.
Sehingga masih diperlukan penambahan rules agar lebih kompleks dan
detail serta menambahkan fungsi logika if-else pada coding untuk penampilan
output pada guide.
Setelah melakukan percobaan kedua dengan melakukan penambahan input
dengan setiap jalur pada lintasan robot line follower sebanyak 17 input dan
penambahan rules menjadi 12. Dengan aturan yang dibuat sendiri, maka
didapatkan hasil seperti gambar diatas. Hasil yang didapatkan lebih akurat dan pas
daripada percobaan sebelumnya yang hanya menggunakan 3 input. Dapat dilihat
dari rule viewer, dengan memasukkan nilai random di setiap jalur dan posisi
motor, maka output yang dihasilkan nya pun lebih akurat dan bervariasi. Namun,
GUI untuk penambahan 17 input tersebut masih belum dapat ditambahkan, karena
diperlukan fungsi if-else yang cukup sulit untuk diaplikasikan pada matlab dan
kemampuan peneliti dalam hal coding masih menjadi kendala dalam pembuatan
GUI pada percobaan kedua.

Referensi :

[1] Agusma Wajiansyah., Arief Bramanto W.P., Supriadi., Syarifah Nur.


(2018). Implementasi Fuzzy Logic Pada Robot Line Follower, Politeknik
Negeri Samarinda.
[2] Pratama, G. N. P., Dharmawan, A., & Atmaji, C. (2014). Implementasi
Kendali Logika Fuzzy pada Robot Line Follower, Universitas Gajah
Mada.
[3] Anggoro, M, dkk. (2015). “Rancang Bangun Sistem Kontrol Robot Line
Follower Menggunakan Logika Fuzzy”, Jurusan Teknik Informatika,
Universitas Diponegoro.
Gambar/Screenshot Halaman pertama paper yg dijadikan rujukan
LAMPIRAN

MATLAB CODE :
function varargout = linefolo(varargin)
% LINEFOLO MATLAB code for linefolo.fig
% LINEFOLO, by itself, creates a new LINEFOLO or
raises the existing
% singleton*.
%
% H = LINEFOLO returns the handle to a new
LINEFOLO or the handle to
% the existing singleton*.
%
%
LINEFOLO('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in LINEFOLO.M with the
given input arguments.
%
% LINEFOLO('Property','Value',...) creates a new
LINEFOLO or raises the
% existing singleton*. Starting from the left,
property value pairs are
% applied to the GUI before linefolo_OpeningFcn
gets called. An
% unrecognized property name or invalid value
makes property application
% stop. All inputs are passed to
linefolo_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose
"GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help


linefolo

% Last Modified by GUIDE v2.5 10-Jun-2020 07:50:00

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn',
@linefolo_OpeningFcn, ...
'gui_OutputFcn',
@linefolo_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State,
varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before linefolo is made visible.


function linefolo_OpeningFcn(hObject, eventdata,
handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
% varargin command line arguments to linefolo (see
VARARGIN)

% Choose default command line output for linefolo


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes linefolo wait for user response (see


UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the


command line.
function varargout = linefolo_OutputFcn(hObject,
eventdata, handles)
% varargout cell array for returning output args (see
VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
% Get default command line output from handles
structure
varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata,
handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
a = readfis('linefol');
out = evalfis(handles.posisikiri,a);
out= evalfis(handles.posisikanan,a);
out = evalfis(handles.lebarjalur,a);
set = handles.edit1, 'string' , 'Pelan';
set = handles.edit2, 'string' , 'Cepat';
set = handles.edit3, 'string' , 'Sangat Cepat';

function edit4_Callback(hObject, eventdata, handles)


% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)

% Hints: get(hObject,'String') returns contents of


edit4 as text
% str2double(get(hObject,'String')) returns
contents of edit4 as a double

% --- Executes during object creation, after setting


all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles empty - handles not created until after
all CreateFcns called

% Hint: edit controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit5_Callback(hObject, eventdata, handles)


% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)

% Hints: get(hObject,'String') returns contents of


edit5 as text
% str2double(get(hObject,'String')) returns
contents of edit5 as a double

% --- Executes during object creation, after setting


all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles empty - handles not created until after
all CreateFcns called

% Hint: edit controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit6_Callback(hObject, eventdata, handles)


% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)

% Hints: get(hObject,'String') returns contents of


edit6 as text
% str2double(get(hObject,'String')) returns
contents of edit6 as a double

% --- Executes during object creation, after setting


all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles empty - handles not created until after
all CreateFcns called

% Hint: edit controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit1_Callback(hObject, eventdata, handles)


% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
posisikiri=str2double(get(hObject,'string'));
handles.posisikiri=posisikiri;
guidata(hObject,handles);
% Hints: get(hObject,'String') returns contents of
edit1 as text
% str2double(get(hObject,'String')) returns
contents of edit1 as a double

% --- Executes during object creation, after setting


all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles empty - handles not created until after
all CreateFcns called

% Hint: edit controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)


% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
posisikanan=str2double(get(hObject,'string'));
handles.posisikanan=posisikanan;
guidata(hObject,handles);

% Hints: get(hObject,'String') returns contents of


edit2 as text
% str2double(get(hObject,'String')) returns
contents of edit2 as a double

% --- Executes during object creation, after setting


all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles empty - handles not created until after
all CreateFcns called

% Hint: edit controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit3_Callback(hObject, eventdata, handles)


% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
lebarjalur=str2double(get(hObject,'string'));
handles.lebarjalur=lebarjalur;
guidata(hObject,handles);

% Hints: get(hObject,'String') returns contents of


edit3 as text
% str2double(get(hObject,'String')) returns
contents of edit3 as a double

% --- Executes during object creation, after setting


all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles empty - handles not created until after
all CreateFcns called

% Hint: edit controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

Anda mungkin juga menyukai