Anda di halaman 1dari 15

 

Robot Line Follower beRbasis USB


 
 

Mengenal Robot Line Follower

Kit AVR Robotics  merupakan contoh penerapan mikrokontroler AVR ATmega8535


pada robot  line folloer.  Gambar berikut menampilkan susunan kaki mikro AVR.

                            

                                     Gambar susunan kaki ATmega8535/16


 

Memrogram Robot Line Follower

Ada banyak program yang dapat digunakan sebagai editor dan compiler program
mikrokontroler.  Yang paling mudah dikenal ialah CodeVision AVR yang berbasis
bahasa C.  Oleh karena itu pada buku ini menggunakan  program tersebut selain
Bascom AVR yang jauh lebih mudah.  Berikut ini contoh pemrograman dasar
mikrokontroler pada robot menggunakan  kit mikrokontroler handal ST-8535 USB
Version yang mendukung pemrograman melalui USB (karena umumnya
komputer/laptop sekarang hanya memiliki port koneksi USB dan serial).  Gambar
di bawah menmapilkan skematik sistem minimum mikrokontroler AVR standar

Gambar   Contoh skema rangkaian sistem minimum AVR (ST-8535 USB version)

Gambar   Kit Mikrokontroler AVR (ST-8535 USB version)


Anda perlu memperhatikan kemampuan driver aktuator jika ingin robot Anda
memiliki kemampuan gerak yang tinggi, misalnya apakah cukup drier dengan
beban maksimal 1A, 2 A atau 5A bahkan lebih, gambar berikut menampilkan
contoh driver motor DC L293D dan L298 yang umum digunakan untuk mobile
robot.

 
(a)                                  (b)
Gambar  Driver Motor DC 1A(1) dan 2A (b)

Sebagai contoh pertama, cobalah Anda memprogram robot line follower, yaitu
robot yang mengikuti garis menggunakan sensor garis berbasis Infra red.  Sensor
terpasang pada Port C.0 dan C.1, sedangkan driver motor DC dipasang pada Port
B.0, B1. B.2 dan B.3. Blok diagram dari robot line follower sederhana dapat dilihat
pada gambar di bawah:

 
Mikro AVR

 
Sensor IR

kanan dan kiri

 
Driver motor DC

Motor DC gearbox dan Roda

 
 

                                                                                               

                 Gambar   Blok diagram robot line follower

Karena menggunakan motor DC sebagai aktuator, maka diperlukan driver motor


DC.  Berikut ini data cara menggerakkan motor DC pada kit driver motor DC
seperti SPC Driver Motor DC :

                             Tabel 1.  Penggunaan SPC DC Motor

Pin Nama Seting Fungsi


S1 Run 1 Stop /Run Untuk menjalankan atau mematikan motor DC 1

Stop berlogika 1

Run berlogika 0
S2 Dir 1 CW/CCW Untuk arah putaran motor DC 1

CW berlogika 1

CCW berlogika 0
S3 Run 2 Sto/Run Untuk menjalankan atau mematikan motor DC 2
Stop berlogika 1

Run berlogika 0
S4 Dir 2 CW/CCW Untuk arah putaran motor DC 2

CW berlogika 1

CCW berlogika 0

Setelah rangkaian dirakit, isilah program mikrokontroler tersebut menggunakan


Codevision AVR.

Setelah program diisi ke mikrokontroler, cobalah dijalankan pada jalur berwarna


hitam, robot harus mampu mengikuti track tersebut, pengaturan ketinggian sensor
sangat mempengaruhi sensitifitas sensor garis tersebut.  Hasil robot dapat dilihat
pada gambar di bawah :

Gambar   Robot  line follower yang sukses dijalankan.

MILIKI ROBOT INI SUDAH JADI DAN KOMPLIT


DENGAN DEMO KODE Rp 850.000
 

Deteksi dan Tracking Obyek Buatan XML Berbasiskan OpenCV

By : Mr. Widodo Budiharto

Metode pendeteksian wajah bermacam-macam. Salah satunya menggunakan metode yang


dibangun oleh OpenCV yaitu cvHAAR. cvHaar adalah teknik modern yang memverifikasi roman
wajah dimana menggunakan peniadaan latar belakang ( background subtraction ). Sejak metode
ini lebih cepat dan akurat dibandingkan metode Lienhart dan lainnya, metode ini yang dipakai
dalam implementasi sistem aktual. Kecepatan pendeteksian kurang dari 500ms.  Kita dapat
mendeteksi berbagai macam obyek dengan membuat file XML sendiri, sebagai berikut :

HaarTraining

File xml dibuat dengan suatu training yang dikenal dengan Haar Training.
Proses training secara garis besar dapat dilihat dengan melalui bagan
pada gambar di bawah. Folder aplikasi berada secara default di Program
Files/OpenCV/bin/

 
Gambar Bagan Haar Training

Dapat dijelaskan sebagai berikut :

a.    Persiapan DataSet

Dataset terdiri dari 2 buah sample. Sample positif adalah gambar yang
mengandung obyek yang akan dideteksi. Jika kita menginginkan wajah
untuk dideteksi maka sample positif berisi gambar – gambar wajah.
Sample negatif adalah gambar yang tidak mengandung obyek yang
akan dideteksi. Seperti gambar pegunungan, mobil dsb. Masukkan
sample positif pada 1 direktori, misalnya positiveSample/rawdata.
Sedangkan sample negatif, dimasukkan pada /negativeSample.
Sample paling minimal 10 buah untuk 1 wajah dalam berbagai pose. 
Catatan: file gambar harus file *.bmp.

b.    Membuat infofile.txt untuk Sample Negative

Gunakan create_list.bat pada folder /negativeSample untuk


mencatatkan nama file sample negative pada infofile.txt.

