Projet en langage C - Life On Mars Consignes de travail Compte
Transcription
Projet en langage C - Life On Mars Consignes de travail Compte
Projet en langage C - Life On Mars Dept GEII II1 Année universitaire 2012-2013 J. VILLEMEJANE - [email protected] Consignes de travail Le projet, proposé dans ce document, permet de valider vos acquis dans le module II1 à travers le développement d’une application en langage C. Ce projet peut être réalisé en petit groupe (2 à 3 étudiants maximum) ou individuellement. Chaque groupe d’étudiants devra rendre impérativement : – un compte-rendu (manuscrit ou dactylographié) ; – le code source du programme ; – l’exécutable du programme. La remise des projets devra se faire avant le 14 janvier 2013 - 14h. Chaque enseignant est libre de choisir sa méthode : main à main, par mail... Tout compte-rendu parvenant après la date limite ne sera pas accepté et la note de 00/20 sera appliquée. Ne pas oublier d’ajouter vos noms et vos groupes sur tous les fichiers que vous fournirez. Compte-rendu Chaque groupe d’étudiants devra fournir un compte-rendu de son travail, en plus du code et de l’exécutable. Cette étape est essentielle et vous sera aussi demander dans votre vie active par votre chef de projet. En effet, les clients vous fournissent un cahier des charges (comme celui fourni par ce document). En échange, ils attendent d’obtenir un programme fonctionnel et bien documenté pour pouvoir l’utiliser ou/et le modifier ultérieurement. Pour cela, ils ont donc besoin d’avoir un code source très commenté mais aussi une documentation du travail qui a été réalisé par le programmeur et quels algorithmes ont été utilisés pour venir à bout du travail demandé. Classiquement, on retrouve dans un document, scientifique ou technique, les quatre éléments suivants : la problématique, la méthodologie, les résultats et la discussion. L’introduction et la conclusion doivent bien entendu aussi être de la partie. Problématique : reformulation du problème posé par les clients. Elle permet de situer le projet dans son contexte, de spécifier les objectifs attendus, d’en décrire l’intérêt et de formuler explicitement les principales difficultés qu’on doit surmonter. Méthodologie : état des moyens mis en oeuvre pour apporter une solution au problème. C’est à ce point qu’on décrit sa vision du travail de réalisation : la détermination des étapes à suivre, la justification du choix des outils et des méthodes susceptibles de faire progresser vers une solution faisable. Il s’agira ici de présenter les algorithmes mis en place pour répondre au problème posé. Vous pourrez aussi présenter la façon dont vous vous êtes répartis les tâches au sein de votre groupe de travail. Résultats : liste des éléments du cahier des charges qui ont été effectivement développés et qui ne posent pas de problème. Ensuite, il ne faudra pas omettre de passer également en revue les points qui n’ont pas été traités et argumenter leurs non-réalisations. Discussion : commentaire global sur les travaux qui ont été effectués. Une bonne discussion réside dans l’analyse et la critique des méthodes exploitées et des résultats obtenus et non obtenus par rapport au problème posé. À ce stade, on met en évidence la portée du travail et on exprime des recommandations susceptibles d’orienter la poursuite ultérieure du projet. Ce plan pourra être réutilisé chaque fois que vous aurez à faire un rapport de votre travail : pour votre stage (à court terme) et dans votre vie de technicien ou d’ingénieur (à moyen et long terme). IUT Créteil - GEII - II1 Projet en langage C - Life On Mars Description du projet - Life On Mars La NASA vous a embauché pour mettre au point le programme embarqué sur son robot Curiosity 2, qui doit partir à bord d’Atlas VI, en direction de la planète Mars, le 14 janvier 2013 à 14h. La mission principale de ce robot est de sonder le sol et l’air de la planète rouge, pour y détecter toute trace de vie, et donc d’eau ! Pour des raisons techniques, la mission durera 3 jours et le robot devra parcourir un maximum de distance durant cette période, pour pouvoir emmagasiner le maximum de données possibles tout au long de son parcours. Des relevés de pressions atmosphériques, de température et d’humidité devront être effectués à intervalle de distance régulier (20 m). Les coordonnées GPS du robot devront également être sauvegardées. L’ensemble des ces informations devront être stockées dans un fichier au format suivant : temps:distance:coordX:coordY:humidite:temperature:pression: Le robot Les informations relatives au robot sont stockées dans une structure de données nommée curiosity2 : – char nom[32] : le nom du robot ; – float coordX : coordonnée GPS en X, en km ; – float coordY : coordonnée GPS en Y, en km ; – int temps : temps de parcours depuis le lancement, en s ; – float distance : distance parcourue depuis le lancement, en km ; – char batterie : etat de la batterie, entre 0 et 100%. Il est équipé de plusieurs capteurs (pression, température, humidité) dont les données seront renvoyées par l’intermédiaire d’une structure de données également, du type data : – int humidite : humidité relevée, entre 0 et 100% ; – float temperature : température relevée en ˚C ; – int pression : pression relevée en Pascal. Il est enfin équipé d’une batterie qui peut être rechargée à l’aide de panneaux solaires. Ces derniers peuvent se déployer ou se replier à la demande. Le robot peut continuer d’avancer si jamais les panneaux sont déployés, mais il perd en vitesse. La batterie ne doit jamais descendre en dessous de 2% de charge, sinon la mission est considérée comme un échec. Bibliothèque du robot Pour pouvoir écrire votre programme plus facilement et tester les différentes étapes du projet avant la mission réelle, la NASA vous fournit un ensemble de fonctions permettant de simuler le fonctionnement du robot réel et ainsi controler les différentes actions disponibles sur le robot : – avancer – relever les données – déployer, replier ses panneaux solaires – se recharger Chacune de ces actions consomme de l’énergie sur la batterie et prend un certain temps pour être exécutée par le robot réel. Ces informations sont données dans la description des fonctions. L’ensemble des fonctions disponibles dans la bibliothèque robot.h sont présentées en annexe. ATTENTION ! ! La bibliothèque robot.h et le fichier robot.c ne doivent pas etre modifiés ! ! –2– IUT Créteil - GEII - II1 Projet en langage C - Life On Mars Travail demandé C’est à vous que l’on confie la lourde tache de réaliser le programme de la mission et d’en exécuter des simulations afin d’optimiser la récolte des informations. L’ensemble du programme sera réalisé en mode console. Etape 1 : Compréhension du système Dans un premier temps, vous devrez mettre en place la base de l’application : – création de la fonction principale ; – utilisation de la librairie fournie : – test des différentes fonctions (panneaux solaires, recolte de données...) ; – affichage des données collectées ; – affichage des informations du robot. Etape 2 : Programme de la mission principale / Collecte des données Maintenant que les fonctions de base sont maitrisées, vous devez vous intéresser au programme principal de la mission : collecter à intervalle régulier (tous les 20 m) des données et les stocker dans un fichier. Le but est de récupérer le maximum d’informations lors de la mission qui durera 3 jours. Attention à la gestion de la batterie ! ! Si son niveau devient inférieur à 2%, la mission devra être abandonnée et vous serez responsable de la perte de millions de dollars... Etape 3 : Récupération des données / Calcul sur les données On souhaite également pouvoir travailler sur les données stockées par le robot à la fin de la mission : recherche du minimum, du maximum et de la moyenne de toutes les données recuillies. On veut également connaitre l’emplacement du point maximum d’humidité afin d’approfondir les recherches dans ce secteur là dans les prochaines missions du robot. Pour cela, vous mettrez en place un menu permettant de sélectionner l’une des trois grandeurs puis d’afficher l’ensemble des résultats des calculs mentionnés précédemment. Les données recueillies pourront aussi être représentées à l’aide d’un tableur et fournies dans le compterendu (rubrique résultats). Etape 4 : Point d’humidité maximale A la fin de la première partie de la mission, la NASA a décidé de faire revenir le robot aux coordonnées du point d’humidité maximale afin de scanner plus précisément le sol de la planète rouge aux alentours de cette zone. Des données devront être recueillies tous les 2 m, mais cette fois-ci en quadrillant la zone par une matrice de N x N relevés. Pour cela, une fonction supplémentaire a été ajoutée sur le robot : int avancerXY(int x, int y). Le relevé de ces nouvelles valeurs ne devra pas excéder plus de 2 jours. Le temps de retour sur la zone ne sera pas pris en compte dans ce délai. Mais le niveau de batterie devra toujours être surveillé ! Ces nouveaux relevés seront stockés dans un nouveau fichier texte, sous le même format que précédemment et devront également être analysés. La méthode utilisée pour déterminer N devra être décrite dans votre compterendu. –3– IUT Créteil - GEII - II1 Projet en langage C - Life On Mars Etape BONUS : Optimisation de la mission / Recharge de la batterie Le role des scientifiques de la NASA est d’optimiser au mieux le parcours de leur robot afin qu’il puisse parcourir la plus grande distance possible lors de la mission. Plusieurs paramètres peuvent entrer en compte, mais le plus crucial est la gestion de la recharge de la batterie. Deux types de recharge sont possibles : – lorsque la batterie atteint un seuil critique S_MIN et doit absolument être rechargée ; – lorsque la luminosité est supérieure à 50 % (meilleure rapidité de recharge) et la batterie atteint un seuil moins critique S_LIGHT. Pour cela, on vous demande de fixer les niveaux de batterie optimaux (S_MIN et S_LIGHT) qui seront implémentés dans le robot. La méthode utilisée pour ces tests et les résultats obtenus devront être précisés et analysés dans le compterendu. Un second programme pourra être développé pour cette étape, afin de ne pas perdre celui de l’étape 3. Séances de travail Ce projet s’étend sur 4 séances complètes de 4h, durant lesquelles vous serez en petit groupe devant vos machines. L’efficacité et la rapidité devront être de mise. Pour gagner en temps, certaines notions seront abordées au cours des séances de TD qui précéderont les TP. Il vous sera également demandé de prendre connaissance du travail à réaliser avant la première séance. Votre participation au cours des séances sera partie intégrante de la notation. Il vous est conseillé de faire plusieurs sauvegardes de vos fichiers : chez vous et sur clef usb. Notation Le barème proposé est le suivant : – Remise du projet : 9 points – Compte-rendu : 4 Points (avec respect des consignes sur la rédaction donnée dans le sujet) ; – Code Source : 3 Points (Commentaires, Indentation, Lisibilité,....) ; – Exécutable : 2 Points (Présentation, Organisation de l’interface, exécution....). – Réalisation du travail : 10 Points – Etape 1 sur 1 point, – Etape 2 sur 3 points, – Etape 3 sur 3 points, – Etape 4 sur 3 points. – Participation en séance, Esprit de groupe : 2 Points Fichiers de base Un projet initial, incluant un fichier main.c, la bibliothèque robot.h et le fichier robot.c, est disponible sur le site http ://cours.villemejane.net/ - rubrique DUT GEII / Semestre 1 / II1 / II1 - Projet. L’archive Projet2012.zip contient un projet pour CodeBlocks et un projet pour PellesC, selon l’interface de développement que vous utilisez en TD/TP. –4– IUT Créteil - GEII - II1 Projet en langage C - Life On Mars robot.h – void initialisationRobot(void) : initialise les données du robot lors de son lancement ; – int avancer(void) : permet de faire avancer le robot de 20 m à chaque fois. – Panneaux repliés : 37 s / 3 % – Panneaux déployés : 45 s / 2 % – int avancerXY(int x, int y) : permet de faire avancer le robot selon le vecteur de coordonnées (x,y) (où x et y sont donnés en mètre). A utiliser uniquement dans l’étape 4 ! – Panneaux repliés : 2 s/m / 0.16 %/m – Panneaux déployés : 3 s/m / 0.1 %/m – float testBatterie(void) : renvoie l’état de la batterie (entre 0 et 100) ; – int deployerPanneau(void) : deploye les panneaux solaires du robot. – 26 s / 2 % – int replierPanneau(void) : replie les panneaux solaires du robot. – 18 s / 1 % – int rechargerBatterie(void) : recharge la batterie à 100 %. – si luminosité < 50 % : – Temps de charge : 43 s si batterie < 40 % puis 38 s lorsque batterie > 40 % – si luminosité > 50 % : – Temps de charge : 31 s si batterie < 40 % puis 28 s lorsque batterie > 40 % – int releverLuminosite(void) : renvoie la valeur de la luminosité entre 0 et 100 % – data releverDonnees(void) : renvoie le relevé d’une donnée. – Panneaux repliés : 60 s / 1 % – Panneaux déployés : 50 s / 0 % –5–