Vous êtes sur la page 1sur 119

Rapport final

WantedTM

Rapport Final

Prsent M. A.Bouchalkha

Institut Polytechnique Priv de casablanca Samedi 18 juin 2005

Page 1

Rapport final

WantedTM

La compagnie Wanted linformatique :

tm

est constitue de huit membres

reconnus dans le domaine de llectronique et de

Azami Kaoutar Bennani Bati Othmane Bouabdillah Younes Fassali Tarik Khazri Amine Maghfour Ala Makel Mohamed Yousfi Sanae

AZAKXXXXX BENOXXXXX BOUY03437 FAST02319 KHAAXXXXX MAGAXXXXX MAKMXXXXX YOUSXXXXX

Page 2

Rapport final

WantedTM

Table des Matire_________________________________

PARTIE I I.DESCRIPTION DE LASPECT GNRAL DU PROJET___________ 9 II.DESCRIPTION DE LA QUALIT SPCIFIQUE & DISTINCTIVE___ 10 III.DCOMPOSITION PRIMAIRE DE LA RALISATION EN SOUS-ENSEMBLE ______________________________________10 IV.EXPERTISES TECHNIQUES REQUISES ____________________12 V.DISTRIBUTIONS DES RESPONSABILITES__________________13 VI.LES FORCES ET LES FAIBLESSES DE NOTRE EXPERTISE _____15 POINTS FORTS _____________________________________16 POINTS FAIBLES ____________________________________16 VII.CALENDRIER DES RENCONTRES FORMELLES _____________17 PARTIE II LA MECANIQUE DU ROBOT CONCEPTION DU PROTOTYPE__________________________19 LE MECANISME DE LA SAISIE ET DU LANCEE DE LA BALLE_____24 PARTIE III I .INSTALLATION DE LA CAMERA LOGITECH PRO4000 _________ 28 SOUS FEDORA CORE III_________________________________28 II.INSTALLATION DE LA LIBRAIRIE OPENCV _________________30 SOUS FEDORA CORE III_________________________________30 SOUS WINDOWS XP___________________________________ 30 III.CALIBRAGE DE LA CAMERA PRO4000_ _____________________ 31 MODELE DE CAMERA PROPOSE PAR ZHANG _______________31 REFERENTIELS ________________________________________40

Page 3

Rapport final

WantedTM

PROCEDURE DE CALIBRAGE___________________________42 CONCLUSION DE NOTRE CALIBRAGE________________________45 IV.ALGORITHME DE DEPLACEMENT DU ROBOT _______________46 ALGORITHME GENERAL___________________________________46 ALGORIHTME POUR LES CAS PARTICULIERS___________________49 V.PROGRAMME DE TRAITEMENT __________________________51 DETECTION DU CENTRE DE LA BALLE JAUNE___________________51 CONVERSION PIXELS CENTIMETRES_________________________56 PARTIE IV I.COMMUNICATION INFRAROUGE__________________________59 II.ALIMENTATION ELECTRIQUE DU ROBOT___________________69

Page 4

Rapport final

WantedTM

ANNEXE REGISTRE DES RISQUE__________________________________73 DIAGRAMME PHYSIQUE_________________________________ 75 DIAGRAMME DE CONTEXTE_______________________________ 76 DIAGRAMME DES PROPRIETES FONCTIONNELLES _____________77 DIAGRAMME DE FONCTIONNALITE_________________________78 PLAN DE TEST_________________________________________79 WBS ________________________________________________80 GANTT_______________________________________________81

Page 5

Rapport final

WantedTM

Liste des figures


PARTIE I : Figure 1 : La table de jeu de Autonomous II6 PARTIE II ; Figure 1 : Ensemble du LEGO Mindtorms.. Figure 2 : Image du RCX.. Figure 3 : Tour infrarouge... Figure 4 : Image du PC-104.. Figure 5 : Camera LOGITECH PRO4000.. PARTIE III : Figure 2 : Les caractristiques de la cible...23 PARTIE IV :

Figure 1 : IS1U60 de Sharp.........................6 Figure 2 : Schma du IS1U60.6 Figure 3 : Recommandation du fabriquant pour la connexion.6 Figure 4 : Chronogramme..6 Figure 5 : Montage du 555 en astable ..6

Page 6

Rapport final

WantedTM

Figure 6 : CQY89..6 Figure 7 : Schma lectronique de la carte IR...6 Figure 8 : Dtails du branchement dune prise RS232.6 Figure 9 : Champ de vision infrarouge dun module RCX6

Page 7

Rapport final

WantedTM

PARTIE I

Page 8

Rapport final

WantedTM

I. DESCRIPTION DE LASPECT GNRAL DU PROJET Le projet consiste en la ralisation dun mini-robot portant le nom d autonomous II qui devra compter un maximum de buts dans un jeu form dune zone interdite et dune zone libre. Il devra avoir la capacit de retrouver la balle lors de la mise en jeu ou bien dans lventualit dun tir manqu. Autonomous II, ralis avec lensemble de Lego Mindstorm, sera muni dune camra Logitech pro4000 pour se reprer dans lair de jeu. Il recevra ses commandes dun ordinateur PC (PC-104) laide dun lien infrarouge qui reliera celui-ci au mini-ordinateur embarqu RCX. Il pourra donc se reprer ainsi que la balle dans le terrain en effectuant le traitement dimages transmises par la camra et ainsi transmettre les commandes effectuer au RCX pour aller chercher la balle, se positionner, avancer, reculer et corriger le tir.

figure 1: La table de jeu de Autonomous II

Page 9

Rapport final

WantedTM

II. Description de la qualit spcifique & distinctive


Notre ajout au projet Autonomus sera de mettre un peu de gaiet au jeu. En fait, lorsquun but sera compt, Autonomus dtectera son exploit pour faire profiter au observateur son plaisir quil a russir. Il fera grce dune petite danse ou dun champ de victoire aux observateurs.

III. Dcomposition de la ralisation en sous-ensemble

Conception du prototype :
Fabriquer la structure du robot laide de lensemble de lego Mindstorm et de diffrentes composantes supplmentaires.

Alimentation lectrique :
Lalimentation du PC embarqu se fait par une pile rechargeable monte sur la structure mcanique. Pour se faire on doit stabiliser la tension fournit au PC embarqu ainsi que concevoir deux boutons poussoirs lun pour la mise en marche du pc-104 lautre pour le dmarrage du jeu.

Communication et connexion :
Autonomous II doit tre entirement autonome. Aucun cble ou lien physique direct ne doit le relier quelque autre composante que ce soit. De plus, limplantation doit remplacer le module de communication infrarouge fourni avec le kit Lego Mindstorm par un systme lectronique, encore bas sur la communication par signal infrarouge.

Installation d'Open CV et utilisation de la camra :


Page 10

Rapport final

WantedTM

Installation de la camera ainsi que les logiciels manipulant cette dernire.

Mcanisme de saisie et de lancement de la balle Contrle du RCX :


Comprendre le fonctionnement du programme opcodes ainsi que son transfert vers le RCX.

Calibrage de la camera :
Ltalonnage gomtrique dune camra est une opration qui demande beaucoup d'attention. Cette tape nous permettra de lier une coordonne de l'image capture avec le monde rel. Cet aspect de la vision numrique est un pr requis pour l'intgration d'une navigation intelligente du robot.

Traitement des images et vision numrique :


Dtection de la position du robot et de lemplacement de la balle. Distinction des couleurs pour se reprer dans lenvironnement.

Algorithme de dplacement du robot :


Programme en langage c ou c++ indiquant au robot les directives suivre selon les nouvelles coordonnes reues.

Calibrage des moteurs :


Calculer lnergie fournir au moteur : * pour parcourir une distance donne. * pour lancer la balle sans quelle ne quitte le but.

Page web :
Conception dune page web indiquant lvolution de notre projet.

les rapports dont les PVs , Ms project et le WBS

Page 11

Rapport final

WantedTM

IV. Expertises techniques requises


Afin de raliser un produit de haute qualit et de remplir toutes les exigences spcifiques du client, plusieurs expertises techniques seront ncessaires. Certaines sont dj assimiles par les membres de WANTED, tandis que d'autres devront tre acquises par ceux-ci au fur et mesure que le projet avancera. Voici une liste qui prsente les principales comptences dont nous aurons besoin pour atteindre nos objectifs :

Principes de la programmation oriente objet (acquis 100%). langage C/C++ (acquis 100%). lments de gnie logiciel (acquis 30%). Principes traitement de l'image (acquis 50%) Aptitude communiquer (oralement et par crit) Notions d'lectricit et d'lectronique (acquis 100%). Notions de mcanique (acquis). Conception de sites Web (acquis 100%). Principes de communication sans fil (acquis 80%)

Page 12

Rapport final

WantedTM

V. DISTRIBUTIONS DES RESPONSABILITES


Yousfi Sanaa Collaboration avec Bouabdillah dans la partie alimentation du PC-104 et la conception du prototype. Participation dans le calibrage des moteurs (linaires et rotations). Coresponsable avec Azami dans la rdaction des rapports hebdomadaires et assistante dans la partie de la carte infrarouge. Maghfour Ala Responsable de la ralisation du circuit de la carte infrarouge. Fassali Tarik Responsable de toute la partie informatique : laboration du systme de vision numrique concernant la reconnaissance des objets, laboration de lalgorithme de dplacement du robot , analyse des librairies servant contrler les entres /sorties du RCX et tablir une communication entre le PC et ce dernier ainsi que le calibrage de la camera et des moteurs. Essais et finalisation du prototype et conception du programme qui le fera fonctionner en plus de larrangement du terrain.

Page 13

Rapport final

WantedTM

