Oleh
FAKULTAS TEKNIK
UNIVERSITAS MALIKUSSALEH
LHOKSEUMAWE
2020
SURAT PERNYATAAN ORISINALITAS
Dengan ini menyatakan dengan sesungguhnya bahwa di dalam Tugas Akhir ini
adalah benar karya sendiri bukan merupakan jiplakan dari institusi lain.
Apabila di kemudian hari ditemukan ketidak aslian di dalam tugas akhir ini, maka
saya bersedia diberikan sanksi akademik sesuai yang berlaku dalam peraturan
Universitas Malikussaleh.
i
LEMBAR PENGESAHAN PEMBIMBING
Menyetujui:
Pembimbing Utama, Pembimbing Pendamping,
ii
LEMBAR PENGESAHAN FAKULTAS
iii
ABSTRAK
Beberapa tahun belakangan ini, penggunaan drone semakin digemari di Indonesia
terutama untuk keperluan peliputan berita seperti video bencana, kemacetan lalu
lintas, dan selebrasi acara tertentu. Penelitian ini bertujuan merancang dan
mengimplementasikan sistem kontrol pada drone jenis quadcopter yaitu drone
yang memiliki empat baling-baling, dengan berbasis pada pengolahan citra warna.
Quadcopter yang digunakan adalah Parrot AR Drone 2.0 yang dilengkapi dengan
sensor dan kamera sehingga dapat memantau suatu obyek dari jarak jauh. Sistem
kontrol quadcopter ini dibangun menggunakan program komputer berbasis bahasa
Phyton yang memberikan instruksi kepada quadcopter untuk mendeteksi obyek
tertentu berdasarkan pengolahan citra warna. Dengan pengolahan citra ini maka
quadcopter memiliki banyak kemampuan untuk melakukan misi seperti take off,
landing, dan tracking object. Quadcopter mengolah warna citra yang
diperolehnya dari sensor vision (webcam) dan dijadikannya sebagai obyek
tracking. Pengolahan citra berupa color filtering yang dilakukan pada ruang
warna model hue saturation value (HSV) dan digunakan oleh quadcopter sebagai
target untuk diikutinya sesuai instruksi dari program komputer. Berdasarkan hasil
pengujian, diperoleh bahwa quadcopter mampu mengenali dan mengikuti dengan
baik citra yang dijadikan obyek target serta mampu bergerak kembali menuju
obyek target ketika quadcopter dipindahkan secara manual. Adapun waktu
diperlukan untuk kembali ke obyek target adalah 10 detik meskipun quadcopter
berada pada jarak yang berbeda-beda yaitu 40 cm, 60 cm, 80 cm, dan 100 cm.
Kata Kunci: Sistem kontrol, quadcopter, Parrot AR Drone 2.0, pengolahan citra
warna, hue saturation value (HSV), tracking object.
iv
KATA PENGANTAR
Puji syukur kepada Allah SWT berkat karunia, rahmat, dan hidayah-Nya
yang tercurah limpah sehingga penulis dapat menyelesaikan Tugas Akhir yang
berjudul “Perancangan Dan Implementasi Sistem Kontrol Quadcopter
Menggunakan Pengolahan Citra Warna”.
Tugas akhir ini dibuat sebagai syarat untuk menyelesaikan pendidikan
sarjana (S-1) di Teknik Elektro Fakultas Teknik Universitas Malikussaleh. Penulis
berharap kedepannya tugas akhir ini dapat menjadi inspirasi bagi mahasiswa
dalam mengembangkan penelitian ini.
Dalam penyusunan tugas akhir ini banyak kendala yang dihadapi penulis
dalam menyusunnya, namun berkat bantuan berbagai pihak, tugas akhir ini dapat
diselesaikan oleh penulis. Pada kesempatan ini penulis ingin mengucapkan terima
kasih kepada:
1. Ayah dan Ibu yang telah memberikan motivasi dan semangat kepada penulis.
2. Bapak Dr. Herman Fithra, S.T., M.T. selaku Rektor Universitas Malikussaleh.
3. Bapak Dr. Muhammad, S.T., M.Sc. selaku Dekan Fakultas Teknik.
4. Bapak Andik Bintoro, S.T., M.Eng. selaku Ketua Jurusan Teknik Elektro
Universitas Malikussaleh sekaligus sebagai Dosen Pembimbing II yang telah
membimbing saya dalam penelitian tugas akhir ini.
5. Bapak Arnawan Hasibuan, S.T., M.T. selaku Dosen Pembimbing Akademik
yang telah membimbing saya dalam hal akademik.
6. Bapak Dr. Muhammad Daud, S.T., M.T. selaku Dosen Pembimbing I yang
telah membimbing saya dalam penelitian tugas akhir ini.
7. Rekan-rekan seperjuangan khususnya angkatan 2016.
Penulis menyadari bahwa buku tugas akhir ini jauh dari kesempurnaan
karena keterbatasan pengetahuan, untuk itu kritik dan saran sangat di harapkan
agar pada masa yang akan datang penulis dapat melakukan perbaikan untuk
penulisan ilmiah lainnya.
v
Akhirnya kepada Allah jualah kita menyerahkan segalanya semoga
penulisan ini dapat manfaat dan terima kasih.
Penulis,
vi
DAFTAR ISI
vii
BAB III METODE PENELITIAN.....................................................................21
3.1. Tahap-tahap Penelitian................................................................................21
3.2. Desain Sistem..............................................................................................23
3.3. Deteksi Warna.............................................................................................23
3.4. Komunikasi Sistem.....................................................................................26
3.5. Pergrerakan Drone......................................................................................27
BAB IV HASIL DAN PEMBAHASAN............................................................29
4.1. Realisasi Sistem...........................................................................................29
4.2. Implementasi Program................................................................................30
4.2.1 Menghubungkan Drone dengan API Client.........................................30
4.2.2. Mendekteksi dan Melacak Objek.........................................................30
4.3. Pengujian ....................................................................................................31
4.3.1. Pengujian Drone pada saat Target Diam..............................................33
4.3.2. Pengujian Drone pada saat Target Dipindahkan..................................34
4.3.3. Pengujian Drone pada saat Dua Target Berbeda Warna......................35
4.3.4. Program Sistem Kontrol Drone menggunakan Pengolahan Citra...........
Warna ………………………………………………………………..41
BAB V KESIMPULAN DAN SARAN..............................................................50
5.1. Kesimpulan.................................................................................................50
5.2. Saran............................................................................................................50
DAFTAR PUSTAKA...........................................................................................51
LAMPIRAN..........................................................................................................53
viii
DAFTAR GAMBAR
Gambar 2.1. Parrot AR. Drone 2.0..........................................................................5
Gambar 2.9 Tristimulus Warna dan Diagram Krominan Untuk Sistem Penerima
Utama NTSC...................................................................................13
ix
Gambar 3.6. Pergerakan Parrot AR. Drone 2.0.....................................................27
Gambar 4.4. Grafik Pengujian Sistem Kontrol pada saat Target Diam.................33
Gambar 4.5. Grafik Pengujian Sistem Kontrol pada saat Target Dipindahkan.....35
Gambar 4.6. a. Target Warna yang telah ditentukan b. Target Warna yang tidak
ditentukan ............................................................................................36
x
DAFTAR TABEL
Tabel 2.1. Gabungan Nilai Warna Dasar dan Krominan untuk Warna Pokok pada
Sistem Penerima Utama NTSC............................................................13
Tabel 4.3. Pengujian Drone dengan Warna Target yang Berbeda ........................36
xi
BAB I
PENDAHULUAN
Unmanned Aerial Vehicle (UAV) atau pesawat tanpa awak atau drone
adalah sebuah mesin yang mampu terbang dan dikendalikan oleh pilot dari jarak
jauh. Beberapa tahun belakangan, UAV mulai digemari di Indonesia terutama
untuk keperluan peliputan berita seperti peliputan video bencana, kemacetan lalu
lintas ataupun selebrasi acara tertentu. Industri hiburan dan sipil juga
menggunakan UAV sebagai alat penangkap foto maupun video yang dirasa lebih
baik hasilnya jika diambil dari udara. Parrot AR Drone 2.0 merupakan salah satu
UAV jenis quadrotor. Parrot AR. Drone 2.0 merupakan salah satu contoh
pesawat tanpa awak yang berjenis multirotor dan biasa digunakan untuk riset [1].
1
2
quadcopter. Penelitian ini difokuskan kepada cara pengiriman data citra dari
quadcopter ke komputer dan bagaimana mengolah data tersebut menjadi sebuah
pendeteksi warna. Agar kamera quadcopter bisa digunakan untuk mengenali
warna maka akan digunakan metode color filtering HSV. Pemilihan HSV ini
karena menurut [3-4] metode ini memiliki keuntungan yaitu sederhana dalam
pemrograman dan prosesnya cepat sehingga cocok untuk aplikasi real time. Data
citra yang didapatkan dari kamera quadcopter akan dikirim pada komputer untuk
dilakukan pengolahan citra, data yang diambil merupakan data RGB yang akan
dikonveter pada ruang warna HSV yang selanjutkan akan dilakukan pemisahan
berdasarkan range warna yang sudah ditentukan.
1.3. Tujuan
Tujuan dari pembuatan penelitian tugas akhir ini adalah:
1. Untuk mengetahui koordinat pada Quadcopter yang akan di control
dengan citra warna.
2. Untuk mengetahui respon Quadcopter terhadap Citra Warna dimana
akurasi pada Quadcopter.
3
1.4. Manfaat
Adapun manfaat yang dapat diperoleh dari tugas akhir ini adalah:
1. Program ini menumbuhkan kreativitas dan inovasi bagi pelaksana dalam
mengembangkan teknologi di Era sekarang yang mampu memberikan
manfaaat bagi mahasiswa dikalangan akademik.
2. Sebagai referensi untuk produksi pesawat tanpa awak menggunakan
sistem kontrol pengolahan citra warna.
3. Mengimplementasi Quadcopter untuk sarana kebutuhan media
pembelajaran baik di dalam maupun luar akademik.
BAB I PENDAHULUAN
Bab ini memuat tentang latar belakang, rumusan masalah, batasan
masalah, tujuan penelitian, manfaat penelitian, metoda penelitian,
dan sistematika penulisan.
BAB V PENUTUP
Dalam Bab ini berisikan tentang ringkasan dan kesimpulan dari
pada hasil analisis dan pembahasan beserta saran-saran.
BAB II
DASAR TEORI
2.1. Quadcopter
5
6
Suatu citra dapat didefinisikan sebagai fungsi f(x,y) berukuran M baris dan
N kolom, dengan x dan y adalah koordinat spasial, dan amplitudo f di titik
koordinat (x,y) dinamakan intensitas atau tingkat keabuan dari citra pada titik
tersebut. Apabila nilai x,y dan nilai amplitudo f secara keseluruhan berhingga
(finite) dan bernilai distrit maka dapat dikatakan bahwa citra tersebut adalah citra
digital. Gambar 2.2 menunjukkan posisi citra koordinat citra digital [7].
Nilai pada suatu irisan antara baris dan kolom (pada posisi x,y) disebut
dengan picture elements, image elements, pels, dan pixels. Istilah pixels paling
7
sering digunakan pada citra digital. Gambar 2.3 menunjukkan ilustrasi digitalisasi
citra dengan M=16 baris dan N=16 kolom.
Hue merupakan warna yang dikenal manusia seperti merah dan hijau,
warna yang ditangkap oleh mata manusia berdasarkan panjang gelombang yang
dihasilkan. Saturation menyatakan level kemurnian warna atau banyaknya cahaya
putih yang tercampur dengan hue. Setiap warna murni memiliki nilai saturasi
100%. Value menyatakan intensitas pantulan dari objek yang diterima mata,
dinyatakan sebagai perubahan warna putih menuju abu-abu dan terakhir mencapai
ke warna hitam, atau yang dikenal dengan istilah aras keabuan atau grayscale.
Suatu warana dengan nilai value 100% akan tampak secerah mungkin dan
suatu warna dengan nilai value 0 akan tampak segelap mungkin. Sebagai contoh
jika hue adalah merah dan value bernilai tinggi maka warna kelihatan cerah tetapi
ketika nilai value rendah maka warna tersebut akan kelihatan gelap, dapat dilihat
pada Gambar 2.6 dibawah ini [7].
Jika ruang warna digambarkan oleh cakram dengan variasi lightness maka
hue dan saturasi (saturation) ekuivalen dengan koordinat polar (r, theta) pada
setiap titik dalam cakram. HSV adalah transformasi nonlinier dari ruang warna
RGB, dapat dilihat pada Gambar 2.7 dibawah ini [7].
Gambar 2.7. Ruang Warna HSV sebagai sebuah Roda Warna [7].
Roda warna HSV dan variasinya pada umumnya dipakai dalam aplikasi
grafis untuk memilih warna-warna dalam ruang warna HSV. Lingkaran tertular
menunjukkan saturasi (saturation) pada sumbu vertikal dan value pada sumbu
horizontal. Dengan cara ini, warna dapat dipilih dengan pertama kali menetapkan
hue pada lingkaran tertular kemudian memilih saturasi (saturation) dan value
yang diinginkan dari segitiga didalamnya, dapat dilihat pada Gambar 2.8 dibawah
ini.
G
g
R G B ....................................................................................................(2.6)
B
b
R G B ....................................................................................................(2.7)
12
0
jika V 0
S min( r , g , b)
V jika V 0
V .....................................................................(2.9)
0
S 0
60 x( g b) jika
SxV jika V r
S (b r )
60 x 2 SxV jika V g
(r g )
60 x 4 SxV jika V b
............................................................(2.10)
Tabel 2.1. Gabungan Nilai Warna Dasar dan Krominan Untuk Warna
Pokok Pada Sistem Penerima Utama NTSC [7].
CYM dengan mudah dapat diperoleh dari koordinat RGB melalui persamaan
berikut:
C 1 R ............................................................................................................(2.15)
M 1 R .........................................................................................................(2.16)
Y 1 B ............................................................................................................(2.17)
K min(C , M , Y ) .............................................................................................(2.18)
C C K .........................................................................................................(2.19)
M M K .......................................................................................................(2.20)
Y Y K .........................................................................................................(2.21)
K merupakan komponen warna keempat yang merepresentasikan warna hitam [7].
Setiap objek yang difoto dengan nilai RGB yang berbeda dan luas pixel.
Untuk mengetahui warna api dengan melihat nilai RGB api, dan luas pixel api dari
video yang dideteksi oleh webcam sebagai input data.Perbedaan warna dasar foto
yang dapat dipengaruhi oleh cahaya. Pada cahaya, warna dasar penyusunannya
yaitu merah, hijau dan biru atau lebih dikenal dengan istilah warna RGB (Red,
Green, Blue). Warna yaitu spektrum tertentu yang terdapat didalam cahaya
sempurna (berwarna putih). Identitas warna ditentukan panjang panjang
gelombang cahaya. Cahaya tampak Gambar 2.11 bagian spektrum yang
mempunyai panjang gelombang antara lebih kurang 380 nanometer (nm) dan 780
nanometer (nm) dalam udara [7].
16
2.6. Open CV
Dari kelima library yang terdapat pada OpenCv yang diaplikasikan kedalam
pendeteksi warna foto yaitu CV dan HighGui. Diagram blok (Gambar 2.14)
mengenai struktur OpenCv [9].
Berikut contoh cara mengaplikasikan open cv, dapat dilihat pada Gambar 2.15
dibawah ini:
Color filtering adalah suatu teknik pengolahan citra yang dipakai untuk
memanipulasi suatu citra berdasarkan warna spesifik. Cara kerjanya adalah
dengan membandingkan komponen warna setiap setiap pixel citra dengan warna
spesifikasi. Apabila warnanya sesuai dengan warna spesifik komponen warna
pixel tersebut dibiarkan saja. Bila warnanya tidak sesuai dengan warna spesifik
maka komponen warna pixel tersebut diubah menjadi warna background,
biasanya menjadi warna hitam. Warna yang digunakan dalam color filtering dapat
direpresentasikan dalam berbagai ruang warna. Ada beberapa ruang warna yang
dikenal, antara lain Red, green, blue (RGB), Hue, Saturation and Value (HSV),
YcbCr [8]. Berikut contoh proses pengaplikasi color filtering pada kamera, dapat
dilihat pada Gambar 2.16 dibawah ini.
20
Pada tahapan kita membuat diagram alir yang dapat memudahkan untuk
menganalisa dan mengimplementasikan sebuah sistem kontrol pada Parrot
AR.Drone dengan menggunakan pengolahan citra warna. Berikut ini dapat dilihat
pada Gambar 3.1 dibawah ini:
Mulai
Studi
Literatur
Penyusunan Program
Bekerja Sesuai
Perbaiki
Rencana?
Pengumpulan dan
Pengolahan Data Alat
Analisi
Pengambilan
Kesimpulan
Selesai
21
22
Perancangan dan
Deteksi Warna Komunikasi Sistem Pergerakan Drone
Implementasi
Dalam perancangan deteksi warna pada Parrot AR. Drone 2.0 akan
mengambil data dari kamera. Pertama akan dilakukan mengubah data pixel citra
(RGB) di konversi ke HSV, setelah itu warna terdekteksi dan data nilai X dan Y
didapat pada titik koordinat. Berikut dapat dilihat pada Gambar 3.3 dibawah ini.
24
Ukuran Frame pembacaan seperti Gambar 3.3 yaitu x=240 dan y=320,
setelah permukaan koordinat yang digunakan untuk mengambil data RGB. Nilai
RGB diambil pada koordinat x=-0.00131944444444 dan y=-0.000634920634921,
kemudian data akan disimpan pada array dan akan diconverter ke nilai HSV
dengan rumus sebagai berikut:
R
R'
255 ..............................................................................................................(3.1)
G
G'
255 ...........................................................................................................(3.2)
B
B'
255 ..............................................................................................................(3.3)
Nilai R’ didapatkan dari nilai Red pada RGB lalu dibagi dengan 255 yang
merupakan nilai maksimal dari 8 bit. Untuk nilai Green dan Blue juga akan dibagi
dengan 255.
Nilai Cmax merupakan nilai maksimal 1 nilai R’, B’, G’. Sedangkan nilai
Cmin nilai minimal R’, B dan G’. Delta dari hasil pengurangan dari nilai
maksimal dikurangi dengan nilai minimal.
0, 0
60 x G ' B ' mod 6, C max R '
H B ' R '
60 x 2, C max G
'
60 x R G 4, C max B '
' '
..................................................................(3.7)
Hue merupakan corak warna dengan jangkauan nilai 0-360 derajat. Saturation
merupakan kejenuhan warna dengan jangkauan nilai 0-100. Value merupakan
kecerahan warna dengan jangkauan nilai 0-100. Berikut diagram dapat dilihat
pada Gambar 3.4 dibawah ini:
26
Mulai
Citra Masukan
Warna Terdeteksi ?
Data X dan Y
didapat
Tampilkan / Tandai
Selesai
Mulai
Inisialisasi Koneksi
Quadcopter
ESC Landing
Selesai
mendapatkan nilai X dan Y, dan Parrot AR. Drone 2.0 bergerak sesuai titik
koodinat yang ditentukan oleh pengguna. Berikut dapat dilihat pada Gambar 3.7
di bawah ini:
Mulai
Ambil Gambar A
Color Filtering
Mendapatkan
Nilai X dan Y
Thersholding
A Selesai
Pada bab ini akan dibahas tentang pengujian berdasarkan perancangan dari
sistem yang telah dibuat. Pengujian ini dilakukan untuk mengetahui kemampuan
dari sistem dan untuk mengetahui apakah sistem sudah berjalan dengan
perencanaan, sekaligus mengetahui kelebihan dan kekurangan sistem yang di
rancang.
29
30
Pada implementasi program untuk mengontrol Parrot AR. Drone 2.0 saya
menggunakan sistem operasi Linux Ubuntu dan perpustakaan open-cv berdasarkan
Drone. Ini termasuk bagian utama kontrol manual, mendapatkan aliran data dan
video, dan mengirim perintah ke drone. Loop utama beroperasi dengan 30 Hz
karena perintah harus dikirim secara teratur (direkomendasikan 30 kali) untuk
stabilitas.
1. Ketika drone dinyalakan, koneksi Wi-Fi pada drone akan hidup dengan
sendirinya dengan ESSID default dari format dengan IP Address
192.168.1.1.
2. Karena drone sebagai server, perangkat Client meminta alamat IP Address
dari drone DHCP serve.
3. Server DHCP drone kemudian mengalokasikan prgram Client alamat IP
Address, dimana alamat IP Address adalah IP Address drone di tambah
angka secara acak antara 1 dan 4 untuk Parrot AR. Drone 2.0.
4. Komunikasi dapat dilakukan anata Client dan drone melalui port layanan
(UDP dan TCP).
Pada saat drone diterbangkan kamera drone akan melacak objek target,
dengan ketinggian drone pada target 140 cm, dapat dilihat pada Gambar 4.2
dibawah ini:
31
4.3. Pengujian
Pengujian pertama yaitu proses drone bergerak dan terget diam untuk
mencari kecepatan delay drone kembali pada target. Dalam penelitian ini, akan
diukur delay drone kembali pada target dan akan di dapatkan nilai x dan y pada
saat drone bergerak dan kembali pada target. Pengujian dilakukan 4 tahapan yaitu
pada jarak 40 cm, 60 cm, 80 cm, dan 100 cm. Adapun hasil dari pengujian ini
dapat dilihat pada Tabel 4.1 dibawah ini:
No Jarak X Y Delay
1 40 cm -0.00159722222222 0.0141798941799 02:49-03:01
2 60 cm -0.00159722222222 0.0174603174603 03:09-03:19
3 80 cm -0.00506944444444 0.0169312169312 04:08-04:18
4 100 cm 0.00222222222222 0.0155555555556 05:35-05:45
Dari tabel 4.1 dapat dilihat pengujian drone bergerak dan taget diam,
dimana dilakukan 4 kali pengujian dengan jarak yang berbeda dan delay drone
kembali ke target juga berbeda. Disini didapatkan perbedaan delay drone kembali
ke target dengan perbedaan delay 10 detik, dapat dilihat pada Gambar 4.4 berikut
ini.
0.01
0.01 0
00 0
40 cm 60 cm 80 cm 100 cm
-0.01 -0.01
-0.01
Gambar 4.4. Grafik Pengujian Sistem Kontrol Drone Pada Saat Target Diam
34
Berdasarkan hasil pengujian pada Tabel 4.1 ditunjukan pada Gambar 4.3
pada saat target diam dimana sumbu Y mengalami kenaikan pada jarak 60 cm dan
mengalami penurunan pada jarak 80 cm sampai dengan 100 cm, dimana sumbu X
pada jarak 60 cm tidak mengalami perubahan sama seperti pada jarak 40 cm dan
mengalami penurunan pada jarak 80 cm selanjutnya jarak 100 cm mengalami
kenaikan sehingga mencapai 0.00222222222222.
No
Jarak X Y Delay
.
1 40 cm 0.00708333333333 -0.00412698412698 03:00 - 03:10
2 60 cm -0.00972222222222 0.00582010582011 03:36 - 03:46
3 80 cm -0.00611111111111 0.00275132275132 04:20 - 04:30
4 100 cm 0.00923611111111 -0.000846560846561 05:20 - 05:30
Dari tabel 4.2 dapat dilihat pengujian drone bergerak dan taget diam,
dimana dilakukan 4 kali pengujian dengan jarak yang berbeda dan delay drone
kembali ke target juga berbeda. Disini didapatkan perbedaan delay drone kembali
ke target dengan perbedaan delay 10 detik, dapat dilihat pada Gambar 4.5
dibawah ini.
35
Target Dipindahkan
0.02
0.01
0
0.01
0.01
0.010
0
40 cm 60 cm
0.01 800cm 100 cm
-0.01
-0.01
-0.01
-0.01
-0.02
Gambar 4.5. Grafik Pengujian Sistem Kontrol Drone Pada Saat Target
Dipindahkan
Berdasarkan hasil pengujian tabel 4.2 ditunjukan pada gambar 4.4 dimana
sumbu X mengalami penurunan yang sangat drastis pada jarak 60 cm dan
mengalami kenaikan pada jarak 80 cm sampai jarak 100 cm. Dimana sumbu Y
mengalami penurunan tidak terlalu drastis seperti sumbu X pada jarak 60 cm dan
mengalami kenaikan pada jarak 80 cm sampai jarak 100 cm mengalami kenaikan.
Pengujian drone pada saat dua target dimuculkan yaitu proses drone
bergerak mengikuti target yang telah ditentukan tetapi pada saat target
bermunculan dengan secara bersamaan bagaimana drone memilih sebuah target
yang telah di tentukan dan tidak memilih target dengan warna berbeda, apabila
target yang muncul dengan warna yang berbeda maka drone tidak dapat
mendeteksi target. Adapun hasil dari pengujian ini di dapat dilihat pada Gambar
4.6 dibawah ini:
36
Gambar 4.6. a. target warna yang telah ditentukan b. target warna yang
tidak ditentukan
Adapun warna yang muncul pada kamera drone berbeda dengan warna
target yang dibuat pada program maka drone tidak akan terdeteksi dikarenakan
pada saat pemograman nilai warna yang telah di tentukan ialah 65, 60, 60 berupa
warna merah dan nilai 80, 255, 255 berupa warna hijau dan drone tidak dapat
mendeteksi warna selain warna yang telah ditentukan. Dapat dilihat pada Gambar
4.7 pada saat pengujian berikut ini.
Berdasarkan pada Gambar 4.7 disini pada saat pengujian drone dengan
target yang telah ditentukan maka drone akan mendeteksi warna tersebut dan
membetuk lingkaran sesuai dengan lingakaran taget yang telah ditentukan.
38
Berdasarkan pada Gambar 4.8 disini pada saat pengujian drone dengan
target yang tidak ditentukan maka drone tidak mendeteksi target dengan warna
yang berbeda, pada saat tidak muncul maka data yang muncul yaitu data yang
sebelumnya pada saat target warna yang telah ditentukan, jadi untuk data dengan
warna yang tidak ditentukan tidak akan bermunculan pada display komputer.
39
Berdasarkan pada Gambar 4.9 disini pada saat pengujian dua target warna
bermunculan maka drone akan memilih target yang telah ditentukan dalam
program, dimana pada saat pemograman sudah ditentukan target yang akan
terdeteksi oleh kamera drone dan akan mengikuti target tersebut, dapat dilihat
pada Gambar 4.9 di atas. Pada gambar diatas terlihat bahwa drone hanya
mendeteksi warna yang telah di program dan membentuk lingkaran pada target
dimana lingkaran merah ialah luas pada warna hijau dan warna biru ialah area
batas drone medeteksi target dan garis merah yang memiliki titik biru ialah posisi
drone berada, jika drone keluar dari area garis biru maka drone tidak akan
mendeteksi target lagi, dan drone akan terbang tidak sesuai kendali.
40
Pada Gambar 4.10 dapat dilihat drone memilih target yang telah di
program awal untuk mendeteksi warna merah dan hijau, dapat disimpulkan bahwa
drone tidak mengenal warna yang berbeda pada saat drone ditarik tidak keluar
dari lingkaran biru maka drone akan kembali lagi ke target yang telah ditentukan
begitu juga pada saat target dipindahkan drone akan mengikuti target kemana pun
target tersebut.
41
juga untuk versi Linux, Mac, dan Windows. Text editor ini secara lansung
mendukung bahasa pemograman JavaScript, TypeScript, dan Node.js, serta
bahasa pemograman lainnya dengan bantuan plugin yang dapat dipasang via
marketplace Visual Studio Code (Seperti C++, C#, Python, Go, Java, dst). Banyak
sekali fitur-fitur yang disediakan oleh Visual Studio Code, diantaranya
Intellisense, Git Integration, Debugging, dan fitur ekstensi yang menambah
kemampuan teks editor. Pada Gambar 4.6 Program Kerja Sistem Main.py disini
semua program untuk menjalankan Parrot AR. Drone 2.0 sesuai dengan titik
koordinat yang telah ditentukan.
import cv2
import numpy as np
import imutils
import time
from collections import deque
import ps_drone
#config
Altitude = 1300
#Controller config
UpdateRate = 1
43
MaxMovementRatePositive = 0.020
MaxMovementRateNegative = -0.020
DivisionValueX = 14400
DivisionValueY = 9450
TargetCircleMultiplayer = 3
Controller config disini ialah menentukan range nilai X dan Y pada drone,
dimana X ialah ketinggian dan Y ialah panjang, MaxMovementRatePositive disini
di beri nilai ialah 0.020 dan MaxMovementRateNegative disini di beri nilai ialah
-0.020, dan DevisionValueX disini 14400 ketinggiannya dan DevisionValueY
disini 9450 panjang koordinat drone dan taget yang telah di tentukan.
TargetCircleMultiplayer disini ada 3 range lingkaran yang telah dibuat dengan
pemograman dengan garis lingkaran merah dan biru, dimana garis lingkaran
merah pada posisi warna hijau dan garis lingkaran berwarna biru pada luar
lingkaran warna hijau dimana luar pada warna hijau disini batas maximum drone
jika drone keluar pada garis berwarna biru disini drone akan hilang terkendali oleh
target yang telah ditentukan. Langkah selanjutnya akan membuat variabel yang
telah ditentukan.
#variables
points = deque(maxlen=32)
counter = 0
(dX, dY) = (0, 0)
direction = ""
Run = True
Direction1 = "error"
Direction2 = "error"
raduis = 0
CircleLostCount = 0
InsideCircle = False
TargetCircleRaduis = 0
drone dipindahkan dari posisi drone semula drone akan melawan atau kembali
pada posisi awal drone dimana berada dan di beri nilai 0, dX dan dY disini sama
perlakuannya seperti counter dimana posisi drone jika dipindahkan maka nilai X
dan Y akan berubah dan di tampilkan pada direction=” ” dan jika dijalankan (run)
sebuah program maka akan di tampilkan Direction1=”error” dan
Direction2=”error” maka drone tidak terkendali pada saat landing (terbang awal)
karena sebuah target yang telah ditentukan tidak dibaca oleh sebuah drone. Radius
disini diberikan nilai 0, CircleLostCount diberikan nilai 0 karena pada saat
lingkaran yang telah ditentukan kehilangan nilai maka pada display akan
menampilkan notifikasi error pada display komputer. Jika InsideCircle bernilai
false maka drone akan mengirim data error pada display komputer dan
TargetCircleRadius disini ialah target lingkaran radius maka diberikan nilai 0.
#Displayvariables
DisplayDx = 0.0
DisplayDy = 0.0
DisplayTreshhold = 0
font = cv2.FONT_HERSHEY_SIMPLEX
print("starting....")
drone = ps_drone.Drone()
drone.startup()
drone.reset()
while (drone.getBattery()[0] == -1): time.sleep(0.1)
print "Battery: "+str(drone.getBattery()[0])+"% "+str(drone.getBattery()[1])
#setup
drone.useDemoMode(False)
drone.getNDpackage(["demo","pressure_raw","altitude","magneto","wifi"])
drone.setConfigAllID()
drone.sdVideo()
drone.frontCam()
CDC = drone.ConfigDataCount
45
Setup disini ialah dimana pada saat demo alat akan dijalankan drone akan
menampilkan semua notifikasi yang telah di buat pada program variables dan
akan di tampilkan pada program display variables dimana semua notifikasi yang
telah di program akan di tampilkan pada display komputer maupun berupa
ketinggian drone, nilai X dan Y, dan maupun posisi drone berada. Disini pada saat
drone takeoff (terbang awal) camera pada drone akan mencari sebuah target yang
telah di tentukan akan mengunci sebuah target sehingga drone akan terbang
terkendali oleh sebuah target dan pada saat target dipindahkan drone akan
mengikuti target tersebut maupun jika drone dipindahkan drone akan kembali ke
target yang telah ditentukan. Disini juga untuk mengubah sebuah warna RGB
menjadi warna HSV (Hue Saturation Value) sehingga warna memiliki nilai yaitu
(65,60,60) berupa warna merah dan (80,255,255) berupa warna hijau. Greenmask
disini ialah pembacaan gambar berupa warna yang telah ditentukan berupa objek
(target), maka pada saat pembacaan warna sesuai dengan sebuah program maka
drone akan terbang dan melakukan penguncian target yang telah ditentukan.
DxCount dan DyCount ialah berupa nilai X dan Y, jika DxCount lebih kecil dari 0
maka drone akan bergerak ke kiri dan jika DxCount lebih besar dari 0 maka drone
akan bergerak ke kanan, dan DyCount lebih kecil dari 0 maka drone akan
bergerak ke atas dan jika DyCount lebih besar dari 0 maka drone akan bergerak
turun ke bawah maka untuk menstabilkan drone pada posisi yang telah ditentukan
akan membuat algoritma pada program sehingga drone akan stabil.
48
49
##Startup##
import time, sys
import ps_drone
import cv2
drone = ps_drone.Drone()
drone.startup()
drone.reset()
while (drone.getBattery()[0]==-1):
time.sleep(0.1)
print "Battery: "+str(drone.getBattery()[0])+"% "+str(drone.getBattery()[1])
50
drone.useDemoMode(True)
##Setup##
drone.setConfigAllID()
drone.sdVideo()
drone.frontCam()
CDC = drone.ConfigDataCount
while CDC == drone.ConfigDataCount: time.sleep(0.0001)
drone.startVideo()
##Detection##
IMC = drone.VideoImageCount
stop = False
out = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10,
(800,800))
while not stop:
while drone.VideoImageCount==IMC:
time.sleep(0.01)
IMC = drone.VideoImageCount
key = drone.getKey()
if key:
stop = True
img = drone.VideoImage
resize = cv2.resize(img,(800,800))
#out.write(resize)
cv2.imshow('Drones video',resize)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.waitKey(1)
cv2.destroyAllWindows()
5.1 Kesimpulan
Berdasarkan hasil dari pengujian rangkaian sistem yang telah dilakukan,
maka dapat ditarik kesimpulan sebagai berikut:
1. Algoritma untuk mendektesi target dan mengikuti sebuah objek target
yang telah dibuat maka sistem dapat mendekteksi dan mengikuti
sebuah objek yang di pindahkan.
5.2 Saran
Dalam sebuah sistem alat pasti memiliki kelebihan dan kekurangan, maka
berikut ini adalah saran-saran untuk pengembangan ke depan agar lebih baik:
2. Alat atau sistem yang dipakai adalah alat yang sudah jadi, maka untuk
melakukan pengembangan dibidang pemograman masih banyak lagi
yang bisa dikembangkan, seperti image processing, tracking mapping,
sistem GPS, dan masih banyak lagi yang bisa dikembangkan di bidang
pemograman pada AR. Drone.
51
DAFTAR PUSTAKA
[1] Ritya L., Andriana G., Indah G., "Pengendalian Ar Drone 2.0 dan
Pengambilan Data Citra Berdasarkan Koordinat GPS,” Proceeding Appl.
Sci., vol. 1, no. 2, pp. 996–1003, 2015.
[2] D. Nagataries, S. Hardiristanto, M. H. Purnomo, and A. A. G. Klasik,
“Deteksi Objek pada Citra Digital Menggunakan Algoritma Genetika untuk
Studi Kasus Sel Sabit,” J. Electr. Eng., vol. 1, no. 1, 2012.
[3] T. Sutoyo, E. Mulyanto, V. Suhartono, O.D. Nurhayati, Wijanarto, 'Teori
Pengolahan Citra Digital, Penerbit Andi, Yogyakarta, 2009.
[4] F. Guo, Q. Cao, "Sistem Deteksi Bola Menggunakan Pustaka OPENCV
dengan Kombinasi Dua Kamera (Logitech 720p & Kinnect XBOX 360) di
Robot Sepak Bola Beroda"," Proceedings of the 5th World Congress on
Intelligent Control and Automation, Hangzhou, P.R. China, 2004.
[5] S.S.Nestinger, H.H.Cheng. (2010). "Traffic surveillance, air pollution
monitoring, area mapping, agricultural application, and the remote
inspection require high manoeuvrability and robustness with respect to
disturbances". Institute of Electrical and Electronics Engineers (IEEE), pp
66-77.
[6] W. Kusuma, R. Effendi, and E. Iskandar, “Perancangan dan Implementasi
Kontrol Fuzzy-PID pada Pengendalian Auto Take-Off Quadcopter UAV,”
J. Tek. POMITS, vol. 1, no. 1, pp. 1–6, 2012.
[7] I Ketut Gede Darma Putra, Pengolahan Citra Digital, Yogyakarta, ANDI,
2010.
[8] A. S. Putri and G. E. Setyawan, “Sistem Deteksi Warna pada Quadcopter
AR Drone Menggunakan Metode Color Filtering Hue Saturation and Value
(HSV),” J. Pengemb. Teknol. Inf. dan Ilmu Komput. Univ. Brawijaya, vol.
2, no. 9, pp. 3202–3207, 2018.
[9] Kurniawan, Adhadi, “Pengujian Tracking Color Menggunakan IP Webcam
untuk Deteksi Ketinggian Air,” Journal Rekayasa dan Teknologi Elektro,
52
vol.1, no. 3, pp.1-10, 2015.
[10] F. I. Komputer and U. D. Nuswantoro, “Sistem Informasi Pelayanan
Perangkat Teknologi Informasi (SIPP Ti ).”
[11] B. A. A. Sumbodo and A. Rahardian, “Rancang Bangun Sistem Pendeteksi
ARTag sebagai Landasan Pacu AR.Drone Menggunakan Platform ROS
(Robot Operating System),” Indonesian J. Electron. Instrum. Syst. (IJEIS),
vol. 8, no. 2, p. 131, 2018, doi: 10.22146/ijeis.23031.
[12] R. D. Kusumanto, A. N. Tompunu, and S. Pambudi, “Klasifikasi Warna
Menggunakan Pengolahan Model Warna HSV Abstrak,” J. Ilm. Tek.
Elektro, vol. 2, no. 2, pp. 83–87, 2011.
53
LAMPIRAN
54
Lampiran 2: Tampilan Camera Drone Pada Laptop
55
Lampiran 3: Tampilan Camera Drone Pada Laptop Dengan Warna Berbeda
56
Lampiran 4: Tampilan Camera Drone Pada Laptop Dengan Dua Warna
57
Lampiran 5: Tampilan Posisi Drone Pada Saat Dua Target Muncul
58
Lampiran 6: Program Python Main.py
import cv2
import numpy as np
import imutils
import time
from collections import deque
import ps_drone
#config
Altitude = 1300
#Controller config
UpdateRate = 1
MaxMovementRatePositive = 0.020
MaxMovementRateNegative = -0.020
DivisionValueX = 14400
DivisionValueY = 9450
TargetCircleMultiplayer = 3
#variables
points = deque(maxlen=32)
counter = 0
(dX, dY) = (0, 0)
direction = ""
Run = True
Direction1 = "error"
Direction2 = "error"
raduis = 0
CircleLostCount = 0
InsideCircle = False
TargetCircleRaduis = 0
#Display variables
DisplayDx = 0.0
DisplayDy = 0.0
DisplayTreshhold = 0
font = cv2.FONT_HERSHEY_SIMPLEX
print("starting....")
drone = ps_drone.Drone()
drone.startup()
drone.reset()
while (drone.getBattery()[0] == -1): time.sleep(0.1)
59
print "Battery: "+str(drone.getBattery()[0])+"% "+str(drone.getBattery()[1]) # Gives a
battery-status
#setup
drone.useDemoMode(False)
drone.getNDpackage(["demo","pressure_raw","altitude","magneto","wifi"])
drone.setConfigAllID()
drone.sdVideo()
drone.frontCam()
CDC = drone.ConfigDataCount
while CDC == drone.ConfigDataCount: time.sleep(0.0001)
drone.startVideo()
IMC = drone.VideoImageCount
time.sleep(2.0)
drone.takeoff()
while(Run):
while drone.VideoImageCount==IMC:
time.sleep(0.01)
IMC = drone.VideoImageCount
key = drone.getKey()
if key:
Run = False
#if(CircleLostCount == 5):
# drone.land()
frame = drone.VideoImage
blurred = cv2.GaussianBlur(frame, (11, 11), 0)
hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)
Greenmask = cv2.inRange(hsv, (65,60,60), (80, 255,255))
Greenmask = cv2.erode(Greenmask, None, iterations=2)
Greenmask = cv2.dilate(Greenmask, None, iterations=2)
FoundedContours=cv2.findContours(Greenmask.copy(),cv2.RETR_EXTERNAL,cv2.CHAI
N_APPROX_SIMPLE)
FoundedContours = imutils.grab_contours(FoundedContours)
center = None
if len(FoundedContours) > 0:
Circle = max(FoundedContours, key=cv2.contourArea)
((x,y),raduis) = cv2.minEnclosingCircle(Circle)
Middle = cv2.moments(Circle)
center = (int(Middle["m10"] / Middle["m00"]), int(Middle["m01"] / Middle["m00"]))
if raduis > 10:
cv2.circle(frame,(int (x),int (y)),int(raduis),(0,0,255),2)
TargetCircleRaduis = raduis * TargetCircleMultiplayer
cv2.circle(frame,(int (x),int (y)),int(TargetCircleRaduis),(255,255,0),2)
cv2.circle(frame,center,5,(0,255,255),-1)
points.appendleft(center)
60
else:
cv2.putText(frame,"Error no circel Found",(10,700), font, 1,
(255,255,255),2,cv2.LINE_AA)
#CircleLostCount+= 1
else:
cv2.putText(frame,"Error no circel Found",(10,700), font, 1,
(255,255,255),2,cv2.LINE_AA)
#CircleLostCount+= 1
DxCount = 0.0
DyCount = 0.0
for i in np.arange(1, len(points)):
if points[i - 1] is None or points[i] is None:
continue
61
DisplayTreshhold = CurrentAltitude - Altitude
Xmovement = DxCount / DivisionValueX #6400
Ymovement = (DyCount / DivisionValueY) #4200
if Xmovement > MaxMovementRatePositive:
Xmovement = MaxMovementRatePositive
elif Xmovement < MaxMovementRateNegative:
Xmovement = MaxMovementRateNegative
if Ymovement > MaxMovementRatePositive:
Ymovement = MaxMovementRatePositive
elif Ymovement < MaxMovementRateNegative:
Ymovement = MaxMovementRateNegative
print("X: " + str(Xmovement) + " Y:" + str(Ymovement) )
AltitudeCommand = 0.0
if (CurrentAltitude - Altitude) > 80:
AltitudeCommand = -0.2
elif (CurrentAltitude - Altitude) < -80:
AltitudeCommand = 0.2
else:
AltitudeCommand = 0.0
if(InsideCircle == False):
drone.move(Xmovement, Ymovement, AltitudeCommand, 0)
else:
if(AltitudeCommand != 0.0):
drone.move(0, 0, AltitudeCommand, 0)
else:
drone.stop()
62
Lampiran 7: Program VideoWriter
##Startup##
import time, sys
import ps_drone
import cv2
drone = ps_drone.Drone()
drone.startup()
drone.reset()
while (drone.getBattery()[0]==-1):
time.sleep(0.1)
print "Battery: "+str(drone.getBattery()[0])+"% "+str(drone.getBattery()[1])
drone.useDemoMode(True)
##Setup##
drone.setConfigAllID()
drone.sdVideo()
drone.frontCam()
CDC = drone.ConfigDataCount
while CDC == drone.ConfigDataCount: time.sleep(0.0001)
drone.startVideo()
##Detection##
IMC = drone.VideoImageCount
stop = False
out = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10,(800,800))
while not stop:
while drone.VideoImageCount==IMC:
time.sleep(0.01)
IMC = drone.VideoImageCount
key = drone.getKey()
if key:
stop = True
img = drone.VideoImage
resize = cv2.resize(img,(800,800))
#out.write(resize)
cv2.imshow('Drones video',resize)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.waitKey(1)
cv2.destroyAllWindows()
63