Académique Documents
Professionnel Documents
Culture Documents
Page |2
INFORMATIONS LEGALES
CONTACTS
Adresse
POB-Technology 11, avenue Albert Einstein 69 100 VILLEURBANNE FRANCE contact@pob-technology.com +33 (0)4 72 43 02 36 +33 (0)4 83 07 50 89
GESTION DU DOCUMENT
Page |3
1. Prsentation ............................................................................................ 4 1.1 Gnralits ................................................................................................. 4 1.2 Outils ncessaires..................................................................................... 4 2. Connexion et mise en route ............................................................ 5 2.1 Dual-POB et PC ....................................................................................... 5 2.2 Dual-POB et servomoteurs ................................................................... 5 2.3 Webcam et PC.......................................................................................... 5 3. Annexe : code & ressources ............................................................. 6 3.1 Programme dexcution DUAL-POB................................................... 6 3.2 Programme de dtection faciale ............................................................ 7
Page |4
1. PRESENTATION 1. 1 GNRALITS
Ce document vous prsentera une manire originale dutiliser votre Dual-POB combine deux servomoteurs et une webcam. Vous serez guids pas pas afin de concevoir une webcam qui dtectera et suivra vos visages. Ci-dessous vous trouverez la liste des programmes ncessaires cette ralisation.
Afin de concevoir votre webcam mobile, il vous faudra vous doter dun Dual-POB, de deux servomoteurs, Cot logiciel, POB-tools, le driver de votre webcam, ainsi que lexcutable fournit suffiront une excution de la dtection. Pour la modifier et concevoir votre propre programme danimation des servomoteurs, dautres logiciels seront ncessaires, tels que OpenCV et Visual Studio. La grande majorit de ce matriel se trouve trs facilement sur notre site commercial robot-advance ( http://www.robot-advance.com/FR/).
AF
Page |5
2. CONNEXION
Cette partie du document vous aidera connecter et charger les programmes ncessaires lutilisation de notre webcam anime.
2.1 DUAL-POB ET PC
Afin de charger votre programme sur votre Dual-POB, connectez votre Dual-POB votre PC via le cble miniUSB. Une fois votre carte alimente et connecte, utiliser loutil dupload Dual-POB pour charger le programme Cam-detection.hex fournit.
2.3 WEBCAM ET PC
Prenez soin davoir install les pilotes de votre webcam lors que vous tenterez de lutiliser. Si vous navez plus le cd-rom dinstallation, vous pourrez retrouver vos pilotes sur le site constructeur, ou encore en suivant lassistant de configuration windows. Une fois les pilotes installs, vous pouvez connecter votre webcam au PC via son cble USB. Il ne vous reste plus qua lancer lexcutable (FaceDetection.exe), et votre Webcam dtectera et suivra vos visages !
Page |6
int main() { UInt8 defDirHB = 180, defDirDG = 92; UInt8 DirHB = 0, DirDG = 1; unsigned char buffer[4], value[2]; SetIOWay(IO_AS_DEFAULT, IO_AS_DEFAULT, IO_AS_DEFAULT, IO_AS_DEFAULT); InitUART0(115200); InitDualServo(); // 200 is top - less then 200 goes down, more goes up // 125 is max down, 225 is max up SetServo(DirHB, defDirHB, 7); // 92 is front - less than 95 turns right, more turns left // 0 is max right, 200 is max left SetServo(DirDG, defDirDG, 7); while(1) { GetBufferFromUART0(&buffer[0], 3); buffer[3] = '\0'; if (strcmp((const char *)buffer, "CDG") == 0) { GetBufferFromUART0(&value[0], 1); value[1]= '\0'; defDirDG = (int)value[0]; SetServo(DirDG, defDirDG, 7); } else if (strcmp((const char *)buffer, "CUP") == 0) { if (defDirHB > 223) { defDirHB = 225; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB + 2; SetServo(DirHB, defDirHB, 7); } } POB TECHNOLOGY Tous droits rserves
Page |7
else if (strcmp((const char *)buffer, "CDO") == 0) { if (defDirHB < 127) { defDirHB = 125; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB - 2; SetServo(DirHB, defDirHB, 7); } } } return 0; }
Une fois sur le site, il vous suffit ensuite de tlcharger opencv-win, la suite se droule comme pour toutes les installations sous Windows : lancez l'installeur, et laissez-vous guider. Une fois linstallation dOpenCV complte, lancez Visual Studio. Il vous faut maintenant intgrer la librairie OpenCV Visual Studio. Lancez Visual C++, puis consultez le menu Outils => Options. Dans la liste de gauche, choisissez Projets et solutions -> Rpertoires de VC++, ensuite slectionnez Fichiers bibliothques dans la liste tout droite enfin cliquez sur l'icne Nouveau Dossier.
Page |8
De la mme manire, slectionnez Fichiers Include dans la liste droulante, et ajoutez les rpertoires suivants : C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\cvaux\include
Ensuite, en choisissant l'option Fichiers source, ajoutez les rpertoires : C:\Program Files\OpenCV\cv\src C:\Program Files\OpenCV\cxcore\src C:\Program Files\OpenCV\cvaux\src C:\Program Files\OpenCV\otherlibs\highgui
Maintenant que la librairie est intgre au logiciel, il faut lintgrer au projet lui-mme. Crez un projet "console" sous Visual (File =>New=>Project),
Page |9
Allez dans le menu Projet -> Proprits. Dans l'onglet diteur de liens, choisissez Entre puis rajoutez, dans les Dpendances additionnelles, les librairies : cv.lib cvaux.lib cxcore.lib highgui.lib Enfin, N'oubliez pas d'inclure les DLL d'OpenCV dans le dossier de votre projet. Elles se trouvent dans le rpertoire C:\Program Files\OpenCV\bin.
Visual Studio est maintenant correctement configur pour travailler avec OpenCV. Pour les autres IDE, il vous faut ajouter les mmes rpertoires que sous Visual Studio.
P a g e | 10
VERIFICATION
Voici un petit programme trs basique qui vous permettra de vrifier si votre configuration a bien t effectue. Glissez dans votre rpertoire projet limage de votre choix en la renommant test.jpg, puis compilez et lancez ce programme #include <cv.h> #include <highgui.h> int main() { // Replace "test.jpg by a picture in the directory of your project IplImage *img=cvLoadImage("test.jpg"); // Create a window cvNamedWindow("Hello World", CV_WINDOW_AUTOSIZE); // Show the picture cvShowImage("Hello World", img); cvWaitKey(0); // Destroy window cvDestroyWindow("Hello World"); cvReleaseImage(&img); return 0; }
Si vous avez bien configur votre Visual Studio, votre image sera affiche dans la fentre !
PROGRAMME FACEDETECTION.C
Maintenant que Visual Studio est configur, vous pouvez charger le code source de notre programme de dtection. #include <Dual-POB.h> int main() { UInt8 portb; UInt8 defDirHB = 180, defDirDG = 92; UInt8 DirHB = 0, DirDG = 1; UInt16 y, x; unsigned char buffer[4], value[2], position[2]; portb = (IO_AS_INPUT << PIN_7); // set the joystick button as input SetIOWay(portb, IO_AS_DEFAULT, IO_AS_DEFAULT, IO_AS_DEFAULT); InitUART0(115200); InitAnalog(); InitDualServo();
P a g e | 11 // 200 is top - less then 200 goes down, more goes up // 125 is max down, 225 is max up SetServo(DirHB, defDirHB, 7); // 92 is front - less than 95 turns right, more turns left // 0 is max right, 200 is max left SetServo(DirDG, defDirDG, 7); y = GetAnalog(7); x = GetAnalog(6); while (GetInput(INPUT_PORTB,INPUT_7) != 1) { y = GetAnalog(7); x = GetAnalog(6); if (y < 100) // up { if (defDirHB < 130) { defDirHB = 125; SetServo(DirHB, defDirHB, 1); } else { defDirHB = defDirHB - 5; SetServo(DirHB, defDirHB, 1); } } else if (y > 900) // down { if (defDirHB > 220) { defDirHB = 225; SetServo(DirHB, defDirHB, 1); } else { defDirHB = defDirHB + 5; SetServo(DirHB, defDirHB, 1); } } if (x < 300) // right { if (defDirDG < 5) { defDirDG = 0; SetServo(DirDG, defDirDG, 1); } else { defDirDG = defDirDG - 5; SetServo(DirDG, defDirDG, 1); } } else if (x > 650) // left { if (defDirDG > 195) { defDirDG = 200; SetServo(DirDG, defDirDG, 1); } else { defDirDG = defDirDG + 5; SetServo(DirDG, defDirDG, 1); } POB TECHNOLOGY Tous droits rserves } }
P a g e | 12 SetServo(DirDG, defDirDG+15, 1); SetServo(DirDG, defDirDG-15, 1); SetServo(DirDG, defDirDG+15, 1); SetServo(DirDG, defDirDG-15, 1); SetServo(DirDG, defDirDGv, 1); while(1) { GetBufferFromUART0(&buffer[0], 3); buffer[3] = '\0'; if (strcmp((const char *)buffer, "CDG") == 0) { GetBufferFromUART0(&value[0], 1); value[1]= '\0'; defDirDG = (int)value[0]; SetServo(DirDG, defDirDG, 7); } else if (strcmp((const char *)buffer, "CUP") == 0) { if (defDirHB > 223) { defDirHB = 225; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB + 2; SetServo(DirHB, defDirHB, 7); } } else if (strcmp((const char *)buffer, "CDO") == 0) { if (defDirHB < 127) { defDirHB = 125; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB - 2; SetServo(DirHB, defDirHB, 7); } } else if (strcmp((const char *)buffer, "GET") == 0) { position[0] = defDirDG; position[1] = defDirHB; SendBufferToUART0(&position[0], 2); } } return 0; }
______________________________________________________________________________________________
Fin du document
P a g e | 13
POB-TECHNOL LOGY 11, aven Albert Einstein nue 69 100 VILLEURBANNE France
Site inte ernet Adresse mail e Tlpho one Fax http p://www.pob-technology y.com/ conta act@pob-tech hnology.com +33 (0)4 72 43 02 36 2 +33 (0)4 83 07 50 89 0