Azami Kaoutar Collaboration avec Maghfour dans la ralisation de la carte infrarouge, participation dans le calibrage des moteurs et de la camera et coresponsable avec Yousfi dans la rdaction des rapports hebdomadaires ainsi que coresponsable avec Bouabdillah dans la ralisation dune carte infrarouge et de son circuit imprim. Bennani Othmane Elaboration dans la cration du site web. Dessin des diagrammes initiaux de lalgorithme de deplacement. Amine Khazri Responsable de la cration du site web de la compagnie et de sa mise jour rgulire. Amnagement du terrain coresponsable avec maghfour dans les essais dune carte infrarouge. Bouabdillah younes Dveloppement et design du robot. Responsable de lalimentation du PC-104 et coresponsable de la ralisation de lalgorithme de dplacement ainsi que les calibrages des moteurs et de la camera. laboration et essaie dune carte infrarouge ainsi que son circuit imprim. Essais et finalisation du prototype ainsi que la participation lamlioration du programme qui le fera fonctionner en plus de larrangement du terrain. Page 14

Rapport final

WantedTM

Makel Mohammed Responsable de la coordination de lquipe : rserver un local de runion , informer les membres de lquipe de la tenue de celles-ci et vrifier leurs disponibilit pour les semaines venir. Coresponsable de la partie NQC , OPCODE.

VI. LES FORCES ET LES FAIBLESSES DE NOTRE EXPERTISE


Points forts Wanted
TM

compte sur une quipe de professionnels ayant diverses

connaissances importantes pour la ralisation du projet. Voici dabord les principaux points forts sur lesquels est btie notre expertise : Notre quipe provient de divers domaines de spcialisation tels que le gnie informatique ainsi que le gnie lectrique. Tous les membres ont une bonne exprience en design et en gestion de projet de ce type. Tous nos membres ont une bonne exprience en C++, La plupart des membres comptent aussi une bonne exprience dans la

conception dalgorithmes, ce qui sera grandement utile pour diverses parties du projet, tel que le positionnement du vhicule.

Page 15

Rapport final

WantedTM

Points faibles Il est galement crucial de bien cibler les points importants de notre travail o il faudra dabord effectuer une recherche concrte pour mettre jour nos connaissances dans certaines comptences : la consultation de professionnels et la recherche dinformations nous aideront mieux comprendre et raliser la partie concernant le traitement dimage du projet. La communication sans fil est aussi un point o il faudra trouver davantage dinformations, selon diverses ressources, pour tirer profit au maximum de cette technologie. Vu lenvergure du projet et le nombre de personnes travaillant sur celui-ci, la communication lintrieur de lquipe est importante, et il peut savrer parfois difficile de se rejoindre et de fixer des runions. Cependant, un bon plan de travail, le courrier lectronique utilis efficacement au bon dveloppement des oprations.

Page 16

Rapport final

WantedTM

VII . Calendrier des rencontres formelles

Des rencontres formelles sont organises tous les jeudis aprs-midi. Ces rencontres permettront de mettre au point les nouveaux lments apporter au projet dans la semaine suivante. Il est noter que des rencontres peuvent tre ajoutes au besoin selon la charge de travail. Le diagramme de Gantt peut fournir plus de dtails ce sujet.

Page 17

Rapport final

WantedTM

PARTIE II

Page 18

Rapport final

WantedTM

I . DESCRIPTION DES COMPOSANTS : LEGO Mindstorms : Les LEGO Mindstorms sont ns il y a une quinzaine dannes de la collaboration entre LEGO et le Massachusetts Institutes of Technology (MIT). Fred Martin, un chercheur du MIT, a particip grandement au dveloppement de la technologie actuellement utilise dans les microprocesseurs. Cest ensuite la contribution du Professeur Seymour Papert qui a permis lintgration dun langage de programmation dans la brique LEGO. En effet, ce dernier est un pionnier dans lintelligence artificielle et est lorigine du Logo1 programming language. En travaillant conjointement avec LEGO, il a donc particip son intgration la brique LEGO. Le matre mot de LEGO est, A first-time user with basic PC skills can design, program, and build a simple robot within one hour.

Page 19

Rapport final Figure -1- : Ensemble du LEGO Mindstorms RCX :

WantedTM

RCX Robotics Command System est une brique programmable de LECO. Le RCX comporte trois ports (dentres) de dtecteur , trois ports de sorties , quatre boutons de commandes , un cran cristaux liquides et un metteur infrarouge. Il contient galement un microprocesseur pour traiter les programme , une mmoire interne pour stocker les microprogrammes et programme ainsi quun haut parleur intgr pour mettre les bips et tonalits . Ce petit cerveau peut excuter 1000 commandes par secondes. Il fonctionne avec un microcontrleur 8 bits de la gamme Hitachi H8/3297 une vitesse de 16 MHz. De plus, pour communiquer avec un ordinateur un port infrarouge a t mis en place.

Page 20

Rapport final

WantedTM

Figure 2- :Image du RCX TOUR INFRA-ROUGE : La tour infrarouge tablie une liaison sans fil entre lordinateur et le RCX. Elle permet de tlcharger des programmes vers le RCX partir de lordinateur . ces programmes peuvent tre excuts par le RCX . La tour infrarouge se sert des signaux infrarouge pour envoyer des messages .

Page 21

Rapport final

WantedTM

Pour quils puissent communiquer , le RCX et la tour doivent tre en mesure de ce voir (une distance denviron 10-15 cm est conseill pour le tlchargement ) .

Figure 3- : Tour infrarouge

Page 22

Rapport final

WantedTM

PC-104 : Le PC-104 est une nouvelle carte puissante dunit centrale de traitement de Geode qui contient un processeur stable de Geode , le PCI VGA donchip pour lappui daffichage cristaux liquides de VGA et de TFT , et le morceau plein dEthernet du rendement intel. Le systme utilis dans le cadre du cours dispose dun processeur Geode 300 mHz (GX1-300) supportant les instructions x86. En plus de ses 256 Mo de ram, il dispose de 1 Go de stockage sur une carte CompactFlash, identique celles utilises dans les appareils photo numriques. Il dispose galement dun module PCMCIA ajout deux fentes, une delles utilise par une carte rseau sans-fil Aironet 350 de Cisco. Le systme actuellement install sur cette carte est Fedora Core 3 utilisant le kernel 2.6.9-1.11.

Figure 4- : Image du PC-104

Page 23

Rapport final

WantedTM

Camera LOGITECH PRO4000 :

La camera LOGITEH PRO4000 est dote dun zoom numrique , un micro intgr et un capteur CCD VGA haute qualit. Elle permet de capturer des images dune rsolution de 1 mga pixels.

Figure 5- : Camera Logitech PRO4000

II.

Mcanisme de saisie de la balle :

Dfinition : La mcanique du robot est constitue dun mcanisme permettant de saisir et de manipuler la balle.

Page 24

Rapport final Description :

WantedTM

Ce mcanisme est constitu des composantes suivantes : Un bras manipulable verticalement et dune hauteur par rapport au sol denviron 7 8 cm . Un moteur situ dans le haut du robot . Deux supports horizontaux afin de fixer la balle lintrieur du bras . Un poids simul par des legos permettant de modifier la vitesse de rotation exerc par le moteur.

Fonctionnement : Lorsque le moteur est actionn, celui-ci active le bras . Dpendamment du sens de rotation du moteur , le bras va soit se refermer ou souvrir. Lorsque le robot est en position de saisir la balle, le mcanisme reoit lordre de fermer le bras et entranant ainsi la balle sur les deux supports horizontaux. Cest cet endroit que le robot gardera la balle lors de ses dplacements. Une fois positionn pour un tir, le mcanisme de saisie recevra linformation douvrir son bras permettant ainsi un tir vers le but.

Page 25

Rapport final Lien avec le reste du robot :

WantedTM

Le moteur du mcanisme de saisie est la composante qui est en constante interaction avec le reste du robot. En fait, il est reli au RCX qui lui envoie les signaux lorsquil doit effectuer une ouverture ou une fermeture des deux bras. Les signaux commandant le RCX proviendront de lordinateur via le lien infrarouge.

Page 26

Rapport final

WantedTM

PARTIE III

Page 27

Rapport final

WantedTM

I.

INSTALLATION DE LA CAMERA LOGITECH PRO4000

SOUS FEDORA 3 : Il est prsum que lordinateur possde dj une installation de Fedora Core 3, bien que linstallation soit bien sr possible sous dautres distributions. Afin de faire fonctionner la camra Logitech QuickCam 4000 sous Linux, il faut compiler et installer le module PWC disponible sur le site : http://www.saillard.org/linux/pwc/. Selon que les modules sont compils sparment du kernel ou inclus dans celui-ci, la procdure dinstallation est diffrente. Voici la description des deux procdures (Extraite du site http://www.saillard.org/linux/pwc/).

1) tlcharger le fichier http://www.saillard.org/linux/pwc/files/pwc10.0.6a.tar.bz2 (ou le dernier fichier disponible sur le site) 2) dcompresser le fichier par la commande: # tar xjf pwc-10.0.6a.tar.bz2 3) compiler le module (si on dispose des sources du kernel actuel) # cd pwc-10.0.6a # make 4) passer sous l'utilisateur root # su 5) Si une version prcdente du module a dj t installe, lancer la commande suivante pour effacer le module. Page 28

Rapport final # find /lib/modules/`uname -r`/ -name "pwc*.ko*" # rm <nom du fichier.ko> 6) Copier le nouveau module sur l'ancien # make install ou # cp pwc.ko <rpertoire originale du module pwc.ko> # depmod -a 7) Dcharger le module ou redmarrer la machine # rmmod pwc # rmmod pwcx # modprobe pwc

WantedTM

SOUS WINDOWS XP 1) 2) 3) 4) 5) Insertion du CD de la camera logitech . Ouverture dune fentre Installer le Logiciel QuickCam . On poursuit les procdures Le PC dmarre aprs la fin de linstallation. On connecte la camera au PC et linstallation sachve

automatiquement.

Page 29

Rapport final II. Installation de la librairie OpenCV

WantedTM

