SlideShare une entreprise Scribd logo
1  sur  52
Introduction au langage C,
traitement d’image et
contrôle de moteur
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 2
But
 Suivi d’un objet coloré à l’aide d’une webcam
montée sur un servomoteur
PC
Caméra
Servomoteur
Module d’interface LABJACK
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 3
> Sommaire
1. Introduction au langage C
a) Hello World!
b) Fonctions
c) Commentaires, types, structures, macros, constantes
d) Tableaux statiques
e) Chaînes de caractères
f) Pointeurs
g) Pointeurs et tableaux
h) Allocation mémoire et tableaux dynamiques
2. Traitement d’image avec OpenCV
a) OpenCV
b) Utilisation rapide
c) Images et C/C++
d) Images et OpenCV
3. Contrôle de servomoteurs
a) Carte de puissance
b) Servomoteur
c) Carte d’interface
d) Contrôle des moteurs et servomoteurs via Labjack
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 4
Introduction au langage C
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 5
Hello World!
On souhaite utiliser des fonctions
déclarées dans ce fichier (ici printf())
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 6
Fonctions
Déclaration de fonction : nécessaire ici car
on souhaite utiliser print_arg() dans le
main() mais on définit son contenu après
le main()
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 7
Commentaires, types, structures,
macros, constantes
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 8
Commentaires, types, structures,
macros, constantes
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 9
Commentaires, types, structures,
macros, constantes
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 10
Commentaires, types, structures,
macros, constantes
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 11
Commentaires, types, structures,
macros, constantes
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 12
Tableaux statiques
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 13
Chaînes de caractères
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 14
Pointeurs
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 15
Pointeurs et tableaux
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 16
Allocation mémoire et tableaux
dynamiques
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 17
Traitement d’image avec OpenCV
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 18
OpenCV
 Présentation
• http://opencv.willowgarage.com/wiki/
• Bibliothèque open source
• Portable (fonctionne sous Linux, Windows, Mac OS)
• Fonctions en C/C++ ou Python
• Codes optimisés développés à l'origine par Intel
• Documentation et exemples de codes
• …
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 19
Utilisation rapide
 Chargement et affichage d’un fichier image
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 20
Utilisation rapide
 Récupération d’une image webcam
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 21
Images et C/C++
 Représentation courante d’une image en C/C++
R G B R G B
R G B R G B
…
Pixel 1 Pixel 2
Pixel 1 Pixel 2 Pixel 3 Pixel 4
Pixel 5
Pixel 9
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 22
Images et OpenCV
 Utilisation d’OpenCV
– Type IplImage défini par OpenCV
– Création d’une image couleur vierge
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 23
Images et OpenCV
 Utilisation d’OpenCV
– Accès aux pixels d’une IplImage
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 24
Contrôle de servomoteurs
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 25
Carte de puissance
 Permet de contrôler les moteurs par des
signaux de commande
– Moteurs : tensions et courants élevés provenant
des batteries
– Signaux de commande : tensions et courants
faibles venant directement ou indirectement du PC
• Exemples : signaux PWM, I2C
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 26
Carte de puissance
 Exemple : Robbe Rokraft
Signaux de commande PWM,
connecteur classique
servomoteur
Batterie avec connecteur Tamiya
Moteurs
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 27
Carte de puissance
 Exemple : Robbe Rokraft
– Fonctionnement
• La puissance envoyée aux moteurs (et donc leur vitesse)
dépend du signal de commande PWM
• PWM = Pulse Width Modulation : modulation en largeur
d’impulsion
U : tension du PWM (5 V)
t : largeur d’impulsion (entre 1 et 2 ms)
T : période (20 ms)
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 28
Carte de puissance
 Exemple : Robbe Rokraft
– Fonctionnement
• Correspondance largeur d’impulsion / vitesse de rotation
ARRET
État du moteur Largeur
d’impulsion
Moteur à l’arrêt 1.5 ms
Rotation dans un sens, en
accélérant
1.5 à 2.0 ms
Rotation dans le sens
inverse, en décélérant
1.0 à 1.5 ms
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 29
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
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 30
Carte d’interface
 Relie la partie informatique avec la partie
