Projet De Stijl Plate-forme pour robots mobiles Guide de prise en main de Xenomai et des cibles Version : 22 janvier 2013 S. Di Mercurio, P.-E. Hladik Table des matières 1 Glossaire......................................... 2 2 Ligne de commande «à la main»........................... 3 3 Configuration d un projet Netbeans.......................... 4 4 Connexion à la cible et lancement du programme.................. 7 5 Exécution du programme............................... 8 6 Premiers pas...................................... 9
Guide de prise en main de Xenomai et des cibles 2 1 Glossaire Cible : machine «distante», sur laquelle se trouve connectée la caméra et le transmetteur du robot Hôte : machine locale (probablement le PC de la salle de TP)
Guide de prise en main de Xenomai et des cibles 3 2 Ligne de commande «à la main» Considérons que votre exécutable utilise l API native, qu il s appelle foo et que le code source de l exécutable ne se résume qu à un seul fichier foo.c. Pour produire l exécutable il faudra exécuter les lignes suivantes : gcc -I/xenomai/include -c foo.c g++ -lnative -lxenomai -lcv -lcxcore -lhighgui -lrtdk -L/xenomai/lib foo.o -o foo C est du très classique en compilation : La première ligne compile le fichier, indiquant un chemin supplémentaire pour aller chercher les fichiers d inclusion de Xenomai dans./xenomai/include. La deuxième ligne fait l édition de lien, en précisant qu en plus de trivial-periodic.o, le code compilé, il faudra rajouter les bibliothèques libnative et libxenomai que l on trouve dans le répertoire./xenomai/lib. De plus, il est nécessaire d ajouter des bibliothèques d OpenCV (cv, cxcore, highgui) pour le traitement d image.
Guide de prise en main de Xenomai et des cibles 4 3 Configuration d un projet Netbeans Tout d abord, si ce n est pas déjà fait, rajoutez le support du C/C++ par l IDE. Allez dans le menu «Outils->Plug ins», puis, sur la fenêtre, cliquez sur l onglet «plug-ins disponibles» et choisissez «C/C++» et installez. Créez un nouveau projet (menu «Fichiers Nouveau Projet»). Dans le cas d une application créée à partir de rien, vous arriverez sur l écran suivant : Trouvez un nom qui sonne bien pour votre application. Choisissez un répertoire pour votre projet. Le projet créera automatiquement un fichier de démarrage contant une fonction main si
Guide de prise en main de Xenomai et des cibles 5 vous avez coché «Create Main File». Puis cliquez sur «Terminer». Sur l IDE, dans la zone représentant l arborescence de votre projet, faite un clic droit sur le nom de votre projet, puis choisissez le menu «Propriétés». Dans les catégories, cliquez sur «Build C Compiler» et ajoutez les includes Xenomai (Include Directories : /usr/xenomai/include). Dans les catégories, cliquez sur «Build C++ Compiler». Rajoutez le répertoire des includes de Xenomai (Include Directories : /usr/xenomai/include) et passez le niveau d alerte à «More Warnings».
Guide de prise en main de Xenomai et des cibles 6 Toujours dans les catégories, cliquez sur «Build Linker» et ajoutez le répertoire des bibliothèques (Additional Library Directories) et choisissez la bibliothèque xenomai (ou xenomai, pthread_rt, pthread et rt dans le cas de l API Posix). Pour le projet, il est aussi nécessaire d ajouter les libraires OpenCV highgui, cxcore, cv et rtdk (Additional options : -lcv -lcxcore -lxenomai -lnative -lhighgui -lrtdk). Pour ajouter des sources à votre projet cliquez avec le bouton droit sur le répertoire «Source Files» et choisissez «Add Existing items from Forlders...» pour aller chercher les sources depuis un répertoire. De retour dans l IDE, une fois votre programme écrit, pour compiler, cliquez sur le marteau dans la barre d outil (ou F11). Si tout se passe bien, vous devriez obtenir une sortie de ce type :
Guide de prise en main de Xenomai et des cibles 7 4 Connexion à la cible et lancement du programme Pour vous connecter à la cible, deux scripts sont fournis sur moodle : upload.sh permet d envoyer sur la cible votre exécutable. La ligne de commande est :./upload.sh <numéro de la machine> <chemin et nom de l exécutable> connect.sh permet de se connecter à la cible : La ligne de commande est :./connect.sh <numéro de la machine> Par exemple :./upload.sh 09 Mon_Projet/dist/Debug/GNU-Linux-x86/mon_projet./connect.sh 09 Que ce soit avec connect.sh ou upload.sh, un mot de passe est demandé. Le compte utilisé sur toutes les cibles est : login : insa mot de passe : 123456
Guide de prise en main de Xenomai et des cibles 8 5 Exécution du programme Dans votre terminal, connecté à votre cible, allez dans le répertoire où se trouve votre programme. Imaginons que votre programme s appelle toujours foo, il vous suffit de taper en ligne de commande :./foo Et voilà, le programme s exécute. N oubliez pas que pour voir la liste des programme qui tourne, on utilise la commande ps et pour tuer une tache la commande kill. C est de l Unix classique!
Guide de prise en main de Xenomai et des cibles 9 6 Premiers pas Un projet de test vous est mis à votre disposition sur moodle. Il comprend une petite application composée de trois tâches communicantes. Pour programmer, nous vous proposons d utiliser Netbeans. L archive que vous trouverez sur moodle comprend un projet déjà configuré, il vous suffit de l ouvrir avec Netbeans pour commencer. Pour la compilation croisée, nous avons récupéré les bibliothèques de Xenomai dans l archive, il vous faut donc les utiliser aussi. Pour prendre en main cette première application suivez les étapes suivantes : 1. Chargez le code source des librairies du projet sur l hôte et décompressez l archive. 2. Chargez l archive avec le moniteur sur l hôte et décompressez l archive. 3. Lancez Netbeans sur l hôte et ouvrez le projet présent dans l archive. 4. Compilez. 5. Connectez vous à la cible avec le script connect.sh puis charger l exécutable avec upload.sh (voir partie 4) 6. Exécutez l application sur la cible (voir partie 5). 7. Lancez sur l hôte le moniteur avec la commande java -jar monitor.jar. 8. Entrer l adresse IP de la cible dans le moniteur et cliquez sur le bouton «connect». 9. Vous pouvez ensuite connecter le robot et le déplacer. 10. Quand vous en avez assez de jouer avec le robot, tuez le process sur la cible, observez la trace au regard du code et analyser l exécution produite. Maintenant vous avez toutes les billes en main pour commencer le projet!