Sabtu, 27 Februari 2016

Robot Cerdas Berbasis Vision Menggunakan Mikroprosesor Raspberry Pi, Python, & OpenCV (Colour Tracking Object)



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



Gambar 2 Skema robot pengenal warna 
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:




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.

Berikut adalah realisasi robot pengikut warna karya BOLABOT Techno Robotic Institute.

Gambar 6 Realisasi robot pengikut warna bolabot
Share:
Read More

Pengenalan dan Installasi Mikroprosesor Raspberry Pi



Pengertian Raspberry Pi
Raspberry Pi merupakan suatu mini PC single board dengan ukuran kurang lebih seperti sebuah kartu kredit. Raspberry Pi dikembangkan oleh Raspberry Foundation dari UK yang dipimpin oleh Eben Upton, pertama kali dibuat dan ditujukan untuk dunia pendidikan khususnya untuk membantu siswa di sekolah belajar pemrograman komputer.
    
  

Gambar 1 Logo dan bentuk Raspberry Pi

Namun dalam perkembangannya Raspberry Pi telah berkembang pesat, dengan harga yang relatif murah dan kemampuan yang mumpuni, Raspberry Pi telah banyak digunakan untuk menggantikan berbagai pekerjaan ringan yang biasanya dilakukan oleh komputer PC biasa. Misalkan saja menangani pekerjaan seperti menjadi home theater, web server, xmpp server, NAS, FTP server, bahkan menjadi super computer dengan cara menyusun secara paralel puluhan Raspberry Pi ke dalam suatu jaringan. Pada buku ini kita akan menggunakan Raspberry Pi sebagai “OTAK” robot, yang berfungsi untuk memproses input baik dari sensor, keyboard, kamera dan kontroler lainnya untuk menggerakan sebuah robot digital.

Tipe dan Datasheet Raspberry Pi
Berikut adalah Tabel perbandingan spesifikasi beberapa tipe Raspberry Pi:

Tabel 1 Spesifikasi Beberapa Tipe Raspberry Pi
 
Hardware Asesoris Raspberry Pi
Untuk dapat memulai menggunakan mikroprosesor Raspberry Pi diperlukan beberapa hardware sebagai berikut:
·         Sebuah Raspberry Pi
·         Power adapter dengan mikro USB
·         USB mouse dan keyboard
·         SD card reader/writer
·         SD card dengan kapasitas minimal 8 GB dan Maksimal 32 GB
·         Kabel HDMI
·         Kabel HDMI to VGA
·         Sebuah monitor / TV HDMI
·         Kabel Ethernet
Gambar 2 Kebutuhan asesoris Raspberry Pi

Installasi Raspberry Pi
Berikut adalah tahapan installasi Raspberry Pi:
1. Download OS Raspbian
Raspbian adalah operating system berbasis Linux Debian yang sangat disarankan untuk pengguna Raspberry Pi. Untuk memperoleh Raspbian dapat diunduh melalui alamat: https://www.raspberrypi.org/downloads/


Gambar 3 Logo Raspbian
Setelah mendownload, maka akan diperoleh file dengan format(.img).
2. Menyiapkan SD card
SD card berfungsi sebagai harddisk dari Raspberry Pi. Untuk tipe Raspberry Pi 2 Model B, diperlukan minimal SD card dengan kapasitas 8 GB dan maksimal 32 GB.
3. Memformat SD card Menggunakan SDFormatter V4.0
Sebelum SD cadr dapat diisi oleh OS Raspbian, maka perlu SD card harus di format terlebih dahulu menggunakan software SD Formatter. Software tersebut dapat didownload dari alamat: https://www.sdcard.org/downloads/formatter_4/.


Gambar 4 Tampilan SD Formatter
Untuk memformat SD card, masukan SD card pada SD card reader/writer kemudian aktifkan software SDFormatter V4.0. Setelah SD card terbaca, klik Format sampai proses format 100%.
Gambar 5 Konfirmasi untuk melakukan format


Gambar 6 Konfirmasi format telah selesai

4. Menginstall OS Raspbian pada SD card
Untuk dapat menginstall OS raspbian pada SD card diperlukan software Win32DiskImager, yang dapat diperoleh dialamat: http://sourceforge.net/projects/win32diskimager/ .
Berikut adalah langkah untuk menginstal OS Raspbian pada SD card menggunakan software Win32DiskImager:
a.       Double klik pada software win32diskimager yang telah didownload
 Gambar 7 Tampilan Win32DiskImager


Gambar 8 Konfirmasi untuk melanjutkan menginstall OS Raspbian pada SD card
b.      Cari File Raspbian berformat (.img) yang telah didownload kemudian pilih Device SD card berada, lalu klik Write. Tunggu progress sampai 100%.
c.       Setelah selesai maka akan muncul keterangan “Write Successful”
Gambar 9 Informasi pengsisian OS Rasbian telah selesai

5. Setting Instalasi OS Raspian pada Raspberry Pi
a.    Setelah SD card terisi dengan OS Raspbian, masukan SD card pada SD card slot dari Raspberry Pi, Pasang USB mouse dan keyboard pada USB plug Raspberry Pi, Hubungkan Raspberry Pi dan Monitor melalui kabel HDMI atau konverter HDMI to VGA jika monitornya VGA, terakhir hidupkan Raspberry Pi dengan menghubungkan kabel Power mikro USB.
b.    Setelah menghubungkan kabel power, maka pada monitor akan muncul proses startup dan diakhiri dengan munculnya menu raspi-config, untuk saat ini kita tidak perlu mengubah setting apapun sehingga klik .


Gambar 10 Menu konfigurasi Raspberry Pi
c.    Setelah proses konfigurasi, selanjutnya adalah pengisian login dan password. Jika pada konfigurasi tidak dilakukan perubahan apapun maka isi login dan password berikut:
raspberrypi login: pi
password: raspberry
Setelah itu, untuk memulai desktop:
pi@raspberry  ̴ $ startx
Gambar 11 Pengisian login dan password

d.   Setelah pengisian login, password dan startx, maka akan muncul Desktop Raspbian pada monitor seperti berikut:


Gambar 12 Desktop Raspbian
Share:
Read More