SOUS FEDORA CORE III La librairie OpenCV est assez simple installer. Les librairies dont elle dpend sont dj toutes installes dans la distribution de Redhat. dabord tlcharger le code source sur le site officiel de la librairie : http://www.intel.com/research/mrl/research/opencv/ Dcompressez ensuite larchive OpenCV-0.9.6.tar.gz dans un rpertoire de votre choix. La procdure dinstallation est ensuite explique dans le fichier INSTALL qui aura t extrait dans ce rpertoire. Celle-ci est tout fait standard et se rsume en gros la squence de commandes suivante : ./configure --prfix=[rpertoire o vous dsirez installer la librairie] make make install ldconfig Le chemin dinstallation par defaut est /usr/local/lib et /usr/local/include/opencv, Donc nous devons ajouter /usr/local/lib /etc/ld.so.conf et executer ldconfig de nouveau . Il faut copier le fichier opencv.pc qui est repertorie dans /usr/local/share/opencv/pkgconfig dans le repertoire /usr/lib/pkgconfig. Le code source de la librairie tant assez volumineux, la compilation est assez longue

Page 30

Rapport final

WantedTM

Pour tester OpenCV taper : run /usr/local/bin/cvtest /usr/local/bin/cxcoretest Ou Compiler et executer les exemples suivant : /usr/local/share/opencv/samples, e.g.: Voici la commande pour compiler g++ `pkg-config --cflags opencv` -o morphology morphology.c `pkg-config --libs opencv`

III. CALIBRAGE DE LA CAMERA PRO 4000 Ltalonnage gomtrique dune camra est une opration qui demande beaucoup d'attention. Cette tape nous a permis de lier les coordonnes de l'image capture avec le monde rel. Cet aspect de la vision numrique est un pr requis pour l'intgration d'une navigation intelligente de notre robot. Modle de camra propos par Zhang Le modle de camra quon a utilis est celui dun stnop (pinhole) et correspond celui utilis par Zhang dans (Zhang, 2000). Il fournit la relation entre les points de l'espace exprims dans un repre global et

Page 31

Rapport final

WantedTM

leur projection dans le plan image, exprime dans le repre image. Il prend la forme matricielle suivante :

est un point dans l'espace

exprim dans un repre global (en millimtres).

est la projection du point

sur le plan

image de la camra exprime dans le repre image (en pixels). est un facteur d'chelle arbitraire.

est la matrice de rotation 3x3.

est un vecteur de translation 3x1.

et

dcrivent les paramtres extrinsques de la camra

et donnent la transformation qui permet de convertir les coordonnes exprimes dans le repre globale en coordonnes exprimes dans le repre camra.

Page 32

Rapport final Paramtres intrinsques

WantedTM

Ce sont les paramtres propres la camra ; ces paramtres permettent de projeter un point dont les coordonnes sont connues dans le repre de la camra. Les paramtres intrinsques sont valides pour une mme camra peu importe sa position dans lespace. Il est important de bien ajuster le focus de votre camera avant de capturer des images. Si le focus change, il vous faudra recalculer les paramtres intrinsques. -Les paramtres intrinsques incluent aussi: k1, k2 : coefficients de distorsion radiale cause par la ou les lentilles.

Paramtres extrinsques Ces paramtres dcrivent la position de la camra dans lespace. Les paramtres extrinsques sont valides pour une pose donne. La matrice de rotation est ortho normale, la rotation inverse est la transpose. Rfrentiels (ou repres)

Page 33

Rapport final

WantedTM

Voici les diffrents type de rfrentiels quon a rencontrer au long de notre projet. Rfrentiel image

u et v dcrivent les coordonnes en pixels.

Rfrentiel world (repre global)

Page 34

Rapport final Procdure de calibrage On a parcouru 5 tapes pour raliser le calibrage: o Prendre 4 images de la cible (cible de calibration). o Dtecter les 4 coins de chaque carr de chaque cible (n images x 25 carrs x 4 coins / carr). o Calculer les paramtres intrinsques et extrinsques l'aide de l'algorithme de Zhang. o Utiliser et intgrer les paramtres dans une fonction de rtro-projection.

WantedTM

a)

Prendre 4 images de la cible

Pour cette premire tape on a pris des images dune cible de calibration sous diffrentes poses tout en sachant que : Nos images doivent tre d'une bonne qualit (ajustez le focus manuellement avant de dbuter). Il faut sauvegardez nos images en format *.tif travailler avec le logiciel ImageProcessor2 sous windows. Si possible, la cible doit occuper le maximum d'espace dans l'image. Les poses de nos cibles doivent toute tre diffrentes. Une pose avec un angle trop rasant augmentera l'erreur de positionnement. Lors de la prise dimages, il faut varier lorientation du plan de la Page 35 pour

Rapport final cible (autour des axes x et y). Cependant, ne cible autour de laxe z. pas tourner la

WantedTM

1. Prendre des images de la cible sous diffrents plans. -Voici trois exemples:: image2.tif

image3.tif

Page 36

Rapport final

WantedTM

image4.tif

2. Prendre 1 image partir de votre robot (pose finale de la camra) La camera doit tre fixe sur notre robot. La camera doit pointer vers le sol (avec un angle dau moins 25 degrs), si elle est parallle au sol, les rsultats risquent d'tre invalides. La cible doit tre pose sur le sol dans le champ de vue de la camra -Voici un exemple de la cible vue par notre robot :

Page 37

Rapport final ima ge1.tif

WantedTM

b) Dtecter les 4 coins de chaque carr de chaque cible La deuxime tape consiste extraire les points de chaque carr de chaque cible ( n cibles x 25 carrs / cible x 4 coins / carr). On a utilis le logiciel : ImageProcessor2 sous Windows pour viter un surplus de travail (Ralis par Eric Samson, tudiant au doctorat au LVSN). Ainsi, on a obtenu n listes de points correspondant chacune des imagesprises. Ces listes de points sont ncessaires pour obtenir les paramtres intrinsques et extrinsques de notre camera pour valuer la pose du robot. Marche suivre 1. Ouvrir le logiciel Image Processor 2 (sous Windows) 2. Appuyer sur Target Param, pour enter les dimensions de notre cible.

Page 38

Rapport final Dans ce cas-ci, notre cible comporte 25 carrs de 0,02 m rpartis sur 5 ranges et 5 colonnes. La distance entre les carrs est galement de 0,02 m.
o

WantedTM

Distance entre les carrs = Distance Between Target

Elements. (m)
o o

Dimension des carrs = Size (m) Coordonnes World du coin suprieur gauche de la cible =

Upper Left T.E. World Coordinates (m)

Figure 2 : les caractristiques de la cible

Page 39

Rapport final 3. Appuyer sur Open, pour ouvrir notre image de format *.tif. Ouvrir en premier l'image reprsentant la pose du robot. 4. Appuyer sur Extract points, Il se peut que les 100 points ne soient pas tous dtects (surtout pour la pose du robot). Dans ce cas-ci il faut sassurer d'avoir au moins 80 points. Sinon, prendre une nouvelle image et tenter de maximiser le nombre de points dtects. 5 Appuyer sur Add Points pour cumuler les points de cette cible. 6. Rpter les tapes 3 5 pour les images subsquentes (image2.tif, image 3.tif et image4.tif) et cumuler la totalit des points. 7. Appuyer sur Save pour sauvegarder chacune des listes de points.
-

WantedTM

Slectionner le format .zlp. Inscrir le nom de sauvegarde suivant : Image.zlp.

8 .On obtient les fichiers suivants :


o o

ImageModel.zlp = Points de la cible rfrence en m ImageData1.zlp = Points de la pose 1 (image

reprsentant la pose du robot)

Page 40

Rapport final
o o

WantedTM

ImageData2.zlp = Points de la pose 2 ImageData3.zlp = Points de la pose 3 o ImageData4.zlp = Points de la pose 4

c) Calculer les paramtres intrinsques et extrinsques l'aide de l'algorithme de Zhang La troisime tape consiste calculer les paramtres intrinsques et extrinsques l'aide du logiciel EasyCalib ralis par Zhang (SiteWeb : http://research.microsoft.com/~zhang/calib/ ). EasyCalib prend en entre les fichiers *.zlp et gnrera un fichier wanted.txt comprenant les paramtres intrinsques de la camra ainsi que les paramtres extrinsques pour chacune des poses. Marche suivre 1. Tlcharger l'archive EasyCalib.zip 2. Dcompresser l'archive 3. Ouvrir une fentre Command Prompt. (sous windows)

Page 41

Rapport final 4. Taper la ligne de commande suivante dans le rpertoire comprenant les fichiers *.zlp :
o

WantedTM

EasyCalib ImageModel.zlp ImageData 1 4 .zlp wanted.txt -

distortion

Figure 3 : page de commande de cration du fichier wanted.txt

5. EasyCalib gnrera le fichier texte wanted.txt : Paramtres intrinsques de la camera : 815.148 0.621061 815.103 338.187 262.282 K1=0.12314 K2=-0.117247

La matrice Q et T de la pose finale : 0.999423 0.0320142 -0.011337 Page 42

Rapport final -0.00466218 0.459978 0.887918 0.0336407 -0.887353 0.459862 -0.00257484 0.135489 0.128626 6. Dans le fichier, lordre des paramtres est , , , u0, v0,

WantedTM

suivis de k1 et k2. Ce sont les paramtres intrinsques. Viennent ensuite la matrice de rotation (3x3) suivie du vecteur de translation pour chacune des positions de la cible.

d) Utiliser et intgrer la librairie Zhang dans un projet MFC (sous windows) La dernire tape consiste concevoir une fonction transformant le point image en un point 3D. a nous a permis de tester la qualit de notre calibrage. Un Projet MFC est disponible: DemoCalibV2.zip.

Marche suivre 1. Rcuprer l'archive DemoCalibV2.zip. 2. Dcompresser l'archive 3. Compiler le projet 4. Excuter DemoCalib.exe

Page 43

Rapport final

WantedTM

Figure 4 : fentre de Demo Calib

5. Appuyer sur Load Parameters.


o

Charger le fichier wanted.txt pour paramtrer la fonction.

Entrer le point image souhait dans 'application DemoCalib et appuyez sur Apply Zhang.

Page 44

Rapport final

WantedTM

Conclusion de notre calibrage


