Bab III Perangkat Pengujian
Persoalan
utama
dalam
tugas
akhir
ini
adalah
bagaimana
mengimplementasikan metode pengukuran jarak menggunakan pengolahan citra tunggal dengan bantuan laser pointer dalam suatu perangkat pengukuran, untuk kemudian membandingkan hasil pengukurannya dengan alat ukur yang lebih terpercaya. Oleh karena itu perlu dirancang dan dibuat suatu perangkat pengujian yang dapat menjalankan fungsi pengukuran dan pengujian tersebut. Sebagaimana telah disebutkan pada bab sebelumnya, alat ukur pembanding pada tugas akhir ini adalah suatu laser distance sensor yang sekaligus berperan sebagai laser pointer. Perangkat yang akan dibahas dalam bab ini terdiri dari dua bagian, yaitu perangkat keras (hardware) dan perangkat lunak (software).
3.1 Perangkat Keras
Gambar 3.1 Diagram aliran informasi dan perintah pada perangkat keras Pada teknik pengukuran jarak melalui pengolahan citra dengan bantuan laser pointer, komputer adalah tempat semua data bermuara untuk diterjemahkan
20
menjadi jarak. Pada komputer inilah nantinya akan ditampilkan angka jarak hasil pembacaan. Sesuai dasar teori pada bab sebelumnya, diperlukan dua buah informasi agar jarak dapat terbaca. Kedua informasi tersebut yaitu berupa citra dan besar sudut kemiringan laser pointer terhadap sumbu yang sejajar dengan sumbu fokus kamera. Informasi citra bisa didapat dari kamera setelah melalui proses digitizing yang dilakukan oleh TV tuner internal yang ada di dalam komputer. Dalam hal ini TV tuner internal bekerja sebagai frame grabber, yaitu dengan mengambil data gambar analog dari komputer dan mengkonversinya menjadi frame-frame gambar digital yang bisa diolah oleh komputer. Informasi sudut bisa didapat dari rotary encoder. Namun, untuk sampai ke komputer, sinyal dari encoder perlu diubah dulu bentuknya melalui suatu controller board yang berisi mikrokontroller beserta kelengkapannya. Hal ini disebabkan sinyal dari encoder berbentuk pulsa-pulsa A dan B, seperti yang telah diterangkan pada bab dua. Pulsa-pulsa ini akan diubah menjadi data hitungan sehigga lebih mudah untuk diterima komputer melalui jalur komunikasi USART (Universal
Synchronous/Asynchronuous
Receiver/Transmitter)
dengan
mikrokontroller. Selain menerima informasi-informasi tersebut, komputer juga perlu untuk bisa memberi perintah untuk bergerak ke posisi angular tertentu kepada laser pointer. Hal ini bisa dicapai apabila komputer bisa memberikan perintah sudut kepada motor servo. Perintah PWM untuk motor servo bisa diimplementasikan dengan lebih mudah bila melalui mikrokontroller. Oleh karena itu melalui USART juga akan dikirimkan perintah sudut dari komputer ke mikrokontroller untuk selanjutnya perintah tersebut diterjemahkan menjadi perintah PWM ke motor servo. Pada gambar 3.1 dapat dilihat diagram aliran informasi dan perintah yang akan diimplementasikan pada perangkat pengujian. Dari gambar dan keteranganketerangan sebelumnya juga bisa disimpulkan bahwa agar sistem dapat berjalan, maka laser pointer, motor servo, dan rotary encoder harus berada dalam satu sumbu poros.
21
3.1.1 Perangkat Mekanik Perangkat mekanik dirancang sebagai tempat kamera dan laser pointer terpasang dengan jarak yang tidak berubah. Selain itu perangkat ini juga harus dapat memungkinkan untuk mengubah-ubah posisi angular laser pointer sambil membaca nilai posisi angular laser pointer tersebut. Frame perangkat mekanik ini sebagian besar berbahan aluminium dural karena pertimbangan kemudahan dalam proses pemesinan. Bagian atas yang juga merupakan tempat terpasangnya kamera menggunakan bahan akrilik transparan agar nilai pembacaan dari laser distance sensor yang ditampilkan di bagian atas alat tersebut dapat terbaca. Kamera yang digunakan adalah kamera CCTV TelView MM247. Motor servo yang digunakan adalah Hitec HS322-HD. Rotary encoder menggunakan Autonics E40H6-1024-32-24. Sedangkan laser distance sensor yang digunakan adalah IFM O1D100. Spesifikasi teknis semua komponen tersebut dapat dilihat pada lampiran.
Gambar 3.2 Rancangan tiga dimensi perangkat mekanik
22
Gambar 3.3 Perangkat mekanik yang telah dibuat
3.1.2 Controller Board Controller board yang digunakan dalam tugas akhir ini adalah M.B.7.2 buatan MAX-TRON. Controller board ini menggunakan mikrokontroller Atmel ATMega8535 dan dilengkapi dengan fasilitas sambungan-sambungan untuk input-output, servo, dan juga komunikasi USART. Fasilitas mikrokontroller yang digunakan dalam tugas akhir ini adalah pin RXD dan TXD untuk sambungan USART, pin PD2 untuk input PWM servo, serta pin PD3 dan PD4 untuk sambungan ke output dari rotary encoder. Sambungan ke output rotary encoder ini salah satunya harus pin yang mempunyai fasilitas interrupt karena akan digunakan untuk mendeteksi perubahan pulsa.
23
Gambar 3.4 Controller board yang digunakan
3.2 Perangkat Lunak Perangkat lunak yang digunakan untuk membuat tugas akhir ini adalah sebagai berikut: 1. Borland C++ Builder 6 Program ini digunakan untuk membuat program aplikasi di komputer yang dapat mengambil data untuk mengukur jarak dan sekaligus menjadi antarmuka (interface) dengan operator. Keunggulan dari program ini adalah kemudahannya dalam memulai membuat program karena menyediakan Visual Component Library (VCL). Selanjutnya program dapat dibuat berdasarkan event-event yang terjadi pada tiap komponen visual yang telah kita pilih untuk digunakan. 2. OpenCV 1.0 OpenCV adalah library yang menyediakan perintah-perintah pemrosesan yang umum digunakan dalam bidang computer vision. Penggunaan library ini sangat membantu karena mempermudah dan mempercepat pembuatan program.
24
3. Video Capture Video Capture yang dimaksud adalah bagian dari Microsoft DirectX 8.1 Standard Development Kit, yang merupakan contoh program yang dibuat dengan C++ menggunakan fasilitas DirectShow. Program ini diperlukan untuk mengeset format citra yang ditangkap oleh kamera. Hal ini dikarenakan dalam prakteknya, dengan konfigurasi perangkat keras yang ada, format video yang akan tertangkap baik dan mudah untuk diolah adalah format PAL. Komputer tidak selalu secara default membaca video dalam format ini sehingga diperlukan pengesetan terlebih dahulu tiap kali akan memulai menggunakan program yang telah dibuat. 4. Codevision CVAVR Berbeda dengan semua perangkat lunak sebelumnya yang berandil untuk membuat
antarmuka,
program
ini
berguna
untuk
memprogram
mikrokonroller pada controller board sehingga mikrokontroller bisa berfungsi sesuai yang diinginkan. Dengan program ini kita bisa membuat perintah-perintah
dalam
bahasa
C++
untuk
diprogramkan
pada
mikrokontroller. Pemilihan program ini juga bersesuaian dengan mikrokontroller yang digunakan, yaitu mikrokontroller dari ATMEL. Sebagai catatan penting, perlu diperhatikan bahwa program buatan Borland C++Builder sebenarnya tidak bisa terkoneksi dengan DirectX. Keduanya bisa disambungkan dengan mengikutsertakan suatu file khusus berformat .dll yang telah dibuat pada penelitian sebelumnya.
3.2.1 Proses Penghitungan Jarak Melalui Pengolahan Citra Untuk mempermudah pembahasan mengenai proses penghitungan jarak melalui pengolahan citra, akan digunakan Data Flow Diagram (DFD) sebagai ilustrasi. Seperti sudah pernah dijelaskan sebelumnya, sistem pengolahan citra dalam tugas akhir ini menghasilkan informasi jarak dari data citra dan sudut kemiringan laser pointer. Sesuai dengan itu, DFD level 0 pada gambar 3.5 memodelkan bahwa sistem berantarmuka dengan tiga external entity, yaitu TV tuner, controller board, dan operator. Sistem mendapatkan data video yang sudah berformat digital dari TV tuner, dan mendapatkan data hitungan pulsa rotary
25
encoder dari controller board, untuk kemudian mengolahnya menjadi jarak kamera ke titik laser yang akan dibaca oleh operator.
Gambar 3.5 DFD level 0 sistem pengolahan citra
26
Gambar 3.6 DFD level 1 sistem pengolahan citra
DFD level 0 ini dapat dijabarkan lagi menjadi proses-proses pada DFD level 1 seperti yang terlihat pada gambar 3.6. Tahapan dari pengolahan data adalah sebagai berikut. Pertama-tama sistem mengambil memori dari tiap-tiap frame video sehingga setiap saat didapat citra dalam format RGB. Selanjutnya sistem men-threshold citra RGB tersebut sehingga didapatkan citra biner. Pada citra biner tersebut hanya akan terdapat dua warna, yaitu warna putih yang merepresentasikan titik laser, dan warna hitam yang mewakili semua yang bukan merupakan titik laser. Selanjutnya sistem akan mencari jarak vertikal titik laser dari titik tengah citra. Jarak tersebut akan terbaca dalam satuan pixel. Setelah mendapatkan jarak bersatuan pixel tersebut, dengan juga menggunakan data hitungan pulsa dari rotary encoder, sistem akan menghitung jarak dari kamera ke
27
titik laser menggunakan suatu rumus. Rumus ini akan didapat dari hasil kalibrasi yang akan diterangkan pada bab selanjutnya berdasarkan dasar teori yang sudah dijabarkan pada bab dua. Proses kedua yang terdapat pada DFD level 1 dapat diterangkan lebih lanjut dengan DFD level 2 yang ada pada gambar 3.7.
Gambar 3.7 DFD level 2 sistem pengolahan citra untuk proses nomor 2
Proses thresholding yang dimaksud sebenarnya terdiri dari dua tahap. Tahapan pertama adalah mengambil data citra pada kanal warna merah. Seperti yang telah dijelaskan pada bab sebelumnya, citra RGB mempunyai tiga kanal warna, yaitu kanal merah, kanal hijau dan kanal biru. Kanal merah diambil karena titik laser mempunyai warna merah yang spesifik. Operasi ini akan menghasilkan suatu citra grayscale yang nilai-nilai intensitas pada tiap pixelnya menyatakan tingkat kemerahan. Dalam pemrograman operasi pengambilan data kanal merah ini dapat dilakukan dengan perintah OpenCV “cvCvtPixToPlane”. Tahapan selanjutnya adalah melakukan thresholding dengan batas ambang 254. Citra yang diproses dalam tugas akhir ini mempunyai kedalaman warna 8 bit. Oleh karena itu pada citra grayscale nilai intensitas akan berkisar diantara 0 sampai 255. Dari percobaan diketahui bahwa nilai merah titik laser pada citra biasanya selalu 255. Maka dari itu dilakukan proses thresholding dengan mengkonversi intensitas 255 pada citra menjadi 1 (putih), dan mengkonversi semua nilai intensitas selain itu menjadi 0 (hitam). Proses ini dengan mennggunakan OpenCV dapat dilakukan dengan perintah “cvThreshold”. Metode thresholding yang dipilih adalah “CV_THRESH_BINARY”. Proses ketiga merupakan suatu proses feature detection. Proses ini dilaksanakan dengan cara men-scan citra untuk mencari posisi titik laser. Titik laser pada citra akan terbaca sebagai suatu area. Scanning akan dilakukan untuk tiap-tiap koordinat x tertentu seperti diilustrasikan pada gambar 3.8. Pada ilustrasi
28
tersebut lebar citra adalah 8 pixel. Ketika berada di koordinat x = 4, dengan scanning pada arah sesuai tanda panah, akan terbaca bahwa pixel putih berada pada y = 3, y = 4, dan y = 5. Program akan menjumlahkan angka-angka tersebut dan membaginya dengan jumlah pixel putih yang ditemukan yaitu 3. Sehingga ditemukan bahwa pada garis x = 4 titik berat ada di y = 4. Proses ini akan berulang untuk setiap garis dengan nilai x tertentu. Hasil titik berat y di semua titik akan dijumlahkan dan hasilnya dibagi dengan jumlah garis yang memiliki pixel putih didalamnya sehingga ditemukan titik berat y pixel putih secara keseluruhan.
Gambar 3.8 Ilustrasi scanning pixel putih untuk tiap garis
Dengan teknik scanning seperti di atas, maka akan didapat jarak dari titik terbawah citra. Untuk mendapatkan jarak dari kamera ke titik laser, dibutuhkan data jarak vertikal pixel dari titik tengah citra. Pada tugas akhir ini citra yang diproses berukuran 320x240. Untuk itu, karena lebar citra adalah 240, maka hasil pembacaan titik berat y pixel putih harus dikurangkan dengan 120.
Gambar 3.9 DFD level 2 sistem pengolahan citra untuk proses nomor 3
29
Proses
selanjutnya
pada
dasarnya
adalah
menghitung
dengan
menggunakan persamaan 2.9 yang sudah diterangkan pada bab dua. Dengan, konfigurasi alat pengujian yang ada, persamaan tersebut menjadi: Z
T ...(3.1) p C Tan
Dimana tanda positif pada Tan terjadi karena sesungguhnya alat pengujian yang dibuat hanya akan menghasilkan sudut yang negatif bila dilihat dari konvensi vektor yang dilakukan selama mencari persamaan 2.9. Karena input yang didapat dari controller board berupa hitungan pulsa, maka sebelumnya hitungan pulsa tersebut harus dikonversi menjadi besar sudut. Apabila hitungan pulsa adalah b, dan encoder mempunyai pulsa sebanyak 1024 dalam satu putaran, maka sudut dapat dicari melalui persamaan:
b 360 ...(3.2) 1024
Gambar 3.10 DFD level 2 sistem pengolahan citra untuk proses nomor 4
3.2.2 Program Aplikasi Pengukur Jarak
Program yang telah dibuat memiliki tampilan seperti pada gambar berikut.
30
Gambar 3.11 Tampilan aplikasi pengukur jarak
Dari gambar dapat dilihat bahwa program mempunyai panel-panel yang pada gambar ditandai dengan angka-angka berwarna kuning. Deskripsi dari masing-masing panel, dengan mengikuti penomoran, adalah sebagai berikut: 1. Panel ini memperlihatkan citra RGB yang ditangkap oleh kamera. 2. Pada panel ini diperlihatkan citra biner hasil operasi thresholding, adanya panel ini bersama dengan panel pertama memungkinkan operator untuk mengecek apakah program mendeteksi titik laser atau terjadi kesalahan dimana yang terdeteksi bukan titik laser yang dimaksud. 3. Panel ini digunakan untuk menyambungkan koneksi USART dengan controller board. Panel ini sekaligus juga menampilkan data sudut laser yang terbaca oleh rotary encoder. 4. Panel ini menampilkan jarak vertikal titik laser dari titik tengah citra dalam satuan pixel. 5. Panel ini menampilkan jarak dari kamera ke titik laser yang terukur melalui metode pengukuran jarak menggunakan pengolahan citra.
31
6. Panel ini digunakan untuk membandingkan hasil pengukuran melalui pengolahan citra dengan yang dihasilkan oleh laser distance sensor. Panel ini dibuat karena hasil dari laser distance sensor sebenarnya adalah jarak secara diagonal. Dengan memasukkan angka hasil pengukuran ke isian pada panel ini dan menekan tombol “Calculate”, maka akan dihasilkan angka hasil pengukuran melalui laser distance sensor yang sebenarnya. 7. Panel ini digunakan untuk memberi perintah posisi sudut kepada motor servo. Posisi sudut yang dicapai nantinya akan terbaca melalui panel ketiga yang telah diterangkan sebelumnya. Untuk dapat menjalankan program ini dibutuhkan langkah-langkah sebagai berikut: 1. Memastikan semua sambungan antara komputer, kamera, dan controller board telah terhubung. 2. Menyalakan sambungan power kamera, laser pointer, dan controller board. Jika ketika controller board dinyalakan terjadi gerakan pada laser pointer, maka controller board harus di-reset kembali. Ini karena jika demikian halnya maka rotary encoder sudah mulai menghitung perubahan sudut, sedangkan perangkat sebelumnya telah diset agar pada saat pertama kali dinyalakan laser pointer menghadap lurus ke depan, dengan kata lain sudut kemiringannya nol derajat. 3. Membuka program Video Capture, dan mengeset agar dapat ditampilkan gambar hasil tangkapan kamera yang berformat PAL, kemudian menutup lagi program tersebut. 4. Menyalakan program aplikasi pengukur jarak (Cyclops). 5. Memilih serial port yang akan digunakan, dan menekan tombol “Connect UART”.
32