23/01/2012 RAPPORT DE PRT. MIQ 5 Le Roux Nicolas

Dimension: px
Commencer à balayer dès la page:

Download "23/01/2012 RAPPORT DE PRT. MIQ 5 Le Roux Nicolas"

Transcription

1 23/01/2012 RAPPORT DE PRT MIQ 5 Le Roux Nicolas

2 Remerciement Je tiens avant tout à remercier Monsieur Kiefer, maitre de conférence à l'institut National des Sciences Appliquées de Strasbourg, pour avoir proposé un sujet de projet de recherche technologique aussi intéressant et enrichissant que la commande d'un drone par un module kinect ainsi que pour l'aide apportée durant le développement. Je remercie ensuite Monsieur Vedrines, responsable de la spécialité mécatronique, pour m'avoir laissé l'opportunité de travailler sur ce projet. Je remercie enfin mon camarade de génie électronique, Etienne Jaillot, pour avoir partagé mon travail sur le module kinect. Résumé Etudiant en 5 ème année dans la section mécatronique du département mécanique de l'institut National des Sciences Appliquées de Strasbourg, j'ai effectué mon projet de recherche technologique sur le module kinect. La kinect est un périphérique de control ne nécessitant pas de manette. Il utilise pour cela la détection du corps humain via des capteurs 3 dimensions afin de déterminer sa position dans l'espace à l'aide une vingtaine de points d'intérêts (mains, coudes, épaules, genoux,...). L'objectif principal du projet est de mettre en œuvre un programme permettant de contrôler un drone en utilisant la détection du mouvement des bras de l'utilisateur par le biais d'un module kinect. La commande du drone habituellement réalisée par une radiocommande se voit donc remplacée par la kinect. Figure 1 : La Kinect

3 Sommaire Remerciement... 2 Sommaire... 3 Table des illustrations... 4 I. Présentation du projet Les objectifs La kinect Avantages et inconvénients... 6 II. Cahier des charges... 6 III. La commande de haut niveau... 7 IV. Le code Recherche de l'existant Prémices Les linkers/includes Code pour la kinect Code pour détection des mouvements Code pour la communication RS V. Mise en œuvre des tests VI. Conclusions VII. Bibliographie Fonctionnement de la Kinect Développement du code pour la Kinect Développement du code pour la communication RS VIII. Annexes Les caractéristiques techniques... 24

4 Table des illustrations Figure 1 : La Kinect... 2 Figure 2 : Les capteurs de la kinect... 5 Figure 3 : Lumière infrarouge projeté par la kinect... 5 Figure 4 : GANT du PRT... 6 Figure 5 : Linkers & Includes... 9 Figure 6 : Additionnal Dependancies Figure 7 : Interface de programmation de la kinect (API) Figure 8 : Repère kinect Figure 9 : Repère associé au buste Figure 10 : Point d'intérêt pour le pilotage Figure 11 : Les caractéristiques techniques I. Présentation du projet 1. Les objectifs L'objectif du projet de recherche technologique sur la kinect est de développer un code d'interfaçage entre le module Kinect et la commande Xbee du drone de manière à pourvoir envoyer des ordres de pilotage de haut niveau par détection des mouvements des bras. Ce module kinect à donc pour visée de se substituer au pilotage standard par radiocommande. 2. La kinect La kinect, initialement connu sous le nom de code Project Natal est un périphérique destiné à la console de jeux vidéo Xbox 360 permettant de contrôler ces derniers sans utiliser de manette. Suite aux multiples hacks (et tentatives de hacks) de ce périphérique dans le but de le porter sur ordinateur, Microsoft a dévoilé le 17 Juin 2011 la sortie du kit de développement officiel (Microsoft kinect SDK). Avec la sortie du SDK aujourd hui, nous sommes impatients de voir une autre vague de créativité de la part des chercheurs universitaires, des développeurs et des passionnés, dans des domaines bien au-delà du jeu et du divertissement, alors que nous apportons interface utilisateur naturelle (NUI) de développement à tous. Microsoft Au niveau technologique, ce périphérique de Microsoft est constitué d'un ensemble de capteur (barre horizontale) connectée à une base via un moteur. L'ensemble peut donc effectuer des mouvements de haut en bas (27 ) afin d'adapter la perception de la caméra en fonction de la position des utilisateurs dans la pièce. La kinect se compose de plusieurs éléments permettant d'améliorer l'analyse des mouvements par rapport à de simple caméra (comme EyeToyde chez Sony): multi-microphones caméra RGB 3D depth sensor

5 Figure 2 : Les capteurs de la kinect La principale nouveauté de cette caméra est le capteur de profondeur (3D depth sensor). Basé sur la technologie caméra portée conçue par la société israélienne PrimeSense, la kinect utilise un projecteur de lumière structurée et un système de capteurs IR (infrarouge) largement répandu dans les procédés de fabrication industrielle. La détection de la lumière structurée se fait grâce à l angle spécifique qui existe entre l'émetteur et le capteur, la profondeur peut être récupérée par de la simple triangulation. Figure 3 : Lumière infrarouge projeté par la kinect La lumière structurée est composé de 9 blocs avec un modèle spécifique semi-aléatoire de points à l'intérieur. Cette structure se répète à travers les blocs, et cette tendance résulte d'une structure holographique du point lumineux dans le centre de chaque bloc. La structure a été conçue pour être sphérique (forme sinueuse sur les bordures). Cette grille de projection définit le champ de vision du capteur Kinect, à savoir 43 degré pour l axe verticale et 57 degré pour l axe horizontale le tout pour une portée du capteur de 1,2 mètre à 3,5 mètres.

6 La distance entre les points à l'intérieur de la grille détermine la résolution spatiale du capteur de profondeur ( en couleur 16 bits à 30 image par seconde et de en couleur 32 bits à 30 image/sec). 3. Avantages et inconvénients L'avantage d'utiliser un module kinect pour la commande du drone est, à priori, de rendre le produit plus attractif et ludique. En effet, le nombre important de d'élément de la radiocommande peut paraitre rébarbatif pour certains utilisateurs. Cependant, l'utilisation de ce type d'appareil impose de multiples contraintes : La nécessité de disposer d'une source d'alimentation secteur La présence d'un ordinateur afin de traiter l'ensemble de données La présence de soleil perturbant fortement les mesures du capteur de profondeur L'utilisation de cet appareil se limite donc à priori à des manipulations en intérieur dans une zone où le soleil ne perturbe pas les mesures effectuées par la kinect. II. Cahier des charges Le cahier des charges de ce PRT définit l'ensemble des éléments indispensables que doit contenir le projet. A savoir : Mettre en place des mouvements de commande intuitifs qui permettent de facilement contrôler le drone. Rester ciblé sur le pilote et ce même si un autre individu entre dans le champ visuel de la kinect Envoyer les données sous la forme d'une trame semblable à celle de la radiocommande Créer un mode de sécurité en cas de problème (disparition du pilote, mouvement aberrants ou non souhaité) Une fois le cahier des charges mise en place, il était nécessaire de définir un planning des tâches dans le but de surveiller l'avancement du projet. Figure 4 : GANT du PRT

