SRIKANDI 1, PERSON FOLLOWER ROBOT BASED ON VISION

By: MR. Widodo Budiharto

 

                            srikandi1.JPGsrikandi2.JPG

 

Srikandi  I ialah robot dengan kemampuan mendeteksi Wajah (Face Tracking menggunakan kamera webcam secara realtime, menggunakan OpenCV.  OpenCV ialah program opensource yang dapat digunakan untuk computer vision. Metode pendeteksian wajah ini menggunakan Haar Classifier. Robot ini akan dikembangkan menjadi Robot pelayan yang dapat berbicara dan mendeteksi wajah dan dilengkapi speech recognition.

 

 

 

 

 


                         Blok diagram Sistem Person Follower (Face Tracking)

 

Berikut contoh kode OpenCV :

 

int main( int argc, char** argv )

{

      

    CvCapture* capture = 0;

    IplImage *frame, *frame_copy = 0;

    int optlen = strlen("--cascade=");

    const char* input_name;

 

    if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 )

    {

        cascade_name = argv[1] + optlen;

        input_name = argc > 2 ? argv[2] : 0;

    }

    else

    {

              cascade_name = "c:/program files/opencv/data/haarcascades/haarcascade_frontalface_alt2.xml";

        input_name = argc > 1 ? argv[1] : 0;

    }

 

    cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

   

    if( !cascade )

    {

        fprintf( stderr, "ERROR: Could not load classifier cascade\n" );

        fprintf( stderr,

        "Usage: facedetect --cascade=\"<cascade_path>\" [filename|camera_index]\n" );

        return -1;

    }

    storage = cvCreateMemStorage(0);

   

    if( !input_name || (isdigit(input_name[0]) && input_name[1] == '\0') )

        capture = cvCaptureFromCAM( !input_name ? 0 : input_name[0] - '0' );

    else

        capture = cvCaptureFromAVI( input_name );

 

    cvNamedWindow( "result", 1 );

 

    if( capture )

    {

        for(;;)

        {

            if( !cvGrabFrame( capture ))

                break;

            frame = cvRetrieveFrame( capture );

            if( !frame )

                break;

 

            if( cvWaitKey( 10 ) >= 0 )

                break;

        }

 

        cvReleaseImage( &frame_copy );

        cvReleaseCapture( &capture );

    }

    else

    {

        const char* filename = input_name ? input_name : (char*)"lena.jpg";

        IplImage* image = cvLoadImage( filename, 1 );

 

        if( image )

        {

            detect_and_draw( image );

            cvWaitKey(0);

            cvReleaseImage( &image );

        }

 

Berikut contoh kode untuk menggendalikan servo motor :

 

' {$STAMP BS2p}                                  

' {$PBASIC 2.5}

 

counter VAR Word

sData   VAR     Byte  'Deklarasi variabel

 

DO

IN2

IN3

IF (IN2= 0 and IN3=0) then

Gosub atas

 

LOOP

 

atas:

FOR counter= 0 TO 5

PULSOUT  0, 2000

NEXT

RETURN

 

bawah:

FOR counter= 0 TO 5

PULSOUT  0, 300

NEXT

RETURN

         Hasil pendeteksian wajah

 

Info lebih lanjut dari proyek robot ini dapat menghubungi saya di  widodo@widodo.com.