Vous êtes sur la page 1sur 45

Robot suiveur d'objet color par webcam monte sur servomoteur

> Sommaire
1. 2.
a) b) c) d) e) f) g)

Principe Constitution
Plateforme mcanique + moteurs Carte de puissance Carte dinterface PC embarqu Communication Webcam Servomoteur

3.
a) b)

Programmation
Rcupration et traitement des images de la webcam Contrle des moteurs et servomoteurs via Labjack

4.

TP

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 2

Principe
Robot suiveur d'objet color par webcam monte sur servomoteur 29/05/2009 - 3

Meute de robots qui se suivent en chane de manire autonome Seul le 1er robot est tlguid Chaque robot a un objet rouge l'arrire, visible par le robot suivant qui cherche le suivre

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 4

Constitution
Robot suiveur d'objet color par webcam monte sur servomoteur 29/05/2009 - 5

Plateforme mcanique + moteurs Exemple : plateforme 4WD1

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 6

Carte de puissance
Permet de contrler les moteurs par des signaux de commande
Moteurs : tensions et courants levs provenant des batteries Signaux de commande : tensions et courants faibles venant directement ou indirectement du PC
Exemples : signaux PWM, I2C

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 7

Carte de puissance
Exemple : Robbe Rokraft
Signaux de commande PWM, connecteur classique servomoteur

Batterie avec connecteur Tamiya

Moteurs

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 8

Carte de puissance
Exemple : Robbe Rokraft
Fonctionnement
La puissance envoye aux moteurs (et donc leur vitesse) dpend du signal de commande PWM PWM = Pulse Width Modulation : modulation en largeur dimpulsion
U : tension du PWM (5 V) t : largeur dimpulsion (entre 1 et 2 ms) T : priode (20 ms)

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 9

Carte de puissance
Exemple : Robbe Rokraft
Fonctionnement
Correspondance largeur dimpulsion / vitesse de rotation

tat du moteur Moteur larrt Rotation dans un sens, en acclrant Rotation dans le sens inverse, en dclrant
ARRET

Largeur dimpulsion 1.5 ms 1.5 2.0 ms 1.0 1.5 ms

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 10

Carte dinterface
Relie la partie informatique avec la partie lectronique (capteurs, actionneurs)
Partie informatique : intelligence par le biais de programmes sur PC Partie lectronique : capteurs, actionneurs

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 11

Carte dinterface
Exemple : boitier Labjack
Se branche sur l'ordinateur en USB et est contrl par des programmes excuts sur l'ordinateur Peut gnrer des signaux PWM, I2C Peut gnrer des petites tensions Peut lire des petites tensions (venant de capteurs analogiques tels que des tlmtres, odomtres, boussoles...)

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 12

Carte dinterface
Exemple : boitier Labjack

Alimentation Carte de Puissance Moteur Labjack U3

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 13

Carte dinterface
Exemple : boitier Labjack

Labjack PC de commande

Moteur 2 Cartes de puissance Moteur 1 Dispositif de commande de moteurs avec la carte uE9

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 14

Carte dinterface
Autres exemples : Cartes Parallax et Pololu
Se branchent en srie (ou USB via un convertisseur USB-srie) et gnrent jusqu 16 PWM

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 15

PC embarqu
Intelligence du robot
Contient les programmes dfinissant le comportement du robot

Exemples :
eeePC 901 Mini ITX PC 104
Computer form factors Name eeePC 901 Mini-ITX Nano-ITX Pico-ITX PC/104
Robot suiveur d'objet color par webcam monte sur servomoteur

Size (mm) 226 175.3 22.9 170170 120120 10072 9690


29/05/2009 - 16

Priphrique de communication
Relie le robot au PC de commande Exemple : cl Wifi USB

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 17

Webcam
Capteur que l'on peut simplement brancher sur un PC via USB Exemple : Logitech Quickcam Pro 9000
Images jusqu 1600 x 1200 pixels

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 18

