Citra digital dibentuk oleh kumpulan titik yang
dinamakan piksel (picture element).
Setiap pixel digambarkan sebagai sebuah kotak kecil. Setiap piksel mempunyai
kordinat posisi. Berikut adalah contoh kordinat piksel dari webcam berukuran
640 x 480 yang digunakan untuk membuat robot vision. Kordinat ini dinyatakan
oleh (X, Y), dimana X menyatakan posisi kolom, dan Y menyatakan posisi baris.
Piksel pojok kiri atas mempunyai kordinat (0,0) dan piksel pada kanan bawah
mempunyai kordinat (640, 480).
Gambar 1 Kordinat webcam berukuran
640 x 480 untuk gerak robot vision
Gambar diatas memperlihatkan sembilan kotak yang
diberi label karakter. Tiap karakter dalam kotak tersebut akan digunakan untuk
membuat sembilan kondisi gerak dari robot berdasarkan kordinat objek yang
tereteksi oleh webcam (Keterangan:
dapat dibuat jumlah kotak yang lebih banyak sehingga kondisi gerak robot yang
dibuat juga menjadi lebih banyak). Berikut adalah contoh tabel kordinat objek
yang terdeteksi yang bersesuaian dengan karakter kondisi gerak robot vision:
Tabel 1 Kondisi gerak robot vision berdasarkan kordinat
objek yang terdeteksi
No
|
Sumbu X
|
Sumbu Y
|
Kondisi Gerak
|
1
|
426.67 - 640
|
0 - 240
|
Belok Kanan Sedang
|
2
|
426.67 - 640
|
240 - 480
|
Belok Kanan Curam
|
3
|
213.33-426.67
|
0 - 240
|
Maju Ke Depan
|
4
|
213.33- 426.67
|
240 - 480
|
Diam
|
5
|
0 - 213.33
|
0 - 160
|
Belok Kiri Sedang
|
6
|
0 - 213.33
|
240 - 480
|
Belok Kiri Curam
|
Untuk dapat membuat robot vision menggunakan GUI
Python terdapat beberapa tahapan sebagai berikut:
Gambar 3 Tahapan metode pembuatan robot pengenal warna
Tahap pertama yang akan dibuat adalah membuat GUI
(Graphical User Interface) untuk mendeteksi warna menggunakan algoritma pengolahan
citra digital, setelah dilakukan pengujian dan berhasil barulah kemudian dibuat
GUI untuk menggabungkan pengolahan citra video digital untuk mendeteksi objek
dengan program untuk mengakses GPIO yang akan mengontrol gerak motor yang akan
bergerak ke arah objek. Tahapan berikutnya adalah membuat hardware robot menggunakan berupa motor driver yang akan
menggerakan motor DC.
Pemrograman
Python Robot Vision
Pada pembahasan ini kita akan membuat GUI robot vision pendeteksi objek berwarna.
GUI robot vision ini menggabungkan program pengolahan
citra digital dan kontrol logika
GPIO Raspberry Pi yang akan mengontrol aktuator motor DC. Prinsipnya adalah
saat webcam menangkap citra objek, maka algoritma pengolahan citra akan
mendeteksi kordinat posisi objek berdasarkan pusat warnanya, setelah itu
kordinat tersebut di konversi sebagaimana di terlihat pada Tabel 18.1 menjadi
logika yang kemudian akan dikirimkan oleh Python ke pin GPIO untuk menggerakan
motor DC.
Desain Rangkaian Robot Digital yang Dikendalikan Vision Webcam
Gambar 18.4 adalah desain lengkap robot digital
yang dikendalikan GUI Vision menggunakan Raspberry Pi dan Webcam. Motor driver
untuk motor DC terhubung dengan pin GPIO yaitu GPIO 14, 15, 23, dan 24.
Gambar 4 Desain robot Raspberry Pi yang dikendalikan Vision
Desain GUI Python Kalibrasi Pendeteksian Objek
Berwarna
Berikut adalah tahapan pembuatan interface
pendeteksian objek berwarna:
1. Susun rangkaian robot kontrol Raspberry Pi seperti Gambar 4.
2. Hubungkan Raspberry Pi dengan Power, dan berbagai device seperti webcam, monitor, keyboard dan mouse.
3. Untuk memulai OS Raspberry Pi, login: pi, password: raspberry, setelah terbuka, ketik kembali “startx”, maka Desktop Raspberry Pi akan muncul.
4. Buka software Python 2, dan ketik program berikut:
1. Susun rangkaian robot kontrol Raspberry Pi seperti Gambar 4.
2. Hubungkan Raspberry Pi dengan Power, dan berbagai device seperti webcam, monitor, keyboard dan mouse.
3. Untuk memulai OS Raspberry Pi, login: pi, password: raspberry, setelah terbuka, ketik kembali “startx”, maka Desktop Raspberry Pi akan muncul.
4. Buka software Python 2, dan ketik program berikut:
import cv2.cv as cv # import libarary openCV import time capture = cv.CaptureFromCAM(0) cv.SetCaptureProperty(capture,3,640) cv.SetCaptureProperty(capture,4,480) time.sleep(2) while True: img = cv.QueryFrame(capture) cv.Smooth(img,img,cv.CV_BLUR,3) hue_img = cv.CreateImage(cv.GetSize(img),8,3) cv.CvtColor(img,hue_img,cv.CV_BGR2HSV) threshold_img=cv.CreateImage(cv.GetSize(hue_img),8,1) cv.InRangeS(hue_img,(0,150,0),(5,255,255),threshold_img) storage = cv.CreateMemStorage(0) contour = cv.FindContours(threshold_img,storage,cv.CV_RETR_CCOMP,cv.CV_CHAIN_APPROX_SIMPLE) points = [] while contour: rect = cv.BoundingRect(list(contour)) # konversi koordinat objek menjadi karakter if rect[0]>426.67 and rect[0]<640.0 and rect[1]>0.0 and rect[1]<240.0: print ('BELOK KANAN SEDANG') if rect[0]>426.67 and rect[0]<640.0 and rect[1]>240.0 and rect[1]<480.0: print ('BELOK KANAN CURAM') if rect[0]>213.33 and rect[0]<426.67 and rect[1]>0.0 and rect[1]<240.0: print ('MAJU KEDEPAN') if rect[0]>213.33 and rect[0]<426.67 and rect[1]>240.0 and rect[1]<480.0: print ('DIAM') if rect[0]>0.0 and rect[0]<213.33 and rect[1]>0.0 and rect[1]<240.0: print ('BELOK KIRI SEDANG') if rect[0]>0.0 and rect[0]<213.33 and rect[1]>240.0 and rect[1]<480.0: print ('BELOK KIRI CURAM') contour = contour.h_next() size = (rect[2]*rect[3]) if size > 100: pt1 = (rect[0],rect[1]) pt2 = (rect[0]+rect[2],rect[1]+rect[3]) cv.Rectangle(img,pt1,pt2,(38,160,60)) cv.ShowImage("Colour Tracking",img) if cv.WaitKey(10)==27: break
5. Save program yang dibuat, misalkan
kalibrasi_deteksi_objek.py pada Directory: /home/pi
6. Kita tidak dapat menjalankan program (running) secara langsung pada IDLE Python, karena untuk mengakses hardware
GPIO Raspberry Pi hanya dapat dilakukan oleh super user (root). Oleh karena itu
untuk menjalankan program (running) bukalah
LXTerminal, kemudian ketik: sudo
python kalibrasi_deteksi_objek.py. Setelah itu tekan “enter”maka akan muncul tampilan berikut dan sistem siap untuk
dilakukan pengujian.
Gambar 5 Tampilan Python kalibrasi pendeteksi
objek berwarna merah
Desain GUI Python Robot Vision Pendeteksi
Objek Berwarna
Berikut adalah tahapan pembuatan interface robot
vision pendeteksi objek berwarna:
1. Susun rangkaian robot kontrol
Raspberry Pi seperti Gambar 4.
2. Hubungkan Raspberry Pi dengan
Power, dan berbagai device seperti webcam, monitor, keyboard dan mouse.
3. Untuk memulai OS Raspberry
Pi, login: pi, password: raspberry, setelah terbuka, ketik kembali “startx”, maka Desktop Raspberry Pi akan
muncul.
4. Buka software Python 2, dan ketik program berikut:
import cv2.cv as cv # import libarary openCV import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(2, GPIO.OUT) GPIO.setup(3, GPIO.OUT) GPIO.setup(14, GPIO.OUT) GPIO.setup(15, GPIO.OUT) capture = cv.CaptureFromCAM(0) cv.SetCaptureProperty(capture,3,640) cv.SetCaptureProperty(capture,4,480) time.sleep(2) while True: img = cv.QueryFrame(capture) cv.Smooth(img,img,cv.CV_BLUR,3) hue_img = cv.CreateImage(cv.GetSize(img),8,3) cv.CvtColor(img,hue_img,cv.CV_BGR2HSV) threshold_img=cv.CreateImage(cv.GetSize(hue_img),8,1) cv.InRangeS(hue_img,(0,150,0),(5,255,255),threshold_img) storage = cv.CreateMemStorage(0) contour = cv.FindContours(threshold_img,storage,cv.CV_RETR_CCOMP,cv.CV_CHAIN_APPROX_SIMPLE) points = [] while contour: rect = cv.BoundingRect(list(contour)) # konversi koordinat objek menjadi logika GPIO if rect[0]>426.67 and rect[0]<640.0 and rect[1]>0.0 and rect[1]<240.0: print ('BELOK KANAN SEDANG') GPIO.output(2, False) GPIO.output(3, True) GPIO.output(14, False) GPIO.output(15, False) if rect[0]>426.67 and rect[0]<640.0 and rect[1]>240.0 and rect[1]<480.0: print ('BELOK KANAN CURAM') GPIO.output(2, False) GPIO.output(3, True) GPIO.output(14, True) GPIO.output(15, False) if rect[0]>213.33 and rect[0]<426.67 and rect[1]>0.0 and rect[1]<240.0: print ('MAJU KEDEPAN') GPIO.output(2, False) GPIO.output(3, True) GPIO.output(14, False) GPIO.output(15, True) if rect[0]>213.33 and rect[0]<426.67 and rect[1]>240.0 and rect[1]<480.0: print ('DIAM') GPIO.output(2, False) GPIO.output(3, False) GPIO.output(14, False) GPIO.output(15, False) if rect[0]>0.0 and rect[0]<213.33 and rect[1]>0.0 and rect[1]<240.0: print ('BELOK KIRI SEDANG') GPIO.output(2, False) GPIO.output(3, False) GPIO.output(14, False) GPIO.output(15, True) if rect[0]>0.0 and rect[0]<213.33 and rect[1]>240.0 and rect[1]<480.0: print ('BELOK KIRI CURAM') GPIO.output(2, True) GPIO.output(3, False) GPIO.output(14, False) GPIO.output(15, True) contour = contour.h_next() size = (rect[2]*rect[3]) if size > 100: pt1 = (rect[0],rect[1]) pt2 = (rect[0]+rect[2],rect[1]+rect[3]) cv.Rectangle(img,pt1,pt2,(38,160,60)) cv.ShowImage("Colour Tracking",img) if cv.WaitKey(10)==27: break
5. Save program yang dibuat,
misalkan robot_vision_raspi.py pada Directory: /home/p
6. Kita tidak dapat menjalankan program (running) secara langsung pada IDLE Python, karena untuk mengakses hardware GPIO Raspberry Pi hanya dapat dilakukan oleh super user (root). Oleh karena itu untuk menjalankan program (running) bukalah LXTerminal, kemudian ketik: sudo python robot_vision_raspi.py. Setelah itu tekan “enter”maka akan muncul tampilan berikut dan sistem siap untuk dilakukan pengujian.
6. Kita tidak dapat menjalankan program (running) secara langsung pada IDLE Python, karena untuk mengakses hardware GPIO Raspberry Pi hanya dapat dilakukan oleh super user (root). Oleh karena itu untuk menjalankan program (running) bukalah LXTerminal, kemudian ketik: sudo python robot_vision_raspi.py. Setelah itu tekan “enter”maka akan muncul tampilan berikut dan sistem siap untuk dilakukan pengujian.
Berikut adalah realisasi robot pengikut warna
karya BOLABOT Techno Robotic Institute.
Gambar 6 Realisasi robot pengikut warna bolabot
Komentar ini telah dihapus oleh pengarang.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusIzin bertanya mas, jenis webcame yang di gunakan apa yah..?
BalasHapuspenginstallan cv nya gimana mas ?
BalasHapus