Aprs avoir effectuer toutes les tapes dcrites cidessus on a pu avoir une prcision de +/- 1cm , en dautres termes on peut dterminer ou localiser nimporte quel objet avec une erreur de 1cm sur le terrain de jeu ce qui est une bonne chose quoiquil faut lamliorer plus .

Page 45

Rapport final

WantedTM

IV. Algorithme de dplacement du robot: Tout d' abord, les hypothses formules avant le dveloppement de l' algorithme sont les suivantes: Voici aussi la configuration suppose:

Page 46

Rapport final

WantedTM

Le robot, ou autrement dit le pc embarqu a besoin des images captes par la camra pour faire son traitement et actions, la figure ci-dessous illustre ceci: Ce cycle est bien entendu contrl par le teste du temps restant, chose qui n' est pas illustre pour allger la figure. La tche du robot n' est sense dbuter qu' aprs avoir press la touche run du robot. Pour ce qui est des cas spciaux, c' est lorsque le robot cherche le balle dans la zone interdite, dans ce cas, il pourra trouver le centre du goal mais pas la ligne rouge, dans ce cas le dplacement c' effectuera ainsi:

Page 47

Rapport final

WantedTM

ALGORITHME GENERAL :

Page 48

Rapport final

WantedTM

Une fois le bouton de marche est press, le Robot commence par excuter le programme principal, celui-ci fera des appels diffrentes fonctions de traitements, de dcision ou encore de commandes. Le programme doit se drouler comme suit : Le robot commence par prendre une image, il filtre cette image dabord en liminant tout ce qui est lextrieur du terrain, ensuite le programme fera un balayage de limage pour trouver la balle et ainsi trouver le centre de celle-ci . si le centre nest pas trouv on fait une rotation de 40 dans le sens horaire et refait les mmes tapes en haut ,sinon si le centre de la balle est trouv on calcule la distance et langle qui faut pour la centrer , une fois cest fait il ne reste que donner les commandes au moteur pour se dplacer vers celle-ci . Et voila la balle est capte. Aprs on refait les mmes tapes pour la recherche du but avec une seule diffrence, cest quon ne va pas calculer la distance entre le robot et le but mais on va juste le centrer , on commence la recherche de la ligne rouge et cest l ou on va trouver quelque cas spciaux puisque la position du robot ne doit pas changer du moment ou il est centre avec le but .sinon on a qu calculer la distance entre le robot et la ligne rouge et donner la commande de dplacement et de tir et voila le jeu est fait .

Page 49

Rapport final

WantedTM

L' algorithme pour les cas particulier est le suivant:

Page 50

Rapport final

WantedTM

V. PROGRAMME DE TRAITEMENT

Cration dimage #include <cv.h> IplImage *im; im = cvCreateImage(cvSize(512,256), IPL_DEPTH_8U, 3); /* Image 512 x 256 de unsigned char avec 3 canaux */ Remplissage : (codage par dfaut = BGR) pteur = (unsigned char*)im->imageData; fin = im->width*im->height; for(i=0; i<fin; i++) { *(pteur++) = 255; /* Bleu */ *(pteur++) = 0; /* Vert */ *(pteur++) = 0; /* Rouge */ } Libration de lespace mmoire cvReleaseImage(&im);

Page 51

Rapport final Capture dimage

WantedTM

CImage lImageOrg, lImageProc; CCamera lCam; CvSize lSize = cvSize(320,240); lCam.connect(0); lCam.setSize(lSize); IplImage* lIplImage = cvCreateImage(lSize,IPL_DEPTH_8U,3); lImageOrg.CopyOf(lIplImage); lCam.capture(lImageOrg.GetImage()); lImageProc.CopyOf(lImageOrg.GetImage());

Trouver le centre dun objet : IplImage* findballcenter(IplImage *src) { int x=0,y=0,k,x1=-1,y1=-1,x2,y2; char* lImageData = src->imageData; int lImageDataStep = src->widthStep;

Page 52

Rapport final CvSize lSize = cvSize(src->width,src->height); unsigned char lR, lG, lB,lNewR,lNewB,lNewG; k=lSize.height; for(int i = 0; i <lSize.height; i++){ if(y!=0) break; for(int j = 0; j < lSize.width; j++){ lB = (lImageData + lImageDataStep*i)[3*j]; lG = (lImageData + lImageDataStep*i)[3*j + 1]; lR = (lImageData + lImageDataStep*i)[3*j + 2]; if(lR>=240 &&lG>=200 &&lB<=180 ) { y=i;break; } } } for(int i = k; i >=0; i--){ if(y1!=-1) break; for(int j = 0; j < lSize.width; j++){ lB = (lImageData + lImageDataStep*i)[3*j]; lG = (lImageData + lImageDataStep*i)[3*j + 1]; lR = (lImageData + lImageDataStep*i)[3*j + 2]; if(lR>=240 &&lG>=200 &&lB<=180 ) { y1=i;break; } } }

WantedTM

Page 53

Rapport final for(int i = 0; i< lSize.width; i++){ for(int j = 0; j < lSize.height; j++){ lB = (lImageData + lImageDataStep*j)[3*i]; lG = (lImageData + lImageDataStep*j)[3*i + 1]; lR = (lImageData + lImageDataStep*j)[3*i + 2]; if(lR>=240 &&lG>=200 &&lB<=180 ) {x=i;break;} } if(x!=0) break; } for(int i = lSize.width; i >= 0; i--){ for(int j = 0; j < lSize.height; j++){ lB = (lImageData + lImageDataStep*j)[3*i]; lG = (lImageData + lImageDataStep*j)[3*i + 1]; lR = (lImageData + lImageDataStep*j)[3*i + 2]; if(lR>=240 &&lG>=200 &&lB<=180 ) {x1=i;break;} } if(x1!=-1) break; } x2=x+((x1-x)/2); y2=y+((y1-y)/2); CvPoint loc; loc.x=x2;loc.y=y2; cvCircle( src,loc ,5, CV_RGB(0,0,0),5 ); /* (lImageData + lImageDataStep*y2)[3*x2] = 255;

WantedTM

Page 54

Rapport final (lImageData + lImageDataStep*y2)[3*x2 + 1] = 0; (lImageData + lImageDataStep*y2)[3*x2 + 2] = 0;*/

WantedTM

//cout<<x<<" "<<y<<" "<<x1<<" "<<y1<<" "; std::cout<<"le centre de la balle se trouve peu prs :"; std::cout<<"(x,y)=("<<x2<<','<<y2<<") "; return src; } La conversion pixels Centimetres Cette conversion se fait au niveau du programme principale main int main( int argc, char** argv ) { double a=0,b=0,c=0; char* filename = argc == 2 ? argv[1] : (char*)"terrain.bmp"; if( (src = cvLoadImage(filename,1)) == 0 ) return -1; image = cvCloneImage(src); Zhang *zhang; //create windows for output images cvNamedWindow("Opening&Closing window",1); cvNamedWindow("image",1); zhang = new Zhang(); if (zhang->SetParameters("wanted.txt")) Page 55

Rapport final std::cout<<"probleme d'ouverture du fichier wanted.txt"; zhang->Apply(x,y,a,b,c); std::cout<<"la coordones reel du centre de l'objet sont "; std::cout<<a<<" "<<b<<" "<<c;
return 0;

WantedTM

Pour plus de details et explications sur le programme vous pouvez consulter le site suivant : http://21405.gel.ulaval.ca/references/exempleCV_QC.html Fonctions principales utilises dans le traitement dimage sont : * La fonction IplImage* findballcenter(IplImage *src) sert a retrouver le centre de la balle jaune aprs un filtrage dimage,la mthode utilise consiste a faire deux balayage pour trouver le s deux premiers pixels situ en allons du bas vers le haut et de trouver le centre des deux point qui correspond au point de contact de balle avec le sol. * La fonction IplImage* findgoalcenter(IplImage *src) sert a retrouver le centre du goal en utilisant le mme principe que celui de la balle toute en modifiant les plages de couleurs correspondantes au but. * La fonction IplImage* findredlinecenter(IplImage *src) sert a retrouver la ligne rouge, en utilisant le mme principe sauf quon balaye du bas vers le haut.

Page 56

Rapport final * Les fonctions IplImage* findorgcenter(IplImage *src) IplImage*

WantedTM

findbluecenter(IplImage *src) servent retrouver le centre des coins tout en balayant les images des quatre cots. * la fonction IplImage* filtrage(IplImage *src) sert a filtrer lexterieur du terrain a partir des bords noirs. La fonction IplImage* contrastBrightness(Iplimage *src , int contrast , int brightness) sert a jouer sur le contraste et la luminosit de limage. Les lignes de code de ces fonctions se trouveront dans les annexes.

Page 57

Rapport final

WantedTM

PARTIE IV

Page 58

Rapport final I. Emission et rception infrarouge 1. Introduction

WantedTM

Les communications sans fil sont intressantes depuis tous les points de vue et dans tous les domaines technologiques. Le fin principal que perscute la ROBOTIQUE MOBILE est la cration de systme compltement autonome et un degr dautonomie peut tre la communication entendue en un sens vaste, c'est--dire, entre diffrents robots, entre les robots et un ordinateur de base, entre les robots et autres lments de lenvironnement ou entre les robots et les tre humains. De nombreuses technologies nous permettent dtablir des communications sans fil, mais dans notre projet, on va sintresser la communication infrarouge, qui par exemple, servira envoyer depuis le PCM des donnes au RCX et vis versa. 2. Rception Pour la rception on va utiliser un dispositif qui unifie dans le mme botier un rcepteur de lumire infrarouge, une lentille et toute une logique ncessaire pour distinguer des signaux moduls une frquence dtermine. Concrtement, on va utiliser le rcepteur IS1U60 de Sharp (Figure-1-) qui sactive lors dune dtection de lumire infrarouge module 38 [kHz] (le faisceau infrarouge sallume et steint 3800 fois par seconde).

Page 59

Rapport final

WantedTM

Figure-1- : IS1U60 de Sharp Sur le march, on peut trouver dautres alternatives tant de la mme compagnie que dautres fabricants. Sharp propose aussi autres rcepteurs infrarouges comme par exemple le IS1U61, similaire celui utilis dans notre projet mais avec plus de rang de rception (8 mtres face aux 5 du IS1U60). Par autres fabricants, on distingue le PNA4602 ou PNA4612 de Panasonic, le LTM-97-DS-38 de LiteOn ou le SFH5110 de Siemens. Dans cette comparative on peut trouver des informations additionnelles sur les performances des uns et des autres.

Bien que les broches sont diffrentes entre distincts fabricants, et quon se voit oblig de consulter le datasheet correspondant avant de raliser quelconque connexion, en tout les cas nous serons amens rencontrer trois broches : une quon va connecter Vcc, une autre quon va mettre la masse, et une troisime, Vout, pour laquelle , on obtient diffrents niveaux si on reoit ou non le signal infrarouge (dans le cas de Sharp, un niveau haut

Page 60

Rapport final

WantedTM

se traduit par aucune dtection de signal, ou un niveau bas si on reoit un signal infrarouge modul). Tel comme montr sur la Figure-2-, avec le IS1U60 vu den face, les pattes de gauche droite correspondent Vout, GND et Vcc.

Figure-2- : Schma du IS1U60

Pour la connexion, le fabricant recommande lutilisation dun filtre de connexion de lalimentation comprenant une rsistance de 47[] en srie avec Vcc et un condensateur de 47[F] entre Vcc et GND comme cest indiqu sur la Figure-3-. Ceci reste un conseil, on peut tout de mme raliser les connexions sans ces lments et les rsultats seront approximativement les mmes, si bien lutilisation de ce filtre est souhaite.

Page 61

Rapport final

WantedTM

Figure-3- : Recommandation du fabricant pour la connexion 3. Emission Pour transmettre les informations par infrarouge, on doit utiliser une onde porteuse de frquence leve. La longueur donde qui correspond cette frquence ( = C / F, avec C = 300 000 [Km/s]) est la caractristique du poste metteur. 3.1 Gnration de la porteuse

Pour se faire, on utilise un timer 555 configur en multivibrateur astable. Utilis comme cela, il ne possde pas dtat stable (comme en mode monostable), ce qui veut dire quil ne peut rester indfiniment dans le mme tat. Autrement dit, en astable, il oscille et engendre un signal de sortie rectangulaire dont le coefficient de remplissage (facteur de forme ou rapport cyclique) est, comme la frquence sont ajustables, ce qui va faire notre porteuse de 38 [kHz].

Page 62

Rapport final 3.2

WantedTM Emetteur avec 50% de cycle de travail et de frquence 38

[kHz] Le mode multivibrateur Astable ( free-running ) produit des crneaux en continu .La frquence des crneaux est dtermin par R1 , R2 et C1 .Dans un premier temps le condensateur C1 est dcharg. Quant on applique un signal sur la gchette, le condensateur commence se charger au travers des rsistances R1 et R2, pendant un laps de temps t1, durant lequel la sortie est en tat haut, et ce, jusqu' ce que la tension en C1 atteigne les 2/3 de lalimentation.

Figure-4- : chronogramme Par ailleurs, partir de ltat antrieur, C1 commence se dcharger via R2 durant un laps de temps t2 jusqu' ce que la tension de C1 atteigne 1/3 de lalimentation. Dans cet intervalle, la sortie sera en tat bas. C'est alors que le cycle recommence.

Page 63

Rapport final

WantedTM

Calcul de R1, R2 et C1 D = (R1 + R2) / (R1 + 2R2) F = 1.44 / [R1 + 2R2).C] En prenant D = 0.5 et F = 38 [kHz], avec une capacit de 1 [F], on trouve R1 = 2 [k] et, R2 = 18 [k].