Servomoteur
Servomoteur = petit moteur + carte de puissance : pour orienter la webcam Command par PWM 2 types de servomoteurs :
Asservis en position : tournent de -40 +40 par exemple Asservis en vitesse

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 19

Programmation
Robot suiveur d'objet color par webcam monte sur servomoteur 29/05/2009 - 20

Rcupration et traitement des images de la webcam


Reprsentation courante dune image en C/C++
Pixel 1
R G B

Pixel 2
R G B

Pixel 3

Pixel 4

Pixel 5 Pixel 9

Pixel 1
Robot suiveur d'objet color par webcam monte sur servomoteur

Pixel 2
29/05/2009 - 21

Rcupration et traitement des images de la webcam Utilisation dOpenCV


Prsentation
http://opencv.willowgarage.com/wiki/ Bibliothque open source Portable Fonctions en C/C++ ou Python Codes optimiss dvelopps l'origine par Intel Documentation et exemples de codes

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 22

Rcupration et traitement des images de la webcam Utilisation dOpenCV


Prsentation
4 parties principales :
CXCORE (types et fonctions de base : matrices, images, arbres, graphes, fonctions mathmatiques, dessin de formes) CV (traitement dimage : dtection dobjets, de mouvement, calibration) HIGHGUI (rcupration et affichage dimages : lecture/enregistrement de fichiers images et videos, gestion des webcams, affichage dans des interfaces graphiques) MLL (arbres de dcision, rseaux de neurones)

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 23

Rcupration et traitement des images de la webcam Utilisation dOpenCV


Type IplImage

Cration dune image couleur vierge

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 24

Rcupration et traitement des images de la webcam Utilisation dOpenCV


Accs aux pixels dune IplImage

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 25

Rcupration et traitement des images de la webcam Utilisation dOpenCV


Chargement et affichage dun fichier image

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 26

Rcupration et traitement des images de la webcam Utilisation dOpenCV


Rcupration dune image webcam

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 27

Contrle des moteurs et servomoteurs via Labjack http://www.labjack.com/ Une bibliothque de fonctions et drivers fournis pour diffrents langages, OS Programmes exemples disponibles Pour contrler les moteurs, nous utiliserons les fonctions timer du Labjack

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 28

Contrle des moteurs et servomoteurs via Labjack Le Labjack peut gnrer jusqu 6 timers/PWM dont la frquence est dfinie par
Frquence finale du PWM Doit tre proche de 1/20ms pour pouvoir contrler un servo

Frquence interne du Labjack

f PWM

fsyst timer _ clock _ divisor * 2


16

Paramtre pouvant tre propre chaque PWM pour faire varier sa frquence indpendamment des autres

Mode du PWM => prcision de la largeur dimpulsion

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 29

Contrle des moteurs et servomoteurs via Labjack Fonctions utiles

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 30

Contrle des moteurs et servomoteurs via Labjack Fonctions utiles

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 31

Contrle des moteurs et servomoteurs via Labjack Fonctions utiles

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 32

TP
Robot suiveur d'objet color par webcam monte sur servomoteur 29/05/2009 - 33

Suivi dun objet color laide dune webcam monte sur un servomoteur
PC

Module LABJACK (Peut tre remplac par un module POLOLU ou PARALLAX)


Robot suiveur d'objet color par webcam monte sur servomoteur

Camra Servo

29/05/2009 - 34

Rappels C/C++ Le C est inclus ( 99%) dans le C++ : quand on fait du C, on fait aussi du C++ mais linverse nest pas forcment vrai Du code C ou C++ peut tre crit dans un fichier .cpp mais seul du code C peut tre crit dans un fichier .c Dans un .h, on peut crire du C ou du C++, mais il faut que les .c nincluent que des .h avec du C

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 35

Rappels C/C++ Le C++ rajoute des notions de programmation oriente objet (classe, hritage, polymorphisme) ainsi que des facilits dcriture

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 36

Rappels C/C++
Diffrences entre les compilateurs Windows et Linux
Linux
Le compilateur C le plus utilis est GCC Son quivalent C++ est G++

