SRIKANDI
1, PERSON FOLLOWER ROBOT BASED ON VISION
By: MR. Widodo Budiharto


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.