7 Finalement, ce planning a été plutôt bien respecté dans l'ensemble. Les objectifs principaux du projet étant remplis dans les temps. Le seul bémol se situe au niveau de la préparation du drone puisque il aurait été souhaitable de réaliser une démonstration de vol stationnaire commandé via la kinect. Tâche qui nécessite obligatoirement un asservissement en altitude robuste sur le drone, ce qui n'est malheureusement pas encore le cas. III. La commande de haut niveau La recherche de commande de haut niveau intuitive permettant de rapidement prendre en main le pilotage est un point essentiel de ce PRT. Le but de la kinect est de faire disparaitre la nécessitée d'avoir une manette mais pas seulement physiquement, il faut donner à l'utilisateur l'impression qu'il agit directement avec son corps sur l'objet d'intérêt afin d'améliorer l'expérience de pilotage en rendant la commande plus intuitive. De plus, l'utilisateur n'ayant aucun objet en main, la probabilité de perdre conscience qu'il est en train de piloter, à cause de perturbation extérieur, est plus élevée qu'avec une radiocommande. Les mouvements autres que le pilotage (se gratter, fouiller ces poches,...) ne doivent surtout pas être interprétés comme des consignes émissent par l'utilisateur. Nonobstant le fait que les mouvements doivent être référencés par rapport à l'utilisateur et non pas par rapport à l'espace de travail afin que ce dernier soit libre de se déplacer sans que ces mouvements ne soient interprétés comme des consignes. Parmi les nombreux choix de commande existant, très peu parviennent à satisfaire l'ensemble des critères mentionnés plus haut. La commande finalement retenue revient à contrôler le drone comme si l'utilisateur le tenait entre ses mains. Si les mains du pilote sont à dans un certain intervalle de distance, l'utilisateur "tient" le drone et peut donc le déplacer (le piloter). Si ces mains sont trop éloignées, l'utilisateur ne "tient" pas le drone, les mouvements réalisés par ce dernier ne doivent pas être interprétés comme des consignes. Le problème posé par ce choix de commande est de savoir où se localise la zone de non déplacement et par rapport à quoi la référencer. Pour la référencer, c'est le buste qui a été choisi, en effet, il ne bouge pas (ou peu) durant le mouvement des bras. De plus, quand l'utilisateur se déplace dans l'espace de travail, il n'existe pas (ou presque pas) de mouvement entre les bras et le buste. Il reste maintenant le problème de la localisation (la position zéro). La solution la plus pratique est de laisser l'utilisateur la définir, ainsi, il doit positionner la position zéro au début du programme et peut ensuite, s'il le souhaite, la modifier en cours de fonctionnement. Le placement de cette référence s'effectue simplement en tapant dans les mains. L'avantage de pouvoir replacer la référence de la position zéro durant le pilotage est de diminuer le risque de problème tels que la perte de la référence du point de vue de l'utilisateur. En ce qui concerne le détaille de la mise en œuvre du code nécessaire à cette détection de mouvement, il sera détaillé dans la partie code du rapport.

8 IV. Le code Après avoir définit de façon plus précise les mouvements de commande à détecter, cette seconde partie va s'orienter vers la réalisation du code permettant cette détection. Ainsi que sur le code nécessaire à l'émulation de la radiocommande. 1. Recherche de l'existant Avant tout, afin de ne pas perdre de temps dans la mise en œuvre du code spécifique à la commande du drone, une recherche de l'existant (code ou tutoriel) a été effectuée. Peu de codes existent sur internet pour la kinect (encore trop récente) et presque aucun ne remplissent toutes les conditions souhaitées (même langage, même compilateur, code suffisamment commenté,...). Finalement, c'est un tutoriel trouvé par Etienne Jaillot qui aura permit un gain de temps précieux. En ce qui concerne la communication RS232 avec les modules Xbees, un tutoriel de qualité détaillant point par point l'ensemble des lignes de code nécessaires a été trouvé facilement sur internet. Les explications détaillant le fonctionnement des codes kinect et communication RS232 sont tirées des tutoriels trouvés sur internet. La seul valeur ajoutée vient des éclaircissements sur les problèmes et points noirs rencontrés durant le développement du code. 2. Prémices Avant de pouvoir réellement commencer le code, il est nécessaire d'installer plusieurs programmes et de vérifier les compatibilités matériels. Au niveau hardware, il faut au minimum: Un processeur de 32 ou 64 bits Un processeur dual-core 2,66GHz Un bus USB2 dédier 2GB de RAM Au niveau software, il faut installer : Microsoft Visual studio 2010.NET Framework 4.0 Microsoft Kinect SDK En ce qui concerne le logiciel de développement, il est fortement conseillé d'utiliser Microsoft Visual studio 2010 et ce pour plusieurs raisons : La librairies Kinect SDK a été créée pour fonctionner avec ce logiciel de développement Les exemples de fonctionnement, les tutoriels et les aides en lignes sont presque toute faite pour ce logiciel de développement Les éclaircissements apportés par ce document sont en majorités fait sous Microsoft Visual studio 2010

9 3. Les linkers/includes La mise en place des linkers est un des points noirs du tutoriel et sans ces derniers, rien ne fonctionne. Un temps précieux a été perdu sur cette partie durant le développement du code et c'est pour cela qu'une partie entière leurs a été consacrée. Dans un premier temps, il faut indiquer les chemins des librairies statiques et dynamiques de la kinect. Include Directories : $(MSRKINECTSDK)\inc;$(IncludePath) Librairy Directories : $(MSRKINECTSDK)\lib;$(LibraryPath) Figure 5 : Linkers & Includes Puis, dans Additionnal Dependancies : MSRKinectNUI.lib

10 Figure 6 : Additionnal Dependancies Et enfin, pour terminer, il ne faut pas oublier d'inclure au début du programme : #inclure "windows.h" 4. Code pour la kinect La kinect est capable de traquer 20 points d'intérêts par corps. Pour pouvoir traquer ces points, il faut dans un premier temps préciser le drapeau NUI_INITIALIZE_FLAG_USES_SKELETON (utilisation du mode squelette de la kinect) lors de l initialisation du runtime (le temps durant lequel s'exécute le programme, ou fonctionnement normal) de la Kinect lors de l appel à la méthode NuiInitialize (méthode d'initialisation). Puis, il faut déclarer et créer un manual reset event, qui servira au runtime Kinect pour nous signaler la présence d une nouvelle trame que nous utiliserons par la suite en conjonction avec l API (l'interface de programmation). WaitForSingleObject HANDLE _skeleton; _skeleton = CreateEvent( NULL, TRUE, FALSE, NULL ); Ensuite nous démarrons la détection du Squelette avec l API NuiSkeletonTrackingEnable, en lui passant comme paramètre le HANDLE (pointeur d'objet utilisé dans plusieurs programme) de l évènement précédemment crée. hr = NuiSkeletonTrackingEnable( _skeleton, 0 );