électronique (capteurs, actionneurs)
– Partie informatique : intelligence par le biais de
programmes sur PC
– Partie électronique : capteurs, actionneurs
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 31
Carte d’interface
 Exemple : boitier Labjack
– Se branche sur l'ordinateur en USB et est contrôlé
par des programmes exécutés sur l'ordinateur
– Peut générer des signaux PWM, I2C
– Peut générer des petites tensions
– Peut lire des petites tensions (venant de capteurs
analogiques tels que des télémètres, odomètres,
boussoles...)
– …
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 32
Carte d’interface
 Exemple : boitier Labjack
Moteur
Carte de Puissance
Labjack U3
Alimentation
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 33
Carte d’interface
 Exemple : boitier Labjack
Moteur 1
Moteur 2
Cartes de
puissance
Labjack
PC de commande
Dispositif de commande de moteurs avec la carte uE9
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 34
Contrôle des moteurs et
servomoteurs via Labjack
 http://www.labjack.com/
 Une bibliothèque de fonctions et drivers
fournis pour différents langages, OS
 Programmes exemples disponibles
 Pour contrôler les moteurs, nous utiliserons
les fonctions « timer » du Labjack
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 35
Annexes
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 36
Passage C/C++
 Le C est inclus (à 99%) dans le C++ : quand
on fait du C, on fait aussi du C++ mais
l’inverse n’est pas forcément vrai
 Le C++ rajoute des notions de programmation
orientée objet (classe, héritage,
polymorphisme) ainsi que des facilités
d’écriture
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 37
OpenCV
 Présentation
• 4 parties principales :
– CXCORE (types et fonctions de base : matrices,
images, arbres, graphes, fonctions mathématiques,
dessin de formes…)
– CV (traitement d’image : détection d’objets, de
mouvement, calibration…)
– HIGHGUI (récupération et affichage d’images :
lecture/enregistrement de fichiers images et videos,
gestion des webcams, affichage dans des interfaces
graphiques…)
– MLL (arbres de décision, réseaux de neurones…)
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 38
Carte d’interface
 Autres exemples : Cartes Parallax et Pololu
– Se branchent en série (ou USB via un
convertisseur USB-série) et génèrent jusqu’à 16
PWM
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 39
Contrôle des moteurs et
servomoteurs via Labjack
 Le Labjack peut générer jusqu’à 6
timers/PWM dont la fréquence est définie par
16
2
*
_
_ divisor
clock
timer
f
f
syst
PWM 
Fréquence interne du Labjack
Mode du PWM
=> précision de la largeur d’impulsion
Paramètre pouvant être propre à chaque PWM
pour faire varier sa fréquence indépendamment des autres
Fréquence finale du PWM
Doit être proche de 1/20ms
pour pouvoir contrôler un servo
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 40
Contrôle des moteurs et
servomoteurs via Labjack
 Fonctions utiles
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 41
Contrôle des moteurs et
servomoteurs via Labjack
 Fonctions utiles
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 42
Contrôle des moteurs et
servomoteurs via Labjack
 Fonctions utiles
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 43
Rappels C/C++
 Le C est inclus (à 99%) dans le C++ : quand
on fait du C, on fait aussi du C++ mais
l’inverse n’est pas forcément 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 n’incluent que des .h
avec du C
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 44
Rappels C/C++
 Le C++ rajoute des notions de programmation
orientée objet (classe, héritage,
polymorphisme) ainsi que des facilités
d’écriture
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 45
Rappels C/C++
 Différences 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
• Différents 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
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 46
Rappels C/C++
 Différences entre les compilateurs Windows et Linux
Equivalences Linux / Windows
Linux/GCC Windows/Visual C++
Fichiers objets .o .obj
Bibliothèque statique
.a .lib
Bibliothèque dynamique
.so .dll
Exécutable - .exe
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 47
Rappels C/C++
 Visual Studio