c.    Membuat info.txt untuk Sample Positive

Kemudian jalankan program objectmarker.exe pada folder


positiveSample. Ketika program ini dijalankan, maka akan muncul satu
per satu file dari sample positiveSample. Kemudian tandai obyek yang
dimaksud dari gambar tersebut dengan menggerakkan kursor mouse
membentuk sebuah box persegi panjang. Kemudian tekan spasi untuk
menambahkan box tersebut, lalu tekan enter untuk beralih pada file
gambar berikutnya. Kalau berhasil, maka info.txt akan berisi data
gambar

d.    Membuat file vector.vec dari Sample Positive

Lalu kita gunakan tool createsamples.exe untuk mengubah obyek


gambar ke  file vec. Jalankan perintah berikut pada dos command.

createsamples.exe -info positive/info.txt -vec data/vector.vec -num 18


-w 20 -h 20

Keterangan parameter tersebut dapat dilihat pada gambar .

Gambar  Keterangan Parameter dari Createsamples.exe

Maka bila hal ini telah berhasil dijalankan maka akan muncul  pada
folder /data, file vector.vec

e.    Memulai HaarTraining

Setelah kita  punya file vector.vec maka kita mulai haartraining.

Jalankan program haartraining.exe di dos command:

haartraining.exe -data data/cascade -vec data/vector.vec -bg


negativeSample/infofile.txt -npos 12 -nneg 2  -mem 1000 -mode ALL -w 20 -h 20
–nonsym
 

Keterangan parameter tersebut dapat dilihat pada gambar di bawah.

Keterangan Parameter dari haartraining.exe

lalu pada folder tools/temp/data/cascade maka akan muncul folder


mulai dari 0 sampai N. Kemudian copy semua folder tersebut pada
tools/cascade2xml/data.

f.     Membuat file *.xml

Jalankan haarconv.exe pada folder /cascade2xml di dos command


sebagai berikut:

haarconv.exe data output.xml 20 20

Jika berhasil, maka akan muncul file output.xml pada folder


/cascade2xml.

Buatlah aplikasi demo tersebut menggunakan webcam berbasis Visual


C++ .Net 2005.

 
 

// Demo Tracking Obyek

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

#include <stdio.h>

#include "capture.h"

#include "capture.c"

#include "facedet.h"

#include "facedet.c"

#include "camshift_wrapper.h"

#include "camshift_wrapper.c"

const char * DISPLAY_WINDOW = "DisplayWindow";

#define OPENCV_ROOT  "C:/Program Files/OpenCV"

//// Global variables

IplImage  * pVideoFrameCopy = 0;

//// Function definitions

int initAll();

void exitProgram(int code);

void captureVideoFrame();

 
 

// main()

//

void main( int argc, char** argv )

      CvRect * pFaceRect = 0;

      if( !initAll() ) exitProgram(-1);

      // Capture and display video frames until a face

      // is detected

      while( 1 )

      {

            // mencari wajah pada next frame

            captureVideoFrame();

            pFaceRect = detectFace(pVideoFrameCopy);

            // Tampilkan image

            cvShowImage( DISPLAY_WINDOW, pVideoFrameCopy );

            if( (char)27==cvWaitKey(1) ) exitProgram(0);

            // exit loop when a face is detected

            if(pFaceRect) break;

      }

      // initialize tracking

      startTracking(pVideoFrameCopy, pFaceRect);


 

      // Track the detected face using CamShift

      while( 1 )

      {

            CvBox2D faceBox;

            CvPoint facePoint;

            // ambil next frame video

            captureVideoFrame();

            // track wajah pada video frame

            faceBox = track(pVideoFrameCopy);

      // Bentuk elips

      cvEllipseBox(pVideoFrameCopy, faceBox,

CV_RGB(50,255,0), 2, CV_AA, 0 );

      cvShowImage( DISPLAY_WINDOW, pVideoFrameCopy );

                  if( (char)27==cvWaitKey(1) ) break;

      }

      exitProgram(0);

int initAll()

{
      if( !initCapture() ) return 0;

     

            if( !initFaceDet(OPENCV_ROOT

            "/data/haarcascades/output.xml"))

            return 0;

      //  Buat jendela display

      cvNamedWindow( DISPLAY_WINDOW, 1 );

      // Initialize tracker

      captureVideoFrame();

      if( !createTracker(pVideoFrameCopy) ) return 0;

      // Set Camshift parameters

      setVmin(60);

      setSmin(50);

      return 1;

void exitProgram(int code)

      // Release resources allocated in this file

      cvDestroyWindow( DISPLAY_WINDOW );


      cvReleaseImage( &pVideoFrameCopy );

      // Release resources allocated in other project files

      closeCapture();

      closeFaceDet();

      releaseTracker();

      exit(code);

void captureVideoFrame()

      printf ("Data : %d\n");

      // Capture the next frame

      IplImage  * pVideoFrame = nextVideoFrame();

      if( !pVideoFrame ) exitProgram(-1);

      // Copy it to the display image, inverting it if needed

      if( !pVideoFrameCopy )

            pVideoFrameCopy = cvCreateImage( cvGetSize(pVideoFrame), 8,


3 );

      cvCopy( pVideoFrame, pVideoFrameCopy, 0 );

      pVideoFrameCopy->origin = pVideoFrame->origin;

      if( 1 == pVideoFrameCopy->origin ) // 1 means the image is


inverted

      {
            cvFlip( pVideoFrameCopy, 0, 0 );

            pVideoFrameCopy->origin = 0;

      }

                                Hasil program menggunakan file XML yang berhasil dibuat

Info lebih lanjut hubungi widodo@widodo.om HP: 081410043883.

Referensi : www.sourceforge.net/projects/OpenCV

Anda mungkin juga menyukai