11 Figure 7 : Interface de programmation de la kinect (API) Le second paramètre est ignoré dans la version actuelle du runtime. Pour désactiver la détection du squelette, il suffit d utiliser l API NuiSkeletonTrackingDisable. Pour capturer une trame du squelette, nous utiliserons l API NuiSkeletonGetNextFrame en mode polling (appel en boucle) dans une boucle de la manière suivante : NuiSkeletonGetNexFrame, prend un pointeur sur la structure NUI_SKELETON_FRAME, structure qui contiendra les données de la trame envoyée par Kinect. C est à partir de cette structure que nous allons pouvoir déterminer si un ou plusieurs squelettes ont été détectés comme nous le verrons par la suite. NUI_SKELETON_FRAME SkeletonFrame; hr = NuiSkeletonGetNextFrame( 0, &SkeletonFrame ); Le 1er paramètre est un délai d attente exprimé en milliseconde avant le retour sans trame de la fonction. Ce qui nous intéresse dans notre exemple avec la structure NUI_SKELETON_FRAME, c est qu elle contient un tableau de structures nommé SkeletonData de NUI_SKELETON_DATA réglé au nombre de NUI_SKELETON_COUNT (Constante définie à 6 squelettes). typedef struct _NUI_SKELETON_FRAME { LARGE_INTEGER litimestamp; DWORD dwframenumber; DWORD dwflags; Vector4 vfloorclipplane; Vector4 vnormaltogravity;

12 NUI_SKELETON_DATA SkeletonData[NUI_SKELETON_COUNT]; NUI_SKELETON_FRAME; C est ce tableau de structures que nous allons manipuler afin de retrouver l index ou les index des squelettes détectés par kinect. Pour ce faire, il suffit de boucler sur le nombre NUI_SKELETON_COUNT et tester si l état du squelette etrackingstate est détecté ou pas. for( int i = 0 ; i < NUI_SKELETON_COUNT ; i++ ) { if( SkeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED ) { //code omis pour plus de clarté Une fois que le squelette est détecté, nous allons traquer, les 20 points ou jointures du squelette. La structure NUI_SKELETON_DATA contient elle-même un tableau SkeletonPositions de Vector4 de NUI_SKELETON_POSITION_COUNT (Constante définie sur 20). typedef struct _NUI_SKELETON_DATA { NUI_SKELETON_TRACKING_STATE etrackingstate; DWORD dwtrackingid; DWORD dwenrollmentindex; DWORD dwuserindex; Vector4 Position; Vector4 SkeletonPositions[NUI_SKELETON_POSITION_COUNT]; NUI_SKELETON_POSITION_TRACKING_STATE eskeletonpositiontrackingstate[nui_skeleton_position_count]; DWORD dwqualityflags; NUI_SKELETON_DATA; Par exemple si nous souhaitons traquer les mains il suffit d utiliser les index NUI_SKELETON_POSITION_HAND_RIGHT et NUI_SKELETON_POSITION_HAND_LEFT. for( int i = 0 ; i < NUI_SKELETON_COUNT ; i++ ) { if( SkeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED ) { Vector4 maindroite=skeletonframe.skeletondata[i].skeletonpositions [NUI_SKELETON_POSITION_HAND_RIGHT] Vector4 maingauche = SkeletonFrame.SkeletonData[i].SkeletonPositions [NUI_SKELETON_POSITION_HAND_LEFT]

13 Et ainsi de suite pour chacun des éléments du corps que l'on souhaite détecter. Pour résumer, le code minimum que doit contenir le programme est le suivant : //Variables de calcul float distancemain = 0; //Variable retournant infos fonctions HRESULT hr; Vector4 maindroite, maingauche, centrebuste, positionjoystick, positionjoystickoffset; //Initialisation des offsets positionjoystickoffset.x = 0; positionjoystickoffset.y = 0; positionjoystickoffset.z = 0; //Event afin de signaler la présence d'une nouvelle trame HANDLE _skeleton; _skeleton = CreateEvent( NULL, TRUE, FALSE, NULL ); //Structure contenant les données envoyé par la kinect NUI_SKELETON_FRAME SkeletonFrame; //Initialisation hr = NuiInitialize(NUI_INITIALIZE_FLAG_USES_SKELETON); hr = NuiSkeletonTrackingEnable( _skeleton, 0 ); //*** Boucle principale *** while(1){ hr = NuiSkeletonGetNextFrame( 0, &SkeletonFrame ); if( SkeletonFrame.SkeletonData[0].eTrackingState == NUI_SKELETON_TRACKED ) { //Récupération des coordonnées des points d'intérêts du pilote uniquement maindroite = SkeletonFrame.SkeletonData[0].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT]; maingauche = SkeletonFrame.SkeletonData[0].SkeletonPositions[NUI_SKELETON_POSITION_HAND_LEFT]; //Désactivation du tracking et fermeture NuiSkeletonTrackingDisable; NuiShutdown(); 5. Code pour détection des mouvements En ce qui concerne la détection des mouvements de l'utilisateur, on commence par récupérer la position des points d'intérêts de ce dernier, à savoir la main droite, la main gauche et le centre du buste. Ces données sont référencées par rapport au repère caméra dont l'origine est au centre de la focale.

14 Figure 8 : Repère kinect //Récupération des coordonnées des points d'intérêts maindroite = SkeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT]; maingauche = SkeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_LEFT]; centrebuste = SkeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_SHOULDER_CENTER]; On effectue ensuite un changement de repère afin de référencer les mains de l'utilisateur par rapport au centre de son buste. Figure 9 : Repère associé au buste //Changement de repère pour les coordonnées des mains (par rapport au centre du buste) maindroite.x = maindroite.x - centrebuste.x;

15 maindroite.y = maindroite.y - centrebuste.y; maindroite.z = maindroite.z - centrebuste.z; maingauche.x = maingauche.x - centrebuste.x; maingauche.y = maingauche.y - centrebuste.y; maingauche.z = maingauche.z - centrebuste.z; Ensuite, on calcule la distance euclidienne séparant les deux mains de l'utilisateur. //Calcul de la distance entre les mains (simple norme euclidienne) distancemain = fabs( sqrt( pow( maindroite.x - maingauche.x, 2) + pow( maindroite.y - maingauche.y, 2) + pow( maindroite.z - maingauche.z, 2) ) ); Puis, on calcul les coordonnées du point situé au milieu de la droite liant les deux mains. Figure 10 : Point d'intérêt pour le pilotage //Calcul des coordonnées du point entre les mains positionjoystick.x = maindroite.x - sqrt( pow( maindroite.x - maingauche.x, 2) ); positionjoystick.y = maindroite.y - sqrt( pow( maindroite.y - maingauche.y, 2) ); positionjoystick.z = maindroite.z - sqrt( pow( maindroite.z - maingauche.z, 2) ); Si la distance entre les deux mains est inférieur à une distance défini, on considère que l'utilisateur frappe dans ses mains souhaitant réaliser le réglage des offsets. La position courante au centre des mains est alors enregistrée comme position de référence. De plus, un booléen réglageoffset impose à l'utilisateur le réglage de l'offset avant la première utilisation. //Si la distance entre les mains est inférieur à 20cm, on fait les offsets if( distancemain <= 0.20 ){ cout << "Reglage des offsets" << endl;

16 positionjoystickoffset.x = positionjoystick.x; positionjoystickoffset.y = positionjoystick.y; positionjoystickoffset.z = positionjoystick.z; //Les offsets ont bien été effectués reglageoffset = TRUE; Sinon, l'utilisateur est dans la configuration de pilotage. Le programme calcul donc les données qu'il doit envoyer au drone en utilisant le tableau de caractère lpbuff qui correspond à la trame émulée de la radiocommande. Dans tout les autres cas, les mouvement de l'utilisateur ne sont pas pris en compte puisqu'il ne sont pas considérés comme des mouvements de pilotages. //Si la distance entre les mains est compris entre 30 et 5 cm, on envoie les commandes else if (distancemain <= 0.4 && reglageoffset){ //Données de la voix 0 (quadri: Tangage) (MicroD: NaN) lpbuff[2] = 1; //saturation_radiocommande( 100*(- positionjoystick.z + positionjoystickoffset.z), 0 ); //Données de la voix 1 (quadri: NaN) (MicroD: Gouverne Droite) lpbuff[3] = saturation_radiocommande( 100*(positionJoystick.y - positionjoystickoffset.y), 50 ); //Données de la voix 2 (quadri: mode manuel-100 / semi-auto-0) (MicroD: Moteur Droit) lpbuff[4] = 1; //Données de la voix 3 (quadri: Puissance) (MicroD: Moteur Gauche) lpbuff[5] = 1; //Données de la voix 4 (quadri: Roulis) (MicroD: Gouverne Gauche) lpbuff[6] = saturation_radiocommande( 100*(positionJoystick.x - positionjoystickoffset.x), 50 ); //Données de la voix 5 (quadri: Lacet) (MicroD: mode manuel-100 / semi-auto-0) lpbuff[7] = 100; //Données de la voix 6 (quadri: mode auto-100 / semi-auto-0) (MicroD: mode auto-100 / semi-auto-0) lpbuff[8] = 1; //Calcul du checksum lpbuff[9] = 0; for(i=0; i<9; i++){ lpbuff[9] += lpbuff[i]; Le code complet nécessaire à la détection des mouvements de pilotage de l'utilisateur se trouve ci-dessous. Ce dernier est un exemple utilisé uniquement dans le but de commander les gouvernes du drone orange. if( SkeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED ) { //Récupération des coordonnées des points d'intérêts

17 maindroite = SkeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT]; maingauche = SkeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_LEFT]; centrebuste = SkeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_SHOULDER_CENTER] ; //Changement de repère pour les coordonnées des mains (par rapport au centre du //buste) maindroite.x = maindroite.x - centrebuste.x; maindroite.y = maindroite.y - centrebuste.y; maindroite.z = maindroite.z - centrebuste.z; maingauche.x = maingauche.x - centrebuste.x; maingauche.y = maingauche.y - centrebuste.y; maingauche.z = maingauche.z - centrebuste.z; //Calcul de la distance entre les mains (simple norme euclidienne) distancemain = fabs( sqrt( pow( maindroite.x - maingauche.x, 2) + pow( maindroite.y - maingauche.y, 2) + pow( maindroite.z - maingauche.z, 2) ) ); //Calcul des coordonnées du point entre les mains positionjoystick.x = maindroite.x - sqrt( pow( maindroite.x - maingauche.x, 2) ); positionjoystick.y = maindroite.y - sqrt( pow( maindroite.y - maingauche.y, 2) ); positionjoystick.z = maindroite.z - sqrt( pow( maindroite.z - maingauche.z, 2) ); //Si la distance entre les mains est inférieur à 5cm, on fait les offsets if( distancemain <= 0.20 ){ cout << "Reglage des offsets" << endl; positionjoystickoffset.x = positionjoystick.x; positionjoystickoffset.y = positionjoystick.y; positionjoystickoffset.z = positionjoystick.z; //Les offsets ont bien été effectués reglageoffset = TRUE; //Si la distance entre les mains est compris entre 30 et 5 cm, on envoie //les commandes else if (distancemain <= 0.4 && reglageoffset){ /*** Trame télécommande ***/ //! Octet de type d'une trame télécommande /*! Une telle trame est construite de la façon suivante : * <'@'> <'@'> <voie1:1> <voie2:1> <voie3:1> <voie4:1> <voie5:1> <voie6:1> * <voie7:1> <Checksum> * -> 10 octets * /!\ Ne pas mettre de 0 dans les trames car il est considéré comme un * octet de fin de trame (Non supprimable dans la réglage du port série * de l'ordi...) */ //Données de la voix 0 (quadri: Tangage) (MicroD: NaN) lpbuff[2] = 1; //Données de la voix 1 (quadri: NaN) (MicroD: Gouverne Droite) lpbuff[3] = saturation_radiocommande( 100*(positionJoystick.y -positionjoystickoffset.y), 50 ); //Données de la voix 2 (quadri: mode manuel-100 / semi-auto-0) (MicroD: //Moteur Droit) lpbuff[4] = 1; //Données de la voix 3 (quadri: Puissance) (MicroD: Moteur Gauche) lpbuff[5] = 1; //Données de la voix 4 (quadri: Roulis) (MicroD: Gouverne Gauche)