– Versions
• Visual C++ 6 : date de 1998
• Visual Studio 2002 / 2003 ou .Net : refonte de l’IDE et ajout des
projets .Net
• Visual Studio 2005 / 2008 : quelques mises à jour
– Difficile à prendre en main au début : nombreux types de
projets, nombreuses options incompréhensibles
– Mais assez abouti, très utilisé, beaucoup d’aide possible sur
Internet
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 48
Rappels C/C++
 Visual Studio
– Organisation
• Workspace/Solution (fichier
.dsw/.sln) : ensemble de
projets
• Projet (fichier .dsp/.vcproj) :
ensemble de fichiers
nécessaires à la génération
d’un exécutable ou
bibliothèque (.h, .c, .cpp…)
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 49
Rappels C/C++
 Utilisation de bibliothèques de fonctions
externes
Fichiers .c/.cpp
Fichiers .obj
Fichier .exe
Fichier .lib
Fichier .dll
Compilation
Est utilisée
Edition des liens
Edition des liens
Regroupement
Edition des liens
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 50
Utilisation d’OpenCV avec Visual
C++ 6
 Les chemins suivants sont des chemins absolus considérant l'installation par défaut dans
C:Program FilesOpenCV
 Créer un projet Win32ConsoleApplication
 Dans le menu "Project", "Settings", "C/C++", categorie "Preprocessor".
Ajouter les chemins suivants dans "Additional include directories":
– C:Program FilesOpenCVcvinclude,
– C:Program FilesOpenCVcvauxinclude,
– C:Program FilesOpenCVcxcoreinclude,
– C:Program FilesOpenCVotherlibshighgui
 Dans le menu "Project", "Settings", "Link", catégorie "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 FilesOpenCVlib
 Modifier la variable d'environnement "PATH" de Windows en ajoutant:
– C:Program FilesOpenCVbin
 Dans le code, ajouter
– #include "cvaux.h"
– #include "highgui.h"
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 51
Rappels C/C++
 Utilisation de bibliothèques de fonctions externes
– Cas où on possède des fichiers .h et .c/.cpp
• Exemple : on a Main.cpp qui doit appeler des fonctions déclarées dans Lib.h
et définies 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
Introduction au langage C, traitement d’image et contrôle de moteur
25/05/2023 52
Rappels C/C++
 Utilisation de bibliothèques de fonctions externes
– Cas où on possède des fichiers .h, .lib et .dll
• Exemple : on a Main.cpp qui doit appeler des fonctions déclarées dans
Lib.h et définies 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
d’environnement PATH du système

Contenu connexe

Similaire à COpenCVLabjack.ppt

Challenges of Parallel Simulation of Power Systems_french
Challenges of Parallel Simulation of Power Systems_frenchChallenges of Parallel Simulation of Power Systems_french
Challenges of Parallel Simulation of Power Systems_frenchOPAL-RT TECHNOLOGIES
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic nawzat
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfDAPcreat
 
Diapo zig bee_amin_jan11_final
Diapo zig bee_amin_jan11_finalDiapo zig bee_amin_jan11_final
Diapo zig bee_amin_jan11_finalAmin Ferjani
 
Fichier_Compétences
Fichier_CompétencesFichier_Compétences
Fichier_CompétencesYang Fei
 
Fpga handout
Fpga handoutFpga handout
Fpga handoutassnad
 
L'automate programmable - www.cours-online.com
L'automate programmable - www.cours-online.comL'automate programmable - www.cours-online.com
L'automate programmable - www.cours-online.commorin moli
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industrielAdnane Ahmidani
 
Projet tutoré_présentation PowerPoint.pptx
Projet tutoré_présentation PowerPoint.pptxProjet tutoré_présentation PowerPoint.pptx
Projet tutoré_présentation PowerPoint.pptxDavidVHOUMBY
 
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdfChapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdfSoumayaMabrouk2
 
PIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptxPIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptxMERVEILLEILLONASIGNE
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendreMariamHafsa
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptwafawafa52
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solutionCynapsys It Hotspot
 

Similaire à COpenCVLabjack.ppt (20)

Challenges of Parallel Simulation of Power Systems_french
Challenges of Parallel Simulation of Power Systems_frenchChallenges of Parallel Simulation of Power Systems_french
Challenges of Parallel Simulation of Power Systems_french
 