Windows
GCC/G++ existent avec Cygwin et MinGW Diffrents IDE existent et fournissent leurs propres compilateurs

Microsoft Visual Studio avec CL Borland C++ Builder / Turbo C++ / Borland Developper Studio avec BCC32 Code Blocks / Dev-C++ avec MinGW

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 37

Rappels C/C++
Diffrences entre les compilateurs Windows et Linux

Equivalences Linux / Windows

Linux/GCC
Fichiers objets Bibliothque statique .a Bibliothque dynamique .so Excutable .o

Windows/Visual C++
.obj .lib .dll .exe

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 38

Rappels C/C++
Visual Studio
Versions
Visual C++ 6 : date de 1998 Visual Studio 2002 / 2003 ou .Net : refonte de lIDE et ajout des projets .Net Visual Studio 2005 / 2008 : quelques mises jour

Difficile prendre en main au dbut : nombreux types de projets, nombreuses options incomprhensibles Mais assez abouti, trs utilis, beaucoup daide possible sur Internet

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 39

Rappels C/C++
Visual Studio
Organisation
Workspace/Solution (fichier .dsw/.sln) : ensemble de projets Projet (fichier .dsp/.vcproj) : ensemble de fichiers ncessaires la gnration dun excutable ou bibliothque (.h, .c, .cpp)

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 40

Rappels C/C++ Utilisation de bibliothques de fonctions externes


Fichiers .c/.cpp
Compilation Fichiers .obj Regroupement Edition des liens Fichier .lib Edition des liens

Edition des liens


Fichier .exe Est utilise Fichier .dll

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 41

Utilisation dOpenCV avec Visual C++ 6


Les chemins suivants sont des chemins absolus considrant l'installation par dfaut dans C:\Program Files\OpenCV\ Crer un projet Win32ConsoleApplication Dans le menu "Project", "Settings", "C/C++", categorie "Preprocessor". Ajouter les chemins suivants dans "Additional include directories": C:\Program Files\OpenCV\cv\include, C:\Program Files\OpenCV\cvaux\include, C:\Program Files\OpenCV\cxcore\include, C:\Program Files\OpenCV\otherlibs\highgui Dans le menu "Project", "Settings", "Link", catgorie "Input". Ajouter les librairies suivantes dans "Object/library modules": cv.lib cvaux.lib cxcore.lib highgui.lib Ajouter le chemin suivant dans "Additional library path": C:\Program Files\OpenCV\lib Modifier la variable d'environnement "PATH" de Windows en ajoutant:
C:\Program Files\OpenCV\bin

Dans le code, ajouter


#include "cvaux.h" #include "highgui.h"
29/05/2009 - 42

Robot suiveur d'objet color par webcam monte sur servomoteur

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 43

Rappels C/C++
Utilisation de bibliothques de fonctions externes
Cas o on possde des fichiers .h et .c/.cpp
Exemple : on a Main.cpp qui doit appeler des fonctions dclares dans Lib.h et dfinies dans Lib.cpp

On met #include Lib.h dans Main.cpp On copie Lib.h et Lib.cpp dans le dossier de Main.cpp On compile et lie Lib.cpp et Main.cpp en les ajoutant au projet

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 44

Rappels C/C++
Utilisation de bibliothques de fonctions externes
Cas o on possde des fichiers .h, .lib et .dll
Exemple : on a Main.cpp qui doit appeler des fonctions dclares dans Lib.h et dfinies dans Lib.lib et Lib.dll

On met #include Lib.h dans Main.cpp On ajoute le dossier de Lib.h dans les chemins de recherche de fichiers .h du projet On ajoute le dossier de Lib.lib dans les chemins de recherche de fichiers .lib du projet On compile Main.cpp et lie avec Lib.lib en les ajoutant au projet On ajoute le dossier de Lib.dll la variable denvironnement PATH du systme

Robot suiveur d'objet color par webcam monte sur servomoteur

29/05/2009 - 45