18 lpbuff[6] = saturation_radiocommande( 100*(positionJoystick.x - positionjoystickoffset.x), 50 ); //Données de la voix 5 (quadri: Lacet) (MicroD: mode manuel-100 / semi- //auto-0) lpbuff[7] = 100; //Données de la voix 6 (quadri: mode auto-100 / semi-auto-0) (MicroD: //mode auto-100 / semi-auto-0) lpbuff[8] = 1; //Calcul du checksum lpbuff[9] = 0; for(i=0; i<9; i++){ lpbuff[9] += lpbuff[i]; 6. Code pour la communication RS232 Le code de la communication RS232 fait le liens entre la détection des mouvement effectués par la kinect et l'émission des trames vissant à émuler la radiocommande. Dans un premier temps, il faut créer un HANDLE que l'on initialisera en appelant un CreateFile. Le première argument est le nom du fichier que l'on souhaite ouvrir. Dans notre cas, il s'agit d'un port série, il faut donc indiquer : "COM1", "COM2",... Ensuite, le second argument définit si l'on souhaite lire ou écrire sur le fichier (GENERIC_READ, GENERIC_WRITE). Les arguments 2 et 3 doivent être placé à zéro. L'argument 4 indique que l'on souhaite ouvrir un fichier existant, en effet, le port série existe si un appareil y est connecté. L'avant dernière argument stipule que nous ne voulons pas de fichier spécifique. Puis, enfin le dernier qui doit être placé à zéro. hserial = CreateFile ( TEXT("COM5"), GENERIC_READ GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); On vérifie ensuite la validité du port de communication série sélectionné et informe l'utilisateur des problèmes rencontrés (s'il y en a). if(hserial==invalid_handle_value){ if( GetLastError()==ERROR_FILE_NOT_FOUND ){ //serial port does not exist. Inform user //some other error occurred. Inform user. Dans cette partie, on commence par créer une variable contenant les paramètres du port série dcbserialparams. Une fois la variable créée, on définit les paramètres de notre port série (baudrate, taille des octets, bits de stop,...). Puis, on termine cette partie en associant ces nouveaux paramètres au port série.