CAN
CANCAN
CAN
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic
 
Datalogger finale
Datalogger finaleDatalogger finale
Datalogger finale
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdf
 
Diapo zig bee_amin_jan11_final
Diapo zig bee_amin_jan11_finalDiapo zig bee_amin_jan11_final
Diapo zig bee_amin_jan11_final
 
Fichier_Compétences
Fichier_CompétencesFichier_Compétences
Fichier_Compétences
 
Rapport de sujet BTS 1.0
Rapport de sujet BTS 1.0Rapport de sujet BTS 1.0
Rapport de sujet BTS 1.0
 
Fpga handout
Fpga handoutFpga handout
Fpga handout
 
L'automate programmable - www.cours-online.com
L'automate programmable - www.cours-online.comL'automate programmable - www.cours-online.com
L'automate programmable - www.cours-online.com
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industriel
 
Projet tutoré_présentation PowerPoint.pptx
Projet tutoré_présentation PowerPoint.pptxProjet tutoré_présentation PowerPoint.pptx
Projet tutoré_présentation PowerPoint.pptx
 
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdfChapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
 
PIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptxPIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptx
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.ppt
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solution
 

Dernier

Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxabdououanighd
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsJaouadMhirach
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Coursebenezerngoran
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkRefRama
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKNassimaMdh
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...Universidad Complutense de Madrid
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLElebaobabbleu
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 

Dernier (20)

Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Cours
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 