Figure-5- : Montage du 555 en astable

NB : pour de plus amples informations, referez-vous notre rubrique Annexe.

Page 64

Rapport final

WantedTM

Comme metteur, on utilise une LED infrarouge de 5 [mm], concrtement une CQY89 (Diode infrarouge de tlcommande en botier de diamtre 5 mm), qui met avec un angle de 25, infrarouge, . 15 [mW] pour I = 100 [mA] ( 40), une longueur donde de 930 [nm] ce qui lui permet dentrer dans la bande

Figure-6- : CQY89 4. Schma de la carte infrarouge

Figure-7- : Schma lectronique de la carte IR

Page 65

Rapport final

WantedTM

Dans notre projet, on va connecter la broche 4 (RESET) au port srie (RS232, Pin 3) de notre PC embarqu via une rsistance R5 de protection (Limitation du courant) en cette configuration, le signal venant de PCM (signal modulant) sera modul par la porteuse gnre par le 555 pour donner en sortie de ce dernier (broche 3) un signal modul en PWM (Pulse Width Modulation) ou modulation de largeur dimpulsion, pour tre enfin transmis par une LED infrarouge, qui son tour, doit tre protge par la rsistance R6 contre un ventuel fort courant. Du cot rcepteur, il est aliment par une tension DC de 5 [V] rgule laide du rgulateur LT1121CZ-5 (Micro Low Dropout Regulator With Shutdown) de chez Linear Technology, sa sortie Vout attaque la base du transistor 2N3904 par lintermdiaire du diviseur de tension (R3 et R4, polarisation du transistor par diviseur de tension PDT), la polarisation par la base est utile dans les circuits numriques car ils sont conus pour fonctionner la saturation et au blocage. Par consquent, notre transistor 2N3904 aura soit une faible soit une forte tension de sortie (au niveau de son collecteur). En dautres termes, aucun point de fonctionnement entre blocage et saturation nest utilis. Fonctionnement : Quand le rcepteur ne reoit rien, il dlivre une tension qui sature le transistor (interrupteur ferm), on recupre ainsi sur les bornes collecteur et metteur une tension presque nulle. Quand le rcepteur reoit linformation, il passe ltat bas, donc une tension nulle au niveau de Vout, le courant base passe zro et le courant collecteur sannule, comme il ny a plus de courant dans la rsistance R2, toute la tension de lalimentation (dlivr par le PCM) se trouve sur les bornes collecteur et metteur, donc la tension de sortie atteint Valimentation.

Page 66

Rapport final

WantedTM

Ce montage ne peut avoir que deux tensions de sortie : Valimentation et 0 [V]. O reconnat un circuit numrique. Il y a seulement deux niveaux de sortie : haut et bas. Les valeurs exactes de ces deux tats nont pas dimportance : ce qui importe, cest de pouvoir distinguer la tension haute de la tension basse. Cette tension est ensuite bronche au port srie (RS232, Pin 2) de notre PCM pour la lecture des informations mises par le RCX notamment est ce que le robot a eu la balle ou non, une information qui traduit le niveau dintelligence de notre robot et de la comptence des Wanted. Avant de brancher la carte IR au PC embarqu, on prfre passer par un tage la fois de protection (diodes) et de filtrage (condensateurs polariss) marqu sur la figure-7- par Built into DB9 schell.

Figure-8- : Dtails du branchement dune prise RS232

Page 67

Rapport final

WantedTM

5. Les limites dune communication IR

Lutilisation de lIR pour communiquer des donnes au RCX nest pas sans problme, en effet, la perte de paquets est chose courante. Tout dabord ce systme est trs directif, autrement dit la Tour USB et le capteur du RCX doivent tre en vue directe une distance infrieure 1m (les rayons infra rouge ne peuvent pntrer des objets opaques). De plus, il ne doit pas tre utilis dans une pice avec une lumire trop vive qui viendrait alors perturber les changes. De plus, des pertes trop nombreuses peuvent devenir handicapantes lorsque lon veut tablir un systme temps rel.

Figure 9- : Champ de vision Infra rouge dun module RCX

Page 68

Rapport dtape

WantedTM

II. Alimentation du systme

Consommation du GODE

But de lexprience : Connatre la consommation du Gode. Matriel requis : Gode, cbles, multimtre, bloc d alimentation du lab. Manipulations,observation et rsultats

Nous avons mesur l aide du multimtre les tentions chaque sortie de l alimentation du PSU (l adaptateur du gode)et nous avons trouv : B = C = 0V (masses) A = 5.26V D = 11,80V

Page 69

Rapport dtape

WantedTM

Nous avons mesur aussi le courant entrant dans la patte A (il ny a pas de courant qui entre dans les autres), et on a trouv Iin = 1,54A Remarque : Le courant mesur n tait pas tout fait stable il variait entre (1,40 et 1,60A) En utilisant l alimentation fournie au lab, on a remarqu qu un courant de 0,68 A suffisait pour allumer la led sur l ordinateur. Prsentations et analyses : Gode : Le Gode est aliment avec une tension rgule 5V (5,26V mesur) et un courant de 1,5A,avec sa propre alimentation. Les tests ont montr que seulement un courant de 0,7A suffit pour l allumer. Pour des raisons de scurit en cas d une grosse demande d nergie, il est prfrable de maximiser nos paramtres. Donc on optera pour une alimentation de 5V et un courant de 1,8A ce qui nous donne une puissance de 9W. Donc, pour notre alimentation il faut choisir des piles qui puissent fournir une tension de 5V et un courant de 1,8Ah. Pour ce fait nous avons effectus des recherches sur Internet pour trouver la pile convenable, nous avons cherchs sur diffrents sites (voir annexe) Mais on a pas pu trouver une seule pile ayant ces caractristiques ensuite nous avons fait des recherches sur le march ; on a vu plusieurs magasins qui ventent des piles rechargeables aussi sans rsultat, on a mme song la commander de ltranger (prcisment de Canada) enfin nous avons opts pour des piles rechargeables de 1.2V et de 1.8Ah : nous avons mis quatre

Page 70

Rapport dtape

WantedTM

piles en srie qui vont nous dlivrer une tension de 4.8V mais puisquils sont imprcis, on a trouv la sortie une tension de 5.12V ce qui nous a facilit le travail puisquon avait pas besoin de rguler la tension (5.12V presque 5V +5%)

Page 71

Rapport dtape

WantedTM

CONCLUSION

Page 72

