9. z merupakan nilai koordinat z end-effector yang didapatkan dari hasil percobaan penggerakan robot lengan. Data ini khusus untuk tipe inverse
3.7.2.3. Penjelasan Program Pengolahan Citra Digital
Pada sistem ini terdapat dua metode pengolahan citra digital yaitu metode warp transformation dan blob detection. Program yang melakukan kedua metode tersebut adalah warp.py, blob_xy.py, dan blob_z.py. Warp.py bekerja pertama dengan mengurutkan data pada tabel warp_z berdasarkan nilai pada kolom y secara ascending. Setelah diurutkan, maka program akan melanjutkan proses dengan mengambil semua data pada kolom x, y pada tabel warp_z pada database robot.
Nilai-nilai terdiri atas 4 baris yang kemudian dilakukan pengurutan data pada baris 1-2 dan baris 3-4 berdasarkan nilai x secara ascending. Nilai x, y ini merupakan koordinat pixels dari stiker hitam lingkaran (dilingkari merah) yang ditunjukan pada gambar 3.67.
Gambar 3.67. Stiker lingkaran hitam yang data pixels disimpan pada tabel warp_z
Pemasukan nilai-nilai koordinat ini didapatkan dari menjalankan 2 program secara berurutan yaitu /home/pi/Desktop/kalibrasi/capture_kalibrasi.py kemudian /home/pi/Desktop/kalibrasi/kalibrasi_kamera_z.py yang memanfaatkan metode blob detection.
Kemudian sistem akan mengurutkan data pada tabel warp_xy berdasarkan nilai pada kolom y secara ascending. Setelah diurutkan, maka program akan melanjutkan proses dengan mengambil semua data pada kolom x, y pada tabel warp_xy pada database robot. Nilai-nilai terdiri atas 4 baris yang kemudian dilakukan pengurutan data pada baris 1-2 dan baris 3-4 berdasarkan nilai x secara
ascending. Nilai x, y ini merupakan koordinat pixels dari stiker hitam kotak (dilingkari merah) yang ditunjukan pada gambar 3.68.
Gambar 3.68. Stiker kotak hitam yang data pixels disimpan pada tabel warp_xy
Pemasukan nilai-nilai koordinat ini didapatkan dari menjalankan 2 program secara berurutan yaitu /home/pi/Desktop/kalibrasi/capture_kalibrasi.py kemudian /home/pi/Desktop/kalibrasi/kalibrasi_kamera_xy.py yang memanfaatkan metode blob detection.
Program dilanjutkan dengan melakukan warp transformation pada gambar home/pi/Desktop/foto.jpg yaitu gambar yang diambil Raspberry Pi camera ketika robot telah selesai bergerak dan sistem menyalakan laser dioda. Berikut cuplikan program yang melakukan warp transformation.
img = cv2.imread('/home/pi/Desktop/foto.jpg') rows,cols,ch = img.shape
pts1 = np.float32([data[0], data[1], data[2], data[3]]) pts2 = np.float32([(0,0),(1600,0),(0,560),(1600,560)]) M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(1600,560)) cv2.imwrite('/home/pi/Desktop/warp_z.jpg',dst)
pts3 = np.float32([data1[0], data1[1], data1[2], data1[3]]) pts4 = np.float32([(0,0),(500,0),(0,700),(500,700)])
M1 = cv2.getPerspectiveTransform(pts3,pts4) dst1 = cv2.warpPerspective(img,M1,(500,700)) cv2.imwrite('/home/pi/Desktop/warp_xy.jpg',dst1)
Gambar 3.69. Cuplikan program warp.py
Warp transformation berjalan dengan mendeklarasikan empat titik koordinat pixels pada gambar yang ingin ditransform, yaitu titik kiri atas, titik kanan atas, titik kiri bawah dan titik kanan bawah. Kemudian mendeklarasikan empat titik koordinat pixels baru pada gambar hasil. Program warp akan menghasilkan dua buah picture /home/pi/Desktop/warp_z.jpg dan /home/pi/Desktop/warp_xy.jpg. Berikut adalah gambar home/pi/Desktop/foto.jpg.
Gambar 3.70. Gambar home/pi/Desktop/foto.jpg
Sedangkan berikut adalah gambar hasil warp z dan xy.
Gambar 3.71. Gambar home/pi/Desktop/warp_z.jpg
Gambar 3.72. Gambar home/pi/Desktop/warp_xy.jpg
Untuk gambar hasil warp xy pada sistem ini akan menghasilkan gambar bidang xy dengan rotasi 90o searah jarum jam. Untuk flowchart program warp.py dapat dilihat pada gambar 3.73 dan gambar 3.74.
Start
Mengurutkan data pada tabel warp_z berdasarkan nilai pada kolom y
secara ascending
Mengambil seluruh data (kolom x, y) dari tabel warp_z pada database
robot
Data koordinat x, y pixels
Mengurutkan nilai baris 1-2 dan baris 3-4 berdasarkan data kolom x
secara ascending
Mengurutkan data pada tabel warp_z berdasarkan nilai pada kolom y
secara ascending
Mengambil seluruh data (kolom x, y) dari tabel warp_z pada database
robot
Data koordinat x, y pixels
Mengurutkan nilai baris 1-2 dan baris 3-4 berdasarkan data kolom x
secara ascending
A
Gambar 3.73. Flowchart (1) warp.py
Gambar /home/pi/
Desktop/foto.jpg
Melakukan perspective transform dengan nilai-nilai dari tabel warp_z yang telah
diurutkan
Melakukan warp perspective dengan resolusi hasil 1600 x
560 dari tabel warp_xy yang telah
diurutkan
Melakukan warp perspective dengan resolusi hasil 500 x
700
Gambar 3.74. Flowchart (2) warp.py
Hasil gambar dari proses warp akan dilanjutkan dengan proses pendeteksian cahaya laser dan mengkonversi posisi koordinat pixels cahaya laser tersebut menjadi koordinat end-effector dalam satuan sentimeter. Proses pendeteksian ini dilakukan oleh dua program yaitu blob_xy.py dan blob_z.py.
Berikut adalah flowchart dari program blob_xy.py.
Start
Gambar /home/pi/
Desktop/warp_xy.jpg Mengambil data tipe pada id antrian yang telah diambil dari
tabel data (database)
Data tipe
Melakukan invert gambar
Gambar im
Membuat sebuah detector dengan parameter-parameter
tertentu
Melakukan pendeteksian blob
Koordinat pixels objek
Jumlah objek terdeteksi = 1?
Yes
No
A B
Gambar 3.75. Flowchart (1) blob_xy.py
Melakukan perhitungan konversi
Gambar 3.76. Flowchart (2) blob_xy.py
Program ini dimulai dengan mengambil data kolom tipe berdasarkan baris yang memiliki id antrian yang sedang diproses. Kemudian dilanjutkan dengan mengambil gambar /home/pi/Desktop/warp_xy.jpg (gambar 3.72). Kemudian gambar ini akan diinvert dan disimpan dengan nama im. Kemudian program akan mendeklarasikan beberapa parameter blob yang tampak pada gambar 3.77. Setelah itu maka akan dilakukan pendeteksian objek dengan metode blob pada gambar im.
Proses ini akan menghasilkan koordinat pixels dari pusat objek yang terdeteksi.
Apabila objek yang terdeteksi tidak sama dengan 1 maka sistem akan mengupdate status pada id antrian menjadi error (2). Sedangkan apabila objek yang terdeteksi berjumlah satu maka akan dilanjutkan dengan mengolah nilai koordinat pixels menjadi koordinat x, y dalam satuan sentimeter. Karena gambar warp_xy memiliki ukuran 500 x 700 (dimana koordinat x memiliki range 15 cm sampai 40 cm dan
koordinat y memiliki range -20 cm sampai 15 cm) dimana 20 pixels sama dengan 1 cm. Berikut persamaan konversi untuk menghasilkan koordinat x dalam sentimeter.
𝑥 = 25 𝑝𝑖𝑥𝑒𝑙𝑠 𝑥
500 + 15 (3.25)
Keterangan :
x = nilai koordinat x end-effector dalam satuan sentimeter pixels x = nilai koordinat pixels x dari pusat objek yang terdeteksi
Sedangkan berikut adalah persamaan konversi untuk menghasilkan koordinat y dalam sentimeter.
𝑦 = 15 −35 𝑝𝑖𝑥𝑒𝑙𝑠 𝑦
700 (3.26)
Keterangan :
y = nilai koordinat y end-effector dalam satuan sentimeter pixels y = nilai koordinat pixels y dari pusat objek yang terdeteksi
# Setup SimpleBlobDetector parameters.
params = cv2.SimpleBlobDetector_Params()
# Change thresholds params.minThreshold = 20 params.maxThreshold = 76
# Filter by Area.
params.filterByArea = True params.minArea = 8
params.maxArea = 300
# Filter by Circularity
params.filterByCircularity = True params.minCircularity = 0.6195
# Filter by Convexity
params.filterByConvexity = True params.minConvexity = 0.87
# Filter by Inertia
params.filterByInertia = True params.minInertiaRatio = 0.1
Gambar 3.77. Cuplikan program blob_xy.py
Kemudian, jika nilai data tipe sama dengan forward maka sistem ini akan menyimpan kedua nilai koordinat x, y ke kolom coba 1, coba 2 pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Sedangkan apabila tipe tidak sama dengan forward maka nilai koordinat x, y disimpan ke kolom x, y pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Berikut adalah gambar hasil pendeteksian cahaya laser dengan program blob_xy.py yang menghasilkan koordinat y -6.88 cm dan x 25.88 cm.
Gambar 3.78. Hasil pendeteksian blob_xy.py (inverted image)
Sedangkan proses kerja program blob_z.py sama dengan blob_xy.py hanya saja gambar yang diproses adalah gambar /home/pi/Desktop/warp_z.jpg yang memiliki ukuran 1600 x 560 (dimana koordinat y memiliki range -40 cm sampai 40 cm dan koordinat z memiliki range 2 cm sampai 30 cm) dimana 20 pixels sama dengan 1 cm. Berikut persamaan konversi untuk menghasilkan koordinat z dalam sentimeter.
𝑧 = −28 𝑝𝑖𝑥𝑒𝑙𝑠 𝑦
560 + 30 (3.27)
Keterangan :
z = nilai koordinat z end-effector dalam satuan sentimeter pixels y = nilai koordinat pixels y dari pusat objek yang terdeteksi
Kemudian, jika nilai data tipe sama dengan forward maka sistem ini akan menyimpan nilai koordinat z ke kolom coba 3 pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Sedangkan apabila tipe tidak
sama dengan forward maka nilai koordinat z disimpan ke kolom z pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Berikut adalah gambar hasil pendeteksian cahaya laser dengan program blob_z.py yang menghasilkan koordinat z 15.34 cm.
Gambar 3.79. Hasil pendeteksian blob_z.py (inverted image)
Flowchart program blob_z.py dapat dilihat pada halaman 117-118.
Start
Gambar /home/pi/
Desktop/warp_z.jpg Mengambil data tipe pada id antrian yang telah diambil dari
tabel data (database)
Data tipe
Melakukan invert gambar
Gambar im
Membuat sebuah detector dengan parameter-parameter tertentu
Melakukan pendeteksian blob
Koordinat pixels objek
Jumlah objek terdeteksi = 1?
Yes No
A B
Gambar 3.80. Flowchart (1) blob_z.py
Melakukan perhitungan id antrian yang telah
diambil pada
Gambar 3.81. Flowchart (2) blob_z.py
3.7.3. Database
Pada sistem ini digunakan database MySQL local yang ada pada raspberry pi. Database yang digunakan memiliki nama robot dan memiliki 5 buah tabel, yaitu sebagai berikut.
1. Tabel user, yaitu tabel penyimpanan data id user, username dan