COpenCVLabjack.ppt

  • 1. Introduction au langage C, traitement d’image et contrôle de moteur
  • 2. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 2 But  Suivi d’un objet coloré à l’aide d’une webcam montée sur un servomoteur PC Caméra Servomoteur Module d’interface LABJACK
  • 3. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 3 > Sommaire 1. Introduction au langage C a) Hello World! b) Fonctions c) Commentaires, types, structures, macros, constantes d) Tableaux statiques e) Chaînes de caractères f) Pointeurs g) Pointeurs et tableaux h) Allocation mémoire et tableaux dynamiques 2. Traitement d’image avec OpenCV a) OpenCV b) Utilisation rapide c) Images et C/C++ d) Images et OpenCV 3. Contrôle de servomoteurs a) Carte de puissance b) Servomoteur c) Carte d’interface d) Contrôle des moteurs et servomoteurs via Labjack
  • 4. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 4 Introduction au langage C
  • 5. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 5 Hello World! On souhaite utiliser des fonctions déclarées dans ce fichier (ici printf())
  • 6. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 6 Fonctions Déclaration de fonction : nécessaire ici car on souhaite utiliser print_arg() dans le main() mais on définit son contenu après le main()
  • 7. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 7 Commentaires, types, structures, macros, constantes
  • 8. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 8 Commentaires, types, structures, macros, constantes
  • 9. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 9 Commentaires, types, structures, macros, constantes
  • 10. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 10 Commentaires, types, structures, macros, constantes
  • 11. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 11 Commentaires, types, structures, macros, constantes
  • 12. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 12 Tableaux statiques
  • 13. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 13 Chaînes de caractères
  • 14. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 14 Pointeurs
  • 15. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 15 Pointeurs et tableaux
  • 16. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 16 Allocation mémoire et tableaux dynamiques
  • 17. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 17 Traitement d’image avec OpenCV
  • 18. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 18 OpenCV  Présentation • http://opencv.willowgarage.com/wiki/ • Bibliothèque open source • Portable (fonctionne sous Linux, Windows, Mac OS) • Fonctions en C/C++ ou Python • Codes optimisés développés à l'origine par Intel • Documentation et exemples de codes • …
  • 19. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 19 Utilisation rapide  Chargement et affichage d’un fichier image
  • 20. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 20 Utilisation rapide  Récupération d’une image webcam
  • 21. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 21 Images et C/C++  Représentation courante d’une image en C/C++ R G B R G B R G B R G B … Pixel 1 Pixel 2 Pixel 1 Pixel 2 Pixel 3 Pixel 4 Pixel 5 Pixel 9
  • 22. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 22 Images et OpenCV  Utilisation d’OpenCV – Type IplImage défini par OpenCV – Création d’une image couleur vierge
  • 23. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 23 Images et OpenCV  Utilisation d’OpenCV – Accès aux pixels d’une IplImage
  • 24. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 24 Contrôle de servomoteurs
  • 25. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 25 Carte de puissance  Permet de contrôler les moteurs par des signaux de commande – Moteurs : tensions et courants élevés provenant des batteries – Signaux de commande : tensions et courants faibles venant directement ou indirectement du PC • Exemples : signaux PWM, I2C
  • 26. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 26 Carte de puissance  Exemple : Robbe Rokraft Signaux de commande PWM, connecteur classique servomoteur Batterie avec connecteur Tamiya Moteurs
  • 27. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 27 Carte de puissance  Exemple : Robbe Rokraft – Fonctionnement • La puissance envoyée aux moteurs (et donc leur vitesse) dépend du signal de commande PWM • PWM = Pulse Width Modulation : modulation en largeur d’impulsion U : tension du PWM (5 V) t : largeur d’impulsion (entre 1 et 2 ms) T : période (20 ms)
  • 28. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 28 Carte de puissance  Exemple : Robbe Rokraft – Fonctionnement • Correspondance largeur d’impulsion / vitesse de rotation ARRET État du moteur Largeur d’impulsion Moteur à l’arrêt 1.5 ms Rotation dans un sens, en accélérant 1.5 à 2.0 ms Rotation dans le sens inverse, en décélérant 1.0 à 1.5 ms
  • 29. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 29 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
  • 30. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 30 Carte d’interface  Relie la partie informatique avec la partie électronique (capteurs, actionneurs) – Partie informatique : intelligence par le biais de programmes sur PC – Partie électronique : capteurs, actionneurs
  • 31. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 31 Carte d’interface  Exemple : boitier Labjack – Se branche sur l'ordinateur en USB et est contrôlé par des programmes exécutés sur l'ordinateur – Peut générer des signaux PWM, I2C – Peut générer des petites tensions – Peut lire des petites tensions (venant de capteurs analogiques tels que des télémètres, odomètres, boussoles...) – …
  • 32. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 32 Carte d’interface  Exemple : boitier Labjack Moteur Carte de Puissance Labjack U3 Alimentation
  • 33. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 33 Carte d’interface  Exemple : boitier Labjack Moteur 1 Moteur 2 Cartes de puissance Labjack PC de commande Dispositif de commande de moteurs avec la carte uE9
  • 34. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 34 Contrôle des moteurs et servomoteurs via Labjack  http://www.labjack.com/  Une bibliothèque de fonctions et drivers fournis pour différents langages, OS  Programmes exemples disponibles  Pour contrôler les moteurs, nous utiliserons les fonctions « timer » du Labjack
  • 35. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 35 Annexes
  • 36. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 36 Passage C/C++  Le C est inclus (à 99%) dans le C++ : quand on fait du C, on fait aussi du C++ mais l’inverse n’est pas forcément vrai  Le C++ rajoute des notions de programmation orientée objet (classe, héritage, polymorphisme) ainsi que des facilités d’écriture
  • 37. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 37 OpenCV  Présentation • 4 parties principales : – CXCORE (types et fonctions de base : matrices, images, arbres, graphes, fonctions mathématiques, dessin de formes…) – CV (traitement d’image : détection d’objets, de mouvement, calibration…) – HIGHGUI (récupération et affichage d’images : lecture/enregistrement de fichiers images et videos, gestion des webcams, affichage dans des interfaces graphiques…) – MLL (arbres de décision, réseaux de neurones…)
  • 38. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 38 Carte d’interface  Autres exemples : Cartes Parallax et Pololu – Se branchent en série (ou USB via un convertisseur USB-série) et génèrent jusqu’à 16 PWM
  • 39. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 39 Contrôle des moteurs et servomoteurs via Labjack  Le Labjack peut générer jusqu’à 6 timers/PWM dont la fréquence est définie par 16 2 * _ _ divisor clock timer f f syst PWM  Fréquence interne du Labjack Mode du PWM => précision de la largeur d’impulsion Paramètre pouvant être propre à chaque PWM pour faire varier sa fréquence indépendamment des autres Fréquence finale du PWM Doit être proche de 1/20ms pour pouvoir contrôler un servo
  • 40. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 40 Contrôle des moteurs et servomoteurs via Labjack  Fonctions utiles
  • 41. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 41 Contrôle des moteurs et servomoteurs via Labjack  Fonctions utiles
  • 42. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 42 Contrôle des moteurs et servomoteurs via Labjack  Fonctions utiles
  • 43. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 43 Rappels C/C++  Le C est inclus (à 99%) dans le C++ : quand on fait du C, on fait aussi du C++ mais l’inverse n’est pas forcément 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 n’incluent que des .h avec du C
  • 44. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 44 Rappels C/C++  Le C++ rajoute des notions de programmation orientée objet (classe, héritage, polymorphisme) ainsi que des facilités d’écriture
  • 45. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 45 Rappels C/C++  Différences 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 • Différents 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
  • 46. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 46 Rappels C/C++  Différences entre les compilateurs Windows et Linux Equivalences Linux / Windows Linux/GCC Windows/Visual C++ Fichiers objets .o .obj Bibliothèque statique .a .lib Bibliothèque dynamique .so .dll Exécutable - .exe
  • 47. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 47 Rappels C/C++  Visual Studio – Versions • Visual C++ 6 : date de 1998 • Visual Studio 2002 / 2003 ou .Net : refonte de l’IDE et ajout des projets .Net • Visual Studio 2005 / 2008 : quelques mises à jour – Difficile à prendre en main au début : nombreux types de projets, nombreuses options incompréhensibles – Mais assez abouti, très utilisé, beaucoup d’aide possible sur Internet
  • 48. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 48 Rappels C/C++  Visual Studio – Organisation • Workspace/Solution (fichier .dsw/.sln) : ensemble de projets • Projet (fichier .dsp/.vcproj) : ensemble de fichiers nécessaires à la génération d’un exécutable ou bibliothèque (.h, .c, .cpp…)
  • 49. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 49 Rappels C/C++  Utilisation de bibliothèques de fonctions externes Fichiers .c/.cpp Fichiers .obj Fichier .exe Fichier .lib Fichier .dll Compilation Est utilisée Edition des liens Edition des liens Regroupement Edition des liens
  • 50. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 50 Utilisation d’OpenCV avec Visual C++ 6  Les chemins suivants sont des chemins absolus considérant l'installation par défaut dans C:Program FilesOpenCV  Créer un projet Win32ConsoleApplication  Dans le menu "Project", "Settings", "C/C++", categorie "Preprocessor". Ajouter les chemins suivants dans "Additional include directories": – C:Program FilesOpenCVcvinclude, – C:Program FilesOpenCVcvauxinclude, – C:Program FilesOpenCVcxcoreinclude, – C:Program FilesOpenCVotherlibshighgui  Dans le menu "Project", "Settings", "Link", catégorie "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 FilesOpenCVlib  Modifier la variable d'environnement "PATH" de Windows en ajoutant: – C:Program FilesOpenCVbin  Dans le code, ajouter – #include "cvaux.h" – #include "highgui.h"
  • 51. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 51 Rappels C/C++  Utilisation de bibliothèques de fonctions externes – Cas où on possède des fichiers .h et .c/.cpp • Exemple : on a Main.cpp qui doit appeler des fonctions déclarées dans Lib.h et définies 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
  • 52. Introduction au langage C, traitement d’image et contrôle de moteur 25/05/2023 52 Rappels C/C++  Utilisation de bibliothèques de fonctions externes – Cas où on possède des fichiers .h, .lib et .dll • Exemple : on a Main.cpp qui doit appeler des fonctions déclarées dans Lib.h et définies 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 d’environnement PATH du système

Notes de l'éditeur

  1. Nom de la conférence XXX
  2. Nom de la conférence XXX