19 C'est dans cette parti que ce situe un autre des points noir de la communication série. En effet, il est nécessaire de mettre en place un octet d'arrêt, dans notre cas l'octet choisi est l'octet 0. Quand cette octet apparait sur la trames, il stop l'émission de la dite trame, impliquant une coupure en plein milieu de celle-ci. Il existe certainement un mode permettant de ne pas avoir de bit de stop que je ne suis malheureusement pas parvenu à trouver. DCB dcbserialparams = {0; dcbserial.dcblength=sizeof(dcbserialparams); if (!GetCommState(hSerial, &dcbserialparams)) { //error getting state dcbserialparams.baudrate=cbr_19200; dcbserialparams.bytesize=8; dcbserialparams.stopbits=onestopbit; dcbserialparams.parity=noparity; if(!setcommstate(hserial, &dcbserialparams)){ //error setting serial port state De la même manière, on associe au port série des timeouts entre les intervalles de lecture/écriture afin que l'ordinateur n'attende pas éternellement la réception. COMMTIMEOUTS timeouts={0; timeouts.readintervaltimeout=50; timeouts.readtotaltimeoutconstant=50; timeouts.readtotaltimeoutmultiplier=10; timeouts.writetotaltimeoutconstant=50; timeouts.writetotaltimeoutmultiplier=10; if(!setcommtimeouts(hserial, &timeouts)){ //error occureed. Inform user Finalement, on déclare une chaine de caractère que l'on peut lire ou écrire à notre guise (Pour l'écriture il suffit simplement de remplacer!readfile par!writefile. Cette chaine est envoyée une seul fois et il est donc nécessaire de la placer dans une boucle qui l'enverra à une fréquence régulière. char szbuff[n + 1] = {0; DWORD dwbytesread = 0; if(!readfile(hserial, szbuff, n, &dwbytesread, NULL)){ //error occurred. Report to user. Pour résumer, le code global de la communication RS232 dans le but d'émuler la radiocommande se trouve ci-dessous. Un timeout supplémentaire a été ajouté afin de permettre l'envoie des données à une fréquence spécifiée dans le programme.

20 //Envoi des données toutes les 50 ms (600 ms pour le timeout com carte mère); #define TIMEOUT_COMMUNICATION 50 int _tmain(int argc, _TCHAR* argv[]) { HANDLE hserial; //Variables définissant les timeouts clock_t timeout_com; char i; char szbuff[10 + 1]= {0; char lpbuff[10 + 1] = {0; DWORD dwbytesread = 0; DWORD dwbyteswrite = 0; //Initialisation de l'envoi de donnée timeout_com = clock(); //Emulation de la trame télécommande lpbuff[0] = '@'; lpbuff[1] = '@'; lpbuff[2] = 1; lpbuff[3] = 2; lpbuff[4] = 3; lpbuff[5] = 4; lpbuff[6] = 5; lpbuff[7] = 110; lpbuff[8] = 7; //Calcul du cheksum lpbuff[9] = 0; for(i=0; i<9; i++){ lpbuff[9] += lpbuff[i]; //Initialisation du port série hserial = CreateFile (TEXT("COM5"), //Choix du port GENERIC_READ GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(hserial==invalid_handle_value){ if(getlasterror()==error_file_not_found){ //serial port does not exist. Inform user. cout << "Pas de port com" << endl; //some other error occurred. Inform user. cout << "Erreur" << endl; //Déclaration de la structures des paramètres de réglage du port série DCB dcbserialparams = {0; //Déclaration de la taille, une étrangeté de windows dcbserialparams.dcblength=sizeof(dcbserialparams); //On associe le port série (hserial) avec notre structure de paramètres de //réglage (dcbserialparams) if (!GetCommState(hSerial, &dcbserialparams)) { //error getting state

µrv : Realité Virtuelle

µrv : Realité Virtuelle µrv : Realité Virtuelle Edgar-Fernando ARRIAGA-GARCIA Charles-Henri BABIAUD Clément GRELLIER Quentin PETIT Jérôme Ricoeur Florent VIOLLEAU INSA Rennes 21 septembre 2011 1 / 15 Objectifs pour cette semaine

Plus en détail

La visio-conférence holographique : Pourquoi? Comment?

La visio-conférence holographique : Pourquoi? Comment? La visio-conférence holographique : Pourquoi? Comment? Francis Felix Labo LSIS / Arts & Métiers Paritech (ENSAM) 2 Cours des Arts et Métiers 13100 Aix-en-Provence Thierry Henocque AIP-Primeca Dauphiné

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Sommaire. Leap motion... 2. Technologie... 2. Fonctionnement... 3. Langages utilisés... 3. Possibilités d utilisation... 4

Sommaire. Leap motion... 2. Technologie... 2. Fonctionnement... 3. Langages utilisés... 3. Possibilités d utilisation... 4 Leap4Skywalker Sommaire Leap motion... 2 Technologie... 2 Fonctionnement... 3 Langages utilisés... 3 Possibilités d utilisation... 4 Projet développé avec le LeapMotion... 4 Imagination... 5 Technologies

Plus en détail

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7 Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Nb. De pages : 24 MANGO. Manuel d'utilisation. Version 1.2. décembre 2010

Nb. De pages : 24 MANGO. Manuel d'utilisation. Version 1.2. décembre 2010 N. de page : 1 MANGO Manuel d'utilisation Version décembre 2010 N. de page : 2 Table des matières 1.Présentation...3 Description technique... 3 2.Caractéristiques techniques...5 Aspect technique d'une

Plus en détail

1 Gestionnaire de Données WORD A4 F - USB / 2014-04-05 / 6020 Alco-Connect

1 Gestionnaire de Données WORD A4 F - USB / 2014-04-05 / 6020 Alco-Connect 1 Gestionnaire de Données WORD A4 F - USB / 2014-04-05 / 6020 Alco-Connect Introduction... 4 Comment décrire le logiciel Cosmos?... 4 Quelles sont les fonctions de ce logiciel PC?... 4 Est-il possible

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Installation et prise en main

Installation et prise en main TP1 Installation et prise en main Android est le système d'exploitation pour smartphones, tablettes et autres appareils développé par Google. Pour permettre aux utilisateurs d'installer des applications

Plus en détail

Sommaire. Bertrand PECUCHET

Sommaire. Bertrand PECUCHET Sommaire I. Introduction... 2 II. Présentation de la Kinect... 3 1. Caractéristiques :... 4 III. Focus sur les différents capteurs de la Kinect... 5 1. Le capteur RGB... 5 2. Capteur et émetteur Infrarouge...

Plus en détail

Rapport projet MMI. Luis Domingues, I3 Naomi Favre, I3 Tiago De Deus, I3. Luis Domingues, Tiago De Deus, Naomi Favre SP 2013 - Interfaces Multimodales

Rapport projet MMI. Luis Domingues, I3 Naomi Favre, I3 Tiago De Deus, I3. Luis Domingues, Tiago De Deus, Naomi Favre SP 2013 - Interfaces Multimodales Rapport projet MMI 2013 Luis Domingues, I3 Naomi Favre, I3 Tiago De Deus, I3 Page 1 Table des matières Luis Domingues, Tiago De Deus, Naomi Favre Introduction... 4 Contexte... 4 Description du projet...

Plus en détail

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Interface PC Vivago Ultra. Pro. Guide d'utilisation Interface PC Vivago Ultra Pro Guide d'utilisation Version 1.03 Configuration de l'interface PC Vivago Ultra Configuration requise Avant d'installer Vivago Ultra sur votre ordinateur assurez-vous que celui-ci

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control HMI target Visu / PLC HMI Pour réaliser une interface homme machine avec PLC control VERSION : 1.4 / PH DATE : 5 Novembre 2014 Sommaire Ce manuel explique de manière pratique les étapes successives pour

Plus en détail

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Livre blanc Mesure des performances sous Windows Embedded Standard 7 Livre blanc Mesure des performances sous Windows Embedded Standard 7 Table des matières Résumé... 1 Introduction... 1 Utilisation de la boîte à outils Windows Performance Analysis... 2 Fonctionnement...

Plus en détail

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova I. Introduction Dans une période où la plasticité peut aider à réduire les coûts de développement de projets comme des applications mobile,

Plus en détail

TD/TP 1 Introduction au SDK d Android

TD/TP 1 Introduction au SDK d Android TD/TP 1 Introduction au SDK d Android Romain Raveaux 1 Introduction Android est un système d'exploitation pour téléphone portable de nouvelle génération développé par Google. Celui-ci met à disposition

Plus en détail

Working with Kinect. Intelligence Ambiante. Tomás DÍAZ TRONCOSO Arturo GARCÍA TOVAR Daoud MAROUAN LMTIUI

Working with Kinect. Intelligence Ambiante. Tomás DÍAZ TRONCOSO Arturo GARCÍA TOVAR Daoud MAROUAN LMTIUI Working with Kinect Intelligence Ambiante Tomás DÍAZ TRONCOSO Arturo GARCÍA TOVAR Daoud MAROUAN LMTIUI Table des matières I.IntroducCon à la Kinect... 3 I. Kinect à la portée de tous... 4 II. CaractérisCques...

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

A- Observez la vidéo A présentant le fonctionnement de deux objets techniques que nous

A- Observez la vidéo A présentant le fonctionnement de deux objets techniques que nous Nous savons qu'un système d'alarme permet de protéger une habitation en détectant et en signalant une ouverture de porte, de fenêtre ou un mouvement dans une pièce. Mais comment détecter et existe il un

Plus en détail

Qui ont toujours à mon côté pour me soutenir et me guider au long de ce projet.

Qui ont toujours à mon côté pour me soutenir et me guider au long de ce projet. 1/ 15 Remerciement Tous mes sincères remerciements à Monsieur GIOT, Rudi pour m avoir guidé, aidé, suivi et donné les conseils, les explications précieuses tout au long de ce bureau d étude. Et particulièrement

Plus en détail

Conservation des documents numériques

Conservation des documents numériques Conservation des documents numériques Qu'est ce qu'un document numérique? Matthieu GIOUX matthieu.gioux@bnf.fr Contexte de la préservation des documents numériques Une croissance en expansion Développement

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Logiciel EV3 LEGO MINDSTORMS Education

Logiciel EV3 LEGO MINDSTORMS Education Robot éducateur : LEGO Education a le plaisir de vous présenter Robot éducateur, une sélection d'activités pédagogiques vous permettant de prendre en main votre EV3 LEGO MINDSTORMS Education de façon structurée

Plus en détail

Voir le monde à travers un capteur de profondeur

Voir le monde à travers un capteur de profondeur Voir le monde à travers un capteur de profondeur Copyright 2014 pabr@pabr.org Tous droits réservés. (All rights reserved.) Dans ce projet nous installons une caméra à capteur de profondeur sur un casque

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

MASTER 2 INFORMATIQUE - UNIVERSITE DE FRANCHE-COMTE. Projet Kinect. Détection de mouvements intempestifs dans un bloc opératoire

MASTER 2 INFORMATIQUE - UNIVERSITE DE FRANCHE-COMTE. Projet Kinect. Détection de mouvements intempestifs dans un bloc opératoire MASTER 2 INFORMATIQUE - UNIVERSITE DE FRANCHE-COMTE Projet Kinect Détection de mouvements intempestifs dans un bloc opératoire Benoît Bernardin et Paul Meyer sous l encadrement de Jean-Christophe Lapayre

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

CARPE. Documentation Informatique S E T R A. Version 2.00. Août 2013. CARPE (Documentation Informatique) 1

CARPE. Documentation Informatique S E T R A. Version 2.00. Août 2013. CARPE (Documentation Informatique) 1 CARPE (Documentation Informatique) 1 CARPE Version 2.00 Août 2013 Documentation Informatique S E T R A Programme CARPE - Manuel informatique de l'utilisateur CARPE (Documentation Informatique) 2 Table

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Projet Robot Centaure

Projet Robot Centaure Projet Robot Centaure Année 2013-2014 IMA4 S8 Étudiants : Clément TACHÉ Liying WANG Enseignants : Robert Litwak Xiavier Redon Table des matières : Remerciements Introduction Présentation et état des lieux

Plus en détail

Utilisation du logiciel GALAAD

Utilisation du logiciel GALAAD 1 Sommaire: Présentation du logiciel GALAAD 1. Démarrer le programme........ 2. Présentation de l écran du logiciel....... Les barres d'outils, sauvegarder... 3. Créer un nouveau fichier........ 4. Préparer

Plus en détail

Traitement numérique de l'image. Raphaël Isdant - 2009

Traitement numérique de l'image. Raphaël Isdant - 2009 Traitement numérique de l'image 1/ L'IMAGE NUMÉRIQUE : COMPOSITION ET CARACTÉRISTIQUES 1.1 - Le pixel: Une image numérique est constituée d'un ensemble de points appelés pixels (abréviation de PICture

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Utilisation du visualiseur Avermedia

Utilisation du visualiseur Avermedia Collèges Numériques Utilisation du visualiseur Avermedia Un visualiseur est aussi appelé caméra de table et ce nom rend mieux compte de sa fonction première à savoir filmer un document (revue,carte, dissection,

Plus en détail

Utilisation de la Kinect

Utilisation de la Kinect Utilisation de la Kinect Antoine Lejeune Sébastien Piérard Marc Van Droogenbroeck Jacques Verly Juillet 2012 Résumé Fin 2010, Microsoft lançait la Kinect pour Xbox 360, la première caméra 3D destinée au

Plus en détail

COMMUNICATION PC/MINITEL

COMMUNICATION PC/MINITEL 229 Cet article fait suite à ceux publiés dans les bulletins de l'epi n 47 page 207 et 48 page 205. Si vous avez réussi à construire un câble de liaison, vous vous êtes peut être demandé comment vous en

Plus en détail

Système de vidéoconférence avec périphériques

Système de vidéoconférence avec périphériques Regroupement des conseils scolaires de langue française de l Ontario Guide d utilisation Système de vidéoconférence avec périphériques Centre d aide Vidéoconférence 866 544-2044 http://video.franco-nord.edu.on.ca

Plus en détail

PRECAUTIONS DESCRIPTION DU PRODUIT

PRECAUTIONS DESCRIPTION DU PRODUIT Vous venez d acquérir un produit de la marque Essentiel b et nous vous en remercions. Nous apportons un soin particulier au design, à l'ergonomie et à la simplicité d'usage de nos produits. Nous espérons

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

http://notes.mstechdays.fr

http://notes.mstechdays.fr Donnez votre avis! Depuis votre smartphone, sur : http://notes.mstechdays.fr De nombreux lots à gagner toutes les heures!!! Claviers, souris et jeux Microsoft Merci de nous aider à améliorer les TechDays

Plus en détail

GS301-A Notice d installation et d utilisation.

GS301-A Notice d installation et d utilisation. IMPORTANT: LIRE ENTIEREMENT CETTE NOTICE ET LA COMPRENDRE. GARDER CETTE NOTICE EN LIEU SUR ET IMMEDIATEMENT ACCESSIBLE. Alarme Périphérique Infra-Rouge GS301-A Notice d installation et d utilisation. Description

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français Table des Matières 1. Introduction... 2 2. Spécifications du Système... 2 3. Installer Ladibug... 3 4. Connexion

Plus en détail

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION DES NOMBRES par Jean-Luc BREGEON professeur formateur à l IUFM d Auvergne LE PROBLÈME DE LA REPRÉSENTATION DES NOMBRES On ne conçoit pas un premier enseignement

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

LES TOUT PREMIERS PAS

LES TOUT PREMIERS PAS DESMODO, un logiciel de gestion d idées http://www.desmodo.net/ LES TOUT PREMIERS PAS Desmodo est un logiciel (libre) qui permet, entre autre, de visualiser et de synthétiser, de manière organisée, sous

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

Éléments d'architecture des ordinateurs

Éléments d'architecture des ordinateurs Chapitre 1 Éléments d'architecture des ordinateurs Machines take me by surprise with great frequency. Alan Turing 1.1 Le Hardware Avant d'attaquer la programmation, il est bon d'avoir quelques connaissances

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

! #$ $ $ ! %#& ! '& ( )! )*+ ! "! "#$ $ $ ""! %#& """! '& ( ")! )*+ "! "#$ $ $ ""! %#& """! '& ( ")! )*+, ## $ *$-./ 0 - ## 1( $. - (/$ #,-".2 + -".234-5..'"6..6 $37 89-%:56.#&(#. +6$../.4. ;-37 /. .?.@A&.!)B

Plus en détail

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante : Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante : http://www.hegerys.com/documentation/magicsafe-windows-doc.pdf

Plus en détail

http://www.jdl68160.com/informatique/yawcam.htm

http://www.jdl68160.com/informatique/yawcam.htm Date de publication: le 11/05/2013 Date de modification le : 19/05/2013-20:45 Edition de la version PDF le 20/05/2013 Yawcam est un petit logiciel gratuit, mais très complet, permettant de diffuser/d'enregistrer

Plus en détail

Sharpdesk V3.3. Guide d installation Push pour les administrateurs système Version 3.3.04

Sharpdesk V3.3. Guide d installation Push pour les administrateurs système Version 3.3.04 Sharpdesk V3.3 Guide d installation Push pour les administrateurs système Version 3.3.04 Copyright 2000-2010 par SHARP CORPORATION. Tous droits réservés. Toute reproduction, adaptation ou traduction sans

Plus en détail

Chapitre 4 Pierre, papier, ciseaux

Chapitre 4 Pierre, papier, ciseaux Python 3 : objectif jeux Chapitre 4 Chapitre 4 Pierre, papier, ciseaux (version graphique) 4.1. Thèmes abordés dans ce chapitre Le module tkinter : Label, Button Fenêtre Événements Réceptionnaire d'événements

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Télécom Nancy Année 2013-2014

Télécom Nancy Année 2013-2014 Télécom Nancy Année 2013-2014 Rapport 1A Ajout du langage C dans la Programmer's Learning Machine GIANNINI Valentin Loria 615, rue du Jardin Botanique 54600, Villers-Lès-Nancy Maître de stage : QUINSON

Plus en détail

1 INSTALLATION DU LOGICIEL CGVCAM 4. 1.1 Télécharger et installer le logiciel 4. 1.2 Démarrer le logiciel 5 2 PRESENTATION DU LOGICIEL CGVCAM 5

1 INSTALLATION DU LOGICIEL CGVCAM 4. 1.1 Télécharger et installer le logiciel 4. 1.2 Démarrer le logiciel 5 2 PRESENTATION DU LOGICIEL CGVCAM 5 1 2 INDEX 1 INSTALLATION DU LOGICIEL CGVCAM 4 1.1 Télécharger et installer le logiciel 4 1.2 Démarrer le logiciel 5 2 PRESENTATION DU LOGICIEL CGVCAM 5 3 INSTALLER UNE CAMERA 6 4 DETECTION DE MOUVEMENT,

Plus en détail

Documentation utilisateur. [EIP] TransLSF

Documentation utilisateur. [EIP] TransLSF Documentation utilisateur [EIP] TransLSF Henri HARDILLIER - Thomas MOREL - Florian JOUSSEAU Alexis MONNIER - Keo KHEMARA - Leo MARTIN Stéphane RICARDO Résumé Ce document présente la documentation destinée

Plus en détail

MODE D EMPLOI LOGICIEL DE PILOTAGE CROIX SMART 5.0

MODE D EMPLOI LOGICIEL DE PILOTAGE CROIX SMART 5.0 MODE D EMPLOI LOGICIEL DE PILOTAGE CROIX SMART 5.0 SOMMAIRE 1. Branchement et Paramétrage 2. Le Logiciel 3. Créer un Nouveau Programme 4. Créer un Programme de Garde Pour toutes questions concernant notre

Plus en détail

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise Possibilités : Gestion des rendez-vous/appels Gestion des e-mails Gestion des stocks Gestion des ventes Enregistrement des

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Start me quick! Français

Start me quick! Français Start me quick! Français Descriptif de la caméra: Contenu de l emballage: Installation de la caméra: Capteur de luminosité Lampe indicatrice Lentille de la caméra Lampes de l éclairage infrarouge Charnière

Plus en détail

JUPITER /20/27/61m. Contact NF, 50mA à 24v max. avec R50 Ohms en série

JUPITER /20/27/61m. Contact NF, 50mA à 24v max. avec R50 Ohms en série JUPITER /20/27/61m 1 ) - SPECIFICATIONS TECHNIQUES Tension 12v nominal (8,5 à 16 v dc) Courant 25 ma max à 12vdc Ondulation 2v c/c à 12vdc Sortie alarme Contact NF, 50mA à 24v max. avec R50 Ohms en série

Plus en détail

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

L'USB et Windows XP. Tout d'abord, il faut connaître un peu de vocabulaire pour s'y retrouver par la suite :

L'USB et Windows XP. Tout d'abord, il faut connaître un peu de vocabulaire pour s'y retrouver par la suite : L'USB et Windows XP Ce «tutoriel» a pour but final de vous aider à résoudre vos problèmes liés à des périphériques USB sous windows XP (Familial ou Pro). Il est séparé en plusieurs chapitres, les premiers

Plus en détail

Matériel informatique (hardware)

Matériel informatique (hardware) Matériel informatique (hardware) Le matériel informatique (en anglais hardware) est l'ensemble des équipements en électronique numérique (aussi appelée électronique digitale) servant au traitement des

Plus en détail

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque HP Data Protector Express Software - Tutoriel 3 Réalisation de votre première sauvegarde et restauration de disque Que contient ce tutoriel? Après avoir lu ce tutoriel, vous pourrez : utiliser les fonctions

Plus en détail

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

De l automatisme à la domotique...

De l automatisme à la domotique... Domotique La Et si le futur était déja là D De l automatisme à la domotique... Simples ou complexes, les systèmes automatisés sont partout dans notre environnement quotidien. Les produits automatisés sont

Plus en détail

Pour les futurs développeurs Sommaire

Pour les futurs développeurs Sommaire Pour les futurs développeurs Sommaire I. Présentation du projet... 2 II. Détails sur les différentes parties... 3 1. Le modèle 3D... 3 2. Reconnaissance des gestes... 4 3. Reconnaissance d objets... 6

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

But de cette présentation

But de cette présentation Réseaux poste à poste ou égal à égal (peer to peer) sous Windows But de cette présentation Vous permettre de configurer un petit réseau domestique (ou de tpe), sans serveur dédié, sous Windows (c est prévu

Plus en détail

Dossier projet isn 2015 par Victor Gregoire

Dossier projet isn 2015 par Victor Gregoire Dossier projet isn 2015 par Victor Gregoire Plan: I) But du projet: créer un jeu de blackjack fonctionnel et le poster sur une page web mise en ligne. Le jeu sera developpé en C++ a l'aide de code blocks.

Plus en détail

Premiers pas avec NetSupport SCHOOL

Premiers pas avec NetSupport SCHOOL Premiers pas avec NetSupport SCHOOL QUERY INFORMATIQUE 1 boulevard Charles de Gaule 92700 COLOMBES - FRANCE Tel. : + 33 (0) 1.49.97.33.00 Fax : + 33 (0) 1.49.97.33.09 www.query-informatique.com Sommaire

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Manuel d'utilisation de la maquette

Manuel d'utilisation de la maquette Manuel d'utilisation de la maquette PANNEAU SOLAIRE AUTO-PILOTE Enseignement au lycée Article Code Panneau solaire auto-piloté 14740 Document non contractuel L'énergie solaire L'énergie solaire est l'énergie

Plus en détail

DETERMINER LA LARGEUR DE PAGE D'UN SITE et LES RESOLUTIONS d'ecran

DETERMINER LA LARGEUR DE PAGE D'UN SITE et LES RESOLUTIONS d'ecran DETERMINER LA LARGEUR DE PAGE D'UN SITE et LES RESOLUTIONS d'ecran dossier par Clochar SOMMAIRE 1. LES RESOLUTIONS d'ecran... 1 2. RESOLUTION de l écran et choix de la TAILLE DE LA PAGE... 2 3. AGRANDISSEMENT

Plus en détail

L'émulateur multi-système

L'émulateur multi-système L'émulateur multi-système Par : Tongame Difficulté : 1) Présentation générale Mess est un émulateur multi-systèmes permettant d'émuler un nombre impressionnant de machines, micro-ordinateurs et consoles.

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

Plus en détail

Utilisation et création de la clé USB OSCAR

Utilisation et création de la clé USB OSCAR N de version 1.0 1.1 Historique des versions Eléments modifiés Date 04/04/2012 Mise en page + corrections 10/04/2012 Page 1 / 25 Rédacteur Laurent COUILLAUD Benjamin TALON SOMMAIRE I. Introduction...3

Plus en détail

Tutorial Terminal Server sous

Tutorial Terminal Server sous Tutorial Terminal Server sous réalisé par Olivier BOHER Adresse @mail : xenon33@free.fr Site Internet : http://xenon33.free.fr/ Tutorial version 1a Page 1 sur 1 Index 1. Installation des services Terminal

Plus en détail

TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique

TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique Bilan technique et éléments de développement Fonctionnalités attendues Une vingtaine d établissements

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

LOGICIEL KIPICAM : Manuel d installation et d utilisation

LOGICIEL KIPICAM : Manuel d installation et d utilisation 2015 LOGICIEL KIPICAM : Manuel d installation et d utilisation Kipisoft http://w.sanchez.free.fr/product_home_overview.php 16/05/2015 SOMMAIRE 1. Présentation de l'application... 3 2. Installation de l'application...

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

OPTENET DCAgent 2.01. Manuel d'utilisateur

OPTENET DCAgent 2.01. Manuel d'utilisateur OPTENET DCAgent 2.01 Manuel d'utilisateur SOMMAIRE 1. INTRODUCTION...1 2. INSTALLATION...2 3. ÉTABLISSEMENT DES PERMISSIONS...4 Pour de plus amples informations, reportez-vous aux annexes «Conditions requises

Plus en détail

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2 ERM AUTOMATISMES INDUSTRIELS 280 Rue Edouard Daladier 84973 CARPENTRAS Cedex Tél : 04 90 60 05 68 - Fax : 04 90 60 66 26 Site : http://www.erm-automatismes.com/ E-Mail : Contact@erm-automatismes.com 1

Plus en détail

Retrouver de vieux programmes et jouer sur VirtualBox

Retrouver de vieux programmes et jouer sur VirtualBox CHAPITRE 3 Retrouver de vieux programmes et jouer sur VirtualBox Ce chapitre présente des notions avancées de VirtualBox. Elles permettront de réaliser des configurations spécifiques pour évaluer des systèmes

Plus en détail

Virtual PC 2007. Virtual PC 2007 Page I

Virtual PC 2007. Virtual PC 2007 Page I Virtual PC 2007 Virtual PC 2007 Page I Virtual PC 2007 Table des matières. PRINCIPES DE BASE DE L'ORDINATEUR VIRTUEL 1 AIDE MEMOIRE: DEPLOIEMENT DE VIRTUAL PC 2 METHODES CONSEILLEES POUR VIRTUAL PC 2 COMPOSANTS

Plus en détail