Rapport dtape

WantedTM

Malgr tous les problmes et les complications rencontr lors de ce cours Design III nous avons pu mener a bien notre projet celui de raliser un robot autonome tout en respectant le cahier de charge et en satisfaisant les besoins du client. Nous tenons remercier toute personne ayant mis la main la pte.

Page 73

Rapport dtape

WantedTM

ANNEXE

Page 74

Rapport dtape

WantedTM

REGISTRE DES RISQUES


Niveau Type de risque de priorit Consquence de l'occurrence du risque Possibilit Reconnaissance d'une balle d'ignorer la balle 5 ou de faire une erreur sur la couleur Reconnaissance du but Possibilit de ne 5 pas reconnatre le but perte de temps et d'energie 5% perte de temps et d'energie 5% Cot en performance Probabilit d'occurrence Plan de rduction du risque Prsenter l'algorithme les diffrents objets prsents sur le terrain et s'assurer qu'il les reconnat correctement sous Reconnaissance d'un coin ou d'une ligne 5 Possibilit de ne pas reconnatre le coin perte de temps et d'energie 5% diffrentes conditions lumineuses Modifier l'algorithme en consquence

Respons

du risq

Vision

Fassa

,Benna

Make

Ralentir ou arrter le robot pour faciliter la Impossibilit de Motricit Saisie d'une balle 3 saisir la balle, donc perte de temps Diminution du nombre de points 6% saisie. Prvoir une autre action pour dplacer la balle si colle sur le bord.

bouabd

,yousf

khaz

Page 75

Rapport dtape

WantedTM
Inspecter la solidit des blocs avant Rupture de la structure Lego 2 Problmes de dplacement ou de saisie Difficult ou impossibilit d'accomplir la tache 3% la comptition et opter pour un design plus solide que ncessaire Performance nulle, Disponibilit Conception de la 3 tour infrarouge retarde ou impossible impossibilit de communiquer correctement entre le gode et le RCX 10% Avoir des pices de rechange ou s'assurer que la pice soit disponible dans des dlais raisonables Choisir une pile en Autonomie nergtique Manque 4 dnergie avant Contrainte de temps non 5% fonction de lnergie ncessaire pour 10 minutes Puissance dissip par une composante trop leve 3 Destruction ou mauvais fonctionnement dune composante Difficult ou impossibilit d'accomplir la consigne 2% Utilisation dun systme de dissipation thermique

communication

des pices de la tour infrarouge

Azam

Maghf

Yousf

Alimentation

la fin de la tche respecte

bouadb

Page 76

Rapport dtape

WantedTM
Maintenir un historique des Excution Faible capacit de stockage de la batterie 2 Perte d'efficacit incomplte de la batterie due son effet mmoire de la de la consigne entranant de point 7% tensions aprs charge de la batterie en fonction de l'utilisation. Prvoir une autre batterie si la baisse de tension est significative Prsenter l'algorithme tous les cas

charge/dcharge une pnalit

Intelligence Artificielle

Prise de chec dans la prise de dcision 4 Aucune dcision ne correspond l'tat du jeu analys dcision impossible, la consigne n'est pas accomplie 4%

possibles pouvant se produire en situation de comptition et s'assurer qu'il effectue une tche

Fassa

,Benna

Make

Page 77

Rapport dtape

WantedTM
S'assurer Mauvaise interprtation des donnes reues 4 Effectue une mauvaise tche Enfreint des rgles du jeu pouvant entraner une pnalit 6% que l'intelligence effectue la bonne tche selon les donnes reues

Page 78

Rapport dtape

WantedTM

DIAGRAMME PHYSIQUE

Page 79

Rapport dtape

WantedTM

DIAGRAMME DE CONTEXTE

Page 80

Rapport dtape
DIAGRAMME DES PROPRIETES FONCTIONNELES

WantedTM

Items budg alimentat communica stabilit et ion tion et

se dplacer

tourn captur capt tirer excut er er er balle er

fin de la comptit on

robuste linairem sse ent

image balle

(I) (A) (A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (B) (C) (D) (E) (F) (G) (H) (J) (K)

5 2 4 1

2 5 1

4 1 5

1 2 2 5 4 5 5 1 2 2 2 2 1 5 5 4 4 5 1 1 2 4 3 2 3 2 2 3 2

1 2 3 2

2 2 2 2 2 1 2 3 2

4 4 3 3 3

2 2 2

1 5 1

1 1 5

Page 81

Rapport dtape

WantedTM

Diagrammes des fonctionnalits:

Page 82

Rapport dtape

WantedTM

Plan de test :
Niveau Sous Niveau Exigence Mthode de Vrification
Alimenter Alimenter le systme adquatement le systme Vmax (V) Test Oscilloscope numrique Gode Source dalimentation RCX Tour infrarouge Mettre sous tension chaque composantes partir dun certain voltage et augmenter progressivement jusqu la tension des batteries et vrifier que les pices restent la temprature de fonctionnement Vmin (V) Test Oscilloscope numrique Gode Source dalimentation RCX Tour infrarouge Imin (ma) Test Source de tension/courant Ampremtre Gode RCX Moteurs lgo Capteurs Tour infrarouge Mettre sous tension chaque composante partir dun certain voltage et diminuer progressivement jusqu ce que la composante ne fonctionne plus En partant du point de fonctionnement avec toutes les composantes en marche, on diminue le courant jusqu ce quune composante steigne et on mesure le courant critique

quipement

Mthode danalyse

Page 83

Rapport dtape
Traiter les images Localiser les objets cart (cm) Test Systme Autonomus complet. Rgle Balles Buts

WantedTM
Mettre le systme devant divers objets et regarder si la distance calcule par le robot est valide

Page 84

Rapport dtape

WantedTM

WBS

Page 85

Rapport dtape

WantedTM

GANTT

Page 86

Rapport dtape

WantedTM

QuickCam Pro 4000 Features: PC Mac USB Microphone Digital Zoom Pro Editing Software Intelligent Face-Tracking Part Number 9612390403 > larger views The Creative Way to Get Closer

USD 99.95

Buy Now!

Authorized Retailers

Add live video to your favorite instant messenger: MSN Messenger, AOL Instant Messenger (AIM), Yahoo! Messenger, and Windows Messenger Shoot 1.3 megapixel photos and high-quality videos Edit movies and photos with studio-quality software Make live video calls Email video and photos easily Get closer with a digital zoom Conduct online video conferences and calls using Windows Messenger or Microsoft NetMeeting Speak your mind with the built-in microphone Add video to your eBay auctions with SpotLife

Page 87

Rapport dtape
VideoSnap

WantedTM

Create fun animated films Create web albums, broadcast live video and audio, and set up a web cam 2-year limited hardware warranty

*Also works with Yahoo! Messenger and Windows Messenger Product Specifications

Video capture: Up to 640 x 480 pixels (VGA CCD) Still image capture: Up to 1280 x 960 pixels, 1.3 megapixels Frame rate: Up to 30 frames per second (with recommended system) Included Software FREE Logitech IM Video Companion Live video-enabled Yahoo! Messenger One-click video e-mail software Video broadcasting software Web album creator software Web camera software Motion detection software Animation software

Extra Software

Studio-quality video editing software Free software updates with news and the latest features

Page 88

Rapport dtape

WantedTM
Add video to your eBay Auctions with SpotLife VideoSnap Minimum System Requirements (PC)

Windows 98, Windows 2000, Windows Me, Windows XP Pentium II 400, Celeron, AMD Athlon processor, or higher (Pentium III 500, Celeron, AMD Athlon processor recommended). 64 MB RAM (or minimum OS requirement whichever is higher). 200 MB free hard drive space CD-ROM drive 16-bit color display adapter Windows-compatible sound card and speakers (full duplex sound card recommended)

System Requirements for Macintosh

Mac OS X 10.1.5 to 10.2.6 (visit Support for details) USB port

For Web activities and to send or receive video email

Web browser such as Microsoft Internet Explorer 4.0 or higher or Netscape Navigator 4.0 or higher E-mail application that supports file attachment

Page 89

Rapport dtape

WantedTM
such as AOL 7.0 Microsoft Outlook Express or Netscape Mail 4.x or higher

Minimum 28.8K modem and Internet connection with e-mail account Sound card and speakers needed for audio playback

Page 90

Rapport dtape

WantedTM

Translate this page to another language See how to have a link here. Return to PC104.COM - The PC104 Supplier Link Page

What is PC104?
PC104 gets its name from the popular desktop personal computers initially designed by IBM called the PC, and from the number of pins used to connect the cards together (104). PC104 cards are much smaller than ISA-bus cards

Page 91

Rapport dtape
found in PC's and stack together which eliminates the need for a

WantedTM

motherboard, backplane, and/or card cage. Power requirements and signal drive are reduced to meet the needs of an embedded system. Because PC104 is essentially a PC with a different form factor, most of the program development tools used for PC's can be used for a PC104 system. This reduces the cost of purchasing new tools and also greatly reduces the learning curve for programmers and hardware designers. Applications PC104 based systems are used in a variety places including factories, laboratories, processing plants, vehicles, and almost anywhere devices must be controlled by a programmable computer. PC104 systems are small and ususally have low power requirements so they're great for applications that simply don't have the space for a full-blown desktop PC. Additionally, PC104 systems are designed to be more rugged than desktop systems. Building a system using PC104 modules usually costs more than a commercial PC, but usually less than a rack mount ISA bus system. Modules Almost anything you can think of is availible as a PC104 module. This includes common functions like CPUs, Serial I/O ports, and Video Controllers; but also more exotic modules like GPS receivers, vehicle power supplies, wireless communications. A stack of PC104 modules can be attached as a component of a larger circuit board, or simply put in a small enclosure for stand-alone operation. Origin The PC104 form factor was developed by Ampro Computers in California in the late 1980's. The specification was published in 1992 in order to

Page 92

Rapport dtape
enhance popularity. Now over 150 vendors manufacture PC104 compatible products including controller cards, software, and accessories. Learn More

WantedTM

The PC104 Consortium was established to maintain the specifications, publish a resource guide, participate in standards activities, and to promote PC104 at trade shows and through news releases. We encourage you to contact them for additional information. Additional technical details about PC104 can be found on The E-Zine of PC104 Controlled Systems and The PC104 FAQ.

Return to PC104.COM - The PC104 Supplier Link Page Copyright Arrick Publishing. All rights reserved
Arrick Publishing - editor@pc104.com

Page 93

Rapport dtape

WantedTM

Alimentation PC104
Mettre un PC104 dans un robot est une solution qui apporte bon nombre d'avantages: visualisation des donnes en temps rel, compilateur embarqu, puissance de calcul importante... Un inconvnient majeur est la ralisation de l'alimentation dcoupage et la consommation. Ces petits processeurs embarqus sont souvent gourmants. En attendant que les fabricants de processeurs embarqus trouvent des solutions plus faible consommation, voici un moyen de contrer le problme. Cette carte au format PC104 contient une alimentation dcoupage et un afficheur de la charge des accus. Ca ne permet pas de rduire la puissance consomme, mais d'estimer la charge restante dans les accus et de les changer avant que le PC ne s'teigne.

oAlimentation dcoupage Les PC104 ont besoin d'une alimentation dcoupage pour fonctionner. Sur les PC traditionnels,il faut du 5V et du 12V. Dans notre cas nous utilisons un PC104 avec une compact flash comme disque dur. De ce fait, nous n'avons pas besoin du 12V. Notre alimentation ne comporte donc que le 5V. Nous avons utilis un LM2576 qui est un rgulateur 5V 3A. Voici le schma de l'alim :

Page 94

Rapport dtape

WantedTM

Ce schma est donn dans le datasheet du LM2576. L'interrupteur permet de couper l'alimentation, lorsque la patte 5 du rgulateur est Vcc, l'alim est coupe. Nous avons utilis un rgulateur 3A pour alimenter le PC104, toutefois, notre carte consomme au maximum 1A. Pour gagner de la place, la self de 100 H est monte en surface (CMS) nous avons choisi une self 1,5 A qui n'tait pas trop grande. Si vous utilisez cette alimentation, vrifiez que la consommation du PC ne dpasse pas 1.5 A sous 5 Volts (7.5 Watt) ou remplacez la self par une plus puissante. Ensuite, l'alimentation est relie au PC par le bus ISA (le connecteur PC104).

Page 95

Rapport dtape
oCharge des accus

WantedTM

Page 96

Rapport dtape

WantedTM

Durant les concours, arriver sur l'aire de jeu avec des accus chargs et trs important. Nombre d'quipes en ont fait l'exprience . Sur cette alimentation, nous avons rajout un petit circuit qui permet de visualiser la charge des accus base de LM3914. Voici le schma :

Le LM3914 est un circuit comportant 10 comparateurs en cascade. Les tensions de rfrence de ces comparateurs sont pr-cabl par jeu de rsistances internes de 1K. Le LM3914 est linaire, il existe deux composants de la mme famille qui sont le LM3915 (logarithmique) et le LM3916. La tension de rfrence du premier comparateur est impose par les rsistances R2 et R3. Le LM3914 est aliment en 5V, il a besoin d'une tension fixe pour viter que les tensions de rfrence ne chuttent avec la charge des accus. Il est donc aliment par l'alim dcoupage du PC. De ce fait, les accus 12 V ne peuvent pas attaquer les entres des comparateurs directement. C'est

Page 97

Rapport dtape

WantedTM

pourquoi nous avons rajout un pont diviseur avant l'entre SIGN IN afin de diviser le 12V. Les sorties des comparateurs attaquent directement les leds, qui permettent de visualiser la charges des accus. Avec le LM3914, c'est la rsistance R3 qui dtermine le courant qui va circuler dans les LEDs, et par consquent la brillance des LEDs. Le LM3914 peut fonctionner en deux mode : DOT et BAR. Dans le premier cas, seule une LED s'allume, dans les second, les LEDs forment une ligne. Le jumper J4 permet de slectionner le mode dsir.

Page 98

Rapport dtape

WantedTM

oRalisation de la carte

Vous trouverez ci dessous le typon et le schma d'implantation de la carte :

Si vous ralisez la carte, vrifiez bien que le rgulateur fonctionne correctement avant de connecter le PC. Si la tension n'est pas gale 5V, il est possible d'endommager le PC104. Voici quelques photos de la carte :

Page 99

Rapport dtape

WantedTM

Page 100

Rapport dtape

WantedTM

Le programme
/*******************************************************/ /* la fonction filtrage qui sert eliminer tout ce qui est externe du terrain */ /*******************************************************/ IplImage* filtrage(IplImage *src,int l=0) { char* lImageData = src->imageData; int lImageDataStep = src->widthStep; int k=0; for(int i = 0; i <= src->width; i++){ k=0; for(int j = src->height-1;j>=k; j--){ unsigned char lR, lG, lB; lB = (lImageData + lImageDataStep*j)[3*i]; lG = (lImageData + lImageDataStep*j)[3*i + 1]; lR = (lImageData + lImageDataStep*j)[3*i + 2]; if(lB<50 && lG<30 && lR<50) k=j; } if(l!=0) k=k-10;

Page 101

Rapport dtape
for(int j = k;j>=0; j--){ (lImageData + lImageDataStep*j)[3*i] = 0; (lImageData + lImageDataStep*j)[3*i + 1] = 0; (lImageData + lImageDataStep*j)[3*i + 2] = 0; } } return src; }

WantedTM

/************************************************************ *************/ /* cette fonction permet de ballayer l'image src afin de trouver le centre d'un objet jaune*/ /************************************************************ *************/ IplImage* findballcenter(IplImage *src) { //src=ContrastBrightness(src,50,25); src=filtrage(ContrastBrightness(src,70,55),1); int x1=-1,y1=-1,x2=-1,y2=-1; char* lImageData = src->imageData;

Page 102

Rapport dtape
int lImageDataStep = src->widthStep; CvSize lSize = cvSize(src->width,src->height); unsigned char lR, lG, lB;

WantedTM

for(int i = lSize.height;i>0; i--){ if(y1!=-1) break; for(int j = 0; j < lSize.width; j++){ lB = (lImageData + lImageDataStep*i)[3*j]; lG = (lImageData + lImageDataStep*i)[3*j + 1]; lR = (lImageData + lImageDataStep*i)[3*j + 2]; if((lR>=150 && lR<=195 && lG<=135 &&lG>=105 && lB<=10 )){ y1=i;x2=j; CvPoint loc; loc.x=j;loc.y=i; cvCircle( src,loc ,3, CV_RGB(255,0,0),3 ); break; } } }

for(int i = lSize.height; i >=0; i--){ if(x1!=-1) break;

Page 103

Rapport dtape

WantedTM

for(int j = lSize.width; j > 0; j--){ lB = (lImageData + lImageDataStep*i)[3*j]; lG = (lImageData + lImageDataStep*i)[3*j + 1]; lR = (lImageData + lImageDataStep*i)[3*j + 2]; /* if(lR>=240 &&lG>=200 &&lB<=180 )*/ if((lR>=150 && lR<=195 && lG<=135 &&lG>=105 && lB<=10 )) { x1=i;y2=j; CvPoint loc; loc.x=j;loc.y=i; cvCircle( src,loc ,3, CV_RGB(0,255,0),3 ); break; } } }

y=(x1+y1)/2; x=(x2+y2)/2; CvPoint loc; loc.x=x;loc.y=y; cvCircle( src,loc ,5, CV_RGB(0,0,0),5 ); if(x!=-1 &&y!=-1){ std::cout<<"le centre de la balle se trouve peu prs :";

Page 104

Rapport dtape
std::cout<<"(x,y)=("<<x<<','<<y<<") "; } return src; }

WantedTM

/************************************************************ ********************************/ /* cette fonction sert a trouver le centre d'un objet de couleur orange */ /************************************************************ ******************************/ IplImage* findorgcenter(IplImage *src) { src=filtrage(ContrastBrightness(src,70,55)); int k,x1=-1,y1=-1,x2,y2; char* lImageData = src->imageData; int lImageDataStep = src->widthStep; CvSize lSize = cvSize(src->width,src->height); unsigned char lR, lG, lB; k=lSize.height; for(int i = 0; i <lSize.height; i++){ for(int j = 0; j < lSize.width; j++){ lB = (lImageData + lImageDataStep*i)[3*j]; lG = (lImageData + lImageDataStep*i)[3*j + 1]; lR = (lImageData + lImageDataStep*i)[3*j + 2];

Page 105

Rapport dtape

WantedTM

if( lR>=160 && lG<=40 && lB==0){ y=i;break; } } if(y!=0) break; } for(int i = k; i >=0; i--){ for(int j = 0; j < lSize.width; j++){ lB = (lImageData + lImageDataStep*i)[3*j]; lG = (lImageData + lImageDataStep*i)[3*j + 1]; lR = (lImageData + lImageDataStep*i)[3*j + 2]; if( lR>=160 && lG<=40 && lB==0) { y1=i;break; } } if(y1!=-1) break; } for(int i = 0; i< lSize.width; i++){ for(int j = 0; j < lSize.height; j++){ lB = (lImageData + lImageDataStep*j)[3*i]; lG = (lImageData + lImageDataStep*j)[3*i + 1]; lR = (lImageData + lImageDataStep*j)[3*i + 2]; if( lR>=160 && lG<=40 && lB==0){

Page 106

Rapport dtape
x=i;break; } } if(x!=0) break; }

WantedTM

for(int i = lSize.width; i >= 0; i--){ for(int j = 0; j < lSize.height; j++){ lB = (lImageData + lImageDataStep*j)[3*i]; lG = (lImageData + lImageDataStep*j)[3*i + 1]; lR = (lImageData + lImageDataStep*j)[3*i + 2]; if( lR>=160 && lG<=40 && lB==0) { x1=i;break; } } if(x1!=-1) break; }

x2=(x+x1)/2; y2=(y+y1)/2; CvPoint loc; loc.x=x2;loc.y=y2; cvCircle( src,loc ,3, CV_RGB(255,0,0),4 ); x=x2;y=y2;

Page 107

Rapport dtape

WantedTM

if(x!=-1 &&y!=-1){ std::cout<<"le centre du coin org se trouve peu prs :"; std::cout<<"(x,y)=("<<x<<','<<y<<") "; } return src; }

IplImage* findgoalcenter(IplImage *src) { src=filtrage(RemoveNoise(ContrastBrightness(src,70,55))); // src=filtrage(RemoveNoise((ContrastBrightness(RemoveNoise(src),35,40)))); //src=ContrastBrightness(src,35,40); int k,x1=-1,y1=-1,x2=-1,y2=-1; char* lImageData = src->imageData; int lImageDataStep = src->widthStep; CvSize lSize = cvSize(src->width,src->height); unsigned char lR, lG, lB,lNewR,lNewB,lNewG; k=lSize.height; //BG---->BD /* for(int i = k; i >=0; i--){ if(x1!=-1) break;

Page 108

Rapport dtape

WantedTM

for(int j = 0; j <lSize.width; j++){ lB=(lImageData + lImageDataStep*i)[3*j]; lG=(lImageData + lImageDataStep*i)[3*j + 1]; lR=(lImageData + lImageDataStep*i)[3*j + 2]; if( (lR<=50 && lR>=30 &&lG>=60 && lG<=80 &&lB<=110 && lB>=80)|| (lR<=50 && lR>=30 &&lG>=45 && lG<=70 &&lB<=80 && lB>=50)) { x1=j;y1=i; loc.x=j;loc.y=i; cvCircle( src,loc ,3, CV_RGB(0,255,0),3 ); break; } CvPoint loc;

}}*/ /* //HD--->BG for(int i = 0; i <=k; i++){ if(x2!=-1) break; for(int j = lSize.width; j >=0; j--){ lB=(lImageData + lImageDataStep*i)[3*j]; lG=(lImageData + lImageDataStep*i)[3*j + 1]; lR=(lImageData + lImageDataStep*i)[3*j + 2]; if( (lR<=50 && lR>=30 &&lG>=60 && lG<=80 &&lB<=110 && lB>=80)|| (lR<=50 && lR>=30 &&lG>=50 && lG<=70 &&lB<=80 && lB>=60)) { x2=j;y2=i; CvPoint loc; loc.x=j;loc.y=i;

Page 109

Rapport dtape
cvCircle( src,loc ,3, CV_RGB(0,255,0),3 ); break; } }} */ //HG---->BD for(int i = 10; i <=lSize.width-10; i++){ if(y1!=-1) break; for(int j = 10; j <k-10; j++){ lB=(lImageData + lImageDataStep*j)[3*i]; lG=(lImageData + lImageDataStep*j)[3*i + 1]; lR=(lImageData + lImageDataStep*j)[3*i + 2];

WantedTM

if( (lR<=50 && lR>=30 &&lG>=60 && lG<=80 &&lB<=110 && lB>=80)|| (lR<=50 && lR>=30 &&lG>=50 && lG<=70 &&lB<=80 && lB>=60)) { y1=j;x1=i; CvPoint loc; loc.x=i;loc.y=j; cvCircle( src,loc ,3, CV_RGB(0,255,0),3 ); break; } }} for(int i =lSize.width-10;i>=10; i--){ if(y2!=-1) break; for(int j = k-10; j >10; j--){ lB=(lImageData + lImageDataStep*j)[3*i]; lG=(lImageData + lImageDataStep*j)[3*i + 1];

Page 110

Rapport dtape
lR=(lImageData + lImageDataStep*j)[3*i + 2]; lR=(lImageData + lImageDataStep*j)[3*i + 2];

WantedTM

if( (lR<=50 && lR>=30 &&lG>=60 && lG<=80 &&lB<=110 && lB>=80)|| (lR<=50 && lR>=30 &&lG>=45 && lG<=70 &&lB<=80 && lB>=50)) { y2=j;x2=i; loc.x=i;loc.y=j; cvCircle( src,loc ,3, CV_RGB(0,255,0),3 ); break; } }} x=(x1+x2)/2; y=(y1+y2)/2; CvPoint loc; loc.x=x;loc.y=y; cvCircle( src,loc ,3, CV_RGB(255,0,0),3 ); if(x!=-1 && y!=-1){ std::cout<<"le centre du goal se trouve peu prs :"; std::cout<<"(x,y)=("<<x<<','<<y<<") "; } return src; } IplImage* capture_image() { CCamera lCam; CvSize lSize = cvSize(640,480); lCam.connect(0); CvPoint loc;

Page 111

Rapport dtape

WantedTM

lCam.setSize(lSize); IplImage* lIplImage = cvCreateImage(lSize,IPL_DEPTH_8U,3);

lCam.capture(lIplImage); lCam.disconnect(); return lIplImage; } char* ltoa ( double a) { int b= int(a); double c; char *resultat; resultat =new char[6]; resultat[6]='\0'; if(a<0){ resultat[0]='-'; a*=-1;} else resultat[0]='+'; c=a; for(int i=2;i>=0;i--) { b=int (a/pow(10,i)); switch (b){ case 0:resultat[3-i]='0';break;

Page 112

Rapport dtape
case 1:resultat[3-i]='1';break; case 2:resultat[3-i]='2';break; case 3:resultat[3-i]='3';break; case 4:resultat[3-i]='4';break; case 5:resultat[3-i]='5';break; case 6:resultat[3-i]='6';break; case 7:resultat[3-i]='7';break; case 8:resultat[3-i]='8';break; case 9:resultat[3-i]='9';break; } b=int (a-b*pow(10,i)); a=double(b); } c=c*10; resultat[4]=','; std::cout<<" c ="<<c<<std::endl; switch (int(c)%10){ case 0:resultat[5]='0';break; case 1:resultat[5]='1';break; case 2:resultat[5]='2';break; case 3:resultat[5]='3';break; case 4:resultat[5]='4';break; case 5:resultat[5]='5';break; case 6:resultat[5]='6';break; case 7:resultat[5]='7';break; case 8:resultat[5]='8';break; case 9:resultat[5]='9';break; }

WantedTM

Page 113

Rapport dtape
//cout<<" "<<resultat<<endl; return resultat; } void conversion(int center_x,int center_y) { Zhang *zhang; zhang = new Zhang(); if (zhang->SetParameters("wanted02.txt")){ //if (zhang->SetParameters("mario01.txt")){

WantedTM

std::cout<<"probleme d'ouverture du fichier de calibrage wanted.txt"; // exit(1); } zhang->Apply(center_x,center_y,a,b,c); // delete zhang; std::cout<<"x="<<a<<"y="<<b<<std::endl; //exit(0); }

int main( int argc, char** argv ) { //cvNamedWindow("orig",1); // cvNamedWindow("image",1); double ang_rotation=0.0; char *commande; commande =new char [20]; int compteur_but=0;

Page 114

Rapport dtape
while(compteur_but<=50) {

WantedTM

///////////////////////////////////////////////////////////////////////// /* rechercher la balle et la capturer */ ///////////////////////////////////////////////////////////////////////// //cvShowImage("image",findballcenter(capture_image())); findballcenter(capture_image()); conversion(x,y); while(x==-1 || y==-1) { if(ang_rotation<360){ system("projectframe 3 70"); ang_rotation+=40; //cvShowImage("image",findballcenter(capture_image())); findballcenter(capture_image());

} else { system("projectframe 1 30"); ang_rotation=0.0; } } ang_rotation=0.0;

Page 115

Rapport dtape
conversion(x,y); std::cout<<a<<" x=y=-1; "<<b<<" "<<std::endl;

WantedTM

/************************************************************ ************************************/ /************************************************************ *************************************/

// while(b<=-0.40 && fabs(a)>=0.02){ while(fabs(a)>=0.02) { if(b>=-0.20){ commande=strcpy(commande,"projectframe 2 "); commande=strcat(commande,"20"); system(commande); } if(a>0){ commande=strcpy(commande,"projectframe 7 "); commande=strcat(commande,"10"); system(commande); }

Page 116

Rapport dtape
else { strcpy(commande,"projectframe 8 "); commande=strcat(commande,"20"); system(commande); } findballcenter(capture_image()); //cvShowImage("image",findballcenter(capture_image())); //cvWaitKey(1); conversion(x,y); std::cout<<"( "<<x<<" , "<<y<<" ) : ["<<a<<" :: "<<b<<"]\n"<<std::endl; } strcpy(commande,"projectframe 1 ");

WantedTM

if(b<=-0.50) { strcat(commande,ltoa(-50*b)); system(commande); //cvShowImage("image",findballcenter(capture_image())); findballcenter(capture_image()); conversion(x,y); while(fabs(a)>=0.02) { if(a>0){ commande=strcpy(commande,"projectframe 7 ");

Page 117

Rapport dtape
commande=strcat(commande,"10"); system(commande); } else { strcpy(commande,"projectframe 8 "); commande=strcat(commande,"20"); system(commande); } //

WantedTM

cvShowImage("image",findballcenter(capture_image()));

findballcenter(capture_image()); //cvWaitKey(1); conversion(x,y); std::cout<<"( "<<x<<" , "<<y<<" ) : ["<<a<<" :: "<<b<<"]\n"<<std::endl; } } //cvShowImage("image",findballcenter(capture_image())); findballcenter(capture_image()); //cvWaitKey(1); conversion(x,y); std::cout<<"( "<<x<<" , "<<y<<" ) : ["<<a<<" :: "<<b<<"]\n"<<std::endl;

// }

Page 118

Rapport dtape

WantedTM

//////////////////////////////////////////////////////// //ajouter lcommande pour preparer le bras et capturer la balle //////////////////////////////////////////////////////// /////////////////////////////////////////////////////////

strcpy(commande,"projectframe 5 "); strcat(commande,ltoa(-100*(b-0.01))); system(commande); system("projectframe 1 1"); x=y=-1; le programme est trs long pour plus de dtail :voir le CD

Page 119